Update
diff --git a/verilog/rtl/BrqRV_EB1/configs/brqrv.config b/verilog/rtl/BrqRV_EB1/configs/brqrv.config
deleted file mode 100755
index 78952ff..0000000
--- a/verilog/rtl/BrqRV_EB1/configs/brqrv.config
+++ /dev/null
@@ -1,2609 +0,0 @@
-#! /usr/bin/env perl
-
-use strict;   # Do not turn this off or else
-use Data::Dumper;
-use Getopt::Long;
-#use Bit::Vector;
-use lib "$ENV{RV_ROOT}/tools";
-use JSON;
-
-my ($self) = $0 =~ m/.*\/(\w+)/o;
-my @argv_orig = @ARGV;
-
-
-# Master configuration file
-#
-# Configuration is perl hash
-# Output are define files for various flows
-#   Verilog (`defines common to RTL/TB)
-#   Software (#defines)
-#   Whisper (JSON/#defines)
-#
-#   Default values and valid ranges should be specified
-#   Can be overridden via the cmd line (-set=name=value-string)
-#
-#  Format of the hash is
-#    name => VALUE | LIST | HASH
-#
-#    Special name "inside" followed by list .. values must be one of provided list
-#    Special name "derive" followed by equation to derive
-#
-
-# Dump verilog/assembly macros in upper case
-my $defines_case = "U";
-
-# Include these macros in verilog (pattern matched)
-my @verilog_vars = qw (xlen config_key reset_vec tec_rv_icg numiregs nmi_vec target protection.* testbench.* dccm.* retstack core.* iccm.* btb.* bht.* icache.* pic.* regwidth memmap bus.*);
-
-# Include these macros in assembly (pattern matched)
-my @asm_vars = qw (xlen reset_vec nmi_vec target dccm.* iccm.* pic.* memmap  testbench.* protection.* core.*);
-my @asm_overridable = qw (reset_vec nmi_vec) ;
-
-# Include these macros in PD (pattern matched)
-my @pd_vars = qw (physical retstack target btb.* bht.* dccm.* iccm.* icache.* pic.* bus.* reset_vec nmi_vec build_ahb_lite datawidth );
-
-# Dump non-derived/settable vars/values for these vars in stdout :
-my @dvars = qw(retstack btb bht core dccm iccm icache pic protection memmap bus);
-
-# Prefix all macros with
-my $prefix = "RV_";
-# No prefix if keyword has
-my $no_prefix = 'RV|TOP|tec_rv_icg|regwidth|clock_period|^datawidth|verilator|SDVT_AHB';
-
-my $vlog_use__wh = 1;
-
-my %regions_used = ();
-
-# Cmd Line options#{{{
-our %sets;
-our %unsets;
-my $help;
-my @sets = ();
-my @unsets = ();
-
-#Configurations may be changed via the -set option
-#
-#  -set=name=value        : Change the default config parameter value (lowercase)\n";
-#  -unset=name            : Remove the default config parameter (lowercase)\n";
-#                         : Do not prepend RV_ prefex to -set/-unset variables\n";
-#                         : multiple -set/-unset options accepted\n\n";
-#
-
-my $helpusage = "
-
-Main configuration database for brqrv
-
-This script documents, and generates the {`#} define/include files for verilog/assembly/backend flows
-
-It is run by vsim (with defaults) every time the file changes, or when -config_set=VAR=value options are passed to vsim
-
-This script can be run stand-alone by processes not running vsim
-
-User options:
-
-     -target = {default, default_ahb, high_perf, typical_pd}
-        use default settings for one of the targets
-
-     -set=var=value
-        set arbitrary variable(parameter) to a value
-     -unset=var
-        unset any definitions for var
-     -snapshot=name
-        name the configuration (only if no -target specified)
-
-Parameters that can be set by the end user:
-
-     -set=ret_stack_size =      {2, 3, 4, ... 8}
-          size of return stack
-     -set=btb_enable = {0,1}
-          BTB enabled
-     -set=btb_fullya = {0,1}
-          BTB Fully set-associative
-     -set=btb_size =      { 8, 16, 32, 64, 128, 256, 512 }
-          size of branch target buffer
-     -set=bht_size =  {32, 64, 128, 256, 512, 1024, 2048}
-          size of branch history buffer
-     -set=div_bit = {1,2,3,4}
-          number of bits to process each cycle
-     -set=div_new = {0,1}
-          new div algorithm
-     -set=dccm_enable = {0,1}
-          DCCM enabled
-     -set=dccm_num_banks = {2, 4}
-          DCCM number of banks
-     -set=dccm_region =   { 0x0, 0x1, ... 0xf }
-          number of 256Mb memory region containig DCCM
-     -set=dccm_offset =   hexadecimal
-          offset (in bytes) of DCCM witin dccm_region
-          dccm address will be: 256M * dccm_region + dccm_offset\", and that must be aligned
-          to the dccm size or the next larger power of 2 if size is not a power of 2
-     -set=dccm_size   =   { 4, 8, 16, 32, 48, 64, 128, 256, 512 } kB
-          size of DCCM
-     -set=dma_buf_depth = {2,4,5}
-          DMA buffer depth
-     -set=fast_interrupt_redirect =  {0, 1}
-          Fast interrupt redirect mechanism
-     -set=iccm_enable =   { 0, 1 }
-          whether or not ICCM is enabled
-     -set=icache_enable = { 0, 1 }
-          whether or not icache is enabled
-     -set=icache_waypack = { 0, 1 }
-          whether or not icache packing is enabled
-     -set=icache_ecc = { 0, 1 }
-          whether or not icache has ecc - EXPENSIVE 30% sram growth
-          default: icache_ecc==0 (parity)
-     -set=icache_size =   { 8, 16, 32, 64, 128, 256 } kB
-          size of icache
-     -set=icache_2banks = {0,1}
-          Enable 2 banks for icache
-     -set=icache_num_ways { 2,4}
-          Number of ways in icache
-     -set=icache_bypass_enable = {0,1}
-          Enable Icache data bypass buffer
-     -set=icache_num_bypass = {1..8}
-          Number of entries in bypass buffer
-     -set=icache_num_tag_bypass = {1..8}
-          Number of entries in bypass buffer
-     -set=icache_tag_bypass_enable = {0,1}
-          Enable icache tag bypass buffer
-     -set=iccm_region =   { 0x0, 0x1, ... 0xf  }
-          number of 256Mb memory region containing ICCM
-     -set=iccm_offset =   hexadecimal
-          offcet (in bytes) of ICCM within iccm_region
-          iccm address will be: \"256M * iccm_region + iccm_offset\", and that must be aligned
-          to the iccm size or the next larger power of 2 if size is not a power of 2
-     -set=iccm_size   =   { 4 , 8 , 16 , 32, 64, 128, 256, 512 } kB
-          size of ICCM
-     -set=iccm_num_banks = {2,4,8,16}
-          Number of ICCM banks
-     -set=lsu_stbuf_depth = {2,4,8 }
-          LSU stbuf depth
-     -set=lsu_num_nbload = {2,4,8 }
-          LSU number of outstanding Non Blocking loads
-     -set=load_to_use_plus1 = {0 1}
-          Load to use latency (fast or +1cycle)
-     -set=pic_2cycle  =   { 0, 1 }
-          whether or not 2-cycle PIC is enabled (2 cycle pic may result
-          in an overall smaller cycle time)
-     -set=pic_region =    { 0x0, 0x1, ... 0xf  }
-           number of 256Mb memory region containing PIC memory-mapped registers
-     -set=pic_offset =    hexadecial
-          offset (in bytes) of PIC within pic_region
-          pic address will be: \"256M * pic_region + pic_offset\", and that must be aligned
-          to the pic size or the next larger power of 2 if size is not a power of 2
-     -set=pic_size   =    { 32, 64, 128, 256 } kB
-          size of PIC
-     -set=pic_total_int = { 1, 2, 3, ..., 255 }
-          number of interrupt sources in PIC
-     -set=dma_buf_depth = {2,4,5}
-          DMA buffer depth
-     -set=timer_legal_en = {0,1}
-          Internal timers legal/enabled
-     -set=bitmanip_zba = {0,1}
-          Bit manipulation extension ZBa enabled/legal
-     -set=bitmanip_zbb = {0,1}
-          Bit manipulation extension ZBb enabled/legal
-     -set=bitmanip_zbc = {0,1}
-          Bit manipulation extension ZBc enabled/legal
-     -set=bitmanip_zbe = {0,1}
-          Bit manipulation extension ZBe enabled/legal
-     -set=bitmanip_zbf = {0,1}
-          Bit manipulation extension ZBf enabled/legal
-     -set=bitmanip_zbp = {0,1}
-          Bit manipulation extension ZBp enabled/legal
-     -set=bitmanip_zbr = {0,1}
-          Bit manipulation extension ZBr enabled/legal
-     -set=bitmanip_zbs = {0,1}
-          Bit manipulation extension ZBs enabled/legal
-     -fpga_optimize =   { 0, 1 }
-          if 1, minimize clock-gating to facilitate FPGA builds
-     -text_in_iccm = {0, 1}
-          Don't add ICCM preload code in generated link.ld
-
-
-Additionally the following may be set for bus masters and slaves using the -set=var=value option:
-
-        {inst|data}_access_enable[0-7] : default 0
-        {inst|data}_access_addr[0-7] : default 0x00000000
-        {inst|data}_access_mask[0-7] : default 0xffffffff
-";
-
-
-my $ret_stack_size;
-my $btb_size;
-my $bht_size;
-my $btb_fullya;
-my $btb_toffset_size;
-my $dccm_region;
-my $dccm_offset;
-my $dccm_size;
-my $iccm_enable;
-my $icache_enable;
-my $icache_waypack;
-my $icache_num_ways;
-my $icache_banks_way;
-my $icache_ln_sz;
-my $icache_bank_width;
-my $icache_ecc;
-my $iccm_region;
-my $iccm_offset;
-my $iccm_size;
-my $icache_size;
-my $pic_2cycle;
-my $pic_region;
-my $pic_offset;
-my $pic_size;
-my $pic_total_int;
-
-my $top_align_iccm = 0;
-
-my $target = "default";
-my $snapshot ;
-my $build_path ;
-my $verbose;
-my $load_to_use_plus1;
-my $btb_enable;
-my $dccm_enable;
-my $icache_2banks;
-my $lsu_stbuf_depth;
-my $dma_buf_depth;
-my $lsu_num_nbload;
-my $dccm_num_banks;
-my $iccm_num_banks;
-my $verilator;
-my $icache_bypass_enable=1;
-my $icache_num_bypass=2;
-my $icache_num_bypass_width;
-my $icache_tag_bypass_enable=1;
-my $icache_tag_num_bypass=2;
-my $icache_tag_num_bypass_width;
-
-my $fast_interrupt_redirect = 1;                        # ON by default
-my $lsu_num_nbload=4;
-my $ahb = 0;
-my $axi = 1;
-my $text_in_iccm = 1;
-
-my $lsu2dma = 0;
-
-
-$ret_stack_size=8;
-$btb_enable=1;
-$btb_fullya=0;
-$btb_toffset_size=12;
-$btb_size=256;
-$bht_size=256;
-$dccm_enable=1;
-$dccm_region="0xf";
-$dccm_offset="0x40000"; #1*256*1024
-$dccm_size=4;
-$dccm_num_banks=4;
-$iccm_enable=1;
-$iccm_region="0xe";
-$top_align_iccm = 1;
-$iccm_offset="0xe000000"; #0x380*256*1024
-$iccm_size=4;
-$iccm_num_banks=4;
-$icache_enable=0;
-$icache_waypack=1;
-$icache_num_ways=2;
-$icache_banks_way=2;
-$icache_2banks=1;
-$icache_bank_width=8;
-$icache_ln_sz=64;
-$icache_ecc=1;
-$icache_size=16;
-$pic_2cycle=0;
-$pic_region="0xf";
-$pic_offset="0xc0000"; # 3*256*1024
-$pic_size=32;
-$pic_total_int=31;
-$load_to_use_plus1=0;
-$lsu_stbuf_depth=4;
-$dma_buf_depth=5;
-
-my $div_bit=3;       # number of bits to process each cycle for div
-my $div_new=1;       # old or new div algorithm
-
-my $fpga_optimize = 1;
-
-# Default bitmanip options
-my $bitmanip_zba = 0;
-my $bitmanip_zbb = 0;
-my $bitmanip_zbc = 0;
-my $bitmanip_zbe = 0;
-my $bitmanip_zbf = 0;
-my $bitmanip_zbp = 0;
-my $bitmanip_zbr = 0;
-my $bitmanip_zbs = 0;
-
-GetOptions(
-    "help"                => \$help,
-    "target=s"            => \$target,
-    "snapshot=s"          => \$snapshot,
-    "verbose"             => \$verbose,
-    "load_to_use_plus1"   => \$load_to_use_plus1,
-    "ret_stack_size=s"    => \$ret_stack_size,
-    "btb_fullya"          => \$btb_fullya,
-    "btb_enable=s"        => \$btb_enable,
-    "btb_size=s"          => \$btb_size,
-    "bht_size=s"          => \$bht_size,
-    "dccm_enable=s"       => \$dccm_enable,
-    "dccm_region=s"       => \$dccm_region,
-    "dccm_offset=s"       => \$dccm_offset,
-    "dccm_size=s"         => \$dccm_size,
-    "dma_buf_depth"       => \$dma_buf_depth,
-    "iccm_enable=s"       => \$iccm_enable,
-    "icache_enable=s"     => \$icache_enable,
-    "icache_waypack=s"    => \$icache_waypack,
-    "icache_num_ways=s"   => \$icache_num_ways,
-    "icache_ln_sz=s"      => \$icache_ln_sz,
-    "icache_ecc=s"        => \$icache_ecc,
-    "icache_2banks=s"     => \$icache_2banks,
-    "iccm_region=s"       => \$iccm_region,
-    "iccm_offset=s"       => \$iccm_offset,
-    "iccm_size=s"         => \$iccm_size,
-    "lsu_stbuf_depth"     => \$lsu_stbuf_depth,
-    "lsu_num_nbload"      => \$lsu_num_nbload,
-    "pic_2cycle=s"        => \$pic_2cycle,
-    "pic_region=s"        => \$pic_region,
-    "pic_offset=s"        => \$pic_offset,
-    "pic_size=s"          => \$pic_size,
-    "pic_total_int=s"     => \$pic_total_int,
-    "icache_size=s"       => \$icache_size,
-    "set=s@"              => \@sets,
-    "unset=s@"            => \@unsets,
-    "fpga_optimize=s"     => \$fpga_optimize,
-    "text_in_iccm"        => \$text_in_iccm,
-) || die("$helpusage");
-
-if ($help) {
-   print "$helpusage\n";
-   exit;
-}
-
-if (!defined $snapshot ) {
-    $snapshot = $target;
-}
-
-if (!defined $ENV{BUILD_PATH}) {
-    $build_path = "$ENV{PWD}/snapshots/$snapshot" ;
-} else {
-    $build_path = $ENV{BUILD_PATH};
-}
-
-if (! -d "$build_path") {
-    system ("mkdir -p $build_path");
-}
-
-# Parameter file
-my $tdfile = "$build_path/eb1_pdef.vh";
-my $paramfile = "$build_path/eb1_param.vh";
-
-# Verilog defines file path
-my $vlogfile = "$build_path/common_defines.vh";
-
-# Assembly defines file path
-my $asmfile = "$build_path/defines.h";
-
-# PD defines file path
-my $pdfile = "$build_path/pd_defines.vh";
-
-# Whisper config file path
-my $whisperfile = "$build_path/whisper.json";
-#
-# Default linker file
-my $linkerfile = "$build_path/link.ld";
-
-
-# Perl defines file path
-my $perlfile = "$build_path/perl_configs.pl";
-
-my $opensource=0;
-
-
-
-# IDEA: is ghr at 5b the right size for eb1 core
-
-if ($target eq "default") { }
-elsif ($target eq "lsu2dma_axi") {
-    $lsu2dma = 1;
-    $iccm_enable = 1;
-}
-elsif ($target eq "typical_pd") {
-    print "$self: Using target \"typical_pd\"\n";
-    $fpga_optimize = 0;
-    $ret_stack_size=2;
-    $btb_size=32;
-    $bht_size=128;
-    $dccm_size=16;
-    $dccm_num_banks=2;
-    $iccm_enable=0;
-}
-elsif ($target eq "high_perf") {
-    print "$self: Using target \"high_perf\"\n";
-    $btb_size=512;
-    $bht_size=2048;
-}
-elsif ($target eq "default_ahb") {
-    print "$self: Using target \"default_ahb\"\n";
-    $axi = 0;
-    $ahb = 1;
-}
-else {
-    die "$self: ERROR! Unsupported target \"$target\". Supported are 'default', 'default_ahb', 'typical_pd', 'high_perf', 'lsu2dma_axi\n" ;
-}
-
-
-
-# Configure triggers
-our @triggers = (#{{{
-    {
-        "reset"         => ["0x23e00000", "0x00000000", "0x00000000"],
-        "mask"          => ["0x081818c7", "0xffffffff", "0x00000000"],
-        "poke_mask"     => ["0x081818c7", "0xffffffff", "0x00000000"]
-    },
-    {
-        "reset"         => ["0x23e00000", "0x00000000", "0x00000000"],
-        "mask"          => ["0x081810c7", "0xffffffff", "0x00000000"],
-        "poke_mask"     => ["0x081810c7", "0xffffffff", "0x00000000"]
-    },
-    {
-        "reset"         => ["0x23e00000", "0x00000000", "0x00000000"],
-        "mask"          => ["0x081818c7", "0xffffffff", "0x00000000"],
-        "poke_mask"     => ["0x081818c7", "0xffffffff", "0x00000000"]
-    },
-    {
-        "reset"         => ["0x23e00000", "0x00000000", "0x00000000"],
-        "mask"          => ["0x081810c7", "0xffffffff", "0x00000000"],
-        "poke_mask"     => ["0x081810c7", "0xffffffff", "0x00000000"]
-    },
- );#}}}
-
-
-# Configure CSRs
-our %csr = (#{{{
-    "mstatus" => {
-       "reset"         => "0x1800", # MPP bits hard wired to binrary 11.
-       "mask"          => "0x88",   # Only mpie(7) & mie(3) bits writeable
-       "exists"        => "true",
-    },
-    "mie" => {
-        "reset"         => "0x0",
-        # Only external, timer, local, and software writeable
-        "mask"          => "0x70000888",
-        "exists"        => "true",
-    },
-    "mip" => {
-        "reset"         => "0x0",
-        # None of the bits are writeable using CSR instructions
-        "mask"          => "0x0",
-        # Bits corresponding to error overflow, external, timer and stoftware
-        # interrupts are modifiable
-        "poke_mask"     => "0x70000888",
-        "exists"        => "true",
-    },
-   "mcountinhibit" => {
-       "commnet"       => "Performance counter inhibit. One bit per counter.",
-       "reset"         => "0x0",
-       "mask"          => "0x7d",
-       "poke_mask"          => "0x7d",
-       "exists"        => "true",
-   },
-   "mcounteren" => {
-        "exists"       => "false",
-   },
-   "mvendorid" => {
-       "reset"         => "0x45",
-       "mask"          => "0x0",
-       "exists"        => "true",
-   },
-   "marchid" => {
-       "reset"         => "0x00000010",
-       "mask"          => "0x0",
-       "exists"        => "true",
-   },
-   "mimpid" => {
-       "reset"         => "0x3",
-       "mask"          => "0x0",
-       "exists"        => "true",
-   },
-   "misa" => {
-       "reset"         => "0x40001104",
-       "mask"          => "0x0",
-       "exists"        => "true",
-   },
-   "tselect" => {
-       "reset"         => "0x0",
-       "mask"          => "0x3",    # Four triggers
-       "exists"        => "true",
-   },
-   "mhartid" => {
-       "reset"         => "0x0",
-       "mask"          => "0x0",
-       "poke_mask"     => "0xfffffff0",
-       "exists"        => "true",
-   },
-   "dcsr" => {
-       "reset"         => "0x40000003",
-       "mask"          => "0x00008c04",
-       "poke_mask"     => "0x00008dcc",  # cause field modifiable, nmip modifiable
-       "exists"        => "true",
-       "debug"         => "true",
-    },
-    "cycle" => {
-        "exists"       => "false",
-    },
-    "time" => {
-        "exists"       => "false",
-    },
-    "instret" => {
-        "exists"       => "false",
-    },
-    "mhpmcounter3" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmcounter4" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmcounter5" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmcounter6" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmcounter3h" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmcounter4h" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmcounter5h" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmcounter6h" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmevent3" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmevent4" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmevent5" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mhpmevent6" => {
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-# Remaining CSRs are non-standard. These are specific to brqrv
-    "dicawics" => {
-       "number"        => "0x7c8",
-       "reset"         => "0x0",
-       "mask"          => "0x0130fffc",
-       "exists"        => "true",
-    },
-    "dicad0" => {
-       "number"        => "0x7c9",
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "dicad1" => {
-       "number"        => "0x7ca",
-       "reset"         => "0x0",
-       "mask"          => "0x3",
-       "exists"        => "true",
-    },
-    "dicago" => {
-       "number"        => "0x7cb",
-       "reset"         => "0x0",
-       "mask"          => "0x0",
-       "exists"        => "true",
-    },
-    "mitcnt0" => {
-       "number"        => "0x7d2",
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mitbnd0" => {
-       "number"        => "0x7d3",
-       "reset"         => "0xffffffff",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mitctl0" => {
-       "number"        => "0x7d4",
-       "reset"         => "0x1",
-       "mask"          => "0x00000007",
-       "exists"        => "true",
-    },
-    "mitcnt1" => {
-       "number"        => "0x7d5",
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mitbnd1" => {
-       "number"        => "0x7d6",
-       "reset"         => "0xffffffff",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mitctl1" => {
-       "number"        => "0x7d7",
-       "reset"         => "0x1",
-       "mask"          => "0x0000000f",
-       "exists"        => "true",
-    },
-    "mcpc" => {
-       "comment"       => "Core pause",
-       "number"        => "0x7c2",
-       "reset"         => "0x0",
-       "mask"          => "0x0",
-       "exists"        => "true",
-    },
-    "mpmc" => {
-       "number"        => "0x7c6",
-       "reset"         => "0x2",
-       "mask"          => "0x2",
-       "exists"        => "true",
-    },
-    "micect" => {
-       "number"        => "0x7f0",
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "miccmect" => {
-       "number"        => "0x7f1",
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mdccmect" => {
-       "number"        => "0x7f2",
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-    },
-    "mcgc" => {
-       "number"        => "0x7f8",
-       "reset"         => "0x200",
-       "mask"          => "0x000003ff",
-       "poke_mask"     => "0x000003ff",
-       "exists"        => "true",
-    },
-    "mfdc" => {
-       "number"        => "0x7f9",
-       "reset"         => "0x00070000",
-       "mask"          => "0x00071fff",
-       "exists"        => "true",
-    },
-    "mrac" => {
-       "comment"       => "Memory region io and cache control.",
-       "number"        => "0x7c0",
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-       "shared"        => "true",
-    },
-    "dmst" => {
-       "comment"       => "Memory synch trigger: Flush caches in debug mode.",
-       "number"        => "0x7c4",
-       "reset"         => "0x0",
-       "mask"          => "0x0",
-       "exists"        => "true",
-       "debug"         => "true",
-    },
-    "dicawics" => {
-       "comment"       => "Cache diagnostics.",
-       "number"        => "0x7c8",
-       "reset"         => "0x0",
-       "mask"          => "0x0130fffc",
-       "exists"        => "true",
-       "debug"         => "true",
-    },
-    "dicad0" => {
-       "comment"       => "Cache diagnostics.",
-       "number"        => "0x7c9",
-       "reset"         => "0x0",
-       "mask"          => "0xffffffff",
-       "exists"        => "true",
-       "debug"         => "true",
-    },
-    "dicad1" => {
-       "comment"       => "Cache diagnostics.",
-       "number"        => "0x7ca",
-       "reset"         => "0x0",
-       "mask"          => "0x3",
-       "exists"        => "true",
-       "debug"         => "true",
-    },
-    "dicago" => {
-       "comment"       => "Cache diagnostics.",
-       "number"        => "0x7cb",
-       "reset"         => "0x0",
-       "mask"          => "0x0",
-       "exists"        => "true",
-       "debug"         => "true",
-    },
-    "meipt" => {
-       "comment"       => "External interrupt priority threshold.",
-       "number"        => "0xbc9",
-       "reset"         => "0x0",
-       "mask"          => "0xf",
-       "exists"        => "true",
-    },
-    "meicpct" => {
-       "comment"       => "External claim id/priority capture.",
-       "number"        => "0xbca",
-       "reset"         => "0x0",
-       "mask"          => "0x0",
-       "exists"        => "true",
-    },
-    "meicidpl" => {
-       "comment"       => "External interrupt claim id priority level.",
-       "number"        => "0xbcb",
-       "reset"         => "0x0",
-       "mask"          => "0xf",
-       "exists"        => "true",
-    },
-    "meicurpl" => {
-       "comment"       => "External interrupt current priority level.",
-       "number"        => "0xbcc",
-       "reset"         => "0x0",
-       "mask"          => "0xf",
-       "exists"        => "true",
-    },
-    "mfdht" => {
-        "comment"      => "Force Debug Halt Threshold",
-        "number"       => "0x7ce",
-        "reset"        => "0x0",
-        "mask"         => "0x0000003f",
-        "exists"       => "true",
-        "shared"       => "true",
-    },
-    "mfdhs" => {
-        "comment"      => "Force Debug Halt Status",
-        "number"       => "0x7cf",
-        "reset"        => "0x0",
-        "mask"         => "0x00000003",
-        "exists"       => "true",
-    },
-    "mscause" => {
-        "number"       => "0x7ff",
-        "reset"        => "0x0",
-        "mask"         => "0x0000000f",
-        "exists"       => "true",
-    },
-
-);#}}}
-
-
-# These are the peformance counters events implemented for eb1s. An
-# event number from outside this list will be replaced by zero if
-# written to an MHPMEVENT CSR.
-my @perf_events = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
-                   17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30,
-                   31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
-                   45, 46, 47, 48, 49, 50, 54, 55, 56,
-                   512, 513, 514, 515, 516);
-
-foreach my $i (0 .. 3) {
-    $csr{"pmpcfg$i"} = { "exists" => "false" };
-}
-
-foreach my $i (0 .. 15) {
-    $csr{"pmpaddr$i"} = { "exists" => "false" };
-}
-
-# }}}
-# Main config hash, with default values
-#
-# Hash can be hierarchical with arbitrary levels
-# Hexadecimal values are prefixed with 0x
-#
-# For verilog, if bit width is expected, add to %width hash below
-#
-# NOTE: params/keys marked 'derived' are not settable via cmd line, unless they ALSO have the 'overridable' tag
-#
-our %config = (#{{{
-    "harts"                 => "1",
-    "xlen"                  => "32",                                # Testbench, Do Not Override
-    "numiregs"              => "32",                                # Testbench, Do Not Override
-    "regwidth"              => "32",                                # Testbench, Do Not Override
-    "reset_vec"             => "0xaffff000",                        # Testbench, Overridable
-    "nmi_vec"               => "0x11110000",                        # Testbench, Overridable
-    "physical"              => "1",
-    "num_mmode_perf_regs"   => "4",                                 # Whisper only
-    "max_mmode_perf_event"  => "516",                               # Whisper only: performance counters event ids will be clamped to this
-    "target"                => $target,                             # Flow Infrastructure
-    "config_key"            => "derived",
-    "tec_rv_icg"            => "clockhdr",
-
-    "retstack" => {
-         "ret_stack_size"    => "$ret_stack_size",                  # Design Parm, Overridable
-    },
-
-    "btb"  => {
-         "btb_enable"       => "$btb_enable",                       # Design Parm, Overridable
-         "btb_fullya"       => "$btb_fullya",                       # Design Parm, Overridable
-         "btb_toffset_size" => "$btb_toffset_size",                 # Constant
-         "btb_size"         => "$btb_size",                         # Design Parm, Overridable
-         "btb_index1_hi"    => "derived",
-         "btb_index1_lo"    => "2",                                 # Constant, Do Not Override
-         "btb_index2_hi"    => "derived",
-         "btb_index2_lo"    => "derived",
-         "btb_index3_hi"    => "derived",
-         "btb_index3_lo"    => "derived",
-         "btb_addr_hi"      => "derived",
-         "btb_array_depth"  => "derived",
-         "btb_addr_lo"      => "2",                                 # Constant, Do Not Override
-         "btb_btag_size"    => "derived",
-         "btb_btag_fold"    => "derived",
-         "btb_fold2_index_hash" => "derived",
-    },
-    "bht"  => {
-         "bht_size"         => "$bht_size",                         # Design Parm, Overridable
-         "bht_addr_hi"      => "derived",
-         "bht_addr_lo"      => "2",                                 # Constant, Do Not Override
-         "bht_array_depth"  => "derived",
-         "bht_ghr_size"     => "derived",
-         "bht_ghr_range"    => "derived",
-         "bht_hash_string"  => "derived",
-         "bht_ghr_hash_1"   => "derived",
-    },
-
-    "core" => {
-        "div_bit"            => "$div_bit",                             # Design Parm, Overridable
-        "div_new"            => "$div_new",                             # Design Parm, Overridable
-        "lsu_stbuf_depth"    => "$lsu_stbuf_depth",                     # Design Parm, Overridable
-        "dma_buf_depth"      => "$dma_buf_depth",                       # Design Parm, Overridable
-        "lsu_num_nbload"     => "$lsu_num_nbload",                      # Design Parm, Overridable
-        "opensource"         => "$opensource",                          # Flow Infrastructure
-        "verilator"          => "$verilator",                           # Flow Infrastructure
-        "load_to_use_plus1"  => "$load_to_use_plus1",                   # Design Parm, Overridable
-        "iccm_icache"        => 'derived',                              # Used by design
-        "iccm_only"          => 'derived',                              # Used by design
-        "icache_only"        => 'derived',                              # Used by design
-        "no_iccm_no_icache"  => 'derived',                              # Used by design
-        "timer_legal_en"          => '1',                               # Design Parm, Overridable
-        "bitmanip_zba"             => $bitmanip_zba,                    # Design Parm, Overridable
-        "bitmanip_zbb"             => $bitmanip_zbb,                    # Design Parm, Overridable
-        "bitmanip_zbc"             => $bitmanip_zbc,                    # Design Parm, Overridable
-        "bitmanip_zbe"             => $bitmanip_zbe,                    # Design Parm, Overridable
-        "bitmanip_zbf"             => $bitmanip_zbf,                    # Design Parm, Overridable
-        "bitmanip_zbp"             => $bitmanip_zbp,                    # Design Parm, Overridable
-        "bitmanip_zbr"             => $bitmanip_zbr,                    # Design Parm, Overridable
-        "bitmanip_zbs"             => $bitmanip_zbs,                    # Design Parm, Overridable
-        "fast_interrupt_redirect"  => "$fast_interrupt_redirect",       # Design Parm, Overridable
-        "lsu2dma"            => $lsu2dma,                               # used by design/TB for LSU to DMA bridge
-        "fpga_optimize"      => $fpga_optimize                          # Optimize fpga speed by removing clock gating
-    },
-
-    "dccm" => {
-        "dccm_enable"       => "$dccm_enable",                          # Design Parm, Overridable
-        "dccm_region"       => "$dccm_region",                          # Design Parm, Overridable
-        "dccm_offset"       => "$dccm_offset",                          # Design Parm, Overridable
-        "dccm_size"         => "$dccm_size",                            # Design Parm, Overridable
-        "dccm_num_banks"    => "$dccm_num_banks",                       # Design Parm, Overridable
-        "dccm_sadr"         => 'derived',
-        "dccm_eadr"         => 'derived',
-        "dccm_bits"         => 'derived',
-        "dccm_bank_bits"    => 'derived',
-        "dccm_data_width"   => 'derived',
-        "dccm_fdata_width"  => 'derived',
-        "dccm_byte_width"   => 'derived',
-        "dccm_width_bits"   => 'derived',
-        "dccm_index_bits"   => 'derived',
-        "dccm_ecc_width"    => 'derived',
-        "lsu_sb_bits"       => 'derived',
-        "dccm_data_cell"    => 'derived',
-        "dccm_rows"         => 'derived',
-        "dccm_reserved"     => 'derived',                               # Testbench use only : reserve dccm space for SW/stack - no random r/w
-    },
-
-
-    "iccm" => {
-        "iccm_enable"       => "$iccm_enable",                          # Design Parm, Overridable
-        "iccm_region"       => "$iccm_region",                          # Design Parm, Overridable
-        "iccm_offset"       => "$iccm_offset",                          # Design Parm, Overridable
-        "iccm_size"         => "$iccm_size",                            # Design Parm, Overridable
-        "iccm_num_banks"    => "$iccm_num_banks",                       # Design Parm, Overridable
-        "iccm_bank_bits"    => 'derived',
-        "iccm_index_bits"   => 'derived',
-        "iccm_rows"         => 'derived',
-        "iccm_data_cell"    => 'derived',
-        "iccm_sadr"         => 'derived',
-        "iccm_eadr"         => 'derived',
-        "iccm_reserved"     => 'derived',                               # Testbench use only : reserve iccm space for SW/handlers - no random r/w
-        "iccm_bank_hi"      => 'derived',
-        "iccm_bank_index_lo"      => 'derived',
-    },
-    "icache" => {
-        "icache_enable"      => "$icache_enable",                        # Design Parm, Overridable
-        "icache_waypack"     => "$icache_waypack",                       # Design Parm, Overridable
-        "icache_num_ways"    => "$icache_num_ways",                      # Design Parm, Overridable
-        "icache_banks_way"   => "2",                                     # Design Parm, Constant
-        "icache_bank_width"  => "8",                                     # Design Parm, Constant
-        "icache_ln_sz"       => "$icache_ln_sz",                         # Design Parm, Overridable
-        "icache_size"        => "$icache_size",                          # Design Parm, Overridable
-        "icache_bypass_enable"      => "$icache_bypass_enable",          # Design Parm, Overridable
-        "icache_num_bypass"         => "$icache_num_bypass",             # Design Parm, Overridable
-        "icache_num_bypass_width"   => 'derived',
-        "icache_tag_bypass_enable"      => "$icache_tag_bypass_enable",  # Design Parm, Overridable
-        "icache_tag_num_bypass"         => "$icache_tag_num_bypass",     # Design Parm, Overridable
-        "icache_tag_num_bypass_width"   => 'derived',
-        "icache_bank_hi"    => 'derived',
-        "icache_bank_lo"    => 'derived',
-        "icache_data_cell"  => 'derived',
-        "icache_tag_cell"   => 'derived',
-        "icache_tag_depth"  => 'derived',
-        "icache_data_depth"  => 'derived',
-        "icache_num_lines"   => 'derived',
-        "icache_num_lines_bank"  => 'derived',
-        "icache_num_lines_way"  => 'derived',
-        "icache_data_depth"         => 'derived',
-        "icache_tag_lo"          => 'derived',
-        "icache_index_hi"        => 'derived',
-        "icache_data_index_lo"   => 'derived',
-        "icache_data_width"      => 'derived',
-        "icache_fdata_width"     => 'derived',
-        "icache_tag_index_lo"    => 'derived',
-        "icache_ecc"             => "$icache_ecc",                      # Design Parm, Overridable
-        "icache_2banks"          => "$icache_2banks",                   # Design Parm, Overridable
-        "icache_bank_bits"       => "derived",
-        "icache_status_bits"     => "derived",
-        "icache_num_beats"       => "derived",
-        "icache_beat_bits"       => "derived",
-        "icache_scnd_last"       => "derived",
-        "icache_beat_addr_hi"    => "derived",
-    },
-    "pic" => {
-        "pic_2cycle"         => "$pic_2cycle",                          # Design Parm, Overridable
-        "pic_region"         => "$pic_region",                          # Design Parm, Overridable
-        "pic_offset"         => "$pic_offset",                          # Design Parm, Overridable
-        "pic_size"           => "$pic_size",                            # Design Parm, Overridable
-        "pic_base_addr"      => 'derived',
-        "pic_total_int_plus1"      => 'derived',                        # pic_total_int + 1
-        "pic_total_int"      => "$pic_total_int",                       # Design Parm, Overridable
-        "pic_int_words"      => 'derived',                              # number of 32 bit words for packed registers (Xmax)
-        "pic_bits"           => 'derived',                              # of bits needs to address the PICM
-        "pic_meipl_offset"   => '0x0000',                               # Testbench only: Offset of meipl relative to pic_base_addr
-        "pic_meip_offset"    => '0x1000',                               # Testbench only: Offset of meip relative to pic_base_addr
-        "pic_meie_offset"    => '0x2000',                               # Testbench only: Offset of meie relative to pic_base_addr
-        "pic_mpiccfg_offset" => '0x3000',                               # Testbench only: Offset of mpiccfg relative to pic_base_addr
-        "pic_meipt_offset"   => '0x3004',                               # Testbench only: Offset of meipt relative to pic_base_addr -- deprecated
-        "pic_meigwctrl_offset" => '0x4000',                             # Testbench only: gateway control regs relative to pic_base_addr
-        "pic_meigwclr_offset"  => '0x5000',                             # Testbench only: gateway clear regs relative to pic_base_addr
-
-        "pic_meipl_mask"     => '0xf',                                  # Whisper only
-        "pic_meip_mask"      => '0x0',
-        "pic_meie_mask"      => '0x1',
-        "pic_mpiccfg_mask"   => '0x1',
-        "pic_meipt_mask"     => '0x0',
-        "pic_meigwctrl_mask" => '0x3',
-        "pic_meigwclr_mask"  => '0x0',
-
-        "pic_meipl_count"     => 'derived',
-        "pic_meip_count"      => 'derived',
-        "pic_meie_count"      => 'derived',
-        "pic_mpiccfg_count"   => 1,
-        "pic_meipt_count"     => 'derived',
-        "pic_meigwctrl_count" => 'derived',
-        "pic_meigwclr_count"  => 'derived',
-    },
-    "testbench" => {                                                    # Testbench only
-        "TOP"               => "tb_top",
-        "RV_TOP"            => "`TOP.rvtop",
-        "CPU_TOP"           => "`RV_TOP.brqrv",
-        "clock_period"      => "100",
-        "build_ahb_lite"    => "$ahb",
-        "build_axi4"        => "$axi",
-        "build_axi_native"  => "1",
-        "assert_on"         => "",
-        "ext_datawidth"     => "64",
-        "ext_addrwidth"     => "32",
-        "sterr_rollback"    => "0",
-        "lderr_rollback"    => "1",
-        "SDVT_AHB"          => "$ahb",
-    },
-    "protection" => {                                                   # Design parms, Overridable - static MPU
-        "inst_access_enable0" => "0x0",
-        "inst_access_addr0"   => "0x00000000",
-        "inst_access_mask0"   => "0xffffffff",
-        "inst_access_enable1" => "0x0",
-        "inst_access_addr1"   => "0x00000000",
-        "inst_access_mask1"   => "0xffffffff",
-        "inst_access_enable2" => "0x0",
-        "inst_access_addr2"   => "0x00000000",
-        "inst_access_mask2"   => "0xffffffff",
-        "inst_access_enable3" => "0x0",
-        "inst_access_addr3"   => "0x00000000",
-        "inst_access_mask3"   => "0xffffffff",
-        "inst_access_enable4" => "0x0",
-        "inst_access_addr4"   => "0x00000000",
-        "inst_access_mask4"   => "0xffffffff",
-        "inst_access_enable5" => "0x0",
-        "inst_access_addr5"   => "0x00000000",
-        "inst_access_mask5"   => "0xffffffff",
-        "inst_access_enable6" => "0x0",
-        "inst_access_addr6"   => "0x00000000",
-        "inst_access_mask6"   => "0xffffffff",
-        "inst_access_enable7" => "0x0",
-        "inst_access_addr7"   => "0x00000000",
-        "inst_access_mask7"   => "0xffffffff",
-        "data_access_enable0" => "0x0",
-        "data_access_addr0"   => "0x00000000",
-        "data_access_mask0"   => "0xffffffff",
-        "data_access_enable1" => "0x0",
-        "data_access_addr1"   => "0x00000000",
-        "data_access_mask1"   => "0xffffffff",
-        "data_access_enable2" => "0x0",
-        "data_access_addr2"   => "0x00000000",
-        "data_access_mask2"   => "0xffffffff",
-        "data_access_enable3" => "0x0",
-        "data_access_addr3"   => "0x00000000",
-        "data_access_mask3"   => "0xffffffff",
-        "data_access_enable4" => "0x0",
-        "data_access_addr4"   => "0x00000000",
-        "data_access_mask4"   => "0xffffffff",
-        "data_access_enable5" => "0x0",
-        "data_access_addr5"   => "0x00000000",
-        "data_access_mask5"   => "0xffffffff",
-        "data_access_enable6" => "0x0",
-        "data_access_addr6"   => "0x00000000",
-        "data_access_mask6"   => "0xffffffff",
-        "data_access_enable7" => "0x0",
-        "data_access_addr7"   => "0x00000000",
-        "data_access_mask7"   => "0xffffffff",
-     },
-    "memmap" => {                                                       # Testbench only
-        "serialio"          => 'derived, overridable',                  # Testbench only
-        "external_data"     => 'derived, overridable',                  # Testbench only
-        "debug_sb_mem"      => 'derived, overridable',                  # Testbench only
-        "external_data_1"   => 'derived, overridable',                  # Testbench only
-        "external_mem_hole" => 'default disabled',                      # Testbench only
-#       "consoleio"         => 'derived',   # Part of serial io.
-    },
-    "bus" => {
-        "lsu_bus_tag"      => 'derived',
-        "lsu_bus_id"       => '1',
-        "lsu_bus_prty"     => '2',
-        "dma_bus_tag"      => '1',
-        "dma_bus_id"       => '1',
-        "dma_bus_prty"     => '2',
-        "sb_bus_tag"       => '1',
-        "sb_bus_id"        => '1',
-        "sb_bus_prty"      => '2',
-        "ifu_bus_tag"      => 'derived',
-        "ifu_bus_id"       => '1',
-        "ifu_bus_prty"     => '2',
-        "bus_prty_default" => '3',
-    },
-    "triggers" => \@triggers,                                           # Whisper only
-    "csr" => \%csr,                                                     # Whisper only
-    "perf_events" => \@perf_events,                                     # Whisper only
-    "even_odd_trigger_chains" => "true",                                # Whisper only
-);
-
-
-# These parms are used in the Verilog and will be part of global parm structure
-# need to have this be width in binary
-# for now autosize to the data
-our %verilog_parms = (
-        "lsu2dma"                 => '1',
-        "timer_legal_en"          => '1',
-        "bitmanip_zbb"            => '1',
-        "bitmanip_zbs"            => '1',
-        "bitmanip_zba"            => '1',
-        "bitmanip_zbc"            => '1',
-        "bitmanip_zbe"            => '1',
-        "bitmanip_zbf"            => '1',
-        "bitmanip_zbp"            => '1',
-        "bitmanip_zbr"            => '1',
-        "fast_interrupt_redirect" => '1',
-
-        "inst_access_enable0" => '1',
-        "inst_access_addr0"   => '32',
-        "inst_access_mask0"   => '32',
-        "inst_access_enable1" => '1',
-        "inst_access_addr1"   => '32',
-        "inst_access_mask1"   => '32',
-        "inst_access_enable2" => '1',
-        "inst_access_addr2"   => '32',
-        "inst_access_mask2"   => '32',
-        "inst_access_enable3" => '1',
-        "inst_access_addr3"   => '32',
-        "inst_access_mask3"   => '32',
-        "inst_access_enable4" => '1',
-        "inst_access_addr4"   => '32',
-        "inst_access_mask4"   => '32',
-        "inst_access_enable5" => '1',
-        "inst_access_addr5"   => '32',
-        "inst_access_mask5"   => '32',
-        "inst_access_enable6" => '1',
-        "inst_access_addr6"   => '32',
-        "inst_access_mask6"   => '32',
-        "inst_access_enable7" => '1',
-        "inst_access_addr7"   => '32',
-        "inst_access_mask7"   => '32',
-        "data_access_enable0" => '1',
-        "data_access_addr0"   => '32',
-        "data_access_mask0"   => '32',
-        "data_access_enable1" => '1',
-        "data_access_addr1"   => '32',
-        "data_access_mask1"   => '32',
-        "data_access_enable2" => '1',
-        "data_access_addr2"   => '32',
-        "data_access_mask2"   => '32',
-        "data_access_enable3" => '1',
-        "data_access_addr3"   => '32',
-        "data_access_mask3"   => '32',
-        "data_access_enable4" => '1',
-        "data_access_addr4"   => '32',
-        "data_access_mask4"   => '32',
-        "data_access_enable5" => '1',
-        "data_access_addr5"   => '32',
-        "data_access_mask5"   => '32',
-        "data_access_enable6" => '1',
-        "data_access_addr6"   => '32',
-        "data_access_mask6"   => '32',
-        "data_access_enable7" => '1',
-        "data_access_addr7"   => '32',
-        "data_access_mask7"   => '32',
-        "iccm_bits"              => '5',
-        "iccm_bank_hi"           => '5',
-        "iccm_bank_index_lo"     => '5',
-        "icache_bank_bits"       => '3',
-        "icache_status_bits"     => '3',
-        "icache_num_beats"       => '4',
-        "icache_beat_bits"       => '4',
-        "icache_scnd_last"       => '4',
-        "icache_beat_addr_hi"    => '4',
-        "icache_bypass_enable"   => '1',
-        "icache_num_bypass"      => '4',
-        "icache_num_bypass_width"    => '4',
-        "icache_tag_bypass_enable"   => '1',
-        "icache_tag_num_bypass"      => '4',
-        "icache_tag_num_bypass_width"    => '4',
-        "iccm_icache"        => '1',
-        "iccm_only"          => '1',
-        "icache_only"        => '1',
-        "no_iccm_no_icache"  => '1',
-         "build_axi4" => '1',
-         "build_ahb_lite" => '1',
-         "build_axi_native" => '1',
-         "lsu_num_nbload_width" => '3',
-         "lsu_num_nbload"    => '5',
-         "ret_stack_size"   => '4',
-         "btb_fullya"       => '1',
-         "btb_toffset_size" => '5',
-         "btb_enable"       => '1',
-         "btb_size"         => '10',
-         "btb_index1_hi"    => '5',
-         "btb_index1_lo"    => '5',
-         "btb_index2_hi"    => '5',
-         "btb_index2_lo"    => '5',
-         "btb_index3_hi"    => '5',
-         "btb_index3_lo"    => '5',
-         "btb_addr_hi"      => '5',
-         "btb_array_depth"  => '9',
-         "btb_addr_lo"      => '2',
-         "btb_btag_size"    => '5',
-         "btb_btag_fold"    => '1',
-         "btb_fold2_index_hash" => '1',
-         "bht_size"         => '12',
-         "bht_addr_hi"      => '4',
-         "bht_addr_lo"      => '2',
-         "bht_array_depth"  => '11',
-         "bht_ghr_size"     => '4',
-         "bht_ghr_hash_1"   => '1',
-        "div_bit"                 => '3',
-        "div_new"                 => '1',
-        "lsu_stbuf_depth"   => '4',
-        "dma_buf_depth"     => '3',
-        "load_to_use_plus1"        => '1',
-        "dccm_enable"       => '1',
-        "dccm_region"       => '4',
-        "dccm_size"         => '10',
-        "dccm_num_banks"    => '5',
-        "dccm_sadr"         => '32',
-        "dccm_bits"         => '5',
-        "dccm_bank_bits"    => '3',
-        "dccm_data_width"   => '6',
-        "dccm_fdata_width"  => '6',
-        "dccm_byte_width"   => '3',
-        "dccm_width_bits"   => '2',
-        "dccm_index_bits"   => '4',
-        "dccm_ecc_width"    => '3',
-        "lsu_sb_bits"       => '5',
-        "iccm_enable"       => '1',
-        "iccm_region"       => '4',
-        "iccm_size"         => '10',
-        "iccm_num_banks"    => '5',
-        "iccm_bank_bits"    => '3',
-        "iccm_index_bits"   => '4',
-        "iccm_sadr"         => '32',
-        "icache_enable"     => '1',
-        "icache_waypack"    => '1',
-        "icache_num_ways"   => '3',
-        "icache_banks_way"  => '3',
-        "icache_bank_width" => '4',
-        "icache_ln_sz"      => '7',
-        "icache_size"       => '9',
-        "icache_bank_hi"    => '3',
-        "icache_bank_lo"    => '2',
-        "icache_tag_depth"  => '13',
-        "icache_data_depth"      => '14',
-        "icache_tag_lo"          => '5',
-        "icache_index_hi"        => '5',
-        "icache_data_index_lo"   => '3',
-        "icache_data_width"      => '7',
-        "icache_fdata_width"     => '7',
-        "icache_tag_index_lo"    => '3',
-        "icache_ecc"             => '1',
-        "icache_2banks"          => '1',
-        "pic_2cycle"         => '1',
-        "pic_region"         => '4',
-        "pic_size"           => '9',
-        "pic_base_addr"      => '32',
-        "pic_total_int_plus1"  => '9',
-        "pic_total_int"      => '8',
-        "pic_int_words"      => '4',
-        "pic_bits"           => '5',
-        "lsu_bus_tag"      => '4',
-        "lsu_bus_id"       => '1',
-        "lsu_bus_prty"     => '2',
-        "dma_bus_tag"      => '4',
-        "dma_bus_id"       => '5',
-        "dma_bus_prty"     => '2',
-        "sb_bus_tag"       => '4',
-        "sb_bus_id"        => '1',
-        "sb_bus_prty"      => '2',
-        "ifu_bus_tag"      => '4',
-        "ifu_bus_id"       => '1',
-        "ifu_bus_prty"     => '2',
-        "bus_prty_default" => '2',
-);
-
-# to make sure parameter math works properly add 4 to each key of %verilog_parms - was an issue in btb calculations
-my $key;
-foreach $key (keys %verilog_parms) {
-    $verilog_parms{$key} += 4;
-}
-
-
-# need to figure out what to do here
-# for now none of these can be parameters
-
-
-# move deletes lower
-
-# Perform any overrides first before derived values
-#
-map_set_unset();
-
-gen_define("","", \%config,"",[]);
-
-# perform final checks
-my $c;
-$c=$config{retstack}{ret_stack_size}; if (!($c >=2 && $c <=8))                                 { die("$helpusage\n\nFAIL: ret_stack_size == $c;   ILLEGAL !!!\n\n"); }
-$c=$config{btb}{btb_size};            if (!($c==8||$c==16||$c==32||$c==64||$c==128||$c==256||$c==512))        { die("$helpusage\n\nFAIL: btb_size == $c;         ILLEGAL !!!\n\n"); }
-$c=$config{btb}{btb_size};            if (($c==64||$c==128||$c==256||$c==512) && $config{btb}{btb_fullya})        { die("$helpusage\n\nFAIL: btb_size == $c; btb_fullya=1        ILLEGAL !!!\n\n"); }
-$c=$config{iccm}{iccm_region};        if (!($c>=0 && $c<16))                                   { die("$helpusage\n\nFAIL: iccm_region == $c       ILLEGAL !!!\n\n"); }
-$c=$config{iccm}{iccm_offset};        if (!($c>=0  && $c<256*1024*1024 && ($c&0xfff)==0))      { die("$helpusage\n\nFAIL: iccm_offset == $c       ILLEGAL !!!\n\n"); }
-$c=$config{iccm}{iccm_size};          if (!($c==2||$c==4||$c==8||$c==16||$c==32||$c==64||$c==128||$c==256||$c==512)) { die("$helpusage\n\nFAIL: iccm_size == $c         ILLEGAL !!!\n\n"); }
-$c=$config{iccm}{iccm_num_banks};     if (!($c==2 || $c==4 || ($c==8  && $config{iccm}{iccm_size} != 2) || ($c==16 && $config{iccm}{iccm_size} > 4)))    { die("$helpusage\n\nFAIL: iccm_num_banks == $c    ILLEGAL !!!\n\n"); }
-$c=$config{iccm}{iccm_enable};        if (!($c==0  || $c==1))                                  { die("$helpusage\n\nFAIL: iccm_enable == $c       ILLEGAL !!!\n\n"); }
-$c=$config{dccm}{dccm_region};        if (!($c>=0  && $c<16))                                  { die("$helpusage\n\nFAIL: dccm_region == $c       ILLEGAL !!!\n\n"); }
-$c=$config{dccm}{dccm_num_banks};     if (!(($c==2 && $config{dccm}{dccm_size} != 48) || $c==4 || ($c==8 && $config{dccm}{dccm_size} != 48) || ($c==16 && $config{dccm}{dccm_size} != 4 && $config{dccm}{dccm_size} != 48)))
-                                                                                               { die("$helpusage\n\nFAIL: dccm_num_banks == $c    ILLEGAL !!!\n\n"); }
-$c=$config{dccm}{dccm_offset};         if (!($c>=0  && $c<256*1024*1024 && ($c&0xfff)==0))      { die("$helpusage\n\nFAIL: dccm_offset == $c       ILLEGAL !!!\n\n"); }
-$c=$config{dccm}{dccm_size};           if (!($c==4||$c==8||$c==16||$c==32||$c==48||$c==64||$c==128||$c==256||$c==512))        { die("$helpusage\n\nFAIL: dccm_size == $c         ILLEGAL !!!\n\n"); }
-$c=$config{pic}{pic_2cycle};           if (!($c==0  || $c==1))                                  { die("$helpusage\n\nFAIL: pic_2cycle == $c        ILLEGAL !!!\n\n"); }
-$c=$config{pic}{pic_region};           if (!($c>=0 && $c<16))                                   { die("$helpusage\n\nFAIL: pic_region == $c        ILLEGAL !!!\n\n"); }
-$c=$config{pic}{pic_offset};           if (!($c>=0  && $c<256*1024*1024 && ($c&0xfff)==0))      { die("$helpusage\n\nFAIL: pic_offset == $c        ILLEGAL !!!\n\n"); }
-$c=$config{pic}{pic_size};             if (!($c==32 || $c==64 || $c==128 || $c==256))           { die("$helpusage\n\nFAIL: pic_size == $c          ILLEGAL !!!\n\n"); }
-$c=$config{pic}{pic_total_int};        if (  $c<1 || $c>255)                                    { die("$helpusage\n\nFAIL: pic_total_int == $c     ILLEGAL !!!\n\n"); }
-$c=$config{icache}{icache_num_bypass}; if ($c<1 || $c>8)                                        { die("$helpusage\n\nFAIL: icache_num_bypass == $c       ILLEGAL !!!\n\n"); }
-$c=$config{icache}{icache_bypass_enable};     if (!($c==0 || $c==1))                            { die("$helpusage\n\nFAIL: icache_bypass_enable == $c     ILLEGAL !!!\n\n"); }
-$c=$config{icache}{icache_tag_num_bypass}; if ($c<1 || $c>8)                                        { die("$helpusage\n\nFAIL: icache_tag_num_bypass == $c       ILLEGAL !!!\n\n"); }
-$c=$config{icache}{icache_tag_bypass_enable};     if (!($c==0 || $c==1))                            { die("$helpusage\n\nFAIL: icache_tag_bypass_enable == $c     ILLEGAL !!!\n\n"); }
-$c=$config{icache}{icache_enable};     if (!($c==0 || $c==1))                                   { die("$helpusage\n\nFAIL: icache_enable == $c     ILLEGAL !!!\n\n"); }
-$c=$config{icache}{icache_waypack};    if (!($c==0 || $c==1))                                   { die("$helpusage\n\nFAIL: icache_waypack == $c     ILLEGAL !!!\n\n"); }
-$c=$config{icache}{icache_num_ways};   if (!($c==2 || $c==4))                                   { die("$helpusage\n\nFAIL: icache_num_ways == $c   ILLEGAL !!!\n\n"); }
-$c=$config{icache}{icache_ln_sz};      if (!($c==32 || $c==64))                                 { die("$helpusage\n\nFAIL: icache_ln_sz == $c   ILLEGAL !!!\n\n"); }
-$c=$config{icache}{icache_size};       if (!($c==8 || $c==16 || $c==32 || $c==64 || $c==128 || $c==256)) { die("$helpusage\n\nFAIL: icache_size == $c       ILLEGAL !!!\n\n"); }
-$c=$config{core}{div_bit};             if (!($c==1 || $c==2 || $c==3 || $c==4  ))               { die("$helpusage\n\nFAIL: div_bit == $c   ILLEGAL !!!\n\n"); }
-$c=$config{core}{div_new};             if (!($c==0 || $c==1))                                   { die("$helpusage\n\nFAIL: div_new == $c    ILLEGAL !!!\n\n"); }
-$c=$config{core}{lsu_stbuf_depth};     if (!($c==2 || $c==4 || $c==8))                          { die("$helpusage\n\nFAIL: lsu_stbuf_depth == $c   ILLEGAL !!!\n\n"); }
-$c=$config{core}{dma_buf_depth};       if (!($c==2 || $c==4 || $c==5))                          { die("$helpusage\n\nFAIL: dma_buf_depth == $c     ILLEGAL !!!\n\n"); }
-$c=$config{core}{lsu_num_nbload};      if (!($c==2 || $c==4 || $c==8))                          { die("$helpusage\n\nFAIL: lsu_num_nbload == $c   ILLEGAL !!!\n\n"); }
-
-
-# force div_bit to be 1 for old div algorithm
-if ($config{core}{div_new}==0 && $config{core}{div_bit}!=1) {
-    die("$helpusage\n\nFAIL: div_new=0 requires div_bit=1   ILLEGAL !!!\n\n");
-}
-
-$c=$config{protection}{inst_access_addr0}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: inst_access_addr0 lower 6b must be 0s $c !!!\n\n"); }
-$c=$config{protection}{inst_access_addr1}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: inst_access_addr1 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{inst_access_addr2}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: inst_access_addr2 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{inst_access_addr3}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: inst_access_addr3 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{inst_access_addr4}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: inst_access_addr4 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{inst_access_addr5}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: inst_access_addr5 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{inst_access_addr6}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: inst_access_addr6 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{inst_access_addr7}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: inst_access_addr7 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{inst_access_mask0}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: inst_access_mask0 invalid !!!\n\n"); }
-$c=$config{protection}{inst_access_mask1}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: inst_access_mask1 invalid !!!\n\n"); }
-$c=$config{protection}{inst_access_mask2}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: inst_access_mask2 invalid !!!\n\n"); }
-$c=$config{protection}{inst_access_mask3}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: inst_access_mask3 invalid !!!\n\n"); }
-$c=$config{protection}{inst_access_mask4}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: inst_access_mask4 invalid !!!\n\n"); }
-$c=$config{protection}{inst_access_mask5}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: inst_access_mask5 invalid !!!\n\n"); }
-$c=$config{protection}{inst_access_mask6}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: inst_access_mask6 invalid !!!\n\n"); }
-$c=$config{protection}{inst_access_mask7}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: inst_access_mask7 invalid !!!\n\n"); }
-$c=$config{protection}{data_access_addr0}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: data_access_addr0 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{data_access_addr1}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: data_access_addr1 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{data_access_addr2}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: data_access_addr2 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{data_access_addr3}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: data_access_addr3 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{data_access_addr4}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: data_access_addr4 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{data_access_addr5}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: data_access_addr5 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{data_access_addr6}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: data_access_addr6 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{data_access_addr7}; if ((hex($c)&0x3f) != 0)                                { die("$helpusage\n\nFAIL: data_access_addr7 lower 6b must be 0s !!!\n\n"); }
-$c=$config{protection}{data_access_mask0}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: data_access_mask0 invalid !!!\n\n"); }
-$c=$config{protection}{data_access_mask1}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: data_access_mask1 invalid !!!\n\n"); }
-$c=$config{protection}{data_access_mask2}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: data_access_mask2 invalid !!!\n\n"); }
-$c=$config{protection}{data_access_mask3}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: data_access_mask3 invalid !!!\n\n"); }
-$c=$config{protection}{data_access_mask4}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: data_access_mask4 invalid !!!\n\n"); }
-$c=$config{protection}{data_access_mask5}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: data_access_mask5 invalid !!!\n\n"); }
-$c=$config{protection}{data_access_mask6}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: data_access_mask6 invalid !!!\n\n"); }
-$c=$config{protection}{data_access_mask7}; if ((hex($c)&0x3f) != 63  || invalid_mask($c))                               { die("$helpusage\n\nFAIL: data_access_mask7 invalid !!!\n\n"); }
-
-if ((hex($config{protection}{inst_access_addr0}) & hex($config{protection}{inst_access_mask0}))!=0)    { die("$helpusage\n\nFAIL: inst_access_addr0 and inst_access_mask0 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{inst_access_addr1}) & hex($config{protection}{inst_access_mask1}))!=0)    { die("$helpusage\n\nFAIL: inst_access_addr1 and inst_access_mask1 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{inst_access_addr2}) & hex($config{protection}{inst_access_mask2}))!=0)    { die("$helpusage\n\nFAIL: inst_access_addr2 and inst_access_mask2 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{inst_access_addr3}) & hex($config{protection}{inst_access_mask3}))!=0)    { die("$helpusage\n\nFAIL: inst_access_addr3 and inst_access_mask3 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{inst_access_addr4}) & hex($config{protection}{inst_access_mask4}))!=0)    { die("$helpusage\n\nFAIL: inst_access_addr4 and inst_access_mask4 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{inst_access_addr5}) & hex($config{protection}{inst_access_mask5}))!=0)    { die("$helpusage\n\nFAIL: inst_access_addr5 and inst_access_mask5 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{inst_access_addr6}) & hex($config{protection}{inst_access_mask6}))!=0)    { die("$helpusage\n\nFAIL: inst_access_addr6 and inst_access_mask6 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{inst_access_addr7}) & hex($config{protection}{inst_access_mask7}))!=0)    { die("$helpusage\n\nFAIL: inst_access_addr7 and inst_access_mask7 must be orthogonal!!!\n\n"); }
-
-if ((hex($config{protection}{data_access_addr0}) & hex($config{protection}{data_access_mask0}))!=0)    { die("$helpusage\n\nFAIL: data_access_addr0 and data_access_mask0 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{data_access_addr1}) & hex($config{protection}{data_access_mask1}))!=0)    { die("$helpusage\n\nFAIL: data_access_addr1 and data_access_mask1 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{data_access_addr2}) & hex($config{protection}{data_access_mask2}))!=0)    { die("$helpusage\n\nFAIL: data_access_addr2 and data_access_mask2 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{data_access_addr3}) & hex($config{protection}{data_access_mask3}))!=0)    { die("$helpusage\n\nFAIL: data_access_addr3 and data_access_mask3 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{data_access_addr4}) & hex($config{protection}{data_access_mask4}))!=0)    { die("$helpusage\n\nFAIL: data_access_addr4 and data_access_mask4 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{data_access_addr5}) & hex($config{protection}{data_access_mask5}))!=0)    { die("$helpusage\n\nFAIL: data_access_addr5 and data_access_mask5 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{data_access_addr6}) & hex($config{protection}{data_access_mask6}))!=0)    { die("$helpusage\n\nFAIL: data_access_addr6 and data_access_mask6 must be orthogonal!!!\n\n"); }
-if ((hex($config{protection}{data_access_addr7}) & hex($config{protection}{data_access_mask7}))!=0)    { die("$helpusage\n\nFAIL: data_access_addr7 and data_access_mask7 must be orthogonal!!!\n\n"); }
-
-
-# Fill in derived configuration entries.
-
-if (($config{icache}{icache_enable}==0 || grep(/icache_enable/, @unsets)) && $config{iccm}{iccm_enable}==0) {
-    $config{core}{no_iccm_no_icache}=1;
-}
-elsif (($config{icache}{icache_enable}==0 || grep(/icache_enable/, @unsets)) && $config{iccm}{iccm_enable}==1) {
-    $config{core}{iccm_only}=1;
-}
-elsif ($config{icache}{icache_enable}==1 && $config{iccm}{iccm_enable}==0) {
-    $config{core}{icache_only}=1;
-}
-elsif ($config{icache}{icache_enable}==1 && $config{iccm}{iccm_enable}==1) {
-    $config{core}{iccm_icache}=1;
-}
-
-if (!$config{dccm}{dccm_enable}) {
-    $config{core}{fast_interrupt_redirect} = 0;
-    print "$self: Disabling fast_interrupt_redirect because DCCM not enabled\n";
-}
-
-
-
-$config{btb}{btb_btag_fold} = 0;
-$config{btb}{btb_fold2_index_hash} = 0;
-$config{btb}{btb_btag_size} = 31;
-
-if($config{btb}{btb_size}==512){
-    $config{btb}{btb_index1_hi} = 9;
-    $config{btb}{btb_index2_hi} = 17;
-    $config{btb}{btb_index3_hi} = 25;
-    $config{btb}{btb_array_depth}= 256;
-    $config{btb}{btb_btag_size} = 5;
-} elsif($config{btb}{btb_size}==256){
-    $config{btb}{btb_index1_hi} = 8;
-    $config{btb}{btb_index2_hi} = 15;
-    $config{btb}{btb_index3_hi} = 22;
-    $config{btb}{btb_array_depth}= 128;
-    $config{btb}{btb_btag_size} = 6;
-} elsif($config{btb}{btb_size}==128){
-    $config{btb}{btb_index1_hi} = 7;
-    $config{btb}{btb_index2_hi} = 13;
-    $config{btb}{btb_index3_hi} = 19;
-    $config{btb}{btb_array_depth}= 64;
-    $config{btb}{btb_btag_size} = 7;
-} elsif($config{btb}{btb_size}==64){
-    $config{btb}{btb_index1_hi} = 6;
-    $config{btb}{btb_index2_hi} = 11;
-    $config{btb}{btb_index3_hi} = 16;
-    $config{btb}{btb_array_depth}= 32;
-    $config{btb}{btb_btag_size} = 8;
-} elsif($config{btb}{btb_size}==32){
-    $config{btb}{btb_index1_hi} = 5;
-    $config{btb}{btb_index2_hi} = 9;
-    $config{btb}{btb_index3_hi} = 13;
-    $config{btb}{btb_array_depth}= 16;
-    $config{btb}{btb_btag_size} = 9 unless $config{btb}{btb_fullya};
-    $config{btb}{btb_btag_fold} = 1;
-} elsif($config{btb}{btb_size}<32){
-    #verif issues require these even though they are not needed
-    $config{btb}{btb_index1_hi} = 5;
-    $config{btb}{btb_index2_hi} = 8;
-    $config{btb}{btb_index3_hi} = 11;
-    $config{btb}{btb_fullya} = 1;
-}
-
-$config{btb}{btb_index2_lo} = $config{btb}{btb_index1_hi}+1;
-$config{btb}{btb_index3_lo} = $config{btb}{btb_index2_hi}+1;
-$config{btb}{btb_addr_hi}   = $config{btb}{btb_index1_hi};
-
-if($config{bht}{bht_size}==2048){
-    $config{bht}{bht_ghr_size}= 10;
-    $config{bht}{bht_ghr_range}= "9:0";
-    $config{bht}{bht_array_depth}= 1024;
-    $config{bht}{bht_addr_hi}= 11;
-} elsif($config{bht}{bht_size}==1024){
-    $config{bht}{bht_ghr_size}= 9;
-    $config{bht}{bht_ghr_range}= "8:0";
-    $config{bht}{bht_array_depth}= 512;
-    $config{bht}{bht_addr_hi}= 10;
-} elsif($config{bht}{bht_size}==512){
-    $config{bht}{bht_ghr_size}= 8;
-    $config{bht}{bht_ghr_range}= "7:0";
-    $config{bht}{bht_array_depth}= 256;
-    $config{bht}{bht_addr_hi}= 9;
-} elsif($config{bht}{bht_size}==256){
-    $config{bht}{bht_ghr_size}= 7;
-    $config{bht}{bht_ghr_range}= "6:0";
-    $config{bht}{bht_addr_hi} = 8;
-    $config{bht}{bht_array_depth}= 128;
-} elsif($config{bht}{bht_size}==128){
-    $config{bht}{bht_ghr_size}= 6;
-    $config{bht}{bht_ghr_range}= "5:0";
-    $config{bht}{bht_addr_hi} = 7;
-    $config{bht}{bht_array_depth}= 64;
-} elsif($config{bht}{bht_size}==64){
-    $config{bht}{bht_ghr_size}= 5;
-    $config{bht}{bht_ghr_range}= "4:0";
-    $config{bht}{bht_addr_hi} = 6;
-    $config{bht}{bht_array_depth}= 32;
-} elsif($config{bht}{bht_size}==32){
-    $config{bht}{bht_ghr_size}= 4;
-    $config{bht}{bht_ghr_range}= "3:0";
-    $config{bht}{bht_addr_hi} = 5;
-    $config{bht}{bht_array_depth}= 16;
-}
-$config{bht}{bht_ghr_hash_1} = ($config{bht}{bht_ghr_size} > ($config{btb}{btb_index1_hi}-1));
-
-$config{bht}{bht_hash_string} = &ghrhash($config{btb}{btb_index1_hi}, $config{bht}{bht_ghr_size});
-
-
-
-
-# PIC derived
-$config{pic}{pic_base_addr} = (hex($config{pic}{pic_region})<<28) +
-    (hex($config{pic}{pic_offset}));
-$config{pic}{pic_base_addr} = sprintf("0x%x", $config{pic}{pic_base_addr});
-
-$config{pic}{pic_int_words} = int($config{pic}{pic_total_int}/32 +0.9);
-$config{pic}{pic_bits} = 10 + log2($config{pic}{pic_size});
-
-$config{pic}{pic_total_int_plus1} = $config{pic}{pic_total_int} + 1;
-$config{pic}{pic_meipl_count} = $config{pic}{pic_total_int};
-$config{pic}{pic_meip_count} = $config{pic}{pic_int_words};
-$config{pic}{pic_meie_count} = $config{pic}{pic_total_int};
-$config{pic}{pic_meipt_count} = $config{pic}{pic_total_int};
-$config{pic}{pic_meigwctrl_count} = $config{pic}{pic_total_int};
-$config{pic}{pic_meigwclr_count} = $config{pic}{pic_total_int};
-
-$config{icache}{icache_num_bypass_width}     = int(log2($config{icache}{icache_num_bypass})) + 1;
-$config{icache}{icache_tag_num_bypass_width} = int(log2($config{icache}{icache_tag_num_bypass})) + 1;
-
-$config{core}{lsu_num_nbload_width} = log2($config{core}{lsu_num_nbload});
-
-$config{bus}{lsu_bus_tag} = log2($config{core}{lsu_num_nbload}) + 1;
-
-$config{bus}{ifu_bus_tag} = log2($config{icache}{icache_ln_sz}/8);
-
-$config{dccm}{dccm_sadr} = (hex($config{dccm}{dccm_region})<<28) +
-    (hex($config{dccm}{dccm_offset}));
-$config{dccm}{dccm_sadr} = sprintf("0x%x", $config{dccm}{dccm_sadr});
-
-$config{dccm}{dccm_eadr} = (hex($config{dccm}{dccm_region})<<28) +
-    (hex($config{dccm}{dccm_offset})) + size($config{dccm}{dccm_size})-1;
-$config{dccm}{dccm_eadr} = sprintf("0x%x", $config{dccm}{dccm_eadr});
-
-$config{dccm}{dccm_reserved} = sprintf("0x%x", ($config{dccm}{dccm_size}>=16)? 5120 : ($config{dccm}{dccm_size}*1024)/4);
-
-$config{dccm}{dccm_bits} =  ($config{dccm}{dccm_size}==48 ) ? 16 : 10 + log2($config{dccm}{dccm_size});
-
-$config{dccm}{dccm_bank_bits} = log2($config{dccm}{dccm_num_banks});
-$config{dccm}{dccm_data_width} = 32;
-$config{dccm}{dccm_fdata_width} = $config{dccm}{dccm_data_width} + log2($config{dccm}{dccm_data_width}) + 2;
-$config{dccm}{dccm_byte_width} = $config{dccm}{dccm_data_width}/8;
-
-$config{dccm}{dccm_width_bits} = log2($config{dccm}{dccm_byte_width});
-$config{dccm}{dccm_index_bits} = $config{dccm}{dccm_bits} - $config{dccm}{dccm_bank_bits} - $config{dccm}{dccm_width_bits};
-
-$config{dccm}{dccm_ecc_width} = log2($config{dccm}{dccm_data_width}) + 2;
-$config{dccm}{lsu_sb_bits}    = $config{dccm}{dccm_bits};
-$config{dccm}{dccm_rows}      = ($config{dccm}{dccm_size}==48 ) ? (2**($config{dccm}{dccm_index_bits}-1) +  2**$config{dccm}{dccm_index_bits})/2   : 2**$config{dccm}{dccm_index_bits};
-$config{dccm}{dccm_data_cell} = "ram_$config{dccm}{dccm_rows}x39";
-
-
-$config{icache}{icache_num_lines}      = $config{icache}{icache_size}*1024/$config{icache}{icache_ln_sz};
-$config{icache}{icache_num_lines_way}  = $config{icache}{icache_num_lines}/$config{icache}{icache_num_ways};
-$config{icache}{icache_num_lines_bank} = $config{icache}{icache_num_lines}/($config{icache}{icache_num_ways} * $config{icache}{icache_banks_way});
-$config{icache}{icache_data_depth}        = $config{icache}{icache_num_lines_bank} * $config{icache}{icache_ln_sz} /$config{icache}{icache_bank_width};
-$config{icache}{icache_data_index_lo}  = log2($config{icache}{icache_bank_width}) + log2($config{icache}{icache_banks_way});
-$config{icache}{icache_index_hi}       = $config{icache}{icache_data_index_lo} + log2($config{icache}{icache_data_depth}) -1;
-$config{icache}{icache_bank_hi}        = $config{icache}{icache_data_index_lo}  - 1;
-$config{icache}{icache_bank_lo}        = log2($config{icache}{icache_bank_width});
-$config{icache}{icache_tag_index_lo}   = log2($config{icache}{icache_ln_sz});
-$config{icache}{icache_tag_lo}         = log2($config{icache}{icache_num_lines_way}) + $config{icache}{icache_tag_index_lo};
-$config{icache}{icache_tag_depth}      = $config{icache}{icache_num_lines}/$config{icache}{icache_num_ways};
-$config{icache}{icache_data_width}     = 8*$config{icache}{icache_bank_width};
-
-$config{icache}{icache_bank_bits}     = 1+$config{icache}{icache_bank_hi}-$config{icache}{icache_bank_lo};
-$config{icache}{icache_status_bits}   =  $config{icache}{icache_num_ways}-1;
-$config{icache}{icache_num_beats}     = ($config{icache}{icache_ln_sz}==64) ? 8 : 4;
-$config{icache}{icache_beat_bits}     = ($config{icache}{icache_ln_sz}==64) ? 3 : 2;
-$config{icache}{icache_scnd_last}     = ($config{icache}{icache_ln_sz}==64) ? 6 : 2;
-$config{icache}{icache_beat_addr_hi}  = ($config{icache}{icache_ln_sz}==64) ? 5 : 4;
-
-
-if (($config{icache}{icache_ecc})) {
-$config{icache}{icache_fdata_width} = $config{icache}{icache_data_width} + 7;
-$config{icache}{icache_data_cell}   = "ram_$config{icache}{icache_data_depth}x$config{icache}{icache_fdata_width}";
-$config{icache}{icache_tag_cell}    = ($config{icache}{icache_tag_depth} == 32) ? "ram_$config{icache}{icache_tag_depth}x26" : "ram_$config{icache}{icache_tag_depth}x25";
-
-}
-else {
-$config{icache}{icache_fdata_width} = $config{icache}{icache_data_width} + 4;
-$config{icache}{icache_data_cell}   = "ram_$config{icache}{icache_data_depth}x$config{icache}{icache_fdata_width}";
-$config{icache}{icache_tag_cell}    = "ram_$config{icache}{icache_tag_depth}x21";
-}
-$config{pic}{pic_total_int_plus1} = $config{pic}{pic_total_int} + 1;
-# Defines with explicit values in the macro name
-$config{dccm}{"dccm_num_banks_$config{dccm}{dccm_num_banks}"} = "";
-$config{dccm}{"dccm_size_$config{dccm}{dccm_size}"} = "";
-
-# If ICCM offset not explicitly provided, align to TOP of the region
-if ($top_align_iccm && ($config{iccm}{iccm_offset} eq $iccm_offset) && ($config{iccm}{iccm_size} < 32)) {
-    $config{iccm}{iccm_region} = "0xa";
-    print "$self: Setting default iccm region to region $config{iccm}{iccm_region}\n";
-    $config{iccm}{iccm_offset} = sprintf("0x%08x",256*1024*1024-size($config{iccm}{iccm_size}));
-    print "$self: Aligning default iccm offset to top of region @ $config{iccm}{iccm_offset}\n";
-}
-$config{iccm}{iccm_sadr} = (hex($config{iccm}{iccm_region})<<28) +
-                           (hex($config{iccm}{iccm_offset}));
-$config{iccm}{iccm_sadr} = sprintf("0x%08x", $config{iccm}{iccm_sadr});
-
-$config{iccm}{iccm_eadr} = (hex($config{iccm}{iccm_region})<<28) +
-                           (hex($config{iccm}{iccm_offset})) + size($config{iccm}{iccm_size})-1;
-$config{iccm}{iccm_eadr} = sprintf("0x%08x", $config{iccm}{iccm_eadr});
-
-$config{iccm}{iccm_reserved} = sprintf("0x%x", ($config{iccm}{iccm_size}>30)? 4096 : ($config{iccm}{iccm_size}*1024)/4);
-
-$config{iccm}{iccm_bits}       = 10 + log2($config{iccm}{iccm_size});
-$config{iccm}{iccm_bank_bits}  = log2($config{iccm}{iccm_num_banks});  //-1;
-$config{iccm}{iccm_index_bits} = $config{iccm}{iccm_bits} - $config{iccm}{iccm_bank_bits} - 2;   # always 4 bytes
-$config{iccm}{iccm_rows}       = 2**$config{iccm}{iccm_index_bits};
-$config{iccm}{iccm_data_cell}  = "ram_$config{iccm}{iccm_rows}x39";
-
-$config{iccm}{iccm_bank_hi}        = 2+$config{iccm}{iccm_bank_bits}-1;
-$config{iccm}{iccm_bank_index_lo}  = 1+$config{iccm}{iccm_bank_hi};
-
-# Defines with explicit values in the macro name
-$config{iccm}{"iccm_num_banks_$config{iccm}{iccm_num_banks}"} = "";
-$config{iccm}{"iccm_size_$config{iccm}{iccm_size}"} = "";
-
-# Track used regions
-
-$regions_used{hex($config{iccm}{iccm_region})} = 1;
-$regions_used{hex($config{dccm}{dccm_region})} = 1;
-$regions_used{hex($config{pic}{pic_region})} = 1;
-$regions_used{hex($config{reset_vec})>>28} = 1;
-
-# Find an unused region for serial IO
-for (my $rgn = 15;$rgn >= 0; $rgn--) {
-    if (($rgn != hex($config{iccm}{iccm_region})) &&
-        ($rgn != hex($config{dccm}{dccm_region})) &&
-        ($rgn != (hex($config{pic}{pic_region})))) {
-        $config{memmap}{serialio} = ($rgn << 28) + (22<<18);
-        $regions_used{$rgn} = 1;
-        last;
-    }
-}
-
-$config{memmap}{serialio} = sprintf("0x%08x", $config{memmap}{serialio});
-
-# Find an unused region for external data
-for (my $rgn = 15;$rgn >= 0; $rgn--) {
-    if (($rgn != hex($config{iccm}{iccm_region})) &&
-        ($rgn != hex($config{dccm}{dccm_region})) &&
-        ($rgn != (hex($config{memmap}{serialio})>>28)) &&
-        ($rgn != (hex($config{pic}{pic_region})))) {
-        $config{memmap}{external_data} = ($rgn << 28) + (22<<18);
-        $regions_used{$rgn} = 1;
-        last;
-    }
-}
-$config{memmap}{external_data} = sprintf("0x%08x", $config{memmap}{external_data});
-#
-
-# Unused region for second data
-for (my $rgn = 15;$rgn >= 0; $rgn--) {
-    if (($rgn != hex($config{iccm}{iccm_region})) &&
-        ($rgn != hex($config{dccm}{dccm_region})) &&
-        ($rgn != (hex($config{memmap}{serialio})>>28)) &&
-        ($rgn != (hex($config{memmap}{external_data})>>28)) &&
-        ($rgn != (hex($config{pic}{pic_region})))) {
-        $config{memmap}{external_data_1} = ($rgn << 28);
-        $regions_used{$rgn} = 1;
-        last;
-    }
-}
-$config{memmap}{external_data_1} = sprintf("0x%08x", $config{memmap}{external_data_1});
-
-
-#$config{memmap}{consoleio} = hex($config{memmap}{serialio}) + 0x100;
-#$config{memmap}{consoleio} = sprintf("0x%x", $config{memmap}{consoleio});
-
-# Find an unused region for debug_sb_memory data
-for (my $rgn = 15;$rgn >= 0; $rgn--) {
-    if (($rgn != hex($config{iccm}{iccm_region})) &&
-        ($rgn != hex($config{dccm}{dccm_region})) &&
-        ($rgn != (hex($config{memmap}{serialio})>>28)) &&
-        ($rgn != (hex($config{memmap}{external_data})>>28)) &&
-        ($rgn != (hex($config{memmap}{external_data_1})>>28)) &&
-        ($rgn != (hex($config{pic}{pic_region})))) {
-        $config{memmap}{debug_sb_mem} = ($rgn << 28) + (22<<18);
-        $regions_used{$rgn} = 1;
-        last;
-    }
-}
-$config{memmap}{debug_sb_mem} = sprintf("0x%08x", $config{memmap}{debug_sb_mem});
-
-
-# Create the memory map hole for random testing
-# Only do this if masks are not enabled already
-if (hex($config{protection}{data_access_enable0}) > 0 ||
-    hex($config{protection}{data_access_enable1}) > 0 ||
-    hex($config{protection}{data_access_enable2}) > 0 ||
-    hex($config{protection}{data_access_enable3}) > 0 ||
-    hex($config{protection}{data_access_enable4}) > 0 ||
-    hex($config{protection}{data_access_enable5}) > 0 ||
-    hex($config{protection}{data_access_enable6}) > 0 ||
-    hex($config{protection}{data_access_enable7}) > 0 ||
-    hex($config{protection}{inst_access_enable0}) > 0 ||
-    hex($config{protection}{inst_access_enable1}) > 0 ||
-    hex($config{protection}{inst_access_enable2}) > 0 ||
-    hex($config{protection}{inst_access_enable3}) > 0 ||
-    hex($config{protection}{inst_access_enable4}) > 0 ||
-    hex($config{protection}{inst_access_enable5}) > 0 ||
-    hex($config{protection}{inst_access_enable6}) > 0 ||
-    hex($config{protection}{inst_access_enable7}) > 0 ||
-    $config{memmap}{external_mem_hole} eq "default disabled"){
-    delete($config{memmap}{external_mem_hole}) ;
-} else {
-    # Unused region to create a memory map hole, if not already specified
-    if ($config{memmap}{external_mem_hole} eq 'derived, overridable') {
-        for (my $rgn = 15;$rgn >= 0; $rgn--) {
-            if (!defined($regions_used{$rgn})) {
-                $config{memmap}{external_mem_hole} = ($rgn << 28);
-                $regions_used{$rgn} = 1;
-                last;
-            }
-        }
-    } else {
-        my $rgn = hex($config{memmap}{external_mem_hole})>>28;
-        $config{memmap}{external_mem_hole} = ($rgn << 28);
-        $regions_used{$rgn} =1;
-    }
-    my $hreg = $config{memmap}{external_mem_hole}>>28;
-    $config{protection}{data_access_addr0} = sprintf("0x%x", (($hreg^8)&8)<<28);
-    $config{protection}{data_access_mask0} = "0x7fffffff";
-    $config{protection}{data_access_addr1} = sprintf("0x%x", ($hreg&8) << 28 |(($hreg^4)&4)<<28);
-    $config{protection}{data_access_mask1} = "0x3fffffff";
-    $config{protection}{data_access_addr2} = sprintf("0x%x", ($hreg&12) <<28 | (($hreg^2)&2) <<28);
-    $config{protection}{data_access_mask2} = "0x1fffffff";
-    $config{protection}{data_access_addr3} = sprintf("0x%x", ($hreg&14) << 28 |(($hreg^1)&1)<<28);
-    $config{protection}{data_access_mask3} = "0x0fffffff";
-    $config{protection}{data_access_enable0} = "1";
-    $config{protection}{data_access_enable1} = "1";
-    $config{protection}{data_access_enable2} = "1";
-    $config{protection}{data_access_enable3} = "1";
-    $config{protection}{inst_access_addr0} = sprintf("0x%x", (($hreg^8)&8)<<28);
-    $config{protection}{inst_access_mask0} = "0x7fffffff";
-    $config{protection}{inst_access_addr1} = sprintf("0x%x", ($hreg&8) << 28 |(($hreg^4)&4)<<28);
-    $config{protection}{inst_access_mask1} = "0x3fffffff";
-    $config{protection}{inst_access_addr2} = sprintf("0x%x", ($hreg&12) <<28 | (($hreg^2)&2) <<28);
-    $config{protection}{inst_access_mask2} = "0x1fffffff";
-    $config{protection}{inst_access_addr3} = sprintf("0x%x", ($hreg&14) << 28 |(($hreg^1)&1)<<28);
-    $config{protection}{inst_access_mask3} = "0x0fffffff";
-    $config{protection}{inst_access_enable0} = "1";
-    $config{protection}{inst_access_enable1} = "1";
-    $config{protection}{inst_access_enable2} = "1";
-    $config{protection}{inst_access_enable3} = "1";
-
-    $config{memmap}{external_mem_hole} = sprintf("0x%08x", $config{memmap}{external_mem_hole});
-}
-
-#Define 5 unused regions for used in TG
-
-my $unrg = 0;
-foreach my $unr (reverse(0 .. 15)) {
-    if (!defined($regions_used{$unr})) {
-        $config{memmap}{"unused_region$unrg"} = sprintf("0x%08x",($unr << 28));
-        $regions_used{$unr} = 1;
-        $unrg++;
-    }
-}
-
-if ($target eq "baseline") {
-    $config{reset_vec} = $config{iccm}{iccm_sadr};
-    $config{testbench}{magellan} = 1;
-    print "$self: Setting reset_vec = ICCM start address for Baseline\n";
-}
-
-
-# Output bit-width specifiers for these variables
-our %widths = (
-        "dccm_region"   => "4",
-        "dccm_offset"   => "28",
-        "dccm_sadr"     => "32",
-        "dccm_eadr"     => "32",
-        "pic_region"    => "4",
-        "pic_offset"    => "10",
-        "pic_base_addr" => "32",
-        "iccm_region"   => "4",
-        "iccm_offset"   => "10",
-        "iccm_sadr"     => "32",
-        "iccm_eadr"     => "32",
-        "bus_prty_default" => "2",
-        "inst_access_enable0" => "1",
-        "inst_access_enable1" => "1",
-        "inst_access_enable2" => "1",
-        "inst_access_enable3" => "1",
-        "inst_access_enable4" => "1",
-        "inst_access_enable5" => "1",
-        "inst_access_enable6" => "1",
-        "inst_access_enable7" => "1",
-        "data_access_enable0" => "1",
-        "data_access_enable1" => "1",
-        "data_access_enable2" => "1",
-        "data_access_enable3" => "1",
-        "data_access_enable4" => "1",
-        "data_access_enable5" => "1",
-        "data_access_enable6" => "1",
-        "data_access_enable7" => "1",
-);
-#}}}
-
-print "\nbrqrv configuration for target=$target\n\n";
-dump_define("","", \%config,[]);
-
-
-#print Dumper(\%config);
-#print Dumper(\%width);
-
-#print Dumper(\%sets);
-#print Dumper(\%unsets);
-
-# Sanity checks
-check_addr_align("dccm", hex($config{dccm}{dccm_sadr}), $config{dccm}{dccm_size}*1024);
-check_addr_align("iccm", hex($config{iccm}{iccm_sadr}), $config{iccm}{iccm_size}*1024);
-check_addr_align("pic", hex($config{pic}{pic_base_addr}), $config{pic}{pic_size}*1024);
-
-#   Prevent overlap of internal memories
-if ((hex($config{pic}{pic_region}) == hex($config{iccm}{iccm_region})) && (hex($config{pic}{pic_offset}) == hex($config{iccm}{iccm_offset}))) {
-    die "$self: ERROR! PIC and ICCM blocks collide (region $config{iccm}{iccm_region}, offset $config{pic}{pic_offset})!\n";
-}
-if ((hex($config{pic}{pic_region}) == hex($config{dccm}{dccm_region})) && (hex($config{pic}{pic_offset}) == hex($config{dccm}{dccm_offset}))) {
-    die "$self: ERROR! PIC and DCCM blocks collide (region $config{dccm}{dccm_region}, offset $config{pic}{pic_offset})!\n";
-}
-if ((hex($config{iccm}{iccm_region}) == hex($config{dccm}{dccm_region})) && (hex($config{iccm}{iccm_offset}) == hex($config{dccm}{dccm_offset}))) {
-    die "$self: ERROR! ICCM and DCCM blocks collide (region $config{iccm}{iccm_region}, offset $config{dccm}{dccm_offset})!\n";
-}
-
-#printf( "axi4 %s\n",$config{"testbench"}{"build_axi4"});
-#printf( "ahb_lite %s\n",$config{"testbench"}{"build_ahb_lite"});
-#printf( "axi_native %s\n",$config{"testbench"}{"build_axi_native"});
-
-if( $target eq "eb1_formal_axi" ) {
-    $config{testbench}{build_axi_native} = 1;
-    $config{testbench}{build_axi4} = 1;
-    print( "\$config{testbench}{build_axi_native} = $config{testbench}{build_axi_native} \n" );
-    print( "\$config{testbench}{build_axi4      } = $config{testbench}{build_axi4      } \n" );
-}
-
-
-if (($config{testbench}{build_ahb_lite} == 1)) {
-    delete $config{testbench}{build_axi4};
-    $config{testbench}{build_axi_native}=1;
-    $verilog_parms{build_axi4} = 0;
-}
-elsif (($config{testbench}{build_axi4} == 1)) {
-    $config{testbench}{build_axi_native}=1;
-    delete $config{testbench}{build_ahb_lite};
-    $verilog_parms{build_ahb_lite} = 0;
-}
-elsif (($config{testbench}{build_axi_native} == 1)) {
-    die("illegal to set build_axi_native w/out build_axi4");
-}
-
-#printf( "axi4 %s\n",$config{"testbench"}{"build_axi4"});
-#printf( "ahb_lite %s\n",$config{"testbench"}{"build_ahb_lite"});
-#printf( "axi_native %s\n",$config{"testbench"}{"build_axi_native"});
-
-
-# Over-ride MFDC reset value for AXI.
-# Disable Bus barrier and 64b for AXI
-if (defined($config{"testbench"}{"build_axi_native"}) && ($config{"testbench"}{"build_axi_native"} ne "0")) {
-    if (! (defined($config{testbench}{build_ahb_lite}) && $config{testbench}{build_ahb_lite} ne "0")) {
-        $config{csr}{mfdc}{reset} = "0x00070040" if exists $config{csr}{mfdc};
-    }
-
-}
-
-
-
-# parm processing before any values are deleted from the hash
-
-delete $config{core}{fpga_optimize} if ($config{core}{fpga_optimize} == 0);
-
-
-print "$self: Writing $tdfile\n";
-print "$self: Writing $paramfile\n";
-open (FILE1, ">$tdfile") || die "Cannot open $tdfile for writing $!\n";
-open (FILE2, ">$paramfile") || die "Cannot open $paramfile for writing $!\n";
-print_header("//");
-gen_define("","`", \%config, \%verilog_parms, \@verilog_vars);
-dump_parms(\%verilog_parms);
-close FILE1;
-close FILE2;
-
-$config{config_key}="32'hdeadbeef";
-
-# end parms
-
-# deletes
-if (($load_to_use_plus1==0) && !grep(/load_to_use_plus1/, @sets)) { delete $config{"core"}{"load_to_use_plus1"}; }
-if (($iccm_enable==0) && !grep(/iccm_enable/, @sets))             { delete $config{"iccm"}{"iccm_enable"}; }
-
-
-# new code to handle the -set=parm=0 value correctly for common_defines.vh
-$c=$config{core}{load_to_use_plus1}; if ($c==0 && !grep(/load_to_use_plus1=1/, @sets))    { delete $config{"core"}{"load_to_use_plus1"}; }
-$c=$config{core}{opensource};        if ($c==0 && !grep(/opensource=1/, @sets))           { delete $config{"core"}{"opensource"}; }
-$c=$config{core}{verilator};         if ($c==0 && !grep(/verilator=1/, @sets))            { delete $config{"core"}{"verilator"}; }
-$c=$config{core}{div_new};           if ($c==0 && !grep(/div_new=1/, @sets))              { delete $config{"core"}{"div_new"}; }
-# not needed
-#$c=$config{core}{div_bit};           if ($c==0 && !grep(/div_bit=1/, @sets))              { delete $config{"core"}{"div_bit"}; }
-$c=$config{iccm}{iccm_enable};       if ($c==0 && !grep(/iccm_enable=1/, @sets))          { delete $config{"iccm"}{"iccm_enable"}; }
-$c=$config{btb}{btb_enable};         if ($c==0 && !grep(/btb_enable=1/, @sets))           { delete $config{"btb"}{"btb_enable"}; }
-$c=$config{dccm}{dccm_enable};       if ($c==0 && !grep(/dccm_enable=1/, @sets))          { delete $config{"dccm"}{"dccm_enable"}; }
-$c=$config{icache}{icache_waypack};  if ($c==0 && !grep(/icache_waypack=1/, @sets))       { delete $config{"icache"}{"icache_waypack"}; }
-$c=$config{icache}{icache_enable};   if ($c==0 && !grep(/icache_enable=1/, @sets))        { delete $config{"icache"}{"icache_enable"}; }
-
-$c=$config{icache}{icache_2banks};   if ($c==0 && !grep(/icache_2banks=1/, @sets))        { delete $config{"icache"}{"icache_2banks"}; }
-$c=$config{pic}{pic_2cycle};         if ($c==0 && !grep(/pic_2cycle=1/, @sets))           { delete $config{"pic"}{"pic_2cycle"}; }
-
-$c=$config{btb}{btb_fullya};         if ($c==0 && !grep(/btb_fullya=1/, @sets))           { delete $config{"btb"}{"btb_fullya"}; }
-
-
-
-if ($target eq "default") {
-}
-elsif (($config{"testbench"}{"build_axi4"} == 1)) {
-    delete $config{"testbench"}{"build_ahb_lite"};
-    delete $config{"testbench"}{"build_axi_native_ahb"};
-}
-elsif (($config{"testbench"}{"build_ahb_lite"} == 1)) {
-    delete $config{"testbench"}{"build_axi4"};
-    delete $config{"testbench"}{"build_axi_native"};
-    delete $config{"testbench"}{"build_axi_native_ahb"};
-}
-elsif (($config{"testbench"}{"build_axi_native_ahb"} == 1)) {
-    delete $config{"testbench"}{"build_axi4"};
-    delete $config{"testbench"}{"build_axi_native_ahb"};
-}
-elsif (($config{"testbench"}{"build_axi_native"} == 1)) {
-    die("illegal to set build_axi_native w/out build_axi4");
-}
-else {
-    delete $config{"testbench"}{"build_ahb_lite"};
-    delete $config{"testbench"}{"build_axi4"};
-    delete $config{"testbench"}{"build_axi_native"};
-    delete $config{"testbench"}{"build_axi_native_ahb"};
-}
-
-
-
-
-
-
-##################### Add dumper routines here ##########################
-
-
-#
-# Dump Verilog $RV_ROOT/configs/common_defines.vh
-print "$self: Writing $vlogfile\n";
-open (FILE, ">$vlogfile") || die "Cannot open $vlogfile for writing $!\n";
-print_header("//");
-print FILE "`define RV_ROOT \"".$ENV{RV_ROOT}."\"\n";
-gen_define("","`", \%config, "", \@verilog_vars);
-close FILE;
-
-print "$self: Writing $asmfile\n";
-open (FILE, ">$asmfile") || die "Cannot open $asmfile for writing $!\n";
-# Dump ASM/C   $RV_ROOT/diags/env/defines.h
-print_header("//");
-gen_define("","#", \%config, "", \@asm_vars, \@asm_overridable);
-close FILE;
-
-# add `define PHYSICAL 1
-# remove `undef RV_ICCM_ENABLE
-
-my $pddata='
-`include "common_defines.vh"
-`undef RV_ASSERT_ON
-`undef TEC_RV_ICG
-`define TEC_RV_ICG sky130_fd_sc_hd__dlclkp_1
-`define RV_PHYSICAL 1
-';
-
-
-print "$self: Writing $pdfile\n";
-open (FILE, ">$pdfile") || die "Cannot open $pdfile for writing $!\n";
-# Dump PD   $RV_ROOT/$RV_ROOT/configs/pd_defines.vh
-print_header("//");
-printf (FILE "$pddata");
-close FILE;
-
-print "$self: Writing $whisperfile\n";
-dump_whisper_config(\%config, $whisperfile);
-
-
-# PIC address map based on config
-`$ENV{RV_ROOT}/tools/picmap -t $config{pic}{pic_total_int} > $build_path/pic_map_auto.h`;
-
-# Perl vars for use by scripts
-print "$self: Writing $perlfile\n";
-open (FILE, ">$perlfile") || die "Cannot open $perlfile for writing $!\n";
-print_header("# ");
-print FILE "# To use this in a perf script, use 'require \$RV_ROOT/configs/config.pl'\n";
-print FILE "# Reference the hash via \$config{name}..\n\n\n";
-print FILE Data::Dumper->Dump([\%config], [ qw(*config) ]);
-print FILE "1;\n";
-close FILE;
-
-
-# Default linker script
-gen_default_linker_script();
-
-# Done ##################################################################
-#
-exit(0);
-
-# ######################   Helper subroutines ##########################{{{
-# Convert size in kilobytes to real value
-
-sub size {#{{{
-    my $ksize = shift;
-    my $size = sprintf("%d",$ksize*1024);
-    return $size;
-}#}}}
-
-# Print the defines with prefix
-sub print_define {#{{{
-    my ($sym, $key,$value, $override) = @_;
-    my $lprefix = $prefix if ($key !~ /$no_prefix/);
-    if ($sym eq "`") {
-        if (defined($widths{$key})) {
-            $value =~ s/^(0x)*/$widths{$key}'h/;
-        } else {
-            $value =~ s/^0x/'h/;
-        }
-    }
-    if ($defines_case eq "U") {
-        print FILE "${sym}ifndef \U$lprefix$key\E\n" if ($override);
-        print FILE "${sym}define \U$lprefix$key\E $value\n";
-        print FILE "${sym}endif\n" if ($override);
-    } else {
-        print FILE "${sym}ifndef $lprefix$key\n" if ($override);
-        print FILE "${sym}define $lprefix$key $value\n";
-        print FILE "${sym}endif\n" if ($override);
-    }
-}#}}}
-
-# print header
-sub print_header {#{{{
-    my $cs = shift;
-    print FILE "$cs NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE\n";
-    print FILE "$cs This is an automatically generated file by $ENV{USER} on ",`date`;
-    print FILE "$cs\n$cs cmd:    $self @argv_orig \n";
-    print FILE "$cs\n";
-}#}}}
-
-# evaluate derivations
-sub derive {#{{{
-    my $eqn = shift;
-    return sprintf("0x%x", eval($eqn));
-}#}}}
-
-# traverse the database and extract the key/value pair
-sub gen_define {#{{{
-    my $matched = shift;
-    my $prefix = shift;
-    my $hash = @_[0];
-    my $parms = @_[1];
-    my @printvars = @{@_[2]};
-    my @overridable = @{@_[3]} if defined @_[3];
-    my $re = join("|",@printvars);
-    $re = qr/($re)/;
-    #print Dumper($hash);
-    foreach my $key (keys %$hash) {
-        next if $key eq "csr";
-        #print "looking at $key:$matched ($re)\n";
-        if (defined($unsets{$key})) {
-            print "$self:unsetting $key\n";
-            delete($config{$key});
-            if ($parms and defined($parms->{$key})) {
-                $parms->{$key} = 0;
-            }
-            next
-        }
-        if (defined($sets{$key}) && $sets{$key} ne $$hash{$key}) {
-            if (($$hash{$key} =~ /derived/i) && ($$hash{$key} !~ /overridable/i)) {
-                die ("$self: ERROR! $key is a derived and non-overridable parameter!\n");
-            } else {
-                print "$self: Overriding $key value $$hash{$key} with $sets{$key}\n";
-                $$hash{$key} = $sets{$key};
-            }
-        }
-        my $value = $$hash{$key};
-        if (ref($value) eq "HASH") {
-            if ($key =~ /$re/) {
-                $matched = 1;
-            }
-            gen_define($matched,$prefix, $value, $parms, \@printvars, \@overridable);
-            $matched = 0;
-        } elsif (ref($value) eq "ARRAY") {
-            # print "$key : @{$value}\n";
-             $matched = 0;
-        } else {
-            if ($matched eq "1" || $key =~ /$re/) {
-                if($value =~ /derive\(.*\)/o) {
-                    $value = eval($value);
-                }
-                my $override = grep(/^$key$/, @overridable);
-                print_define($prefix, $key, $value, $override) if ($value !~ /derived/);
-                #printf("$key = $value\n");
-                if ($parms and defined($parms->{$key})) {
-                    $value=decimal($value);
-                    #printf("verilog parm $key = $value %s\n",$parms->{$key});
-                    $value=d2b($key,$value,$parms->{$key});
-                    #printf("verilog parm $key = $value\n");
-                    $parms->{$key}=$value;
-                }
-            }
-        }
-    }
-}#}}}
-
-sub dump_define {#{{{
-    my $matched = shift;
-    my $prefix = shift;
-    my $hash = @_[0];
-    my @printvars = @{@_[1]};
-    my @overridable = @{@_[2]} if defined @_[2];
-    my $re = join("|",@printvars);
-    $re = qr/($re)/;
-    #print Dumper($hash);
-    foreach my $key (keys %$hash) {
-        next if $key eq "csr";
-        next unless $matched || grep(/^$key$/,@dvars);
-        #print "looking at $key:$matched ($re)\n";
-        if (defined($unsets{$key})) {
-            print "$self:unsetting $key\n";
-            delete($config{$key});
-            next
-        }
-        if (defined($sets{$key}) && $sets{$key} ne $$hash{$key}) {
-            if (($$hash{$key} =~ /derived/i) && ($$hash{$key} !~ /overridable/i)) {
-                die ("$self: ERROR! $key is a derived and non-overridable parameter!\n");
-            } else {
-                print "$self: Overriding $key value $$hash{$key} with $sets{$key}\n";
-                $$hash{$key} = $sets{$key};
-            }
-        }
-        my $value = $$hash{$key};
-        if (ref($value) eq "HASH") {
-            if ($key =~ /$re/) {
-                $matched = 1;
-            }
-            dump_define($matched,$prefix, $value, \@printvars, \@overridable);
-            $matched = 0;
-        } elsif (ref($value) eq "ARRAY") {
-            # print "$key : @{$value}\n";
-             $matched = 0;
-        } else {
-            if ($matched eq "1" || $key =~ /$re/) {
-                if($value =~ /derive\(.*\)/o) {
-                    $value = eval($value);
-                }
-                printf ("brqrv: %-30s = $value\n",$key) if ($value !~ /derived/);
-            }
-        }
-    }
-}#}}}
-
-# Perform cmd line set/unset ############################################{{{
-sub map_set_unset {
-    if (scalar(@sets)) {
-        print "$self: Set(s) requested : @sets\n";
-        foreach (@sets) {
-            my ($key,$value) = m/(\w+)=*(\w+)*/o;
-            $value = 1 if (!defined($value));
-            $sets{$key} = $value;
-        }
-    }
-    if (scalar(@unsets)) {
-        print "$self: Unset(s) requested : @unsets\n";
-        foreach (@unsets) {
-            $unsets{$_} = 1;
-        }
-    }
-} #}}}
-#}}}
-
-
-# If arg looks like a hexadecimal string, then convert it to decimal.#{{{
-# Otherwise, return arg.
-sub decimal {
-    my ($x) = @_;
-    return hex($x)  if $x =~ /^0x/o;
-    return $x;
-}#}}}
-
-
-# Collect memory protection specs (array of address pairs) in the given
-# resutls array. Tag is either "data" or "inst".
-sub collect_mem_protection {#{{{
-    my ($tag, $config, $results) = @_;
-    return unless exists $config{protection};
-
-    my $prot = $config{protection};
-
-    my $enable_tag = $tag . "_access_enable";
-    my $addr_tag = $tag . "_access_addr";
-    my $mask_tag = $tag . "_access_mask";
-
-    foreach my $key (keys %{$prot}) {
-        next unless $key =~ /^$enable_tag(\d+)$/;
-        my $ix = $1;
-
-        my $enable = $prot->{$key};
-        if ($enable !~ /[01]$/) {
-            warn("Invalid value for protection entry $key: $enable\n");
-            next;
-        }
-
-        next unless ($enable eq "1" or $enable eq "1'b1");
-
-        if (! exists $prot->{"$addr_tag$ix"}) {
-            warn("Missing $addr_tag$ix\n");
-            next;
-        }
-
-        if (! exists $prot->{"$mask_tag$ix"}) {
-            warn("Missing $mask_tag$ix\n");
-            next;
-        }
-
-        my $addr = $prot->{"$addr_tag$ix"};
-        my $mask = $prot->{"$mask_tag$ix"};
-
-        if ($addr !~ /^0x[0-9a-fA-F]+$/) {
-            warn("Invalid $addr_tag$ix: $addr\n");
-            next;
-        }
-
-        if ($mask !~ /^0x[0-9a-fA-F]+$/) {
-            warn("Invalid $mask_tag$ix: $mask\n");
-            next;
-        }
-
-        if ((hex($addr) & hex($mask)) != 0) {
-            warn("Protection mask bits overlap address bits in $tag mask $mask and addr $addr\n");
-        }
-
-        if ($mask !~ /^0x0*[137]?f*$/) {
-            warn("Protection  $tag mask ($mask) must have all its one bits to the right of its zero bits\n");
-            next;
-        }
-
-        my $start = hex($addr) & ~hex($mask) & 0xffffffff;
-        my $end = (hex($addr) | hex($mask)) & 0xffffffff;
-
-        $start = sprintf("0x%08x", $start);
-        $end = sprintf("0x%08x", $end);
-
-        push(@{$results}, [ $start, $end ]);
-    }
-}#}}}
-
-
-# Collect the memory mapped registers associated with the pic (platform
-# interrup controller) to include in the whisper.json file.
-sub collect_mem_mapped_regs {#{{{
-    my ($pic, $results) = @_;
-    my $default_mask = 0;
-    $results->{default_mask} = $default_mask;
-    my $addr = hex($pic->{pic_region})*256*1024*1024 + hex($pic->{pic_offset});
-    $results->{address} = sprintf("0x%x", $addr);
-    $results->{size} = sprintf("0x%x", $pic->{pic_size}*1024);
-
-    my @names = qw ( mpiccfg meipl meip meie meigwctrl meigwclr meidels );
-    $results->{registers} = {};
-    foreach my $name (@names) {
-        my $tag = "pic_${name}_offset";
-        next unless exists $pic->{$tag};
-        my %item;
-        my $offset = hex($pic->{$tag});
-        $offset += 4  if ($name ne 'mpiccfg' and $name ne 'meip');
-        $item{address} = sprintf("0x%x", $addr + $offset);
-        $item{mask} = $pic->{"pic_${name}_mask"};
-        $item{count} = $pic->{"pic_${name}_count"};
-        $results->{registers}{$name} = \%item;
-    }
-}#}}}
-
-
-sub dump_whisper_config{#{{{
-    my ($config, $path) = @_;
-
-    open(my $fh, ">", "$path") or die ("Failed to open $path for writing: $!\n");
-
-    # Put the configuration parameters relevant to whisper into a hash
-    # in preparation for a JSON dump.
-    my %jh; # Json hash
-
-    # Collect top-level integer entries.
-    foreach my $tag (qw( harts xlen )) {
-        $jh{$tag} = $config{$tag} + 0 if exists $config{$tag};
-    }
-
-    # Collect top-level string/hex entries.
-    foreach my $tag (qw ( reset_vec nmi_vec num_mmode_perf_regs max_mmode_perf_event
-                     even_odd_trigger_chains)) {
-        $jh{$tag} = $config{$tag} if exists $config{$tag};
-    }
-
-    # Collect memory map configs.
-    my (@inst_mem_prot, @data_mem_prot);
-    collect_mem_protection("inst", $config, \@inst_mem_prot);
-    collect_mem_protection("data", $config, \@data_mem_prot);
-    $jh{memmap}{inst} = [@inst_mem_prot] if @inst_mem_prot;
-    $jh{memmap}{data} = [@data_mem_prot] if @data_mem_prot;
-    $config{memmap}{consoleio} = $config{memmap}{serialio} if exists $config{memmap}{serialio};
-    foreach my $tag (qw ( size page_size serialio consoleio)) {
-        $jh{memmap}{$tag} = $config{memmap}{$tag} if exists $config{memmap}{$tag};
-    }
-
-    # Collect load/store-error rollback parameter.
-    if (exists $config{testbench} and exists $config{testbench}{sterr_rollback}) {
-        $jh{store_error_rollback} = $config{testbench}{sterr_rollback};
-    }
-    if (exists $config{testbench} and exists $config{testbench}{lderr_rollback}) {
-        $jh{load_error_rollback} = $config{testbench}{lderr_rollback};
-    }
-
-    # Collect dccm configs
-    if (exists $config{dccm} and $config{dccm}{dccm_enable}) {
-        $jh{dccm}{region} = $config{dccm}{dccm_region};
-        $jh{dccm}{size} = 1024*decimal($config{dccm}{dccm_size}); # From 1k to bytes
-        $jh{dccm}{offset} = $config{dccm}{dccm_offset};
-
-        $jh{dccm}{size} = sprintf("0x%x", $jh{dccm}{size});
-    }
-
-    # Collect icccm configs.
-    if (exists $config{iccm} and $config{iccm}{iccm_enable}) {
-        $jh{iccm}{region} = $config{iccm}{iccm_region};
-        $jh{iccm}{size} = 1024*decimal($config{iccm}{iccm_size}); # From 1k to bytes
-        $jh{iccm}{offset} = $config{iccm}{iccm_offset};
-
-        $jh{iccm}{size} = sprintf("0x%x", $jh{iccm}{size});
-    }
-
-    # Collect CSRs
-    $jh{csr} = $config{csr} if exists $config{csr};
-
-    # Collect CSRs not included in verilog.
-    my @removed_csrs;
-    if (! $config{core}{timer_legal_en}) {
-        push(@removed_csrs, $_) for qw (mitcnt0 mitbnd0 mitctl0
-                                        mitcnt1 mitbnd1 mitctl1);
-    }
-
-    # Collect fast interrupt enable.
-    if (exists $config{core}{fast_interrupt_redirect}) {
-        $jh{fast_interrupt_redirect} = $config{core}{fast_interrupt_redirect};
-        # meicpct CSR is not built if fast interrupt.
-        push(@removed_csrs, 'meicpct') if $jh{fast_interrupt_redirect};
-    }
-
-    # Remove CSRs not configured into verilog.
-    delete $jh{csr}{$_} foreach @removed_csrs;
-
-    # Collect zb extension configs
-    $jh{enable_zbb} = $config{core}{bitmanip_zbb};
-    $jh{enable_zbs} = $config{core}{bitmanip_zbs};
-    $jh{enable_zba} = $config{core}{bitmanip_zba};
-    $jh{enable_zbc} = $config{core}{bitmanip_zbc};
-    $jh{enable_zbe} = $config{core}{bitmanip_zbe};
-    $jh{enable_zbf} = $config{core}{bitmanip_zbf};
-    $jh{enable_zbp} = $config{core}{bitmanip_zbp};
-    $jh{enable_zbr} = $config{core}{bitmanip_zbr};
-
-    # Collect pic configs.
-    if (exists $config{pic}) {
-        my %mem_mapped;
-        collect_mem_mapped_regs($config{pic}, \%mem_mapped);
-        $jh{'memory_mapped_registers'} = \%mem_mapped;
-    }
-
-    # Collect performance events. Uncomment when RTL ready.
-    if (exists $config{perf_events}) {
-        $jh{mmode_perf_events} = $config{perf_events};
-    }
-
-    # Make atomic instructions illegal outside of DCCM.
-    $jh{amo_illegal_outside_dccm} = "true";
-
-    # Make ld/st instructions trigger misaligned exceptions if base
-    # address (value in rs1) and effective address refer to regions of
-    # different types.
-    $jh{effective_address_compatible_with_base} = "true";
-
-    # Collect triggers.
-    $jh{triggers} = $config{triggers} if exists $config{triggers};
-
-    # Dump JSON config file.
-    my $json = JSON->new->allow_nonref;
-    my $text = $json->pretty->encode(\%jh);
-    print($fh $text);
-
-    close $fh;
-}#}}}
-
-
-# Checker for iccm/dccm/pic sub-region address alignment. Address must be a multiple
-# of size  or next higher power of 2 if size is not a power of 2.
-sub check_addr_align {#{{{
-    my ($section, $addr, $size) = @_;
-
-    die("Invalid $section size: $size\n")  if $size <= 0;
-
-    my $log_size = log2($size);
-    my $p2 = 1 << $log_size;
-    $size = 2*$p2  if $size != $p2;
-
-    if (($addr % $size) != 0) {
-        printf("Address of $section area(0x%x) is not a multiple of its size (0x%x)\n",
-               $addr, $size);
-        exit(1);
-    }
-}#}}}
-
-sub log2 {#{{{
-    my ($n) = @_;
-    return log($n)/log(2);
-}#}}}
-
-sub b2d {#{{{
-    my ($v) = @_;
-
-    $v = oct("0b" . $v);
-
-    return($v);
-}#}}}
-
-sub d2b {#{{{
-    my ($key,$v,$LEN) = @_;
-
-    my $repeat;
-
-    $v = sprintf "%b",$v;
-    if (length($v)<$LEN) {
-        $repeat=$LEN-length($v);
-        $v="0"x$repeat.$v;
-    }
-    elsif (length($v)>$LEN) {
-        die("d2b: parm $key value $v > len $LEN");
-    }
-
-    return($v);
-}#}}}
-
-
-sub invalid_mask {#{{{
-    my ($m) = @_;
-
-    if ($m =~ /^0x(0)*([137]?f+)$/) { return(0); }
-
-    return(1);
-}#}}}
-
-
-sub b2h {#{{{
-    my ($bin) = @_;
-
-    # Make input bit string a multiple of 4
-    $bin = substr("0000",length($bin)%4) . $bin if length($bin)%4;
-
-    my ($hex, $nybble) = ("");
-    while (length($bin)) {
-        ($nybble,$bin) = (substr($bin,0,4), substr($bin,4));
-        $nybble = eval "0b$nybble";
-        $hex .= substr("0123456789ABCDEF", $nybble, 1);
-    }
-    return $hex;
-}#}}}
-
-# BHT index is a hash of the GHR and PC_HASH
-sub ghrhash{#{{{
-    my($btb_index_hi,$ghr_size) = @_;
-
-    $btb_size = $btb_index_hi - 1;
-
-    my $ghr_hi = $ghr_size - 1;
-    my $ghr_lo = $btb_size;
-
-    my $ghr_start = "{";
-    if($ghr_size > $btb_size){
-        return  "{ghr[$ghr_hi:$ghr_lo], hashin[$btb_index_hi:2]^ghr[$ghr_lo-1:0]} // cf1";
-    }
-    else {
-        return "{hashin[$ghr_size+1:2]^ghr[$ghr_size-1:0]}// cf2";
-    }
-}#}}}
-
-sub dump_parms {#{{{
-    my ($hash) = @_;
-
-    my ($bvalue, $blen, $upper);
-    printf(FILE1 "typedef struct packed {\n");
-    foreach my $key (sort keys %$hash) {
-        $bvalue=$hash->{$key};
-        $blen=length($bvalue);
-        $upper=$key;
-        $upper=~ tr/a-z/A-Z/;
-        if ($blen==1) {
-            printf(FILE1 "\tbit %-10s $upper;\n");
-        }
-        else {
-            printf(FILE1 "\tbit %-10s $upper;\n",sprintf("[%d:0]",$blen-1));
-        }
-    }
-   printf(FILE1 "} eb1_param_t;\n\n");
-
-    my $bcat="";
-    my $parmcnt=0;
-    foreach my $key (sort keys %$hash) {
-        #printf("// $key = %s\n",$verilog_parms{$key});
-        $bcat.=$hash->{$key};
-        $parmcnt++;
-    }
-
-    my $bvalue="";
-    my $pcnt=0;
-    my $delim=",";
-    my $msb;
-    printf(FILE2 "parameter eb1_param_t pt = '{\n");
-    foreach my $key (sort keys %$hash) {
-        $upper=$key;
-        $upper=~ tr/a-z/A-Z/;
-        $pcnt++;
-        if ($pcnt==$parmcnt) { undef $delim; }
-        if ($hash->{$key} eq "0") { $hash->{$key}="0000"; }
-        $msb=substr($hash->{$key},0,4);  # require upper 4b to be 0
-        if ($msb ne "0000") { die("parameter $upper upper 4b must be 0"); }
-        printf(FILE2 "\t%-22s : %d\'h%-10s $delim\n",$upper,length($hash->{$key}),b2h($hash->{$key}));
-    }
-    printf(FILE2 "}\n");
-
-    printf(FILE2 "// parameter eb1_param_t pt = %d'h%s\n",length($bcat),b2h($bcat));
-
-}#}}}
-
-sub gen_default_linker_script {#{{{
-
-    open (FILE, ">$linkerfile") || die "Cannot open $linkerfile for writing $!\n";
-    print "$self: Writing $linkerfile\n";
-    print FILE "/*\n";
-    print_header();
-
-    my $io = "0xd0580000";
-    $io = $config{memmap}{serialio} if exists $config{memmap}{serialio};
-
-    my $iccm = ""; my $iccm_ctl = "";
-    if (exists $config{iccm} and $config{iccm}{iccm_enable} and $text_in_iccm) {
-        my $sa = $config{iccm}{iccm_sadr}; my $ea = $config{iccm}{iccm_eadr};
-        $iccm = " . = $sa ;";
-        $iccm_ctl = "  . = 0xfffffff0; .iccm.ctl . : { LONG($sa); LONG($ea) }" ;
-    }
-
-    my $sa = $config{memmap}{external_data}; my $dccm_ctl = "";
-    if (exists $config{dccm} and $config{dccm}{dccm_enable}) {
-        $sa = $config{dccm}{dccm_sadr};
-        $dccm_ctl = "  . = 0xfffffff8; .data.ctl : { LONG($sa); LONG(STACK) }" ;
-    }
-    my $data_loc = "  . = $sa ;";
-
-    print FILE "*/\n";
-    print FILE  <<"EOF";
-
-OUTPUT_ARCH( "riscv" )
-ENTRY(_start)
-
-SECTIONS
-{
-  . = $config{reset_vec};
-  .text.init .  : { *(.text.init) }
-  $iccm
-  .text . : { *(.text) }
-  _end = .;
-  . = $io;
-  .data.io .  : { *(.data.io) }
-  $data_loc
-  .data  :  ALIGN(0x100) { *(.*data) *(.rodata*) STACK = ALIGN(16) + 0x0fff; }
-  .bss : { *(.bss) }
-  $iccm_ctl
-  $dccm_ctl
-}
-
-EOF
-    close FILE;
-} #}}}
-
-
diff --git a/verilog/rtl/BrqRV_EB1/configs/brqrv_config_gen.py b/verilog/rtl/BrqRV_EB1/configs/brqrv_config_gen.py
deleted file mode 100644
index 23a8461..0000000
--- a/verilog/rtl/BrqRV_EB1/configs/brqrv_config_gen.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env python3
-from fusesoc.capi2.generator import Generator
-import os
-import shutil
-import subprocess
-import sys
-import tempfile
-if sys.version[0] == '2':
-    devnull = open(os.devnull, 'w')
-else:
-    from subprocess import DEVNULL as devnull
-
-class brqrvConfigGenerator(Generator):
-    def run(self):
-        script_root = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..'))
-        files = [
-            {"configs/snapshots/default/common_defines.vh" : {
-                "copyto"    : "config/common_defines.vh",
-                "file_type" : "systemVerilogSource"}},
-            {"configs/snapshots/default/eb1_pdef.vh" : {
-                "copyto" : "config/eb1_pdef.vh",
-                "file_type" : "systemVerilogSource"}},
-            {"configs/snapshots/default/eb1_param.vh" : {
-                "is_include_file" : True,
-                "file_type" : "systemVerilogSource"}},
-            {"configs/snapshots/default/pic_map_auto.h" : {
-                "is_include_file" : True,
-                "file_type" : "systemVerilogSource"}}]
-
-        tmp_dir = os.path.join(tempfile.mkdtemp(), 'core')
-        shutil.copytree(script_root, tmp_dir)
-
-        cwd = tmp_dir
-
-        env = os.environ.copy()
-        env['RV_ROOT'] = tmp_dir
-        args = ['configs/brqrv.config'] + self.config.get('args', [])
-        rc = subprocess.call(args, cwd=cwd, env=env, stdout=devnull)
-        if rc:
-            exit(1)
-
-        filenames = []
-        for f in files:
-            for k in f:
-                filenames.append(k)
-
-        for f in filenames:
-            d = os.path.dirname(f)
-            if d and not os.path.exists(d):
-                os.makedirs(d)
-            shutil.copy2(os.path.join(cwd, f),f)
-
-        self.add_files(files)
-
-g = brqrvConfigGenerator()
-g.run()
-g.write()
diff --git a/verilog/rtl/BrqRV_EB1/design/BrqRV_EB1.sv b/verilog/rtl/BrqRV_EB1/design/BrqRV_EB1.sv
deleted file mode 100644
index 321d707..0000000
--- a/verilog/rtl/BrqRV_EB1/design/BrqRV_EB1.sv
+++ /dev/null
@@ -1,31597 +0,0 @@
-// performance monitor stuff
-//`ifndef eb1_DEF_SV
-//`define eb1_DEF_SV
-package eb1_pkg;
-
-typedef struct packed {
-                       logic  trace_rv_i_valid_ip;
-                       logic [31:0] trace_rv_i_insn_ip;
-                       logic [31:0] trace_rv_i_address_ip;
-                       logic  trace_rv_i_exception_ip;
-                       logic [4:0] trace_rv_i_ecause_ip;
-                       logic  trace_rv_i_interrupt_ip;
-                       logic [31:0] trace_rv_i_tval_ip;
-                       } eb1_trace_pkt_t;
-
-
-typedef enum logic [3:0] {
-                          NULL     = 4'b0000,
-                          MUL      = 4'b0001,
-                          LOAD     = 4'b0010,
-                          STORE    = 4'b0011,
-                          ALU      = 4'b0100,
-                          CSRREAD  = 4'b0101,
-                          CSRWRITE = 4'b0110,
-                          CSRRW    = 4'b0111,
-                          EBREAK   = 4'b1000,
-                          ECALL    = 4'b1001,
-                          FENCE    = 4'b1010,
-                          FENCEI   = 4'b1011,
-                          MRET     = 4'b1100,
-                          CONDBR   = 4'b1101,
-                          JAL      = 4'b1110,
-                          BITMANIPU = 4'b1111
-                          } eb1_inst_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic wb;
-                       logic [2:0] tag;
-                       logic [4:0] rd;
-                       } eb1_load_cam_pkt_t;
-
-typedef struct packed {
-                       logic pc0_call;
-                       logic pc0_ret;
-                       logic pc0_pc4;
-                       } eb1_rets_pkt_t;
-typedef struct packed {
-                       logic valid;
-                       logic [11:0] toffset;
-                       logic [1:0] hist;
-                       logic br_error;
-                       logic br_start_error;
-                       logic  bank;
-                       logic [31:1] prett;  // predicted ret target
-                       logic way;
-                       logic ret;
-                       } eb1_br_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic [1:0] hist;
-                       logic br_error;
-                       logic br_start_error;
-                       logic way;
-                       logic middle;
-                       } eb1_br_tlu_pkt_t;
-
-typedef struct packed {
-                       logic misp;
-                       logic ataken;
-                       logic boffset;
-                       logic pc4;
-                       logic [1:0] hist;
-                       logic [11:0] toffset;
-                       logic valid;
-                       logic br_error;
-                       logic br_start_error;
-                       logic pcall;
-                       logic pja;
-                       logic way;
-                       logic pret;
-                       // for power use the pret bit to clock the prett field
-                       logic [31:1] prett;
-                       } eb1_predict_pkt_t;
-
-typedef struct packed {
-                       // unlikely to change
-                       logic icaf;
-                       logic icaf_second;
-                       logic [1:0] icaf_type;
-                       logic fence_i;
-                       logic [3:0] i0trigger;
-                       logic pmu_i0_br_unpred;     // pmu
-                       logic pmu_divide;
-                       // likely to change
-                       logic legal;
-                       logic pmu_lsu_misaligned;
-                       eb1_inst_pkt_t pmu_i0_itype;        // pmu - instruction type
-                       } eb1_trap_pkt_t;
-
-typedef struct packed {
-                       // unlikely to change
-                       logic i0div;
-                       logic csrwen;
-                       logic csrwonly;
-                       logic [11:0] csrwaddr;
-                       // likely to change
-                       logic [4:0] i0rd;
-                       logic i0load;
-                       logic i0store;
-                       logic i0v;
-                       logic i0valid;
-                       } eb1_dest_pkt_t;
-
-typedef struct packed {
-                       logic mul;
-                       logic load;
-                       logic alu;
-                       } eb1_class_pkt_t;
-
-typedef struct packed {
-                       logic [4:0] rs1;
-                       logic [4:0] rs2;
-                       logic [4:0] rd;
-                       } eb1_reg_pkt_t;
-
-
-typedef struct packed {
-                       logic clz;
-                       logic ctz;
-                       logic pcnt;
-                       logic sext_b;
-                       logic sext_h;
-                       logic slo;
-                       logic sro;
-                       logic min;
-                       logic max;
-                       logic pack;
-                       logic packu;
-                       logic packh;
-                       logic rol;
-                       logic ror;
-                       logic grev;
-                       logic gorc;
-                       logic zbb;
-                       logic sbset;
-                       logic sbclr;
-                       logic sbinv;
-                       logic sbext;
-                       logic sh1add;
-                       logic sh2add;
-                       logic sh3add;
-                       logic zba;
-                       logic land;
-                       logic lor;
-                       logic lxor;
-                       logic sll;
-                       logic srl;
-                       logic sra;
-                       logic beq;
-                       logic bne;
-                       logic blt;
-                       logic bge;
-                       logic add;
-                       logic sub;
-                       logic slt;
-                       logic unsign;
-                       logic jal;
-                       logic predict_t;
-                       logic predict_nt;
-                       logic csr_write;
-                       logic csr_imm;
-                       } eb1_alu_pkt_t;
-
-typedef struct packed {
-                       logic fast_int;
-/* verilator lint_off SYMRSVDWORD */
-                       logic stack;
-/* verilator lint_on SYMRSVDWORD */
-                       logic by;
-                       logic half;
-                       logic word;
-                       logic dword;  // for dma
-                       logic load;
-                       logic store;
-                       logic unsign;
-                       logic dma;    // dma pkt
-                       logic store_data_bypass_d;
-                       logic load_ldst_bypass_d;
-                       logic store_data_bypass_m;
-                       logic valid;
-                       } eb1_lsu_pkt_t;
-
-typedef struct packed {
-                      logic inst_type;   //0: Load, 1: Store
-                      //logic dma_valid;
-                      logic exc_type;    //0: MisAligned, 1: Access Fault
-                      logic [3:0] mscause;
-                      logic [31:0] addr;
-                      logic single_ecc_error;
-                      logic exc_valid;
-                      } eb1_lsu_error_pkt_t;
-
-typedef struct packed {
-                       logic clz;
-                       logic ctz;
-                       logic pcnt;
-                       logic sext_b;
-                       logic sext_h;
-                       logic slo;
-                       logic sro;
-                       logic min;
-                       logic max;
-                       logic pack;
-                       logic packu;
-                       logic packh;
-                       logic rol;
-                       logic ror;
-                       logic grev;
-                       logic gorc;
-                       logic zbb;
-                       logic sbset;
-                       logic sbclr;
-                       logic sbinv;
-                       logic sbext;
-                       logic zbs;
-                       logic bext;
-                       logic bdep;
-                       logic zbe;
-                       logic clmul;
-                       logic clmulh;
-                       logic clmulr;
-                       logic zbc;
-                       logic shfl;
-                       logic unshfl;
-                       logic zbp;
-                       logic crc32_b;
-                       logic crc32_h;
-                       logic crc32_w;
-                       logic crc32c_b;
-                       logic crc32c_h;
-                       logic crc32c_w;
-                       logic zbr;
-                       logic bfp;
-                       logic zbf;
-                       logic sh1add;
-                       logic sh2add;
-                       logic sh3add;
-                       logic zba;
-                       logic alu;
-                       logic rs1;
-                       logic rs2;
-                       logic imm12;
-                       logic rd;
-                       logic shimm5;
-                       logic imm20;
-                       logic pc;
-                       logic load;
-                       logic store;
-                       logic lsu;
-                       logic add;
-                       logic sub;
-                       logic land;
-                       logic lor;
-                       logic lxor;
-                       logic sll;
-                       logic sra;
-                       logic srl;
-                       logic slt;
-                       logic unsign;
-                       logic condbr;
-                       logic beq;
-                       logic bne;
-                       logic bge;
-                       logic blt;
-                       logic jal;
-                       logic by;
-                       logic half;
-                       logic word;
-                       logic csr_read;
-                       logic csr_clr;
-                       logic csr_set;
-                       logic csr_write;
-                       logic csr_imm;
-                       logic presync;
-                       logic postsync;
-                       logic ebreak;
-                       logic ecall;
-                       logic mret;
-                       logic mul;
-                       logic rs1_sign;
-                       logic rs2_sign;
-                       logic low;
-                       logic div;
-                       logic rem;
-                       logic fence;
-                       logic fence_i;
-                       logic pm_alu;
-                       logic legal;
-                       } eb1_dec_pkt_t;
-
-
-typedef struct packed {
-                       logic valid;
-                       logic rs1_sign;
-                       logic rs2_sign;
-                       logic low;
-                       logic bext;
-                       logic bdep;
-                       logic clmul;
-                       logic clmulh;
-                       logic clmulr;
-                       logic grev;
-                       logic gorc;
-                       logic shfl;
-                       logic unshfl;
-                       logic crc32_b;
-                       logic crc32_h;
-                       logic crc32_w;
-                       logic crc32c_b;
-                       logic crc32c_h;
-                       logic crc32c_w;
-                       logic bfp;
-                       } eb1_mul_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic unsign;
-                       logic rem;
-                       } eb1_div_pkt_t;
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ccm_ext_in_pkt_t;
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_dccm_ext_in_pkt_t;
-
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ic_data_ext_in_pkt_t;
-
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ic_tag_ext_in_pkt_t;
-
-
-
-typedef struct packed {
-                        logic        select;
-                        logic        match;
-                        logic        store;
-                        logic        load;
-                        logic        execute;
-                        logic        m;
-                        logic [31:0] tdata2;
-            } eb1_trigger_pkt_t;
-
-
-typedef struct packed {
-                        logic [70:0]  icache_wrdata; // {dicad1[1:0], dicad0h[31:0], dicad0[31:0]}
-                        logic [16:0]  icache_dicawics; // Arraysel:24, Waysel:21:20, Index:16:3
-                        logic         icache_rd_valid;
-                        logic         icache_wr_valid;
-            } eb1_cache_debug_pkt_t;
-//`endif
-typedef struct packed {
-	bit [7:0]      BHT_ADDR_HI;
-	bit [5:0]      BHT_ADDR_LO;
-	bit [14:0]     BHT_ARRAY_DEPTH;
-	bit [4:0]      BHT_GHR_HASH_1;
-	bit [7:0]      BHT_GHR_SIZE;
-	bit [15:0]     BHT_SIZE;
-	bit [4:0]      BITMANIP_ZBA;
-	bit [4:0]      BITMANIP_ZBB;
-	bit [4:0]      BITMANIP_ZBC;
-	bit [4:0]      BITMANIP_ZBE;
-	bit [4:0]      BITMANIP_ZBF;
-	bit [4:0]      BITMANIP_ZBP;
-	bit [4:0]      BITMANIP_ZBR;
-	bit [4:0]      BITMANIP_ZBS;
-	bit [8:0]      BTB_ADDR_HI;
-	bit [5:0]      BTB_ADDR_LO;
-	bit [12:0]     BTB_ARRAY_DEPTH;
-	bit [4:0]      BTB_BTAG_FOLD;
-	bit [8:0]      BTB_BTAG_SIZE;
-	bit [4:0]      BTB_ENABLE;
-	bit [4:0]      BTB_FOLD2_INDEX_HASH;
-	bit [4:0]      BTB_FULLYA;
-	bit [8:0]      BTB_INDEX1_HI;
-	bit [8:0]      BTB_INDEX1_LO;
-	bit [8:0]      BTB_INDEX2_HI;
-	bit [8:0]      BTB_INDEX2_LO;
-	bit [8:0]      BTB_INDEX3_HI;
-	bit [8:0]      BTB_INDEX3_LO;
-	bit [13:0]     BTB_SIZE;
-	bit [8:0]      BTB_TOFFSET_SIZE;
-	bit            BUILD_AHB_LITE;
-	bit [4:0]      BUILD_AXI4;
-	bit [4:0]      BUILD_AXI_NATIVE;
-	bit [5:0]      BUS_PRTY_DEFAULT;
-	bit [35:0]     DATA_ACCESS_ADDR0;
-	bit [35:0]     DATA_ACCESS_ADDR1;
-	bit [35:0]     DATA_ACCESS_ADDR2;
-	bit [35:0]     DATA_ACCESS_ADDR3;
-	bit [35:0]     DATA_ACCESS_ADDR4;
-	bit [35:0]     DATA_ACCESS_ADDR5;
-	bit [35:0]     DATA_ACCESS_ADDR6;
-	bit [35:0]     DATA_ACCESS_ADDR7;
-	bit [4:0]      DATA_ACCESS_ENABLE0;
-	bit [4:0]      DATA_ACCESS_ENABLE1;
-	bit [4:0]      DATA_ACCESS_ENABLE2;
-	bit [4:0]      DATA_ACCESS_ENABLE3;
-	bit [4:0]      DATA_ACCESS_ENABLE4;
-	bit [4:0]      DATA_ACCESS_ENABLE5;
-	bit [4:0]      DATA_ACCESS_ENABLE6;
-	bit [4:0]      DATA_ACCESS_ENABLE7;
-	bit [35:0]     DATA_ACCESS_MASK0;
-	bit [35:0]     DATA_ACCESS_MASK1;
-	bit [35:0]     DATA_ACCESS_MASK2;
-	bit [35:0]     DATA_ACCESS_MASK3;
-	bit [35:0]     DATA_ACCESS_MASK4;
-	bit [35:0]     DATA_ACCESS_MASK5;
-	bit [35:0]     DATA_ACCESS_MASK6;
-	bit [35:0]     DATA_ACCESS_MASK7;
-	bit [6:0]      DCCM_BANK_BITS;
-	bit [8:0]      DCCM_BITS;
-	bit [6:0]      DCCM_BYTE_WIDTH;
-	bit [9:0]      DCCM_DATA_WIDTH;
-	bit [6:0]      DCCM_ECC_WIDTH;
-	bit [4:0]      DCCM_ENABLE;
-	bit [9:0]      DCCM_FDATA_WIDTH;
-	bit [7:0]      DCCM_INDEX_BITS;
-	bit [8:0]      DCCM_NUM_BANKS;
-	bit [7:0]      DCCM_REGION;
-	bit [35:0]     DCCM_SADR;
-	bit [13:0]     DCCM_SIZE;
-	bit [5:0]      DCCM_WIDTH_BITS;
-	bit [6:0]      DIV_BIT;
-	bit [4:0]      DIV_NEW;
-	bit [6:0]      DMA_BUF_DEPTH;
-	bit [8:0]      DMA_BUS_ID;
-	bit [5:0]      DMA_BUS_PRTY;
-	bit [7:0]      DMA_BUS_TAG;
-	bit [4:0]      FAST_INTERRUPT_REDIRECT;
-	bit [4:0]      ICACHE_2BANKS;
-	bit [6:0]      ICACHE_BANK_BITS;
-	bit [6:0]      ICACHE_BANK_HI;
-	bit [5:0]      ICACHE_BANK_LO;
-	bit [7:0]      ICACHE_BANK_WIDTH;
-	bit [6:0]      ICACHE_BANKS_WAY;
-	bit [7:0]      ICACHE_BEAT_ADDR_HI;
-	bit [7:0]      ICACHE_BEAT_BITS;
-	bit [4:0]      ICACHE_BYPASS_ENABLE;
-	bit [17:0]     ICACHE_DATA_DEPTH;
-	bit [6:0]      ICACHE_DATA_INDEX_LO;
-	bit [10:0]     ICACHE_DATA_WIDTH;
-	bit [4:0]      ICACHE_ECC;
-	bit [4:0]      ICACHE_ENABLE;
-	bit [10:0]     ICACHE_FDATA_WIDTH;
-	bit [8:0]      ICACHE_INDEX_HI;
-	bit [10:0]     ICACHE_LN_SZ;
-	bit [7:0]      ICACHE_NUM_BEATS;
-	bit [7:0]      ICACHE_NUM_BYPASS;
-	bit [7:0]      ICACHE_NUM_BYPASS_WIDTH;
-	bit [6:0]      ICACHE_NUM_WAYS;
-	bit [4:0]      ICACHE_ONLY;
-	bit [7:0]      ICACHE_SCND_LAST;
-	bit [12:0]     ICACHE_SIZE;
-	bit [6:0]      ICACHE_STATUS_BITS;
-	bit [4:0]      ICACHE_TAG_BYPASS_ENABLE;
-	bit [16:0]     ICACHE_TAG_DEPTH;
-	bit [6:0]      ICACHE_TAG_INDEX_LO;
-	bit [8:0]      ICACHE_TAG_LO;
-	bit [7:0]      ICACHE_TAG_NUM_BYPASS;
-	bit [7:0]      ICACHE_TAG_NUM_BYPASS_WIDTH;
-	bit [4:0]      ICACHE_WAYPACK;
-	bit [6:0]      ICCM_BANK_BITS;
-	bit [8:0]      ICCM_BANK_HI;
-	bit [8:0]      ICCM_BANK_INDEX_LO;
-	bit [8:0]      ICCM_BITS;
-	bit [4:0]      ICCM_ENABLE;
-	bit [4:0]      ICCM_ICACHE;
-	bit [7:0]      ICCM_INDEX_BITS;
-	bit [8:0]      ICCM_NUM_BANKS;
-	bit [4:0]      ICCM_ONLY;
-	bit [7:0]      ICCM_REGION;
-	bit [35:0]     ICCM_SADR;
-	bit [13:0]     ICCM_SIZE;
-	bit [4:0]      IFU_BUS_ID;
-	bit [5:0]      IFU_BUS_PRTY;
-	bit [7:0]      IFU_BUS_TAG;
-	bit [35:0]     INST_ACCESS_ADDR0;
-	bit [35:0]     INST_ACCESS_ADDR1;
-	bit [35:0]     INST_ACCESS_ADDR2;
-	bit [35:0]     INST_ACCESS_ADDR3;
-	bit [35:0]     INST_ACCESS_ADDR4;
-	bit [35:0]     INST_ACCESS_ADDR5;
-	bit [35:0]     INST_ACCESS_ADDR6;
-	bit [35:0]     INST_ACCESS_ADDR7;
-	bit [4:0]      INST_ACCESS_ENABLE0;
-	bit [4:0]      INST_ACCESS_ENABLE1;
-	bit [4:0]      INST_ACCESS_ENABLE2;
-	bit [4:0]      INST_ACCESS_ENABLE3;
-	bit [4:0]      INST_ACCESS_ENABLE4;
-	bit [4:0]      INST_ACCESS_ENABLE5;
-	bit [4:0]      INST_ACCESS_ENABLE6;
-	bit [4:0]      INST_ACCESS_ENABLE7;
-	bit [35:0]     INST_ACCESS_MASK0;
-	bit [35:0]     INST_ACCESS_MASK1;
-	bit [35:0]     INST_ACCESS_MASK2;
-	bit [35:0]     INST_ACCESS_MASK3;
-	bit [35:0]     INST_ACCESS_MASK4;
-	bit [35:0]     INST_ACCESS_MASK5;
-	bit [35:0]     INST_ACCESS_MASK6;
-	bit [35:0]     INST_ACCESS_MASK7;
-	bit [4:0]      LOAD_TO_USE_PLUS1;
-	bit [4:0]      LSU2DMA;
-	bit [4:0]      LSU_BUS_ID;
-	bit [5:0]      LSU_BUS_PRTY;
-	bit [7:0]      LSU_BUS_TAG;
-	bit [8:0]      LSU_NUM_NBLOAD;
-	bit [6:0]      LSU_NUM_NBLOAD_WIDTH;
-	bit [8:0]      LSU_SB_BITS;
-	bit [7:0]      LSU_STBUF_DEPTH;
-	bit [4:0]      NO_ICCM_NO_ICACHE;
-	bit [4:0]      PIC_2CYCLE;
-	bit [35:0]     PIC_BASE_ADDR;
-	bit [8:0]      PIC_BITS;
-	bit [7:0]      PIC_INT_WORDS;
-	bit [7:0]      PIC_REGION;
-	bit [12:0]     PIC_SIZE;
-	bit [11:0]     PIC_TOTAL_INT;
-	bit [12:0]     PIC_TOTAL_INT_PLUS1;
-	bit [7:0]      RET_STACK_SIZE;
-	bit [4:0]      SB_BUS_ID;
-	bit [5:0]      SB_BUS_PRTY;
-	bit [7:0]      SB_BUS_TAG;
-	bit [4:0]      TIMER_LEGAL_EN;
-} eb1_param_t;
-
-
-endpackage // eb1_pkg
-
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-};
-
-parameter [2270:0] pt = 2271'h0404020000E0200000000000008081000030400040081E090B040100060210C00000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC103020401C213840103C3C01000000040818428042010840830C2010281840200081002008E0C0801004040800C01002100400606810104100C080C080200810A0AFFFF00000102101800000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF8001080C080818080007806000003C043C04003E02008084021;
-// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-// This is an automatically generated file by hshabbir on و 08:16:54 PKT ت 08 جون 2021
-//
-// cmd:    brqrv -target=default -set build_axi4 
-//
-`define RV_ROOT "/home/hshabbir/caravel_BrqRV_EB1/verilog/rtl/BrqRV_EB1"
-`define RV_RET_STACK_SIZE 8
-`define RV_EXT_ADDRWIDTH 32
-`define RV_STERR_ROLLBACK 0
-`define SDVT_AHB 0
-`define RV_EXT_DATAWIDTH 64
-`define RV_LDERR_ROLLBACK 1
-`define CLOCK_PERIOD 100
-`define RV_ASSERT_ON 
-`define RV_BUILD_AXI4 1
-`define TOP tb_top
-`define RV_BUILD_AXI_NATIVE 1
-`define CPU_TOP `RV_TOP.brqrv
-`define RV_TOP `TOP.rvtop
-`define RV_UNUSED_REGION2 'h70000000
-`define RV_EXTERNAL_DATA 'hd0580000
-`define RV_SERIALIO 'he0580000
-`define RV_UNUSED_REGION7 'h20000000
-`define RV_UNUSED_REGION5 'h40000000
-`define RV_DEBUG_SB_MEM 'hb0580000
-`define RV_EXTERNAL_DATA_1 'hc0000000
-`define RV_UNUSED_REGION0 'h90000000
-`define RV_UNUSED_REGION3 'h60000000
-`define RV_UNUSED_REGION9 'h00000000
-`define RV_UNUSED_REGION8 'h10000000
-`define RV_UNUSED_REGION6 'h30000000
-`define RV_UNUSED_REGION1 'h80000000
-`define RV_UNUSED_REGION4 'h50000000
-`define RV_BHT_ADDR_LO 2
-`define RV_BHT_SIZE 256
-`define RV_BHT_GHR_HASH_1 
-`define RV_BHT_GHR_SIZE 7
-`define RV_BHT_ADDR_HI 8
-`define RV_BHT_HASH_STRING {hashin[7+1:2]^ghr[7-1:0]}// cf2
-`define RV_BHT_ARRAY_DEPTH 128
-`define RV_BHT_GHR_RANGE 6:0
-`define RV_INST_ACCESS_ADDR5 'h00000000
-`define RV_DATA_ACCESS_MASK3 'hffffffff
-`define RV_INST_ACCESS_MASK7 'hffffffff
-`define RV_DATA_ACCESS_MASK0 'hffffffff
-`define RV_INST_ACCESS_ADDR6 'h00000000
-`define RV_INST_ACCESS_ENABLE3 1'h0
-`define RV_INST_ACCESS_MASK6 'hffffffff
-`define RV_DATA_ACCESS_ENABLE6 1'h0
-`define RV_INST_ACCESS_ENABLE5 1'h0
-`define RV_DATA_ACCESS_ENABLE7 1'h0
-`define RV_INST_ACCESS_ENABLE1 1'h0
-`define RV_DATA_ACCESS_ADDR0 'h00000000
-`define RV_DATA_ACCESS_ADDR3 'h00000000
-`define RV_INST_ACCESS_ADDR7 'h00000000
-`define RV_INST_ACCESS_ENABLE0 1'h0
-`define RV_INST_ACCESS_MASK5 'hffffffff
-`define RV_DATA_ACCESS_MASK4 'hffffffff
-`define RV_INST_ACCESS_MASK2 'hffffffff
-`define RV_INST_ACCESS_MASK1 'hffffffff
-`define RV_INST_ACCESS_ADDR2 'h00000000
-`define RV_INST_ACCESS_ENABLE2 1'h0
-`define RV_INST_ACCESS_ADDR1 'h00000000
-`define RV_INST_ACCESS_ENABLE4 1'h0
-`define RV_DATA_ACCESS_ADDR4 'h00000000
-`define RV_DATA_ACCESS_ADDR6 'h00000000
-`define RV_DATA_ACCESS_ENABLE3 1'h0
-`define RV_INST_ACCESS_MASK0 'hffffffff
-`define RV_DATA_ACCESS_MASK7 'hffffffff
-`define RV_INST_ACCESS_MASK3 'hffffffff
-`define RV_DATA_ACCESS_ADDR5 'h00000000
-`define RV_DATA_ACCESS_MASK5 'hffffffff
-`define RV_DATA_ACCESS_ENABLE0 1'h0
-`define RV_INST_ACCESS_ADDR3 'h00000000
-`define RV_DATA_ACCESS_ADDR7 'h00000000
-`define RV_DATA_ACCESS_ENABLE5 1'h0
-`define RV_INST_ACCESS_ENABLE6 1'h0
-`define RV_DATA_ACCESS_ENABLE1 1'h0
-`define RV_INST_ACCESS_ENABLE7 1'h0
-`define RV_INST_ACCESS_ADDR0 'h00000000
-`define RV_DATA_ACCESS_MASK6 'hffffffff
-`define RV_DATA_ACCESS_MASK2 'hffffffff
-`define RV_DATA_ACCESS_MASK1 'hffffffff
-`define RV_INST_ACCESS_MASK4 'hffffffff
-`define RV_INST_ACCESS_ADDR4 'h00000000
-`define RV_DATA_ACCESS_ENABLE4 1'h0
-`define RV_DATA_ACCESS_ADDR2 'h00000000
-`define RV_DATA_ACCESS_ADDR1 'h00000000
-`define RV_DATA_ACCESS_ENABLE2 1'h0
-`define RV_ICCM_BITS 12
-`define RV_ICCM_OFFSET 10'h0ffff000
-`define RV_ICCM_SIZE_4 
-`define RV_ICCM_BANK_BITS 2
-`define RV_ICCM_ENABLE 1
-`define RV_ICCM_SADR 32'haffff000
-`define RV_ICCM_DATA_CELL ram_256x39
-`define RV_ICCM_EADR 32'hafffffff
-`define RV_ICCM_RESERVED 'h400
-`define RV_ICCM_REGION 4'ha
-`define RV_ICCM_SIZE 4
-`define RV_ICCM_BANK_HI 3
-`define RV_ICCM_BANK_INDEX_LO 4
-`define RV_ICCM_ROWS 256
-`define RV_ICCM_INDEX_BITS 8
-`define RV_ICCM_NUM_BANKS 4
-`define RV_ICCM_NUM_BANKS_4 
-`define RV_LSU2DMA 0
-`define RV_LSU_NUM_NBLOAD_WIDTH 2
-`define RV_ICCM_ONLY 1
-`define RV_BITMANIP_ZBC 0
-`define RV_BITMANIP_ZBS 0
-`define RV_FPGA_OPTIMIZE 0
-`define RV_LSU_NUM_NBLOAD 4
-`define RV_DIV_BIT 3
-`define RV_DIV_NEW 1
-`define RV_DMA_BUF_DEPTH 5
-`define RV_FAST_INTERRUPT_REDIRECT 1
-`define RV_BITMANIP_ZBP 0
-`define RV_BITMANIP_ZBA 0
-`define RV_LSU_STBUF_DEPTH 4
-`define RV_BITMANIP_ZBB 0
-`define RV_BITMANIP_ZBR 0
-`define RV_BITMANIP_ZBE 0
-`define RV_TIMER_LEGAL_EN 1
-`define RV_BITMANIP_ZBF 0
-`define REGWIDTH 32
-`define RV_CONFIG_KEY 32'hdeadbeef
-`define RV_BTB_INDEX1_HI 8
-`define RV_BTB_SIZE 256
-`define RV_BTB_BTAG_SIZE 6
-`define RV_BTB_FOLD2_INDEX_HASH 0
-`define RV_BTB_INDEX3_LO 16
-`define RV_BTB_INDEX2_HI 15
-`define RV_BTB_ARRAY_DEPTH 128
-`define RV_BTB_INDEX1_LO 2
-`define RV_BTB_ADDR_LO 2
-`define RV_BTB_INDEX3_HI 22
-`define RV_BTB_ADDR_HI 8
-`define RV_BTB_TOFFSET_SIZE 12
-`define RV_BTB_INDEX2_LO 9
-`define RV_BTB_BTAG_FOLD 0
-`define RV_BTB_ENABLE 1
-`define RV_XLEN 32
-`define RV_IFU_BUS_TAG 3
-`define RV_LSU_BUS_ID 1
-`define RV_IFU_BUS_PRTY 2
-`define RV_LSU_BUS_TAG 3
-`define RV_IFU_BUS_ID 1
-`define RV_SB_BUS_PRTY 2
-`define RV_LSU_BUS_PRTY 2
-`define RV_DMA_BUS_ID 1
-`define RV_SB_BUS_ID 1
-`define RV_BUS_PRTY_DEFAULT 2'h3
-`define RV_DMA_BUS_PRTY 2
-`define RV_SB_BUS_TAG 1
-`define RV_DMA_BUS_TAG 1
-`define RV_ICACHE_TAG_NUM_BYPASS 2
-`define RV_ICACHE_STATUS_BITS 1
-`define RV_ICACHE_BEAT_ADDR_HI 5
-`define RV_ICACHE_SCND_LAST 6
-`define RV_ICACHE_TAG_LO 13
-`define RV_ICACHE_BANK_WIDTH 8
-`define RV_ICACHE_DATA_CELL ram_512x71
-`define RV_ICACHE_NUM_BYPASS_WIDTH 2
-`define RV_ICACHE_WAYPACK 1
-`define RV_ICACHE_LN_SZ 64
-`define RV_ICACHE_NUM_BEATS 8
-`define RV_ICACHE_NUM_LINES_WAY 128
-`define RV_ICACHE_NUM_LINES_BANK 64
-`define RV_ICACHE_TAG_DEPTH 128
-`define RV_ICACHE_DATA_DEPTH 512
-`define RV_ICACHE_DATA_WIDTH 64
-`define RV_ICACHE_TAG_CELL ram_128x25
-`define RV_ICACHE_NUM_BYPASS 2
-`define RV_ICACHE_FDATA_WIDTH 71
-`define RV_ICACHE_NUM_LINES 256
-`define RV_ICACHE_DATA_INDEX_LO 4
-`define RV_ICACHE_BANK_BITS 1
-`define RV_ICACHE_TAG_NUM_BYPASS_WIDTH 2
-`define RV_ICACHE_2BANKS 1
-`define RV_ICACHE_BANKS_WAY 2
-`define RV_ICACHE_BANK_LO 3
-`define RV_ICACHE_ECC 1
-`define RV_ICACHE_INDEX_HI 12
-`define RV_ICACHE_TAG_INDEX_LO 6
-`define RV_ICACHE_TAG_BYPASS_ENABLE 1
-`define RV_ICACHE_BANK_HI 3
-`define RV_ICACHE_BEAT_BITS 3
-`define RV_ICACHE_BYPASS_ENABLE 1
-`define RV_ICACHE_NUM_WAYS 2
-`define RV_ICACHE_SIZE 16
-`define RV_NMI_VEC 'h11110000
-`define RV_DCCM_EADR 32'hf0040fff
-`define RV_DCCM_SIZE 4
-`define RV_DCCM_REGION 4'hf
-`define RV_DCCM_RESERVED 'h400
-`define RV_DCCM_INDEX_BITS 8
-`define RV_DCCM_ROWS 256
-`define RV_DCCM_FDATA_WIDTH 39
-`define RV_DCCM_NUM_BANKS_4 
-`define RV_DCCM_NUM_BANKS 4
-`define RV_DCCM_BITS 12
-`define RV_DCCM_DATA_WIDTH 32
-`define RV_DCCM_SIZE_4 
-`define RV_DCCM_OFFSET 28'h40000
-`define RV_DCCM_WIDTH_BITS 2
-`define RV_DCCM_BYTE_WIDTH 4
-`define RV_DCCM_ENABLE 1
-`define RV_DCCM_ECC_WIDTH 7
-`define RV_DCCM_BANK_BITS 2
-`define RV_DCCM_DATA_CELL ram_256x39
-`define RV_DCCM_SADR 32'hf0040000
-`define RV_LSU_SB_BITS 12
-`define RV_RESET_VEC 'haffff000
-`define RV_PIC_BITS 15
-`define RV_PIC_MEIGWCTRL_OFFSET 'h4000
-`define RV_PIC_MEIGWCTRL_MASK 'h3
-`define RV_PIC_MEIGWCLR_OFFSET 'h5000
-`define RV_PIC_MEIE_MASK 'h1
-`define RV_PIC_MEIP_MASK 'h0
-`define RV_PIC_MEIPT_COUNT 31
-`define RV_PIC_MEIPL_COUNT 31
-`define RV_PIC_MEIPT_MASK 'h0
-`define RV_PIC_BASE_ADDR 32'hf00c0000
-`define RV_PIC_MEIPL_MASK 'hf
-`define RV_PIC_INT_WORDS 1
-`define RV_PIC_MPICCFG_MASK 'h1
-`define RV_PIC_MEIPT_OFFSET 'h3004
-`define RV_PIC_TOTAL_INT_PLUS1 32
-`define RV_PIC_MEIPL_OFFSET 'h0000
-`define RV_PIC_MEIE_COUNT 31
-`define RV_PIC_MEIGWCTRL_COUNT 31
-`define RV_PIC_REGION 4'hf
-`define RV_PIC_MEIGWCLR_MASK 'h0
-`define RV_PIC_SIZE 32
-`define RV_PIC_MEIE_OFFSET 'h2000
-`define RV_PIC_MPICCFG_OFFSET 'h3000
-`define RV_PIC_MPICCFG_COUNT 1
-`define RV_PIC_MEIP_OFFSET 'h1000
-`define RV_PIC_TOTAL_INT 31
-`define RV_PIC_OFFSET 10'hc0000
-`define RV_PIC_MEIGWCLR_COUNT 31
-`define RV_PIC_MEIP_COUNT 1
-`define RV_TARGET default
-`define RV_NUMIREGS 32
-`undef RV_ASSERT_ON
-
-// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-// This is an automatically generated file by hshabbir on و 08:16:54 PKT ت 08 جون 2021
-//
-// cmd:    brqrv -target=default -set build_axi4 
-//
-
-//// `include "common_defines.vh"
-`undef RV_ASSERT_ON
-`define TEC_RV_ICG sky130_fd_sc_hd__dlclkp_1
-`define RV_PHYSICAL 1
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Function: Top wrapper file with eb1_brqrv/mem instantiated inside
-// Comments:
-//
-//********************************************************************************
-module eb1_brqrv_wrapper
-import eb1_pkg::*;
- #(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-(
-   input logic			             vccd1,
-   input logic				     vssd1,
-   input logic                             clk,
-   input logic                             rst_l,
-   input logic                             dbg_rst_l,
-   input logic [31:1]                      rst_vec,
-   input logic                             nmi_int,
-   input logic [31:1]                      nmi_vec,
-   input logic [31:1]                      jtag_id,
-   input 				     uart_rx,
-
-
-   output logic [31:0]                     trace_rv_i_insn_ip,
-   output logic [31:0]                     trace_rv_i_address_ip,
-   output logic                            trace_rv_i_valid_ip,
-   output logic                            trace_rv_i_exception_ip,
-   output logic [4:0]                      trace_rv_i_ecause_ip,
-   output logic                            trace_rv_i_interrupt_ip,
-   output logic [31:0]                     trace_rv_i_tval_ip,
-
-   // Bus signals
-`ifdef RV_BUILD_AXI4
-   //-------------------------- LSU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-   input  logic                            lsu_axi_rlast,
-
-   //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   input  logic                            ifu_axi_awready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   input  logic                            ifu_axi_wready,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   input  logic                            ifu_axi_bvalid,
-   output logic                            ifu_axi_bready,
-   input  logic [1:0]                      ifu_axi_bresp,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-   input  logic                            ifu_axi_rlast,
-
-   //-------------------------- SB AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            sb_axi_awvalid,
-   input  logic                            sb_axi_awready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_awid,
-   output logic [31:0]                     sb_axi_awaddr,
-   output logic [3:0]                      sb_axi_awregion,
-   output logic [7:0]                      sb_axi_awlen,
-   output logic [2:0]                      sb_axi_awsize,
-   output logic [1:0]                      sb_axi_awburst,
-   output logic                            sb_axi_awlock,
-   output logic [3:0]                      sb_axi_awcache,
-   output logic [2:0]                      sb_axi_awprot,
-   output logic [3:0]                      sb_axi_awqos,
-
-   output logic                            sb_axi_wvalid,
-   input  logic                            sb_axi_wready,
-   output logic [63:0]                     sb_axi_wdata,
-   output logic [7:0]                      sb_axi_wstrb,
-   output logic                            sb_axi_wlast,
-
-   input  logic                            sb_axi_bvalid,
-   output logic                            sb_axi_bready,
-   input  logic [1:0]                      sb_axi_bresp,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_bid,
-
-   // AXI Read Channels
-   output logic                            sb_axi_arvalid,
-   input  logic                            sb_axi_arready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_arid,
-   output logic [31:0]                     sb_axi_araddr,
-   output logic [3:0]                      sb_axi_arregion,
-   output logic [7:0]                      sb_axi_arlen,
-   output logic [2:0]                      sb_axi_arsize,
-   output logic [1:0]                      sb_axi_arburst,
-   output logic                            sb_axi_arlock,
-   output logic [3:0]                      sb_axi_arcache,
-   output logic [2:0]                      sb_axi_arprot,
-   output logic [3:0]                      sb_axi_arqos,
-
-   input  logic                            sb_axi_rvalid,
-   output logic                            sb_axi_rready,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_rid,
-   input  logic [63:0]                     sb_axi_rdata,
-   input  logic [1:0]                      sb_axi_rresp,
-   input  logic                            sb_axi_rlast,
-
-   //-------------------------- DMA AXI signals--------------------------
-   // AXI Write Channels
-   input  logic                            dma_axi_awvalid,
-   output logic                            dma_axi_awready,
-   input  logic [pt.DMA_BUS_TAG-1:0]       dma_axi_awid,
-   input  logic [31:0]                     dma_axi_awaddr,
-   input  logic [2:0]                      dma_axi_awsize,
-   input  logic [2:0]                      dma_axi_awprot,
-   input  logic [7:0]                      dma_axi_awlen,
-   input  logic [1:0]                      dma_axi_awburst,
-
-
-   input  logic                            dma_axi_wvalid,
-   output logic                            dma_axi_wready,
-   input  logic [63:0]                     dma_axi_wdata,
-   input  logic [7:0]                      dma_axi_wstrb,
-   input  logic                            dma_axi_wlast,
-
-   output logic                            dma_axi_bvalid,
-   input  logic                            dma_axi_bready,
-   output logic [1:0]                      dma_axi_bresp,
-   output logic [pt.DMA_BUS_TAG-1:0]       dma_axi_bid,
-
-   // AXI Read Channels
-   input  logic                            dma_axi_arvalid,
-   output logic                            dma_axi_arready,
-   input  logic [pt.DMA_BUS_TAG-1:0]       dma_axi_arid,
-   input  logic [31:0]                     dma_axi_araddr,
-   input  logic [2:0]                      dma_axi_arsize,
-   input  logic [2:0]                      dma_axi_arprot,
-   input  logic [7:0]                      dma_axi_arlen,
-   input  logic [1:0]                      dma_axi_arburst,
-
-   output logic                            dma_axi_rvalid,
-   input  logic                            dma_axi_rready,
-   output logic [pt.DMA_BUS_TAG-1:0]       dma_axi_rid,
-   output logic [63:0]                     dma_axi_rdata,
-   output logic [1:0]                      dma_axi_rresp,
-   output logic                            dma_axi_rlast,
-`endif
-
-`ifdef RV_BUILD_AHB_LITE
- //// AHB LITE BUS
-   output logic [31:0]                     haddr,
-   output logic [2:0]                      hburst,
-   output logic                            hmastlock,
-   output logic [3:0]                      hprot,
-   output logic [2:0]                      hsize,
-   output logic [1:0]                      htrans,
-   output logic                            hwrite,
-
-   input logic [63:0]                      hrdata,
-   input logic                             hready,
-   input logic                             hresp,
-
-   // LSU AHB Master
-   output logic [31:0]                     lsu_haddr,
-   output logic [2:0]                      lsu_hburst,
-   output logic                            lsu_hmastlock,
-   output logic [3:0]                      lsu_hprot,
-   output logic [2:0]                      lsu_hsize,
-   output logic [1:0]                      lsu_htrans,
-   output logic                            lsu_hwrite,
-   output logic [63:0]                     lsu_hwdata,
-
-   input logic [63:0]                      lsu_hrdata,
-   input logic                             lsu_hready,
-   input logic                             lsu_hresp,
-   // Debug Syster Bus AHB
-   output logic [31:0]                     sb_haddr,
-   output logic [2:0]                      sb_hburst,
-   output logic                            sb_hmastlock,
-   output logic [3:0]                      sb_hprot,
-   output logic [2:0]                      sb_hsize,
-   output logic [1:0]                      sb_htrans,
-   output logic                            sb_hwrite,
-   output logic [63:0]                     sb_hwdata,
-
-   input  logic [63:0]                     sb_hrdata,
-   input  logic                            sb_hready,
-   input  logic                            sb_hresp,
-
-   // DMA Slave
-   input logic                             dma_hsel,
-   input logic [31:0]                      dma_haddr,
-   input logic [2:0]                       dma_hburst,
-   input logic                             dma_hmastlock,
-   input logic [3:0]                       dma_hprot,
-   input logic [2:0]                       dma_hsize,
-   input logic [1:0]                       dma_htrans,
-   input logic                             dma_hwrite,
-   input logic [63:0]                      dma_hwdata,
-   input logic                             dma_hreadyin,
-
-   output logic [63:0]                     dma_hrdata,
-   output logic                            dma_hreadyout,
-   output logic                            dma_hresp,
-`endif
-   // clk ratio signals
-   input logic                             lsu_bus_clk_en, // Clock ratio b/w cpu core clk & AHB master interface
-   input logic                             ifu_bus_clk_en, // Clock ratio b/w cpu core clk & AHB master interface
-   input logic                             dbg_bus_clk_en, // Clock ratio b/w cpu core clk & AHB master interface
-   input logic                             dma_bus_clk_en, // Clock ratio b/w cpu core clk & AHB slave interface
-
- // all of these test inputs are brought to top-level; must be tied off based on usage by physical design (ie. icache or not, iccm or not, dccm or not)
-
-   input                                   eb1_dccm_ext_in_pkt_t  [pt.DCCM_NUM_BANKS-1:0] dccm_ext_in_pkt,
-   input                                   eb1_ccm_ext_in_pkt_t  [pt.ICCM_NUM_BANKS-1:0] iccm_ext_in_pkt,
-   input                                   eb1_ic_data_ext_in_pkt_t  [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] ic_data_ext_in_pkt,
-   input                                   eb1_ic_tag_ext_in_pkt_t  [pt.ICACHE_NUM_WAYS-1:0] ic_tag_ext_in_pkt,
-
-   input logic                             timer_int,
-   input logic                             soft_int,
-   input logic [pt.PIC_TOTAL_INT:1]        extintsrc_req,
-
-   output logic                            dec_tlu_perfcnt0, // toggles when slot0 perf counter 0 has an event inc
-   output logic                            dec_tlu_perfcnt1,
-   output logic                            dec_tlu_perfcnt2,
-   output logic                            dec_tlu_perfcnt3,
-
-   // ports added by the soc team
-   input logic                             jtag_tck,    // JTAG clk
-   input logic                             jtag_tms,    // JTAG TMS
-   input logic                             jtag_tdi,    // JTAG tdi
-   input logic                             jtag_trst_n, // JTAG Reset
-   output logic                            jtag_tdo,    // JTAG TDO
-
-   input logic [31:4] core_id,
-
-   // external MPC halt/run interface
-   input logic                             mpc_debug_halt_req, // Async halt request
-   input logic                             mpc_debug_run_req,  // Async run request
-   input logic                             mpc_reset_run_req,  // Run/halt after reset
-   output logic                            mpc_debug_halt_ack, // Halt ack
-   output logic                            mpc_debug_run_ack,  // Run ack
-   output logic                            debug_brkpt_status, // debug breakpoint
-
-   input logic                             i_cpu_halt_req,      // Async halt req to CPU
-   output logic                            o_cpu_halt_ack,      // core response to halt
-   output logic                            o_cpu_halt_status,   // 1'b1 indicates core is halted
-   output logic                            o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-   input logic                             i_cpu_run_req, // Async restart req to CPU
-   output logic                            o_cpu_run_ack, // Core response to run req
-   input logic                             scan_mode,     // To enable scan mode
-   input logic                             mbist_mode,     // to enable mbist
-   input [15:0] 			    CLKS_PER_BIT
-);
-
-   logic                             active_l2clk;
-   logic                             free_l2clk;
-
-   // DCCM ports
-   logic         dccm_wren;
-   logic         dccm_rden;
-   logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo;
-   logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi;
-   logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo;
-   logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi;
-
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_lo;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_hi;
-
-   // PIC ports
-
-   // Icache & Itag ports
-   logic [31:1]  ic_rw_addr;
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_wr_en  ;     // Which way to write
-   logic         ic_rd_en ;
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_tag_valid;   // Valid from the I$ tag valid outside (in flops).
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_rd_hit;      // ic_rd_hit[3:0]
-   logic         ic_tag_perr;                       // Ic tag parity error
-
-   logic [pt.ICACHE_INDEX_HI:3]  ic_debug_addr;     // Read/Write addresss to the Icache.
-   logic         ic_debug_rd_en;                    // Icache debug rd
-   logic         ic_debug_wr_en;                    // Icache debug wr
-   logic         ic_debug_tag_array;                // Debug tag array
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_debug_way;   // Debug way. Rd or Wr.
-
-   logic [25:0]  ictag_debug_rd_data;               // Debug icache tag.
-   logic [pt.ICACHE_BANKS_WAY-1:0][70:0]  ic_wr_data;
-   logic [63:0]  ic_rd_data;
-   logic [70:0]  ic_debug_rd_data;                  // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   logic [70:0]  ic_debug_wr_data;                  // Debug wr cache.
-
-   logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr;       // ecc error per bank
-   logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr;       // parity error per bank
-
-   logic [63:0]  ic_premux_data;
-   logic         ic_sel_premux_data;
-
-   // ICCM ports
-   logic [pt.ICCM_BITS-1:1]    iccm_rw_addr;
-   logic           iccm_wren;
-   logic           iccm_rden;
-   logic [2:0]     iccm_wr_size;
-   logic [77:0]    iccm_wr_data;
-   logic           iccm_buf_correct_ecc;
-   logic           iccm_correction_state;
-
-   logic [63:0]    iccm_rd_data;
-   logic [77:0]    iccm_rd_data_ecc;
- 
-   logic	 core_rst;
-   logic        core_rst_l;                         // Core reset including rst_l and dbg_rst_l
-   logic        jtag_tdoEn;
-
-   logic        dccm_clk_override;
-   logic        icm_clk_override;
-   logic        dec_tlu_core_ecc_disable;
-
-
-   // zero out the signals not presented at the wrapper instantiation level
-`ifdef RV_BUILD_AXI4
-
- //// AHB LITE BUS
-   logic [31:0]              haddr;
-   logic [2:0]               hburst;
-   logic                     hmastlock;
-   logic [3:0]               hprot;
-   logic [2:0]               hsize;
-   logic [1:0]               htrans;
-   logic                     hwrite;
-
-   logic [63:0]              hrdata;
-   logic                     hready;
-   logic                     hresp;
-
-   // LSU AHB Master
-   logic [31:0]              lsu_haddr;
-   logic [2:0]               lsu_hburst;
-   logic                     lsu_hmastlock;
-   logic [3:0]               lsu_hprot;
-   logic [2:0]               lsu_hsize;
-   logic [1:0]               lsu_htrans;
-   logic                     lsu_hwrite;
-   logic [63:0]              lsu_hwdata;
-
-   logic [63:0]              lsu_hrdata;
-   logic                     lsu_hready;
-   logic                     lsu_hresp;
-   // Debug Syster Bus AHB
-   logic [31:0]              sb_haddr;
-   logic [2:0]               sb_hburst;
-   logic                     sb_hmastlock;
-   logic [3:0]               sb_hprot;
-   logic [2:0]               sb_hsize;
-   logic [1:0]               sb_htrans;
-   logic                     sb_hwrite;
-   logic [63:0]              sb_hwdata;
-
-    logic [63:0]             sb_hrdata;
-    logic                    sb_hready;
-    logic                    sb_hresp;
-
-   // DMA Slave
-   logic                     dma_hsel;
-   logic [31:0]              dma_haddr;
-   logic [2:0]               dma_hburst;
-   logic                     dma_hmastlock;
-   logic [3:0]               dma_hprot;
-   logic [2:0]               dma_hsize;
-   logic [1:0]               dma_htrans;
-   logic                     dma_hwrite;
-   logic [63:0]              dma_hwdata;
-   logic                     dma_hreadyin;
-
-   logic [63:0]              dma_hrdata;
-   logic                     dma_hreadyout;
-   logic                     dma_hresp;
-
-
-
-   // AHB
-   assign  hrdata[63:0]                           = '0;
-   assign  hready                                 = '0;
-   assign  hresp                                  = '0;
-   // LSU
-   assign  lsu_hrdata[63:0]                       = '0;
-   assign  lsu_hready                             = '0;
-   assign  lsu_hresp                              = '0;
-   // Debu
-   assign  sb_hrdata[63:0]                        = '0;
-   assign  sb_hready                              = '0;
-   assign  sb_hresp                               = '0;
-
-   // DMA
-   assign  dma_hsel                               = '0;
-   assign  dma_haddr[31:0]                        = '0;
-   assign  dma_hburst[2:0]                        = '0;
-   assign  dma_hmastlock                          = '0;
-   assign  dma_hprot[3:0]                         = '0;
-   assign  dma_hsize[2:0]                         = '0;
-   assign  dma_htrans[1:0]                        = '0;
-   assign  dma_hwrite                             = '0;
-   assign  dma_hwdata[63:0]                       = '0;
-   assign  dma_hreadyin                           = '0;
-
-`endif //  `ifdef RV_BUILD_AXI4
-
-
-`ifdef RV_BUILD_AHB_LITE
-   wire                            lsu_axi_awvalid;
-   wire                            lsu_axi_awready;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid;
-   wire [31:0]                     lsu_axi_awaddr;
-   wire [3:0]                      lsu_axi_awregion;
-   wire [7:0]                      lsu_axi_awlen;
-   wire [2:0]                      lsu_axi_awsize;
-   wire [1:0]                      lsu_axi_awburst;
-   wire                            lsu_axi_awlock;
-   wire [3:0]                      lsu_axi_awcache;
-   wire [2:0]                      lsu_axi_awprot;
-   wire [3:0]                      lsu_axi_awqos;
-
-   wire                            lsu_axi_wvalid;
-   wire                            lsu_axi_wready;
-   wire [63:0]                     lsu_axi_wdata;
-   wire [7:0]                      lsu_axi_wstrb;
-   wire                            lsu_axi_wlast;
-
-   wire                            lsu_axi_bvalid;
-   wire                            lsu_axi_bready;
-   wire [1:0]                      lsu_axi_bresp;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid;
-
-   // AXI Read Channels
-   wire                            lsu_axi_arvalid;
-   wire                            lsu_axi_arready;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid;
-   wire [31:0]                     lsu_axi_araddr;
-   wire [3:0]                      lsu_axi_arregion;
-   wire [7:0]                      lsu_axi_arlen;
-   wire [2:0]                      lsu_axi_arsize;
-   wire [1:0]                      lsu_axi_arburst;
-   wire                            lsu_axi_arlock;
-   wire [3:0]                      lsu_axi_arcache;
-   wire [2:0]                      lsu_axi_arprot;
-   wire [3:0]                      lsu_axi_arqos;
-
-   wire                            lsu_axi_rvalid;
-   wire                            lsu_axi_rready;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid;
-   wire [63:0]                     lsu_axi_rdata;
-   wire [1:0]                      lsu_axi_rresp;
-   wire                            lsu_axi_rlast;
-
-   //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   wire                            ifu_axi_awvalid;
-   wire                            ifu_axi_awready;
-   wire [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid;
-   wire [31:0]                     ifu_axi_awaddr;
-   wire [3:0]                      ifu_axi_awregion;
-   wire [7:0]                      ifu_axi_awlen;
-   wire [2:0]                      ifu_axi_awsize;
-   wire [1:0]                      ifu_axi_awburst;
-   wire                            ifu_axi_awlock;
-   wire [3:0]                      ifu_axi_awcache;
-   wire [2:0]                      ifu_axi_awprot;
-   wire [3:0]                      ifu_axi_awqos;
-
-   wire                            ifu_axi_wvalid;
-   wire                            ifu_axi_wready;
-   wire [63:0]                     ifu_axi_wdata;
-   wire [7:0]                      ifu_axi_wstrb;
-   wire                            ifu_axi_wlast;
-
-   wire                            ifu_axi_bvalid;
-   wire                            ifu_axi_bready;
-   wire [1:0]                      ifu_axi_bresp;
-   wire [pt.IFU_BUS_TAG-1:0]      ifu_axi_bid;
-
-   // AXI Read Channels
-   wire                            ifu_axi_arvalid;
-   wire                            ifu_axi_arready;
-   wire [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid;
-   wire [31:0]                     ifu_axi_araddr;
-   wire [3:0]                      ifu_axi_arregion;
-   wire [7:0]                      ifu_axi_arlen;
-   wire [2:0]                      ifu_axi_arsize;
-   wire [1:0]                      ifu_axi_arburst;
-   wire                            ifu_axi_arlock;
-   wire [3:0]                      ifu_axi_arcache;
-   wire [2:0]                      ifu_axi_arprot;
-   wire [3:0]                      ifu_axi_arqos;
-
-   wire                            ifu_axi_rvalid;
-   wire                            ifu_axi_rready;
-   wire [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid;
-   wire [63:0]                     ifu_axi_rdata;
-   wire [1:0]                      ifu_axi_rresp;
-   wire                            ifu_axi_rlast;
-
-   //-------------------------- SB AXI signals--------------------------
-   // AXI Write Channels
-   wire                            sb_axi_awvalid;
-   wire                            sb_axi_awready;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_awid;
-   wire [31:0]                     sb_axi_awaddr;
-   wire [3:0]                      sb_axi_awregion;
-   wire [7:0]                      sb_axi_awlen;
-   wire [2:0]                      sb_axi_awsize;
-   wire [1:0]                      sb_axi_awburst;
-   wire                            sb_axi_awlock;
-   wire [3:0]                      sb_axi_awcache;
-   wire [2:0]                      sb_axi_awprot;
-   wire [3:0]                      sb_axi_awqos;
-
-   wire                            sb_axi_wvalid;
-   wire                            sb_axi_wready;
-   wire [63:0]                     sb_axi_wdata;
-   wire [7:0]                      sb_axi_wstrb;
-   wire                            sb_axi_wlast;
-
-   wire                            sb_axi_bvalid;
-   wire                            sb_axi_bready;
-   wire [1:0]                      sb_axi_bresp;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_bid;
-
-   // AXI Read Channels
-   wire                            sb_axi_arvalid;
-   wire                            sb_axi_arready;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_arid;
-   wire [31:0]                     sb_axi_araddr;
-   wire [3:0]                      sb_axi_arregion;
-   wire [7:0]                      sb_axi_arlen;
-   wire [2:0]                      sb_axi_arsize;
-   wire [1:0]                      sb_axi_arburst;
-   wire                            sb_axi_arlock;
-   wire [3:0]                      sb_axi_arcache;
-   wire [2:0]                      sb_axi_arprot;
-   wire [3:0]                      sb_axi_arqos;
-
-   wire                            sb_axi_rvalid;
-   wire                            sb_axi_rready;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_rid;
-   wire [63:0]                     sb_axi_rdata;
-   wire [1:0]                      sb_axi_rresp;
-   wire                            sb_axi_rlast;
-
-   //-------------------------- DMA AXI signals--------------------------
-   // AXI Write Channels
-   wire                         dma_axi_awvalid;
-   wire                         dma_axi_awready;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_awid;
-   wire [31:0]                  dma_axi_awaddr;
-   wire [2:0]                   dma_axi_awsize;
-   wire [2:0]                   dma_axi_awprot;
-   wire [7:0]                   dma_axi_awlen;
-   wire [1:0]                   dma_axi_awburst;
-
-
-   wire                         dma_axi_wvalid;
-   wire                         dma_axi_wready;
-   wire [63:0]                  dma_axi_wdata;
-   wire [7:0]                   dma_axi_wstrb;
-   wire                         dma_axi_wlast;
-
-   wire                         dma_axi_bvalid;
-   wire                         dma_axi_bready;
-   wire [1:0]                   dma_axi_bresp;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_bid;
-
-   // AXI Read Channels
-   wire                         dma_axi_arvalid;
-   wire                         dma_axi_arready;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_arid;
-   wire [31:0]                  dma_axi_araddr;
-   wire [2:0]                   dma_axi_arsize;
-   wire [2:0]                   dma_axi_arprot;
-   wire [7:0]                   dma_axi_arlen;
-   wire [1:0]                   dma_axi_arburst;
-
-   wire                         dma_axi_rvalid;
-   wire                         dma_axi_rready;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_rid;
-   wire [63:0]                  dma_axi_rdata;
-   wire [1:0]                   dma_axi_rresp;
-   wire                         dma_axi_rlast;
-
-   // AXI
-   assign ifu_axi_awready = 1'b1;
-   assign ifu_axi_wready = 1'b1;
-   assign ifu_axi_bvalid = '0;
-   assign ifu_axi_bresp[1:0] = '0;
-   assign ifu_axi_bid[pt.IFU_BUS_TAG-1:0] = '0;
-
-`endif //  `ifdef RV_BUILD_AHB_LITE
-
-   logic                   dmi_reg_en;
-   logic [6:0]             dmi_reg_addr;
-   logic                   dmi_reg_wr_en;
-   logic [31:0]            dmi_reg_wdata;
-   logic [31:0]            dmi_reg_rdata;
-   logic rx_dv_i;
-   logic [7:0] rx_byte_i;
-   logic iccm_instr_we;
-   logic [13:0] iccm_instr_addr;
-   logic [31:0] iccm_instr_wdata;
-   // UART Receiver
-
-
-   // Instantiate the eb1_brqrv core
-   eb1_brqrv #(.pt(pt)) brqrv (
-                                .clk(clk),
-                                .rst_l(core_rst),
-                                .*
-                                );
-
-   // Instantiate the mem
-   eb1_mem  #(.pt(pt)) mem (
-                             .clk(active_l2clk),
-                             .rst_l(rst_l),
-                             .iccm_rw_addr((core_rst) ? iccm_rw_addr : iccm_instr_addr[10:0]),
-                             .iccm_wren((core_rst) ? iccm_wren : iccm_instr_we),
-                             .iccm_wr_data((core_rst) ? iccm_wr_data : {7'h0,iccm_instr_wdata,7'h0,iccm_instr_wdata}),
-                             .iccm_wr_size((core_rst) ? iccm_wr_size : 3'b010),
-                             .*
-                             );
-   
-   eb1_iccm_controller iccm_controller(
-		.clk_i(clk),
-		.rst_ni(rst_l),
-		.rx_dv_i(rx_dv_i),
-		.rx_byte_i(rx_byte_i),
-		.we_o(iccm_instr_we),
-		.addr_o(iccm_instr_addr),
-		.wdata_o(iccm_instr_wdata),
-		.reset_o(core_rst)
-	);                          
-   eb1_uart_rx_prog uart_rx_m(
-		.i_Clock(clk),
-		.rst_ni(rst_l),
-		.i_Rx_Serial(uart_rx),
-		.CLKS_PER_BIT(CLKS_PER_BIT),
-		.o_Rx_DV(rx_dv_i),
-		.o_Rx_Byte(rx_byte_i)
-	);
- 
-
-   //  JTAG/DMI instance
-   dmi_wrapper  dmi_wrapper (
-    // JTAG signals
-    .trst_n      (jtag_trst_n),     // JTAG reset
-    .tck         (jtag_tck),        // JTAG clock
-    .tms         (jtag_tms),        // Test mode select
-    .tdi         (jtag_tdi),        // Test Data Input
-    .tdo         (jtag_tdo),        // Test Data Output
-    .tdoEnable   (),
-    // Processor Signals
-    .core_rst_n  (dbg_rst_l),       // Debug reset, active low
-    .core_clk    (clk),             // Core clock
-    .jtag_id     (jtag_id),         // JTAG ID
-    .rd_data     (dmi_reg_rdata),   // Read data from  Processor
-    .reg_wr_data (dmi_reg_wdata),   // Write data to Processor
-    .reg_wr_addr (dmi_reg_addr),    // Write address to Processor
-    .reg_en      (dmi_reg_en),      // Write interface bit to Processor
-    .reg_wr_en   (dmi_reg_wr_en),   // Write enable to Processor
-    .dmi_hard_reset   ()
-   );
-
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Function: Top level brqrv core file
-// Comments:
-//
-//********************************************************************************
-module eb1_brqrv
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic                  clk,
-   input logic                  rst_l,
-   input logic                  dbg_rst_l,
-   input logic [31:1]           rst_vec,
-   input logic                  nmi_int,
-   input logic [31:1]           nmi_vec,
-   output logic                 core_rst_l,   // This is "rst_l | dbg_rst_l"
-
-   output logic                 active_l2clk,
-   output logic                 free_l2clk,
-
-   output logic [31:0] trace_rv_i_insn_ip,
-   output logic [31:0] trace_rv_i_address_ip,
-   output logic   trace_rv_i_valid_ip,
-   output logic   trace_rv_i_exception_ip,
-   output logic [4:0]  trace_rv_i_ecause_ip,
-   output logic   trace_rv_i_interrupt_ip,
-   output logic [31:0] trace_rv_i_tval_ip,
-
-
-   output logic                 dccm_clk_override,
-   output logic                 icm_clk_override,
-   output logic                 dec_tlu_core_ecc_disable,
-
-   // external halt/run interface
-   input logic  i_cpu_halt_req,    // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,     // Asynchronous Restart request to CPU
-   output logic o_cpu_halt_ack,    // Core Acknowledge to Halt request
-   output logic o_cpu_halt_status, // 1'b1 indicates processor is halted
-   output logic o_cpu_run_ack,     // Core Acknowledge to run request
-   output logic o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id, // CORE ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req, // Async halt request
-   input logic mpc_debug_run_req, // Async run request
-   input logic mpc_reset_run_req, // Run/halt after reset
-   output logic mpc_debug_halt_ack, // Halt ack
-   output logic mpc_debug_run_ack, // Run ack
-   output logic debug_brkpt_status, // debug breakpoint
-
-   output logic dec_tlu_perfcnt0, // toggles when slot0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1,
-   output logic dec_tlu_perfcnt2,
-   output logic dec_tlu_perfcnt3,
-
-   // DCCM ports
-   output logic                          dccm_wren,
-   output logic                          dccm_rden,
-   output logic [pt.DCCM_BITS-1:0]          dccm_wr_addr_lo,
-   output logic [pt.DCCM_BITS-1:0]          dccm_wr_addr_hi,
-   output logic [pt.DCCM_BITS-1:0]          dccm_rd_addr_lo,
-   output logic [pt.DCCM_BITS-1:0]          dccm_rd_addr_hi,
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_wr_data_lo,
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_wr_data_hi,
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]    dccm_rd_data_lo,
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]    dccm_rd_data_hi,
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]           iccm_rw_addr,
-   output logic                  iccm_wren,
-   output logic                  iccm_rden,
-   output logic [2:0]            iccm_wr_size,
-   output logic [77:0]           iccm_wr_data,
-   output logic                  iccm_buf_correct_ecc,
-   output logic                  iccm_correction_state,
-
-   input  logic [63:0]          iccm_rd_data,
-   input  logic [77:0]           iccm_rd_data_ecc,
-
-   // ICache , ITAG  ports
-   output logic [31:1]           ic_rw_addr,
-   output logic [pt.ICACHE_NUM_WAYS-1:0]            ic_tag_valid,
-   output logic [pt.ICACHE_NUM_WAYS-1:0]            ic_wr_en,
-   output logic                  ic_rd_en,
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0][70:0]               ic_wr_data,         // Data to fill to the Icache. With ECC
-   input  logic [63:0]               ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]               ic_debug_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]               ictag_debug_rd_data,// Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,   // Debug wr cache.
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-   output logic [63:0]               ic_premux_data,     // Premux data to be muxed with each way of the Icache.
-   output logic                      ic_sel_premux_data, // Select premux data
-
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]            ic_rd_hit,
-   input  logic                  ic_tag_perr,        // Icache Tag parity error
-
-   //-------------------------- LSU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-   input  logic                            lsu_axi_rlast,
-
-   //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   input  logic                            ifu_axi_awready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   input  logic                            ifu_axi_wready,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   input  logic                            ifu_axi_bvalid,
-   output logic                            ifu_axi_bready,
-   input  logic [1:0]                      ifu_axi_bresp,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-   input  logic                            ifu_axi_rlast,
-
-   //-------------------------- SB AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            sb_axi_awvalid,
-   input  logic                            sb_axi_awready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_awid,
-   output logic [31:0]                     sb_axi_awaddr,
-   output logic [3:0]                      sb_axi_awregion,
-   output logic [7:0]                      sb_axi_awlen,
-   output logic [2:0]                      sb_axi_awsize,
-   output logic [1:0]                      sb_axi_awburst,
-   output logic                            sb_axi_awlock,
-   output logic [3:0]                      sb_axi_awcache,
-   output logic [2:0]                      sb_axi_awprot,
-   output logic [3:0]                      sb_axi_awqos,
-
-   output logic                            sb_axi_wvalid,
-   input  logic                            sb_axi_wready,
-   output logic [63:0]                     sb_axi_wdata,
-   output logic [7:0]                      sb_axi_wstrb,
-   output logic                            sb_axi_wlast,
-
-   input  logic                            sb_axi_bvalid,
-   output logic                            sb_axi_bready,
-   input  logic [1:0]                      sb_axi_bresp,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_bid,
-
-   // AXI Read Channels
-   output logic                            sb_axi_arvalid,
-   input  logic                            sb_axi_arready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_arid,
-   output logic [31:0]                     sb_axi_araddr,
-   output logic [3:0]                      sb_axi_arregion,
-   output logic [7:0]                      sb_axi_arlen,
-   output logic [2:0]                      sb_axi_arsize,
-   output logic [1:0]                      sb_axi_arburst,
-   output logic                            sb_axi_arlock,
-   output logic [3:0]                      sb_axi_arcache,
-   output logic [2:0]                      sb_axi_arprot,
-   output logic [3:0]                      sb_axi_arqos,
-
-   input  logic                            sb_axi_rvalid,
-   output logic                            sb_axi_rready,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_rid,
-   input  logic [63:0]                     sb_axi_rdata,
-   input  logic [1:0]                      sb_axi_rresp,
-   input  logic                            sb_axi_rlast,
-
-   //-------------------------- DMA AXI signals--------------------------
-   // AXI Write Channels
-   input  logic                         dma_axi_awvalid,
-   output logic                         dma_axi_awready,
-   input  logic [pt.DMA_BUS_TAG-1:0]    dma_axi_awid,
-   input  logic [31:0]                  dma_axi_awaddr,
-   input  logic [2:0]                   dma_axi_awsize,
-   input  logic [2:0]                   dma_axi_awprot,
-   input  logic [7:0]                   dma_axi_awlen,
-   input  logic [1:0]                   dma_axi_awburst,
-
-
-   input  logic                         dma_axi_wvalid,
-   output logic                         dma_axi_wready,
-   input  logic [63:0]                  dma_axi_wdata,
-   input  logic [7:0]                   dma_axi_wstrb,
-   input  logic                         dma_axi_wlast,
-
-   output logic                         dma_axi_bvalid,
-   input  logic                         dma_axi_bready,
-   output logic [1:0]                   dma_axi_bresp,
-   output logic [pt.DMA_BUS_TAG-1:0]    dma_axi_bid,
-
-   // AXI Read Channels
-   input  logic                         dma_axi_arvalid,
-   output logic                         dma_axi_arready,
-   input  logic [pt.DMA_BUS_TAG-1:0]    dma_axi_arid,
-   input  logic [31:0]                  dma_axi_araddr,
-   input  logic [2:0]                   dma_axi_arsize,
-   input  logic [2:0]                   dma_axi_arprot,
-   input  logic [7:0]                   dma_axi_arlen,
-   input  logic [1:0]                   dma_axi_arburst,
-
-   output logic                         dma_axi_rvalid,
-   input  logic                         dma_axi_rready,
-   output logic [pt.DMA_BUS_TAG-1:0]    dma_axi_rid,
-   output logic [63:0]                  dma_axi_rdata,
-   output logic [1:0]                   dma_axi_rresp,
-   output logic                         dma_axi_rlast,
-
-
- //// AHB LITE BUS
-   output logic [31:0]           haddr,
-   output logic [2:0]            hburst,
-   output logic                  hmastlock,
-   output logic [3:0]            hprot,
-   output logic [2:0]            hsize,
-   output logic [1:0]            htrans,
-   output logic                  hwrite,
-
-   input  logic [63:0]           hrdata,
-   input  logic                  hready,
-   input  logic                  hresp,
-
-   // LSU AHB Master
-   output logic [31:0]          lsu_haddr,
-   output logic [2:0]           lsu_hburst,
-   output logic                 lsu_hmastlock,
-   output logic [3:0]           lsu_hprot,
-   output logic [2:0]           lsu_hsize,
-   output logic [1:0]           lsu_htrans,
-   output logic                 lsu_hwrite,
-   output logic [63:0]          lsu_hwdata,
-
-   input  logic [63:0]          lsu_hrdata,
-   input  logic                 lsu_hready,
-   input  logic                 lsu_hresp,
-
-   //System Bus Debug Master
-   output logic [31:0]          sb_haddr,
-   output logic [2:0]           sb_hburst,
-   output logic                 sb_hmastlock,
-   output logic [3:0]           sb_hprot,
-   output logic [2:0]           sb_hsize,
-   output logic [1:0]           sb_htrans,
-   output logic                 sb_hwrite,
-   output logic [63:0]          sb_hwdata,
-
-   input  logic [63:0]          sb_hrdata,
-   input  logic                 sb_hready,
-   input  logic                 sb_hresp,
-
-   // DMA Slave
-   input logic                   dma_hsel,
-   input logic [31:0]            dma_haddr,
-   input logic [2:0]             dma_hburst,
-   input logic                   dma_hmastlock,
-   input logic [3:0]             dma_hprot,
-   input logic [2:0]             dma_hsize,
-   input logic [1:0]             dma_htrans,
-   input logic                   dma_hwrite,
-   input logic [63:0]            dma_hwdata,
-   input logic                   dma_hreadyin,
-
-   output  logic [63:0]          dma_hrdata,
-   output  logic                 dma_hreadyout,
-   output  logic                 dma_hresp,
-
-   input   logic                 lsu_bus_clk_en,
-   input   logic                 ifu_bus_clk_en,
-   input   logic                 dbg_bus_clk_en,
-   input   logic                 dma_bus_clk_en,
-
-   input logic                  dmi_reg_en,                // read or write
-   input logic [6:0]            dmi_reg_addr,              // address of DM register
-   input logic                  dmi_reg_wr_en,             // write instruction
-   input logic [31:0]           dmi_reg_wdata,             // write data
-   output logic [31:0]          dmi_reg_rdata,
-
-   input logic [pt.PIC_TOTAL_INT:1]           extintsrc_req,
-   input logic                   timer_int,
-   input logic                   soft_int,
-   input logic                   scan_mode
-);
-
-
-
-
-   logic [63:0]                  hwdata_nc;
-   //----------------------------------------------------------------------
-   //
-   //----------------------------------------------------------------------
-
-   logic                         ifu_pmu_instr_aligned;
-   logic                         ifu_ic_error_start;
-   logic                         ifu_iccm_rd_ecc_single_err;
-
-   logic                         lsu_axi_awready_ahb;
-   logic                         lsu_axi_wready_ahb;
-   logic                         lsu_axi_bvalid_ahb;
-   logic                         lsu_axi_bready_ahb;
-   logic [1:0]                   lsu_axi_bresp_ahb;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_bid_ahb;
-   logic                         lsu_axi_arready_ahb;
-   logic                         lsu_axi_rvalid_ahb;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_rid_ahb;
-   logic [63:0]                  lsu_axi_rdata_ahb;
-   logic [1:0]                   lsu_axi_rresp_ahb;
-   logic                         lsu_axi_rlast_ahb;
-
-   logic                         lsu_axi_awready_int;
-   logic                         lsu_axi_wready_int;
-   logic                         lsu_axi_bvalid_int;
-   logic                         lsu_axi_bready_int;
-   logic [1:0]                   lsu_axi_bresp_int;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_bid_int;
-   logic                         lsu_axi_arready_int;
-   logic                         lsu_axi_rvalid_int;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_rid_int;
-   logic [63:0]                  lsu_axi_rdata_int;
-   logic [1:0]                   lsu_axi_rresp_int;
-   logic                         lsu_axi_rlast_int;
-   
-   logic                         ifu_axi_awready_ahb;
-   logic                         ifu_axi_wready_ahb;
-   logic                         ifu_axi_bvalid_ahb;
-   logic                         ifu_axi_bready_ahb;
-   logic [1:0]                   ifu_axi_bresp_ahb;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_bid_ahb;
-   logic                         ifu_axi_arready_ahb;
-   logic                         ifu_axi_rvalid_ahb;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_rid_ahb;
-   logic [63:0]                  ifu_axi_rdata_ahb;
-   logic [1:0]                   ifu_axi_rresp_ahb;
-   logic                         ifu_axi_rlast_ahb;
-
-   logic                         ifu_axi_awready_int;
-   logic                         ifu_axi_wready_int;
-   logic                         ifu_axi_bvalid_int;
-   logic                         ifu_axi_bready_int;
-   logic [1:0]                   ifu_axi_bresp_int;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_bid_int;
-   logic                         ifu_axi_arready_int;
-   logic                         ifu_axi_rvalid_int;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_rid_int;
-   logic [63:0]                  ifu_axi_rdata_int;
-   logic [1:0]                   ifu_axi_rresp_int;
-   logic                         ifu_axi_rlast_int;
-
-   logic                         sb_axi_awready_ahb;
-   logic                         sb_axi_wready_ahb;
-   logic                         sb_axi_bvalid_ahb;
-   logic                         sb_axi_bready_ahb;
-   logic [1:0]                   sb_axi_bresp_ahb;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_bid_ahb;
-   logic                         sb_axi_arready_ahb;
-   logic                         sb_axi_rvalid_ahb;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_rid_ahb;
-   logic [63:0]                  sb_axi_rdata_ahb;
-   logic [1:0]                   sb_axi_rresp_ahb;
-   logic                         sb_axi_rlast_ahb;
-
-   logic                         sb_axi_awready_int;
-   logic                         sb_axi_wready_int;
-   logic                         sb_axi_bvalid_int;
-   logic                         sb_axi_bready_int;
-   logic [1:0]                   sb_axi_bresp_int;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_bid_int;
-   logic                         sb_axi_arready_int;
-   logic                         sb_axi_rvalid_int;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_rid_int;
-   logic [63:0]                  sb_axi_rdata_int;
-   logic [1:0]                   sb_axi_rresp_int;
-   logic                         sb_axi_rlast_int;
-
-   logic                         dma_axi_awvalid_ahb;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_awid_ahb;
-   logic [31:0]                  dma_axi_awaddr_ahb;
-   logic [2:0]                   dma_axi_awsize_ahb;
-   logic [2:0]                   dma_axi_awprot_ahb;
-   logic [7:0]                   dma_axi_awlen_ahb;
-   logic [1:0]                   dma_axi_awburst_ahb;
-   logic                         dma_axi_wvalid_ahb;
-   logic [63:0]                  dma_axi_wdata_ahb;
-   logic [7:0]                   dma_axi_wstrb_ahb;
-   logic                         dma_axi_wlast_ahb;
-   logic                         dma_axi_bready_ahb;
-   logic                         dma_axi_arvalid_ahb;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_arid_ahb;
-   logic [31:0]                  dma_axi_araddr_ahb;
-   logic [2:0]                   dma_axi_arsize_ahb;
-   logic [2:0]                   dma_axi_arprot_ahb;
-   logic [7:0]                   dma_axi_arlen_ahb;
-   logic [1:0]                   dma_axi_arburst_ahb;
-   logic                         dma_axi_rready_ahb;
-
-   logic                         dma_axi_awvalid_int;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_awid_int;
-   logic [31:0]                  dma_axi_awaddr_int;
-   logic [2:0]                   dma_axi_awsize_int;
-   logic [2:0]                   dma_axi_awprot_int;
-   logic [7:0]                   dma_axi_awlen_int;
-   logic [1:0]                   dma_axi_awburst_int;
-   logic                         dma_axi_wvalid_int;
-   logic [63:0]                  dma_axi_wdata_int;
-   logic [7:0]                   dma_axi_wstrb_int;
-   logic                         dma_axi_wlast_int;
-   logic                         dma_axi_bready_int;
-   logic                         dma_axi_arvalid_int;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_arid_int;
-   logic [31:0]                  dma_axi_araddr_int;
-   logic [2:0]                   dma_axi_arsize_int;
-   logic [2:0]                   dma_axi_arprot_int;
-   logic [7:0]                   dma_axi_arlen_int;
-   logic [1:0]                   dma_axi_arburst_int;
-   logic                         dma_axi_rready_int;
-
-
-// Icache debug
-   logic [70:0] ifu_ic_debug_rd_data; // diagnostic icache read data
-   logic ifu_ic_debug_rd_data_valid; // diagnostic icache read data valid
-   eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt; // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-
-
-   logic         dec_i0_rs1_en_d;
-   logic         dec_i0_rs2_en_d;
-   logic  [31:0] gpr_i0_rs1_d;
-   logic  [31:0] gpr_i0_rs2_d;
-
-   logic [31:0] dec_i0_result_r;
-   logic [31:0] exu_i0_result_x;
-   logic [31:1] exu_i0_pc_x;
-   logic [31:1] exu_npc_r;
-
-   eb1_alu_pkt_t  i0_ap;
-
-   // Trigger signals
-   eb1_trigger_pkt_t [3:0]     trigger_pkt_any;
-   logic [3:0]             lsu_trigger_match_m;
-
-
-   logic [31:0] dec_i0_immed_d;
-   logic [12:1] dec_i0_br_immed_d;
-   logic         dec_i0_select_pc_d;
-
-   logic [31:1] dec_i0_pc_d;
-   logic [3:0]  dec_i0_rs1_bypass_en_d;
-   logic [3:0]  dec_i0_rs2_bypass_en_d;
-
-   logic         dec_i0_alu_decode_d;
-   logic         dec_i0_branch_d;
-
-   logic         ifu_miss_state_idle;
-   logic         dec_tlu_flush_noredir_r;
-   logic         dec_tlu_flush_leak_one_r;
-   logic         dec_tlu_flush_err_r;
-   logic         ifu_i0_valid;
-   logic [31:0]  ifu_i0_instr;
-   logic [31:1]  ifu_i0_pc;
-
-   logic        exu_flush_final;
-
-   logic [31:1] exu_flush_path_final;
-
-   logic [31:0] exu_lsu_rs1_d;
-   logic [31:0] exu_lsu_rs2_d;
-
-
-   eb1_lsu_pkt_t    lsu_p;
-   logic             dec_qual_lsu_d;
-
-   logic        dec_lsu_valid_raw_d;
-   logic [11:0] dec_lsu_offset_d;
-
-   logic [31:0]  lsu_result_m;
-   logic [31:0]  lsu_result_corr_r;     // This is the ECC corrected data going to RF
-   logic         lsu_single_ecc_error_incr;     // Increment the ecc counter
-   eb1_lsu_error_pkt_t lsu_error_pkt_r;
-   logic         lsu_imprecise_error_load_any;
-   logic         lsu_imprecise_error_store_any;
-   logic [31:0]  lsu_imprecise_error_addr_any;
-   logic         lsu_load_stall_any;       // This is for blocking loads
-   logic         lsu_store_stall_any;      // This is for blocking stores
-   logic         lsu_idle_any;             // doesn't include DMA
-   logic         lsu_active;               // lsu is active. used for clock
-
-
-   logic [31:1]  lsu_fir_addr;        // fast interrupt address
-   logic [1:0]   lsu_fir_error;       // Error during fast interrupt lookup
-
-   // Non-blocking loads
-   logic                                 lsu_nonblock_load_valid_m;
-   logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]   lsu_nonblock_load_tag_m;
-   logic                                 lsu_nonblock_load_inv_r;
-   logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]   lsu_nonblock_load_inv_tag_r;
-   logic                                 lsu_nonblock_load_data_valid;
-   logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]   lsu_nonblock_load_data_tag;
-   logic [31:0]                          lsu_nonblock_load_data;
-
-   logic        dec_csr_ren_d;
-   logic [31:0] dec_csr_rddata_d;
-
-   logic [31:0] exu_csr_rs1_x;
-
-   logic        dec_tlu_i0_commit_cmt;
-   logic        dec_tlu_flush_lower_r;
-   logic        dec_tlu_flush_lower_wb;
-   logic        dec_tlu_i0_kill_writeb_r;     // I0 is flushed, don't writeback any results to arch state
-   logic        dec_tlu_fence_i_r;            // flush is a fence_i rfnpc, flush icache
-
-   logic [31:1] dec_tlu_flush_path_r;
-   logic [31:0] dec_tlu_mrac_ff;        // CSR for memory region control
-
-   logic        ifu_i0_pc4;
-
-   eb1_mul_pkt_t  mul_p;
-
-   eb1_div_pkt_t  div_p;
-   logic           dec_div_cancel;
-
-   logic [31:0] exu_div_result;
-   logic exu_div_wren;
-
-   logic dec_i0_decode_d;
-
-
-   logic [31:1] pred_correct_npc_x;
-
-   eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt;
-
-   eb1_predict_pkt_t  exu_mp_pkt;
-   logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_eghr;
-   logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_index;
-   logic [pt.BTB_BTAG_SIZE-1:0]          exu_mp_btag;
-
-   logic [pt.BHT_GHR_SIZE-1:0]  exu_i0_br_fghr_r;
-   logic [1:0]  exu_i0_br_hist_r;
-   logic        exu_i0_br_error_r;
-   logic        exu_i0_br_start_error_r;
-   logic        exu_i0_br_valid_r;
-   logic        exu_i0_br_mp_r;
-   logic        exu_i0_br_middle_r;
-
-   logic        exu_i0_br_way_r;
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r;
-
-   logic        dma_dccm_req;
-   logic        dma_iccm_req;
-   logic [2:0]  dma_mem_tag;
-   logic [31:0] dma_mem_addr;
-   logic [2:0]  dma_mem_sz;
-   logic        dma_mem_write;
-   logic [63:0] dma_mem_wdata;
-
-   logic        dccm_dma_rvalid;
-   logic        dccm_dma_ecc_error;
-   logic [2:0]  dccm_dma_rtag;
-   logic [63:0] dccm_dma_rdata;
-   logic        iccm_dma_rvalid;
-   logic        iccm_dma_ecc_error;
-   logic [2:0]  iccm_dma_rtag;
-   logic [63:0] iccm_dma_rdata;
-
-   logic        dma_dccm_stall_any;       // Stall the ld/st in decode if asserted
-   logic        dma_iccm_stall_any;       // Stall the fetch
-   logic        dccm_ready;
-   logic        iccm_ready;
-
-   logic        dma_pmu_dccm_read;
-   logic        dma_pmu_dccm_write;
-   logic        dma_pmu_any_read;
-   logic        dma_pmu_any_write;
-
-   logic        ifu_i0_icaf;
-   logic [1:0]  ifu_i0_icaf_type;
-
-
-   logic        ifu_i0_icaf_second;
-   logic        ifu_i0_dbecc;
-   logic        iccm_dma_sb_error;
-
-   eb1_br_pkt_t i0_brp;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index;
-   logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr;
-   logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag;
-
-   logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index;
-   logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index; // Fully associative btb error index
-
-
-   eb1_predict_pkt_t dec_i0_predict_p_d;
-
-   logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d;                // DEC predict fghr
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d;     // DEC predict index
-   logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d;               // DEC predict branch tag
-
-   // PIC ports
-   logic                  picm_wren;
-   logic                  picm_rden;
-   logic                  picm_mken;
-   logic [31:0]           picm_rdaddr;
-   logic [31:0]           picm_wraddr;
-   logic [31:0]           picm_wr_data;
-   logic [31:0]           picm_rd_data;
-
-   // feature disable from mfdc
-   logic  dec_tlu_external_ldfwd_disable; // disable external load forwarding
-   logic  dec_tlu_bpred_disable;
-   logic  dec_tlu_wb_coalescing_disable;
-   logic  dec_tlu_sideeffect_posted_disable;
-   logic [2:0] dec_tlu_dma_qos_prty;         // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   logic  dec_tlu_misc_clk_override;
-   logic  dec_tlu_ifu_clk_override;
-   logic  dec_tlu_lsu_clk_override;
-   logic  dec_tlu_bus_clk_override;
-   logic  dec_tlu_pic_clk_override;
-   logic  dec_tlu_dccm_clk_override;
-   logic  dec_tlu_icm_clk_override;
-
-   logic  dec_tlu_picio_clk_override;
-
-   assign        dccm_clk_override = dec_tlu_dccm_clk_override;   // dccm memory
-   assign        icm_clk_override = dec_tlu_icm_clk_override;    // icache/iccm memory
-
-   // -----------------------DEBUG  START -------------------------------
-
-   logic [31:0]            dbg_cmd_addr;              // the address of the debug command to used by the core
-   logic [31:0]            dbg_cmd_wrdata;            // If the debug command is a write command, this has the data to be written to the CSR/GPR
-   logic                   dbg_cmd_valid;             // commad is being driven by the dbg module. One pulse. Only dirven when core_halted has been seen
-   logic                   dbg_cmd_write;             // 1: write command; 0: read_command
-   logic [1:0]             dbg_cmd_type;              // 0:gpr 1:csr 2: memory
-   logic [1:0]             dbg_cmd_size;              // size of the abstract mem access debug command
-   logic                   dbg_halt_req;              // Sticky signal indicating that the debug module wants to start the entering of debug mode ( start the halting sequence )
-   logic                   dbg_resume_req;            // Sticky signal indicating that the debug module wants to resume from debug mode
-   logic                   dbg_core_rst_l;            // Core reset from DM
-
-   logic                   core_dbg_cmd_done;         // Final muxed cmd done to debug
-   logic                   core_dbg_cmd_fail;         // Final muxed cmd done to debug
-   logic [31:0]            core_dbg_rddata;           // Final muxed cmd done to debug
-
-   logic                   dma_dbg_cmd_done;          // Abstarct memory command sent to dma is done
-   logic                   dma_dbg_cmd_fail;          // Abstarct memory command sent to dma failed
-   logic [31:0]            dma_dbg_rddata;            // Read data for abstract memory access
-
-   logic                   dbg_dma_bubble;            // Debug needs a bubble to send a valid
-   logic                   dma_dbg_ready;             // DMA is ready to accept debug request
-
-   logic [31:0]            dec_dbg_rddata;            // The core drives this data ( intercepts the pipe and sends it here )
-   logic                   dec_dbg_cmd_done;          // This will be treated like a valid signal
-   logic                   dec_dbg_cmd_fail;          // Abstract command failed
-   logic                   dec_tlu_mpc_halted_only;   // Only halted due to MPC
-   logic                   dec_tlu_dbg_halted;        // The core has finished the queiscing sequence. Sticks this signal high
-   logic                   dec_tlu_resume_ack;
-   logic                   dec_tlu_debug_mode;        // Core is in debug mode
-   logic                   dec_debug_wdata_rs1_d;
-   logic                   dec_tlu_force_halt;        // halt has been forced
-
-   logic [1:0]             dec_data_en;
-   logic [1:0]             dec_ctl_en;
-
-   // PMU Signals
-   logic                   exu_pmu_i0_br_misp;
-   logic                   exu_pmu_i0_br_ataken;
-   logic                   exu_pmu_i0_pc4;
-
-   logic                   lsu_pmu_load_external_m;
-   logic                   lsu_pmu_store_external_m;
-   logic                   lsu_pmu_misaligned_m;
-   logic                   lsu_pmu_bus_trxn;
-   logic                   lsu_pmu_bus_misaligned;
-   logic                   lsu_pmu_bus_error;
-   logic                   lsu_pmu_bus_busy;
-
-   logic                   ifu_pmu_fetch_stall;
-   logic                   ifu_pmu_ic_miss;
-   logic                   ifu_pmu_ic_hit;
-   logic                   ifu_pmu_bus_error;
-   logic                   ifu_pmu_bus_busy;
-   logic                   ifu_pmu_bus_trxn;
-
-   logic                   active_state;
-   logic                   free_clk;
-   logic                   active_clk;
-   logic                   dec_pause_state_cg;
-
-   logic                   lsu_nonblock_load_data_error;
-
-   logic [15:0]            ifu_i0_cinst;
-
-// fast interrupt
-   logic [31:2]            dec_tlu_meihap;
-   logic                   dec_extint_stall;
-
-   eb1_trace_pkt_t  trace_rv_trace_pkt;
-
-
-   logic                   lsu_fastint_stall_any;
-
-   logic [7:0]  pic_claimid;
-   logic [3:0]  pic_pl, dec_tlu_meicurpl, dec_tlu_meipt;
-   logic        mexintpend;
-   logic        mhwakeup;
-
-   logic        dma_active;
-
-
-   logic        pause_state;
-   logic        halt_state;
-
-   logic        dec_tlu_core_empty;
-   
-
-   assign pause_state = dec_pause_state_cg & ~(dma_active | lsu_active) & dec_tlu_core_empty;
-
-   assign halt_state = o_cpu_halt_status & ~(dma_active | lsu_active);
-
-
-   assign active_state = (~(halt_state | pause_state) | dec_tlu_flush_lower_r | dec_tlu_flush_lower_wb)  | dec_tlu_misc_clk_override;
-
-   rvoclkhdr free_cg2   ( .clk(clk), .en(1'b1),         .l1clk(free_l2clk), .* );
-   rvoclkhdr active_cg2 ( .clk(clk), .en(active_state), .l1clk(active_l2clk), .* );
-
-// all other clock headers are 1st level
-   rvoclkhdr free_cg1   ( .clk(free_l2clk),     .en(1'b1), .l1clk(free_clk), .* );
-   rvoclkhdr active_cg1 ( .clk(active_l2clk),   .en(1'b1), .l1clk(active_clk), .* );
-
-
-   assign core_dbg_cmd_done = dma_dbg_cmd_done | dec_dbg_cmd_done;
-   assign core_dbg_cmd_fail = dma_dbg_cmd_fail | dec_dbg_cmd_fail;
-   assign core_dbg_rddata[31:0] = dma_dbg_cmd_done ? dma_dbg_rddata[31:0] : dec_dbg_rddata[31:0];
-
-   eb1_dbg #(.pt(pt)) dbg (
-      .rst_l(core_rst_l),
-      .clk(free_l2clk),
-      .clk_override(dec_tlu_misc_clk_override),
-
-      // AXI signals
-      .sb_axi_awready(sb_axi_awready_int),
-      .sb_axi_wready(sb_axi_wready_int),
-      .sb_axi_bvalid(sb_axi_bvalid_int),
-      .sb_axi_bresp(sb_axi_bresp_int[1:0]),
-
-      .sb_axi_arready(sb_axi_arready_int),
-      .sb_axi_rvalid(sb_axi_rvalid_int),
-      .sb_axi_rdata(sb_axi_rdata_int[63:0]),
-      .sb_axi_rresp(sb_axi_rresp_int[1:0]),
-      .*
-   );
-
-   // -----------------   DEBUG END -----------------------------
-
-   assign core_rst_l = rst_l & (dbg_core_rst_l | scan_mode);
-   // fetch
-   eb1_ifu #(.pt(pt)) ifu (
-                            .clk(active_l2clk),
-                            .rst_l(core_rst_l),
-                            .dec_tlu_flush_err_wb       (dec_tlu_flush_err_r      ),
-                            .dec_tlu_flush_noredir_wb   (dec_tlu_flush_noredir_r  ),
-                            .dec_tlu_fence_i_wb         (dec_tlu_fence_i_r        ),
-                            .dec_tlu_flush_leak_one_wb  (dec_tlu_flush_leak_one_r ),
-                            .dec_tlu_flush_lower_wb     (dec_tlu_flush_lower_r    ),
-
-                            // AXI signals
-                            .ifu_axi_arready(ifu_axi_arready_int),
-                            .ifu_axi_rvalid(ifu_axi_rvalid_int),
-                            .ifu_axi_rid(ifu_axi_rid_int[pt.IFU_BUS_TAG-1:0]),
-                            .ifu_axi_rdata(ifu_axi_rdata_int[63:0]),
-                            .ifu_axi_rresp(ifu_axi_rresp_int[1:0]),
-                            .exu_flush_final(exu_flush_final),
-
-                            .*
-                            );
-
-
-   eb1_dec #(.pt(pt)) dec (
-                            .clk(active_l2clk),
-                            .dbg_cmd_wrdata(dbg_cmd_wrdata[1:0]),
-                            .rst_l(core_rst_l),
-                            .i_cpu_halt_req(i_cpu_halt_req),
-                            .i_cpu_run_req(i_cpu_run_req),  
-                            .*
-                            );
-
-   eb1_exu #(.pt(pt)) exu (
-                            .clk(active_l2clk),
-                            .rst_l(core_rst_l),
-                            .*
-                            );
-
-   eb1_lsu #(.pt(pt)) lsu (
-                            .clk(active_l2clk),
-                            .rst_l(core_rst_l),
-                            .clk_override(dec_tlu_lsu_clk_override),
-                            .dec_tlu_i0_kill_writeb_r(dec_tlu_i0_kill_writeb_r),
-
-                            // AXI signals
-                            .lsu_axi_awready(lsu_axi_awready_int),
-                            .lsu_axi_wready(lsu_axi_wready_int),
-                            .lsu_axi_bvalid(lsu_axi_bvalid_int),
-                            .lsu_axi_bid(lsu_axi_bid_int[pt.LSU_BUS_TAG-1:0]),
-                            .lsu_axi_bresp(lsu_axi_bresp_int[1:0]),
-
-                            .lsu_axi_arready(lsu_axi_arready_int),
-                            .lsu_axi_rvalid(lsu_axi_rvalid_int),
-                            .lsu_axi_rid(lsu_axi_rid_int[pt.LSU_BUS_TAG-1:0]),
-                            .lsu_axi_rdata(lsu_axi_rdata_int[63:0]),
-                            .lsu_axi_rresp(lsu_axi_rresp_int[1:0]),
-                            .lsu_axi_rlast(lsu_axi_rlast_int),
-
-                            .*
-
-                            );
-
-
-   eb1_pic_ctrl  #(.pt(pt)) pic_ctrl_inst (
-                                            .clk(free_l2clk),
-                                            .clk_override(dec_tlu_pic_clk_override),
-                                            .io_clk_override(dec_tlu_picio_clk_override),
-                                            .picm_mken (picm_mken),
-                                            .extintsrc_req({extintsrc_req[pt.PIC_TOTAL_INT:1],1'b0}),
-                                            .pl(pic_pl[3:0]),
-                                            .claimid(pic_claimid[7:0]),
-                                            .meicurpl(dec_tlu_meicurpl[3:0]),
-                                            .meipt(dec_tlu_meipt[3:0]),
-                                            .rst_l(core_rst_l),
-                                            .*);
-
-   eb1_dma_ctrl #(.pt(pt)) dma_ctrl (
-                                      .clk(free_l2clk),
-                                      .rst_l(core_rst_l),
-                                      .clk_override(dec_tlu_misc_clk_override),
-
-                                      // AXI signals
-                                      .dma_axi_awvalid(dma_axi_awvalid_int),
-                                      .dma_axi_awid(dma_axi_awid_int[pt.DMA_BUS_TAG-1:0]),
-                                      .dma_axi_awaddr(dma_axi_awaddr_int[31:0]),
-                                      .dma_axi_awsize(dma_axi_awsize_int[2:0]),
-                                      .dma_axi_wvalid(dma_axi_wvalid_int),
-                                      .dma_axi_wdata(dma_axi_wdata_int[63:0]),
-                                      .dma_axi_wstrb(dma_axi_wstrb_int[7:0]),
-                                      .dma_axi_bready(dma_axi_bready_int),
-
-                                      .dma_axi_arvalid(dma_axi_arvalid_int),
-                                      .dma_axi_arid(dma_axi_arid_int[pt.DMA_BUS_TAG-1:0]),
-                                      .dma_axi_araddr(dma_axi_araddr_int[31:0]),
-                                      .dma_axi_arsize(dma_axi_arsize_int[2:0]),
-                                      .dma_axi_rready(dma_axi_rready_int),
-
-                                      .*
-                                      );
-
-   if (pt.BUILD_AHB_LITE == 1) begin: Gen_AXI_To_AHB
-
-      // AXI4 -> AHB Gasket for LSU
-      axi4_to_ahb #(.pt(pt),
-                    .TAG(pt.LSU_BUS_TAG)) lsu_axi4_to_ahb (
-
-         .clk(free_l2clk),
-         .free_clk(free_clk),
-         .rst_l(core_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(lsu_bus_clk_en),
-         .dec_tlu_force_halt(dec_tlu_force_halt),
-
-         // AXI Write Channels
-         .axi_awvalid(lsu_axi_awvalid),
-         .axi_awready(lsu_axi_awready_ahb),
-         .axi_awid(lsu_axi_awid[pt.LSU_BUS_TAG-1:0]),
-         .axi_awaddr(lsu_axi_awaddr[31:0]),
-         .axi_awsize(lsu_axi_awsize[2:0]),
-         .axi_awprot(lsu_axi_awprot[2:0]),
-
-         .axi_wvalid(lsu_axi_wvalid),
-         .axi_wready(lsu_axi_wready_ahb),
-         .axi_wdata(lsu_axi_wdata[63:0]),
-         .axi_wstrb(lsu_axi_wstrb[7:0]),
-         .axi_wlast(lsu_axi_wlast),
-
-         .axi_bvalid(lsu_axi_bvalid_ahb),
-         .axi_bready(lsu_axi_bready),
-         .axi_bresp(lsu_axi_bresp_ahb[1:0]),
-         .axi_bid(lsu_axi_bid_ahb[pt.LSU_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(lsu_axi_arvalid),
-         .axi_arready(lsu_axi_arready_ahb),
-         .axi_arid(lsu_axi_arid[pt.LSU_BUS_TAG-1:0]),
-         .axi_araddr(lsu_axi_araddr[31:0]),
-         .axi_arsize(lsu_axi_arsize[2:0]),
-         .axi_arprot(lsu_axi_arprot[2:0]),
-
-         .axi_rvalid(lsu_axi_rvalid_ahb),
-         .axi_rready(lsu_axi_rready),
-         .axi_rid(lsu_axi_rid_ahb[pt.LSU_BUS_TAG-1:0]),
-         .axi_rdata(lsu_axi_rdata_ahb[63:0]),
-         .axi_rresp(lsu_axi_rresp_ahb[1:0]),
-         .axi_rlast(lsu_axi_rlast_ahb),
-
-         // AHB-LITE signals
-         .ahb_haddr(lsu_haddr[31:0]),
-         .ahb_hburst(lsu_hburst),
-         .ahb_hmastlock(lsu_hmastlock),
-         .ahb_hprot(lsu_hprot[3:0]),
-         .ahb_hsize(lsu_hsize[2:0]),
-         .ahb_htrans(lsu_htrans[1:0]),
-         .ahb_hwrite(lsu_hwrite),
-         .ahb_hwdata(lsu_hwdata[63:0]),
-
-         .ahb_hrdata(lsu_hrdata[63:0]),
-         .ahb_hready(lsu_hready),
-         .ahb_hresp(lsu_hresp),
-
-         .*
-      );
-
-      axi4_to_ahb #(.pt(pt),
-                    .TAG(pt.IFU_BUS_TAG)) ifu_axi4_to_ahb (
-         .clk(free_l2clk),
-         .free_clk(free_clk),
-         .rst_l(core_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(ifu_bus_clk_en),
-         .dec_tlu_force_halt(dec_tlu_force_halt),
-
-          // AHB-Lite signals
-         .ahb_haddr(haddr[31:0]),
-         .ahb_hburst(hburst),
-         .ahb_hmastlock(hmastlock),
-         .ahb_hprot(hprot[3:0]),
-         .ahb_hsize(hsize[2:0]),
-         .ahb_htrans(htrans[1:0]),
-         .ahb_hwrite(hwrite),
-         .ahb_hwdata(hwdata_nc[63:0]),
-
-         .ahb_hrdata(hrdata[63:0]),
-         .ahb_hready(hready),
-         .ahb_hresp(hresp),
-
-         // AXI Write Channels
-         .axi_awvalid(ifu_axi_awvalid),
-         .axi_awready(ifu_axi_awready_ahb),
-         .axi_awid(ifu_axi_awid[pt.IFU_BUS_TAG-1:0]),
-         .axi_awaddr(ifu_axi_awaddr[31:0]),
-         .axi_awsize(ifu_axi_awsize[2:0]),
-         .axi_awprot(ifu_axi_awprot[2:0]),
-
-         .axi_wvalid(ifu_axi_wvalid),
-         .axi_wready(ifu_axi_wready_ahb),
-         .axi_wdata(ifu_axi_wdata[63:0]),
-         .axi_wstrb(ifu_axi_wstrb[7:0]),
-         .axi_wlast(ifu_axi_wlast),
-
-         .axi_bvalid(ifu_axi_bvalid_ahb),
-         .axi_bready(1'b1),
-         .axi_bresp(ifu_axi_bresp_ahb[1:0]),
-         .axi_bid(ifu_axi_bid_ahb[pt.IFU_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(ifu_axi_arvalid),
-         .axi_arready(ifu_axi_arready_ahb),
-         .axi_arid(ifu_axi_arid[pt.IFU_BUS_TAG-1:0]),
-         .axi_araddr(ifu_axi_araddr[31:0]),
-         .axi_arsize(ifu_axi_arsize[2:0]),
-         .axi_arprot(ifu_axi_arprot[2:0]),
-
-         .axi_rvalid(ifu_axi_rvalid_ahb),
-         .axi_rready(ifu_axi_rready),
-         .axi_rid(ifu_axi_rid_ahb[pt.IFU_BUS_TAG-1:0]),
-         .axi_rdata(ifu_axi_rdata_ahb[63:0]),
-         .axi_rresp(ifu_axi_rresp_ahb[1:0]),
-         .axi_rlast(ifu_axi_rlast_ahb),
-         .*
-      );
-
-      // AXI4 -> AHB Gasket for System Bus
-      axi4_to_ahb #(.pt(pt),
-                    .TAG(pt.SB_BUS_TAG)) sb_axi4_to_ahb (
-         .clk(free_l2clk),
-         .free_clk(free_clk),
-         .rst_l(dbg_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(dbg_bus_clk_en),
-         .dec_tlu_force_halt(1'b0),
-
-         // AXI Write Channels
-         .axi_awvalid(sb_axi_awvalid),
-         .axi_awready(sb_axi_awready_ahb),
-         .axi_awid(sb_axi_awid[pt.SB_BUS_TAG-1:0]),
-         .axi_awaddr(sb_axi_awaddr[31:0]),
-         .axi_awsize(sb_axi_awsize[2:0]),
-         .axi_awprot(sb_axi_awprot[2:0]),
-
-         .axi_wvalid(sb_axi_wvalid),
-         .axi_wready(sb_axi_wready_ahb),
-         .axi_wdata(sb_axi_wdata[63:0]),
-         .axi_wstrb(sb_axi_wstrb[7:0]),
-         .axi_wlast(sb_axi_wlast),
-
-         .axi_bvalid(sb_axi_bvalid_ahb),
-         .axi_bready(sb_axi_bready),
-         .axi_bresp(sb_axi_bresp_ahb[1:0]),
-         .axi_bid(sb_axi_bid_ahb[pt.SB_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(sb_axi_arvalid),
-         .axi_arready(sb_axi_arready_ahb),
-         .axi_arid(sb_axi_arid[pt.SB_BUS_TAG-1:0]),
-         .axi_araddr(sb_axi_araddr[31:0]),
-         .axi_arsize(sb_axi_arsize[2:0]),
-         .axi_arprot(sb_axi_arprot[2:0]),
-
-         .axi_rvalid(sb_axi_rvalid_ahb),
-         .axi_rready(sb_axi_rready),
-         .axi_rid(sb_axi_rid_ahb[pt.SB_BUS_TAG-1:0]),
-         .axi_rdata(sb_axi_rdata_ahb[63:0]),
-         .axi_rresp(sb_axi_rresp_ahb[1:0]),
-         .axi_rlast(sb_axi_rlast_ahb),
-         // AHB-LITE signals
-         .ahb_haddr(sb_haddr[31:0]),
-         .ahb_hburst(sb_hburst),
-         .ahb_hmastlock(sb_hmastlock),
-         .ahb_hprot(sb_hprot[3:0]),
-         .ahb_hsize(sb_hsize[2:0]),
-         .ahb_htrans(sb_htrans[1:0]),
-         .ahb_hwrite(sb_hwrite),
-         .ahb_hwdata(sb_hwdata[63:0]),
-
-         .ahb_hrdata(sb_hrdata[63:0]),
-         .ahb_hready(sb_hready),
-         .ahb_hresp(sb_hresp),
-
-         .*
-      );
-
-      //AHB -> AXI4 Gasket for DMA
-      ahb_to_axi4 #(.pt(pt),
-                    .TAG(pt.DMA_BUS_TAG)) dma_ahb_to_axi4 (
-         .clk(free_l2clk),
-         .rst_l(core_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(dma_bus_clk_en),
-
-         // AXI Write Channels
-         .axi_awvalid(dma_axi_awvalid_ahb),
-         .axi_awready(dma_axi_awready),
-         .axi_awid(dma_axi_awid_ahb[pt.DMA_BUS_TAG-1:0]),
-         .axi_awaddr(dma_axi_awaddr_ahb[31:0]),
-         .axi_awsize(dma_axi_awsize_ahb[2:0]),
-         .axi_awprot(dma_axi_awprot_ahb[2:0]),
-         .axi_awlen(dma_axi_awlen_ahb[7:0]),
-         .axi_awburst(dma_axi_awburst_ahb[1:0]),
-
-         .axi_wvalid(dma_axi_wvalid_ahb),
-         .axi_wready(dma_axi_wready),
-         .axi_wdata(dma_axi_wdata_ahb[63:0]),
-         .axi_wstrb(dma_axi_wstrb_ahb[7:0]),
-         .axi_wlast(dma_axi_wlast_ahb),
-
-         .axi_bvalid(dma_axi_bvalid),
-         .axi_bready(dma_axi_bready_ahb),
-         .axi_bresp(dma_axi_bresp[1:0]),
-         .axi_bid(dma_axi_bid[pt.DMA_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(dma_axi_arvalid_ahb),
-         .axi_arready(dma_axi_arready),
-         .axi_arid(dma_axi_arid_ahb[pt.DMA_BUS_TAG-1:0]),
-         .axi_araddr(dma_axi_araddr_ahb[31:0]),
-         .axi_arsize(dma_axi_arsize_ahb[2:0]),
-         .axi_arprot(dma_axi_arprot_ahb[2:0]),
-         .axi_arlen(dma_axi_arlen_ahb[7:0]),
-         .axi_arburst(dma_axi_arburst_ahb[1:0]),
-
-         .axi_rvalid(dma_axi_rvalid),
-         .axi_rready(dma_axi_rready_ahb),
-         .axi_rid(dma_axi_rid[pt.DMA_BUS_TAG-1:0]),
-         .axi_rdata(dma_axi_rdata[63:0]),
-         .axi_rresp(dma_axi_rresp[1:0]),
-
-          // AHB signals
-         .ahb_haddr(dma_haddr[31:0]),
-         .ahb_hburst(dma_hburst),
-         .ahb_hmastlock(dma_hmastlock),
-         .ahb_hprot(dma_hprot[3:0]),
-         .ahb_hsize(dma_hsize[2:0]),
-         .ahb_htrans(dma_htrans[1:0]),
-         .ahb_hwrite(dma_hwrite),
-         .ahb_hwdata(dma_hwdata[63:0]),
-
-         .ahb_hrdata(dma_hrdata[63:0]),
-         .ahb_hreadyout(dma_hreadyout),
-         .ahb_hresp(dma_hresp),
-         .ahb_hreadyin(dma_hreadyin),
-         .ahb_hsel(dma_hsel),
-         .*
-      );
-
-   end
-
-   // Drive the final AXI inputs
-   assign lsu_axi_awready_int                 = pt.BUILD_AHB_LITE ? lsu_axi_awready_ahb : lsu_axi_awready;
-   assign lsu_axi_wready_int                  = pt.BUILD_AHB_LITE ? lsu_axi_wready_ahb : lsu_axi_wready;
-   assign lsu_axi_bvalid_int                  = pt.BUILD_AHB_LITE ? lsu_axi_bvalid_ahb : lsu_axi_bvalid;
-   assign lsu_axi_bready_int                  = pt.BUILD_AHB_LITE ? lsu_axi_bready_ahb : lsu_axi_bready;
-   assign lsu_axi_bresp_int[1:0]              = pt.BUILD_AHB_LITE ? lsu_axi_bresp_ahb[1:0] : lsu_axi_bresp[1:0];
-   assign lsu_axi_bid_int[pt.LSU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? lsu_axi_bid_ahb[pt.LSU_BUS_TAG-1:0] : lsu_axi_bid[pt.LSU_BUS_TAG-1:0];
-   assign lsu_axi_arready_int                 = pt.BUILD_AHB_LITE ? lsu_axi_arready_ahb : lsu_axi_arready;
-   assign lsu_axi_rvalid_int                  = pt.BUILD_AHB_LITE ? lsu_axi_rvalid_ahb : lsu_axi_rvalid;
-   assign lsu_axi_rid_int[pt.LSU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? lsu_axi_rid_ahb[pt.LSU_BUS_TAG-1:0] : lsu_axi_rid[pt.LSU_BUS_TAG-1:0];
-   assign lsu_axi_rdata_int[63:0]             = pt.BUILD_AHB_LITE ? lsu_axi_rdata_ahb[63:0] : lsu_axi_rdata[63:0];
-   assign lsu_axi_rresp_int[1:0]              = pt.BUILD_AHB_LITE ? lsu_axi_rresp_ahb[1:0] : lsu_axi_rresp[1:0];
-   assign lsu_axi_rlast_int                   = pt.BUILD_AHB_LITE ? lsu_axi_rlast_ahb : lsu_axi_rlast;
-
-   assign ifu_axi_awready_int                 = pt.BUILD_AHB_LITE ? ifu_axi_awready_ahb : ifu_axi_awready;
-   assign ifu_axi_wready_int                  = pt.BUILD_AHB_LITE ? ifu_axi_wready_ahb : ifu_axi_wready;
-   assign ifu_axi_bvalid_int                  = pt.BUILD_AHB_LITE ? ifu_axi_bvalid_ahb : ifu_axi_bvalid;
-   assign ifu_axi_bready_int                  = pt.BUILD_AHB_LITE ? ifu_axi_bready_ahb : ifu_axi_bready;
-   assign ifu_axi_bresp_int[1:0]              = pt.BUILD_AHB_LITE ? ifu_axi_bresp_ahb[1:0] : ifu_axi_bresp[1:0];
-   assign ifu_axi_bid_int[pt.IFU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? ifu_axi_bid_ahb[pt.IFU_BUS_TAG-1:0] : ifu_axi_bid[pt.IFU_BUS_TAG-1:0];
-   assign ifu_axi_arready_int                 = pt.BUILD_AHB_LITE ? ifu_axi_arready_ahb : ifu_axi_arready;
-   assign ifu_axi_rvalid_int                  = pt.BUILD_AHB_LITE ? ifu_axi_rvalid_ahb : ifu_axi_rvalid;
-   assign ifu_axi_rid_int[pt.IFU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? ifu_axi_rid_ahb[pt.IFU_BUS_TAG-1:0] : ifu_axi_rid[pt.IFU_BUS_TAG-1:0];
-   assign ifu_axi_rdata_int[63:0]             = pt.BUILD_AHB_LITE ? ifu_axi_rdata_ahb[63:0] : ifu_axi_rdata[63:0];
-   assign ifu_axi_rresp_int[1:0]              = pt.BUILD_AHB_LITE ? ifu_axi_rresp_ahb[1:0] : ifu_axi_rresp[1:0];
-   assign ifu_axi_rlast_int                   = pt.BUILD_AHB_LITE ? ifu_axi_rlast_ahb : ifu_axi_rlast;
-
-   assign sb_axi_awready_int                  = pt.BUILD_AHB_LITE ? sb_axi_awready_ahb : sb_axi_awready;
-   assign sb_axi_wready_int                   = pt.BUILD_AHB_LITE ? sb_axi_wready_ahb : sb_axi_wready;
-   assign sb_axi_bvalid_int                   = pt.BUILD_AHB_LITE ? sb_axi_bvalid_ahb : sb_axi_bvalid;
-   assign sb_axi_bready_int                   = pt.BUILD_AHB_LITE ? sb_axi_bready_ahb : sb_axi_bready;
-   assign sb_axi_bresp_int[1:0]               = pt.BUILD_AHB_LITE ? sb_axi_bresp_ahb[1:0] : sb_axi_bresp[1:0];
-   assign sb_axi_bid_int[pt.SB_BUS_TAG-1:0]   = pt.BUILD_AHB_LITE ? sb_axi_bid_ahb[pt.SB_BUS_TAG-1:0] : sb_axi_bid[pt.SB_BUS_TAG-1:0];
-   assign sb_axi_arready_int                  = pt.BUILD_AHB_LITE ? sb_axi_arready_ahb : sb_axi_arready;
-   assign sb_axi_rvalid_int                   = pt.BUILD_AHB_LITE ? sb_axi_rvalid_ahb : sb_axi_rvalid;
-   assign sb_axi_rid_int[pt.SB_BUS_TAG-1:0]   = pt.BUILD_AHB_LITE ? sb_axi_rid_ahb[pt.SB_BUS_TAG-1:0] : sb_axi_rid[pt.SB_BUS_TAG-1:0];
-   assign sb_axi_rdata_int[63:0]              = pt.BUILD_AHB_LITE ? sb_axi_rdata_ahb[63:0] : sb_axi_rdata[63:0];
-   assign sb_axi_rresp_int[1:0]               = pt.BUILD_AHB_LITE ? sb_axi_rresp_ahb[1:0] : sb_axi_rresp[1:0];
-   assign sb_axi_rlast_int                    = pt.BUILD_AHB_LITE ? sb_axi_rlast_ahb : sb_axi_rlast;
-
-   assign dma_axi_awvalid_int                  = pt.BUILD_AHB_LITE ? dma_axi_awvalid_ahb : dma_axi_awvalid;
-   assign dma_axi_awid_int[pt.DMA_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? dma_axi_awid_ahb[pt.DMA_BUS_TAG-1:0] : dma_axi_awid[pt.DMA_BUS_TAG-1:0];
-   assign dma_axi_awaddr_int[31:0]             = pt.BUILD_AHB_LITE ? dma_axi_awaddr_ahb[31:0] : dma_axi_awaddr[31:0];
-   assign dma_axi_awsize_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_awsize_ahb[2:0] : dma_axi_awsize[2:0];
-   assign dma_axi_awprot_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_awprot_ahb[2:0] : dma_axi_awprot[2:0];
-   assign dma_axi_awlen_int[7:0]               = pt.BUILD_AHB_LITE ? dma_axi_awlen_ahb[7:0] : dma_axi_awlen[7:0];
-   assign dma_axi_awburst_int[1:0]             = pt.BUILD_AHB_LITE ? dma_axi_awburst_ahb[1:0] : dma_axi_awburst[1:0];
-   assign dma_axi_wvalid_int                   = pt.BUILD_AHB_LITE ? dma_axi_wvalid_ahb : dma_axi_wvalid;
-   assign dma_axi_wdata_int[63:0]              = pt.BUILD_AHB_LITE ? dma_axi_wdata_ahb[63:0] : dma_axi_wdata;
-   assign dma_axi_wstrb_int[7:0]               = pt.BUILD_AHB_LITE ? dma_axi_wstrb_ahb[7:0] : dma_axi_wstrb[7:0];
-   assign dma_axi_wlast_int                    = pt.BUILD_AHB_LITE ? dma_axi_wlast_ahb : dma_axi_wlast;
-   assign dma_axi_bready_int                   = pt.BUILD_AHB_LITE ? dma_axi_bready_ahb : dma_axi_bready;
-   assign dma_axi_arvalid_int                  = pt.BUILD_AHB_LITE ? dma_axi_arvalid_ahb : dma_axi_arvalid;
-   assign dma_axi_arid_int[pt.DMA_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? dma_axi_arid_ahb[pt.DMA_BUS_TAG-1:0] : dma_axi_arid[pt.DMA_BUS_TAG-1:0];
-   assign dma_axi_araddr_int[31:0]             = pt.BUILD_AHB_LITE ? dma_axi_araddr_ahb[31:0] : dma_axi_araddr[31:0];
-   assign dma_axi_arsize_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_arsize_ahb[2:0] : dma_axi_arsize[2:0];
-   assign dma_axi_arprot_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_arprot_ahb[2:0] : dma_axi_arprot[2:0];
-   assign dma_axi_arlen_int[7:0]               = pt.BUILD_AHB_LITE ? dma_axi_arlen_ahb[7:0] : dma_axi_arlen[7:0];
-   assign dma_axi_arburst_int[1:0]             = pt.BUILD_AHB_LITE ? dma_axi_arburst_ahb[1:0] : dma_axi_arburst[1:0];
-   assign dma_axi_rready_int                   = pt.BUILD_AHB_LITE ? dma_axi_rready_ahb : dma_axi_rready;
-
- 
-if  (pt.BUILD_AHB_LITE == 1) begin
-
-   end // if (pt.BUILD_AHB_LITE == 1)
-
-
-      // unpack packet
-      // also need retires_p==3
-
-      assign trace_rv_i_insn_ip[31:0]     = trace_rv_trace_pkt.trace_rv_i_insn_ip[31:0];
-
-      assign trace_rv_i_address_ip[31:0]  = trace_rv_trace_pkt.trace_rv_i_address_ip[31:0];
-
-      assign trace_rv_i_valid_ip     = trace_rv_trace_pkt.trace_rv_i_valid_ip;
-
-      assign trace_rv_i_exception_ip = trace_rv_trace_pkt.trace_rv_i_exception_ip;
-
-      assign trace_rv_i_ecause_ip[4:0]    = trace_rv_trace_pkt.trace_rv_i_ecause_ip[4:0];
-
-      assign trace_rv_i_interrupt_ip = trace_rv_trace_pkt.trace_rv_i_interrupt_ip;
-
-      assign trace_rv_i_tval_ip[31:0]     = trace_rv_trace_pkt.trace_rv_i_tval_ip[31:0];
-			
-endmodule // eb1_brqrv
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2018 MERL Corporation or it's affiliates.
-// 
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// 
-// http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//------------------------------------------------------------------------------------
-//
-//  Copyright MERL, 2018
-//  Owner : Anusha Narayanamoorthy
-//  Description:  
-//                Wrapper module for JTAG_TAP and DMI synchronizer
-//
-//-------------------------------------------------------------------------------------
-
-module dmi_wrapper(
-
-  // JTAG signals
-  input              trst_n,              // JTAG reset
-  input              tck,                 // JTAG clock
-  input              tms,                 // Test mode select   
-  input              tdi,                 // Test Data Input
-  output             tdo,                 // Test Data Output           
-  output             tdoEnable,           // Test Data Output enable             
-
-  // Processor Signals
-  input              core_rst_n,          // Core reset                  
-  input              core_clk,            // Core clock                  
-  input [31:1]       jtag_id,             // JTAG ID
-  input [31:0]       rd_data,             // 32 bit Read data from  Processor                       
-  output [31:0]      reg_wr_data,         // 32 bit Write data to Processor                      
-  output [6:0]       reg_wr_addr,         // 7 bit reg address to Processor                   
-  output             reg_en,              // 1 bit  Read enable to Processor                                    
-  output             reg_wr_en,           // 1 bit  Write enable to Processor 
-  output             dmi_hard_reset  
-);
-
-
-  
-
-
-  //Wire Declaration
-  wire                     rd_en;
-  wire                     wr_en;
-  wire                     dmireset;
-
- 
-  //jtag_tap instantiation
- rvjtag_tap i_jtag_tap(
-   .trst(trst_n),                      // dedicated JTAG TRST (active low) pad signal or asynchronous active low power on reset
-   .tck(tck),                          // dedicated JTAG TCK pad signal
-   .tms(tms),                          // dedicated JTAG TMS pad signal
-   .tdi(tdi),                          // dedicated JTAG TDI pad signal
-   .tdo(tdo),                          // dedicated JTAG TDO pad signal
-   .tdoEnable(tdoEnable),              // enable for TDO pad
-   .wr_data(reg_wr_data),              // 32 bit Write data
-   .wr_addr(reg_wr_addr),              // 7 bit Write address
-   .rd_en(rd_en),                      // 1 bit  read enable
-   .wr_en(wr_en),                      // 1 bit  Write enable
-   .rd_data(rd_data),                  // 32 bit Read data
-   .rd_status(2'b0),
-   .idle(3'h0),                         // no need to wait to sample data
-   .dmi_stat(2'b0),                     // no need to wait or error possible
-   .version(4'h1),                      // debug spec 0.13 compliant
-   .jtag_id(jtag_id),
-   .dmi_hard_reset(dmi_hard_reset),
-   .dmi_reset(dmireset)
-);
-
-
-  // dmi_jtag_to_core_sync instantiation
-  dmi_jtag_to_core_sync i_dmi_jtag_to_core_sync(
-    .wr_en(wr_en),                          // 1 bit  Write enable
-    .rd_en(rd_en),                          // 1 bit  Read enable
-
-    .rst_n(core_rst_n),
-    .clk(core_clk),
-    .reg_en(reg_en),                          // 1 bit  Write interface bit
-    .reg_wr_en(reg_wr_en)                          // 1 bit  Write enable
-  );
-
-endmodule
-
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-  
-module eb1_uart_rx_prog (
-   input         i_Clock,
-   input         rst_ni,
-   input         i_Rx_Serial,
-   input  [15:0] CLKS_PER_BIT,
-   output        o_Rx_DV,
-   output  [7:0] o_Rx_Byte
-   );
-    
-  parameter s_IDLE         = 3'b000;
-  parameter s_RX_START_BIT = 3'b001;
-  parameter s_RX_DATA_BITS = 3'b010;
-  parameter s_RX_STOP_BIT  = 3'b011;
-  parameter s_CLEANUP      = 3'b100;
-   
-  reg           r_Rx_Data_R;
-  reg           r_Rx_Data;
-   
-  reg [15:0]     r_Clock_Count;
-  reg [2:0]     r_Bit_Index; //8 bits total
-  reg [7:0]     r_Rx_Byte;
-  reg           r_Rx_DV;
-  reg [2:0]     r_SM_Main;
-   
-  // Purpose: Double-register the incoming data.
-  // This allows it to be used in the UART RX Clock Domain.
-  // (It removes problems caused by metastability)
-  always @(posedge i_Clock)
-    if(rst_ni == 1'b0) begin
-    	r_Rx_Data_R <= 1'b1;
-    	r_Rx_Data   <= 1'b1;
-    end
-    else begin
-      r_Rx_Data_R <= i_Rx_Serial;
-      r_Rx_Data   <= r_Rx_Data_R;
-    end
-   
-   
-  // Purpose: Control RX state machine
-  always @(posedge i_Clock or negedge rst_ni)
-    begin
-      if (rst_ni == 1'b0) begin
-        r_SM_Main <= s_IDLE;
-        r_Rx_DV       <= 1'b0;
-        r_Clock_Count <= 16'h0000;
-        r_Bit_Index   <= 3'b000;
-        r_Rx_Byte     <= 8'h00;
-      end else begin       
-      case (r_SM_Main)
-        s_IDLE :
-          begin
-            r_Rx_DV       <= 1'b0;
-            r_Clock_Count <= 0;
-            r_Bit_Index   <= 0;
-             
-            if (r_Rx_Data == 1'b0)          // Start bit detected
-              r_SM_Main <= s_RX_START_BIT;
-            else
-              r_SM_Main <= s_IDLE;
-          end
-         
-        // Check middle of start bit to make sure it's still low
-        s_RX_START_BIT :
-          begin
-            if (r_Clock_Count == ((CLKS_PER_BIT-1)>>1))
-              begin
-                if (r_Rx_Data == 1'b0)
-                  begin
-                    r_Clock_Count <= 0;  // reset counter, found the middle
-                    r_SM_Main     <= s_RX_DATA_BITS;
-                  end
-                else
-                  r_SM_Main <= s_IDLE;
-              end
-            else
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_START_BIT;
-              end
-          end // case: s_RX_START_BIT
-         
-         
-        // Wait CLKS_PER_BIT-1 clock cycles to sample serial data
-        s_RX_DATA_BITS :
-          begin
-            if (r_Clock_Count < CLKS_PER_BIT-1)
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_DATA_BITS;
-              end
-            else
-              begin
-                r_Clock_Count          <= 0;
-                r_Rx_Byte[r_Bit_Index] <= r_Rx_Data;
-                 
-                // Check if we have received all bits
-                if (r_Bit_Index < 7)
-                  begin
-                    r_Bit_Index <= r_Bit_Index + 1;
-                    r_SM_Main   <= s_RX_DATA_BITS;
-                  end
-                else
-                  begin
-                    r_Bit_Index <= 0;
-                    r_SM_Main   <= s_RX_STOP_BIT;
-                  end
-              end
-          end // case: s_RX_DATA_BITS
-     
-     
-        // Receive Stop bit.  Stop bit = 1
-        s_RX_STOP_BIT :
-          begin
-            // Wait CLKS_PER_BIT-1 clock cycles for Stop bit to finish
-            if (r_Clock_Count < CLKS_PER_BIT-1)
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_STOP_BIT;
-              end
-            else
-              begin
-                r_Rx_DV       <= 1'b1;
-                r_Clock_Count <= 0;
-                r_SM_Main     <= s_CLEANUP;
-              end
-          end // case: s_RX_STOP_BIT
-     
-         
-        // Stay here 1 clock
-        s_CLEANUP :
-          begin
-            r_SM_Main <= s_IDLE;
-            r_Rx_DV   <= 1'b0;
-          end
-         
-         
-        default :
-          r_SM_Main <= s_IDLE;
-         
-      endcase
-      end
-    end   
-   
-  assign o_Rx_DV   = r_Rx_DV;
-  assign o_Rx_Byte = r_Rx_Byte;
-   
-endmodule // uart_rx
-
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-module eb1_iccm_controller (
-	clk_i,
-	rst_ni,
-	rx_dv_i,
-	rx_byte_i,
-	we_o,
-	addr_o,
-	wdata_o,
-	reset_o
-);
-	input wire clk_i;
-	input wire rst_ni;
-	input wire rx_dv_i;
-	input wire [7:0] rx_byte_i;
-	output wire we_o;
-	output wire [13:0] addr_o;
-	output wire [31:0] wdata_o;
-	output wire reset_o;
-	reg [1:0] ctrl_fsm_cs;
-	reg [1:0] ctrl_fsm_ns;
-	wire [7:0] rx_byte_d;
-	reg [7:0] rx_byte_q0;
-	reg [7:0] rx_byte_q1;
-	reg [7:0] rx_byte_q2;
-	reg [7:0] rx_byte_q3;
-	reg we_q;
-	reg we_d;
-	reg [13:0] addr_q;
-	reg [13:0] addr_d;
-	reg reset_q;
-	reg reset_d;
-	reg [1:0] byte_count;
-	localparam [1:0] DONE = 3;
-	localparam [1:0] LOAD = 1;
-	localparam [1:0] PROG = 2;
-	localparam [1:0] RESET = 0;
-	always @(*) begin
-		we_d = we_q;
-		addr_d = addr_q;
-		reset_d = reset_q;
-		ctrl_fsm_ns = ctrl_fsm_cs;
-		case (ctrl_fsm_cs)
-			RESET: begin
-				we_d = 1'b0;
-				reset_d = 1'b0;
-				if (rx_dv_i)
-					ctrl_fsm_ns = LOAD;
-				else
-					ctrl_fsm_ns = RESET;
-			end
-			LOAD:
-				if (((byte_count == 2'b11) && (rx_byte_q2 != 8'h0f)) && (rx_byte_d != 8'hff)) begin
-					we_d = 1'b1;
-					ctrl_fsm_ns = PROG;
-				end
-				else
-					ctrl_fsm_ns = DONE;
-			PROG: begin
-				we_d = 1'b0;
-				ctrl_fsm_ns = DONE;
-			end
-			DONE:
-				if (wdata_o == 32'h00000fff) begin
-					ctrl_fsm_ns = DONE;
-					reset_d = 1'b1;
-				end
-				else if (rx_dv_i)
-					ctrl_fsm_ns = LOAD;
-				else
-					ctrl_fsm_ns = DONE;
-			default: ctrl_fsm_ns = RESET;
-		endcase
-	end
-	assign rx_byte_d = rx_byte_i;
-	assign we_o = we_q;
-	assign addr_o = addr_q;
-	assign wdata_o = {rx_byte_q0, rx_byte_q1, rx_byte_q2, rx_byte_q3};
-	assign reset_o = reset_q;
-	always @(posedge clk_i or negedge rst_ni)
-		if (!rst_ni) begin
-			we_q <= 1'b0;
-			addr_q <= 14'b00000000000000;
-			rx_byte_q0 <= 8'b00000000;
-			rx_byte_q1 <= 8'b00000000;
-			rx_byte_q2 <= 8'b00000000;
-			rx_byte_q3 <= 8'b00000000;
-			reset_q <= 1'b0;
-			byte_count <= 2'b00;
-			ctrl_fsm_cs <= RESET;
-		end
-		else begin
-			we_q <= we_d;
-			if (ctrl_fsm_cs == LOAD) begin
-				if (byte_count == 2'b00) begin
-					rx_byte_q0 <= rx_byte_d;
-					byte_count <= 2'b01;
-				end
-				else if (byte_count == 2'b01) begin
-					rx_byte_q1 <= rx_byte_d;
-					byte_count <= 2'b10;
-				end
-				else if (byte_count == 2'b10) begin
-					rx_byte_q2 <= rx_byte_d;
-					byte_count <= 2'b11;
-				end
-				else begin
-					rx_byte_q3 <= rx_byte_d;
-					byte_count <= 2'b00;
-				end
-				addr_q <= addr_d;
-			end
-			if (ctrl_fsm_cs == PROG)
-				addr_q <= addr_d + 2'h2;
-			reset_q <= reset_d;
-			ctrl_fsm_cs <= ctrl_fsm_ns;
-		end
-endmodule
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-module eb1_mem
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-(
-
-   input logic         vccd1,
-   input logic		vssd1,
-   input logic         clk,
-   input logic         rst_l,
-   input logic         dccm_clk_override,
-   input logic         icm_clk_override,
-   input logic         dec_tlu_core_ecc_disable,
-
-   //DCCM ports
-   input logic         dccm_wren,
-   input logic         dccm_rden,
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_lo,
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_hi,
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_lo,
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_hi,
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,
-
-
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_lo,
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_hi,
-
-//`ifdef pt.DCCM_ENABLE
-   input eb1_dccm_ext_in_pkt_t  [pt.DCCM_NUM_BANKS-1:0] dccm_ext_in_pkt,
-
-//`endif
-
-   //ICCM ports
-   input eb1_ccm_ext_in_pkt_t   [pt.ICCM_NUM_BANKS-1:0]  iccm_ext_in_pkt,
-
-   input logic [pt.ICCM_BITS-1:1]  iccm_rw_addr,
-   input logic                                        iccm_buf_correct_ecc,                    // ICCM is doing a single bit error correct cycle
-   input logic                                        iccm_correction_state,               // ICCM is doing a single bit error correct cycle
-   input logic         iccm_wren,
-   input logic         iccm_rden,
-   input logic [2:0]   iccm_wr_size,
-   input logic [77:0]  iccm_wr_data,
-
-   output logic [63:0] iccm_rd_data,
-   output logic [77:0] iccm_rd_data_ecc,
-
-   // Icache and Itag Ports
-
-   input  logic [31:1]  ic_rw_addr,
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]   ic_tag_valid,
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]   ic_wr_en,
-   input  logic         ic_rd_en,
-   input  logic [63:0] ic_premux_data,      // Premux data to be muxed with each way of the Icache.
-   input  logic         ic_sel_premux_data, // Premux data sel
-   input eb1_ic_data_ext_in_pkt_t   [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]         ic_data_ext_in_pkt,
-   input eb1_ic_tag_ext_in_pkt_t    [pt.ICACHE_NUM_WAYS-1:0]           ic_tag_ext_in_pkt,
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0][70:0]               ic_wr_data,         // Data to fill to the Icache. With ECC
-   input  logic [70:0]               ic_debug_wr_data,   // Debug wr cache.
-   output logic [70:0]               ic_debug_rd_data ,  // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   input  logic                      ic_debug_rd_en,     // Icache debug rd
-   input  logic                      ic_debug_wr_en,     // Icache debug wr
-   input  logic                      ic_debug_tag_array, // Debug tag array
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-   output logic [63:0]              ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   output logic [25:0]               ictag_debug_rd_data,// Debug icache tag.
-
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    // ecc error per bank
-   output logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,          // parity error per bank
-   output logic [pt.ICACHE_NUM_WAYS-1:0]   ic_rd_hit,
-   output logic         ic_tag_perr,        // Icache Tag parity error
-
-
-   input  logic         scan_mode
-
-);
-
-   logic active_clk;
-   rvoclkhdr active_cg   ( .en(1'b1),         .l1clk(active_clk), .* );
-
-   // DCCM Instantiation
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      eb1_lsu_dccm_mem #(.pt(pt)) dccm (
-         .clk_override(dccm_clk_override),
-         .*
-      );
-   end else begin: Gen_dccm_disable
-      assign dccm_rd_data_lo = '0;
-      assign dccm_rd_data_hi = '0;
-   end
-
-if ( pt.ICACHE_ENABLE ) begin: icache
-   eb1_ifu_ic_mem #(.pt(pt)) icm  (
-      .clk_override(icm_clk_override),
-      .*
-   );
-end
-else  begin
-   assign   ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0] = '0;
-   assign   ic_tag_perr    = '0 ;
-   assign   ic_rd_data  = '0 ;
-   assign   ictag_debug_rd_data  = '0 ;
-end // else: !if( pt.ICACHE_ENABLE )
-
-
-
-if (pt.ICCM_ENABLE) begin : iccm
-   eb1_ifu_iccm_mem  #(.pt(pt)) iccm (.*,
-                  .clk_override(icm_clk_override),
-                  .iccm_rw_addr(iccm_rw_addr[pt.ICCM_BITS-1:1]),
-                  .iccm_rd_data(iccm_rd_data[63:0])
-                   );
-end
-else  begin
-   assign  iccm_rd_data    = '0 ;
-   assign iccm_rd_data_ecc = '0 ;
-end
-
-
-endmodule
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Programmable Interrupt Controller
-// Comments:
-//********************************************************************************
-
-module eb1_pic_ctrl
-import eb1_pkg::*; 
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-                  (
-
-                     input  logic                   clk,                  // Core clock
-                     input  logic                   free_clk,             // free clock
-                     input  logic                   rst_l,                // Reset for all flops
-                     input  logic                   clk_override,         // Clock over-ride for gating
-                     input  logic                   io_clk_override,      // PIC IO  Clock over-ride for gating
-                     input  logic [pt.PIC_TOTAL_INT_PLUS1-1:0]   extintsrc_req,  // Interrupt requests
-                     input  logic [31:0]            picm_rdaddr,          // Address of the register
-                     input  logic [31:0]            picm_wraddr,          // Address of the register
-                     input  logic [31:0]            picm_wr_data,         // Data to be written to the register
-                     input  logic                   picm_wren,            // Write enable to the register
-                     input  logic                   picm_rden,            // Read enable for the register
-                     input  logic                   picm_mken,            // Read the Mask for the register
-                     input  logic [3:0]             meicurpl,             // Current Priority Level
-                     input  logic [3:0]             meipt,                // Current Priority Threshold
-
-                     output logic                   mexintpend,           // External Inerrupt request to the core
-                     output logic [7:0]             claimid,              // Claim Id of the requested interrupt
-                     output logic [3:0]             pl,                   // Priority level of the requested interrupt
-                     output logic [31:0]            picm_rd_data,         // Read data of the register
-                     output logic                   mhwakeup,             // Wake-up interrupt request
-                     input  logic                   scan_mode             // scan mode
-
-);
-
-localparam NUM_LEVELS            = $clog2(pt.PIC_TOTAL_INT_PLUS1);
-localparam INTPRIORITY_BASE_ADDR = pt.PIC_BASE_ADDR ;
-localparam INTPEND_BASE_ADDR     = pt.PIC_BASE_ADDR + 32'h00001000 ;
-localparam INTENABLE_BASE_ADDR   = pt.PIC_BASE_ADDR + 32'h00002000 ;
-localparam EXT_INTR_PIC_CONFIG   = pt.PIC_BASE_ADDR + 32'h00003000 ;
-localparam EXT_INTR_GW_CONFIG    = pt.PIC_BASE_ADDR + 32'h00004000 ;
-localparam EXT_INTR_GW_CLEAR     = pt.PIC_BASE_ADDR + 32'h00005000 ;
-
-
-localparam INTPEND_SIZE          = (pt.PIC_TOTAL_INT_PLUS1 < 32)  ? 32  :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 64)  ? 64  :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 128) ? 128 :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 256) ? 256 :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 512) ? 512 :  1024 ;
-
-localparam INT_GRPS              =   INTPEND_SIZE / 32 ;
-localparam INTPRIORITY_BITS      =  4 ;
-localparam ID_BITS               =  8 ;
-localparam int GW_CONFIG[pt.PIC_TOTAL_INT_PLUS1-1:0] = '{default:0} ;
-
-localparam INT_ENABLE_GRPS       =   (pt.PIC_TOTAL_INT_PLUS1 - 1)  / 4 ;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]           intenable_clk_enable ;
-logic [INT_ENABLE_GRPS:0]                    intenable_clk_enable_grp ;
-logic [INT_ENABLE_GRPS:0]                    gw_clk ;
-
-logic  addr_intpend_base_match;
-
-logic  raddr_config_pic_match ;
-logic  raddr_intenable_base_match;
-logic  raddr_intpriority_base_match;
-logic  raddr_config_gw_base_match ;
-
-logic  waddr_config_pic_match ;
-logic  waddr_intpriority_base_match;
-logic  waddr_intenable_base_match;
-logic  waddr_config_gw_base_match ;
-logic  addr_clear_gw_base_match ;
-
-logic  mexintpend_in;
-logic  mhwakeup_in ;
-logic  intpend_reg_read ;
-
-logic [31:0]                                 picm_rd_data_in, intpend_rd_out;
-logic                                        intenable_rd_out ;
-logic [INTPRIORITY_BITS-1:0]                 intpriority_rd_out;
-logic [1:0]                                  gw_config_rd_out;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [INTPRIORITY_BITS-1:0] intpriority_reg;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [INTPRIORITY_BITS-1:0] intpriority_reg_inv;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intpriority_reg_we;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intpriority_reg_re;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [1:0]                  gw_config_reg;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intenable_reg;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intenable_reg_we;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intenable_reg_re;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        gw_config_reg_we;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        gw_config_reg_re;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        gw_clear_reg_we;
-
-logic [INTPEND_SIZE-1:0]                     intpend_reg_extended;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [INTPRIORITY_BITS-1:0] intpend_w_prior_en;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [ID_BITS-1:0]          intpend_id;
-logic [INTPRIORITY_BITS-1:0]                 maxint;
-logic [INTPRIORITY_BITS-1:0]                 selected_int_priority;
-logic [INT_GRPS-1:0] [31:0]                  intpend_rd_part_out ;
-
-logic                                        config_reg;
-logic                                        intpriord;
-logic                                        config_reg_we ;
-logic                                        config_reg_re ;
-logic                                        config_reg_in ;
-logic                                        prithresh_reg_write , prithresh_reg_read;
-logic                                        intpriority_reg_read ;
-logic                                        intenable_reg_read   ;
-logic                                        gw_config_reg_read   ;
-logic                                        picm_wren_ff , picm_rden_ff ;
-logic [31:0]                                 picm_raddr_ff;
-logic [31:0]                                 picm_waddr_ff;
-logic [31:0]                                 picm_wr_data_ff;
-logic [3:0]                                  mask;
-logic                                        picm_mken_ff;
-logic [ID_BITS-1:0]                          claimid_in ;
-logic [INTPRIORITY_BITS-1:0]                 pl_in ;
-logic [INTPRIORITY_BITS-1:0]                 pl_in_q ;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        extintsrc_req_sync;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        extintsrc_req_gw;
-   logic                                                  picm_bypass_ff;
-
-// clkens
-   logic                                     pic_raddr_c1_clken;
-   logic                                     pic_waddr_c1_clken;
-   logic                                     pic_data_c1_clken;
-   logic                                     pic_pri_c1_clken;
-   logic                                     pic_int_c1_clken;
-   logic                                     gw_config_c1_clken;
-
-// clocks
-   logic                                     pic_raddr_c1_clk;
-   logic                                     pic_data_c1_clk;
-   logic                                     pic_pri_c1_clk;
-   logic                                     pic_int_c1_clk;
-   logic                                     gw_config_c1_clk;
-
-// ---- Clock gating section ------
-// c1 clock enables
-   assign pic_raddr_c1_clken  = picm_mken | picm_rden | clk_override;
-   assign pic_data_c1_clken   = picm_wren | clk_override;
-   assign pic_pri_c1_clken    = (waddr_intpriority_base_match & picm_wren_ff)  | (raddr_intpriority_base_match & picm_rden_ff) | clk_override;
-   assign pic_int_c1_clken    = (waddr_intenable_base_match   & picm_wren_ff)  | (raddr_intenable_base_match   & picm_rden_ff) | clk_override;
-   assign gw_config_c1_clken  = (waddr_config_gw_base_match   & picm_wren_ff)  | (raddr_config_gw_base_match   & picm_rden_ff) | clk_override;
-
-   // C1 - 1 clock pulse for data
-   rvoclkhdr pic_addr_c1_cgc   ( .en(pic_raddr_c1_clken),  .l1clk(pic_raddr_c1_clk), .* );
-   rvoclkhdr pic_data_c1_cgc   ( .en(pic_data_c1_clken),   .l1clk(pic_data_c1_clk), .* );
-   rvoclkhdr pic_pri_c1_cgc    ( .en(pic_pri_c1_clken),    .l1clk(pic_pri_c1_clk),  .* );
-   rvoclkhdr pic_int_c1_cgc    ( .en(pic_int_c1_clken),    .l1clk(pic_int_c1_clk),  .* );
-   rvoclkhdr gw_config_c1_cgc  ( .en(gw_config_c1_clken),  .l1clk(gw_config_c1_clk),  .* );
-
-// ------ end clock gating section ------------------------
-
-assign raddr_intenable_base_match   = (picm_raddr_ff[31:NUM_LEVELS+2] == INTENABLE_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign raddr_intpriority_base_match = (picm_raddr_ff[31:NUM_LEVELS+2] == INTPRIORITY_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign raddr_config_gw_base_match   = (picm_raddr_ff[31:NUM_LEVELS+2] == EXT_INTR_GW_CONFIG[31:NUM_LEVELS+2]) ;
-assign raddr_config_pic_match       = (picm_raddr_ff[31:0]            == EXT_INTR_PIC_CONFIG[31:0]) ;
-
-assign addr_intpend_base_match      = (picm_raddr_ff[31:6]            == INTPEND_BASE_ADDR[31:6]) ;
-
-assign waddr_config_pic_match       = (picm_waddr_ff[31:0]            == EXT_INTR_PIC_CONFIG[31:0]) ;
-assign addr_clear_gw_base_match     = (picm_waddr_ff[31:NUM_LEVELS+2] == EXT_INTR_GW_CLEAR[31:NUM_LEVELS+2]) ;
-assign waddr_intpriority_base_match = (picm_waddr_ff[31:NUM_LEVELS+2] == INTPRIORITY_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign waddr_intenable_base_match   = (picm_waddr_ff[31:NUM_LEVELS+2] == INTENABLE_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign waddr_config_gw_base_match   = (picm_waddr_ff[31:NUM_LEVELS+2] == EXT_INTR_GW_CONFIG[31:NUM_LEVELS+2]) ;
-
-   assign picm_bypass_ff = picm_rden_ff & picm_wren_ff & ( picm_raddr_ff[31:0] == picm_waddr_ff[31:0] );    // pic writes and reads to same address together
-
-
-rvdff #(32) picm_radd_flop  (.*, .din (picm_rdaddr),        .dout(picm_raddr_ff),         .clk(pic_raddr_c1_clk));
-rvdff #(32) picm_wadd_flop  (.*, .din (picm_wraddr),        .dout(picm_waddr_ff),         .clk(pic_data_c1_clk));
-rvdff  #(1) picm_wre_flop   (.*, .din (picm_wren),          .dout(picm_wren_ff),          .clk(free_clk));
-rvdff  #(1) picm_rde_flop   (.*, .din (picm_rden),          .dout(picm_rden_ff),          .clk(free_clk));
-rvdff  #(1) picm_mke_flop   (.*, .din (picm_mken),          .dout(picm_mken_ff),          .clk(free_clk));
-rvdff #(32) picm_dat_flop   (.*, .din (picm_wr_data[31:0]), .dout(picm_wr_data_ff[31:0]), .clk(pic_data_c1_clk));
-
-
-genvar p ;
-for (p=0; p<=INT_ENABLE_GRPS ; p++) begin  : IO_CLK_GRP
-   if (p==INT_ENABLE_GRPS) begin : LAST_GRP
-       assign intenable_clk_enable_grp[p] = |intenable_clk_enable[pt.PIC_TOTAL_INT_PLUS1-1 : p*4] | io_clk_override;
-       rvoclkhdr intenable_c1_cgc   ( .en(intenable_clk_enable_grp[p]),  .l1clk(gw_clk[p]), .* );
-   end else begin :  CLK_GRPS
-       assign intenable_clk_enable_grp[p] = |intenable_clk_enable[p*4+3 : p*4] | io_clk_override;
-       rvoclkhdr intenable_c1_cgc   ( .en(intenable_clk_enable_grp[p]),  .l1clk(gw_clk[p]), .* );
-   end
-end
-
-
-
-genvar i ;
-for (i=0; i<pt.PIC_TOTAL_INT_PLUS1 ; i++) begin  : SETREG
-
- if (i > 0 ) begin : NON_ZERO_INT
-     assign intpriority_reg_we[i] =  waddr_intpriority_base_match & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff;
-     assign intpriority_reg_re[i] =  raddr_intpriority_base_match & (picm_raddr_ff[NUM_LEVELS+1:2] == i) & picm_rden_ff;
-
-     assign intenable_reg_we[i]   =  waddr_intenable_base_match   & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff;
-     assign intenable_reg_re[i]   =  raddr_intenable_base_match   & (picm_raddr_ff[NUM_LEVELS+1:2] == i) & picm_rden_ff;
-
-     assign gw_config_reg_we[i]   =  waddr_config_gw_base_match   & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff;
-     assign gw_config_reg_re[i]   =  raddr_config_gw_base_match   & (picm_raddr_ff[NUM_LEVELS+1:2] == i) & picm_rden_ff;
-
-     assign gw_clear_reg_we[i]    =  addr_clear_gw_base_match     & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff ;
-
-     rvdffs #(INTPRIORITY_BITS) intpriority_ff  (.*, .en( intpriority_reg_we[i]), .din (picm_wr_data_ff[INTPRIORITY_BITS-1:0]), .dout(intpriority_reg[i]), .clk(pic_pri_c1_clk));
-     rvdffs #(1)                 intenable_ff   (.*, .en( intenable_reg_we[i]),   .din (picm_wr_data_ff[0]),                    .dout(intenable_reg[i]),   .clk(pic_int_c1_clk));
-
-     assign intenable_clk_enable[i]  =  gw_config_reg[i][1] | intenable_reg_we[i] | intenable_reg[i] | gw_clear_reg_we[i] ;
-
-     rvsyncss_fpga  #(1) sync_inst
-     (
-      .gw_clk      (gw_clk[i/4]),
-      .rawclk      (clk),
-      .clken       (intenable_clk_enable_grp[i/4]),
-      .dout        (extintsrc_req_sync[i]),
-      .din         (extintsrc_req[i]),
-      .*) ;
-
-
-
-//     if (GW_CONFIG[i]) begin
-
-        rvdffs #(2)                 gw_config_ff   (.*, .en( gw_config_reg_we[i]),   .din (picm_wr_data_ff[1:0]),                  .dout(gw_config_reg[i]),   .clk(gw_config_c1_clk));
-
-        eb1_configurable_gw config_gw_inst(.*,
-                                            .gw_clk(gw_clk[i/4]),
-                                            .rawclk(clk),
-                                            .clken (intenable_clk_enable_grp[i/4]),
-                                            .extintsrc_req_sync(extintsrc_req_sync[i]) ,
-                                            .meigwctrl_polarity(gw_config_reg[i][0]) ,
-                                            .meigwctrl_type(gw_config_reg[i][1]) ,
-                                            .meigwclr(gw_clear_reg_we[i]) ,
-                                            .extintsrc_req_config(extintsrc_req_gw[i])
-                                            );
-
- end else begin : INT_ZERO
-     assign intpriority_reg_we[i] =  1'b0 ;
-     assign intpriority_reg_re[i] =  1'b0 ;
-     assign intenable_reg_we[i]   =  1'b0 ;
-     assign intenable_reg_re[i]   =  1'b0 ;
-
-     assign gw_config_reg_we[i]   =  1'b0 ;
-     assign gw_config_reg_re[i]   =  1'b0 ;
-     assign gw_clear_reg_we[i]    =  1'b0 ;
-
-     assign gw_config_reg[i]    = '0 ;
-
-     assign intpriority_reg[i] = {INTPRIORITY_BITS{1'b0}} ;
-     assign intenable_reg[i]   = 1'b0 ;
-     assign extintsrc_req_gw[i] = 1'b0 ;
-     assign extintsrc_req_sync[i]    = 1'b0 ;
-     assign intenable_clk_enable[i] = 1'b0;
- end
-
-
-    assign intpriority_reg_inv[i] =  intpriord ? ~intpriority_reg[i] : intpriority_reg[i] ;
-
-    assign intpend_w_prior_en[i]  =  {INTPRIORITY_BITS{(extintsrc_req_gw[i] & intenable_reg[i])}} & intpriority_reg_inv[i] ;
-    assign intpend_id[i]          =  i ;
-end
-
-
-        assign pl_in[INTPRIORITY_BITS-1:0]                  =      selected_int_priority[INTPRIORITY_BITS-1:0] ;
-
-
- genvar l, m , j, k;
-
-if (pt.PIC_2CYCLE == 1) begin : genblock
-        logic [NUM_LEVELS/2:0] [pt.PIC_TOTAL_INT_PLUS1+2:0] [INTPRIORITY_BITS-1:0] level_intpend_w_prior_en;
-        logic [NUM_LEVELS/2:0] [pt.PIC_TOTAL_INT_PLUS1+2:0] [ID_BITS-1:0]          level_intpend_id;
-        logic [NUM_LEVELS:NUM_LEVELS/2] [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0] [INTPRIORITY_BITS-1:0] levelx_intpend_w_prior_en;
-        logic [NUM_LEVELS:NUM_LEVELS/2] [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0] [ID_BITS-1:0]          levelx_intpend_id;
-
-        assign level_intpend_w_prior_en[0][pt.PIC_TOTAL_INT_PLUS1+2:0] = {4'b0,4'b0,4'b0,intpend_w_prior_en[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-        assign level_intpend_id[0][pt.PIC_TOTAL_INT_PLUS1+2:0]         = {8'b0,8'b0,8'b0,intpend_id[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-
-        logic [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0] [INTPRIORITY_BITS-1:0] l2_intpend_w_prior_en_ff;
-        logic [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0] [ID_BITS-1:0]          l2_intpend_id_ff;
-
-        assign levelx_intpend_w_prior_en[NUM_LEVELS/2][(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0] = {{1*INTPRIORITY_BITS{1'b0}},l2_intpend_w_prior_en_ff[(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0]} ;
-        assign levelx_intpend_id[NUM_LEVELS/2][(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0]         = {{1*ID_BITS{1'b1}},l2_intpend_id_ff[(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0]} ;
-///  Do the prioritization of the interrupts here  ////////////
- for (l=0; l<NUM_LEVELS/2 ; l++) begin : TOP_LEVEL
-    for (m=0; m<=(pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1)) ; m++) begin : COMPARE
-       if ( m == (pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1))) begin
-            assign level_intpend_w_prior_en[l+1][m+1] = '0 ;
-            assign level_intpend_id[l+1][m+1]         = '0 ;
-       end
-       eb1_cmp_and_mux  #(.ID_BITS(ID_BITS),
-                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l1 (
-                      .a_id(level_intpend_id[l][2*m]),
-                      .a_priority(level_intpend_w_prior_en[l][2*m]),
-                      .b_id(level_intpend_id[l][2*m+1]),
-                      .b_priority(level_intpend_w_prior_en[l][2*m+1]),
-                      .out_id(level_intpend_id[l+1][m]),
-                      .out_priority(level_intpend_w_prior_en[l+1][m])) ;
-
-    end
- end
-
-        for (i=0; i<=pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2) ; i++) begin : MIDDLE_FLOPS
-          rvdff #(INTPRIORITY_BITS) leveb1_intpend_prior_reg  (.*, .din (level_intpend_w_prior_en[NUM_LEVELS/2][i]), .dout(l2_intpend_w_prior_en_ff[i]),  .clk(free_clk));
-          rvdff #(ID_BITS)          leveb1_intpend_id_reg     (.*, .din (level_intpend_id[NUM_LEVELS/2][i]),         .dout(l2_intpend_id_ff[i]),          .clk(free_clk));
-        end
-
- for (j=NUM_LEVELS/2; j<NUM_LEVELS ; j++) begin : BOT_LEVELS
-    for (k=0; k<=(pt.PIC_TOTAL_INT_PLUS1)/(2**(j+1)) ; k++) begin : COMPARE
-       if ( k == (pt.PIC_TOTAL_INT_PLUS1)/(2**(j+1))) begin
-            assign levelx_intpend_w_prior_en[j+1][k+1] = '0 ;
-            assign levelx_intpend_id[j+1][k+1]         = '0 ;
-       end
-            eb1_cmp_and_mux  #(.ID_BITS(ID_BITS),
-                        .INTPRIORITY_BITS(INTPRIORITY_BITS))
-                 cmp_l1 (
-                        .a_id(levelx_intpend_id[j][2*k]),
-                        .a_priority(levelx_intpend_w_prior_en[j][2*k]),
-                        .b_id(levelx_intpend_id[j][2*k+1]),
-                        .b_priority(levelx_intpend_w_prior_en[j][2*k+1]),
-                        .out_id(levelx_intpend_id[j+1][k]),
-                        .out_priority(levelx_intpend_w_prior_en[j+1][k])) ;
-    end
-  end
-        assign claimid_in[ID_BITS-1:0]                      =      levelx_intpend_id[NUM_LEVELS][0] ;   // This is the last level output
-        assign selected_int_priority[INTPRIORITY_BITS-1:0]  =      levelx_intpend_w_prior_en[NUM_LEVELS][0] ;
-end
-else begin : genblock
-
-        logic [NUM_LEVELS:0] [pt.PIC_TOTAL_INT_PLUS1+1:0] [INTPRIORITY_BITS-1:0] level_intpend_w_prior_en;
-        logic [NUM_LEVELS:0] [pt.PIC_TOTAL_INT_PLUS1+1:0] [ID_BITS-1:0]          level_intpend_id;
-
-        assign level_intpend_w_prior_en[0][pt.PIC_TOTAL_INT_PLUS1+1:0] = {{2*INTPRIORITY_BITS{1'b0}},intpend_w_prior_en[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-        assign level_intpend_id[0][pt.PIC_TOTAL_INT_PLUS1+1:0] = {{2*ID_BITS{1'b1}},intpend_id[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-
-///  Do the prioritization of the interrupts here  ////////////
-// genvar l, m , j, k;  already declared outside ifdef
- for (l=0; l<NUM_LEVELS ; l++) begin : LEVEL
-    for (m=0; m<=(pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1)) ; m++) begin : COMPARE
-       if ( m == (pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1))) begin
-            assign level_intpend_w_prior_en[l+1][m+1] = '0 ;
-            assign level_intpend_id[l+1][m+1]         = '0 ;
-       end
-       eb1_cmp_and_mux  #(.ID_BITS(ID_BITS),
-                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l1 (
-                      .a_id(level_intpend_id[l][2*m]),
-                      .a_priority(level_intpend_w_prior_en[l][2*m]),
-                      .b_id(level_intpend_id[l][2*m+1]),
-                      .b_priority(level_intpend_w_prior_en[l][2*m+1]),
-                      .out_id(level_intpend_id[l+1][m]),
-                      .out_priority(level_intpend_w_prior_en[l+1][m])) ;
-
-    end
- end
-        assign claimid_in[ID_BITS-1:0]                      =      level_intpend_id[NUM_LEVELS][0] ;   // This is the last level output
-        assign selected_int_priority[INTPRIORITY_BITS-1:0]  =      level_intpend_w_prior_en[NUM_LEVELS][0] ;
-
-end
-
-
-
-///////////////////////////////////////////////////////////////////////
-// Config Reg`
-///////////////////////////////////////////////////////////////////////
-assign config_reg_we               =  waddr_config_pic_match & picm_wren_ff;
-assign config_reg_re               =  raddr_config_pic_match & picm_rden_ff;
-
-assign config_reg_in  =  picm_wr_data_ff[0] ;   //
-rvdffs #(1) config_reg_ff  (.*, .clk(free_clk), .en(config_reg_we), .din (config_reg_in), .dout(config_reg));
-
-assign intpriord  = config_reg ;
-
-
-
-//////////////////////////////////////////////////////////////////////////
-// Send the interrupt to the core if it is above the thresh-hold
-//////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////
-/// ClaimId  Reg and Corresponding PL
-///////////////////////////////////////////////////////////
-//
-assign pl_in_q[INTPRIORITY_BITS-1:0] = intpriord ? ~pl_in : pl_in ;
-rvdff #(ID_BITS)          claimid_ff  (.*,  .din (claimid_in[ID_BITS-1:00]),     .dout(claimid[ID_BITS-1:00]),    .clk(free_clk));
-rvdff  #(INTPRIORITY_BITS) pl_ff      (.*, .din (pl_in_q[INTPRIORITY_BITS-1:0]), .dout(pl[INTPRIORITY_BITS-1:0]), .clk(free_clk));
-
-logic [INTPRIORITY_BITS-1:0] meipt_inv , meicurpl_inv ;
-assign meipt_inv[INTPRIORITY_BITS-1:0]    = intpriord ? ~meipt[INTPRIORITY_BITS-1:0]    : meipt[INTPRIORITY_BITS-1:0] ;
-assign meicurpl_inv[INTPRIORITY_BITS-1:0] = intpriord ? ~meicurpl[INTPRIORITY_BITS-1:0] : meicurpl[INTPRIORITY_BITS-1:0] ;
-assign mexintpend_in = (( selected_int_priority[INTPRIORITY_BITS-1:0] > meipt_inv[INTPRIORITY_BITS-1:0]) &
-                        ( selected_int_priority[INTPRIORITY_BITS-1:0] > meicurpl_inv[INTPRIORITY_BITS-1:0]) );
-rvdff #(1) mexintpend_ff  (.*, .clk(free_clk), .din (mexintpend_in), .dout(mexintpend));
-
-assign maxint[INTPRIORITY_BITS-1:0]      =  intpriord ? 0 : 15 ;
-assign mhwakeup_in = ( pl_in_q[INTPRIORITY_BITS-1:0] == maxint) ;
-rvdff #(1) wake_up_ff  (.*, .clk(free_clk), .din (mhwakeup_in), .dout(mhwakeup));
-
-
-
-
-
-//////////////////////////////////////////////////////////////////////////
-//  Reads of register.
-//  1- intpending
-//////////////////////////////////////////////////////////////////////////
-
-assign intpend_reg_read     =  addr_intpend_base_match      & picm_rden_ff ;
-assign intpriority_reg_read =  raddr_intpriority_base_match & picm_rden_ff;
-assign intenable_reg_read   =  raddr_intenable_base_match   & picm_rden_ff;
-assign gw_config_reg_read   =  raddr_config_gw_base_match   & picm_rden_ff;
-
-assign intpend_reg_extended[INTPEND_SIZE-1:0]  = {{INTPEND_SIZE-pt.PIC_TOTAL_INT_PLUS1{1'b0}},extintsrc_req_gw[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-
-   for (i=0; i<(INT_GRPS); i++) begin
-            assign intpend_rd_part_out[i] =  (({32{intpend_reg_read & picm_raddr_ff[5:2] == i}}) & intpend_reg_extended[((32*i)+31):(32*i)]) ;
-   end
-
-   always_comb begin : INTPEND_RD
-         intpend_rd_out =  '0 ;
-         for (int i=0; i<INT_GRPS; i++) begin
-               intpend_rd_out |=  intpend_rd_part_out[i] ;
-         end
-   end
-
-   always_comb begin : INTEN_RD
-         intenable_rd_out =  '0 ;
-         intpriority_rd_out =  '0 ;
-         gw_config_rd_out =  '0 ;
-         for (int i=0; i<pt.PIC_TOTAL_INT_PLUS1; i++) begin
-              if (intenable_reg_re[i]) begin
-               intenable_rd_out    =  intenable_reg[i]  ;
-              end
-              if (intpriority_reg_re[i]) begin
-               intpriority_rd_out  =  intpriority_reg[i] ;
-              end
-              if (gw_config_reg_re[i]) begin
-               gw_config_rd_out  =  gw_config_reg[i] ;
-              end
-         end
-   end
-
-
- assign picm_rd_data_in[31:0] = ({32{intpend_reg_read      }} &   intpend_rd_out                                                    ) |
-                                ({32{intpriority_reg_read  }} &  {{32-INTPRIORITY_BITS{1'b0}}, intpriority_rd_out                 } ) |
-                                ({32{intenable_reg_read    }} &  {31'b0 , intenable_rd_out                                        } ) |
-                                ({32{gw_config_reg_read    }} &  {30'b0 , gw_config_rd_out                                        } ) |
-                                ({32{config_reg_re         }} &  {31'b0 , config_reg                                              } ) |
-                                ({32{picm_mken_ff & mask[3]}} &  {30'b0 , 2'b11                                                   } ) |
-                                ({32{picm_mken_ff & mask[2]}} &  {31'b0 , 1'b1                                                    } ) |
-                                ({32{picm_mken_ff & mask[1]}} &  {28'b0 , 4'b1111                                                 } ) |
-                                ({32{picm_mken_ff & mask[0]}} &   32'b0                                                             ) ;
-
-
-assign picm_rd_data[31:0] = picm_bypass_ff ? picm_wr_data_ff[31:0] : picm_rd_data_in[31:0] ;
-
-logic [14:0] address;
-
-assign address[14:0] = picm_raddr_ff[14:0];
-
-// mask[3:0] = { 4'b1000 - 30b mask,4'b0100 - 31b mask, 4'b0010 - 28b mask, 4'b0001 - 32b mask }
-always_comb begin
-  case (address[14:0])
-    15'b011000000000000 : mask[3:0] = 4'b0100;
-    15'b100000000000100 : mask[3:0] = 4'b1000;
-    15'b100000000001000 : mask[3:0] = 4'b1000;
-    15'b100000000001100 : mask[3:0] = 4'b1000;
-    15'b100000000010000 : mask[3:0] = 4'b1000;
-    15'b100000000010100 : mask[3:0] = 4'b1000;
-    15'b100000000011000 : mask[3:0] = 4'b1000;
-    15'b100000000011100 : mask[3:0] = 4'b1000;
-    15'b100000000100000 : mask[3:0] = 4'b1000;
-    15'b100000000100100 : mask[3:0] = 4'b1000;
-    15'b100000000101000 : mask[3:0] = 4'b1000;
-    15'b100000000101100 : mask[3:0] = 4'b1000;
-    15'b100000000110000 : mask[3:0] = 4'b1000;
-    15'b100000000110100 : mask[3:0] = 4'b1000;
-    15'b100000000111000 : mask[3:0] = 4'b1000;
-    15'b100000000111100 : mask[3:0] = 4'b1000;
-    15'b100000001000000 : mask[3:0] = 4'b1000;
-    15'b100000001000100 : mask[3:0] = 4'b1000;
-    15'b100000001001000 : mask[3:0] = 4'b1000;
-    15'b100000001001100 : mask[3:0] = 4'b1000;
-    15'b100000001010000 : mask[3:0] = 4'b1000;
-    15'b100000001010100 : mask[3:0] = 4'b1000;
-    15'b100000001011000 : mask[3:0] = 4'b1000;
-    15'b100000001011100 : mask[3:0] = 4'b1000;
-    15'b100000001100000 : mask[3:0] = 4'b1000;
-    15'b100000001100100 : mask[3:0] = 4'b1000;
-    15'b100000001101000 : mask[3:0] = 4'b1000;
-    15'b100000001101100 : mask[3:0] = 4'b1000;
-    15'b100000001110000 : mask[3:0] = 4'b1000;
-    15'b100000001110100 : mask[3:0] = 4'b1000;
-    15'b100000001111000 : mask[3:0] = 4'b1000;
-    15'b100000001111100 : mask[3:0] = 4'b1000;
-    15'b010000000000100 : mask[3:0] = 4'b0100;
-    15'b010000000001000 : mask[3:0] = 4'b0100;
-    15'b010000000001100 : mask[3:0] = 4'b0100;
-    15'b010000000010000 : mask[3:0] = 4'b0100;
-    15'b010000000010100 : mask[3:0] = 4'b0100;
-    15'b010000000011000 : mask[3:0] = 4'b0100;
-    15'b010000000011100 : mask[3:0] = 4'b0100;
-    15'b010000000100000 : mask[3:0] = 4'b0100;
-    15'b010000000100100 : mask[3:0] = 4'b0100;
-    15'b010000000101000 : mask[3:0] = 4'b0100;
-    15'b010000000101100 : mask[3:0] = 4'b0100;
-    15'b010000000110000 : mask[3:0] = 4'b0100;
-    15'b010000000110100 : mask[3:0] = 4'b0100;
-    15'b010000000111000 : mask[3:0] = 4'b0100;
-    15'b010000000111100 : mask[3:0] = 4'b0100;
-    15'b010000001000000 : mask[3:0] = 4'b0100;
-    15'b010000001000100 : mask[3:0] = 4'b0100;
-    15'b010000001001000 : mask[3:0] = 4'b0100;
-    15'b010000001001100 : mask[3:0] = 4'b0100;
-    15'b010000001010000 : mask[3:0] = 4'b0100;
-    15'b010000001010100 : mask[3:0] = 4'b0100;
-    15'b010000001011000 : mask[3:0] = 4'b0100;
-    15'b010000001011100 : mask[3:0] = 4'b0100;
-    15'b010000001100000 : mask[3:0] = 4'b0100;
-    15'b010000001100100 : mask[3:0] = 4'b0100;
-    15'b010000001101000 : mask[3:0] = 4'b0100;
-    15'b010000001101100 : mask[3:0] = 4'b0100;
-    15'b010000001110000 : mask[3:0] = 4'b0100;
-    15'b010000001110100 : mask[3:0] = 4'b0100;
-    15'b010000001111000 : mask[3:0] = 4'b0100;
-    15'b010000001111100 : mask[3:0] = 4'b0100;
-    15'b000000000000100 : mask[3:0] = 4'b0010;
-    15'b000000000001000 : mask[3:0] = 4'b0010;
-    15'b000000000001100 : mask[3:0] = 4'b0010;
-    15'b000000000010000 : mask[3:0] = 4'b0010;
-    15'b000000000010100 : mask[3:0] = 4'b0010;
-    15'b000000000011000 : mask[3:0] = 4'b0010;
-    15'b000000000011100 : mask[3:0] = 4'b0010;
-    15'b000000000100000 : mask[3:0] = 4'b0010;
-    15'b000000000100100 : mask[3:0] = 4'b0010;
-    15'b000000000101000 : mask[3:0] = 4'b0010;
-    15'b000000000101100 : mask[3:0] = 4'b0010;
-    15'b000000000110000 : mask[3:0] = 4'b0010;
-    15'b000000000110100 : mask[3:0] = 4'b0010;
-    15'b000000000111000 : mask[3:0] = 4'b0010;
-    15'b000000000111100 : mask[3:0] = 4'b0010;
-    15'b000000001000000 : mask[3:0] = 4'b0010;
-    15'b000000001000100 : mask[3:0] = 4'b0010;
-    15'b000000001001000 : mask[3:0] = 4'b0010;
-    15'b000000001001100 : mask[3:0] = 4'b0010;
-    15'b000000001010000 : mask[3:0] = 4'b0010;
-    15'b000000001010100 : mask[3:0] = 4'b0010;
-    15'b000000001011000 : mask[3:0] = 4'b0010;
-    15'b000000001011100 : mask[3:0] = 4'b0010;
-    15'b000000001100000 : mask[3:0] = 4'b0010;
-    15'b000000001100100 : mask[3:0] = 4'b0010;
-    15'b000000001101000 : mask[3:0] = 4'b0010;
-    15'b000000001101100 : mask[3:0] = 4'b0010;
-    15'b000000001110000 : mask[3:0] = 4'b0010;
-    15'b000000001110100 : mask[3:0] = 4'b0010;
-    15'b000000001111000 : mask[3:0] = 4'b0010;
-    15'b000000001111100 : mask[3:0] = 4'b0010;
-    default           : mask[3:0] = 4'b0001;
-  endcase
-end
-
-endmodule
-
-
-module eb1_cmp_and_mux #(parameter ID_BITS=8,
-                               INTPRIORITY_BITS = 4)
-                    (
-                        input  logic [ID_BITS-1:0]       a_id,
-                        input  logic [INTPRIORITY_BITS-1:0] a_priority,
-
-                        input  logic [ID_BITS-1:0]       b_id,
-                        input  logic [INTPRIORITY_BITS-1:0] b_priority,
-
-                        output logic [ID_BITS-1:0]       out_id,
-                        output logic [INTPRIORITY_BITS-1:0] out_priority
-
-                    );
-
-logic   a_is_lt_b ;
-
-assign  a_is_lt_b  = ( a_priority[INTPRIORITY_BITS-1:0] < b_priority[INTPRIORITY_BITS-1:0] ) ;
-
-assign  out_id[ID_BITS-1:0]                = a_is_lt_b ? b_id[ID_BITS-1:0] :
-                                                         a_id[ID_BITS-1:0] ;
-assign  out_priority[INTPRIORITY_BITS-1:0] = a_is_lt_b ? b_priority[INTPRIORITY_BITS-1:0] :
-                                                         a_priority[INTPRIORITY_BITS-1:0] ;
-endmodule // cmp_and_mux
-
-
-module eb1_configurable_gw (
-                             input logic gw_clk,
-                             input logic rawclk,
-                             input logic clken,
-                             input logic rst_l,
-                             input logic extintsrc_req_sync ,
-                             input logic meigwctrl_polarity ,
-                             input logic meigwctrl_type ,
-                             input logic meigwclr ,
-
-                             output logic extintsrc_req_config
-                            );
-
-
-  logic  gw_int_pending_in , gw_int_pending ;
-
-  assign gw_int_pending_in =  (extintsrc_req_sync ^ meigwctrl_polarity) | (gw_int_pending & ~meigwclr) ;
-  rvdff_fpga #(1) int_pend_ff        (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (gw_int_pending_in),     .dout(gw_int_pending));
-
-
-  assign extintsrc_req_config =  meigwctrl_type ? ((extintsrc_req_sync ^  meigwctrl_polarity) | gw_int_pending) : (extintsrc_req_sync ^  meigwctrl_polarity) ;
-
-endmodule // configurable_gw
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-// $Id$
-//
-// Owner:
-// Function: AHB to AXI4 Bridge
-// Comments:
-//
-//********************************************************************************
-module ahb_to_axi4
-import eb1_pkg::*;
-#(
-   TAG = 1,
-   parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-//   ,TAG  = 1)
-(
-   input                   clk,
-   input                   rst_l,
-   input                   scan_mode,
-   input                   bus_clk_en,
-   input                   clk_override,
-
-   // AXI signals
-   // AXI Write Channels
-   output logic            axi_awvalid,
-   input  logic            axi_awready,
-   output logic [TAG-1:0]  axi_awid,
-   output logic [31:0]     axi_awaddr,
-   output logic [2:0]      axi_awsize,
-   output logic [2:0]      axi_awprot,
-   output logic [7:0]      axi_awlen,
-   output logic [1:0]      axi_awburst,
-
-   output logic            axi_wvalid,
-   input  logic            axi_wready,
-   output logic [63:0]     axi_wdata,
-   output logic [7:0]      axi_wstrb,
-   output logic            axi_wlast,
-
-   input  logic            axi_bvalid,
-   output logic            axi_bready,
-   input  logic [1:0]      axi_bresp,
-   input  logic [TAG-1:0]  axi_bid,
-
-   // AXI Read Channels
-   output logic            axi_arvalid,
-   input  logic            axi_arready,
-   output logic [TAG-1:0]  axi_arid,
-   output logic [31:0]     axi_araddr,
-   output logic [2:0]      axi_arsize,
-   output logic [2:0]      axi_arprot,
-   output logic [7:0]      axi_arlen,
-   output logic [1:0]      axi_arburst,
-
-   input  logic            axi_rvalid,
-   output logic            axi_rready,
-   input  logic [TAG-1:0]  axi_rid,
-   input  logic [63:0]     axi_rdata,
-   input  logic [1:0]      axi_rresp,
-
-   // AHB-Lite signals
-   input logic [31:0]      ahb_haddr,     // ahb bus address
-   input logic [2:0]       ahb_hburst,    // tied to 0
-   input logic             ahb_hmastlock, // tied to 0
-   input logic [3:0]       ahb_hprot,     // tied to 4'b0011
-   input logic [2:0]       ahb_hsize,     // size of bus transaction (possible values 0,1,2,3)
-   input logic [1:0]       ahb_htrans,    // Transaction type (possible values 0,2 only right now)
-   input logic             ahb_hwrite,    // ahb bus write
-   input logic [63:0]      ahb_hwdata,    // ahb bus write data
-   input logic             ahb_hsel,      // this slave was selected
-   input logic             ahb_hreadyin,  // previous hready was accepted or not
-
-   output logic [63:0]      ahb_hrdata,      // ahb bus read data
-   output logic             ahb_hreadyout,   // slave ready to accept transaction
-   output logic             ahb_hresp        // slave response (high indicates erro)
-
-);
-
-   logic [7:0]       master_wstrb;
-
- typedef enum logic [1:0] {   IDLE   = 2'b00,    // Nothing in the buffer. No commands yet recieved
-                              WR     = 2'b01,    // Write Command recieved
-                              RD     = 2'b10,    // Read Command recieved
-                              PEND   = 2'b11     // Waiting on Read Data from core
-                            } state_t;
-   state_t      buf_state, buf_nxtstate;
-   logic        buf_state_en;
-
-   // Buffer signals (one entry buffer)
-   logic                    buf_read_error_in, buf_read_error;
-   logic [63:0]             buf_rdata;
-
-   logic                    ahb_hready;
-   logic                    ahb_hready_q;
-   logic [1:0]              ahb_htrans_in, ahb_htrans_q;
-   logic [2:0]              ahb_hsize_q;
-   logic                    ahb_hwrite_q;
-   logic [31:0]             ahb_haddr_q;
-   logic [63:0]             ahb_hwdata_q;
-   logic                    ahb_hresp_q;
-
-    //Miscellaneous signals
-   logic                    ahb_addr_in_dccm, ahb_addr_in_iccm, ahb_addr_in_pic;
-   logic                    ahb_addr_in_dccm_region_nc, ahb_addr_in_iccm_region_nc, ahb_addr_in_pic_region_nc;
-   // signals needed for the read data coming back from the core and to block any further commands as AHB is a blocking bus
-   logic                    buf_rdata_en;
-
-   logic                    ahb_addr_clk_en, buf_rdata_clk_en;
-   logic                    bus_clk, ahb_addr_clk, buf_rdata_clk;
-   // Command buffer is the holding station where we convert to AXI and send to core
-   logic                    cmdbuf_wr_en, cmdbuf_rst;
-   logic                    cmdbuf_full;
-   logic                    cmdbuf_vld, cmdbuf_write;
-   logic [1:0]              cmdbuf_size;
-   logic [7:0]              cmdbuf_wstrb;
-   logic [31:0]             cmdbuf_addr;
-   logic [63:0]             cmdbuf_wdata;
-
-// FSM to control the bus states and when to block the hready and load the command buffer
-   always_comb begin
-      buf_nxtstate      = IDLE;
-      buf_state_en      = 1'b0;
-      buf_rdata_en      = 1'b0;              // signal to load the buffer when the core sends read data back
-      buf_read_error_in = 1'b0;              // signal indicating that an error came back with the read from the core
-      cmdbuf_wr_en      = 1'b0;              // all clear from the gasket to load the buffer with the command for reads, command/dat for writes
-      case (buf_state)
-         IDLE: begin  // No commands recieved
-                  buf_nxtstate      = ahb_hwrite ? WR : RD;
-                  buf_state_en      = ahb_hready & ahb_htrans[1] & ahb_hsel;                 // only transition on a valid hrtans
-          end
-         WR: begin // Write command recieved last cycle
-                  buf_nxtstate      = (ahb_hresp | (ahb_htrans[1:0] == 2'b0) | ~ahb_hsel) ? IDLE : ahb_hwrite  ? WR : RD;
-                  buf_state_en      = (~cmdbuf_full | ahb_hresp) ;
-                  cmdbuf_wr_en      = ~cmdbuf_full & ~(ahb_hresp | ((ahb_htrans[1:0] == 2'b01) & ahb_hsel));   // Dont send command to the buffer in case of an error or when the master is not ready with the data now.
-         end
-         RD: begin // Read command recieved last cycle.
-                 buf_nxtstate      = ahb_hresp ? IDLE :PEND;                                       // If error go to idle, else wait for read data
-                 buf_state_en      = (~cmdbuf_full | ahb_hresp);                                   // only when command can go, or if its an error
-                 cmdbuf_wr_en      = ~ahb_hresp & ~cmdbuf_full;                                    // send command only when no error
-         end
-         PEND: begin // Read Command has been sent. Waiting on Data.
-                 buf_nxtstate      = IDLE;                                                          // go back for next command and present data next cycle
-                 buf_state_en      = axi_rvalid & ~cmdbuf_write;                                    // read data is back
-                 buf_rdata_en      = buf_state_en;                                                  // buffer the read data coming back from core
-                 buf_read_error_in = buf_state_en & |axi_rresp[1:0];                                // buffer error flag if return has Error ( ECC )
-         end
-     endcase
-   end // always_comb begin
-
-    rvdffs_fpga #($bits(state_t)) state_reg (.*, .din(buf_nxtstate), .dout({buf_state}), .en(buf_state_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk));
-
-   assign master_wstrb[7:0]   = ({8{ahb_hsize_q[2:0] == 3'b0}}  & (8'b1    << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b1}}  & (8'b11   << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b10}} & (8'b1111 << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b11}} & 8'b1111_1111);
-
-   // AHB signals
-   assign ahb_hreadyout       = ahb_hresp ? (ahb_hresp_q & ~ahb_hready_q) :
-                                         ((~cmdbuf_full | (buf_state == IDLE)) & ~(buf_state == RD | buf_state == PEND)  & ~buf_read_error);
-
-   assign ahb_hready          = ahb_hreadyout & ahb_hreadyin;
-   assign ahb_htrans_in[1:0]  = {2{ahb_hsel}} & ahb_htrans[1:0];
-   assign ahb_hrdata[63:0]    = buf_rdata[63:0];
-   assign ahb_hresp        = ((ahb_htrans_q[1:0] != 2'b0) & (buf_state != IDLE)  &
-
-                             ((~(ahb_addr_in_dccm | ahb_addr_in_iccm)) |                                                                                   // request not for ICCM or DCCM
-                             ((ahb_addr_in_iccm | (ahb_addr_in_dccm &  ahb_hwrite_q)) & ~((ahb_hsize_q[1:0] == 2'b10) | (ahb_hsize_q[1:0] == 2'b11))) |    // ICCM Rd/Wr OR DCCM Wr not the right size
-                             ((ahb_hsize_q[2:0] == 3'h1) & ahb_haddr_q[0])   |                                                                             // HW size but unaligned
-                             ((ahb_hsize_q[2:0] == 3'h2) & (|ahb_haddr_q[1:0])) |                                                                          // W size but unaligned
-                             ((ahb_hsize_q[2:0] == 3'h3) & (|ahb_haddr_q[2:0])))) |                                                                        // DW size but unaligned
-                             buf_read_error |                                                                                                              // Read ECC error
-                             (ahb_hresp_q & ~ahb_hready_q);
-
-   // Buffer signals - needed for the read data and ECC error response
-   rvdff_fpga  #(.WIDTH(64)) buf_rdata_ff     (.din(axi_rdata[63:0]),   .dout(buf_rdata[63:0]), .clk(buf_rdata_clk), .clken(buf_rdata_clk_en), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))  buf_read_error_ff(.din(buf_read_error_in), .dout(buf_read_error),  .clk(bus_clk),       .clken(bus_clk_en),       .rawclk(clk), .*);          // buf_read_error will be high only one cycle
-
-   // All the Master signals are captured before presenting it to the command buffer. We check for Hresp before sending it to the cmd buffer.
-   rvdff_fpga #(.WIDTH(1))  hresp_ff  (.din(ahb_hresp),          .dout(ahb_hresp_q),       .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hready_ff (.din(ahb_hready),         .dout(ahb_hready_q),      .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(2))  htrans_ff (.din(ahb_htrans_in[1:0]), .dout(ahb_htrans_q[1:0]), .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(3))  hsize_ff  (.din(ahb_hsize[2:0]),     .dout(ahb_hsize_q[2:0]),  .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hwrite_ff (.din(ahb_hwrite),         .dout(ahb_hwrite_q),      .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(32)) haddr_ff  (.din(ahb_haddr[31:0]),    .dout(ahb_haddr_q[31:0]), .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-
-   // Address check  dccm
-   rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                  .CCM_SIZE(pt.DCCM_SIZE)) addr_dccm_rangecheck (
-      .addr(ahb_haddr_q[31:0]),
-      .in_range(ahb_addr_in_dccm),
-      .in_region(ahb_addr_in_dccm_region_nc)
-   );
-
-   // Address check  iccm
-   if (pt.ICCM_ENABLE == 1) begin: GenICCM
-      rvrangecheck #(.CCM_SADR(pt.ICCM_SADR),
-                     .CCM_SIZE(pt.ICCM_SIZE)) addr_iccm_rangecheck (
-         .addr(ahb_haddr_q[31:0]),
-         .in_range(ahb_addr_in_iccm),
-         .in_region(ahb_addr_in_iccm_region_nc)
-      );
-   end else begin: GenNoICCM
-      assign ahb_addr_in_iccm = '0;
-      assign ahb_addr_in_iccm_region_nc = '0;
-   end
-
-   // PIC memory address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) addr_pic_rangecheck (
-      .addr(ahb_haddr_q[31:0]),
-      .in_range(ahb_addr_in_pic),
-      .in_region(ahb_addr_in_pic_region_nc)
-   );
-
-   // Command Buffer - Holding for the commands to be sent for the AXI. It will be converted to the AXI signals.
-   assign cmdbuf_rst         = (((axi_awvalid & axi_awready) | (axi_arvalid & axi_arready)) & ~cmdbuf_wr_en) | (ahb_hresp & ~cmdbuf_write);
-   assign cmdbuf_full        = (cmdbuf_vld & ~((axi_awvalid & axi_awready) | (axi_arvalid & axi_arready)));
-
-   rvdffsc_fpga #(.WIDTH(1))  cmdbuf_vldff      (.din(1'b1),              .dout(cmdbuf_vld),         .en(cmdbuf_wr_en), .clear(cmdbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(1))  cmdbuf_writeff    (.din(ahb_hwrite_q),      .dout(cmdbuf_write),       .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(2))  cmdbuf_sizeff     (.din(ahb_hsize_q[1:0]),  .dout(cmdbuf_size[1:0]),   .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(8))  cmdbuf_wstrbff    (.din(master_wstrb[7:0]), .dout(cmdbuf_wstrb[7:0]),  .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32)) cmdbuf_addrff     (.din(ahb_haddr_q[31:0]), .dout(cmdbuf_addr[31:0]),  .en(cmdbuf_wr_en & bus_clk_en),        .clk(clk), .*);
-   rvdffe       #(.WIDTH(64)) cmdbuf_wdataff    (.din(ahb_hwdata[63:0]),  .dout(cmdbuf_wdata[63:0]), .en(cmdbuf_wr_en & bus_clk_en),        .clk(clk), .*);
-
-   // AXI Write Command Channel
-   assign axi_awvalid           = cmdbuf_vld & cmdbuf_write;
-   assign axi_awid[TAG-1:0]     = '0;
-   assign axi_awaddr[31:0]      = cmdbuf_addr[31:0];
-   assign axi_awsize[2:0]       = {1'b0, cmdbuf_size[1:0]};
-   assign axi_awprot[2:0]       = 3'b0;
-   assign axi_awlen[7:0]        = '0;
-   assign axi_awburst[1:0]      = 2'b01;
-   // AXI Write Data Channel - This is tied to the command channel as we only write the command buffer once we have the data.
-   assign axi_wvalid            = cmdbuf_vld & cmdbuf_write;
-   assign axi_wdata[63:0]       = cmdbuf_wdata[63:0];
-   assign axi_wstrb[7:0]        = cmdbuf_wstrb[7:0];
-   assign axi_wlast             = 1'b1;
-  // AXI Write Response - Always ready. AHB does not require a write response.
-   assign axi_bready            = 1'b1;
-   // AXI Read Channels
-   assign axi_arvalid           = cmdbuf_vld & ~cmdbuf_write;
-   assign axi_arid[TAG-1:0]     = '0;
-   assign axi_araddr[31:0]      = cmdbuf_addr[31:0];
-   assign axi_arsize[2:0]       = {1'b0, cmdbuf_size[1:0]};
-   assign axi_arprot            = 3'b0;
-   assign axi_arlen[7:0]        = '0;
-   assign axi_arburst[1:0]      = 2'b01;
-   // AXI Read Response Channel - Always ready as AHB reads are blocking and the the buffer is available for the read coming back always.
-   assign axi_rready            = 1'b1;
-
-   // Clock header logic
-   assign ahb_addr_clk_en = bus_clk_en & (ahb_hready & ahb_htrans[1]);
-   assign buf_rdata_clk_en    = bus_clk_en & buf_rdata_en;
-
-   rvclkhdr bus_cgc       (.en(bus_clk_en),       .l1clk(bus_clk),       .*);
-   rvclkhdr ahb_addr_cgc  (.en(ahb_addr_clk_en),  .l1clk(ahb_addr_clk),  .*);
-   rvclkhdr buf_rdata_cgc (.en(buf_rdata_clk_en), .l1clk(buf_rdata_clk), .*);
-
-
-endmodule // ahb_to_axi4
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2018 MERL Corporation or it's affiliates.
-// 
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// 
-// http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//------------------------------------------------------------------------------------
-//
-//  Copyright MERL, 2019
-//  Owner : Alex Grobman
-//  Description:  
-//                This module Synchronizes the signals between JTAG (TCK) and
-//                processor (Core_clk)
-//
-//-------------------------------------------------------------------------------------
-
-module dmi_jtag_to_core_sync (
-// JTAG signals
-input       rd_en,      // 1 bit  Read Enable from JTAG
-input       wr_en,      // 1 bit  Write enable from JTAG
-
-// Processor Signals
-input       rst_n,      // Core reset
-input       clk,        // Core clock
-
-output      reg_en,     // 1 bit  Write interface bit to Processor
-output      reg_wr_en   // 1 bit  Write enable to Processor
-);
-  
-wire        c_rd_en;
-wire        c_wr_en;
-reg [2:0]   rden, wren;
- 
-
-// Outputs
-assign reg_en    = c_wr_en | c_rd_en;
-assign reg_wr_en = c_wr_en;
-
-
-// synchronizers  
-always @ ( posedge clk or negedge rst_n) begin
-    if(!rst_n) begin
-        rden <= '0;
-        wren <= '0;
-    end
-    else begin
-        rden <= {rden[1:0], rd_en};
-        wren <= {wren[1:0], wr_en};
-    end
-end
-
-assign c_rd_en = rden[1] & ~rden[2];
-assign c_wr_en = wren[1] & ~wren[2];
- 
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Owner:
-// Function: AXI4 -> AHB Bridge
-// Comments:
-//
-//********************************************************************************
-module axi4_to_ahb
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-}
-,parameter TAG  = 1) (
-
-   input                   clk,
-   input                   free_clk,
-   input                   rst_l,
-   input                   scan_mode,
-   input                   bus_clk_en,
-   input                   clk_override,
-   input                   dec_tlu_force_halt,
-
-   // AXI signals
-   // AXI Write Channels
-   input  logic            axi_awvalid,
-   output logic            axi_awready,
-   input  logic [TAG-1:0]  axi_awid,
-   input  logic [31:0]     axi_awaddr,
-   input  logic [2:0]      axi_awsize,
-   input  logic [2:0]      axi_awprot,
-
-   input  logic            axi_wvalid,
-   output logic            axi_wready,
-   input  logic [63:0]     axi_wdata,
-   input  logic [7:0]      axi_wstrb,
-   input  logic            axi_wlast,
-
-   output logic            axi_bvalid,
-   input  logic            axi_bready,
-   output logic [1:0]      axi_bresp,
-   output logic [TAG-1:0]  axi_bid,
-
-   // AXI Read Channels
-   input  logic            axi_arvalid,
-   output logic            axi_arready,
-   input  logic [TAG-1:0]  axi_arid,
-   input  logic [31:0]     axi_araddr,
-   input  logic [2:0]      axi_arsize,
-   input  logic [2:0]      axi_arprot,
-
-   output logic            axi_rvalid,
-   input  logic            axi_rready,
-   output logic [TAG-1:0]  axi_rid,
-   output logic [63:0]     axi_rdata,
-   output logic [1:0]      axi_rresp,
-   output logic            axi_rlast,
-
-   // AHB-Lite signals
-   output logic [31:0]     ahb_haddr,       // ahb bus address
-   output logic [2:0]      ahb_hburst,      // tied to 0
-   output logic            ahb_hmastlock,   // tied to 0
-   output logic [3:0]      ahb_hprot,       // tied to 4'b0011
-   output logic [2:0]      ahb_hsize,       // size of bus transaction (possible values 0,1,2,3)
-   output logic [1:0]      ahb_htrans,      // Transaction type (possible values 0,2 only right now)
-   output logic            ahb_hwrite,      // ahb bus write
-   output logic [63:0]     ahb_hwdata,      // ahb bus write data
-
-   input logic [63:0]      ahb_hrdata,      // ahb bus read data
-   input logic             ahb_hready,      // slave ready to accept transaction
-   input logic             ahb_hresp        // slave response (high indicates erro)
-
-);
-
-   localparam ID   = 1;
-   localparam PRTY = 1;
-   typedef enum logic [2:0] {IDLE=3'b000, CMD_RD=3'b001, CMD_WR=3'b010, DATA_RD=3'b011, DATA_WR=3'b100, DONE=3'b101, STREAM_RD=3'b110, STREAM_ERR_RD=3'b111} state_t;
-   state_t buf_state, buf_nxtstate;
-
-   logic             slave_valid;
-   logic             slave_ready;
-   logic [TAG-1:0]   slave_tag;
-   logic [63:0]      slave_rdata;
-   logic [3:0]       slave_opc;
-
-   logic             wrbuf_en, wrbuf_data_en;
-   logic             wrbuf_cmd_sent, wrbuf_rst;
-   logic             wrbuf_vld;
-   logic             wrbuf_data_vld;
-   logic [TAG-1:0]   wrbuf_tag;
-   logic [2:0]       wrbuf_size;
-   logic [31:0]      wrbuf_addr;
-   logic [63:0]      wrbuf_data;
-   logic [7:0]       wrbuf_byteen;
-
-   logic             master_valid;
-   logic             master_ready;
-   logic [TAG-1:0]   master_tag;
-   logic [31:0]      master_addr;
-   logic [63:0]      master_wdata;
-   logic [2:0]       master_size;
-   logic [2:0]       master_opc;
-   logic [7:0]       master_byteen;
-
-   // Buffer signals (one entry buffer)
-   logic [31:0]                buf_addr;
-   logic [1:0]                 buf_size;
-   logic                       buf_write;
-   logic [7:0]                 buf_byteen;
-   logic                       buf_aligned;
-   logic [63:0]                buf_data;
-   logic [TAG-1:0]             buf_tag;
-
-   //Miscellaneous signals
-   logic                       buf_rst;
-   logic [TAG-1:0]             buf_tag_in;
-   logic [31:0]                buf_addr_in;
-   logic [7:0]                 buf_byteen_in;
-   logic [63:0]                buf_data_in;
-   logic                       buf_write_in;
-   logic                       buf_aligned_in;
-   logic [2:0]                 buf_size_in;
-
-   logic                       buf_state_en;
-   logic                       buf_wr_en;
-   logic                       buf_data_wr_en;
-   logic                       slvbuf_error_en;
-   logic                       wr_cmd_vld;
-
-   logic                       cmd_done_rst, cmd_done, cmd_doneQ;
-   logic                       trxn_done;
-   logic [2:0]                 buf_cmd_byte_ptr, buf_cmd_byte_ptrQ, buf_cmd_nxtbyte_ptr;
-   logic                       buf_cmd_byte_ptr_en;
-   logic                       found;
-
-   logic                       slave_valid_pre;
-   logic                       ahb_hready_q;
-   logic                       ahb_hresp_q;
-   logic [1:0]                 ahb_htrans_q;
-   logic                       ahb_hwrite_q;
-   logic [63:0]                ahb_hrdata_q;
-
-
-   logic                       slvbuf_write;
-   logic                       slvbuf_error;
-   logic [TAG-1:0]             slvbuf_tag;
-
-   logic                       slvbuf_error_in;
-   logic                       slvbuf_wr_en;
-   logic                       bypass_en;
-   logic                       rd_bypass_idle;
-
-   logic                       last_addr_en;
-   logic [31:0]                last_bus_addr;
-
-   // Clocks
-   logic                       buf_clken;
-   logic                       ahbm_data_clken;
-
-   logic                       buf_clk;
-   logic                       bus_clk;
-   logic                       ahbm_data_clk;
-
-   logic                       dec_tlu_force_halt_bus, dec_tlu_force_halt_bus_ns, dec_tlu_force_halt_bus_q;
-
-   // Function to get the length from byte enable
-   function automatic logic [1:0] get_write_size;
-      input logic [7:0] byteen;
-
-      logic [1:0]       size;
-
-      size[1:0] = (2'b11 & {2{(byteen[7:0] == 8'hff)}}) |
-                  (2'b10 & {2{((byteen[7:0] == 8'hf0) | (byteen[7:0] == 8'h0f))}}) |
-                  (2'b01 & {2{((byteen[7:0] == 8'hc0) | (byteen[7:0] == 8'h30) | (byteen[7:0] == 8'h0c) | (byteen[7:0] == 8'h03))}});
-
-      return size[1:0];
-   endfunction // get_write_size
-
-   // Function to get the length from byte enable
-   function automatic logic [2:0] get_write_addr;
-      input logic [7:0] byteen;
-
-      logic [2:0]       addr;
-
-      addr[2:0] = (3'h0 & {3{((byteen[7:0] == 8'hff) | (byteen[7:0] == 8'h0f) | (byteen[7:0] == 8'h03))}}) |
-                  (3'h2 & {3{(byteen[7:0] == 8'h0c)}})                                                     |
-                  (3'h4 & {3{((byteen[7:0] == 8'hf0) | (byteen[7:0] == 8'h03))}})                          |
-                  (3'h6 & {3{(byteen[7:0] == 8'hc0)}});
-
-      return addr[2:0];
-   endfunction // get_write_addr
-
-   // Function to get the next byte pointer
-   function automatic logic [2:0] get_nxtbyte_ptr (logic [2:0] current_byte_ptr, logic [7:0] byteen, logic get_next);
-      logic [2:0] start_ptr;
-      logic       found;
-      found = '0;
-      //get_nxtbyte_ptr[2:0] = current_byte_ptr[2:0];
-      start_ptr[2:0] = get_next ? (current_byte_ptr[2:0] + 3'b1) : current_byte_ptr[2:0];
-      for (int j=0; j<8; j++) begin
-         if (~found) begin
-            get_nxtbyte_ptr[2:0] = 3'(j);
-            found |= (byteen[j] & (3'(j) >= start_ptr[2:0])) ;
-         end
-      end
-   endfunction // get_nextbyte_ptr
-
-   // Create bus synchronized version of force halt
-   assign dec_tlu_force_halt_bus = dec_tlu_force_halt | dec_tlu_force_halt_bus_q;
-   assign dec_tlu_force_halt_bus_ns = ~bus_clk_en & dec_tlu_force_halt_bus;
-   rvdff  #(.WIDTH(1))   force_halt_busff(.din(dec_tlu_force_halt_bus_ns), .dout(dec_tlu_force_halt_bus_q), .clk(free_clk), .*);
-
-   // Write buffer
-   assign wrbuf_en       = axi_awvalid & axi_awready & master_ready;
-   assign wrbuf_data_en  = axi_wvalid & axi_wready & master_ready;
-   assign wrbuf_cmd_sent = master_valid & master_ready & (master_opc[2:1] == 2'b01);
-   assign wrbuf_rst      = (wrbuf_cmd_sent & ~wrbuf_en) | dec_tlu_force_halt_bus;
-
-   assign axi_awready = ~(wrbuf_vld & ~wrbuf_cmd_sent) & master_ready;
-   assign axi_wready  = ~(wrbuf_data_vld & ~wrbuf_cmd_sent) & master_ready;
-   assign axi_arready = ~(wrbuf_vld & wrbuf_data_vld) & master_ready;
-   assign axi_rlast   = 1'b1;
-
-   assign wr_cmd_vld          = (wrbuf_vld & wrbuf_data_vld);
-   assign master_valid        = wr_cmd_vld | axi_arvalid;
-   assign master_tag[TAG-1:0] = wr_cmd_vld ? wrbuf_tag[TAG-1:0] : axi_arid[TAG-1:0];
-   assign master_opc[2:0]     = wr_cmd_vld ? 3'b011 : 3'b0;
-   assign master_addr[31:0]   = wr_cmd_vld ? wrbuf_addr[31:0] : axi_araddr[31:0];
-   assign master_size[2:0]    = wr_cmd_vld ? wrbuf_size[2:0] : axi_arsize[2:0];
-   assign master_byteen[7:0]  = wrbuf_byteen[7:0];
-   assign master_wdata[63:0]  = wrbuf_data[63:0];
-
-   // AXI response channel signals
-   assign axi_bvalid       = slave_valid & slave_ready & slave_opc[3];
-   assign axi_bresp[1:0]   = slave_opc[0] ? 2'b10 : (slave_opc[1] ? 2'b11 : 2'b0);
-   assign axi_bid[TAG-1:0] = slave_tag[TAG-1:0];
-
-   assign axi_rvalid       = slave_valid & slave_ready & (slave_opc[3:2] == 2'b0);
-   assign axi_rresp[1:0]   = slave_opc[0] ? 2'b10 : (slave_opc[1] ? 2'b11 : 2'b0);
-   assign axi_rid[TAG-1:0] = slave_tag[TAG-1:0];
-   assign axi_rdata[63:0]  = slave_rdata[63:0];
-   assign slave_ready        = axi_bready & axi_rready;
-
- // FIFO state machine
-   always_comb begin
-      buf_nxtstate   = IDLE;
-      buf_state_en   = 1'b0;
-      buf_wr_en      = 1'b0;
-      buf_data_wr_en = 1'b0;
-      slvbuf_error_in   = 1'b0;
-      slvbuf_error_en   = 1'b0;
-      buf_write_in   = 1'b0;
-      cmd_done       = 1'b0;
-      trxn_done      = 1'b0;
-      buf_cmd_byte_ptr_en = 1'b0;
-      buf_cmd_byte_ptr[2:0] = '0;
-      slave_valid_pre   = 1'b0;
-      master_ready   = 1'b0;
-      ahb_htrans[1:0]  = 2'b0;
-      slvbuf_wr_en     = 1'b0;
-      bypass_en        = 1'b0;
-      rd_bypass_idle   = 1'b0;
-
-      case (buf_state)
-         IDLE: begin
-                  master_ready   = 1'b1;
-                  buf_write_in = (master_opc[2:1] == 2'b01);
-                  buf_nxtstate = buf_write_in ? CMD_WR : CMD_RD;
-                  buf_state_en = master_valid & master_ready;
-                  buf_wr_en    = buf_state_en;
-                  buf_data_wr_en = buf_state_en & (buf_nxtstate == CMD_WR);
-                  buf_cmd_byte_ptr_en   = buf_state_en;
-                  buf_cmd_byte_ptr[2:0] = buf_write_in ? get_nxtbyte_ptr(3'b0,buf_byteen_in[7:0],1'b0) : master_addr[2:0];
-                  bypass_en       = buf_state_en;
-                  rd_bypass_idle  = bypass_en & (buf_nxtstate == CMD_RD);
-                  ahb_htrans[1:0] = {2{bypass_en}} & 2'b10;
-          end
-         CMD_RD: begin
-                  buf_nxtstate    = (master_valid & (master_opc[2:0] == 3'b000))? STREAM_RD : DATA_RD;
-                  buf_state_en    = ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) & ~ahb_hwrite_q;
-                  cmd_done        = buf_state_en & ~master_valid;
-                  slvbuf_wr_en    = buf_state_en;
-                  master_ready  = buf_state_en & (buf_nxtstate == STREAM_RD);
-                  buf_wr_en       = master_ready;
-                  bypass_en       = master_ready & master_valid;
-                  buf_cmd_byte_ptr[2:0] = bypass_en ? master_addr[2:0] : buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~buf_state_en | bypass_en}};
-         end
-         STREAM_RD: begin
-                  master_ready  =  (ahb_hready_q & ~ahb_hresp_q) & ~(master_valid & master_opc[2:1] == 2'b01);
-                  buf_wr_en       = (master_valid & master_ready & (master_opc[2:0] == 3'b000)); // update the fifo if we are streaming the read commands
-                  buf_nxtstate    = ahb_hresp_q ? STREAM_ERR_RD : (buf_wr_en ? STREAM_RD : DATA_RD);            // assuming that the master accpets the slave response right away.
-                  buf_state_en    = (ahb_hready_q | ahb_hresp_q);
-                  buf_data_wr_en  = buf_state_en;
-                  slvbuf_error_in = ahb_hresp_q;
-                  slvbuf_error_en = buf_state_en;
-                  slave_valid_pre  = buf_state_en & ~ahb_hresp_q;             // send a response right away if we are not going through an error response.
-                  cmd_done        = buf_state_en & ~master_valid;                     // last one of the stream should not send a htrans
-                  bypass_en       = master_ready & master_valid & (buf_nxtstate == STREAM_RD) & buf_state_en;
-                  buf_cmd_byte_ptr[2:0] = bypass_en ? master_addr[2:0] : buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~((buf_nxtstate != STREAM_RD) & buf_state_en)}};
-                  slvbuf_wr_en    = buf_wr_en;                                         // shifting the contents from the buf to slv_buf for streaming cases
-         end // case: STREAM_RD
-         STREAM_ERR_RD: begin
-                  buf_nxtstate = DATA_RD;
-                  buf_state_en = ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) & ~ahb_hwrite_q;
-                  slave_valid_pre = buf_state_en;
-                  slvbuf_wr_en   = buf_state_en;     // Overwrite slvbuf with buffer
-                  buf_cmd_byte_ptr[2:0] = buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~buf_state_en}};
-         end
-         DATA_RD: begin
-                  buf_nxtstate   = DONE;
-                  buf_state_en   = (ahb_hready_q | ahb_hresp_q);
-                  buf_data_wr_en = buf_state_en;
-                  slvbuf_error_in= ahb_hresp_q;
-                  slvbuf_error_en= buf_state_en;
-                  slvbuf_wr_en   = buf_state_en;
-
-         end
-         CMD_WR: begin
-                  buf_nxtstate = DATA_WR;
-                  trxn_done    = ahb_hready_q & ahb_hwrite_q & (ahb_htrans_q[1:0] != 2'b0);
-                  buf_state_en = trxn_done;
-                  buf_cmd_byte_ptr_en = buf_state_en;
-                  slvbuf_wr_en    = buf_state_en;
-                  buf_cmd_byte_ptr    = trxn_done ? get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1) : buf_cmd_byte_ptrQ;
-                  cmd_done            = trxn_done & (buf_aligned | (buf_cmd_byte_ptrQ == 3'b111) |
-                                                     (buf_byteen[get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1)] == 1'b0));
-                  ahb_htrans[1:0] = {2{~(cmd_done | cmd_doneQ)}} & 2'b10;
-         end
-         DATA_WR: begin
-                  buf_state_en = (cmd_doneQ & ahb_hready_q) | ahb_hresp_q;
-                  master_ready = buf_state_en & ~ahb_hresp_q & slave_ready;   // Ready to accept new command if current command done and no error
-                  buf_nxtstate = (ahb_hresp_q | ~slave_ready) ? DONE :
-                                  ((master_valid & master_ready) ? ((master_opc[2:1] == 2'b01) ? CMD_WR : CMD_RD) : IDLE);
-                  slvbuf_error_in = ahb_hresp_q;
-                  slvbuf_error_en = buf_state_en;
-
-                  buf_write_in = (master_opc[2:1] == 2'b01);
-                  buf_wr_en = buf_state_en & ((buf_nxtstate == CMD_WR) | (buf_nxtstate == CMD_RD));
-                  buf_data_wr_en = buf_wr_en;
-
-                  cmd_done     = (ahb_hresp_q | (ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) &
-                                 ((buf_cmd_byte_ptrQ == 3'b111) | (buf_byteen[get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1)] == 1'b0))));
-                  bypass_en       = buf_state_en & buf_write_in & (buf_nxtstate == CMD_WR);   // Only bypass for writes for the time being
-                  ahb_htrans[1:0] = {2{(~(cmd_done | cmd_doneQ) | bypass_en)}} & 2'b10;
-                  slave_valid_pre  = buf_state_en & (buf_nxtstate != DONE);
-
-                  trxn_done = ahb_hready_q & ahb_hwrite_q & (ahb_htrans_q[1:0] != 2'b0);
-                  buf_cmd_byte_ptr_en = trxn_done | bypass_en;
-                  buf_cmd_byte_ptr = bypass_en ? get_nxtbyte_ptr(3'b0,buf_byteen_in[7:0],1'b0) :
-                                                 trxn_done ? get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1) : buf_cmd_byte_ptrQ;
-            end
-         DONE: begin
-                  buf_nxtstate = IDLE;
-                  buf_state_en = slave_ready;
-                  slvbuf_error_en = 1'b1;
-                  slave_valid_pre = 1'b1;
-         end
-      endcase
-   end
-
-   assign buf_rst              = dec_tlu_force_halt_bus;
-   assign cmd_done_rst         = slave_valid_pre;
-   assign buf_addr_in[31:3]    = master_addr[31:3];
-   assign buf_addr_in[2:0]     = (buf_aligned_in & (master_opc[2:1] == 2'b01)) ? get_write_addr(master_byteen[7:0]) : master_addr[2:0];
-   assign buf_tag_in[TAG-1:0]  = master_tag[TAG-1:0];
-   assign buf_byteen_in[7:0]   = wrbuf_byteen[7:0];
-   assign buf_data_in[63:0]    = (buf_state == DATA_RD) ? ahb_hrdata_q[63:0] : master_wdata[63:0];
-   assign buf_size_in[1:0]     = (buf_aligned_in & (master_size[1:0] == 2'b11) & (master_opc[2:1] == 2'b01)) ? get_write_size(master_byteen[7:0]) : master_size[1:0];
-   assign buf_aligned_in       = (master_opc[2:0] == 3'b0)    |   // reads are always aligned since they are either DW or sideeffects
-                                 (master_size[1:0] == 2'b0) |  (master_size[1:0] == 2'b01) | (master_size[1:0] == 2'b10) | // Always aligned for Byte/HW/Word since they can be only for non-idempotent. IFU/SB are always aligned
-                                 ((master_size[1:0] == 2'b11) &
-                                  ((master_byteen[7:0] == 8'h3)  | (master_byteen[7:0] == 8'hc)   | (master_byteen[7:0] == 8'h30) | (master_byteen[7:0] == 8'hc0) |
-                                   (master_byteen[7:0] == 8'hf)  | (master_byteen[7:0] == 8'hf0)  | (master_byteen[7:0] == 8'hff)));
-
-   // Generate the ahb signals
-   assign ahb_haddr[31:3] = bypass_en ? master_addr[31:3]  : buf_addr[31:3];
-   assign ahb_haddr[2:0]  = {3{(ahb_htrans == 2'b10)}} & buf_cmd_byte_ptr[2:0];    // Trxn should be aligned during IDLE
-   assign ahb_hsize[2:0]  = bypass_en ? {1'b0, ({2{buf_aligned_in}} & buf_size_in[1:0])} :
-                                        {1'b0, ({2{buf_aligned}} & buf_size[1:0])};   // Send the full size for aligned trxn
-   assign ahb_hburst[2:0] = 3'b0;
-   assign ahb_hmastlock   = 1'b0;
-   assign ahb_hprot[3:0]  = {3'b001,~axi_arprot[2]};
-   assign ahb_hwrite      = bypass_en ? (master_opc[2:1] == 2'b01) : buf_write;
-   assign ahb_hwdata[63:0] = buf_data[63:0];
-
-   assign slave_valid          = slave_valid_pre;// & (~slvbuf_posted_write | slvbuf_error);
-   assign slave_opc[3:2]       = slvbuf_write ? 2'b11 : 2'b00;
-   assign slave_opc[1:0]       = {2{slvbuf_error}} & 2'b10;
-   assign slave_rdata[63:0]    = slvbuf_error ? {2{last_bus_addr[31:0]}} : ((buf_state == DONE) ? buf_data[63:0] : ahb_hrdata_q[63:0]);
-   assign slave_tag[TAG-1:0]   = slvbuf_tag[TAG-1:0];
-
-   assign last_addr_en = (ahb_htrans[1:0] != 2'b0) & ahb_hready & ahb_hwrite ;
-
-
-   rvdffsc_fpga #(.WIDTH(1))   wrbuf_vldff     (.din(1'b1),              .dout(wrbuf_vld),          .en(wrbuf_en),      .clear(wrbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffsc_fpga #(.WIDTH(1))   wrbuf_data_vldff(.din(1'b1),              .dout(wrbuf_data_vld),     .en(wrbuf_data_en), .clear(wrbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(TAG)) wrbuf_tagff     (.din(axi_awid[TAG-1:0]), .dout(wrbuf_tag[TAG-1:0]), .en(wrbuf_en),                         .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(3))   wrbuf_sizeff    (.din(axi_awsize[2:0]),   .dout(wrbuf_size[2:0]),    .en(wrbuf_en),                         .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32))  wrbuf_addrff    (.din(axi_awaddr[31:0]),  .dout(wrbuf_addr[31:0]),   .en(wrbuf_en & bus_clk_en),            .clk(clk), .*);
-   rvdffe       #(.WIDTH(64))  wrbuf_dataff    (.din(axi_wdata[63:0]),   .dout(wrbuf_data[63:0]),   .en(wrbuf_data_en & bus_clk_en),       .clk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(8))   wrbuf_byteenff  (.din(axi_wstrb[7:0]),    .dout(wrbuf_byteen[7:0]),  .en(wrbuf_data_en),                    .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffs_fpga #(.WIDTH(32))   last_bus_addrff (.din(ahb_haddr[31:0]),   .dout(last_bus_addr[31:0]), .en(last_addr_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffsc_fpga #(.WIDTH($bits(state_t))) buf_state_ff  (.din(buf_nxtstate),        .dout({buf_state}),      .en(buf_state_en), .clear(buf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))               buf_writeff   (.din(buf_write_in),        .dout(buf_write),        .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(TAG))             buf_tagff     (.din(buf_tag_in[TAG-1:0]), .dout(buf_tag[TAG-1:0]), .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(32))              buf_addrff    (.din(buf_addr_in[31:0]),   .dout(buf_addr[31:0]),   .en(buf_wr_en & bus_clk_en),        .clk(clk), .*);
-   rvdffs_fpga #(.WIDTH(2))               buf_sizeff    (.din(buf_size_in[1:0]),    .dout(buf_size[1:0]),    .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))               buf_alignedff (.din(buf_aligned_in),      .dout(buf_aligned),      .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(8))               buf_byteenff  (.din(buf_byteen_in[7:0]),  .dout(buf_byteen[7:0]),  .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(64))              buf_dataff    (.din(buf_data_in[63:0]),   .dout(buf_data[63:0]),   .en(buf_data_wr_en & bus_clk_en),   .clk(clk), .*);
-
-
-   rvdffs_fpga #(.WIDTH(1))   slvbuf_writeff  (.din(buf_write),        .dout(slvbuf_write),        .en(slvbuf_wr_en),    .clk(buf_clk), .clken(buf_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(TAG)) slvbuf_tagff    (.din(buf_tag[TAG-1:0]), .dout(slvbuf_tag[TAG-1:0]), .en(slvbuf_wr_en),    .clk(buf_clk), .clken(buf_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))   slvbuf_errorff  (.din(slvbuf_error_in),  .dout(slvbuf_error),        .en(slvbuf_error_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffsc_fpga #(.WIDTH(1)) buf_cmd_doneff     (.din(1'b1),                  .dout(cmd_doneQ),              .en(cmd_done),            .clear(cmd_done_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(3))  buf_cmd_byte_ptrff (.din(buf_cmd_byte_ptr[2:0]), .dout(buf_cmd_byte_ptrQ[2:0]), .en(buf_cmd_byte_ptr_en),                       .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdff_fpga #(.WIDTH(1))  hready_ff (.din(ahb_hready),       .dout(ahb_hready_q),       .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(2))  htrans_ff (.din(ahb_htrans[1:0]),  .dout(ahb_htrans_q[1:0]),  .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hwrite_ff (.din(ahb_hwrite),       .dout(ahb_hwrite_q),       .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hresp_ff  (.din(ahb_hresp),        .dout(ahb_hresp_q),        .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(64)) hrdata_ff (.din(ahb_hrdata[63:0]), .dout(ahb_hrdata_q[63:0]), .clk(ahbm_data_clk), .clken(ahbm_data_clken), .rawclk(clk), .*);
-
-   // Clock headers
-   // clock enables for ahbm addr/data
-   assign buf_clken       = bus_clk_en & (buf_wr_en | slvbuf_wr_en | clk_override);
-   assign ahbm_data_clken = bus_clk_en & ((buf_state != IDLE) | clk_override);
-
-
-   rvclkhdr bus_cgc       (.en(bus_clk_en),      .l1clk(bus_clk),       .*);
-   rvclkhdr buf_cgc       (.en(buf_clken),       .l1clk(buf_clk), .*);
-   rvclkhdr ahbm_data_cgc (.en(ahbm_data_clken), .l1clk(ahbm_data_clk), .*);
-
-
-endmodule // axi4_to_ahb
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-// $Id$
-//
-// Function: Top level brqrv core file to control the debug mode
-// Comments: Responsible to put the rest of the core in quiesce mode,
-//           Send the commands/address. sends WrData and Recieve read Data.
-//           And then Resume the core to do the normal mode
-// Author  :
-//********************************************************************************
-module eb1_dbg
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   // outputs to the core for command and data interface
-   output logic [31:0]                 dbg_cmd_addr,
-   output logic [31:0]                 dbg_cmd_wrdata,
-   output logic                        dbg_cmd_valid,
-   output logic                        dbg_cmd_write,             // 1: write command, 0: read_command
-   output logic [1:0]                  dbg_cmd_type,              // 0:gpr 1:csr 2: memory
-   output logic [1:0]                  dbg_cmd_size,              // size of the abstract mem access debug command
-   output logic                        dbg_core_rst_l,            // core reset from dm
-
-   // inputs back from the core/dec
-   input logic [31:0]                  core_dbg_rddata,
-   input logic                         core_dbg_cmd_done,         // This will be treated like a valid signal
-   input logic                         core_dbg_cmd_fail,         // Exception during command run
-
-   // Signals to dma to get a bubble
-   output logic                        dbg_dma_bubble,            // Debug needs a bubble to send a valid
-   input  logic                        dma_dbg_ready,             // DMA is ready to accept debug request
-
-   // interface with the rest of the core to halt/resume handshaking
-   output logic                        dbg_halt_req,              // This is a pulse
-   output logic                        dbg_resume_req,            // Debug sends a resume requests. Pulse
-   input  logic                        dec_tlu_debug_mode,        // Core is in debug mode
-   input  logic                        dec_tlu_dbg_halted,        // The core has finished the queiscing sequence. Core is halted now
-   input  logic                        dec_tlu_mpc_halted_only,   // Only halted due to MPC
-   input  logic                        dec_tlu_resume_ack,        // core sends back an ack for the resume (pulse)
-
-   // inputs from the JTAG
-   input logic                         dmi_reg_en,                // read or write
-   input logic [6:0]                   dmi_reg_addr,              // address of DM register
-   input logic                         dmi_reg_wr_en,             // write instruction
-   input logic [31:0]                  dmi_reg_wdata,             // write data
-
-   // output
-   output logic [31:0]                 dmi_reg_rdata,             // read data
-
-   // AXI Write Channels
-   output logic                        sb_axi_awvalid,
-   input  logic                        sb_axi_awready,
-   output logic [pt.SB_BUS_TAG-1:0]    sb_axi_awid,
-   output logic [31:0]                 sb_axi_awaddr,
-   output logic [3:0]                  sb_axi_awregion,
-   output logic [7:0]                  sb_axi_awlen,
-   output logic [2:0]                  sb_axi_awsize,
-   output logic [1:0]                  sb_axi_awburst,
-   output logic                        sb_axi_awlock,
-   output logic [3:0]                  sb_axi_awcache,
-   output logic [2:0]                  sb_axi_awprot,
-   output logic [3:0]                  sb_axi_awqos,
-
-   output logic                        sb_axi_wvalid,
-   input  logic                        sb_axi_wready,
-   output logic [63:0]                 sb_axi_wdata,
-   output logic [7:0]                  sb_axi_wstrb,
-   output logic                        sb_axi_wlast,
-
-   input  logic                        sb_axi_bvalid,
-   output logic                        sb_axi_bready,
-   input  logic [1:0]                  sb_axi_bresp,
-
-   // AXI Read Channels
-   output logic                        sb_axi_arvalid,
-   input  logic                        sb_axi_arready,
-   output logic [pt.SB_BUS_TAG-1:0]    sb_axi_arid,
-   output logic [31:0]                 sb_axi_araddr,
-   output logic [3:0]                  sb_axi_arregion,
-   output logic [7:0]                  sb_axi_arlen,
-   output logic [2:0]                  sb_axi_arsize,
-   output logic [1:0]                  sb_axi_arburst,
-   output logic                        sb_axi_arlock,
-   output logic [3:0]                  sb_axi_arcache,
-   output logic [2:0]                  sb_axi_arprot,
-   output logic [3:0]                  sb_axi_arqos,
-
-   input  logic                        sb_axi_rvalid,
-   output logic                        sb_axi_rready,
-   input  logic [63:0]                 sb_axi_rdata,
-   input  logic [1:0]                  sb_axi_rresp,
-
-   input logic                         dbg_bus_clk_en,
-
-   // general inputs
-   input logic                         clk,
-   input logic                         rst_l,        // This includes both top rst and debug rst
-   input logic                         dbg_rst_l,
-   input logic                         clk_override,
-   input logic                         scan_mode
-);
-
-
-   typedef enum logic [3:0] {IDLE=4'h0, HALTING=4'h1, HALTED=4'h2, CORE_CMD_START=4'h3, CORE_CMD_WAIT=4'h4, SB_CMD_START=4'h5, SB_CMD_SEND=4'h6, SB_CMD_RESP=4'h7, CMD_DONE=4'h8, RESUMING=4'h9} state_t;
-   typedef enum logic [3:0] {SBIDLE=4'h0, WAIT_RD=4'h1, WAIT_WR=4'h2, CMD_RD=4'h3, CMD_WR=4'h4, CMD_WR_ADDR=4'h5, CMD_WR_DATA=4'h6, RSP_RD=4'h7, RSP_WR=4'h8, DONE=4'h9} sb_state_t;
-
-   state_t       dbg_state;
-   state_t       dbg_nxtstate;
-   logic         dbg_state_en;
-   // these are the registers that the debug module implements
-   logic [31:0]  dmstatus_reg;        // [26:24]-dmerr, [17:16]-resume ack, [9:8]-halted, [3:0]-version
-   logic [31:0]  dmcontrol_reg;       // dmcontrol register has only 6 bits implemented. 31: haltreq, 30: resumereq, 29: haltreset, 28: ackhavereset, 1: ndmreset, 0: dmactive.
-   logic [31:0]  command_reg;
-   logic [31:0]  abstractcs_reg;      // bits implemted are [12] - busy and [10:8]= command error
-   logic [31:0]  haltsum0_reg;
-   logic [31:0]  data0_reg;
-   logic [31:0]  data1_reg;
-
-   // data 0
-   logic [31:0]  data0_din;
-   logic         data0_reg_wren, data0_reg_wren0, data0_reg_wren1, data0_reg_wren2;
-   // data 1
-   logic [31:0]  data1_din;
-   logic         data1_reg_wren, data1_reg_wren0, data1_reg_wren1;
-   // abstractcs
-   logic         abstractcs_busy_wren;
-   logic         abstractcs_busy_din;
-   logic [2:0]   abstractcs_error_din;
-   logic         abstractcs_error_sel0, abstractcs_error_sel1, abstractcs_error_seb1, abstractcs_error_sel3, abstractcs_error_sel4, abstractcs_error_sel5, abstractcs_error_sel6;
-   logic         dbg_sb_bus_error;
-   // abstractauto
-   logic         abstractauto_reg_wren;
-   logic [1:0]   abstractauto_reg;
-
-   // dmstatus
-   logic         dmstatus_resumeack_wren;
-   logic         dmstatus_resumeack_din;
-   logic         dmstatus_haveresetn_wren;
-   logic         dmstatus_resumeack;
-   logic         dmstatus_unavail;
-   logic         dmstatus_running;
-   logic         dmstatus_halted;
-   logic         dmstatus_havereset, dmstatus_haveresetn;
-
-   // dmcontrol
-   logic         resumereq;
-   logic         dmcontrol_wren, dmcontrol_wren_Q;
-   // command
-   logic         execute_command_ns, execute_command;
-   logic         command_wren, command_regno_wren;
-   logic         command_transfer_din;
-   logic         command_postexec_din;
-   logic [31:0]  command_din;
-   logic [3:0]   dbg_cmd_addr_incr;
-   logic [31:0]  dbg_cmd_curr_addr;
-   logic [31:0]  dbg_cmd_next_addr;
-
-   // needed to send the read data back for dmi reads
-   logic  [31:0] dmi_reg_rdata_din;
-
-   sb_state_t    sb_state;
-   sb_state_t    sb_nxtstate;
-   logic         sb_state_en;
-
-   //System bus section
-   logic              sbcs_wren;
-   logic              sbcs_sbbusy_wren;
-   logic              sbcs_sbbusy_din;
-   logic              sbcs_sbbusyerror_wren;
-   logic              sbcs_sbbusyerror_din;
-
-   logic              sbcs_sberror_wren;
-   logic [2:0]        sbcs_sberror_din;
-   logic              sbcs_unaligned;
-   logic              sbcs_illegal_size;
-   logic [19:15]      sbcs_reg_int;
-
-   // data
-   logic              sbdata0_reg_wren0;
-   logic              sbdata0_reg_wren1;
-   logic              sbdata0_reg_wren;
-   logic [31:0]       sbdata0_din;
-
-   logic              sbdata1_reg_wren0;
-   logic              sbdata1_reg_wren1;
-   logic              sbdata1_reg_wren;
-   logic [31:0]       sbdata1_din;
-
-   logic              sbaddress0_reg_wren0;
-   logic              sbaddress0_reg_wren1;
-   logic              sbaddress0_reg_wren;
-   logic [31:0]       sbaddress0_reg_din;
-   logic [3:0]        sbaddress0_incr;
-   logic              sbreadonaddr_access;
-   logic              sbreadondata_access;
-   logic              sbdata0wr_access;
-
-   logic              sb_abmem_cmd_done_in, sb_abmem_data_done_in;
-   logic              sb_abmem_cmd_done_en, sb_abmem_data_done_en;
-   logic              sb_abmem_cmd_done, sb_abmem_data_done;
-   logic [31:0]       abmem_addr;
-   logic              abmem_addr_in_dccm_region, abmem_addr_in_iccm_region, abmem_addr_in_pic_region;
-   logic              abmem_addr_core_local;
-   logic              abmem_addr_external;
-
-   logic              sb_cmd_pending, sb_abmem_cmd_pending;
-   logic              sb_abmem_cmd_write;
-   logic [2:0]        sb_abmem_cmd_size;
-   logic [31:0]       sb_abmem_cmd_addr;
-   logic [31:0]       sb_abmem_cmd_wdata;
-
-   logic [2:0]        sb_cmd_size;
-   logic [31:0]       sb_cmd_addr;
-   logic [63:0]       sb_cmd_wdata;
-
-   logic              sb_bus_cmd_read, sb_bus_cmd_write_addr, sb_bus_cmd_write_data;
-   logic              sb_bus_rsp_read, sb_bus_rsp_write;
-   logic              sb_bus_rsp_error;
-   logic [63:0]       sb_bus_rdata;
-
-   //registers
-   logic [31:0]       sbcs_reg;
-   logic [31:0]       sbaddress0_reg;
-   logic [31:0]       sbdata0_reg;
-   logic [31:0]       sbdata1_reg;
-
-   logic              sb_abmem_cmd_arvalid, sb_abmem_cmd_awvalid, sb_abmem_cmd_wvalid;
-   logic              sb_abmem_read_pend;
-   logic              sb_cmd_awvalid, sb_cmd_wvalid, sb_cmd_arvalid;
-   logic              sb_read_pend;
-   logic [31:0]       sb_axi_addr;
-   logic [63:0]       sb_axi_wrdata;
-   logic [2:0]        sb_axi_size;
-
-   logic              dbg_dm_rst_l;
-
-   //clken
-   logic              dbg_free_clken;
-   logic              dbg_free_clk;
-
-   logic              sb_free_clken;
-   logic              sb_free_clk;
-
-   // clocking
-   // used for the abstract commands.
-   assign dbg_free_clken  = dmi_reg_en | execute_command | (dbg_state != IDLE) | dbg_state_en | dec_tlu_dbg_halted | dec_tlu_mpc_halted_only | dec_tlu_debug_mode | dbg_halt_req | clk_override;
-
-   // used for the system bus
-   assign sb_free_clken = dmi_reg_en | execute_command | sb_state_en | (sb_state != SBIDLE) | clk_override;
-
-   rvoclkhdr dbg_free_cgc    (.en(dbg_free_clken), .l1clk(dbg_free_clk), .*);
-   rvoclkhdr sb_free_cgc     (.en(sb_free_clken), .l1clk(sb_free_clk), .*);
-
-   // end clocking section
-
-   // Reset logic
-   assign dbg_dm_rst_l = dbg_rst_l & (dmcontrol_reg[0] | scan_mode);
-   assign dbg_core_rst_l = ~dmcontrol_reg[1] | scan_mode;
-
-   // system bus register
-   // sbcs[31:29], sbcs - [22]:sbbusyerror, [21]: sbbusy, [20]:sbreadonaddr, [19:17]:sbaccess, [16]:sbautoincrement, [15]:sbreadondata, [14:12]:sberror, sbsize=32, 128=0, 64/32/16/8 are legal
-   assign        sbcs_reg[31:29] = 3'b1;
-   assign        sbcs_reg[28:23] = '0;
-   assign        sbcs_reg[19:15] = {sbcs_reg_int[19], ~sbcs_reg_int[18], sbcs_reg_int[17:15]};
-   assign        sbcs_reg[11:5]  = 7'h20;
-   assign        sbcs_reg[4:0]   = 5'b01111;
-   assign        sbcs_wren = (dmi_reg_addr ==  7'h38) & dmi_reg_en & dmi_reg_wr_en & (sb_state == SBIDLE);
-   assign        sbcs_sbbusyerror_wren = (sbcs_wren & dmi_reg_wdata[22]) |
-                                         (sbcs_reg[21] & dmi_reg_en & ((dmi_reg_wr_en & (dmi_reg_addr == 7'h39)) | (dmi_reg_addr == 7'h3c) | (dmi_reg_addr == 7'h3d)));
-   assign        sbcs_sbbusyerror_din = ~(sbcs_wren & dmi_reg_wdata[22]);   // Clear when writing one
-
-   rvdffs #(1) sbcs_sbbusyerror_reg  (.din(sbcs_sbbusyerror_din),  .dout(sbcs_reg[22]),    .en(sbcs_sbbusyerror_wren), .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(1) sbcs_sbbusy_reg       (.din(sbcs_sbbusy_din),       .dout(sbcs_reg[21]),    .en(sbcs_sbbusy_wren),      .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(1) sbcs_sbreadonaddr_reg (.din(dmi_reg_wdata[20]),     .dout(sbcs_reg[20]),    .en(sbcs_wren),             .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(5) sbcs_misc_reg         (.din({dmi_reg_wdata[19],~dmi_reg_wdata[18],dmi_reg_wdata[17:15]}),
-                                      .dout(sbcs_reg_int[19:15]), .en(sbcs_wren),             .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(3) sbcs_error_reg        (.din(sbcs_sberror_din[2:0]), .dout(sbcs_reg[14:12]), .en(sbcs_sberror_wren),     .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-
-   assign sbcs_unaligned =    ((sbcs_reg[19:17] == 3'b001) &  sbaddress0_reg[0]) |
-                              ((sbcs_reg[19:17] == 3'b010) &  (|sbaddress0_reg[1:0])) |
-                              ((sbcs_reg[19:17] == 3'b011) &  (|sbaddress0_reg[2:0]));
-
-   assign sbcs_illegal_size = sbcs_reg[19];    // Anything bigger than 64 bits is illegal
-
-   assign sbaddress0_incr[3:0] = ({4{(sbcs_reg[19:17] == 3'h0)}} &  4'b0001) |
-                                 ({4{(sbcs_reg[19:17] == 3'h1)}} &  4'b0010) |
-                                 ({4{(sbcs_reg[19:17] == 3'h2)}} &  4'b0100) |
-                                 ({4{(sbcs_reg[19:17] == 3'h3)}} &  4'b1000);
-
-   // sbdata
-   assign        sbdata0_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h3c);   // write data only when single read is 0
-   assign        sbdata0_reg_wren1   = (sb_state == RSP_RD) & sb_state_en & ~sbcs_sberror_wren;
-   assign        sbdata0_reg_wren    = sbdata0_reg_wren0 | sbdata0_reg_wren1;
-
-   assign        sbdata1_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h3d);   // write data only when single read is 0;
-   assign        sbdata1_reg_wren1   = (sb_state == RSP_RD) & sb_state_en & ~sbcs_sberror_wren;
-   assign        sbdata1_reg_wren    = sbdata1_reg_wren0 | sbdata1_reg_wren1;
-
-   assign        sbdata0_din[31:0]   = ({32{sbdata0_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                       ({32{sbdata0_reg_wren1}} & sb_bus_rdata[31:0]);
-   assign        sbdata1_din[31:0]   = ({32{sbdata1_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                       ({32{sbdata1_reg_wren1}} & sb_bus_rdata[63:32]);
-
-   rvdffe #(32)    dbg_sbdata0_reg    (.*, .din(sbdata0_din[31:0]), .dout(sbdata0_reg[31:0]), .en(sbdata0_reg_wren), .rst_l(dbg_dm_rst_l));
-   rvdffe #(32)    dbg_sbdata1_reg    (.*, .din(sbdata1_din[31:0]), .dout(sbdata1_reg[31:0]), .en(sbdata1_reg_wren), .rst_l(dbg_dm_rst_l));
-
-    // sbaddress
-   assign        sbaddress0_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h39);
-   assign        sbaddress0_reg_wren    = sbaddress0_reg_wren0 | sbaddress0_reg_wren1;
-   assign        sbaddress0_reg_din[31:0]= ({32{sbaddress0_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                           ({32{sbaddress0_reg_wren1}} & (sbaddress0_reg[31:0] + {28'b0,sbaddress0_incr[3:0]}));
-   rvdffe #(32)    dbg_sbaddress0_reg    (.*, .din(sbaddress0_reg_din[31:0]), .dout(sbaddress0_reg[31:0]), .en(sbaddress0_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   assign sbreadonaddr_access = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h39) & sbcs_reg[20];   // if readonaddr is set the next command will start upon writing of addr0
-   assign sbreadondata_access = dmi_reg_en & ~dmi_reg_wr_en & (dmi_reg_addr == 7'h3c) & sbcs_reg[15];  // if readondata is set the next command will start upon reading of data0
-   assign sbdata0wr_access  = dmi_reg_en &  dmi_reg_wr_en & (dmi_reg_addr == 7'h3c);                   // write to sbdata0 will start write command to system bus
-
-   // memory mapped registers
-   // dmcontrol register has only 5 bits implemented. 31: haltreq, 30: resumereq, 28: ackhavereset, 1: ndmreset, 0: dmactive.
-   // rest all the bits are zeroed out
-   // dmactive flop is reset based on core rst_l, all other flops use dm_rst_l
-   assign dmcontrol_wren      = (dmi_reg_addr ==  7'h10) & dmi_reg_en & dmi_reg_wr_en;
-   assign dmcontrol_reg[29]   = '0;
-   assign dmcontrol_reg[27:2] = '0;
-   assign resumereq           = dmcontrol_reg[30] & ~dmcontrol_reg[31] & dmcontrol_wren_Q;
-   rvdffs #(4) dmcontrolff (.din({dmi_reg_wdata[31:30],dmi_reg_wdata[28],dmi_reg_wdata[1]}), .dout({dmcontrol_reg[31:30], dmcontrol_reg[28], dmcontrol_reg[1]}), .en(dmcontrol_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdffs #(1) dmcontrol_dmactive_ff (.din(dmi_reg_wdata[0]), .dout(dmcontrol_reg[0]), .en(dmcontrol_wren), .rst_l(dbg_rst_l), .clk(dbg_free_clk));
-   rvdff  #(1) dmcontrol_wrenff(.din(dmcontrol_wren), .dout(dmcontrol_wren_Q), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-   // dmstatus register bits that are implemented
-   // [19:18]-havereset,[17:16]-resume ack, [9:8]-halted, [3:0]-version
-   // rest all the bits are zeroed out
-   //assign dmstatus_wren       = (dmi_reg_addr[31:0] ==  32'h11) & dmi_reg_en;
-   assign dmstatus_reg[31:20] = '0;
-   assign dmstatus_reg[19:18] = {2{dmstatus_havereset}};
-   assign dmstatus_reg[15:14] = '0;
-   assign dmstatus_reg[7]     = '1;
-   assign dmstatus_reg[6:4]   = '0;
-   assign dmstatus_reg[17:16] = {2{dmstatus_resumeack}};
-   assign dmstatus_reg[13:12] = {2{dmstatus_unavail}};
-   assign dmstatus_reg[11:10] = {2{dmstatus_running}};
-   assign dmstatus_reg[9:8]   = {2{dmstatus_halted}};
-   assign dmstatus_reg[3:0]   = 4'h2;
-
-   assign dmstatus_resumeack_wren = ((dbg_state == RESUMING) & dec_tlu_resume_ack) | (dmstatus_resumeack & resumereq & dmstatus_halted);
-   assign dmstatus_resumeack_din  = (dbg_state == RESUMING) & dec_tlu_resume_ack;
-
-   assign dmstatus_haveresetn_wren  = (dmi_reg_addr == 7'h10) & dmi_reg_wdata[28] & dmi_reg_en & dmi_reg_wr_en & dmcontrol_reg[0];   // clear the havereset
-   assign dmstatus_havereset        = ~dmstatus_haveresetn;
-
-   assign dmstatus_unavail = dmcontrol_reg[1] | ~rst_l;
-   assign dmstatus_running = ~(dmstatus_unavail | dmstatus_halted);
-
-   rvdffs  #(1) dmstatus_resumeack_reg  (.din(dmstatus_resumeack_din), .dout(dmstatus_resumeack), .en(dmstatus_resumeack_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdff   #(1) dmstatus_halted_reg     (.din(dec_tlu_dbg_halted & ~dec_tlu_mpc_halted_only),     .dout(dmstatus_halted), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdffs  #(1) dmstatus_haveresetn_reg (.din(1'b1), .dout(dmstatus_haveresetn), .en(dmstatus_haveresetn_wren), .rst_l(rst_l), .clk(dbg_free_clk));
-
-   // haltsum0 register
-   assign haltsum0_reg[31:1] = '0;
-   assign haltsum0_reg[0]    = dmstatus_halted;
-
-   // abstractcs register
-   // bits implemted are [12] - busy and [10:8]= command error
-   assign        abstractcs_reg[31:13] = '0;
-   assign        abstractcs_reg[11]    = '0;
-   assign        abstractcs_reg[7:4]   = '0;
-   assign        abstractcs_reg[3:0]   = 4'h2;    // One data register
-
-   assign        abstractcs_error_sel0 = abstractcs_reg[12] & ~(|abstractcs_reg[10:8]) & dmi_reg_en & ((dmi_reg_wr_en & ((dmi_reg_addr == 7'h16) | (dmi_reg_addr == 7'h17)) | (dmi_reg_addr == 7'h18)) |
-                                                                                                       (dmi_reg_addr == 7'h4) | (dmi_reg_addr == 7'h5));
-   assign        abstractcs_error_sel1 = execute_command & ~(|abstractcs_reg[10:8]) &
-                                         ((~((command_reg[31:24] == 8'b0) | (command_reg[31:24] == 8'h2)))                      |   // Illegal command
-                                          (((command_reg[22:20] == 3'b011) | (command_reg[22])) & (command_reg[31:24] == 8'h2)) |   // Illegal abstract memory size (can't be DW or higher)
-                                          ((command_reg[22:20] != 3'b010) & ((command_reg[31:24] == 8'h0) & command_reg[17]))   |   // Illegal abstract reg size
-                                          ((command_reg[31:24] == 8'h0) & command_reg[18]));                                          //postexec for abstract register access
-   assign        abstractcs_error_seb1 = ((core_dbg_cmd_done & core_dbg_cmd_fail) |                   // exception from core
-                                          (execute_command & (command_reg[31:24] == 8'h0) &           // unimplemented regs
-                                                (((command_reg[15:12] == 4'h1) & (command_reg[11:5] != 0)) | (command_reg[15:13] != 0)))) & ~(|abstractcs_reg[10:8]);
-   assign        abstractcs_error_sel3 = execute_command & (dbg_state != HALTED) & ~(|abstractcs_reg[10:8]);
-   assign        abstractcs_error_sel4 = dbg_sb_bus_error & dbg_bus_clk_en & ~(|abstractcs_reg[10:8]);// sb bus error for abstract memory command
-   assign        abstractcs_error_sel5 = execute_command & (command_reg[31:24] == 8'h2) & ~(|abstractcs_reg[10:8]) &
-                                         (((command_reg[22:20] == 3'b001) & data1_reg[0]) | ((command_reg[22:20] == 3'b010) & (|data1_reg[1:0])));  //Unaligned address for abstract memory
-   assign        abstractcs_error_sel6 = (dmi_reg_addr ==  7'h16) & dmi_reg_en & dmi_reg_wr_en;
-
-   assign        abstractcs_error_din[2:0]  = abstractcs_error_sel0 ? 3'b001 :                  // writing command or abstractcs while a command was executing. Or accessing data0
-                                                 abstractcs_error_sel1 ? 3'b010 :               // writing a illegal command type to cmd field of command
-                                                    abstractcs_error_seb1 ? 3'b011 :            // exception while running command
-                                                       abstractcs_error_sel3 ? 3'b100 :         // writing a comnand when not in the halted state
-                                                          abstractcs_error_sel4 ? 3'b101 :      // Bus error
-                                                             abstractcs_error_sel5 ? 3'b111 :   // unaligned or illegal size abstract memory command
-                                                                abstractcs_error_sel6 ? (~dmi_reg_wdata[10:8] & abstractcs_reg[10:8]) :   //W1C
-                                                                                        abstractcs_reg[10:8];                             //hold
-
-   rvdffs #(1) dmabstractcs_busy_reg  (.din(abstractcs_busy_din), .dout(abstractcs_reg[12]), .en(abstractcs_busy_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdff  #(3) dmabstractcs_error_reg (.din(abstractcs_error_din[2:0]), .dout(abstractcs_reg[10:8]), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-    // abstract auto reg
-   assign abstractauto_reg_wren  = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h18) & ~abstractcs_reg[12];
-   rvdffs #(2) dbg_abstractauto_reg (.*, .din(dmi_reg_wdata[1:0]), .dout(abstractauto_reg[1:0]), .en(abstractauto_reg_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-   // command register - implemented all the bits in this register
-   // command[16] = 1: write, 0: read
-   assign execute_command_ns = command_wren |
-                               (dmi_reg_en & ~abstractcs_reg[12] & (((dmi_reg_addr == 7'h4) & abstractauto_reg[0]) | ((dmi_reg_addr == 7'h5) & abstractauto_reg[1])));
-   assign command_wren = (dmi_reg_addr ==  7'h17) & dmi_reg_en & dmi_reg_wr_en;
-   assign command_regno_wren = command_wren | ((command_reg[31:24] == 8'h0) & command_reg[19] & (dbg_state == CMD_DONE) & ~(|abstractcs_reg[10:8]));  // aarpostincrement
-   assign command_postexec_din = (dmi_reg_wdata[31:24] == 8'h0) & dmi_reg_wdata[18];
-   assign command_transfer_din = (dmi_reg_wdata[31:24] == 8'h0) & dmi_reg_wdata[17];
-   assign command_din[31:16] = {dmi_reg_wdata[31:24],1'b0,dmi_reg_wdata[22:19],command_postexec_din,command_transfer_din, dmi_reg_wdata[16]};
-   assign command_din[15:0] =  command_wren ? dmi_reg_wdata[15:0] : dbg_cmd_next_addr[15:0];
-   rvdff  #(1)  execute_commandff   (.*, .din(execute_command_ns), .dout(execute_command), .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l));
-   rvdffe #(16) dmcommand_reg       (.*, .din(command_din[31:16]), .dout(command_reg[31:16]), .en(command_wren), .rst_l(dbg_dm_rst_l));
-   rvdffe #(16) dmcommand_regno_reg (.*, .din(command_din[15:0]),  .dout(command_reg[15:0]),  .en(command_regno_wren), .rst_l(dbg_dm_rst_l));
-
-  // data0 reg
-   assign data0_reg_wren0   = (dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h4) & (dbg_state == HALTED) & ~abstractcs_reg[12]);
-   assign data0_reg_wren1   = core_dbg_cmd_done & (dbg_state == CORE_CMD_WAIT) & ~command_reg[16];
-   assign data0_reg_wren    = data0_reg_wren0 | data0_reg_wren1 | data0_reg_wren2;
-
-   assign data0_din[31:0]   = ({32{data0_reg_wren0}} & dmi_reg_wdata[31:0])   |
-                              ({32{data0_reg_wren1}} & core_dbg_rddata[31:0]) |
-                              ({32{data0_reg_wren2}} & sb_bus_rdata[31:0]);
-
-   rvdffe #(32) dbg_data0_reg (.*, .din(data0_din[31:0]), .dout(data0_reg[31:0]), .en(data0_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   // data 1
-   assign data1_reg_wren0   = (dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h5) & (dbg_state == HALTED) & ~abstractcs_reg[12]);
-   assign data1_reg_wren1   = (dbg_state == CMD_DONE) & (command_reg[31:24] == 8'h2) & command_reg[19] & ~(|abstractcs_reg[10:8]);   // aampostincrement
-   assign data1_reg_wren    = data1_reg_wren0 | data1_reg_wren1;
-
-   assign data1_din[31:0]   = ({32{data1_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                              ({32{data1_reg_wren1}} & dbg_cmd_next_addr[31:0]);
-
-   rvdffe #(32)    dbg_data1_reg    (.*, .din(data1_din[31:0]), .dout(data1_reg[31:0]), .en(data1_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   rvdffs #(1) sb_abmem_cmd_doneff  (.din(sb_abmem_cmd_done_in),  .dout(sb_abmem_cmd_done),  .en(sb_abmem_cmd_done_en),  .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l), .*);
-   rvdffs #(1) sb_abmem_data_doneff (.din(sb_abmem_data_done_in), .dout(sb_abmem_data_done), .en(sb_abmem_data_done_en), .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l), .*);
-
-   // FSM to control the debug mode entry, command send/recieve, and Resume flow.
-   always_comb begin
-      dbg_nxtstate            = IDLE;
-      dbg_state_en            = 1'b0;
-      abstractcs_busy_wren    = 1'b0;
-      abstractcs_busy_din     = 1'b0;
-      dbg_halt_req            = dmcontrol_wren_Q & dmcontrol_reg[31];      // single pulse output to the core. Need to drive every time this register is written since core might be halted due to MPC
-      dbg_resume_req          = 1'b0;                                      // single pulse output to the core
-      dbg_sb_bus_error        = 1'b0;
-      data0_reg_wren2         = 1'b0;
-      sb_abmem_cmd_done_in    = 1'b0;
-      sb_abmem_data_done_in   = 1'b0;
-      sb_abmem_cmd_done_en    = 1'b0;
-      sb_abmem_data_done_en   = 1'b0;
-
-       case (dbg_state)
-            IDLE: begin
-                     dbg_nxtstate         = (dmstatus_reg[9] | dec_tlu_mpc_halted_only) ? HALTED : HALTING;         // initiate the halt command to the core
-                     dbg_state_en         = dmcontrol_reg[31] | dmstatus_reg[9] | dec_tlu_mpc_halted_only;      // when the jtag writes the halt bit in the DM register, OR when the status indicates H
-                     dbg_halt_req         = dmcontrol_reg[31];               // only when jtag has written the halt_req bit in the control. Removed debug mode qualification during MPC changes
-            end
-            HALTING : begin
-                     dbg_nxtstate         = HALTED;                                 // Goto HALTED once the core sends an ACK
-                     dbg_state_en         = dmstatus_reg[9] | dec_tlu_mpc_halted_only;     // core indicates halted
-            end
-            HALTED: begin
-                     // wait for halted to go away before send to resume. Else start of new command
-                     dbg_nxtstate         = dmstatus_reg[9] ? (resumereq ? RESUMING : (((command_reg[31:24] == 8'h2) & abmem_addr_external) ? SB_CMD_START : CORE_CMD_START)) :
-                                                                                    (dmcontrol_reg[31] ? HALTING : IDLE);       // This is MPC halted case
-                     dbg_state_en         = (dmstatus_reg[9] & resumereq) | execute_command | ~(dmstatus_reg[9] | dec_tlu_mpc_halted_only);
-                     abstractcs_busy_wren = dbg_state_en & ((dbg_nxtstate == CORE_CMD_START) | (dbg_nxtstate == SB_CMD_START));                 // write busy when a new command was written by jtag
-                     abstractcs_busy_din  = 1'b1;
-                     dbg_resume_req       = dbg_state_en & (dbg_nxtstate == RESUMING);                       // single cycle pulse to core if resuming
-            end
-            CORE_CMD_START: begin
-                     // Don't execute the command if cmderror or transfer=0 for abstract register access
-                     dbg_nxtstate         = ((|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17])) ? CMD_DONE : CORE_CMD_WAIT;     // new command sent to the core
-                     dbg_state_en         = dbg_cmd_valid | (|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17]);
-            end
-            CORE_CMD_WAIT: begin
-                     dbg_nxtstate         = CMD_DONE;
-                     dbg_state_en         = core_dbg_cmd_done;                   // go to done state for one cycle after completing current command
-            end
-            SB_CMD_START: begin
-                     dbg_nxtstate         = (|abstractcs_reg[10:8]) ? CMD_DONE : SB_CMD_SEND;
-                     dbg_state_en         = (dbg_bus_clk_en & ~sb_cmd_pending) | (|abstractcs_reg[10:8]);
-            end
-            SB_CMD_SEND: begin
-                     sb_abmem_cmd_done_in = 1'b1;
-                     sb_abmem_data_done_in= 1'b1;
-                     sb_abmem_cmd_done_en = (sb_bus_cmd_read | sb_bus_cmd_write_addr) & dbg_bus_clk_en;
-                     sb_abmem_data_done_en= (sb_bus_cmd_read | sb_bus_cmd_write_data) & dbg_bus_clk_en;
-                     dbg_nxtstate         = SB_CMD_RESP;
-                     dbg_state_en         = (sb_abmem_cmd_done | sb_abmem_cmd_done_en) & (sb_abmem_data_done | sb_abmem_data_done_en) & dbg_bus_clk_en;
-            end
-            SB_CMD_RESP: begin
-                     dbg_nxtstate         = CMD_DONE;
-                     dbg_state_en         = (sb_bus_rsp_read | sb_bus_rsp_write) & dbg_bus_clk_en;
-                     dbg_sb_bus_error     = (sb_bus_rsp_read | sb_bus_rsp_write) & sb_bus_rsp_error & dbg_bus_clk_en;
-                     data0_reg_wren2      = dbg_state_en & ~sb_abmem_cmd_write & ~dbg_sb_bus_error;
-            end
-            CMD_DONE: begin
-                     dbg_nxtstate         = HALTED;
-                     dbg_state_en         = 1'b1;
-                     abstractcs_busy_wren = dbg_state_en;                    // remove the busy bit from the abstracts ( bit 12 )
-                     abstractcs_busy_din  = 1'b0;
-                     sb_abmem_cmd_done_in = 1'b0;
-                     sb_abmem_data_done_in= 1'b0;
-                     sb_abmem_cmd_done_en = 1'b1;
-                     sb_abmem_data_done_en= 1'b1;
-            end
-            RESUMING : begin
-                     dbg_nxtstate            = IDLE;
-                     dbg_state_en            = dmstatus_reg[17];             // resume ack has been updated in the dmstatus register
-           end
-           default : begin
-                     dbg_nxtstate            = IDLE;
-                     dbg_state_en            = 1'b0;
-                     abstractcs_busy_wren    = 1'b0;
-                     abstractcs_busy_din     = 1'b0;
-                     dbg_halt_req            = 1'b0;         // single pulse output to the core
-                     dbg_resume_req          = 1'b0;         // single pulse output to the core
-                     dbg_sb_bus_error        = 1'b0;
-                     data0_reg_wren2         = 1'b0;
-                     sb_abmem_cmd_done_in    = 1'b0;
-                     sb_abmem_data_done_in   = 1'b0;
-                     sb_abmem_cmd_done_en    = 1'b0;
-                     sb_abmem_data_done_en   = 1'b0;
-          end
-         endcase
-   end // always_comb begin
-
-   assign dmi_reg_rdata_din[31:0] = ({32{dmi_reg_addr == 7'h4}}  & data0_reg[31:0])      |
-                                    ({32{dmi_reg_addr == 7'h5}}  & data1_reg[31:0])      |
-                                    ({32{dmi_reg_addr == 7'h10}} & {2'b0,dmcontrol_reg[29],1'b0,dmcontrol_reg[27:0]})  |  // Read0 to Write only bits
-                                    ({32{dmi_reg_addr == 7'h11}} & dmstatus_reg[31:0])   |
-                                    ({32{dmi_reg_addr == 7'h16}} & abstractcs_reg[31:0]) |
-                                    ({32{dmi_reg_addr == 7'h17}} & command_reg[31:0])    |
-                                    ({32{dmi_reg_addr == 7'h18}} & {30'h0,abstractauto_reg[1:0]})    |
-                                    ({32{dmi_reg_addr == 7'h40}} & haltsum0_reg[31:0])   |
-                                    ({32{dmi_reg_addr == 7'h38}} & sbcs_reg[31:0])       |
-                                    ({32{dmi_reg_addr == 7'h39}} & sbaddress0_reg[31:0]) |
-                                    ({32{dmi_reg_addr == 7'h3c}} & sbdata0_reg[31:0])    |
-                                    ({32{dmi_reg_addr == 7'h3d}} & sbdata1_reg[31:0]);
-
-
-   rvdffs #($bits(state_t)) dbg_state_reg    (.din(dbg_nxtstate), .dout({dbg_state}), .en(dbg_state_en), .rst_l(dbg_dm_rst_l & rst_l), .clk(dbg_free_clk));
-   rvdffe #(32)             dmi_rddata_reg   (.din(dmi_reg_rdata_din[31:0]), .dout(dmi_reg_rdata[31:0]), .en(dmi_reg_en), .rst_l(dbg_dm_rst_l), .clk(clk), .*);
-
-   assign abmem_addr[31:0]      = data1_reg[31:0];
-   assign abmem_addr_core_local = (abmem_addr_in_dccm_region | abmem_addr_in_iccm_region | abmem_addr_in_pic_region);
-   assign abmem_addr_external   = ~abmem_addr_core_local;
-
-   assign abmem_addr_in_dccm_region = (abmem_addr[31:28] == pt.DCCM_REGION) & pt.DCCM_ENABLE;
-   assign abmem_addr_in_iccm_region = (abmem_addr[31:28] == pt.ICCM_REGION) & pt.ICCM_ENABLE;
-   assign abmem_addr_in_pic_region  = (abmem_addr[31:28] == pt.PIC_REGION);
-
-   // interface for the core
-   assign dbg_cmd_addr[31:0]    = (command_reg[31:24] == 8'h2) ? data1_reg[31:0]  : {20'b0, command_reg[11:0]};
-   assign dbg_cmd_wrdata[31:0]  = data0_reg[31:0];
-   assign dbg_cmd_valid         = (dbg_state == CORE_CMD_START) & ~((|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17]) | ((command_reg[31:24] == 8'h2) & abmem_addr_external)) & dma_dbg_ready;
-   assign dbg_cmd_write         = command_reg[16];
-   assign dbg_cmd_type[1:0]     = (command_reg[31:24] == 8'h2) ? 2'b10 : {1'b0, (command_reg[15:12] == 4'b0)};
-   assign dbg_cmd_size[1:0]     = command_reg[21:20];
-
-   assign dbg_cmd_addr_incr[3:0]  = (command_reg[31:24] == 8'h2) ? (4'h1 << sb_abmem_cmd_size[1:0]) : 4'h1;
-   assign dbg_cmd_curr_addr[31:0] = (command_reg[31:24] == 8'h2) ? data1_reg[31:0]  : {16'b0, command_reg[15:0]};
-   assign dbg_cmd_next_addr[31:0] = dbg_cmd_curr_addr[31:0] + {28'h0,dbg_cmd_addr_incr[3:0]};
-
-   // Ask DMA to stop taking bus trxns since debug request is done
-   assign dbg_dma_bubble = ((dbg_state == CORE_CMD_START) & ~(|abstractcs_reg[10:8])) | (dbg_state == CORE_CMD_WAIT);
-
-   assign sb_cmd_pending       = (sb_state == CMD_RD) | (sb_state == CMD_WR) | (sb_state == CMD_WR_ADDR) | (sb_state == CMD_WR_DATA) | (sb_state == RSP_RD) | (sb_state == RSP_WR);
-   assign sb_abmem_cmd_pending = (dbg_state == SB_CMD_START) | (dbg_state == SB_CMD_SEND) | (dbg_state== SB_CMD_RESP);
-
-
-  // system bus FSM
-  always_comb begin
-      sb_nxtstate            = SBIDLE;
-      sb_state_en            = 1'b0;
-      sbcs_sbbusy_wren       = 1'b0;
-      sbcs_sbbusy_din        = 1'b0;
-      sbcs_sberror_wren      = 1'b0;
-      sbcs_sberror_din[2:0]  = 3'b0;
-      sbaddress0_reg_wren1   = 1'b0;
-      case (sb_state)
-            SBIDLE: begin
-                     sb_nxtstate            = sbdata0wr_access ? WAIT_WR : WAIT_RD;
-                     sb_state_en            = (sbdata0wr_access | sbreadondata_access | sbreadonaddr_access) & ~(|sbcs_reg[14:12]) & ~sbcs_reg[22];
-                     sbcs_sbbusy_wren       = sb_state_en;                                                 // set the single read bit if it is a singlread command
-                     sbcs_sbbusy_din        = 1'b1;
-                     sbcs_sberror_wren      = sbcs_wren & (|dmi_reg_wdata[14:12]);                                            // write to clear the error bits
-                     sbcs_sberror_din[2:0]  = ~dmi_reg_wdata[14:12] & sbcs_reg[14:12];
-            end
-            WAIT_RD: begin
-                     sb_nxtstate           = (sbcs_unaligned | sbcs_illegal_size) ? DONE : CMD_RD;
-                     sb_state_en           = (dbg_bus_clk_en & ~sb_abmem_cmd_pending) | sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_wren     = sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_din[2:0] = sbcs_unaligned ? 3'b011 : 3'b100;
-            end
-            WAIT_WR: begin
-                     sb_nxtstate           = (sbcs_unaligned | sbcs_illegal_size) ? DONE : CMD_WR;
-                     sb_state_en           = (dbg_bus_clk_en & ~sb_abmem_cmd_pending) | sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_wren     = sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_din[2:0] = sbcs_unaligned ? 3'b011 : 3'b100;
-            end
-            CMD_RD : begin
-                     sb_nxtstate           = RSP_RD;
-                     sb_state_en           = sb_bus_cmd_read & dbg_bus_clk_en;
-            end
-            CMD_WR : begin
-                     sb_nxtstate           = (sb_bus_cmd_write_addr & sb_bus_cmd_write_data) ? RSP_WR : (sb_bus_cmd_write_data ? CMD_WR_ADDR : CMD_WR_DATA);
-                     sb_state_en           = (sb_bus_cmd_write_addr | sb_bus_cmd_write_data) & dbg_bus_clk_en;
-            end
-            CMD_WR_ADDR : begin
-                     sb_nxtstate           = RSP_WR;
-                     sb_state_en           = sb_bus_cmd_write_addr & dbg_bus_clk_en;
-            end
-            CMD_WR_DATA : begin
-                     sb_nxtstate           = RSP_WR;
-                     sb_state_en           = sb_bus_cmd_write_data & dbg_bus_clk_en;
-            end
-            RSP_RD: begin
-                     sb_nxtstate           = DONE;
-                     sb_state_en           = sb_bus_rsp_read & dbg_bus_clk_en;
-                     sbcs_sberror_wren     = sb_state_en & sb_bus_rsp_error;
-                     sbcs_sberror_din[2:0] = 3'b010;
-            end
-            RSP_WR: begin
-                     sb_nxtstate           = DONE;
-                     sb_state_en           = sb_bus_rsp_write & dbg_bus_clk_en;
-                     sbcs_sberror_wren     = sb_state_en & sb_bus_rsp_error;
-                     sbcs_sberror_din[2:0] = 3'b010;
-            end
-            DONE: begin
-                     sb_nxtstate            = SBIDLE;
-                     sb_state_en            = 1'b1;
-                     sbcs_sbbusy_wren       = 1'b1;                           // reset the single read
-                     sbcs_sbbusy_din        = 1'b0;
-                     sbaddress0_reg_wren1   = sbcs_reg[16] & (sbcs_reg[14:12] == 3'b0);    // auto increment was set and no error. Update to new address after completing the current command
-            end
-            default : begin
-                     sb_nxtstate            = SBIDLE;
-                     sb_state_en            = 1'b0;
-                     sbcs_sbbusy_wren       = 1'b0;
-                     sbcs_sbbusy_din        = 1'b0;
-                     sbcs_sberror_wren      = 1'b0;
-                     sbcs_sberror_din[2:0]  = 3'b0;
-                     sbaddress0_reg_wren1   = 1'b0;
-           end
-         endcase
-   end // always_comb begin
-
-   rvdffs #($bits(sb_state_t)) sb_state_reg (.din(sb_nxtstate), .dout({sb_state}), .en(sb_state_en), .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-
-   assign sb_abmem_cmd_write      = command_reg[16];
-   assign sb_abmem_cmd_size[2:0]  = {1'b0, command_reg[21:20]};
-   assign sb_abmem_cmd_addr[31:0] = abmem_addr[31:0];
-   assign sb_abmem_cmd_wdata[31:0] = data0_reg[31:0];
-
-   assign sb_cmd_size[2:0]   = sbcs_reg[19:17];
-   assign sb_cmd_wdata[63:0] = {sbdata1_reg[31:0], sbdata0_reg[31:0]};
-   assign sb_cmd_addr[31:0]  = sbaddress0_reg[31:0];
-
-   assign sb_abmem_cmd_awvalid    = (dbg_state == SB_CMD_SEND) & sb_abmem_cmd_write & ~sb_abmem_cmd_done;
-   assign sb_abmem_cmd_wvalid     = (dbg_state == SB_CMD_SEND) & sb_abmem_cmd_write & ~sb_abmem_data_done;
-   assign sb_abmem_cmd_arvalid    = (dbg_state == SB_CMD_SEND) & ~sb_abmem_cmd_write & ~sb_abmem_cmd_done & ~sb_abmem_data_done;
-   assign sb_abmem_read_pend      = (dbg_state == SB_CMD_RESP) & ~sb_abmem_cmd_write;
-
-   assign sb_cmd_awvalid     = ((sb_state == CMD_WR) | (sb_state == CMD_WR_ADDR));
-   assign sb_cmd_wvalid      = ((sb_state == CMD_WR) | (sb_state == CMD_WR_DATA));
-   assign sb_cmd_arvalid     = (sb_state == CMD_RD);
-   assign sb_read_pend       = (sb_state == RSP_RD);
-
-   assign sb_axi_size[2:0]    = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid | sb_abmem_cmd_arvalid | sb_abmem_read_pend) ? sb_abmem_cmd_size[2:0] : sb_cmd_size[2:0];
-   assign sb_axi_addr[31:0]   = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid | sb_abmem_cmd_arvalid | sb_abmem_read_pend) ? sb_abmem_cmd_addr[31:0] : sb_cmd_addr[31:0];
-   assign sb_axi_wrdata[63:0] = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid) ? {2{sb_abmem_cmd_wdata[31:0]}} : sb_cmd_wdata[63:0];
-
-   // Generic bus response signals
-   assign sb_bus_cmd_read       = sb_axi_arvalid & sb_axi_arready;
-   assign sb_bus_cmd_write_addr = sb_axi_awvalid & sb_axi_awready;
-   assign sb_bus_cmd_write_data = sb_axi_wvalid  & sb_axi_wready;
-
-   assign sb_bus_rsp_read  = sb_axi_rvalid & sb_axi_rready;
-   assign sb_bus_rsp_write = sb_axi_bvalid & sb_axi_bready;
-   assign sb_bus_rsp_error = (sb_bus_rsp_read & (|(sb_axi_rresp[1:0]))) | (sb_bus_rsp_write & (|(sb_axi_bresp[1:0])));
-
-   // AXI Request signals
-   assign sb_axi_awvalid              = sb_abmem_cmd_awvalid | sb_cmd_awvalid;
-   assign sb_axi_awaddr[31:0]         = sb_axi_addr[31:0];
-   assign sb_axi_awid[pt.SB_BUS_TAG-1:0] = '0;
-   assign sb_axi_awsize[2:0]          = sb_axi_size[2:0];
-   assign sb_axi_awprot[2:0]          = 3'b001;
-   assign sb_axi_awcache[3:0]         = 4'b1111;
-   assign sb_axi_awregion[3:0]        = sb_axi_addr[31:28];
-   assign sb_axi_awlen[7:0]           = '0;
-   assign sb_axi_awburst[1:0]         = 2'b01;
-   assign sb_axi_awqos[3:0]           = '0;
-   assign sb_axi_awlock               = '0;
-
-   assign sb_axi_wvalid       = sb_abmem_cmd_wvalid | sb_cmd_wvalid;
-   assign sb_axi_wdata[63:0]  = ({64{(sb_axi_size[2:0] == 3'h0)}} & {8{sb_axi_wrdata[7:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h1)}} & {4{sb_axi_wrdata[15:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h2)}} & {2{sb_axi_wrdata[31:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h3)}} & {sb_axi_wrdata[63:0]});
-   assign sb_axi_wstrb[7:0]   = ({8{(sb_axi_size[2:0] == 3'h0)}} & (8'h1 << sb_axi_addr[2:0])) |
-                                ({8{(sb_axi_size[2:0] == 3'h1)}} & (8'h3 << {sb_axi_addr[2:1],1'b0})) |
-                                ({8{(sb_axi_size[2:0] == 3'h2)}} & (8'hf << {sb_axi_addr[2],2'b0})) |
-                                ({8{(sb_axi_size[2:0] == 3'h3)}} & 8'hff);
-   assign sb_axi_wlast        = '1;
-
-   assign sb_axi_arvalid              = sb_abmem_cmd_arvalid | sb_cmd_arvalid;
-   assign sb_axi_araddr[31:0]         = sb_axi_addr[31:0];
-   assign sb_axi_arid[pt.SB_BUS_TAG-1:0] = '0;
-   assign sb_axi_arsize[2:0]          = sb_axi_size[2:0];
-   assign sb_axi_arprot[2:0]          = 3'b001;
-   assign sb_axi_arcache[3:0]         = 4'b0;
-   assign sb_axi_arregion[3:0]        = sb_axi_addr[31:28];
-   assign sb_axi_arlen[7:0]           = '0;
-   assign sb_axi_arburst[1:0]         = 2'b01;
-   assign sb_axi_arqos[3:0]           = '0;
-   assign sb_axi_arlock               = '0;
-
-   // AXI Response signals
-   assign sb_axi_bready = 1'b1;
-
-   assign sb_axi_rready = 1'b1;
-   assign sb_bus_rdata[63:0] = ({64{sb_axi_size == 3'h0}} & ((sb_axi_rdata[63:0] >>  8*sb_axi_addr[2:0]) & 64'hff))       |
-                               ({64{sb_axi_size == 3'h1}} & ((sb_axi_rdata[63:0] >> 16*sb_axi_addr[2:1]) & 64'hffff))    |
-                               ({64{sb_axi_size == 3'h2}} & ((sb_axi_rdata[63:0] >> 32*sb_axi_addr[2]) & 64'hffff_ffff)) |
-                               ({64{sb_axi_size == 3'h3}} & sb_axi_rdata[63:0]);
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// dec: decode unit - decode, bypassing, ARF, interrupts
-//
-//********************************************************************************
-// $Id$
-//
-//
-// Function: Decode
-// Comments: Decode, dependency scoreboard, ARF
-//
-//
-// A -> D -> EX1 ... WB
-//
-//********************************************************************************
-
-module eb1_dec
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic clk,                          // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic active_clk,                   // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic free_clk,                     // Clock always.                  Through two clock headers. For flops without second clock header built in.
-   input logic free_l2clk,                   // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic lsu_fastint_stall_any,        // needed by lsu for 2nd pass of dma with ecc correction, stall next cycle
-
-   output logic dec_extint_stall,            // Stall on external interrupt
-
-   output logic dec_i0_decode_d,             // Valid instruction at D-stage and not blocked
-   output logic dec_pause_state_cg,          // to top for active state clock gating
-
-   output logic dec_tlu_core_empty,
-
-   input logic rst_l,                        // reset, active low
-   input logic [31:1] rst_vec,               // reset vector, from core pins
-
-   input logic        nmi_int,               // NMI pin
-   input logic [31:1] nmi_vec,               // NMI vector, from pins
-
-   input logic  i_cpu_halt_req,              // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,               // Asynchronous Restart request to CPU
-
-   output logic o_cpu_halt_status,           // Halt status of core (pmu/fw)
-   output logic o_cpu_halt_ack,              // Halt request ack
-   output logic o_cpu_run_ack,               // Run request ack
-   output logic o_debug_mode_status,         // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id,               // CORE ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req,           // Async halt request
-   input logic mpc_debug_run_req,            // Async run request
-   input logic mpc_reset_run_req,            // Run/halt after reset
-   output logic mpc_debug_halt_ack,          // Halt ack
-   output logic mpc_debug_run_ack,           // Run ack
-   output logic debug_brkpt_status,          // debug breakpoint
-
-    input logic       exu_pmu_i0_br_misp,    // slot 0 branch misp
-   input logic       exu_pmu_i0_br_ataken,   // slot 0 branch actual taken
-   input logic       exu_pmu_i0_pc4,         // slot 0 4 byte branch
-
-
-   input logic                                lsu_nonblock_load_valid_m,      // valid nonblock load at m
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_tag_m,        // -> corresponding tag
-   input logic                                lsu_nonblock_load_inv_r,        // invalidate request for nonblock load r
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_inv_tag_r,    // -> corresponding tag
-   input logic                                lsu_nonblock_load_data_valid,   // valid nonblock load data back
-   input logic                                lsu_nonblock_load_data_error,   // nonblock load bus error
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_data_tag,     // -> corresponding tag
-   input logic [31:0]                         lsu_nonblock_load_data,         // nonblock load data
-
-   input logic       lsu_pmu_bus_trxn,           // D side bus transaction
-   input logic       lsu_pmu_bus_misaligned,     // D side bus misaligned
-   input logic       lsu_pmu_bus_error,          // D side bus error
-   input logic       lsu_pmu_bus_busy,           // D side bus busy
-   input logic       lsu_pmu_misaligned_m,       // D side load or store misaligned
-   input logic       lsu_pmu_load_external_m,    // D side bus load
-   input logic       lsu_pmu_store_external_m,   // D side bus store
-   input logic       dma_pmu_dccm_read,          // DMA DCCM read
-   input logic       dma_pmu_dccm_write,         // DMA DCCM write
-   input logic       dma_pmu_any_read,           // DMA read
-   input logic       dma_pmu_any_write,          // DMA write
-
-   input logic [31:1] lsu_fir_addr,          // Fast int address
-   input logic [1:0] lsu_fir_error,          // Fast int lookup error
-
-   input logic       ifu_pmu_instr_aligned,  // aligned instructions
-   input logic       ifu_pmu_fetch_stall,    // fetch unit stalled
-   input logic       ifu_pmu_ic_miss,        // icache miss
-   input logic       ifu_pmu_ic_hit,         // icache hit
-   input logic       ifu_pmu_bus_error,      // Instruction side bus error
-   input logic       ifu_pmu_bus_busy,       // Instruction side bus busy
-   input logic       ifu_pmu_bus_trxn,       // Instruction side bus transaction
-
-   input logic       ifu_ic_error_start,     // IC single bit error
-   input logic       ifu_iccm_rd_ecc_single_err, // ICCM single bit error
-
-   input logic [3:0]  lsu_trigger_match_m,
-   input logic        dbg_cmd_valid,         // debugger abstract command valid
-   input logic        dbg_cmd_write,         // command is a write
-   input logic  [1:0] dbg_cmd_type,          // command type
-   input logic [31:0] dbg_cmd_addr,          // command address
-   input logic  [1:0] dbg_cmd_wrdata,        // command write data, for fence/fence_i
-
-
-   input logic        ifu_i0_icaf,           // icache access fault
-   input logic [1:0]  ifu_i0_icaf_type,      // icache access fault type
-
-   input logic   ifu_i0_icaf_second,         // i0 has access fault on second 2B of 4B inst
-   input logic   ifu_i0_dbecc,               // icache/iccm double-bit error
-
-   input logic lsu_idle_any,                 // lsu idle for halting
-
-   input eb1_br_pkt_t i0_brp,                                  // branch packet
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index, // BP index
-   input logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr,            // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag,           // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index,          // Fully associt btb index
-
-   input eb1_lsu_error_pkt_t lsu_error_pkt_r,         // LSU exception/error packet
-   input logic         lsu_single_ecc_error_incr,      // LSU inc SB error counter
-
-   input logic         lsu_imprecise_error_load_any,   // LSU imprecise load bus error
-   input logic         lsu_imprecise_error_store_any,  // LSU imprecise store bus error
-   input logic [31:0]  lsu_imprecise_error_addr_any,   // LSU imprecise bus error address
-
-   input logic [31:0]  exu_div_result,      // final div result
-   input logic         exu_div_wren,        // Divide write enable to GPR
-
-   input logic [31:0] exu_csr_rs1_x,        // rs1 for csr instruction
-
-   input logic [31:0] lsu_result_m,         // load result
-   input logic [31:0] lsu_result_corr_r,    // load result - corrected load data
-
-   input logic        lsu_load_stall_any,   // This is for blocking loads
-   input logic        lsu_store_stall_any,  // This is for blocking stores
-   input logic        dma_dccm_stall_any,   // stall any load/store at decode, pmu event
-   input logic        dma_iccm_stall_any,   // iccm stalled, pmu event
-
-   input logic       iccm_dma_sb_error,     // ICCM DMA single bit error
-
-   input logic exu_flush_final,             // slot0 flush
-
-   input logic [31:1] exu_npc_r,            // next PC
-
-   input logic [31:0] exu_i0_result_x,      // alu result x
-
-
-   input logic         ifu_i0_valid,                  // fetch valids to instruction buffer
-   input logic [31:0]  ifu_i0_instr,                  // fetch inst's to instruction buffer
-   input logic [31:1]  ifu_i0_pc,                     // pc's for instruction buffer
-   input logic         ifu_i0_pc4,                    // indication of 4B or 2B for corresponding inst
-   input logic  [31:1] exu_i0_pc_x,                   // pc's for e1 from the alu's
-
-   input logic mexintpend,                            // External interrupt pending
-   input logic timer_int,                             // Timer interrupt pending (from pin)
-   input logic soft_int,                              // Software interrupt pending (from pin)
-
-   input logic [7:0] pic_claimid,                     // PIC claimid
-   input logic [3:0] pic_pl,                          // PIC priv level
-   input logic       mhwakeup,                        // High priority wakeup
-
-   output logic [3:0] dec_tlu_meicurpl,               // to PIC, Current priv level
-   output logic [3:0] dec_tlu_meipt,                  // to PIC
-
-   input logic [70:0] ifu_ic_debug_rd_data,           // diagnostic icache read data
-   input logic ifu_ic_debug_rd_data_valid,            // diagnostic icache read data valid
-   output eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt, // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-
-
-// Debug start
-   input logic dbg_halt_req,                 // DM requests a halt
-   input logic dbg_resume_req,               // DM requests a resume
-   input logic ifu_miss_state_idle,          // I-side miss buffer empty
-
-   output logic dec_tlu_dbg_halted,          // Core is halted and ready for debug command
-   output logic dec_tlu_debug_mode,          // Core is in debug mode
-   output logic dec_tlu_resume_ack,          // Resume acknowledge
-   output logic dec_tlu_flush_noredir_r,     // Tell fetch to idle on this flush
-   output logic dec_tlu_mpc_halted_only,     // Core is halted only due to MPC
-   output logic dec_tlu_flush_leak_one_r,    // single step
-   output logic dec_tlu_flush_err_r,         // iside perr/ecc rfpc
-   output logic [31:2] dec_tlu_meihap,       // Fast ext int base
-
-   output logic dec_debug_wdata_rs1_d,       // insert debug write data into rs1 at decode
-
-   output logic [31:0] dec_dbg_rddata,       // debug command read data
-
-   output logic dec_dbg_cmd_done,            // abstract command is done
-   output logic dec_dbg_cmd_fail,            // abstract command failed (illegal reg address)
-
-   output eb1_trigger_pkt_t  [3:0] trigger_pkt_any, // info needed by debug trigger blocks
-
-   output logic dec_tlu_force_halt,          // halt has been forced
-// Debug end
-   // branch info from pipe0 for errors or counter updates
-   input logic [1:0]  exu_i0_br_hist_r,             // history
-   input logic        exu_i0_br_error_r,            // error
-   input logic        exu_i0_br_start_error_r,      // start error
-   input logic        exu_i0_br_valid_r,            // valid
-   input logic        exu_i0_br_mp_r,               // mispredict
-   input logic        exu_i0_br_middle_r,           // middle of bank
-
-   // branch info from pipe1 for errors or counter updates
-
-   input logic             exu_i0_br_way_r,         // way hit or repl
-
-   output logic         dec_i0_rs1_en_d,            // Qualify GPR RS1 data
-   output logic         dec_i0_rs2_en_d,            // Qualify GPR RS2 data
-   output logic  [31:0] gpr_i0_rs1_d,               // gpr rs1 data
-   output logic  [31:0] gpr_i0_rs2_d,               // gpr rs2 data
-
-   output logic [31:0] dec_i0_immed_d,              // immediate data
-   output logic [12:1] dec_i0_br_immed_d,           // br immediate data
-
-   output        eb1_alu_pkt_t i0_ap,              // alu packet
-
-   output logic          dec_i0_alu_decode_d,       // schedule on D-stage alu
-   output logic          dec_i0_branch_d,           // Branch in D-stage
-
-   output logic          dec_i0_select_pc_d,        // select pc onto rs1 for jal's
-
-   output logic [31:1]  dec_i0_pc_d,                // pc's at decode
-   output logic [3:0]   dec_i0_rs1_bypass_en_d,     // rs1 bypass enable
-   output logic [3:0]   dec_i0_rs2_bypass_en_d,     // rs2 bypass enable
-
-   output logic [31:0]  dec_i0_result_r,            // Result R-stage
-
-   output eb1_lsu_pkt_t    lsu_p,                  // lsu packet
-   output logic             dec_qual_lsu_d,         // LSU instruction at D.  Use to quiet LSU operands
-   output eb1_mul_pkt_t    mul_p,                  // mul packet
-   output eb1_div_pkt_t    div_p,                  // div packet
-   output logic             dec_div_cancel,         // cancel divide operation
-
-   output logic [11:0] dec_lsu_offset_d,            // 12b offset for load/store addresses
-
-   output logic        dec_csr_ren_d,               // CSR read enable
-   output logic [31:0] dec_csr_rddata_d,            // CSR read data
-
-   output logic        dec_tlu_flush_lower_r,       // tlu flush due to late mp, exception, rfpc, or int
-   output logic        dec_tlu_flush_lower_wb,
-   output logic [31:1] dec_tlu_flush_path_r,        // tlu flush target
-   output logic        dec_tlu_i0_kill_writeb_r,    // I0 is flushed, don't writeback any results to arch state
-   output logic        dec_tlu_fence_i_r,           // flush is a fence_i rfnpc, flush icache
-
-   output logic [31:1] pred_correct_npc_x,          // npc if prediction is correct at e2 stage
-
-   output eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt,      // slot 0 branch predictor update packet
-
-   output logic dec_tlu_perfcnt0,                   // toggles when slot0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1,                   // toggles when slot0 perf counter 1 has an event inc
-   output logic dec_tlu_perfcnt2,                   // toggles when slot0 perf counter 2 has an event inc
-   output logic dec_tlu_perfcnt3,                   // toggles when slot0 perf counter 3 has an event inc
-
-   output eb1_predict_pkt_t dec_i0_predict_p_d,                        // prediction packet to alus
-   output logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d,                // DEC predict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d,     // DEC predict index
-   output logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d,               // DEC predict branch tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   output logic dec_lsu_valid_raw_d,
-
-   output logic [31:0] dec_tlu_mrac_ff,              // CSR for memory region control
-
-   output logic [1:0] dec_data_en,                   // clock-gate control logic
-   output logic [1:0] dec_ctl_en,
-
-   input logic [15:0] ifu_i0_cinst,                  // 16b compressed instruction
-
-   output eb1_trace_pkt_t  trace_rv_trace_pkt,      // trace packet
-
-   // feature disable from mfdc
-   output logic  dec_tlu_external_ldfwd_disable,     // disable external load forwarding
-   output logic  dec_tlu_sideeffect_posted_disable,  // disable posted stores to side-effect address
-   output logic  dec_tlu_core_ecc_disable,           // disable core ECC
-   output logic  dec_tlu_bpred_disable,              // disable branch prediction
-   output logic  dec_tlu_wb_coalescing_disable,      // disable writebuffer coalescing
-   output logic [2:0]  dec_tlu_dma_qos_prty,         // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   output logic  dec_tlu_misc_clk_override,          // override misc clock domain gating
-   output logic  dec_tlu_ifu_clk_override,           // override fetch clock domain gating
-   output logic  dec_tlu_lsu_clk_override,           // override load/store clock domain gating
-   output logic  dec_tlu_bus_clk_override,           // override bus clock domain gating
-   output logic  dec_tlu_pic_clk_override,           // override PIC clock domain gating
-   output logic  dec_tlu_picio_clk_override,         // override PICIO clock domain gating
-   output logic  dec_tlu_dccm_clk_override,          // override DCCM clock domain gating
-   output logic  dec_tlu_icm_clk_override,           // override ICCM clock domain gating
-
-   output logic  dec_tlu_i0_commit_cmt,              // committed i0 instruction
-   input  logic  scan_mode                           // Flop scan mode control
- 
-
-   );
-
-
-   logic  dec_tlu_dec_clk_override;      // to and from dec blocks
-   logic  clk_override;
-
-   logic               dec_ib0_valid_d;
-
-   logic               dec_pmu_instr_decoded;
-   logic               dec_pmu_decode_stall;
-   logic               dec_pmu_presync_stall;
-   logic               dec_pmu_postsync_stall;
-
-   logic dec_tlu_wr_pause_r;             // CSR write to pause reg is at R.
-
-   logic [4:0]  dec_i0_rs1_d;
-   logic [4:0]  dec_i0_rs2_d;
-
-   logic [31:0] dec_i0_instr_d;
-
-   logic  dec_tlu_trace_disable;
-   logic  dec_tlu_pipelining_disable;
-
-
-   logic [4:0]  dec_i0_waddr_r;
-   logic        dec_i0_wen_r;
-   logic [31:0] dec_i0_wdata_r;
-   logic        dec_csr_wen_r;           // csr write enable at wb
-   logic [11:0] dec_csr_wraddr_r;        // write address for csryes
-   logic [31:0] dec_csr_wrdata_r;        // csr write data at wb
-
-   logic [11:0] dec_csr_rdaddr_d;        // read address for csr
-   logic        dec_csr_legal_d;         // csr indicates legal operation
-
-   logic        dec_csr_wen_unq_d;       // valid csr with write - for csr legal
-   logic        dec_csr_any_unq_d;       // valid csr - for csr legal
-   logic        dec_csr_stall_int_ff;    // csr is mie/mstatus
-
-   eb1_trap_pkt_t dec_tlu_packet_r;
-
-   logic        dec_i0_pc4_d;
-   logic        dec_tlu_presync_d;
-   logic        dec_tlu_postsync_d;
-   logic        dec_tlu_debug_stall;
-
-   logic [31:0] dec_illegal_inst;
-
-   logic                      dec_i0_icaf_d;
-
-   logic                      dec_i0_dbecc_d;
-   logic                      dec_i0_icaf_second_d;
-   logic [3:0]                dec_i0_trigger_match_d;
-   logic                      dec_debug_fence_d;
-   logic                      dec_nonblock_load_wen;
-   logic [4:0]                dec_nonblock_load_waddr;
-   logic                      dec_tlu_flush_pause_r;
-   eb1_br_pkt_t                   dec_i0_brp;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index;
-   logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr;
-   logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag;
-   logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index;          // Fully associt btb index
-
-   logic [31:1]               dec_tlu_i0_pc_r;
-   logic                      dec_tlu_i0_kill_writeb_wb;
-   logic                      dec_tlu_i0_valid_r;
-
-   logic                      dec_pause_state;
-
-   logic [1:0]                dec_i0_icaf_type_d;   // i0 instruction access fault type
-
-   logic                      dec_tlu_flush_extint; // Fast ext int started
-
-   logic [31:0]               dec_i0_inst_wb;
-   logic [31:1]               dec_i0_pc_wb;
-   logic                      dec_tlu_i0_valid_wb1,  dec_tlu_int_valid_wb1;
-   logic [4:0]                dec_tlu_exc_cause_wb1;
-   logic [31:0]               dec_tlu_mtval_wb1;
-   logic                      dec_tlu_i0_exc_valid_wb1;
-
-   logic [4:0]                div_waddr_wb;
-   logic                      dec_div_active;
-
-   logic                      dec_debug_valid_d;
-
-
-// Adding signals for vector
-   
-   //logic stall_scalar;
-   
-   
-   
-   assign clk_override = dec_tlu_dec_clk_override;
-
-
-   assign dec_dbg_rddata[31:0] = dec_i0_wdata_r[31:0];
-
-
-   eb1_dec_ib_ctl #(.pt(pt)) instbuff (.*);
-
-
-   eb1_dec_decode_ctl #(.pt(pt)) decode (.*);
-
-
-   eb1_dec_tlu_ctl #(.pt(pt)) tlu (.*);
-
-
-   eb1_dec_gpr_ctl #(.pt(pt)) arf (.*,
-                    // inputs
-                    .raddr0(dec_i0_rs1_d[4:0]),
-                    .raddr1(dec_i0_rs2_d[4:0]),
-
-                    .wen0(dec_i0_wen_r),          .waddr0(dec_i0_waddr_r[4:0]),          .wd0(dec_i0_wdata_r[31:0]),
-                    .wen1(dec_nonblock_load_wen), .waddr1(dec_nonblock_load_waddr[4:0]), .wd1(lsu_nonblock_load_data[31:0]),
-                    .wen2(exu_div_wren),          .waddr2(div_waddr_wb),                 .wd2(exu_div_result[31:0]),
-
-                    // outputs
-                    .rd0(gpr_i0_rs1_d[31:0]), .rd1(gpr_i0_rs2_d[31:0])
-                    );
-
-
-// Trigger
-
-   eb1_dec_trigger #(.pt(pt)) dec_trigger (.*);
-
-
-
-
-// trace
-   assign trace_rv_trace_pkt.trace_rv_i_insn_ip      =   dec_i0_inst_wb[31:0];
-   assign trace_rv_trace_pkt.trace_rv_i_address_ip   = { dec_i0_pc_wb[31:1], 1'b0};
-
-   assign trace_rv_trace_pkt.trace_rv_i_valid_ip     = dec_tlu_int_valid_wb1 | dec_tlu_i0_valid_wb1 | dec_tlu_i0_exc_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_exception_ip = dec_tlu_int_valid_wb1 |  dec_tlu_i0_exc_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_ecause_ip    = dec_tlu_exc_cause_wb1[4:0];     // replicate across ports
-   assign trace_rv_trace_pkt.trace_rv_i_interrupt_ip = dec_tlu_int_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_tval_ip      = dec_tlu_mtval_wb1[31:0];        // replicate across ports
-
-
-
-// end trace
-
-
-endmodule // eb1_dec
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_dec_decode_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic dec_tlu_trace_disable,
-   input logic dec_debug_valid_d,
-
-   input logic dec_tlu_flush_extint,         // Flush external interrupt
-
-   input logic dec_tlu_force_halt,           // invalidate nonblock load cam on a force halt event
-
-   output logic dec_extint_stall,            // Stall from external interrupt
-
-   input  logic [15:0] ifu_i0_cinst,         // 16b compressed instruction
-   output logic [31:0] dec_i0_inst_wb,       // 32b instruction at wb+1 for trace encoder
-   output logic [31:1] dec_i0_pc_wb,         // 31b pc at wb+1 for trace encoder
-
-
-   input logic                                lsu_nonblock_load_valid_m,       // valid nonblock load at m
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_tag_m,         // -> corresponding tag
-   input logic                                lsu_nonblock_load_inv_r,         // invalidate request for nonblock load r
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_inv_tag_r,     // -> corresponding tag
-   input logic                                lsu_nonblock_load_data_valid,    // valid nonblock load data back
-   input logic                                lsu_nonblock_load_data_error,    // nonblock load bus error
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_data_tag,      // -> corresponding tag
-
-
-   input logic [3:0] dec_i0_trigger_match_d,          // i0 decode trigger matches
-
-   input logic dec_tlu_wr_pause_r,                    // pause instruction at r
-   input logic dec_tlu_pipelining_disable,            // pipeline disable - presync, i0 decode only
-
-   input logic [3:0]  lsu_trigger_match_m,            // lsu trigger matches
-
-   input logic lsu_pmu_misaligned_m,                  // perf mon: load/store misalign
-   input logic dec_tlu_debug_stall,                   // debug stall decode
-   input logic dec_tlu_flush_leak_one_r,              // leak1 instruction
-
-   input logic dec_debug_fence_d,                     // debug fence instruction
-
-   input logic [1:0] dbg_cmd_wrdata,                  // disambiguate fence, fence_i
-
-   input logic dec_i0_icaf_d,                         // icache access fault
-   input logic dec_i0_icaf_second_d,                  // i0 instruction access fault on second 2B of 4B inst
-   input logic [1:0] dec_i0_icaf_type_d,              // i0 instruction access fault type
-
-   input logic dec_i0_dbecc_d,                        // icache/iccm double-bit error
-
-   input eb1_br_pkt_t dec_i0_brp,                    // branch packet
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index,   // i0 branch index
-   input logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr,  // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag, // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index,          // Fully associt btb index
-
-   input logic lsu_idle_any,                          // lsu idle: if fence instr & ~lsu_idle then stall decode
-
-   input logic lsu_load_stall_any,                    // stall any load at decode
-   input logic lsu_store_stall_any,                   // stall any store at decode
-   input logic dma_dccm_stall_any,                    // stall any load/store at decode
-
-   input logic exu_div_wren,                          // nonblocking divide write enable to GPR.
-
-   input logic dec_tlu_i0_kill_writeb_wb,             // I0 is flushed, don't writeback any results to arch state
-   input logic dec_tlu_flush_lower_wb,                // trap lower flush
-   input logic dec_tlu_i0_kill_writeb_r,              // I0 is flushed, don't writeback any results to arch state
-   input logic dec_tlu_flush_lower_r,                 // trap lower flush
-   input logic dec_tlu_flush_pause_r,                 // don't clear pause state on initial lower flush
-   input logic dec_tlu_presync_d,                     // CSR read needs to be presync'd
-   input logic dec_tlu_postsync_d,                    // CSR ops that need to be postsync'd
-
-   input logic dec_i0_pc4_d,                          // inst is 4B inst else 2B
-
-   input logic [31:0] dec_csr_rddata_d,               // csr read data at wb
-   input logic dec_csr_legal_d,                       // csr indicates legal operation
-
-   input logic [31:0] exu_csr_rs1_x,                  // rs1 for csr instr
-
-   input logic [31:0] lsu_result_m,                   // load result
-   input logic [31:0] lsu_result_corr_r,              // load result - corrected data for writing gpr's, not for bypassing
-
-   input logic exu_flush_final,                       // lower flush or i0 flush at X or D
-
-   input logic [31:1] exu_i0_pc_x,                    // pcs at e1
-
-   input logic [31:0] dec_i0_instr_d,                 // inst at decode
-
-   input logic  dec_ib0_valid_d,                      // inst valid at decode
-
-   input logic [31:0] exu_i0_result_x,                // from primary alu's
-
-   input logic  clk,                                  // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic  active_clk,                           // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic  free_l2clk,                           // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic  clk_override,                         // Override non-functional clock gating
-   input logic  rst_l,                                // Flop reset
-
-
-
-   output logic        dec_i0_rs1_en_d,               // rs1 enable at decode
-   output logic        dec_i0_rs2_en_d,               // rs2 enable at decode
-
-   output logic [4:0]  dec_i0_rs1_d,                  // rs1 logical source
-   output logic [4:0]  dec_i0_rs2_d,                  // rs2 logical source
-
-   output logic [31:0] dec_i0_immed_d,                // 32b immediate data decode
-
-
-   output logic [12:1] dec_i0_br_immed_d,             // 12b branch immediate
-
-   output eb1_alu_pkt_t i0_ap,                       // alu packets
-
-   output logic        dec_i0_decode_d,               // i0 decode
-
-   output logic        dec_i0_alu_decode_d,           // decode to D-stage alu
-   output logic        dec_i0_branch_d,               // Branch in D-stage
-
-   output logic [4:0]  dec_i0_waddr_r,                // i0 logical source to write to gpr's
-   output logic        dec_i0_wen_r,                  // i0 write enable
-   output logic [31:0] dec_i0_wdata_r,                // i0 write data
-
-   output logic        dec_i0_select_pc_d,            // i0 select pc for rs1 - branches
-
-   output logic [3:0]    dec_i0_rs1_bypass_en_d,      // i0 rs1 bypass enable
-   output logic [3:0]    dec_i0_rs2_bypass_en_d,      // i0 rs2 bypass enable
-   output logic [31:0]   dec_i0_result_r,             // Result R-stage
-
-   output eb1_lsu_pkt_t    lsu_p,                    // load/store packet
-   output logic             dec_qual_lsu_d,           // LSU instruction at D.  Use to quiet LSU operands
-
-   output eb1_mul_pkt_t    mul_p,                    // multiply packet
-
-   output eb1_div_pkt_t    div_p,                    // divide packet
-   output logic [4:0]       div_waddr_wb,             // DIV write address to GPR
-   output logic             dec_div_cancel,           // cancel the divide operation
-
-   output logic        dec_lsu_valid_raw_d,
-   output logic [11:0] dec_lsu_offset_d,
-
-   output logic        dec_csr_ren_d,                 // valid csr decode
-   output logic        dec_csr_wen_unq_d,             // valid csr with write - for csr legal
-   output logic        dec_csr_any_unq_d,             // valid csr - for csr legal
-   output logic [11:0] dec_csr_rdaddr_d,              // read address for csr
-   output logic        dec_csr_wen_r,                 // csr write enable at r
-   output logic [11:0] dec_csr_wraddr_r,              // write address for csr
-   output logic [31:0] dec_csr_wrdata_r,              // csr write data at r
-   output logic        dec_csr_stall_int_ff,          // csr is mie/mstatus
-
-   output              dec_tlu_i0_valid_r,            // i0 valid inst at c
-
-   output eb1_trap_pkt_t   dec_tlu_packet_r,              // trap packet
-
-   output logic [31:1] dec_tlu_i0_pc_r,               // i0 trap pc
-
-   output logic [31:0] dec_illegal_inst,              // illegal inst
-   output logic [31:1] pred_correct_npc_x,            // npc e2 if the prediction is correct
-
-   output eb1_predict_pkt_t dec_i0_predict_p_d,      // i0 predict packet decode
-   output logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d, // i0 predict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d, // i0 predict index
-   output logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d, // i0_predict branch tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   output logic [1:0] dec_data_en,                    // clock-gating logic
-   output logic [1:0] dec_ctl_en,
-
-   output logic       dec_pmu_instr_decoded,          // number of instructions decode this cycle encoded
-   output logic       dec_pmu_decode_stall,           // decode is stalled
-   output logic       dec_pmu_presync_stall,          // decode has presync stall
-   output logic       dec_pmu_postsync_stall,         // decode has postsync stall
-
-   output logic       dec_nonblock_load_wen,          // write enable for nonblock load
-   output logic [4:0] dec_nonblock_load_waddr,        // logical write addr for nonblock load
-   output logic       dec_pause_state,                // core in pause state
-   output logic       dec_pause_state_cg,             // pause state for clock-gating
-
-   output logic       dec_div_active,                 // non-block divide is active
-
-   input  logic       scan_mode
-   
-   );
-
-
-
-
-   eb1_dec_pkt_t           i0_dp_raw, i0_dp;
-
-   logic [31:0]        i0;
-   logic               i0_valid_d;
-
-   logic [31:0]        i0_result_r;
-
-   logic [2:0]         i0_rs1bypass, i0_rs2bypass;
-
-   logic               i0_jalimm20;
-   logic               i0_uiimm20;
-
-   logic               lsu_decode_d;
-   logic [31:0]        i0_immed_d;
-   logic               i0_presync;
-   logic               i0_postsync;
-
-   logic               postsync_stall;
-   logic               ps_stall;
-
-   logic               prior_inflight, prior_inflight_wb;
-
-   logic               csr_clr_d, csr_set_d, csr_write_d;
-
-   logic               csr_clr_x,csr_set_x,csr_write_x,csr_imm_x;
-   logic [31:0]        csr_mask_x;
-   logic [31:0]        write_csr_data_x;
-   logic [31:0]        write_csr_data_in;
-   logic [31:0]        write_csr_data;
-   logic               csr_data_wen;
-
-   logic [4:0]         csrimm_x;
-
-   logic [31:0]        csr_rddata_x;
-
-   logic               mul_decode_d;
-   logic               div_decode_d;
-   logic               div_e1_to_r;
-   logic               div_flush;
-   logic               div_active_in;
-   logic               div_active;
-   logic               i0_nonblock_div_stall;
-   logic               i0_div_prior_div_stall;
-   logic               nonblock_div_cancel;
-
-   logic               i0_legal;
-   logic               shift_illegal;
-   logic               illegal_inst_en;
-   logic               illegal_lockout_in, illegal_lockout;
-   logic               i0_legal_decode_d;
-   logic               i0_exulegal_decode_d, i0_exudecode_d, i0_exublock_d;
-
-   logic [12:1]        last_br_immed_d;
-   logic               i0_rs1_depend_i0_x, i0_rs1_depend_i0_r;
-   logic               i0_rs2_depend_i0_x, i0_rs2_depend_i0_r;
-
-   logic               i0_div_decode_d;
-   logic               i0_load_block_d;
-   logic [1:0]         i0_rs1_depth_d, i0_rs2_depth_d;
-
-   logic               i0_load_stall_d;
-   logic               i0_store_stall_d;
-
-   logic               i0_predict_nt, i0_predict_t;
-
-   logic               i0_notbr_error, i0_br_toffset_error;
-   logic               i0_ret_error;
-   logic               i0_br_error;
-   logic               i0_br_error_all;
-   logic [11:0]        i0_br_offset;
-
-   logic [20:1]        i0_pcall_imm;                          // predicted jal's
-   logic               i0_pcall_12b_offset;
-   logic               i0_pcall_raw;
-   logic               i0_pcall_case;
-   logic               i0_pcall;
-
-   logic               i0_pja_raw;
-   logic               i0_pja_case;
-   logic               i0_pja;
-
-   logic               i0_pret_case;
-   logic               i0_pret_raw, i0_pret;
-
-   logic               i0_jal;                                // jal's that are not predicted
-
-
-   logic               i0_predict_br;
-
-   logic               store_data_bypass_d, store_data_bypass_m;
-
-   eb1_class_pkt_t         i0_rs1_class_d, i0_rs2_class_d;
-
-   eb1_class_pkt_t         i0_d_c, i0_x_c, i0_r_c;
-
-
-   logic               i0_ap_pc2, i0_ap_pc4;
-
-   logic               i0_rd_en_d;
-
-   logic               load_ldst_bypass_d;
-
-   logic               leak1_i0_stall_in, leak1_i0_stall;
-   logic               leak1_i1_stall_in, leak1_i1_stall;
-   logic               leak1_mode;
-
-   logic               i0_csr_write_only_d;
-
-   logic               prior_inflight_x, prior_inflight_eff;
-   logic               any_csr_d;
-
-   logic               prior_csr_write;
-
-   logic [3:0]        i0_pipe_en;
-   logic              i0_r_ctl_en,  i0_x_ctl_en,  i0_wb_ctl_en;
-   logic              i0_x_data_en, i0_r_data_en, i0_wb_data_en;
-
-   logic              debug_fence_i;
-   logic              debug_fence;
-
-   logic              i0_csr_write;
-   logic              presync_stall;
-
-   logic              i0_instr_error;
-   logic              i0_icaf_d;
-
-   logic              clear_pause;
-   logic              pause_state_in, pause_state;
-   logic              pause_stall;
-
-   logic              i0_brp_valid;
-   logic              nonblock_load_cancel;
-   logic              lsu_idle;
-   logic              lsu_pmu_misaligned_r;
-   logic              csr_ren_qual_d;
-   logic              csr_read_x;
-   logic              i0_block_d;
-   logic              i0_block_raw_d;  // This is use to create the raw valid
-   logic              ps_stall_in;
-   logic [31:0]       i0_result_x;
-
-   eb1_dest_pkt_t         d_d, x_d, r_d, wbd;
-   eb1_dest_pkt_t         x_d_in, r_d_in;
-
-   eb1_trap_pkt_t         d_t, x_t, x_t_in, r_t_in, r_t;
-
-   logic [3:0]        lsu_trigger_match_r;
-
-   logic [31:1]       dec_i0_pc_r;
-
-   logic csr_read, csr_write;
-   logic i0_br_unpred;
-
-   logic nonblock_load_valid_m_delay;
-   logic i0_wen_r;
-
-   logic tlu_wr_pause_r1;
-   logic tlu_wr_pause_r2;
-
-   logic flush_final_r;
-
-   logic bitmanip_zbb_legal;
-   logic bitmanip_zbs_legal;
-   logic bitmanip_zbe_legal;
-   logic bitmanip_zbc_legal;
-   logic bitmanip_zbp_legal;
-   logic bitmanip_zbr_legal;
-   logic bitmanip_zbf_legal;
-   logic bitmanip_zba_legal;
-   logic bitmanip_zbb_zbp_legal;
-   logic bitmanip_legal;
-
-   logic              data_gate_en;
-   logic              data_gate_clk;
-
-
-   localparam NBLOAD_SIZE     = pt.LSU_NUM_NBLOAD;
-   localparam NBLOAD_SIZE_MSB = int'(pt.LSU_NUM_NBLOAD)-1;
-   localparam NBLOAD_TAG_MSB  = pt.LSU_NUM_NBLOAD_WIDTH-1;
-
-
-   logic                     cam_write, cam_inv_reset, cam_data_reset;
-   logic [NBLOAD_TAG_MSB:0]  cam_write_tag, cam_inv_reset_tag, cam_data_reset_tag;
-   logic [NBLOAD_SIZE_MSB:0] cam_wen;
-
-   logic [NBLOAD_TAG_MSB:0]  load_data_tag;
-   logic [NBLOAD_SIZE_MSB:0] nonblock_load_write;
-
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam;
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam_in;
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam_raw;
-
-   logic [4:0] nonblock_load_rd;
-   logic i0_nonblock_load_stall;
-   logic i0_nonblock_boundary_stall;
-
-   logic i0_rs1_nonblock_load_bypass_en_d, i0_rs2_nonblock_load_bypass_en_d;
-
-   logic i0_load_kill_wen_r;
-
-   logic found;
-
-   logic [NBLOAD_SIZE_MSB:0] cam_inv_reset_val, cam_data_reset_val;
-
-   logic debug_fence_raw;
-
-   logic [31:0] i0_result_r_raw;
-   logic [31:0] i0_result_corr_r;
-
-   logic [12:1] last_br_immed_x;
-
-   logic [31:0]        i0_inst_d;
-   logic [31:0]        i0_inst_x;
-   logic [31:0]        i0_inst_r;
-   logic [31:0]        i0_inst_wb_in;
-   logic [31:0]        i0_inst_wb;
-
-   logic [31:1]        i0_pc_wb;
-
-   logic               i0_wb_en;
-
-   logic               trace_enable;
-
-   logic               debug_valid_x;
-
-   eb1_inst_pkt_t i0_itype;
-   eb1_reg_pkt_t i0r;
-   
-
-
-   rvdffie  #(8) misc1ff (.*,
-                          .clk(free_l2clk),
-                          .din( {leak1_i1_stall_in,leak1_i0_stall_in,dec_tlu_flush_extint,pause_state_in ,dec_tlu_wr_pause_r, tlu_wr_pause_r1,illegal_lockout_in,ps_stall_in}),
-                          .dout({leak1_i1_stall,   leak1_i0_stall,   dec_extint_stall,    pause_state,       tlu_wr_pause_r1,tlu_wr_pause_r2,illegal_lockout,   ps_stall   })
-                          );
-
-   rvdffie  #(8) misc2ff (.*,
-                          .clk(free_l2clk),
-                          .din( {lsu_trigger_match_m[3:0],lsu_pmu_misaligned_m,div_active_in,exu_flush_final,  dec_debug_valid_d}),
-                          .dout({lsu_trigger_match_r[3:0],lsu_pmu_misaligned_r,div_active,       flush_final_r,    debug_valid_x})
-                          );
-
-if(pt.BTB_ENABLE==1) begin
-// branch prediction
-
-
-   // in leak1_mode, ignore any predictions for i0, treat branch as if we haven't seen it before
-   // in leak1 mode, also ignore branch errors for i0
-   assign i0_brp_valid                        =  dec_i0_brp.valid & ~leak1_mode & ~i0_icaf_d;
-
-   assign dec_i0_predict_p_d.misp        =  '0;
-   assign dec_i0_predict_p_d.ataken      =  '0;
-   assign dec_i0_predict_p_d.boffset     =  '0;
-
-   assign dec_i0_predict_p_d.pcall       =  i0_pcall;  // don't mark as pcall if branch error
-   assign dec_i0_predict_p_d.pja         =  i0_pja;
-   assign dec_i0_predict_p_d.pret        =  i0_pret;
-   assign dec_i0_predict_p_d.prett[31:1] =  dec_i0_brp.prett[31:1];
-   assign dec_i0_predict_p_d.pc4         =  dec_i0_pc4_d;
-   assign dec_i0_predict_p_d.hist[1:0]   =  dec_i0_brp.hist[1:0];
-   assign dec_i0_predict_p_d.valid       =  i0_brp_valid & i0_legal_decode_d;
-   assign i0_notbr_error                 =  i0_brp_valid & ~(i0_dp_raw.condbr | i0_pcall_raw | i0_pja_raw | i0_pret_raw);
-
-   // no toffset error for a pret
-   assign i0_br_toffset_error                               =  i0_brp_valid & dec_i0_brp.hist[1] & (dec_i0_brp.toffset[11:0] != i0_br_offset[11:0]) & ~i0_pret_raw;
-   assign i0_ret_error                                      =  i0_brp_valid & (dec_i0_brp.ret ^ i0_pret_raw);
-   assign i0_br_error                                       =  dec_i0_brp.br_error | i0_notbr_error | i0_br_toffset_error | i0_ret_error;
-   assign dec_i0_predict_p_d.br_error                       =  i0_br_error & i0_legal_decode_d & ~leak1_mode;
-   assign dec_i0_predict_p_d.br_start_error                 =  dec_i0_brp.br_start_error & i0_legal_decode_d & ~leak1_mode;
-   assign i0_predict_index_d[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] =  dec_i0_bp_index;
-
-   assign i0_predict_btag_d[pt.BTB_BTAG_SIZE-1:0]           =  dec_i0_bp_btag[pt.BTB_BTAG_SIZE-1:0];
-   assign i0_br_error_all                                   = (i0_br_error | dec_i0_brp.br_start_error) & ~leak1_mode;
-   assign dec_i0_predict_p_d.toffset[11:0]                  =  i0_br_offset[11:0];
-   assign i0_predict_fghr_d[pt.BHT_GHR_SIZE-1:0]            =  dec_i0_bp_fghr[pt.BHT_GHR_SIZE-1:0];
-   assign dec_i0_predict_p_d.way                            =  dec_i0_brp.way;
-
-
-   if(pt.BTB_FULLYA) begin
-      logic btb_error_found, btb_error_found_f;
-      logic [$clog2(pt.BTB_SIZE)-1:0] fa_error_index_ns;
-
-      assign btb_error_found = (i0_br_error_all | btb_error_found_f) & ~dec_tlu_flush_lower_r;
-      assign fa_error_index_ns = (i0_br_error_all & ~btb_error_found_f) ? dec_i0_bp_fa_index : dec_fa_error_index;
-
-      rvdff #($clog2(pt.BTB_SIZE)+1) btberrorfa_f   (.*, .clk(active_clk),
-                                                         .din({btb_error_found,    fa_error_index_ns}),
-                                                         .dout({btb_error_found_f, dec_fa_error_index}));
-
-
-   end
-   else
-     assign dec_fa_error_index = 'b0;
-
-
-   //   end
-end // if (pt.BTB_ENABLE==1)
-else begin
-
-   always_comb begin
-      dec_i0_predict_p_d = '0;
-      dec_i0_predict_p_d.pcall       =  i0_pcall;  // don't mark as pcall if branch error
-      dec_i0_predict_p_d.pja         =  i0_pja;
-      dec_i0_predict_p_d.pret        =  i0_pret;
-      dec_i0_predict_p_d.pc4         =  dec_i0_pc4_d;
-   end
-
-   assign i0_br_error_all = '0;
-   assign i0_predict_index_d = '0;
-   assign i0_predict_btag_d = '0;
-   assign i0_predict_fghr_d = '0;
-   assign i0_brp_valid = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   // on br error turn anything into a nop
-   // on i0 instruction fetch access fault turn anything into a nop
-   // nop =>   alu rs1 imm12 rd lor
-
-   assign i0_icaf_d = dec_i0_icaf_d | dec_i0_dbecc_d;
-
-   assign i0_instr_error = i0_icaf_d;
-
-   always_comb begin
-      i0_dp = i0_dp_raw;
-      if (i0_br_error_all | i0_instr_error) begin
-         i0_dp          =   '0;
-         i0_dp.alu      = 1'b1;
-         i0_dp.rs1      = 1'b1;
-         i0_dp.rs2      = 1'b1;
-         i0_dp.lor      = 1'b1;
-         i0_dp.legal    = 1'b1;
-         i0_dp.postsync = 1'b1;
-      end
-   end
-
-   assign i0[31:0] = dec_i0_instr_d[31:0];
-
-   assign dec_i0_select_pc_d = i0_dp.pc;
-
-   // branches that can be predicted
-
-   assign i0_predict_br =  i0_dp.condbr | i0_pcall | i0_pja | i0_pret;
-
-   assign i0_predict_nt = ~(dec_i0_brp.hist[1] & i0_brp_valid) & i0_predict_br;
-   assign i0_predict_t  =  (dec_i0_brp.hist[1] & i0_brp_valid) & i0_predict_br;
-
-   assign i0_ap.add     =  i0_dp.add;
-   assign i0_ap.sub     =  i0_dp.sub;
-   assign i0_ap.land    =  i0_dp.land;
-   assign i0_ap.lor     =  i0_dp.lor;
-   assign i0_ap.lxor    =  i0_dp.lxor;
-   assign i0_ap.sll     =  i0_dp.sll;
-   assign i0_ap.srl     =  i0_dp.srl;
-   assign i0_ap.sra     =  i0_dp.sra;
-   assign i0_ap.slt     =  i0_dp.slt;
-   assign i0_ap.unsign  =  i0_dp.unsign;
-   assign i0_ap.beq     =  i0_dp.beq;
-   assign i0_ap.bne     =  i0_dp.bne;
-   assign i0_ap.blt     =  i0_dp.blt;
-   assign i0_ap.bge     =  i0_dp.bge;
-
-   assign i0_ap.clz     =  i0_dp.clz;
-   assign i0_ap.ctz     =  i0_dp.ctz;
-   assign i0_ap.pcnt    =  i0_dp.pcnt;
-   assign i0_ap.sext_b  =  i0_dp.sext_b;
-   assign i0_ap.sext_h  =  i0_dp.sext_h;
-   assign i0_ap.sh1add  =  i0_dp.sh1add;
-   assign i0_ap.sh2add  =  i0_dp.sh2add;
-   assign i0_ap.sh3add  =  i0_dp.sh3add;
-   assign i0_ap.zba     =  i0_dp.zba;
-   assign i0_ap.slo     =  i0_dp.slo;
-   assign i0_ap.sro     =  i0_dp.sro;
-   assign i0_ap.min     =  i0_dp.min;
-   assign i0_ap.max     =  i0_dp.max;
-   assign i0_ap.pack    =  i0_dp.pack;
-   assign i0_ap.packu   =  i0_dp.packu;
-   assign i0_ap.packh   =  i0_dp.packh;
-   assign i0_ap.rol     =  i0_dp.rol;
-   assign i0_ap.ror     =  i0_dp.ror;
-   assign i0_ap.grev    =  i0_dp.grev;
-   assign i0_ap.gorc    =  i0_dp.gorc;
-   assign i0_ap.zbb     =  i0_dp.zbb;
-   assign i0_ap.sbset   =  i0_dp.sbset;
-   assign i0_ap.sbclr   =  i0_dp.sbclr;
-   assign i0_ap.sbinv   =  i0_dp.sbinv;
-   assign i0_ap.sbext   =  i0_dp.sbext;
-
-   assign i0_ap.csr_write =  i0_csr_write_only_d;
-   assign i0_ap.csr_imm   =  i0_dp.csr_imm;
-   assign i0_ap.jal       =  i0_jal;
-
-   assign i0_ap_pc2 = ~dec_i0_pc4_d;
-   assign i0_ap_pc4 =  dec_i0_pc4_d;
-
-   assign i0_ap.predict_nt = i0_predict_nt;
-   assign i0_ap.predict_t  = i0_predict_t;
-
-
-// non block load cam logic
-
-   always_comb begin
-      found = 0;
-      cam_wen[NBLOAD_SIZE_MSB:0] = '0;
-      for (int i=0; i<NBLOAD_SIZE; i++) begin
-         if (~found) begin
-            if (~cam[i].valid) begin
-               cam_wen[i] = cam_write;
-               found = 1'b1;
-            end
-            else begin
-               cam_wen[i] = 0;
-            end
-         end
-         else
-            cam_wen[i] = 0;
-      end
-   end
-
-
-   assign cam_write          = lsu_nonblock_load_valid_m;
-   assign cam_write_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_tag_m[NBLOAD_TAG_MSB:0];
-
-   assign cam_inv_reset          = lsu_nonblock_load_inv_r;
-   assign cam_inv_reset_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_inv_tag_r[NBLOAD_TAG_MSB:0];
-
-   assign cam_data_reset          = lsu_nonblock_load_data_valid | lsu_nonblock_load_data_error;
-   assign cam_data_reset_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_data_tag[NBLOAD_TAG_MSB:0];
-
-   assign nonblock_load_rd[4:0] = (x_d.i0load) ? x_d.i0rd[4:0] : 5'b0;  // rd data
-
-
-   // checks
-
-
-
-
-    // case of multiple loads to same dest ie. x1 ... you have to invalidate the older one
-
-   for (genvar i=0; i<NBLOAD_SIZE; i++) begin : cam_array
-
-      assign cam_inv_reset_val[i] = cam_inv_reset   & (cam_inv_reset_tag[NBLOAD_TAG_MSB:0]  == cam[i].tag[NBLOAD_TAG_MSB:0]) & cam[i].valid;
-
-      assign cam_data_reset_val[i] = cam_data_reset & (cam_data_reset_tag[NBLOAD_TAG_MSB:0] == cam_raw[i].tag[NBLOAD_TAG_MSB:0]) & cam_raw[i].valid;
-
-      always_comb begin
-
-         cam[i] = cam_raw[i];
-
-         if (cam_data_reset_val[i])
-           cam[i].valid = 1'b0;
-
-         cam_in[i] = '0;
-
-         if (cam_wen[i]) begin
-            cam_in[i].valid    = 1'b1;
-            cam_in[i].wb       = 1'b0;
-            cam_in[i].tag[NBLOAD_TAG_MSB:0] = cam_write_tag[NBLOAD_TAG_MSB:0];
-            cam_in[i].rd[4:0]  = nonblock_load_rd[4:0];
-         end
-         else if ( (cam_inv_reset_val[i]) |
-                   (i0_wen_r & (r_d_in.i0rd[4:0] == cam[i].rd[4:0]) & cam[i].wb) )
-           cam_in[i].valid = 1'b0;
-         else
-           cam_in[i] = cam[i];
-
-         if (nonblock_load_valid_m_delay & (lsu_nonblock_load_inv_tag_r[NBLOAD_TAG_MSB:0]==cam[i].tag[NBLOAD_TAG_MSB:0]) & cam[i].valid)
-           cam_in[i].wb = 1'b1;
-
-         // force debug halt forces cam valids to 0; highest priority
-         if (dec_tlu_force_halt)
-           cam_in[i].valid = 1'b0;
-      end
-
-
-   rvdffie #( $bits(eb1_load_cam_pkt_t) ) cam_ff (.*, .din(cam_in[i]), .dout(cam_raw[i]));
-
-
-   assign nonblock_load_write[i] = (load_data_tag[NBLOAD_TAG_MSB:0] == cam_raw[i].tag[NBLOAD_TAG_MSB:0]) & cam_raw[i].valid;
-
-
-end : cam_array
-
-
-
-   assign load_data_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_data_tag[NBLOAD_TAG_MSB:0];
-
-
-
-   assign nonblock_load_cancel = ((r_d_in.i0rd[4:0] == dec_nonblock_load_waddr[4:0]) & i0_wen_r);     // cancel if any younger inst (including another nonblock) committing this cycle
-
-
-   assign dec_nonblock_load_wen = lsu_nonblock_load_data_valid & |nonblock_load_write[NBLOAD_SIZE_MSB:0] & ~nonblock_load_cancel;
-
-   always_comb begin
-
-      dec_nonblock_load_waddr[4:0] = '0;
-      i0_nonblock_load_stall = i0_nonblock_boundary_stall;
-
-      for (int i=0; i<NBLOAD_SIZE; i++) begin
-         dec_nonblock_load_waddr[4:0] |= ({5{nonblock_load_write[i]}} & cam[i].rd[4:0]);
-         i0_nonblock_load_stall |= dec_i0_rs1_en_d & cam[i].valid & (cam[i].rd[4:0] == i0r.rs1[4:0]);
-         i0_nonblock_load_stall |= dec_i0_rs2_en_d & cam[i].valid & (cam[i].rd[4:0] == i0r.rs2[4:0]);
-      end
-
-   end
-
-   assign i0_nonblock_boundary_stall = ((nonblock_load_rd[4:0]==i0r.rs1[4:0]) & lsu_nonblock_load_valid_m & dec_i0_rs1_en_d) |
-                                       ((nonblock_load_rd[4:0]==i0r.rs2[4:0]) & lsu_nonblock_load_valid_m & dec_i0_rs2_en_d);
-
-
-
-// don't writeback a nonblock load
-
-   rvdffs #(1) wbnbloaddelayff (.*, .clk(active_clk), .en(i0_r_ctl_en ), .din(lsu_nonblock_load_valid_m),        .dout(nonblock_load_valid_m_delay) );
-
-   assign i0_load_kill_wen_r = nonblock_load_valid_m_delay &  r_d.i0load;
-
-
-
-// end non block load cam logic
-
-// pmu start
-
-
-
-
-   assign csr_read = csr_ren_qual_d;
-   assign csr_write = dec_csr_wen_unq_d;
-
-   assign i0_br_unpred = i0_dp.jal & ~i0_predict_br;
-
-   // the classes must be mutually exclusive with one another
-
-   always_comb begin
-      i0_itype = NULL;
-
-      if (i0_legal_decode_d) begin
-         if (i0_dp.mul)                  i0_itype = MUL;
-         if (i0_dp.load)                 i0_itype = LOAD;
-         if (i0_dp.store)                i0_itype = STORE;
-         if (i0_dp.pm_alu)               i0_itype = ALU;
-         if (i0_dp.zbb | i0_dp.zbs |
-             i0_dp.zbe | i0_dp.zbc |
-             i0_dp.zbp | i0_dp.zbr |
-             i0_dp.zbf | i0_dp.zba)
-                                         i0_itype = BITMANIPU;
-         if ( csr_read & ~csr_write)     i0_itype = CSRREAD;
-         if (~csr_read &  csr_write)     i0_itype = CSRWRITE;
-         if ( csr_read &  csr_write)     i0_itype = CSRRW;
-         if (i0_dp.ebreak)               i0_itype = EBREAK;
-         if (i0_dp.ecall)                i0_itype = ECALL;
-         if (i0_dp.fence)                i0_itype = FENCE;
-         if (i0_dp.fence_i)              i0_itype = FENCEI;  // fencei will set this even with fence attribute
-         if (i0_dp.mret)                 i0_itype = MRET;
-         if (i0_dp.condbr)               i0_itype = CONDBR;
-         if (i0_dp.jal)                  i0_itype = JAL;
-      end
-   end
-
-
-
-
-
-// end pmu
-
-
-   eb1_dec_dec_ctl i0_dec (.inst(i0[31:0]),.out(i0_dp_raw));
-   
-
-
-   rvdff #(1) lsu_idle_ff (.*, .clk(active_clk), .din(lsu_idle_any), .dout(lsu_idle));
-
-
-
-   assign leak1_i1_stall_in = (dec_tlu_flush_leak_one_r | (leak1_i1_stall & ~dec_tlu_flush_lower_r));
-
-
-   assign leak1_mode = leak1_i1_stall;
-
-   assign leak1_i0_stall_in = ((dec_i0_decode_d & leak1_i1_stall) | (leak1_i0_stall & ~dec_tlu_flush_lower_r));
-
-
-
-
-   // 12b jal's can be predicted - these are calls
-
-   assign i0_pcall_imm[20:1] = {i0[31],i0[19:12],i0[20],i0[30:21]};
-
-   assign i0_pcall_12b_offset = (i0_pcall_imm[12]) ? (i0_pcall_imm[20:13] == 8'hff) : (i0_pcall_imm[20:13] == 8'h0);
-
-   assign i0_pcall_case  = i0_pcall_12b_offset & i0_dp_raw.imm20 &  (i0r.rd[4:0] == 5'd1 | i0r.rd[4:0] == 5'd5);
-   assign i0_pja_case    = i0_pcall_12b_offset & i0_dp_raw.imm20 & ~(i0r.rd[4:0] == 5'd1 | i0r.rd[4:0] == 5'd5);
-
-   assign i0_pcall_raw   = i0_dp_raw.jal &   i0_pcall_case;   // this includes ja
-   assign i0_pcall       = i0_dp.jal     &   i0_pcall_case;
-
-   assign i0_pja_raw     = i0_dp_raw.jal &   i0_pja_case;
-   assign i0_pja         = i0_dp.jal     &   i0_pja_case;
-
-
-   assign i0_br_offset[11:0] = (i0_pcall_raw | i0_pja_raw) ? i0_pcall_imm[12:1] : {i0[31],i0[7],i0[30:25],i0[11:8]};
-
-   assign i0_pret_case = (i0_dp_raw.jal & i0_dp_raw.imm12 & (i0r.rd[4:0] == 5'b0) & (i0r.rs1[4:0] == 5'd1 | i0r.rs1[4:0] == 5'd5));  // jalr with rd==0, rs1==1 or rs1==5 is a ret
-
-   assign i0_pret_raw = i0_dp_raw.jal &   i0_pret_case;
-   assign i0_pret     = i0_dp.jal     &   i0_pret_case;
-
-   assign i0_jal      = i0_dp.jal     &  ~i0_pcall_case & ~i0_pja_case & ~i0_pret_case;
-
-   // lsu stuff
-   // load/store mutually exclusive
-   assign dec_lsu_offset_d[11:0] = ({12{ ~dec_extint_stall & i0_dp.lsu & i0_dp.load}} &               i0[31:20]) |
-                                   ({12{ ~dec_extint_stall & i0_dp.lsu & i0_dp.store}} &             {i0[31:25],i0[11:7]});
-
-
-
-   assign div_p.valid    =  div_decode_d;
-
-   assign div_p.unsign   =  i0_dp.unsign;
-   assign div_p.rem      =  i0_dp.rem;
-
-
-   assign mul_p.valid    =  mul_decode_d;
-
-   assign mul_p.rs1_sign =  i0_dp.rs1_sign;
-   assign mul_p.rs2_sign =  i0_dp.rs2_sign;
-   assign mul_p.low      =  i0_dp.low;
-   assign mul_p.bext     =  i0_dp.bext;
-   assign mul_p.bdep     =  i0_dp.bdep;
-   assign mul_p.clmul    =  i0_dp.clmul;
-   assign mul_p.clmulh   =  i0_dp.clmulh;
-   assign mul_p.clmulr   =  i0_dp.clmulr;
-   assign mul_p.grev     =  i0_dp.grev;
-   assign mul_p.gorc     =  i0_dp.gorc;
-   assign mul_p.shfl     =  i0_dp.shfl;
-   assign mul_p.unshfl   =  i0_dp.unshfl;
-   assign mul_p.crc32_b  =  i0_dp.crc32_b;
-   assign mul_p.crc32_h  =  i0_dp.crc32_h;
-   assign mul_p.crc32_w  =  i0_dp.crc32_w;
-   assign mul_p.crc32c_b =  i0_dp.crc32c_b;
-   assign mul_p.crc32c_h =  i0_dp.crc32c_h;
-   assign mul_p.crc32c_w =  i0_dp.crc32c_w;
-   assign mul_p.bfp      =  i0_dp.bfp;
-
-   always_comb  begin
-      lsu_p = '0;
-
-      if (dec_extint_stall) begin
-         lsu_p.load = 1'b1;
-         lsu_p.word = 1'b1;
-         lsu_p.fast_int = 1'b1;
-         lsu_p.valid = 1'b1;
-      end
-      else begin
-         lsu_p.valid = lsu_decode_d;
-
-         lsu_p.load                         =  i0_dp.load ;
-         lsu_p.store                        =  i0_dp.store;
-         lsu_p.by                           =  i0_dp.by   ;
-         lsu_p.half                         =  i0_dp.half ;
-         lsu_p.word                         =  i0_dp.word ;
-         lsu_p.stack                        = (i0r.rs1[4:0]==5'd2);   // stack reference
-
-         lsu_p.load_ldst_bypass_d          =  load_ldst_bypass_d ;
-         lsu_p.store_data_bypass_d         =  store_data_bypass_d;
-         lsu_p.store_data_bypass_m         =  store_data_bypass_m;
-
-         lsu_p.unsign  =  i0_dp.unsign;
-      end
-   end
-
-
-   assign  dec_lsu_valid_raw_d    = (i0_valid_d & (i0_dp_raw.load | i0_dp_raw.store) & ~dma_dccm_stall_any & ~i0_block_raw_d) | dec_extint_stall;
-
-
-
-   assign i0r.rs1[4:0] = i0[19:15];
-   assign i0r.rs2[4:0] = i0[24:20];
-   assign i0r.rd[4:0]  = i0[11:7];
-
-
-   assign dec_i0_rs1_en_d   =  (i0_dp.rs1 & (i0r.rs1[4:0] != 5'd0));  // if rs1_en=0 then read will be all 0's
-   assign dec_i0_rs2_en_d   =  (i0_dp.rs2 & (i0r.rs2[4:0] != 5'd0));
-   assign i0_rd_en_d        =  (i0_dp.rd  & (i0r.rd[4:0]  != 5'd0));
-
-   assign dec_i0_rs1_d[4:0] =  i0r.rs1[4:0];
-   assign dec_i0_rs2_d[4:0] =  i0r.rs2[4:0];
-
-
-   assign i0_jalimm20       =  i0_dp.jal & i0_dp.imm20;   // jal
-   assign i0_uiimm20        = ~i0_dp.jal & i0_dp.imm20;
-
-
-   // csr logic
-
-   assign dec_csr_ren_d  = i0_dp.csr_read & i0_valid_d;
-   assign csr_ren_qual_d = i0_dp.csr_read & i0_legal_decode_d;
-
-   assign csr_clr_d =   i0_dp.csr_clr   & i0_legal_decode_d;
-   assign csr_set_d   = i0_dp.csr_set   & i0_legal_decode_d;
-   assign csr_write_d = i0_csr_write    & i0_legal_decode_d;
-
-   assign i0_csr_write_only_d = i0_csr_write & ~i0_dp.csr_read;
-
-   assign dec_csr_wen_unq_d = (i0_dp.csr_clr | i0_dp.csr_set | i0_csr_write) & i0_valid_d;   // for csr legal, can't write read-only csr
-
-   assign dec_csr_any_unq_d = any_csr_d & i0_valid_d;
-
-
-   assign dec_csr_rdaddr_d[11:0] =  {12{dec_csr_any_unq_d}} & i0[31:20];
-   assign dec_csr_wraddr_r[11:0] =  {12{r_d.csrwen & r_d.i0valid}} & r_d.csrwaddr[11:0];
-
-
-   // make sure csr doesn't write same cycle as dec_tlu_flush_lower_wb
-   // also use valid so it's flushable
-   assign dec_csr_wen_r = r_d.csrwen & r_d.i0valid & ~dec_tlu_i0_kill_writeb_r;
-
-   // If we are writing MIE or MSTATUS, hold off the external interrupt for a cycle on the write.
-   assign dec_csr_stall_int_ff = ((r_d.csrwaddr[11:0] == 12'h300) | (r_d.csrwaddr[11:0] == 12'h304)) & r_d.csrwen & r_d.i0valid & ~dec_tlu_i0_kill_writeb_wb;
-
-
-   rvdff #(5) csrmiscff (.*,
-                        .clk (active_clk),
-                        .din ({csr_ren_qual_d, csr_clr_d, csr_set_d, csr_write_d, i0_dp.csr_imm}),
-                        .dout({csr_read_x,     csr_clr_x, csr_set_x, csr_write_x, csr_imm_x})
-                       );
-
-
-
-
-   // perform the update operation if any
-
-   rvdffe #(37) csr_rddata_x_ff (.*, .en(i0_x_data_en & any_csr_d), .din( {i0[19:15],dec_csr_rddata_d[31:0]}), .dout({csrimm_x[4:0],csr_rddata_x[31:0]}));
-
-
-   assign csr_mask_x[31:0]       = ({32{ csr_imm_x}} & {27'b0,csrimm_x[4:0]}) |
-                                   ({32{~csr_imm_x}} &  exu_csr_rs1_x[31:0] );
-
-
-   assign write_csr_data_x[31:0] = ({32{csr_clr_x}}   & (csr_rddata_x[31:0] & ~csr_mask_x[31:0])) |
-                                   ({32{csr_set_x}}   & (csr_rddata_x[31:0] |  csr_mask_x[31:0])) |
-                                   ({32{csr_write_x}} & (                      csr_mask_x[31:0]));
-
-
-// pause instruction
-
-
-
-
-   assign clear_pause = (dec_tlu_flush_lower_r & ~dec_tlu_flush_pause_r) |
-                        (pause_state & (write_csr_data[31:1] == 31'b0));        // if 0 or 1 then exit pause state - 1 cycle pause
-
-   assign pause_state_in = (dec_tlu_wr_pause_r | pause_state) & ~clear_pause;
-
-
-
-   assign dec_pause_state = pause_state;
-
-
-
-      assign dec_pause_state_cg = pause_state & ~tlu_wr_pause_r1 & ~tlu_wr_pause_r2;
-
-// end pause
-
-
-   assign csr_data_wen = ((csr_clr_x | csr_set_x | csr_write_x) & csr_read_x) | dec_tlu_wr_pause_r | pause_state;
-
-   assign write_csr_data_in[31:0] = (pause_state)         ? (write_csr_data[31:0] - 32'b1) :
-                                    (dec_tlu_wr_pause_r) ? dec_csr_wrdata_r[31:0] : write_csr_data_x[31:0];
-
-   // will hold until write-back at which time the CSR will be updated while GPR is possibly written with prior CSR
-   rvdffe #(32) write_csr_ff (.*, .clk(free_l2clk), .en(csr_data_wen), .din(write_csr_data_in[31:0]), .dout(write_csr_data[31:0]));
-
-   assign pause_stall = pause_state;
-
-   // for csr write only data is produced by the alu
-   assign dec_csr_wrdata_r[31:0]  = (r_d.csrwonly & r_d.i0valid) ? i0_result_corr_r[31:0] : write_csr_data[31:0];
-
-
-
-   assign dec_i0_immed_d[31:0] =  i0_immed_d[31:0];
-
-   assign     i0_immed_d[31:0] = ({32{i0_dp.imm12}}                         & { {20{i0[31]}},i0[31:20] }) |  // jalr
-                                 ({32{i0_dp.shimm5}}                        & {  27'b0,      i0[24:20] }) |
-                                 ({32{i0_jalimm20}}                         & { {12{i0[31]}},i0[19:12],i0[20],i0[30:21],1'b0}) |
-                                 ({32{i0_uiimm20}}                          & { i0[31:12],12'b0 }) |
-                                 ({32{i0_csr_write_only_d & i0_dp.csr_imm}} & {  27'b0,      i0[19:15]});  // for csr's that only write csr, dont read csr
-
-
-   // all conditional branches are currently predict_nt
-   // change this to generate the sequential address for all other cases for NPC requirements at commit
-   assign dec_i0_br_immed_d[12:1] = (i0_ap.predict_nt & ~i0_dp.jal) ? i0_br_offset[11:0] : {10'b0,i0_ap_pc4,i0_ap_pc2};
-
-
-   assign last_br_immed_d[12:1] = ((i0_ap.predict_nt) ? {10'b0,i0_ap_pc4,i0_ap_pc2} : i0_br_offset[11:0] );
-
-   assign i0_valid_d = dec_ib0_valid_d;
-
-   // load_stall includes bus_barrier
-
-   assign i0_load_stall_d = (i0_dp.load ) & (lsu_load_stall_any | dma_dccm_stall_any);
-
-   assign i0_store_stall_d =  i0_dp.store & (lsu_store_stall_any | dma_dccm_stall_any);
-
-
-
-// some CSR reads need to be presync'd
-   assign i0_presync = i0_dp.presync | dec_tlu_presync_d | debug_fence_i | debug_fence_raw | dec_tlu_pipelining_disable;  // both fence's presync
-
-// some CSR writes need to be postsync'd
-   assign i0_postsync = i0_dp.postsync | dec_tlu_postsync_d | debug_fence_i | // only fence_i postsync
-                        (i0_csr_write_only_d & (i0[31:20] == 12'h7c2));   // wr_pause must postsync
-
-
-// debug fence csr
-   assign debug_fence_i     = dec_debug_fence_d & dbg_cmd_wrdata[0];
-   assign debug_fence_raw   = dec_debug_fence_d & dbg_cmd_wrdata[1];
-
-   assign debug_fence       = debug_fence_raw | debug_fence_i;    // fence_i causes a fence
-
-   assign i0_csr_write = i0_dp.csr_write & ~dec_debug_fence_d;
-// end debug
-
-
-   // lets make ebreak, ecall, mret postsync, so break sync into pre and post
-
-   assign presync_stall      = (i0_presync & prior_inflight_eff);
-
-   assign prior_inflight_eff = (i0_dp.div)  ?  prior_inflight_x  :  prior_inflight;
-
-   assign i0_div_prior_div_stall = i0_dp.div & div_active;
-
-   // Raw block has everything excepts the stalls coming from the lsu
-   assign i0_block_raw_d = (i0_dp.csr_read & prior_csr_write) |
-                            dec_extint_stall |
-                            pause_stall |
-                            leak1_i0_stall |
-                            dec_tlu_debug_stall |
-                            postsync_stall |
-                            presync_stall  |
-                            ((i0_dp.fence | debug_fence) & ~lsu_idle) |
-                            i0_nonblock_load_stall |
-                            i0_load_block_d |
-                            i0_nonblock_div_stall |
-                            i0_div_prior_div_stall;
-
-   assign i0_block_d    = i0_block_raw_d | i0_store_stall_d | i0_load_stall_d;
-   assign i0_exublock_d = i0_block_raw_d;
-
-
-   // block reads if there is a prior csr write in the pipeline
-   assign prior_csr_write = x_d.csrwonly |
-                            r_d.csrwonly |
-                            wbd.csrwonly;
-
-
-
-   if       (pt.BITMANIP_ZBB == 1)
-     assign bitmanip_zbb_legal      =  1'b1;
-   else
-     assign bitmanip_zbb_legal      = ~(i0_dp.zbb & ~i0_dp.zbp);
-
-   if       (pt.BITMANIP_ZBS == 1)
-     assign bitmanip_zbs_legal      =  1'b1;
-   else
-     assign bitmanip_zbs_legal      = ~i0_dp.zbs;
-
-   if       (pt.BITMANIP_ZBE == 1)
-     assign bitmanip_zbe_legal      =  1'b1;
-   else
-     assign bitmanip_zbe_legal      = ~i0_dp.zbe;
-
-   if       (pt.BITMANIP_ZBC == 1)
-     assign bitmanip_zbc_legal      =  1'b1;
-   else
-     assign bitmanip_zbc_legal      = ~i0_dp.zbc;
-
-   if       (pt.BITMANIP_ZBP == 1)
-     assign bitmanip_zbp_legal      =  1'b1;
-   else
-     assign bitmanip_zbp_legal      = ~(i0_dp.zbp & ~i0_dp.zbb);
-
-   if       (pt.BITMANIP_ZBR == 1)
-     assign bitmanip_zbr_legal      =  1'b1;
-   else
-     assign bitmanip_zbr_legal      = ~i0_dp.zbr;
-
-   if       (pt.BITMANIP_ZBF == 1)
-     assign bitmanip_zbf_legal      =  1'b1;
-   else
-     assign bitmanip_zbf_legal      = ~i0_dp.zbf;
-
-   if (pt.BITMANIP_ZBA == 1)
-     assign bitmanip_zba_legal      =  1'b1;
-   else
-     assign bitmanip_zba_legal      = ~i0_dp.zba;
-
-   if     ( (pt.BITMANIP_ZBB == 1) | (pt.BITMANIP_ZBP == 1) )
-     assign bitmanip_zbb_zbp_legal  =  1'b1;
-   else
-     assign bitmanip_zbb_zbp_legal  = ~(i0_dp.zbb & i0_dp.zbp);
-
-
-   assign any_csr_d      =  i0_dp.csr_read | i0_csr_write;
-   assign bitmanip_legal =  bitmanip_zbb_legal & bitmanip_zbs_legal & bitmanip_zbe_legal & bitmanip_zbc_legal & bitmanip_zbp_legal & bitmanip_zbr_legal & bitmanip_zbf_legal & bitmanip_zba_legal & bitmanip_zbb_zbp_legal;
-
-   assign i0_legal       =  (i0_dp.legal) & (~any_csr_d | dec_csr_legal_d) & bitmanip_legal;
-
-
-
-   // illegal inst handling
-
-
-   assign shift_illegal      = dec_i0_decode_d & ~i0_legal;
-
-   assign illegal_inst_en    = shift_illegal & ~illegal_lockout;
-
-   rvdffe #(32) illegal_any_ff (.*, .en(illegal_inst_en), .din(i0_inst_d[31:0]), .dout(dec_illegal_inst[31:0]));
-
-   assign illegal_lockout_in = (shift_illegal | illegal_lockout) & ~flush_final_r;
-
-
-
-   // allow illegals to flow down the pipe
-   assign dec_i0_decode_d = i0_valid_d & ~i0_block_d    & ~dec_tlu_flush_lower_r & ~flush_final_r;
-   assign i0_exudecode_d  = i0_valid_d & ~i0_exublock_d & ~dec_tlu_flush_lower_r & ~flush_final_r;
-
-   // define i0 legal decode
-   assign i0_legal_decode_d    = dec_i0_decode_d & i0_legal;
-   assign i0_exulegal_decode_d = i0_exudecode_d  & i0_legal;
-
-
-   // performance monitor signals
-   assign dec_pmu_instr_decoded = dec_i0_decode_d;
-
-   assign dec_pmu_decode_stall = i0_valid_d & ~dec_i0_decode_d;
-
-   assign dec_pmu_postsync_stall = postsync_stall & i0_valid_d;
-   assign dec_pmu_presync_stall  = presync_stall & i0_valid_d;
-
-
-
-   // illegals will postsync
-   assign ps_stall_in =  ( dec_i0_decode_d & (i0_postsync | ~i0_legal) ) |
-                         ( ps_stall & prior_inflight_x                 );
-
-
-
-   assign postsync_stall =  ps_stall;
-
-
-   assign prior_inflight_x    =  x_d.i0valid;
-   assign prior_inflight_wb   =  r_d.i0valid;
-
-   assign prior_inflight = prior_inflight_x | prior_inflight_wb;
-
-   assign dec_i0_alu_decode_d = i0_exulegal_decode_d & i0_dp.alu;
-   assign dec_i0_branch_d     = i0_dp.condbr | i0_dp.jal | i0_br_error_all;
-
-   assign lsu_decode_d = i0_legal_decode_d    & i0_dp.lsu;
-   assign mul_decode_d = i0_exulegal_decode_d & i0_dp.mul;
-   assign div_decode_d = i0_exulegal_decode_d & i0_dp.div;
-
-   assign dec_qual_lsu_d = i0_dp.lsu;
-
-
-
-
-
-// scheduling logic for alu
-
-   assign i0_rs1_depend_i0_x  = dec_i0_rs1_en_d & x_d.i0v & (x_d.i0rd[4:0] == i0r.rs1[4:0]);
-   assign i0_rs1_depend_i0_r  = dec_i0_rs1_en_d & r_d.i0v & (r_d.i0rd[4:0] == i0r.rs1[4:0]);
-
-   assign i0_rs2_depend_i0_x  = dec_i0_rs2_en_d & x_d.i0v & (x_d.i0rd[4:0] == i0r.rs2[4:0]);
-   assign i0_rs2_depend_i0_r  = dec_i0_rs2_en_d & r_d.i0v & (r_d.i0rd[4:0] == i0r.rs2[4:0]);
-
-
-// order the producers as follows:  , i0_x, i0_r, i0_wb
-
-   assign {i0_rs1_class_d, i0_rs1_depth_d[1:0]} = (i0_rs1_depend_i0_x ) ? { i0_x_c,  2'd1  } :
-                                                  (i0_rs1_depend_i0_r ) ? { i0_r_c,  2'd2  } : '0;
-
-   assign {i0_rs2_class_d, i0_rs2_depth_d[1:0]} = (i0_rs2_depend_i0_x ) ? { i0_x_c,  2'd1  } :
-                                                  (i0_rs2_depend_i0_r ) ? { i0_r_c,  2'd2  } : '0;
-
-
-// stores will bypass load data in the lsu pipe
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin : genblock
-      assign i0_load_block_d = (i0_rs1_class_d.load & i0_rs1_depth_d[0]) |
-                               (i0_rs2_class_d.load & i0_rs2_depth_d[0] & ~i0_dp.store);
-
-      assign load_ldst_bypass_d    =  (i0_dp.load | i0_dp.store) & i0_rs1_depth_d[1] & i0_rs1_class_d.load;
-
-      assign store_data_bypass_d =                  i0_dp.store  & i0_rs2_depth_d[1] & i0_rs2_class_d.load;
-
-      assign store_data_bypass_m =                  i0_dp.store  & i0_rs2_depth_d[0] & i0_rs2_class_d.load;
-   end
-   else begin : genblock
-
-      assign i0_load_block_d = 1'b0;
-
-      assign load_ldst_bypass_d    =  (i0_dp.load | i0_dp.store) & i0_rs1_depth_d[0] & i0_rs1_class_d.load;
-
-      assign store_data_bypass_d =                  i0_dp.store  & i0_rs2_depth_d[0] & i0_rs2_class_d.load;
-
-      assign store_data_bypass_m = 1'b0;
-   end
-
-
-
-
-
-
-   assign dec_tlu_i0_valid_r     =  r_d.i0valid & ~dec_tlu_flush_lower_wb;
-
-
-   assign d_t.legal              =  i0_legal_decode_d;
-   assign d_t.icaf               =  i0_icaf_d & i0_legal_decode_d;                // dbecc is icaf exception
-   assign d_t.icaf_second        =  dec_i0_icaf_second_d & i0_legal_decode_d;     // this includes icaf and dbecc
-   assign d_t.icaf_type[1:0]     =  dec_i0_icaf_type_d[1:0];
-
-   assign d_t.fence_i            = (i0_dp.fence_i | debug_fence_i) & i0_legal_decode_d;
-
-// put pmu info into the trap packet
-   assign d_t.pmu_i0_itype       =  i0_itype;
-   assign d_t.pmu_i0_br_unpred   =  i0_br_unpred;
-   assign d_t.pmu_divide         =  1'b0;
-   assign d_t.pmu_lsu_misaligned =  1'b0;
-
-   assign d_t.i0trigger[3:0]     =  dec_i0_trigger_match_d[3:0] & {4{dec_i0_decode_d}};
-
-
-
-   rvdfflie #( .WIDTH($bits(eb1_trap_pkt_t)),.LEFT(9) ) trap_xff (.*, .en(i0_x_ctl_en), .din(d_t),  .dout(x_t));
-
-   always_comb begin
-      x_t_in = x_t;
-      x_t_in.i0trigger[3:0] = x_t.i0trigger & ~{4{dec_tlu_flush_lower_wb}};
-   end
-
-
-   rvdfflie  #( .WIDTH($bits(eb1_trap_pkt_t)),.LEFT(9) ) trap_r_ff (.*, .en(i0_x_ctl_en), .din(x_t_in),  .dout(r_t));
-
-
-    always_comb begin
-
-      r_t_in                             =  r_t;
-
-      r_t_in.i0trigger[3:0]              = ({4{(r_d.i0load | r_d.i0store)}} & lsu_trigger_match_r[3:0]) | r_t.i0trigger[3:0];
-      r_t_in.pmu_lsu_misaligned          = lsu_pmu_misaligned_r;   // only valid if a load/store is valid in DC3 stage
-
-      if (dec_tlu_flush_lower_wb) r_t_in = '0 ;
-
-   end
-
-
-   always_comb begin
-
-      dec_tlu_packet_r                 =  r_t_in;
-      dec_tlu_packet_r.pmu_divide      =  r_d.i0div & r_d.i0valid;
-
-   end
-
-
-// end tlu stuff
-
-
-   assign i0_d_c.mul                =  i0_dp.mul  & i0_legal_decode_d;
-   assign i0_d_c.load               =  i0_dp.load & i0_legal_decode_d;
-   assign i0_d_c.alu                =  i0_dp.alu  & i0_legal_decode_d;
-
-   rvdffs #( $bits(eb1_class_pkt_t) ) i0_x_c_ff   (.*, .en(i0_x_ctl_en),  .clk(active_clk), .din(i0_d_c),  .dout(i0_x_c));
-   rvdffs #( $bits(eb1_class_pkt_t) ) i0_r_c_ff   (.*, .en(i0_r_ctl_en),  .clk(active_clk), .din(i0_x_c),  .dout(i0_r_c));
-
-
-   assign d_d.i0rd[4:0]             =  i0r.rd[4:0];
-   assign d_d.i0v                   =  i0_rd_en_d  & i0_legal_decode_d;
-   assign d_d.i0valid               =  dec_i0_decode_d;  // has flush_final_r
-
-   assign d_d.i0load                =  i0_dp.load  & i0_legal_decode_d;
-   assign d_d.i0store               =  i0_dp.store & i0_legal_decode_d;
-   assign d_d.i0div                 =  i0_dp.div   & i0_legal_decode_d;
-
-
-   assign d_d.csrwen                =  dec_csr_wen_unq_d   & i0_legal_decode_d;
-   assign d_d.csrwonly              =  i0_csr_write_only_d & dec_i0_decode_d;
-   assign d_d.csrwaddr[11:0]        =  (d_d.csrwen) ? i0[31:20] : '0;    // csr write address for rd==0 case
-
-
-   rvdff  #(3) i0cgff               (.*, .clk(active_clk),            .din(i0_pipe_en[3:1]), .dout(i0_pipe_en[2:0]));
-
-   assign i0_pipe_en[3]             =  dec_i0_decode_d;
-
-   assign i0_x_ctl_en               = (|i0_pipe_en[3:2] | clk_override);
-   assign i0_r_ctl_en               = (|i0_pipe_en[2:1] | clk_override);
-   assign i0_wb_ctl_en              = (|i0_pipe_en[1:0] | clk_override);
-   assign i0_x_data_en              = ( i0_pipe_en[3]   | clk_override);
-   assign i0_r_data_en              = ( i0_pipe_en[2]   | clk_override);
-   assign i0_wb_data_en             = ( i0_pipe_en[1]   | clk_override);
-
-   assign dec_data_en[1:0]          = {i0_x_data_en, i0_r_data_en};
-   assign dec_ctl_en[1:0]           = {i0_x_ctl_en,  i0_r_ctl_en};
-
-
-
-   rvdfflie #( .WIDTH($bits(eb1_dest_pkt_t)),.LEFT(15) ) e1ff (.*, .en(i0_x_ctl_en), .din(d_d),  .dout(x_d));
-
-   always_comb begin
-      x_d_in = x_d;
-
-      x_d_in.i0v         = x_d.i0v     & ~dec_tlu_flush_lower_wb & ~dec_tlu_flush_lower_r;
-      x_d_in.i0valid     = x_d.i0valid & ~dec_tlu_flush_lower_wb & ~dec_tlu_flush_lower_r;
-   end
-
-   rvdfflie #( .WIDTH($bits(eb1_dest_pkt_t)), .LEFT(15) ) r_d_ff (.*, .en(i0_r_ctl_en), .din(x_d_in), .dout(r_d));
-
-
-   always_comb begin
-
-        r_d_in = r_d;
-
-
-      // for the bench
-      r_d_in.i0rd[4:0]   =  r_d.i0rd[4:0];
-
-      r_d_in.i0v         = (r_d.i0v      & ~dec_tlu_flush_lower_wb);
-      r_d_in.i0valid     = (r_d.i0valid  & ~dec_tlu_flush_lower_wb);
-
-      r_d_in.i0load      =  r_d.i0load   & ~dec_tlu_flush_lower_wb;
-      r_d_in.i0store     =  r_d.i0store  & ~dec_tlu_flush_lower_wb;
-
-   end
-
-
-   rvdfflie #(.WIDTH($bits(eb1_dest_pkt_t)), .LEFT(15)) wbff (.*, .en(i0_wb_ctl_en), .din(r_d_in), .dout(wbd));
-
-   assign dec_i0_waddr_r[4:0]       =  r_d_in.i0rd[4:0];
-
-   assign     i0_wen_r              =  r_d_in.i0v & ~dec_tlu_i0_kill_writeb_r;
-   assign dec_i0_wen_r              =  i0_wen_r   & ~r_d_in.i0div & ~i0_load_kill_wen_r;  // don't write a nonblock load 1st time down the pipe
-   assign dec_i0_wdata_r[31:0]      =  i0_result_corr_r[31:0];
-
-
-   // divide stuff
-   assign div_e1_to_r         = (x_d.i0div & x_d.i0valid) |
-                                (r_d.i0div & r_d.i0valid);
-
-   assign div_active_in = i0_div_decode_d | (div_active & ~exu_div_wren & ~nonblock_div_cancel);
-
-
-   assign dec_div_active = div_active;
-
-   // nonblocking div scheme
-
-   assign i0_nonblock_div_stall  = (dec_i0_rs1_en_d & div_active & (div_waddr_wb[4:0] == i0r.rs1[4:0])) |
-                                   (dec_i0_rs2_en_d & div_active & (div_waddr_wb[4:0] == i0r.rs2[4:0]));
-
-
-   assign div_flush              = (x_d.i0div & x_d.i0valid & (x_d.i0rd[4:0]==5'b0)                           ) |
-                                   (x_d.i0div & x_d.i0valid & dec_tlu_flush_lower_r                           ) |
-                                   (r_d.i0div & r_d.i0valid & dec_tlu_flush_lower_r & dec_tlu_i0_kill_writeb_r);
-
-
-   // cancel if any younger inst committing this cycle to same dest as nonblock divide
-   assign nonblock_div_cancel    = (div_active &  div_flush) |
-                                   (div_active & ~div_e1_to_r & (r_d.i0rd[4:0] == div_waddr_wb[4:0]) & i0_wen_r);
-
-   assign dec_div_cancel         =  nonblock_div_cancel;
-
-
-
-   assign i0_div_decode_d            =  i0_legal_decode_d & i0_dp.div;
-
-// for load_to_use_plus1, the load result data is merged in R stage instead of D
-
-   if ( pt.LOAD_TO_USE_PLUS1 == 1 ) begin : genblock1
-      assign i0_result_x[31:0]          = exu_i0_result_x[31:0];
-      assign i0_result_r[31:0]          = (r_d.i0v & r_d.i0load) ? lsu_result_m[31:0] : i0_result_r_raw[31:0];
-   end
-   else begin : genblock1
-      assign i0_result_x[31:0]          = (x_d.i0v & x_d.i0load) ? lsu_result_m[31:0] : exu_i0_result_x[31:0];
-      assign i0_result_r[31:0]          = i0_result_r_raw[31:0];
-   end
-
-
-   rvdffe #(32) i0_result_r_ff       (.*, .en(i0_r_data_en & (x_d.i0v | x_d.csrwen | debug_valid_x)),  .din(i0_result_x[31:0]),       .dout(i0_result_r_raw[31:0]));
-
-   // correct lsu load data - don't use for bypass, do pass down the pipe
-   assign i0_result_corr_r[31:0]     = (r_d.i0v & r_d.i0load) ? lsu_result_corr_r[31:0] : i0_result_r_raw[31:0];
-
-
-   rvdffe #(12) e1brpcff             (.*, .en(i0_x_data_en), .din(last_br_immed_d[12:1] ), .dout(last_br_immed_x[12:1]));
-
-
-
-   assign i0_wb_en                   =  i0_wb_data_en;
-
-   assign i0_inst_wb_in[31:0]        =  i0_inst_r[31:0];
-   assign i0_inst_d[31:0]            = (dec_i0_pc4_d)    ?  i0[31:0]                                  :  {16'b0, ifu_i0_cinst[15:0]};
-
-
-   assign trace_enable = ~dec_tlu_trace_disable;
-
-
-   rvdffe #(.WIDTH(5),.OVERRIDE(1))  i0rdff  (.*, .en(i0_div_decode_d),        .din(i0r.rd[4:0]),             .dout(div_waddr_wb[4:0]));
-
-   rvdffe #(32) i0xinstff            (.*, .en(i0_x_data_en & trace_enable),    .din(i0_inst_d[31:0]),         .dout(i0_inst_x[31:0]));
-   rvdffe #(32) i0cinstff            (.*, .en(i0_r_data_en & trace_enable),    .din(i0_inst_x[31:0]),         .dout(i0_inst_r[31:0]));
-
-   rvdffe #(32) i0wbinstff           (.*, .en(i0_wb_en & trace_enable),        .din(i0_inst_wb_in[31:0]),     .dout(i0_inst_wb[31:0]));
-   rvdffe #(31) i0wbpcff             (.*, .en(i0_wb_en & trace_enable),        .din(dec_tlu_i0_pc_r[31:1]),   .dout(  i0_pc_wb[31:1]));
-
-   assign dec_i0_inst_wb[31:0] = i0_inst_wb[31:0];
-   assign dec_i0_pc_wb[31:1] = i0_pc_wb[31:1];
-
-
-
-   rvdffpcie #(31) i0_pc_r_ff           (.*, .en(i0_r_data_en), .din(exu_i0_pc_x[31:1]), .dout(dec_i0_pc_r[31:1]));
-
-   assign dec_tlu_i0_pc_r[31:1]      = dec_i0_pc_r[31:1];
-
-
-   rvbradder ibradder_correct (
-                     .pc(exu_i0_pc_x[31:1]),
-                     .offset(last_br_immed_x[12:1]),
-                     .dout(pred_correct_npc_x[31:1]));
-
-
-
-   // add nonblock load rs1/rs2 bypass cases
-
-   assign i0_rs1_nonblock_load_bypass_en_d  = dec_i0_rs1_en_d & dec_nonblock_load_wen & (dec_nonblock_load_waddr[4:0] == i0r.rs1[4:0]);
-
-   assign i0_rs2_nonblock_load_bypass_en_d  = dec_i0_rs2_en_d & dec_nonblock_load_wen & (dec_nonblock_load_waddr[4:0] == i0r.rs2[4:0]);
-
-
-
-   // bit 2 is priority match, bit 0 lowest priority, i0_x, i0_r
-
-   assign i0_rs1bypass[2]                =  i0_rs1_depth_d[0] & (i0_rs1_class_d.alu | i0_rs1_class_d.mul                      );
-   assign i0_rs1bypass[1]                =  i0_rs1_depth_d[0] & (                                          i0_rs1_class_d.load);
-   assign i0_rs1bypass[0]                =  i0_rs1_depth_d[1] & (i0_rs1_class_d.alu | i0_rs1_class_d.mul | i0_rs1_class_d.load);
-
-   assign i0_rs2bypass[2]                =  i0_rs2_depth_d[0] & (i0_rs2_class_d.alu | i0_rs2_class_d.mul                      );
-   assign i0_rs2bypass[1]                =  i0_rs2_depth_d[0] & (                                          i0_rs2_class_d.load);
-   assign i0_rs2bypass[0]                =  i0_rs2_depth_d[1] & (i0_rs2_class_d.alu | i0_rs2_class_d.mul | i0_rs2_class_d.load);
-
-
-   assign dec_i0_rs1_bypass_en_d[3]      =  i0_rs1_nonblock_load_bypass_en_d & ~i0_rs1bypass[0] & ~i0_rs1bypass[1] & ~i0_rs1bypass[2];
-   assign dec_i0_rs1_bypass_en_d[2]      =  i0_rs1bypass[2];
-   assign dec_i0_rs1_bypass_en_d[1]      =  i0_rs1bypass[1];
-   assign dec_i0_rs1_bypass_en_d[0]      =  i0_rs1bypass[0];
-
-   assign dec_i0_rs2_bypass_en_d[3]      =  i0_rs2_nonblock_load_bypass_en_d & ~i0_rs2bypass[0] & ~i0_rs2bypass[1] & ~i0_rs2bypass[2];
-   assign dec_i0_rs2_bypass_en_d[2]      =  i0_rs2bypass[2];
-   assign dec_i0_rs2_bypass_en_d[1]      =  i0_rs2bypass[1];
-   assign dec_i0_rs2_bypass_en_d[0]      =  i0_rs2bypass[0];
-
-
-   assign dec_i0_result_r[31:0]          =  i0_result_r[31:0];
-
-
-endmodule // eb1_dec_decode_ctl
-
-
-
-
-
-// file "decode" is human readable file that has all of the instruction decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "decode" except legal equation:
-
-// 1) coredecode -in decode > coredecode.e
-
-// 2) espresso -Dso -oeqntott coredecode.e | addassign -pre out.  > equations
-
-// to generate the legal (32b instruction is legal) equation below:
-
-// 1) coredecode -in decode -legal > legal.e
-
-// 2) espresso -Dso -oeqntott legal.e | addassign -pre out. > legal_equation
-
-module eb1_dec_dec_ctl
-import eb1_pkg::*;
-  (
-   input logic [31:0] inst,
-
-   output eb1_dec_pkt_t out
-   );
-
-   logic [31:0] i;
-
-
-   assign i[31:0] = inst[31:0];
-
-
-assign out.alu = (i[30]&i[24]&i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[5]&i[4]) | (i[29]
-    &!i[27]&!i[24]&i[4]) | (!i[25]&!i[13]&!i[12]&i[4]) | (!i[30]&!i[25]
-    &i[13]&i[12]) | (i[27]&i[25]&i[14]&i[4]) | (i[29]&i[27]&!i[14]&i[4]) | (
-    i[29]&!i[14]&i[5]&i[4]) | (!i[27]&!i[25]&i[14]&i[4]) | (i[30]&!i[29]
-    &!i[13]&i[4]) | (!i[30]&!i[27]&!i[25]&i[4]) | (i[13]&!i[5]&i[4]) | (
-    !i[12]&!i[5]&i[4]) | (i[2]) | (i[6]) | (i[30]&i[24]&i[23]&i[22]&i[21]
-    &i[20]&!i[5]&i[4]) | (!i[30]&i[29]&!i[24]&!i[23]&i[22]&i[21]&i[20]
-    &!i[5]&i[4]) | (!i[30]&i[24]&!i[23]&!i[22]&!i[21]&!i[20]&!i[5]&i[4]);
-
-assign out.rs1 = (!i[14]&!i[13]&!i[2]) | (!i[13]&i[11]&!i[2]) | (i[19]&i[13]&!i[2]) | (
-    !i[13]&i[10]&!i[2]) | (i[18]&i[13]&!i[2]) | (!i[13]&i[9]&!i[2]) | (
-    i[17]&i[13]&!i[2]) | (!i[13]&i[8]&!i[2]) | (i[16]&i[13]&!i[2]) | (
-    !i[13]&i[7]&!i[2]) | (i[15]&i[13]&!i[2]) | (!i[4]&!i[3]) | (!i[6]
-    &!i[2]);
-
-assign out.rs2 = (i[5]&!i[4]&!i[2]) | (!i[6]&i[5]&!i[2]);
-
-assign out.imm12 = (!i[4]&!i[3]&i[2]) | (i[13]&!i[5]&i[4]&!i[2]) | (!i[13]&!i[12]
-    &i[6]&i[4]) | (!i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.rd = (!i[5]&!i[2]) | (i[5]&i[2]) | (i[4]);
-
-assign out.shimm5 = (i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]) | (i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.imm20 = (i[5]&i[3]) | (i[4]&i[2]);
-
-assign out.pc = (!i[5]&!i[3]&i[2]) | (i[5]&i[3]);
-
-assign out.load = (!i[5]&!i[4]&!i[2]);
-
-assign out.store = (!i[6]&i[5]&!i[4]);
-
-assign out.lsu = (!i[6]&!i[4]&!i[2]);
-
-assign out.add = (!i[14]&!i[13]&!i[12]&!i[5]&i[4]) | (!i[5]&!i[3]&i[2]) | (!i[30]
-    &!i[25]&!i[14]&!i[13]&!i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sub = (i[30]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (!i[29]&!i[25]&!i[14]
-    &i[13]&!i[6]&i[4]&!i[2]) | (i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]) | (
-    !i[14]&i[13]&!i[5]&i[4]&!i[2]) | (i[6]&!i[4]&!i[2]);
-
-assign out.land = (!i[27]&!i[25]&i[14]&i[13]&i[12]&!i[6]&!i[2]) | (i[14]&i[13]&i[12]
-    &!i[5]&!i[2]);
-
-assign out.lor = (!i[6]&i[3]) | (!i[29]&!i[27]&!i[25]&i[14]&i[13]&!i[12]&!i[6]&!i[2]) | (
-    i[5]&i[4]&i[2]) | (!i[13]&!i[12]&i[6]&i[4]) | (i[14]&i[13]&!i[12]
-    &!i[5]&!i[2]);
-
-assign out.lxor = (!i[29]&!i[27]&!i[25]&i[14]&!i[13]&!i[12]&i[4]&!i[2]) | (i[14]
-    &!i[13]&!i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sll = (!i[29]&!i[27]&!i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sra = (i[30]&!i[29]&!i[27]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.srl = (!i[30]&!i[29]&!i[27]&!i[25]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.slt = (!i[29]&!i[25]&!i[14]&i[13]&!i[6]&i[4]&!i[2]) | (!i[14]&i[13]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.unsign = (!i[27]&i[25]&i[14]&i[12]&!i[6]&i[5]&!i[2]) | (!i[14]&i[13]
-    &i[12]&!i[5]&!i[2]) | (i[13]&i[6]&!i[4]&!i[2]) | (i[14]&!i[5]&!i[4]) | (
-    !i[25]&!i[14]&i[13]&i[12]&!i[6]&!i[2]) | (i[27]&i[25]&i[14]&i[13]
-    &!i[6]&i[5]&!i[2]);
-
-assign out.condbr = (i[6]&!i[4]&!i[2]);
-
-assign out.beq = (!i[14]&!i[12]&i[6]&!i[4]&!i[2]);
-
-assign out.bne = (!i[14]&i[12]&i[6]&!i[4]&!i[2]);
-
-assign out.bge = (i[14]&i[12]&i[5]&!i[4]&!i[2]);
-
-assign out.blt = (i[14]&!i[12]&i[5]&!i[4]&!i[2]);
-
-assign out.jal = (i[6]&i[2]);
-
-assign out.by = (!i[13]&!i[12]&!i[6]&!i[4]&!i[2]);
-
-assign out.half = (i[12]&!i[6]&!i[4]&!i[2]);
-
-assign out.word = (i[13]&!i[6]&!i[4]);
-
-assign out.csr_read = (i[13]&i[6]&i[4]) | (i[7]&i[6]&i[4]) | (i[8]&i[6]&i[4]) | (
-    i[9]&i[6]&i[4]) | (i[10]&i[6]&i[4]) | (i[11]&i[6]&i[4]);
-
-assign out.csr_clr = (i[15]&i[13]&i[12]&i[6]&i[4]) | (i[16]&i[13]&i[12]&i[6]&i[4]) | (
-    i[17]&i[13]&i[12]&i[6]&i[4]) | (i[18]&i[13]&i[12]&i[6]&i[4]) | (
-    i[19]&i[13]&i[12]&i[6]&i[4]);
-
-assign out.csr_set = (i[15]&!i[12]&i[6]&i[4]) | (i[16]&!i[12]&i[6]&i[4]) | (i[17]
-    &!i[12]&i[6]&i[4]) | (i[18]&!i[12]&i[6]&i[4]) | (i[19]&!i[12]&i[6]
-    &i[4]);
-
-assign out.csr_write = (!i[13]&i[12]&i[6]&i[4]);
-
-assign out.csr_imm = (i[14]&!i[13]&i[6]&i[4]) | (i[15]&i[14]&i[6]&i[4]) | (i[16]
-    &i[14]&i[6]&i[4]) | (i[17]&i[14]&i[6]&i[4]) | (i[18]&i[14]&i[6]&i[4]) | (
-    i[19]&i[14]&i[6]&i[4]);
-
-assign out.presync = (!i[5]&i[3]) | (!i[13]&i[7]&i[6]&i[4]) | (!i[13]&i[8]&i[6]&i[4]) | (
-    !i[13]&i[9]&i[6]&i[4]) | (!i[13]&i[10]&i[6]&i[4]) | (!i[13]&i[11]
-    &i[6]&i[4]) | (i[15]&i[13]&i[6]&i[4]) | (i[16]&i[13]&i[6]&i[4]) | (
-    i[17]&i[13]&i[6]&i[4]) | (i[18]&i[13]&i[6]&i[4]) | (i[19]&i[13]&i[6]
-    &i[4]);
-
-assign out.postsync = (i[12]&!i[5]&i[3]) | (!i[22]&!i[13]&!i[12]&i[6]&i[4]) | (
-    !i[13]&i[7]&i[6]&i[4]) | (!i[13]&i[8]&i[6]&i[4]) | (!i[13]&i[9]&i[6]
-    &i[4]) | (!i[13]&i[10]&i[6]&i[4]) | (!i[13]&i[11]&i[6]&i[4]) | (
-    i[15]&i[13]&i[6]&i[4]) | (i[16]&i[13]&i[6]&i[4]) | (i[17]&i[13]&i[6]
-    &i[4]) | (i[18]&i[13]&i[6]&i[4]) | (i[19]&i[13]&i[6]&i[4]);
-
-assign out.ebreak = (!i[22]&i[20]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.ecall = (!i[21]&!i[20]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.mret = (i[29]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.mul = (!i[30]&i[27]&i[24]&i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[29]&i[27]&!i[24]&i[23]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[29]&i[27]&!i[24]&!i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&i[27]&i[13]
-    &!i[6]&i[5]&i[4]&!i[2]) | (i[29]&i[27]&i[22]&!i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&!i[21]&i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&!i[22]&i[21]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[30]&i[29]&i[27]&!i[23]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[27]&i[23]&i[14]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]) | (!i[30]&!i[29]&i[27]&!i[25]&!i[13]&i[12]&!i[6]
-    &i[4]&!i[2]) | (i[25]&!i[14]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&!i[27]
-    &i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&i[14]
-    &!i[6]&i[5]&!i[2]);
-
-assign out.rs1_sign = (!i[27]&i[25]&!i[14]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (
-    !i[27]&i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.rs2_sign = (!i[27]&i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.low = (i[25]&!i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.div = (!i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]);
-
-assign out.rem = (!i[27]&i[25]&i[14]&i[13]&!i[6]&i[5]&!i[2]);
-
-assign out.fence = (!i[5]&i[3]);
-
-assign out.fence_i = (i[12]&!i[5]&i[3]);
-
-assign out.clz = (i[30]&!i[27]&!i[24]&!i[22]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.ctz = (i[30]&!i[27]&!i[24]&!i[22]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.pcnt = (i[30]&!i[27]&!i[24]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sext_b = (i[30]&!i[27]&i[22]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sext_h = (i[30]&!i[27]&i[22]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.slo = (!i[30]&i[29]&!i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sro = (!i[30]&i[29]&!i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.min = (i[27]&i[25]&i[14]&!i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.max = (i[27]&i[25]&i[14]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.pack = (!i[30]&i[27]&!i[25]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.packu = (i[30]&i[27]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.packh = (!i[30]&i[27]&!i[25]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.rol = (i[30]&!i[27]&!i[14]&i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.ror = (i[30]&i[29]&!i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbb = (i[30]&!i[27]&!i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    !i[30]&i[27]&i[14]&i[13]&i[12]&!i[6]&i[5]&!i[2]) | (i[30]&i[29]&!i[27]
-    &i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[27]&!i[13]&!i[12]&i[5]
-    &i[4]&!i[2]) | (i[30]&i[14]&!i[13]&!i[12]&!i[6]&i[5]&!i[2]) | (i[30]
-    &!i[27]&i[13]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&i[29]&!i[27]&!i[6]&i[5]
-    &i[4]&!i[2]) | (i[30]&i[29]&i[24]&i[23]&i[22]&i[21]&i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[29]&i[27]&!i[24]&!i[23]&i[22]
-    &i[21]&i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[27]
-    &i[24]&!i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[30]&i[29]&i[24]&i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]) | (i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]);
-
-assign out.sbset = (!i[30]&i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbclr = (i[30]&!i[29]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbinv = (i[30]&i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbext = (i[30]&!i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbs = (i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]) | (i[30]&!i[29]
-    &i[27]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.bext = (!i[30]&i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.bdep = (i[30]&i[27]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.zbe = (i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.clmul = (i[27]&i[25]&!i[14]&!i[13]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.clmulh = (i[27]&!i[14]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.clmulr = (i[27]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.zbc = (i[27]&i[25]&!i[14]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.grev = (i[30]&i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.gorc = (!i[30]&i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.shfl = (!i[30]&!i[29]&i[27]&!i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.unshfl = (!i[30]&!i[29]&i[27]&!i[25]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbp = (!i[30]&i[29]&!i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&!i[29]
-    &i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[30]&!i[27]&i[13]&!i[6]
-    &i[5]&i[4]&!i[2]) | (i[27]&!i[25]&!i[13]&!i[12]&i[5]&i[4]&!i[2]) | (
-    i[30]&i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]) | (i[29]&!i[27]&i[12]&!i[6]
-    &i[5]&i[4]&!i[2]) | (!i[30]&!i[29]&i[27]&!i[25]&i[12]&!i[6]&i[5]&i[4]
-    &!i[2]) | (i[29]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.crc32_b = (i[30]&!i[27]&i[24]&!i[23]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]);
-
-assign out.crc32_h = (i[30]&!i[27]&i[24]&!i[23]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.crc32_w = (i[30]&!i[27]&i[24]&!i[23]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.crc32c_b = (i[30]&!i[27]&i[23]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.crc32c_h = (i[30]&!i[27]&i[23]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.crc32c_w = (i[30]&!i[27]&i[23]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.zbr = (i[30]&!i[27]&i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.bfp = (i[30]&i[27]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.zbf = (i[30]&i[27]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.sh1add = (i[29]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.sh2add = (i[29]&i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.sh3add = (i[29]&i[14]&i[13]&!i[6]&i[5]&!i[2]);
-
-assign out.zba = (i[29]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.pm_alu = (i[28]&i[22]&!i[13]&!i[12]&i[4]) | (!i[30]&!i[29]&!i[27]&!i[25]
-    &!i[6]&i[4]) | (!i[29]&!i[27]&!i[25]&!i[13]&i[12]&!i[6]&i[4]) | (
-    !i[29]&!i[27]&!i[25]&!i[14]&!i[6]&i[4]) | (i[13]&!i[5]&i[4]) | (i[4]
-    &i[2]) | (!i[12]&!i[5]&i[4]);
-
-
-assign out.legal = (!i[31]&!i[30]&!i[29]&i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]
-    &i[22]&!i[21]&i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]
-    &!i[10]&!i[9]&!i[8]&!i[7]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&i[29]&i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]
-    &i[21]&!i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]&!i[10]
-    &!i[9]&!i[8]&!i[7]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[31]
-    &!i[30]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]&!i[21]
-    &!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]&!i[10]&!i[9]&!i[8]
-    &!i[7]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&!i[26]
-    &!i[25]&i[24]&!i[22]&!i[20]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[31]&i[29]&!i[28]&!i[26]&!i[25]&i[24]&!i[22]&!i[21]&!i[6]&!i[5]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&!i[26]&!i[25]&!i[23]
-    &!i[22]&!i[20]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]
-    &!i[28]&!i[26]&!i[25]&!i[24]&!i[23]&!i[21]&!i[6]&!i[5]&i[4]&!i[3]
-    &i[1]&i[0]) | (!i[31]&!i[30]&!i[29]&!i[28]&!i[26]&i[25]&i[13]&!i[6]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[26]&!i[25]&!i[24]
-    &!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[27]
-    &!i[26]&!i[25]&i[14]&!i[12]&!i[6]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]
-    &!i[30]&!i[28]&!i[27]&!i[26]&!i[25]&i[13]&!i[12]&!i[6]&i[4]&!i[3]
-    &i[1]&i[0]) | (!i[31]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[13]&!i[12]
-    &!i[6]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[28]&!i[27]&!i[26]&!i[25]
-    &i[14]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[29]
-    &!i[28]&!i[26]&!i[13]&i[12]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[26]&i[14]&!i[6]&i[5]&i[4]&!i[3]&i[1]
-    &i[0]) | (!i[31]&i[30]&!i[28]&i[27]&!i[26]&!i[25]&!i[13]&i[12]&!i[6]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&i[27]&!i[26]&!i[25]
-    &!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[27]
-    &!i[26]&!i[25]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]
-    &!i[29]&!i[28]&!i[27]&!i[26]&!i[6]&i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[14]&!i[13]&!i[12]&i[6]&i[5]&!i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[29]
-    &!i[28]&!i[26]&!i[25]&i[14]&!i[6]&i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[31]&i[29]&!i[28]&!i[26]&!i[25]&!i[13]&i[12]&i[5]&i[4]&!i[3]&!i[2]
-    &i[1]&i[0]) | (i[14]&i[6]&i[5]&!i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[14]
-    &!i[13]&i[5]&!i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[12]&!i[6]&!i[5]&i[4]
-    &!i[3]&i[1]&i[0]) | (!i[13]&i[12]&i[6]&i[5]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]
-    &!i[21]&!i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[13]&!i[11]
-    &!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]&i[3]&i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]
-    &!i[13]&!i[12]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]&i[3]
-    &i[2]&i[1]&i[0]) | (i[13]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    i[6]&i[5]&!i[4]&i[3]&i[2]&i[1]&i[0]) | (!i[14]&!i[12]&!i[6]&!i[4]
-    &!i[3]&!i[2]&i[1]&i[0]) | (!i[13]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]
-    &i[0]) | (i[13]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[6]&i[4]&!i[3]
-    &i[2]&i[1]&i[0]);
-
-
-endmodule // eb1_dec_dec_ctl
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-module eb1_dec_gpr_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})  (
-    input logic [4:0]  raddr0,       // logical read addresses
-    input logic [4:0]  raddr1,
-
-    input logic        wen0,         // write enable
-    input logic [4:0]  waddr0,       // write address
-    input logic [31:0] wd0,          // write data
-
-    input logic        wen1,         // write enable
-    input logic [4:0]  waddr1,       // write address
-    input logic [31:0] wd1,          // write data
-
-    input logic        wen2,         // write enable
-    input logic [4:0]  waddr2,       // write address
-    input logic [31:0] wd2,          // write data
-
-    input logic        clk,
-    input logic        rst_l,
-
-    output logic [31:0] rd0,         // read data
-    output logic [31:0] rd1,
-
-    input  logic        scan_mode
-);
-
-   logic [31:1] [31:0] gpr_out;      // 31 x 32 bit GPRs
-   logic [31:1] [31:0] gpr_in;
-   logic [31:1] w0v,w1v,w2v;
-   logic [31:1] gpr_wr_en;
-
-   // GPR Write Enables
-   assign gpr_wr_en[31:1] = (w0v[31:1] | w1v[31:1] | w2v[31:1]);
-   for ( genvar j=1; j<32; j++ )  begin : gpr
-      rvdffe #(32) gprff (.*, .en(gpr_wr_en[j]), .din(gpr_in[j][31:0]), .dout(gpr_out[j][31:0]));
-   end : gpr
-
-   // the read out
-   always_comb begin
-      rd0[31:0] = 32'b0;
-      rd1[31:0] = 32'b0;
-      w0v[31:1] = 31'b0;
-      w1v[31:1] = 31'b0;
-      w2v[31:1] = 31'b0;
-      gpr_in[31:1] = '0;
-
-      // GPR Read logic
-      for (int j=1; j<32; j++ )  begin
-         rd0[31:0] |= ({32{(raddr0[4:0]== 5'(j))}} & gpr_out[j][31:0]);
-         rd1[31:0] |= ({32{(raddr1[4:0]== 5'(j))}} & gpr_out[j][31:0]);
-      end
-
-     // GPR Write logic
-     for (int j=1; j<32; j++ )  begin
-         w0v[j]     = wen0  & (waddr0[4:0]== 5'(j) );
-         w1v[j]     = wen1  & (waddr1[4:0]== 5'(j) );
-         w2v[j]     = wen2  & (waddr2[4:0]== 5'(j) );
-         gpr_in[j]  =    ({32{w0v[j]}} & wd0[31:0]) |
-                         ({32{w1v[j]}} & wd1[31:0]) |
-                         ({32{w2v[j]}} & wd2[31:0]);
-     end
-   end // always_comb begin
-
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-module eb1_dec_ib_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic                 dbg_cmd_valid,                      // valid dbg cmd
-
-   input logic                 dbg_cmd_write,                      // dbg cmd is write
-   input logic [1:0]           dbg_cmd_type,                       // dbg type
-   input logic [31:0]          dbg_cmd_addr,                       // expand to 31:0
-
-   input eb1_br_pkt_t i0_brp,                                     // i0 branch packet from aligner
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index,    // BP index
-   input logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr,               // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag,              // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index,          // Fully associt btb index
-
-   input logic       ifu_i0_pc4,                                   // i0 is 4B inst else 2B
-   input logic       ifu_i0_valid,                                 // i0 valid from ifu
-   input logic       ifu_i0_icaf,                                  // i0 instruction access fault
-   input logic [1:0] ifu_i0_icaf_type,                             // i0 instruction access fault type
-
-   input logic   ifu_i0_icaf_second,                               // i0 has access fault on second 2B of 4B inst
-   input logic   ifu_i0_dbecc,                                     // i0 double-bit error
-   input logic [31:0]  ifu_i0_instr,                               // i0 instruction from the aligner
-   input logic [31:1]  ifu_i0_pc,                                  // i0 pc from the aligner
-
-
-   output logic dec_ib0_valid_d,                                   // ib0 valid
-   output logic dec_debug_valid_d,                                 // Debug read or write at D-stage
-
-
-   output logic [31:0] dec_i0_instr_d,                             // i0 inst at decode
-
-   output logic [31:1] dec_i0_pc_d,                                // i0 pc at decode
-
-   output logic dec_i0_pc4_d,                                      // i0 is 4B inst else 2B
-
-   output eb1_br_pkt_t dec_i0_brp,                                // i0 branch packet at decode
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index,   // i0 branch index
-   output logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr,              // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag,             // BP tag
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index,          // Fully associt btb index
-
-   output logic dec_i0_icaf_d,                                     // i0 instruction access fault at decode
-   output logic dec_i0_icaf_second_d,                              // i0 instruction access fault on second 2B of 4B inst
-   output logic [1:0] dec_i0_icaf_type_d,                          // i0 instruction access fault type
-   output logic dec_i0_dbecc_d,                                    // i0 double-bit error at decode
-   output logic dec_debug_wdata_rs1_d,                             // put debug write data onto rs1 source: machine is halted
-
-   output logic dec_debug_fence_d                                  // debug fence inst
-
-   );
-
-
-   logic         debug_valid;
-   logic [4:0]   dreg;
-   logic [11:0]  dcsr;
-   logic [31:0]  ib0, ib0_debug_in;
-
-   logic         debug_read;
-   logic         debug_write;
-   logic         debug_read_gpr;
-   logic         debug_write_gpr;
-   logic         debug_read_csr;
-   logic         debug_write_csr;
-
-   logic [34:0]  ifu_i0_pcdata, pc0;
-
-   assign ifu_i0_pcdata[34:0] = { ifu_i0_icaf_second, ifu_i0_dbecc, ifu_i0_icaf,
-                                  ifu_i0_pc[31:1], ifu_i0_pc4 };
-
-   assign pc0[34:0] = ifu_i0_pcdata[34:0];
-
-   assign dec_i0_icaf_second_d = pc0[34];   // icaf's can only decode as i0
-
-   assign dec_i0_dbecc_d = pc0[33];
-
-   assign dec_i0_icaf_d = pc0[32];
-   assign dec_i0_pc_d[31:1] = pc0[31:1];
-   assign dec_i0_pc4_d = pc0[0];
-
-   assign dec_i0_icaf_type_d[1:0] = ifu_i0_icaf_type[1:0];
-
-// GPR accesses
-
-// put reg to read on rs1
-// read ->   or %x0,  %reg,%x0      {000000000000,reg[4:0],110000000110011}
-
-// put write date on rs1
-// write ->  or %reg, %x0, %x0      {00000000000000000110,reg[4:0],0110011}
-
-
-// CSR accesses
-// csr is of form rd, csr, rs1
-
-// read  -> csrrs %x0, %csr, %x0     {csr[11:0],00000010000001110011}
-
-// put write data on rs1
-// write -> csrrw %x0, %csr, %x0     {csr[11:0],00000001000001110011}
-
-// abstract memory command not done here
-   assign debug_valid = dbg_cmd_valid & (dbg_cmd_type[1:0] != 2'h2);
-
-
-   assign debug_read  = debug_valid & ~dbg_cmd_write;
-   assign debug_write = debug_valid &  dbg_cmd_write;
-
-   assign debug_read_gpr  = debug_read  & (dbg_cmd_type[1:0]==2'h0);
-   assign debug_write_gpr = debug_write & (dbg_cmd_type[1:0]==2'h0);
-   assign debug_read_csr  = debug_read  & (dbg_cmd_type[1:0]==2'h1);
-   assign debug_write_csr = debug_write & (dbg_cmd_type[1:0]==2'h1);
-
-   assign dreg[4:0]  = dbg_cmd_addr[4:0];
-   assign dcsr[11:0] = dbg_cmd_addr[11:0];
-
-
-   assign ib0_debug_in[31:0] = ({32{debug_read_gpr}}  & {12'b000000000000,dreg[4:0],15'b110000000110011}) |
-                               ({32{debug_write_gpr}} & {20'b00000000000000000110,dreg[4:0],7'b0110011}) |
-                               ({32{debug_read_csr}}  & {dcsr[11:0],20'b00000010000001110011}) |
-                               ({32{debug_write_csr}} & {dcsr[11:0],20'b00000001000001110011});
-
-
-
-   // machine is in halted state, pipe empty, write will always happen next cycle
-
-   assign dec_debug_wdata_rs1_d = debug_write_gpr | debug_write_csr;
-
-
-   // special fence csr for use only in debug mode
-
-   assign dec_debug_fence_d = debug_write_csr & (dcsr[11:0] == 12'h7c4);
-
-   assign ib0[31:0] = (debug_valid) ? ib0_debug_in[31:0] : ifu_i0_instr[31:0];
-
-   assign dec_ib0_valid_d = ifu_i0_valid | debug_valid;
-
-   assign dec_debug_valid_d = debug_valid;
-
-   assign dec_i0_instr_d[31:0] = ib0[31:0];
-
-   assign dec_i0_brp = i0_brp;
-   assign dec_i0_bp_index = ifu_i0_bp_index;
-   assign dec_i0_bp_fghr = ifu_i0_bp_fghr;
-   assign dec_i0_bp_btag = ifu_i0_bp_btag;
-   assign dec_i0_bp_fa_index = ifu_i0_fa_index;
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or it's affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-//********************************************************************************
-// eb1_dec_tlu_ctl.sv
-//
-//
-// Function: CSRs, Commit/WB, flushing, exceptions, interrupts
-// Comments:
-//
-//********************************************************************************
-
-module eb1_dec_tlu_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic clk,
-   input logic free_clk,
-   input logic free_l2clk,
-   input logic rst_l,
-   input logic scan_mode,
-
-   input logic [31:1] rst_vec, // reset vector, from core pins
-   input logic        nmi_int, // nmi pin
-   input logic [31:1] nmi_vec, // nmi vector
-   input logic  i_cpu_halt_req,    // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,     // Asynchronous Restart request to CPU
-
-   input logic lsu_fastint_stall_any,   // needed by lsu for 2nd pass of dma with ecc correction, stall next cycle
-
-
-   // perf counter inputs
-   input logic       ifu_pmu_instr_aligned,   // aligned instructions
-   input logic       ifu_pmu_fetch_stall, // fetch unit stalled
-   input logic       ifu_pmu_ic_miss, // icache miss
-   input logic       ifu_pmu_ic_hit, // icache hit
-   input logic       ifu_pmu_bus_error, // Instruction side bus error
-   input logic       ifu_pmu_bus_busy, // Instruction side bus busy
-   input logic       ifu_pmu_bus_trxn, // Instruction side bus transaction
-   input logic       dec_pmu_instr_decoded, // decoded instructions
-   input logic       dec_pmu_decode_stall, // decode stall
-   input logic       dec_pmu_presync_stall, // decode stall due to presync'd inst
-   input logic       dec_pmu_postsync_stall,// decode stall due to postsync'd inst
-   input logic       lsu_store_stall_any,    // SB or WB is full, stall decode
-   input logic       dma_dccm_stall_any,     // DMA stall of lsu
-   input logic       dma_iccm_stall_any,     // DMA stall of ifu
-   input logic       exu_pmu_i0_br_misp,     // pipe 0 branch misp
-   input logic       exu_pmu_i0_br_ataken,   // pipe 0 branch actual taken
-   input logic       exu_pmu_i0_pc4,         // pipe 0 4 byte branch
-   input logic       lsu_pmu_bus_trxn,       // D side bus transaction
-   input logic       lsu_pmu_bus_misaligned, // D side bus misaligned
-   input logic       lsu_pmu_bus_error,      // D side bus error
-   input logic       lsu_pmu_bus_busy,       // D side bus busy
-   input logic       lsu_pmu_load_external_m, // D side bus load
-   input logic       lsu_pmu_store_external_m, // D side bus store
-   input logic       dma_pmu_dccm_read,          // DMA DCCM read
-   input logic       dma_pmu_dccm_write,         // DMA DCCM write
-   input logic       dma_pmu_any_read,           // DMA read
-   input logic       dma_pmu_any_write,          // DMA write
-
-   input logic [31:1] lsu_fir_addr, // Fast int address
-   input logic [1:0] lsu_fir_error, // Fast int lookup error
-
-   input logic       iccm_dma_sb_error,      // I side dma single bit error
-
-   input    eb1_lsu_error_pkt_t lsu_error_pkt_r, // lsu precise exception/error packet
-   input logic         lsu_single_ecc_error_incr, // LSU inc SB error counter
-
-   input logic dec_pause_state, // Pause counter not zero
-   input logic         lsu_imprecise_error_store_any,      // store bus error
-   input logic         lsu_imprecise_error_load_any,      // store bus error
-   input logic [31:0]  lsu_imprecise_error_addr_any, // store bus error address
-
-   input logic        dec_csr_wen_unq_d,       // valid csr with write - for csr legal
-   input logic        dec_csr_any_unq_d,       // valid csr - for csr legal
-   input logic [11:0] dec_csr_rdaddr_d,      // read address for csr
-
-   input logic        dec_csr_wen_r,      // csr write enable at wb
-   input logic [11:0] dec_csr_wraddr_r,      // write address for csr
-   input logic [31:0] dec_csr_wrdata_r,   // csr write data at wb
-
-   input logic        dec_csr_stall_int_ff, // csr is mie/mstatus
-
-   input logic dec_tlu_i0_valid_r, // pipe 0 op at e4 is valid
-
-   input logic [31:1] exu_npc_r, // for NPC tracking
-
-   input logic [31:1] dec_tlu_i0_pc_r, // for PC/NPC tracking
-
-   input eb1_trap_pkt_t dec_tlu_packet_r, // exceptions known at decode
-
-   input logic [31:0] dec_illegal_inst, // For mtval
-   input logic        dec_i0_decode_d,  // decode valid, used for clean icache diagnostics
-
-   // branch info from pipe0 for errors or counter updates
-   input logic [1:0]  exu_i0_br_hist_r, // history
-   input logic        exu_i0_br_error_r, // error
-   input logic        exu_i0_br_start_error_r, // start error
-   input logic        exu_i0_br_valid_r, // valid
-   input logic        exu_i0_br_mp_r, // mispredict
-   input logic        exu_i0_br_middle_r, // middle of bank
-
-   // branch info from pipe1 for errors or counter updates
-
-   input logic             exu_i0_br_way_r, // way hit or repl
-
-   output logic dec_tlu_core_empty,  // core is empty
-   // Debug start
-   output logic dec_dbg_cmd_done, // abstract command done
-   output logic dec_dbg_cmd_fail, // abstract command failed
-   output logic dec_tlu_dbg_halted, // Core is halted and ready for debug command
-   output logic dec_tlu_debug_mode, // Core is in debug mode
-   output logic dec_tlu_resume_ack, // Resume acknowledge
-   output logic dec_tlu_debug_stall, // stall decode while waiting on core to empty
-
-   output logic dec_tlu_flush_noredir_r , // Tell fetch to idle on this flush
-   output logic dec_tlu_mpc_halted_only, // Core is halted only due to MPC
-   output logic dec_tlu_flush_leak_one_r, // single step
-   output logic dec_tlu_flush_err_r, // iside perr/ecc rfpc. This is the D stage of the error
-
-   output logic dec_tlu_flush_extint, // fast ext int started
-   output logic [31:2] dec_tlu_meihap, // meihap for fast int
-
-   input  logic dbg_halt_req, // DM requests a halt
-   input  logic dbg_resume_req, // DM requests a resume
-   input  logic ifu_miss_state_idle, // I-side miss buffer empty
-   input  logic lsu_idle_any, // lsu is idle
-   input  logic dec_div_active, // oop div is active
-   output eb1_trigger_pkt_t  [3:0] trigger_pkt_any, // trigger info for trigger blocks
-
-   input logic  ifu_ic_error_start,     // IC single bit error
-   input logic  ifu_iccm_rd_ecc_single_err, // ICCM single bit error
-
-
-   input logic [70:0] ifu_ic_debug_rd_data, // diagnostic icache read data
-   input logic ifu_ic_debug_rd_data_valid, // diagnostic icache read data valid
-   output eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt, // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-   // Debug end
-
-   input logic [7:0] pic_claimid, // pic claimid for csr
-   input logic [3:0] pic_pl, // pic priv level for csr
-   input logic       mhwakeup, // high priority external int, wakeup if halted
-
-   input logic mexintpend, // external interrupt pending
-   input logic timer_int, // timer interrupt pending
-   input logic soft_int, // software interrupt pending
-
-   output logic o_cpu_halt_status, // PMU interface, halted
-   output logic o_cpu_halt_ack, // halt req ack
-   output logic o_cpu_run_ack, // run req ack
-   output logic o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id, // Core ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req, // Async halt request
-   input logic mpc_debug_run_req, // Async run request
-   input logic mpc_reset_run_req, // Run/halt after reset
-   output logic mpc_debug_halt_ack, // Halt ack
-   output logic mpc_debug_run_ack, // Run ack
-   output logic debug_brkpt_status, // debug breakpoint
-
-   output logic [3:0] dec_tlu_meicurpl, // to PIC
-   output logic [3:0] dec_tlu_meipt, // to PIC
-
-
-   output logic [31:0] dec_csr_rddata_d,      // csr read data at wb
-   output logic dec_csr_legal_d,              // csr indicates legal operation
-
-   output eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // branch pkt to bp
-
-   output logic dec_tlu_i0_kill_writeb_wb,    // I0 is flushed, don't writeback any results to arch state
-   output logic dec_tlu_flush_lower_wb,       // commit has a flush (exception, int, mispredict at e4)
-   output logic dec_tlu_i0_commit_cmt,        // committed an instruction
-
-   output logic dec_tlu_i0_kill_writeb_r,    // I0 is flushed, don't writeback any results to arch state
-   output logic dec_tlu_flush_lower_r,       // commit has a flush (exception, int)
-   output logic [31:1] dec_tlu_flush_path_r, // flush pc
-   output logic dec_tlu_fence_i_r,           // flush is a fence_i rfnpc, flush icache
-   output logic dec_tlu_wr_pause_r,           // CSR write to pause reg is at R.
-   output logic dec_tlu_flush_pause_r,        // Flush is due to pause
-
-   output logic dec_tlu_presync_d,            // CSR read needs to be presync'd
-   output logic dec_tlu_postsync_d,           // CSR needs to be presync'd
-
-
-   output logic [31:0] dec_tlu_mrac_ff,        // CSR for memory region control
-
-   output logic dec_tlu_force_halt, // halt has been forced
-
-   output logic dec_tlu_perfcnt0, // toggles when pipe0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1, // toggles when pipe0 perf counter 1 has an event inc
-   output logic dec_tlu_perfcnt2, // toggles when pipe0 perf counter 2 has an event inc
-   output logic dec_tlu_perfcnt3, // toggles when pipe0 perf counter 3 has an event inc
-
-   output logic dec_tlu_i0_exc_valid_wb1, // pipe 0 exception valid
-   output logic dec_tlu_i0_valid_wb1,  // pipe 0 valid
-   output logic dec_tlu_int_valid_wb1, // pipe 2 int valid
-   output logic [4:0] dec_tlu_exc_cause_wb1, // exception or int cause
-   output logic [31:0] dec_tlu_mtval_wb1, // MTVAL value
-
-   // feature disable from mfdc
-   output logic  dec_tlu_external_ldfwd_disable, // disable external load forwarding
-   output logic  dec_tlu_sideeffect_posted_disable,  // disable posted stores to side-effect address
-   output logic  dec_tlu_core_ecc_disable, // disable core ECC
-   output logic  dec_tlu_bpred_disable,           // disable branch prediction
-   output logic  dec_tlu_wb_coalescing_disable,   // disable writebuffer coalescing
-   output logic  dec_tlu_pipelining_disable,      // disable pipelining
-   output logic  dec_tlu_trace_disable,           // disable trace
-   output logic [2:0]  dec_tlu_dma_qos_prty,    // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   output logic  dec_tlu_misc_clk_override, // override misc clock domain gating
-   output logic  dec_tlu_dec_clk_override,  // override decode clock domain gating
-   output logic  dec_tlu_ifu_clk_override,  // override fetch clock domain gating
-   output logic  dec_tlu_lsu_clk_override,  // override load/store clock domain gating
-   output logic  dec_tlu_bus_clk_override,  // override bus clock domain gating
-   output logic  dec_tlu_pic_clk_override,  // override PIC clock domain gating
-   output logic  dec_tlu_picio_clk_override,// override PICIO clock domain gating
-   output logic  dec_tlu_dccm_clk_override, // override DCCM clock domain gating
-   output logic  dec_tlu_icm_clk_override   // override ICCM clock domain gating
-   );
-
-   logic         clk_override, e4e5_int_clk, nmi_fir_type, nmi_lsu_load_type, nmi_lsu_store_type, nmi_int_detected_f, nmi_lsu_load_type_f,
-                 nmi_lsu_store_type_f, allow_dbg_halt_csr_write, dbg_cmd_done_ns, i_cpu_run_req_d1_raw, debug_mode_status, lsu_single_ecc_error_r_d1,
-                 sel_npc_r, sel_npc_resume, ce_int,
-                 nmi_in_debug_mode, dpc_capture_npc, dpc_capture_pc, tdata_load, tdata_opcode, tdata_action, perfcnt_halted, tdata_chain,
-                 tdata_kill_write;
-
-
-   logic reset_delayed, reset_detect, reset_detected;
-   logic wr_mstatus_r, wr_mtvec_r, wr_mcyclel_r, wr_mcycleh_r,
-         wr_minstretl_r, wr_minstreth_r, wr_mscratch_r, wr_mepc_r, wr_mcause_r, wr_mscause_r, wr_mtval_r,
-         wr_mrac_r, wr_meihap_r, wr_meicurpl_r, wr_meipt_r, wr_dcsr_r,
-         wr_dpc_r, wr_meicidpl_r, wr_meivt_r, wr_meicpct_r, wr_micect_r, wr_miccmect_r, wr_mfdht_r, wr_mfdhs_r,
-         wr_mdccmect_r,wr_mhpme3_r, wr_mhpme4_r, wr_mhpme5_r, wr_mhpme6_r;
-   logic wr_mpmc_r;
-   logic [1:1] mpmc_b_ns, mpmc, mpmc_b;
-   logic set_mie_pmu_fw_halt, fw_halted_ns, fw_halted;
-   logic wr_mcountinhibit_r;
-   logic [6:0] mcountinhibit;
-   logic wr_mtsel_r, wr_mtdata1_t0_r, wr_mtdata1_t1_r, wr_mtdata1_t2_r, wr_mtdata1_t3_r, wr_mtdata2_t0_r, wr_mtdata2_t1_r, wr_mtdata2_t2_r, wr_mtdata2_t3_r;
-   logic [31:0] mtdata2_t0, mtdata2_t1, mtdata2_t2, mtdata2_t3, mtdata2_tsel_out, mtdata1_tsel_out;
-   logic [9:0]  mtdata1_t0_ns, mtdata1_t0, mtdata1_t1_ns, mtdata1_t1, mtdata1_t2_ns, mtdata1_t2, mtdata1_t3_ns, mtdata1_t3;
-   logic [9:0] tdata_wrdata_r;
-   logic [1:0] mtsel_ns, mtsel;
-   logic tlu_i0_kill_writeb_r;
-   logic [1:0]  mstatus_ns, mstatus;
-   logic [1:0] mfdhs_ns, mfdhs;
-   logic [31:0] force_halt_ctr, force_halt_ctr_f;
-   logic        force_halt;
-   logic [5:0]  mfdht, mfdht_ns;
-   logic mstatus_mie_ns;
-   logic [30:0] mtvec_ns, mtvec;
-   logic [15:2] dcsr_ns, dcsr;
-   logic [5:0] mip_ns, mip;
-   logic [5:0] mie_ns, mie;
-   logic [31:0] mcyclel_ns, mcyclel;
-   logic [31:0] mcycleh_ns, mcycleh;
-   logic [31:0] minstretl_ns, minstretl;
-   logic [31:0] minstreth_ns, minstreth;
-   logic [31:0] micect_ns, micect, miccmect_ns, miccmect, mdccmect_ns, mdccmect;
-   logic [26:0] micect_inc, miccmect_inc, mdccmect_inc;
-   logic [31:0] mscratch;
-   logic [31:0] mhpmc3, mhpmc3_ns, mhpmc4, mhpmc4_ns, mhpmc5, mhpmc5_ns, mhpmc6, mhpmc6_ns;
-   logic [31:0] mhpmc3h, mhpmc3h_ns, mhpmc4h, mhpmc4h_ns, mhpmc5h, mhpmc5h_ns, mhpmc6h, mhpmc6h_ns;
-   logic [9:0]  mhpme3, mhpme4, mhpme5, mhpme6;
-   logic [31:0] mrac;
-   logic [9:2] meihap;
-   logic [31:10] meivt;
-   logic [3:0] meicurpl_ns, meicurpl;
-   logic [3:0] meicidpl_ns, meicidpl;
-   logic [3:0] meipt_ns, meipt;
-   logic [31:0] mdseac;
-   logic mdseac_locked_ns, mdseac_locked_f, mdseac_en, nmi_lsu_detected;
-   logic [31:1] mepc_ns, mepc;
-   logic [31:1] dpc_ns, dpc;
-   logic [31:0] mcause_ns, mcause;
-   logic [3:0] mscause_ns, mscause, mscause_type;
-   logic [31:0] mtval_ns, mtval;
-   logic dec_pause_state_f, dec_tlu_wr_pause_r_d1, pause_expired_r, pause_expired_wb;
-   logic        tlu_flush_lower_r, tlu_flush_lower_r_d1;
-   logic [31:1] tlu_flush_path_r,  tlu_flush_path_r_d1;
-   logic i0_valid_wb;
-   logic tlu_i0_commit_cmt;
-   logic [31:1] vectored_path, interrupt_path;
-   logic [16:0] dicawics_ns, dicawics;
-   logic        wr_dicawics_r, wr_dicad0_r, wr_dicad1_r, wr_dicad0h_r;
-   logic [31:0] dicad0_ns, dicad0, dicad0h_ns, dicad0h;
-
-   logic [6:0]  dicad1_ns, dicad1_raw;
-   logic [31:0] dicad1;
-   logic        ebreak_r, ebreak_to_debug_mode_r, ecall_r, illegal_r, mret_r, inst_acc_r, fence_i_r,
-                ic_perr_r, iccm_sbecc_r, ebreak_to_debug_mode_r_d1, kill_ebreak_count_r, inst_acc_second_r;
-   logic ce_int_ready, ext_int_ready, timer_int_ready, soft_int_ready, int_timer0_int_ready, int_timer1_int_ready, mhwakeup_ready,
-         take_ext_int, take_ce_int, take_timer_int, take_soft_int, take_int_timer0_int, take_int_timer1_int, take_nmi, take_nmi_r_d1, int_timer0_int_possible, int_timer1_int_possible;
-   logic i0_exception_valid_r, interrupt_valid_r, i0_exception_valid_r_d1, interrupt_valid_r_d1, exc_or_int_valid_r, exc_or_int_valid_r_d1, mdccme_ce_req, miccme_ce_req, mice_ce_req;
-   logic synchronous_flush_r;
-   logic [4:0]  exc_cause_r, exc_cause_wb;
-   logic        mcyclel_cout, mcyclel_cout_f, mcyclela_cout;
-   logic [31:0] mcyclel_inc;
-   logic [31:0] mcycleh_inc;
-
-   logic        minstretl_cout, minstretl_cout_f, minstret_enable, minstretl_cout_ns, minstretl_couta;
-
-   logic [31:0] minstretl_inc, minstretl_read;
-   logic [31:0] minstreth_inc, minstreth_read;
-   logic [31:1] pc_r, pc_r_d1, npc_r, npc_r_d1;
-   logic valid_csr;
-   logic rfpc_i0_r;
-   logic lsu_i0_rfnpc_r;
-   logic dec_tlu_br0_error_r, dec_tlu_br0_start_error_r, dec_tlu_br0_v_r;
-   logic lsu_i0_exc_r, lsu_i0_exc_r_raw, lsu_exc_ma_r, lsu_exc_acc_r, lsu_exc_st_r,
-         lsu_exc_valid_r, lsu_exc_valid_r_raw, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1, block_interrupts;
-   logic i0_trigger_eval_r;
-
-   logic request_debug_mode_r, request_debug_mode_r_d1, request_debug_mode_done, request_debug_mode_done_f;
-   logic take_halt, halt_taken, halt_taken_f, internal_dbg_halt_mode, dbg_tlu_halted_f, take_reset,
-         dbg_tlu_halted, core_empty, lsu_idle_any_f, ifu_miss_state_idle_f, resume_ack_ns,
-         debug_halt_req_f, debug_resume_req_f_raw, debug_resume_req_f, enter_debug_halt_req, dcsr_single_step_done, dcsr_single_step_done_f,
-         debug_halt_req_d1, debug_halt_req_ns, dcsr_single_step_running, dcsr_single_step_running_f, internal_dbg_halt_timers;
-
-   logic [3:0] i0_trigger_r, trigger_action, trigger_enabled,
-               i0_trigger_chain_masked_r;
-   logic       i0_trigger_hit_r, i0_trigger_hit_raw_r, i0_trigger_action_r,
-               trigger_hit_r_d1,
-               mepc_trigger_hit_sel_pc_r;
-   logic [3:0] update_hit_bit_r, i0_iside_trigger_has_pri_r,i0trigger_qual_r, i0_lsu_trigger_has_pri_r;
-   logic cpu_halt_status, cpu_halt_ack, cpu_run_ack, ext_halt_pulse, i_cpu_halt_req_d1, i_cpu_run_req_d1;
-
-   logic inst_acc_r_raw, trigger_hit_dmode_r, trigger_hit_dmode_r_d1;
-   logic [9:0] mcgc, mcgc_ns, mcgc_int;
-   logic [18:0] mfdc;
-   logic i_cpu_halt_req_sync_qual, i_cpu_run_req_sync_qual, pmu_fw_halt_req_ns, pmu_fw_halt_req_f, int_timer_stalled,
-         fw_halt_req, enter_pmu_fw_halt_req, pmu_fw_tlu_halted, pmu_fw_tlu_halted_f, internal_pmu_fw_halt_mode,
-         internal_pmu_fw_halt_mode_f, int_timer0_int_hold, int_timer1_int_hold, int_timer0_int_hold_f, int_timer1_int_hold_f;
-   logic nmi_int_delayed, nmi_int_detected;
-   logic [3:0] trigger_execute, trigger_data, trigger_store;
-   logic dec_tlu_pmu_fw_halted;
-
-   logic mpc_run_state_ns, debug_brkpt_status_ns, mpc_debug_halt_ack_ns, mpc_debug_run_ack_ns, dbg_halt_state_ns, dbg_run_state_ns,
-         dbg_halt_state_f, mpc_debug_halt_req_sync_f, mpc_debug_run_req_sync_f, mpc_halt_state_f, mpc_halt_state_ns, mpc_run_state_f, debug_brkpt_status_f,
-         mpc_debug_halt_ack_f, mpc_debug_run_ack_f, dbg_run_state_f, mpc_debug_halt_req_sync_pulse,
-         mpc_debug_run_req_sync_pulse, debug_brkpt_valid, debug_halt_req, debug_resume_req, dec_tlu_mpc_halted_only_ns;
-   logic take_ext_int_start, ext_int_freeze, take_ext_int_start_d1, take_ext_int_start_d2,
-         take_ext_int_start_d3, ext_int_freeze_d1, csr_meicpct, ignore_ext_int_due_to_lsu_stall;
-   logic mcause_sel_nmi_store, mcause_sel_nmi_load, mcause_sel_nmi_ext, fast_int_meicpct;
-   logic [1:0] mcause_fir_error_type;
-   logic dbg_halt_req_held_ns, dbg_halt_req_held, dbg_halt_req_final;
-   logic iccm_repair_state_ns, iccm_repair_state_d1, iccm_repair_state_rfnpc;
-
-
-   // internal timer, isolated for size reasons
-   logic [31:0] dec_timer_rddata_d;
-   logic dec_timer_read_d, dec_timer_t0_pulse, dec_timer_t1_pulse;
-   logic csr_mitctl0;
-   logic csr_mitctl1;
-   logic csr_mitb0;
-   logic csr_mitb1;
-   logic csr_mitcnt0;
-   logic csr_mitcnt1;
-
-   logic nmi_int_sync, timer_int_sync, soft_int_sync, i_cpu_halt_req_sync, i_cpu_run_req_sync, mpc_debug_halt_req_sync, mpc_debug_run_req_sync, mpc_debug_halt_req_sync_raw;
-   logic csr_wr_clk;
-   logic e4e5_clk, e4_valid, e5_valid, e4e5_valid, internal_dbg_halt_mode_f, internal_dbg_halt_mode_f2;
-   logic lsu_pmu_load_external_r, lsu_pmu_store_external_r;
-   logic dec_tlu_flush_noredir_r_d1, dec_tlu_flush_pause_r_d1;
-   logic lsu_single_ecc_error_r;
-   logic [31:0] lsu_error_pkt_addr_r;
-   logic mcyclel_cout_in;
-   logic i0_valid_no_ebreak_ecall_r;
-   logic minstret_enable_f;
-   logic sel_exu_npc_r, sel_flush_npc_r, sel_hold_npc_r;
-   logic pc0_valid_r;
-   logic [15:0] mfdc_int, mfdc_ns;
-   logic [31:0] mrac_in;
-   logic [31:27] csr_sat;
-   logic [8:6] dcsr_cause;
-   logic enter_debug_halt_req_le, dcsr_cause_upgradeable;
-   logic icache_rd_valid, icache_wr_valid, icache_rd_valid_f, icache_wr_valid_f;
-   logic [3:0]      mhpmc_inc_r, mhpmc_inc_r_d1;
-
-   logic [3:0][9:0] mhpme_vec;
-   logic            mhpmc3_wr_en0, mhpmc3_wr_en1, mhpmc3_wr_en;
-   logic            mhpmc4_wr_en0, mhpmc4_wr_en1, mhpmc4_wr_en;
-   logic            mhpmc5_wr_en0, mhpmc5_wr_en1, mhpmc5_wr_en;
-   logic            mhpmc6_wr_en0, mhpmc6_wr_en1, mhpmc6_wr_en;
-   logic            mhpmc3h_wr_en0, mhpmc3h_wr_en;
-   logic            mhpmc4h_wr_en0, mhpmc4h_wr_en;
-   logic            mhpmc5h_wr_en0, mhpmc5h_wr_en;
-   logic            mhpmc6h_wr_en0, mhpmc6h_wr_en;
-   logic [63:0]     mhpmc3_incr, mhpmc4_incr, mhpmc5_incr, mhpmc6_incr;
-   logic perfcnt_halted_d1, zero_event_r;
-   logic [3:0] perfcnt_during_sleep;
-   logic [9:0] event_r;
-
-   eb1_inst_pkt_t pmu_i0_itype_qual;
-
-   logic csr_mfdht;
-   logic csr_mfdhs;
-   logic csr_misa;
-   logic csr_mvendorid;
-   logic csr_marchid;
-   logic csr_mimpid;
-   logic csr_mhartid;
-   logic csr_mstatus;
-   logic csr_mtvec;
-   logic csr_mip;
-   logic csr_mie;
-   logic csr_mcyclel;
-   logic csr_mcycleh;
-   logic csr_minstretl;
-   logic csr_minstreth;
-   logic csr_mscratch;
-   logic csr_mepc;
-   logic csr_mcause;
-   logic csr_mscause;
-   logic csr_mtval;
-   logic csr_mrac;
-   logic csr_dmst;
-   logic csr_mdseac;
-   logic csr_meihap;
-   logic csr_meivt;
-   logic csr_meipt;
-   logic csr_meicurpl;
-   logic csr_meicidpl;
-   logic csr_dcsr;
-   logic csr_mcgc;
-   logic csr_mfdc;
-   logic csr_dpc;
-   logic csr_mtsel;
-   logic csr_mtdata1;
-   logic csr_mtdata2;
-   logic csr_mhpmc3;
-   logic csr_mhpmc4;
-   logic csr_mhpmc5;
-   logic csr_mhpmc6;
-   logic csr_mhpmc3h;
-   logic csr_mhpmc4h;
-   logic csr_mhpmc5h;
-   logic csr_mhpmc6h;
-   logic csr_mhpme3;
-   logic csr_mhpme4;
-   logic csr_mhpme5;
-   logic csr_mhpme6;
-   logic csr_mcountinhibit;
-   logic csr_mpmc;
-   logic csr_micect;
-   logic csr_miccmect;
-   logic csr_mdccmect;
-   logic csr_dicawics;
-   logic csr_dicad0h;
-   logic csr_dicad0;
-   logic csr_dicad1;
-   logic csr_dicago;
-   logic presync;
-   logic postsync;
-   logic legal;
-   logic dec_csr_wen_r_mod;
-
-   logic flush_clkvalid;
-   logic sel_fir_addr;
-   logic wr_mie_r;
-   logic mtval_capture_pc_r;
-   logic mtval_capture_pc_plus2_r;
-   logic mtval_capture_inst_r;
-   logic mtval_capture_lsu_r;
-   logic mtval_clear_r;
-   logic wr_mcgc_r;
-   logic wr_mfdc_r;
-   logic wr_mdeau_r;
-   logic trigger_hit_for_dscr_cause_r_d1;
-   logic conditionally_illegal;
-
-   logic  [3:0] ifu_mscause ;
-   logic        ifu_ic_error_start_f, ifu_iccm_rd_ecc_single_err_f;
-
-   eb1_dec_timer_ctl  #(.pt(pt)) int_timers(.*);
-   // end of internal timers
-
-   assign clk_override = dec_tlu_dec_clk_override;
-
-   // Async inputs to the core have to be sync'd to the core clock.
-   rvsyncss #(7) syncro_ff(.*,
-                           .clk(free_clk),
-                           .din ({nmi_int,      timer_int,      soft_int,      i_cpu_halt_req,      i_cpu_run_req,      mpc_debug_halt_req,          mpc_debug_run_req}),
-                           .dout({nmi_int_sync, timer_int_sync, soft_int_sync, i_cpu_halt_req_sync, i_cpu_run_req_sync, mpc_debug_halt_req_sync_raw, mpc_debug_run_req_sync}));
-
-   // for CSRs that have inpipe writes only
-
-   rvoclkhdr csrwr_r_cgc   ( .en(dec_csr_wen_r_mod | clk_override), .l1clk(csr_wr_clk), .* );
-
-   assign e4_valid = dec_tlu_i0_valid_r;
-   assign e4e5_valid = e4_valid | e5_valid;
-   assign flush_clkvalid = internal_dbg_halt_mode_f | i_cpu_run_req_d1 | interrupt_valid_r | interrupt_valid_r_d1 |
-                           reset_delayed | pause_expired_r | pause_expired_wb | ic_perr_r | iccm_sbecc_r |
-                           clk_override;
-   rvoclkhdr e4e5_cgc     ( .en(e4e5_valid | clk_override), .l1clk(e4e5_clk), .* );
-   rvoclkhdr e4e5_int_cgc ( .en(e4e5_valid | flush_clkvalid), .l1clk(e4e5_int_clk), .* );
-
-   rvdffie #(11)  freeff (.*, .clk(free_l2clk),
-                          .din ({ifu_ic_error_start, ifu_iccm_rd_ecc_single_err, iccm_repair_state_ns, e4_valid, internal_dbg_halt_mode,
-                                 lsu_pmu_load_external_m, lsu_pmu_store_external_m, tlu_flush_lower_r,  tlu_i0_kill_writeb_r,
-                                 internal_dbg_halt_mode_f, force_halt}),
-                          .dout({ifu_ic_error_start_f, ifu_iccm_rd_ecc_single_err_f, iccm_repair_state_d1, e5_valid, internal_dbg_halt_mode_f,
-                                 lsu_pmu_load_external_r, lsu_pmu_store_external_r, tlu_flush_lower_r_d1, dec_tlu_i0_kill_writeb_wb,
-                                 internal_dbg_halt_mode_f2, dec_tlu_force_halt}));
-
-   assign dec_tlu_i0_kill_writeb_r = tlu_i0_kill_writeb_r;
-
-   assign nmi_int_detected = (nmi_int_sync & ~nmi_int_delayed) | nmi_lsu_detected | (nmi_int_detected_f & ~take_nmi_r_d1) | nmi_fir_type;
-   // if the first nmi is a lsu type, note it. If there's already an nmi pending, ignore. Simultaneous with FIR, drop.
-   assign nmi_lsu_load_type  = (nmi_lsu_detected & lsu_imprecise_error_load_any &  ~(nmi_int_detected_f & ~take_nmi_r_d1)) |
-                               (nmi_lsu_load_type_f  & ~take_nmi_r_d1);
-   assign nmi_lsu_store_type = (nmi_lsu_detected & lsu_imprecise_error_store_any & ~(nmi_int_detected_f & ~take_nmi_r_d1)) |
-                               (nmi_lsu_store_type_f & ~take_nmi_r_d1);
-
-   assign nmi_fir_type = ~nmi_int_detected_f & take_ext_int_start_d3 & |lsu_fir_error[1:0];
-
-   // Filter subsequent bus errors after the first, until the lock on MDSEAC is cleared
-   assign nmi_lsu_detected = ~mdseac_locked_f & (lsu_imprecise_error_load_any | lsu_imprecise_error_store_any) & ~nmi_fir_type;
-
-
-localparam MSTATUS_MIE   = 0;
-localparam MIP_MCEIP     = 5;
-localparam MIP_MITIP0    = 4;
-localparam MIP_MITIP1    = 3;
-localparam MIP_MEIP      = 2;
-localparam MIP_MTIP      = 1;
-localparam MIP_MSIP      = 0;
-
-localparam MIE_MCEIE     = 5;
-localparam MIE_MITIE0    = 4;
-localparam MIE_MITIE1    = 3;
-localparam MIE_MEIE      = 2;
-localparam MIE_MTIE      = 1;
-localparam MIE_MSIE      = 0;
-
-localparam DCSR_EBREAKM  = 15;
-localparam DCSR_STEPIE   = 11;
-localparam DCSR_STOPC    = 10;
-localparam DCSR_STEP     = 2;
-
-
-   assign reset_delayed = reset_detect ^ reset_detected;
-
-   // ----------------------------------------------------------------------
-   // MPC halt
-   // - can interact with debugger halt and v-v
-
-   // fast ints in progress have priority
-   assign mpc_debug_halt_req_sync = mpc_debug_halt_req_sync_raw & ~ext_int_freeze_d1;
-
-    rvdffie #(16)  mpvhalt_ff (.*, .clk(free_l2clk),
-                                 .din({1'b1, reset_detect,
-                                       nmi_int_sync, nmi_int_detected, nmi_lsu_load_type, nmi_lsu_store_type,
-                                       mpc_debug_halt_req_sync, mpc_debug_run_req_sync,
-                                       mpc_halt_state_ns, mpc_run_state_ns, debug_brkpt_status_ns,
-                                       mpc_debug_halt_ack_ns, mpc_debug_run_ack_ns,
-                                       dbg_halt_state_ns, dbg_run_state_ns,
-                                       dec_tlu_mpc_halted_only_ns}),
-                                .dout({reset_detect, reset_detected,
-                                       nmi_int_delayed, nmi_int_detected_f, nmi_lsu_load_type_f, nmi_lsu_store_type_f,
-                                       mpc_debug_halt_req_sync_f, mpc_debug_run_req_sync_f,
-                                       mpc_halt_state_f, mpc_run_state_f, debug_brkpt_status_f,
-                                       mpc_debug_halt_ack_f, mpc_debug_run_ack_f,
-                                       dbg_halt_state_f, dbg_run_state_f,
-                                       dec_tlu_mpc_halted_only}));
-
-   // turn level sensitive requests into pulses
-   assign mpc_debug_halt_req_sync_pulse = mpc_debug_halt_req_sync & ~mpc_debug_halt_req_sync_f;
-   assign mpc_debug_run_req_sync_pulse = mpc_debug_run_req_sync & ~mpc_debug_run_req_sync_f;
-
-   // states
-   assign mpc_halt_state_ns = (mpc_halt_state_f | mpc_debug_halt_req_sync_pulse | (reset_delayed & ~mpc_reset_run_req)) & ~mpc_debug_run_req_sync;
-   assign mpc_run_state_ns = (mpc_run_state_f | (mpc_debug_run_req_sync_pulse & ~mpc_debug_run_ack_f)) & (internal_dbg_halt_mode_f & ~dcsr_single_step_running_f);
-
-   // note, MPC halt can allow the jtag debugger to just start sending commands. When that happens, set the interal debugger halt state to prevent
-   // MPC run from starting the core.
-   assign dbg_halt_state_ns = (dbg_halt_state_f | (dbg_halt_req_final | dcsr_single_step_done_f | trigger_hit_dmode_r_d1 | ebreak_to_debug_mode_r_d1)) & ~dbg_resume_req;
-   assign dbg_run_state_ns = (dbg_run_state_f | dbg_resume_req) & (internal_dbg_halt_mode_f & ~dcsr_single_step_running_f);
-
-   // tell dbg we are only MPC halted
-   assign dec_tlu_mpc_halted_only_ns = ~dbg_halt_state_f & mpc_halt_state_f;
-
-   // this asserts from detection of bkpt until after we leave debug mode
-   assign debug_brkpt_valid = ebreak_to_debug_mode_r_d1 | trigger_hit_dmode_r_d1;
-   assign debug_brkpt_status_ns = (debug_brkpt_valid | debug_brkpt_status_f) & (internal_dbg_halt_mode & ~dcsr_single_step_running_f);
-
-   // acks back to interface
-   assign mpc_debug_halt_ack_ns = mpc_halt_state_f & internal_dbg_halt_mode_f & mpc_debug_halt_req_sync & core_empty;
-   assign mpc_debug_run_ack_ns = (mpc_debug_run_req_sync & ~dbg_halt_state_ns & ~mpc_debug_halt_req_sync) | (mpc_debug_run_ack_f & mpc_debug_run_req_sync) ;
-
-   // Pins
-   assign mpc_debug_halt_ack = mpc_debug_halt_ack_f;
-   assign mpc_debug_run_ack = mpc_debug_run_ack_f;
-   assign debug_brkpt_status = debug_brkpt_status_f;
-
-   // DBG halt req is a pulse, fast ext int in progress has priority
-   assign dbg_halt_req_held_ns = (dbg_halt_req | dbg_halt_req_held) & ext_int_freeze_d1;
-   assign dbg_halt_req_final = (dbg_halt_req | dbg_halt_req_held) & ~ext_int_freeze_d1;
-
-   // combine MPC and DBG halt requests
-   assign debug_halt_req = (dbg_halt_req_final | mpc_debug_halt_req_sync | (reset_delayed & ~mpc_reset_run_req)) & ~internal_dbg_halt_mode_f & ~ext_int_freeze_d1;
-
-   assign debug_resume_req = ~debug_resume_req_f &  // squash back to back resumes
-                             ((mpc_run_state_ns & ~dbg_halt_state_ns) |  // MPC run req
-                              (dbg_run_state_ns & ~mpc_halt_state_ns)); // dbg request is a pulse
-
-
-   // HALT
-   // dbg/pmu/fw requests halt, service as soon as lsu is not blocking interrupts
-   assign take_halt = (debug_halt_req_f | pmu_fw_halt_req_f) & ~synchronous_flush_r & ~mret_r & ~halt_taken_f & ~dec_tlu_flush_noredir_r_d1 & ~take_reset;
-
-   // hold after we take a halt, so we don't keep taking halts
-   assign halt_taken = (dec_tlu_flush_noredir_r_d1 & ~dec_tlu_flush_pause_r_d1 & ~take_ext_int_start_d1) | (halt_taken_f & ~dbg_tlu_halted_f & ~pmu_fw_tlu_halted_f & ~interrupt_valid_r_d1);
-
-   // After doing halt flush (RFNPC) wait until core is idle before asserting a particular halt mode
-   // It takes a cycle for mb_empty to assert after a fetch, take_halt covers that cycle
-   assign core_empty = force_halt |
-                       (lsu_idle_any & lsu_idle_any_f & ifu_miss_state_idle & ifu_miss_state_idle_f & ~debug_halt_req & ~debug_halt_req_d1 & ~dec_div_active);
-
-   assign dec_tlu_core_empty = core_empty;
-
-//--------------------------------------------------------------------------------
-// Debug start
-//
-
-   assign enter_debug_halt_req = (~internal_dbg_halt_mode_f & debug_halt_req) | dcsr_single_step_done_f | trigger_hit_dmode_r_d1 | ebreak_to_debug_mode_r_d1;
-
-   // dbg halt state active from request until non-step resume
-   assign internal_dbg_halt_mode = debug_halt_req_ns | (internal_dbg_halt_mode_f & ~(debug_resume_req_f & ~dcsr[DCSR_STEP]));
-   // dbg halt can access csrs as long as we are not stepping
-   assign allow_dbg_halt_csr_write = internal_dbg_halt_mode_f & ~dcsr_single_step_running_f;
-
-
-   // hold debug_halt_req_ns high until we enter debug halt
-   assign debug_halt_req_ns = enter_debug_halt_req | (debug_halt_req_f & ~dbg_tlu_halted);
-
-   assign dbg_tlu_halted = (debug_halt_req_f & core_empty & halt_taken) | (dbg_tlu_halted_f & ~debug_resume_req_f);
-
-   assign resume_ack_ns = (debug_resume_req_f & dbg_tlu_halted_f & dbg_run_state_ns);
-
-   assign dcsr_single_step_done = dec_tlu_i0_valid_r & ~dec_tlu_dbg_halted & dcsr[DCSR_STEP] & ~rfpc_i0_r;
-
-   assign dcsr_single_step_running = (debug_resume_req_f & dcsr[DCSR_STEP]) | (dcsr_single_step_running_f & ~dcsr_single_step_done_f);
-
-   assign dbg_cmd_done_ns = dec_tlu_i0_valid_r & dec_tlu_dbg_halted;
-
-   // used to hold off commits after an in-pipe debug mode request (triggers, DCSR)
-   assign request_debug_mode_r = (trigger_hit_dmode_r | ebreak_to_debug_mode_r) | (request_debug_mode_r_d1 & ~dec_tlu_flush_lower_wb);
-
-   assign request_debug_mode_done = (request_debug_mode_r_d1 | request_debug_mode_done_f) & ~dbg_tlu_halted_f;
-
-    rvdffie #(18)  halt_ff (.*, .clk(free_l2clk),
-                          .din({dec_tlu_flush_noredir_r, halt_taken, lsu_idle_any, ifu_miss_state_idle, dbg_tlu_halted,
-                                resume_ack_ns, debug_halt_req_ns, debug_resume_req, trigger_hit_dmode_r,
-                                dcsr_single_step_done, debug_halt_req, dec_tlu_wr_pause_r, dec_pause_state,
-                                request_debug_mode_r, request_debug_mode_done, dcsr_single_step_running, dec_tlu_flush_pause_r,
-                                dbg_halt_req_held_ns}),
-                          .dout({dec_tlu_flush_noredir_r_d1, halt_taken_f, lsu_idle_any_f, ifu_miss_state_idle_f, dbg_tlu_halted_f,
-                                 dec_tlu_resume_ack , debug_halt_req_f, debug_resume_req_f_raw, trigger_hit_dmode_r_d1,
-                                 dcsr_single_step_done_f, debug_halt_req_d1, dec_tlu_wr_pause_r_d1, dec_pause_state_f,
-                                 request_debug_mode_r_d1, request_debug_mode_done_f, dcsr_single_step_running_f, dec_tlu_flush_pause_r_d1,
-                                 dbg_halt_req_held}));
-
-   // MPC run collides with DBG halt, fix it here
-   assign debug_resume_req_f = debug_resume_req_f_raw & ~dbg_halt_req;
-
-   assign dec_tlu_debug_stall = debug_halt_req_f;
-   assign dec_tlu_dbg_halted = dbg_tlu_halted_f;
-   assign dec_tlu_debug_mode = internal_dbg_halt_mode_f;
-   assign dec_tlu_pmu_fw_halted = pmu_fw_tlu_halted_f;
-
-   // kill fetch redirection on flush if going to halt, or if there's a fence during db-halt
-   assign dec_tlu_flush_noredir_r = take_halt | (fence_i_r & internal_dbg_halt_mode) | dec_tlu_flush_pause_r | (i0_trigger_hit_r & trigger_hit_dmode_r) | take_ext_int_start;
-
-   assign dec_tlu_flush_extint = take_ext_int_start;
-
-   // 1 cycle after writing the PAUSE counter, flush with noredir to idle F1-D.
-   assign dec_tlu_flush_pause_r = dec_tlu_wr_pause_r_d1 & ~interrupt_valid_r & ~take_ext_int_start;
-
-   // detect end of pause counter and rfpc
-   assign pause_expired_r = ~dec_pause_state & dec_pause_state_f & ~(ext_int_ready | ce_int_ready | timer_int_ready | soft_int_ready | int_timer0_int_hold_f | int_timer1_int_hold_f | nmi_int_detected | ext_int_freeze_d1) & ~interrupt_valid_r_d1 & ~debug_halt_req_f & ~pmu_fw_halt_req_f & ~halt_taken_f;
-
-   assign dec_tlu_flush_leak_one_r = dec_tlu_flush_lower_r  & dcsr[DCSR_STEP] & (dec_tlu_resume_ack | dcsr_single_step_running) & ~dec_tlu_flush_noredir_r;
-   assign dec_tlu_flush_err_r = dec_tlu_flush_lower_r & (ic_perr_r | iccm_sbecc_r);
-
-   // If DM attempts to access an illegal CSR, send cmd_fail back
-   assign dec_dbg_cmd_done = dbg_cmd_done_ns;
-   assign dec_dbg_cmd_fail = illegal_r & dec_dbg_cmd_done;
-
-
-   //--------------------------------------------------------------------------------
-   //--------------------------------------------------------------------------------
-   // Triggers
-   //
-localparam MTDATA1_DMODE             = 9;
-localparam MTDATA1_SEL   = 7;
-localparam MTDATA1_ACTION            = 6;
-localparam MTDATA1_CHAIN             = 5;
-localparam MTDATA1_MATCH             = 4;
-localparam MTDATA1_M_ENABLED         = 3;
-localparam MTDATA1_EXE   = 2;
-localparam MTDATA1_ST    = 1;
-localparam MTDATA1_LD    = 0;
-
-   // Prioritize trigger hits with other exceptions.
-   //
-   // Trigger should have highest priority except:
-   // - trigger is an execute-data and there is an inst_access exception (lsu triggers won't fire, inst. is nop'd by decode)
-   // - trigger is a store-data and there is a lsu_acc_exc or lsu_ma_exc.
-   assign trigger_execute[3:0] = {mtdata1_t3[MTDATA1_EXE], mtdata1_t2[MTDATA1_EXE], mtdata1_t1[MTDATA1_EXE], mtdata1_t0[MTDATA1_EXE]};
-   assign trigger_data[3:0] = {mtdata1_t3[MTDATA1_SEL], mtdata1_t2[MTDATA1_SEL], mtdata1_t1[MTDATA1_SEL], mtdata1_t0[MTDATA1_SEL]};
-   assign trigger_store[3:0] = {mtdata1_t3[MTDATA1_ST], mtdata1_t2[MTDATA1_ST], mtdata1_t1[MTDATA1_ST], mtdata1_t0[MTDATA1_ST]};
-
-   // MSTATUS[MIE] needs to be on to take triggers unless the action is trigger to debug mode.
-   assign trigger_enabled[3:0] = {(mtdata1_t3[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t3[MTDATA1_M_ENABLED],
-                                  (mtdata1_t2[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t2[MTDATA1_M_ENABLED],
-                                  (mtdata1_t1[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t1[MTDATA1_M_ENABLED],
-                                  (mtdata1_t0[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t0[MTDATA1_M_ENABLED]};
-
-   // iside exceptions are always in i0
-   assign i0_iside_trigger_has_pri_r[3:0]  = ~( (trigger_execute[3:0] & trigger_data[3:0] & {4{inst_acc_r_raw}}) | // exe-data with inst_acc
-                                                ({4{exu_i0_br_error_r | exu_i0_br_start_error_r}}));               // branch error in i0
-
-   // lsu excs have to line up with their respective triggers since the lsu op can be i0
-   assign i0_lsu_trigger_has_pri_r[3:0] = ~(trigger_store[3:0] & trigger_data[3:0] & {4{lsu_i0_exc_r_raw}});
-
-   // trigger hits have to be eval'd to cancel side effect lsu ops even though the pipe is already frozen
-   assign i0_trigger_eval_r = dec_tlu_i0_valid_r;
-
-   assign i0trigger_qual_r[3:0] = {4{i0_trigger_eval_r}} & dec_tlu_packet_r.i0trigger[3:0] & i0_iside_trigger_has_pri_r[3:0] & i0_lsu_trigger_has_pri_r[3:0] & trigger_enabled[3:0];
-
-   // Qual trigger hits
-   assign i0_trigger_r[3:0] = ~{4{dec_tlu_flush_lower_wb | dec_tlu_dbg_halted}} & i0trigger_qual_r[3:0];
-
-   // chaining can mask raw trigger info
-   assign i0_trigger_chain_masked_r[3:0]  = {i0_trigger_r[3] & (~mtdata1_t2[MTDATA1_CHAIN] | i0_trigger_r[2]),
-                                             i0_trigger_r[2] & (~mtdata1_t2[MTDATA1_CHAIN] | i0_trigger_r[3]),
-                                             i0_trigger_r[1] & (~mtdata1_t0[MTDATA1_CHAIN] | i0_trigger_r[0]),
-                                             i0_trigger_r[0] & (~mtdata1_t0[MTDATA1_CHAIN] | i0_trigger_r[1])};
-
-   // This is the highest priority by this point.
-   assign i0_trigger_hit_raw_r = |i0_trigger_chain_masked_r[3:0];
-
-   assign i0_trigger_hit_r = i0_trigger_hit_raw_r;
-
-   // Actions include breakpoint, or dmode. Dmode is only possible if the DMODE bit is set.
-   // Otherwise, take a breakpoint.
-   assign trigger_action[3:0] = {mtdata1_t3[MTDATA1_ACTION] & mtdata1_t3[MTDATA1_DMODE],
-                                 mtdata1_t2[MTDATA1_ACTION] & mtdata1_t2[MTDATA1_DMODE] & ~mtdata1_t2[MTDATA1_CHAIN],
-                                 mtdata1_t1[MTDATA1_ACTION] & mtdata1_t1[MTDATA1_DMODE],
-                                 mtdata1_t0[MTDATA1_ACTION] & mtdata1_t0[MTDATA1_DMODE] & ~mtdata1_t0[MTDATA1_CHAIN]};
-
-   // this is needed to set the HIT bit in the triggers
-   assign update_hit_bit_r[3:0] = ({4{|i0_trigger_r[3:0] & ~rfpc_i0_r}} & {i0_trigger_chain_masked_r[3], i0_trigger_r[2], i0_trigger_chain_masked_r[1], i0_trigger_r[0]});
-
-   // action, 1 means dmode. Simultaneous triggers with at least 1 set for dmode force entire action to dmode.
-   assign i0_trigger_action_r = |(i0_trigger_chain_masked_r[3:0] & trigger_action[3:0]);
-
-   assign trigger_hit_dmode_r = (i0_trigger_hit_r & i0_trigger_action_r);
-
-   assign mepc_trigger_hit_sel_pc_r = i0_trigger_hit_r & ~trigger_hit_dmode_r;
-
-
-//
-// Debug end
-//--------------------------------------------------------------------------------
-
-   //----------------------------------------------------------------------
-   //
-   // Commit
-   //
-   //----------------------------------------------------------------------
-
-
-
-   //--------------------------------------------------------------------------------
-   // External halt (not debug halt)
-   // - Fully interlocked handshake
-   // i_cpu_halt_req  ____|--------------|_______________
-   // core_empty      ---------------|___________
-   // o_cpu_halt_ack  _________________|----|__________
-   // o_cpu_halt_status _______________|---------------------|_________
-   // i_cpu_run_req                              ______|----------|____
-   // o_cpu_run_ack                              ____________|------|________
-   //
-
-
-   // debug mode has priority, ignore PMU/FW halt/run while in debug mode
-   assign i_cpu_halt_req_sync_qual = i_cpu_halt_req_sync & ~dec_tlu_debug_mode & ~ext_int_freeze_d1;
-   assign i_cpu_run_req_sync_qual = i_cpu_run_req_sync & ~dec_tlu_debug_mode & pmu_fw_tlu_halted_f & ~ext_int_freeze_d1;
-
-   rvdffie #(10) exthaltff (.*, .clk(free_l2clk), .din({i_cpu_halt_req_sync_qual, i_cpu_run_req_sync_qual,   cpu_halt_status,
-                                                   cpu_halt_ack,   cpu_run_ack, internal_pmu_fw_halt_mode,
-                                                   pmu_fw_halt_req_ns, pmu_fw_tlu_halted,
-                                                   int_timer0_int_hold, int_timer1_int_hold}),
-                                            .dout({i_cpu_halt_req_d1,        i_cpu_run_req_d1_raw,      o_cpu_halt_status,
-                                                   o_cpu_halt_ack, o_cpu_run_ack, internal_pmu_fw_halt_mode_f,
-                                                   pmu_fw_halt_req_f, pmu_fw_tlu_halted_f,
-                                                   int_timer0_int_hold_f, int_timer1_int_hold_f}));
-
-   // only happens if we aren't in dgb_halt
-   assign ext_halt_pulse = i_cpu_halt_req_sync_qual & ~i_cpu_halt_req_d1;
-
-   assign enter_pmu_fw_halt_req =  ext_halt_pulse | fw_halt_req;
-
-   assign pmu_fw_halt_req_ns = (enter_pmu_fw_halt_req | (pmu_fw_halt_req_f & ~pmu_fw_tlu_halted)) & ~debug_halt_req_f;
-
-   assign internal_pmu_fw_halt_mode = pmu_fw_halt_req_ns | (internal_pmu_fw_halt_mode_f & ~i_cpu_run_req_d1 & ~debug_halt_req_f);
-
-   // debug halt has priority
-   assign pmu_fw_tlu_halted = ((pmu_fw_halt_req_f & core_empty & halt_taken & ~enter_debug_halt_req) | (pmu_fw_tlu_halted_f & ~i_cpu_run_req_d1)) & ~debug_halt_req_f;
-
-   assign cpu_halt_ack = (i_cpu_halt_req_d1 & pmu_fw_tlu_halted_f) | (o_cpu_halt_ack & i_cpu_halt_req_sync);
-   assign cpu_halt_status = (pmu_fw_tlu_halted_f & ~i_cpu_run_req_d1) | (o_cpu_halt_status & ~i_cpu_run_req_d1 & ~internal_dbg_halt_mode_f);
-   assign cpu_run_ack = (~pmu_fw_tlu_halted_f & i_cpu_run_req_sync) | (o_cpu_halt_status & i_cpu_run_req_d1_raw) | (o_cpu_run_ack & i_cpu_run_req_sync);
-   assign debug_mode_status = internal_dbg_halt_mode_f;
-   assign o_debug_mode_status = debug_mode_status;
-
-
-   // high priority interrupts can wakeup from external halt, so can unmasked timer interrupts
-   assign i_cpu_run_req_d1 = i_cpu_run_req_d1_raw | ((nmi_int_detected | timer_int_ready | soft_int_ready | int_timer0_int_hold_f | int_timer1_int_hold_f | (mhwakeup & mhwakeup_ready)) & o_cpu_halt_status & ~i_cpu_halt_req_d1);
-
-   //--------------------------------------------------------------------------------
-   //--------------------------------------------------------------------------------
-
-   assign lsu_single_ecc_error_r = lsu_single_ecc_error_incr;
-
-   assign lsu_error_pkt_addr_r[31:0] = lsu_error_pkt_r.addr[31:0];
-
-
-   assign lsu_exc_valid_r_raw = lsu_error_pkt_r.exc_valid & ~dec_tlu_flush_lower_wb;
-
-   assign lsu_i0_exc_r_raw =  lsu_error_pkt_r.exc_valid;
-
-   assign lsu_i0_exc_r = lsu_i0_exc_r_raw & lsu_exc_valid_r_raw & ~i0_trigger_hit_r & ~rfpc_i0_r;
-
-   assign lsu_exc_valid_r = lsu_i0_exc_r;
-
-   assign lsu_exc_ma_r  =  lsu_i0_exc_r & ~lsu_error_pkt_r.exc_type;
-   assign lsu_exc_acc_r =  lsu_i0_exc_r & lsu_error_pkt_r.exc_type;
-   assign lsu_exc_st_r  =  lsu_i0_exc_r & lsu_error_pkt_r.inst_type;
-
-   // Single bit ECC errors on loads are RFNPC corrected, with the corrected data written to the GPR.
-   // LSU turns the load into a store and patches the data in the DCCM
-   assign lsu_i0_rfnpc_r = dec_tlu_i0_valid_r & ~i0_trigger_hit_r &
-                           (~lsu_error_pkt_r.inst_type & lsu_error_pkt_r.single_ecc_error);
-
-   //  Final commit valids
-   assign tlu_i0_commit_cmt = dec_tlu_i0_valid_r &
-                              ~rfpc_i0_r &
-                              ~lsu_i0_exc_r &
-                              ~inst_acc_r &
-                              ~dec_tlu_dbg_halted &
-                              ~request_debug_mode_r_d1 &
-                              ~i0_trigger_hit_r;
-
-   // unified place to manage the killing of arch state writebacks
-   assign tlu_i0_kill_writeb_r = rfpc_i0_r | lsu_i0_exc_r | inst_acc_r | (illegal_r & dec_tlu_dbg_halted) | i0_trigger_hit_r;
-   assign dec_tlu_i0_commit_cmt = tlu_i0_commit_cmt;
-
-
-   // refetch PC, microarch flush
-   // ic errors only in pipe0
-   assign rfpc_i0_r =  ((dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1 & (exu_i0_br_error_r | exu_i0_br_start_error_r)) | // inst commit with rfpc
-                        ((ic_perr_r | iccm_sbecc_r) & ~ext_int_freeze_d1)) & // ic/iccm without inst commit
-                       ~i0_trigger_hit_r & // unless there's a trigger. Err signal to ic/iccm will assert anyway to clear the error.
-                       ~lsu_i0_rfnpc_r;
-
-   // From the indication of a iccm single bit error until the first commit or flush, maintain a repair state. In the repair state, rfnpc i0 commits.
-   assign iccm_repair_state_ns = iccm_sbecc_r | (iccm_repair_state_d1 & ~dec_tlu_flush_lower_r);
-
-
-   localparam MCPC          = 12'h7c2;
-
-   // this is a flush of last resort, meaning only assert it if there is no other flush happening.
-   assign iccm_repair_state_rfnpc = tlu_i0_commit_cmt & iccm_repair_state_d1 &
-                                    ~(ebreak_r | ecall_r | mret_r | take_reset | illegal_r | (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCPC)));
-
-if(pt.BTB_ENABLE==1) begin
-   // go ahead and repair the branch error on other flushes, doesn't have to be the rfpc flush
-   assign dec_tlu_br0_error_r = exu_i0_br_error_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1;
-   assign dec_tlu_br0_start_error_r = exu_i0_br_start_error_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1;
-   assign dec_tlu_br0_v_r = exu_i0_br_valid_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1 & (~exu_i0_br_mp_r | ~exu_pmu_i0_br_ataken);
-
-
-   assign dec_tlu_br0_r_pkt.hist[1:0] = exu_i0_br_hist_r[1:0];
-   assign dec_tlu_br0_r_pkt.br_error = dec_tlu_br0_error_r;
-   assign dec_tlu_br0_r_pkt.br_start_error = dec_tlu_br0_start_error_r;
-   assign dec_tlu_br0_r_pkt.valid = dec_tlu_br0_v_r;
-   assign dec_tlu_br0_r_pkt.way = exu_i0_br_way_r;
-   assign dec_tlu_br0_r_pkt.middle = exu_i0_br_middle_r;
-end // if (pt.BTB_ENABLE==1)
-else begin
-   assign dec_tlu_br0_error_r = '0;
-   assign dec_tlu_br0_start_error_r = '0;
-   assign dec_tlu_br0_v_r = '0;
-   assign dec_tlu_br0_r_pkt  = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-
-   // only expect these in pipe 0
-   assign       ebreak_r     =  (dec_tlu_packet_r.pmu_i0_itype == EBREAK)  & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~dcsr[DCSR_EBREAKM] & ~rfpc_i0_r;
-   assign       ecall_r      =  (dec_tlu_packet_r.pmu_i0_itype == ECALL)   & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign       illegal_r    =  ~dec_tlu_packet_r.legal   & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign       mret_r       =  (dec_tlu_packet_r.pmu_i0_itype == MRET)    & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   // fence_i includes debug only fence_i's
-   assign       fence_i_r    =  (dec_tlu_packet_r.fence_i & dec_tlu_i0_valid_r & ~i0_trigger_hit_r) & ~rfpc_i0_r;
-   assign       ic_perr_r    =  ifu_ic_error_start_f & ~ext_int_freeze_d1 & (~internal_dbg_halt_mode_f | dcsr_single_step_running) & ~internal_pmu_fw_halt_mode_f;
-   assign       iccm_sbecc_r =  ifu_iccm_rd_ecc_single_err_f & ~ext_int_freeze_d1 & (~internal_dbg_halt_mode_f | dcsr_single_step_running) & ~internal_pmu_fw_halt_mode_f;
-   assign       inst_acc_r_raw  =  dec_tlu_packet_r.icaf & dec_tlu_i0_valid_r;
-   assign       inst_acc_r = inst_acc_r_raw & ~rfpc_i0_r & ~i0_trigger_hit_r;
-   assign       inst_acc_second_r = dec_tlu_packet_r.icaf_second;
-
-   assign       ebreak_to_debug_mode_r = (dec_tlu_packet_r.pmu_i0_itype == EBREAK)  & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & dcsr[DCSR_EBREAKM] & ~rfpc_i0_r;
-
-   rvdff #(1)  exctype_wb_ff (.*, .clk(e4e5_clk),
-                                .din (ebreak_to_debug_mode_r   ),
-                                .dout(ebreak_to_debug_mode_r_d1));
-
-   assign dec_tlu_fence_i_r = fence_i_r;
-   //
-   // Exceptions
-   //
-   // - MEPC <- PC
-   // - PC <- MTVEC, assert flush_lower
-   // - MCAUSE <- cause
-   // - MSCAUSE <- secondary cause
-   // - MTVAL <-
-   // - MPIE <- MIE
-   // - MIE <- 0
-   //
-   assign i0_exception_valid_r = (ebreak_r | ecall_r | illegal_r | inst_acc_r) & ~rfpc_i0_r & ~dec_tlu_dbg_halted;
-
-   // Cause:
-   //
-   // 0x2 : illegal
-   // 0x3 : breakpoint
-   // 0xb : Environment call M-mode
-
-
-   assign exc_cause_r[4:0] =  ( ({5{take_ext_int}}        & 5'h0b) |
-                                ({5{take_timer_int}}      & 5'h07) |
-                                ({5{take_soft_int}}       & 5'h03) |
-                                ({5{take_int_timer0_int}} & 5'h1d) |
-                                ({5{take_int_timer1_int}} & 5'h1c) |
-                                ({5{take_ce_int}}         & 5'h1e) |
-                                ({5{illegal_r}}           & 5'h02) |
-                                ({5{ecall_r}}             & 5'h0b) |
-                                ({5{inst_acc_r}}          & 5'h01) |
-                                ({5{ebreak_r | i0_trigger_hit_r}}   & 5'h03) |
-                                ({5{lsu_exc_ma_r & ~lsu_exc_st_r}}  & 5'h04) |
-                                ({5{lsu_exc_acc_r & ~lsu_exc_st_r}} & 5'h05) |
-                                ({5{lsu_exc_ma_r & lsu_exc_st_r}}   & 5'h06) |
-                                ({5{lsu_exc_acc_r & lsu_exc_st_r}}  & 5'h07)
-                                ) & ~{5{take_nmi}};
-
-   //
-   // Interrupts
-   //
-   // exceptions that are committed have already happened and will cause an int at E4 to wait a cycle
-   // or more if MSTATUS[MIE] is cleared.
-   //
-   // -in priority order, highest to lowest
-   // -single cycle window where a csr write to MIE/MSTATUS is at E4 when the other conditions for externals are met.
-   //  Hold off externals for a cycle to make sure we are consistent with what was just written
-   assign mhwakeup_ready =  ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MEIP]   & mie_ns[MIE_MEIE];
-   assign ext_int_ready   = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MEIP]   & mie_ns[MIE_MEIE] & ~ignore_ext_int_due_to_lsu_stall;
-   assign ce_int_ready    = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MCEIP]  & mie_ns[MIE_MCEIE];
-   assign soft_int_ready  = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MSIP]   & mie_ns[MIE_MSIE];
-   assign timer_int_ready = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MTIP]   & mie_ns[MIE_MTIE];
-
-   // MIP for internal timers pulses for 1 clock, resets the timer counter. Mip won't hold past the various stall conditions.
-   assign int_timer0_int_possible = mstatus_mie_ns & mie_ns[MIE_MITIE0];
-   assign int_timer0_int_ready = mip[MIP_MITIP0] & int_timer0_int_possible;
-   assign int_timer1_int_possible = mstatus_mie_ns & mie_ns[MIE_MITIE1];
-   assign int_timer1_int_ready = mip[MIP_MITIP1] & int_timer1_int_possible;
-
-   // Internal timers pulse and reset. If core is PMU/FW halted, the pulse will cause an exit from halt, but won't stick around
-   // Make it sticky, also for 1 cycle stall conditions.
-   assign int_timer_stalled = dec_csr_stall_int_ff | synchronous_flush_r | exc_or_int_valid_r_d1 | mret_r;
-
-   assign int_timer0_int_hold = (int_timer0_int_ready & (pmu_fw_tlu_halted_f | int_timer_stalled)) | (int_timer0_int_possible & int_timer0_int_hold_f & ~interrupt_valid_r & ~take_ext_int_start & ~internal_dbg_halt_mode_f);
-   assign int_timer1_int_hold = (int_timer1_int_ready & (pmu_fw_tlu_halted_f | int_timer_stalled)) | (int_timer1_int_possible & int_timer1_int_hold_f & ~interrupt_valid_r & ~take_ext_int_start & ~internal_dbg_halt_mode_f);
-
-
-   assign internal_dbg_halt_timers = internal_dbg_halt_mode_f & ~dcsr_single_step_running;
-
-
-   assign block_interrupts = ( (internal_dbg_halt_mode & (~dcsr_single_step_running | dec_tlu_i0_valid_r)) | // No ints in db-halt unless we are single stepping
-                               internal_pmu_fw_halt_mode | i_cpu_halt_req_d1 |// No ints in PMU/FW halt. First we exit halt
-                               take_nmi | // NMI is top priority
-                               ebreak_to_debug_mode_r | // Heading to debug mode, hold off ints
-                               synchronous_flush_r | // exception flush this cycle
-                               exc_or_int_valid_r_d1 | // ext/int past cycle (need time for MIE to update)
-                               mret_r |    // mret in progress, for cases were ISR enables ints before mret
-                               ext_int_freeze_d1 // Fast interrupt in progress (optional)
-                               );
-
-
-if (pt.FAST_INTERRUPT_REDIRECT) begin
-
-
-   assign take_ext_int_start = ext_int_ready & ~block_interrupts;
-
-   assign ext_int_freeze = take_ext_int_start | take_ext_int_start_d1 | take_ext_int_start_d2 | take_ext_int_start_d3;
-   assign take_ext_int = take_ext_int_start_d3 & ~|lsu_fir_error[1:0];
-   assign fast_int_meicpct = csr_meicpct & dec_csr_any_unq_d;  // MEICPCT becomes illegal if fast ints are enabled
-
-   assign ignore_ext_int_due_to_lsu_stall = lsu_fastint_stall_any;
-end
-else begin
-   assign take_ext_int_start = 1'b0;
-   assign ext_int_freeze = 1'b0;
-   assign ext_int_freeze_d1 = 1'b0;
-   assign take_ext_int_start_d1 = 1'b0;
-   assign take_ext_int_start_d2 = 1'b0;
-   assign take_ext_int_start_d3 = 1'b0;
-   assign fast_int_meicpct = 1'b0;
-   assign ignore_ext_int_due_to_lsu_stall = 1'b0;
-
-   assign take_ext_int = ext_int_ready & ~block_interrupts;
-end
-
-   assign take_ce_int  = ce_int_ready & ~ext_int_ready & ~block_interrupts;
-   assign take_soft_int = soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_timer_int = timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_int_timer0_int = (int_timer0_int_ready | int_timer0_int_hold_f) & int_timer0_int_possible & ~dec_csr_stall_int_ff &
-                                ~timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_int_timer1_int = (int_timer1_int_ready | int_timer1_int_hold_f) & int_timer1_int_possible & ~dec_csr_stall_int_ff &
-                                ~(int_timer0_int_ready | int_timer0_int_hold_f) & ~timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-
-   assign take_reset = reset_delayed & mpc_reset_run_req;
-   assign take_nmi = nmi_int_detected & ~internal_pmu_fw_halt_mode & (~internal_dbg_halt_mode | (dcsr_single_step_running_f & dcsr[DCSR_STEPIE] & ~dec_tlu_i0_valid_r & ~dcsr_single_step_done_f)) &
-                     ~synchronous_flush_r & ~mret_r & ~take_reset & ~ebreak_to_debug_mode_r & (~ext_int_freeze_d1 | (take_ext_int_start_d3 & |lsu_fir_error[1:0]));
-
-   assign interrupt_valid_r = take_ext_int | take_timer_int | take_soft_int | take_nmi | take_ce_int | take_int_timer0_int | take_int_timer1_int;
-
-
-   // Compute interrupt path:
-   // If vectored async is set in mtvec, flush path for interrupts is MTVEC + (4 * CAUSE);
-   assign vectored_path[31:1]  = {mtvec[30:1], 1'b0} + {25'b0, exc_cause_r[4:0], 1'b0};
-   assign interrupt_path[31:1] = take_nmi ? nmi_vec[31:1] : ((mtvec[0] == 1'b1) ? vectored_path[31:1] : {mtvec[30:1], 1'b0});
-
-   assign sel_npc_r  = lsu_i0_rfnpc_r | fence_i_r | iccm_repair_state_rfnpc | (i_cpu_run_req_d1 & ~interrupt_valid_r) | (rfpc_i0_r & ~dec_tlu_i0_valid_r);
-   assign sel_npc_resume = (i_cpu_run_req_d1 & pmu_fw_tlu_halted_f) | pause_expired_r;
-
-   assign sel_fir_addr = take_ext_int_start_d3 & ~|lsu_fir_error[1:0];
-
-   assign synchronous_flush_r  = i0_exception_valid_r | // exception
-                                 rfpc_i0_r | // rfpc
-                                 lsu_exc_valid_r |  // lsu exception in either pipe 0 or pipe 1
-                                 fence_i_r |  // fence, a rfnpc
-                                 lsu_i0_rfnpc_r | // lsu dccm sb ecc
-                                 iccm_repair_state_rfnpc | // Iccm sb ecc
-                                 debug_resume_req_f | // resume from debug halt, fetch the dpc
-                                 sel_npc_resume |  // resume from pmu/fw halt, or from pause and fetch the NPC
-                                 dec_tlu_wr_pause_r_d1 | // flush at start of pause
-                                 i0_trigger_hit_r; // trigger hit, ebreak or goto debug mode
-
-   assign tlu_flush_lower_r = interrupt_valid_r | mret_r | synchronous_flush_r | take_halt | take_reset | take_ext_int_start;
-
-   assign tlu_flush_path_r[31:1] = take_reset ? rst_vec[31:1] :
-
-                                    ( ({31{sel_fir_addr}} & lsu_fir_addr[31:1]) |
-                                      ({31{~take_nmi & sel_npc_r}} & npc_r[31:1]) |
-                                      ({31{~take_nmi & rfpc_i0_r & dec_tlu_i0_valid_r & ~sel_npc_r}} & dec_tlu_i0_pc_r[31:1]) |
-                                      ({31{interrupt_valid_r & ~sel_fir_addr}} & interrupt_path[31:1]) |
-                                      ({31{(i0_exception_valid_r | lsu_exc_valid_r |
-                                            (i0_trigger_hit_r & ~trigger_hit_dmode_r)) & ~interrupt_valid_r & ~sel_fir_addr}} & {mtvec[30:1],1'b0}) |
-                                      ({31{~take_nmi & mret_r}} & mepc[31:1]) |
-                                      ({31{~take_nmi & debug_resume_req_f}} & dpc[31:1]) |
-                                      ({31{~take_nmi & sel_npc_resume}} & npc_r_d1[31:1]) );
-
-   rvdffpcie #(31)  flush_lower_ff (.*, .en(tlu_flush_lower_r),
-                                 .din({tlu_flush_path_r[31:1]}),
-                                 .dout({tlu_flush_path_r_d1[31:1]}));
-
-   assign dec_tlu_flush_lower_wb = tlu_flush_lower_r_d1;
-   assign dec_tlu_flush_lower_r = tlu_flush_lower_r;
-   assign dec_tlu_flush_path_r[31:1] = tlu_flush_path_r[31:1];
-
-
-   // this is used to capture mepc, etc.
-   assign exc_or_int_valid_r = lsu_exc_valid_r | i0_exception_valid_r | interrupt_valid_r | (i0_trigger_hit_r & ~trigger_hit_dmode_r);
-
-
-   rvdffie #(12)  excinfo_wb_ff (.*,
-                                 .din({interrupt_valid_r, i0_exception_valid_r, exc_or_int_valid_r,
-                                       exc_cause_r[4:0], tlu_i0_commit_cmt & ~illegal_r, i0_trigger_hit_r,
-                                       take_nmi, pause_expired_r }),
-                                 .dout({interrupt_valid_r_d1, i0_exception_valid_r_d1, exc_or_int_valid_r_d1,
-                                        exc_cause_wb[4:0], i0_valid_wb, trigger_hit_r_d1,
-                                        take_nmi_r_d1, pause_expired_wb}));
-
-   //----------------------------------------------------------------------
-   //
-   // CSRs
-   //
-   //----------------------------------------------------------------------
-
-
-   // ----------------------------------------------------------------------
-   // MISA (RO)
-   //  [31:30] XLEN - implementation width, 2'b01 - 32 bits
-   //  [12]    M    - integer mul/div
-   //  [8]     I    - RV32I
-   //  [2]     C    - Compressed extension
-   localparam MISA          = 12'h301;
-
-   // MVENDORID, MARCHID, MIMPID, MHARTID
-   localparam MVENDORID     = 12'hf11;
-   localparam MARCHID       = 12'hf12;
-   localparam MIMPID        = 12'hf13;
-   localparam MHARTID       = 12'hf14;
-
-
-   // ----------------------------------------------------------------------
-   // MSTATUS (RW)
-   // [12:11] MPP  : Prior priv level, always 2'b11, not flopped
-   // [7]     MPIE : Int enable previous [1]
-   // [3]     MIE  : Int enable          [0]
-   localparam MSTATUS       = 12'h300;
-
-
-   //When executing a MRET instruction, supposing MPP holds the value 3, MIE
-   //is set to MPIE; the privilege mode is changed to 3; MPIE is set to 1; and MPP is set to 3
-
-   assign dec_csr_wen_r_mod = dec_csr_wen_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign wr_mstatus_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSTATUS);
-
-   // set this even if we don't go to fwhalt due to debug halt. We committed the inst, so ...
-   assign set_mie_pmu_fw_halt = ~mpmc_b_ns[1] & fw_halt_req;
-
-   assign mstatus_ns[1:0] = ( ({2{~wr_mstatus_r & exc_or_int_valid_r}} & {mstatus[MSTATUS_MIE], 1'b0}) |
-                              ({2{ wr_mstatus_r & exc_or_int_valid_r}} & {dec_csr_wrdata_r[3], 1'b0}) |
-                              ({2{mret_r & ~exc_or_int_valid_r}} & {1'b1, mstatus[1]}) |
-                              ({2{set_mie_pmu_fw_halt}} & {mstatus[1], 1'b1}) |
-                              ({2{wr_mstatus_r & ~exc_or_int_valid_r}} & {dec_csr_wrdata_r[7], dec_csr_wrdata_r[3]}) |
-                              ({2{~wr_mstatus_r & ~exc_or_int_valid_r & ~mret_r & ~set_mie_pmu_fw_halt}} & mstatus[1:0]) );
-
-   // gate MIE if we are single stepping and DCSR[STEPIE] is off
-   assign mstatus_mie_ns = mstatus[MSTATUS_MIE] & (~dcsr_single_step_running_f | dcsr[DCSR_STEPIE]);
-
-   // ----------------------------------------------------------------------
-   // MTVEC (RW)
-   // [31:2] BASE : Trap vector base address
-   // [1] - Reserved, not implemented, reads zero
-   // [0]  MODE : 0 = Direct, 1 = Asyncs are vectored to BASE + (4 * CAUSE)
-   localparam MTVEC         = 12'h305;
-
-   assign wr_mtvec_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTVEC);
-   assign mtvec_ns[30:0] = {dec_csr_wrdata_r[31:2], dec_csr_wrdata_r[0]} ;
-   rvdffe #(31)  mtvec_ff (.*, .en(wr_mtvec_r), .din(mtvec_ns[30:0]), .dout(mtvec[30:0]));
-
-   // ----------------------------------------------------------------------
-   // MIP (RW)
-   //
-   // [30] MCEIP  : (RO) M-Mode Correctable Error interrupt pending
-   // [29] MITIP0 : (RO) M-Mode Internal Timer0 interrupt pending
-   // [28] MITIP1 : (RO) M-Mode Internal Timer1 interrupt pending
-   // [11] MEIP   : (RO) M-Mode external interrupt pending
-   // [7]  MTIP   : (RO) M-Mode timer interrupt pending
-   // [3]  MSIP   : (RO) M-Mode software interrupt pending
-   localparam MIP           = 12'h344;
-
-   assign ce_int = (mdccme_ce_req | miccme_ce_req | mice_ce_req);
-
-   assign mip_ns[5:0] = {ce_int, dec_timer_t0_pulse, dec_timer_t1_pulse, mexintpend, timer_int_sync, soft_int_sync};
-
-   // ----------------------------------------------------------------------
-   // MIE (RW)
-   // [30] MCEIE  : (RO) M-Mode Correctable Error interrupt enable
-   // [29] MITIE0 : (RO) M-Mode Internal Timer0 interrupt enable
-   // [28] MITIE1 : (RO) M-Mode Internal Timer1 interrupt enable
-   // [11] MEIE   : (RW) M-Mode external interrupt enable
-   // [7]  MTIE   : (RW) M-Mode timer interrupt enable
-   // [3]  MSIE   : (RW) M-Mode software interrupt enable
-   localparam MIE           = 12'h304;
-
-   assign wr_mie_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MIE);
-   assign mie_ns[5:0] = wr_mie_r ? {dec_csr_wrdata_r[30:28], dec_csr_wrdata_r[11], dec_csr_wrdata_r[7], dec_csr_wrdata_r[3]} : mie[5:0];
-   rvdff #(6)  mie_ff (.*, .clk(csr_wr_clk), .din(mie_ns[5:0]), .dout(mie[5:0]));
-
-
-   // ----------------------------------------------------------------------
-   // MCYCLEL (RW)
-   // [31:0] : Lower Cycle count
-
-   localparam MCYCLEL       = 12'hb00;
-
-   assign kill_ebreak_count_r = ebreak_to_debug_mode_r & dcsr[DCSR_STOPC];
-
-   assign wr_mcyclel_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCYCLEL);
-
-   assign mcyclel_cout_in = ~(kill_ebreak_count_r | (dec_tlu_dbg_halted & dcsr[DCSR_STOPC]) | dec_tlu_pmu_fw_halted | mcountinhibit[0]);
-
-   // split for power
-   assign {mcyclela_cout, mcyclel_inc[7:0]}  = mcyclel[7:0] +  {7'b0, 1'b1};
-   assign {mcyclel_cout,  mcyclel_inc[31:8]} = mcyclel[31:8] + {23'b0, mcyclela_cout};
-
-   assign mcyclel_ns[31:0] = wr_mcyclel_r ? dec_csr_wrdata_r[31:0] : mcyclel_inc[31:0];
-
-   rvdffe #(24) mcyclel_bff      (.*, .clk(free_l2clk), .en(wr_mcyclel_r | (mcyclela_cout & mcyclel_cout_in)),    .din(mcyclel_ns[31:8]), .dout(mcyclel[31:8]));
-   rvdffe #(8)  mcyclel_aff      (.*, .clk(free_l2clk), .en(wr_mcyclel_r | mcyclel_cout_in),  .din(mcyclel_ns[7:0]),  .dout(mcyclel[7:0]));
-
-   // ----------------------------------------------------------------------
-   // MCYCLEH (RW)
-   // [63:32] : Higher Cycle count
-   // Chained with mcyclel. Note: mcyclel overflow due to a mcycleh write gets ignored.
-
-   localparam MCYCLEH       = 12'hb80;
-
-   assign wr_mcycleh_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCYCLEH);
-
-   assign mcycleh_inc[31:0] = mcycleh[31:0] + {31'b0, mcyclel_cout_f};
-   assign mcycleh_ns[31:0]  = wr_mcycleh_r ? dec_csr_wrdata_r[31:0] : mcycleh_inc[31:0];
-
-   rvdffe #(32)  mcycleh_ff (.*, .clk(free_l2clk), .en(wr_mcycleh_r | mcyclel_cout_f), .din(mcycleh_ns[31:0]), .dout(mcycleh[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MINSTRETL (RW)
-   // [31:0] : Lower Instruction retired count
-   // From the spec "Some CSRs, such as the instructions retired counter, instret, may be modified as side effects
-   // of instruction execution. In these cases, if a CSR access instruction reads a CSR, it reads the
-   // value prior to the execution of the instruction. If a CSR access instruction writes a CSR, the
-   // update occurs after the execution of the instruction. In particular, a value written to instret by
-   // one instruction will be the value read by the following instruction (i.e., the increment of instret
-   // caused by the first instruction retiring happens before the write of the new value)."
-   localparam MINSTRETL     = 12'hb02;
-
-   assign i0_valid_no_ebreak_ecall_r = dec_tlu_i0_valid_r & ~(ebreak_r | ecall_r | ebreak_to_debug_mode_r | illegal_r | mcountinhibit[2]);
-
-   assign wr_minstretl_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MINSTRETL);
-
-   assign {minstretl_couta, minstretl_inc[7:0]} = minstretl[7:0] + {7'b0,1'b1};
-   assign {minstretl_cout, minstretl_inc[31:8]} = minstretl[31:8] + {23'b0, minstretl_couta};
-
-   assign minstret_enable = (i0_valid_no_ebreak_ecall_r & tlu_i0_commit_cmt) | wr_minstretl_r;
-
-   assign minstretl_cout_ns = minstretl_cout & ~wr_minstreth_r & i0_valid_no_ebreak_ecall_r & ~dec_tlu_dbg_halted;
-
-   assign minstretl_ns[31:0] = wr_minstretl_r ? dec_csr_wrdata_r[31:0] : minstretl_inc[31:0];
-   rvdffe #(24)  minstretl_bff (.*, .en(wr_minstretl_r | (minstretl_couta & minstret_enable)),
-                                .din(minstretl_ns[31:8]), .dout(minstretl[31:8]));
-   rvdffe #(8)   minstretl_aff (.*, .en(minstret_enable),
-                                .din(minstretl_ns[7:0]),  .dout(minstretl[7:0]));
-
-
-   assign minstretl_read[31:0] = minstretl[31:0];
-   // ----------------------------------------------------------------------
-   // MINSTRETH (RW)
-   // [63:32] : Higher Instret count
-   // Chained with minstretl. Note: minstretl overflow due to a minstreth write gets ignored.
-
-   localparam MINSTRETH     = 12'hb82;
-
-   assign wr_minstreth_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MINSTRETH);
-
-   assign minstreth_inc[31:0] = minstreth[31:0] + {31'b0, minstretl_cout_f};
-   assign minstreth_ns[31:0]  = wr_minstreth_r ? dec_csr_wrdata_r[31:0] : minstreth_inc[31:0];
-   rvdffe #(32)  minstreth_ff (.*, .en((minstret_enable_f & minstretl_cout_f) | wr_minstreth_r), .din(minstreth_ns[31:0]), .dout(minstreth[31:0]));
-
-   assign minstreth_read[31:0] = minstreth_inc[31:0];
-
-   // ----------------------------------------------------------------------
-   // MSCRATCH (RW)
-   // [31:0] : Scratch register
-   localparam MSCRATCH      = 12'h340;
-
-   assign wr_mscratch_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSCRATCH);
-
-   rvdffe #(32)  mscratch_ff (.*, .en(wr_mscratch_r), .din(dec_csr_wrdata_r[31:0]), .dout(mscratch[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MEPC (RW)
-   // [31:1] : Exception PC
-   localparam MEPC          = 12'h341;
-
-   // NPC
-
-   assign sel_exu_npc_r = ~dec_tlu_dbg_halted & ~tlu_flush_lower_r_d1 & dec_tlu_i0_valid_r;
-   assign sel_flush_npc_r = ~dec_tlu_dbg_halted & tlu_flush_lower_r_d1 & ~dec_tlu_flush_noredir_r_d1;
-   assign sel_hold_npc_r = ~sel_exu_npc_r & ~sel_flush_npc_r;
-
-   assign npc_r[31:1] =  ( ({31{sel_exu_npc_r}} & exu_npc_r[31:1]) |
-                           ({31{~mpc_reset_run_req & reset_delayed}} & rst_vec[31:1]) | // init to reset vector for mpc halt on reset case
-                           ({31{(sel_flush_npc_r)}} & tlu_flush_path_r_d1[31:1]) |
-                           ({31{(sel_hold_npc_r)}} & npc_r_d1[31:1]) );
-
-   rvdffpcie #(31)  npwbc_ff (.*, .en(sel_exu_npc_r | sel_flush_npc_r | reset_delayed), .din(npc_r[31:1]), .dout(npc_r_d1[31:1]));
-
-   // PC has to be captured for exceptions and interrupts. For MRET, we could execute it and then take an
-   // interrupt before the next instruction.
-   assign pc0_valid_r = ~dec_tlu_dbg_halted & dec_tlu_i0_valid_r;
-
-   assign pc_r[31:1]  = ( ({31{ pc0_valid_r}} & dec_tlu_i0_pc_r[31:1]) |
-                          ({31{~pc0_valid_r}} & pc_r_d1[31:1]));
-
-   rvdffpcie #(31)  pwbc_ff (.*, .en(pc0_valid_r), .din(pc_r[31:1]), .dout(pc_r_d1[31:1]));
-
-   assign wr_mepc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEPC);
-
-   assign mepc_ns[31:1] = ( ({31{i0_exception_valid_r | lsu_exc_valid_r | mepc_trigger_hit_sel_pc_r}} & pc_r[31:1]) |
-                            ({31{interrupt_valid_r}} & npc_r[31:1]) |
-                            ({31{wr_mepc_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[31:1]) |
-                            ({31{~wr_mepc_r & ~exc_or_int_valid_r}} & mepc[31:1]) );
-
-
-   rvdffe #(31)  mepc_ff (.*, .en(i0_exception_valid_r | lsu_exc_valid_r | mepc_trigger_hit_sel_pc_r | interrupt_valid_r | wr_mepc_r), .din(mepc_ns[31:1]), .dout(mepc[31:1]));
-
-   // ----------------------------------------------------------------------
-   // MCAUSE (RW)
-   // [31:0] : Exception Cause
-   localparam MCAUSE        = 12'h342;
-
-   assign wr_mcause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCAUSE);
-   assign mcause_sel_nmi_store = exc_or_int_valid_r & take_nmi & nmi_lsu_store_type;
-   assign mcause_sel_nmi_load = exc_or_int_valid_r & take_nmi & nmi_lsu_load_type;
-   assign mcause_sel_nmi_ext = exc_or_int_valid_r & take_nmi & take_ext_int_start_d3 & |lsu_fir_error[1:0] & ~nmi_int_detected_f;
-   // FIR value decoder
-   // 0 –no error
-   // 1 –uncorrectable ecc  => f000_1000
-   // 2 –dccm region access error => f000_1001
-   // 3 –non dccm region access error => f000_1002
-   assign mcause_fir_error_type[1:0] = {&lsu_fir_error[1:0], lsu_fir_error[1] & ~lsu_fir_error[0]};
-
-   assign mcause_ns[31:0] = ( ({32{mcause_sel_nmi_store}} & {32'hf000_0000}) |
-                              ({32{mcause_sel_nmi_load}} & {32'hf000_0001}) |
-                              ({32{mcause_sel_nmi_ext}} & {28'hf000_100, 2'b0, mcause_fir_error_type[1:0]}) |
-                              ({32{exc_or_int_valid_r & ~take_nmi}} & {interrupt_valid_r, 26'b0, exc_cause_r[4:0]}) |
-                              ({32{wr_mcause_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[31:0]) |
-                              ({32{~wr_mcause_r & ~exc_or_int_valid_r}} & mcause[31:0]) );
-
-   rvdffe #(32)  mcause_ff (.*, .en(exc_or_int_valid_r | wr_mcause_r), .din(mcause_ns[31:0]), .dout(mcause[31:0]));
-   // ----------------------------------------------------------------------
-   // MSCAUSE (RW)
-   // [2:0] : Secondary exception Cause
-   localparam MSCAUSE       = 12'h7ff;
-
-   assign wr_mscause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSCAUSE);
-
-   assign ifu_mscause[3:0]  =  (dec_tlu_packet_r.icaf_type[1:0] == 2'b00) ? 4'b1001 :
-                               {2'b00 , dec_tlu_packet_r.icaf_type[1:0]} ;
-
-   assign mscause_type[3:0] = ( ({4{lsu_i0_exc_r}} & lsu_error_pkt_r.mscause[3:0]) |
-                                ({4{i0_trigger_hit_r}} & 4'b0001) |
-                                ({4{ebreak_r}} & 4'b0010) |
-                                ({4{inst_acc_r}} & ifu_mscause[3:0])
-                                );
-
-   assign mscause_ns[3:0] = ( ({4{exc_or_int_valid_r}} & mscause_type[3:0]) |
-                              ({4{ wr_mscause_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[3:0]) |
-                              ({4{~wr_mscause_r & ~exc_or_int_valid_r}} & mscause[3:0])
-                             );
-
-   rvdff #(4)  mscause_ff (.*, .clk(e4e5_int_clk), .din(mscause_ns[3:0]), .dout(mscause[3:0]));
-   // ----------------------------------------------------------------------
-   // MTVAL (RW)
-   // [31:0] : Exception address if relevant
-   localparam MTVAL         = 12'h343;
-
-   assign wr_mtval_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTVAL);
-   assign mtval_capture_pc_r = exc_or_int_valid_r & (ebreak_r | (inst_acc_r & ~inst_acc_second_r) | mepc_trigger_hit_sel_pc_r) & ~take_nmi;
-   assign mtval_capture_pc_plus2_r = exc_or_int_valid_r & (inst_acc_r & inst_acc_second_r) & ~take_nmi;
-   assign mtval_capture_inst_r = exc_or_int_valid_r & illegal_r & ~take_nmi;
-   assign mtval_capture_lsu_r = exc_or_int_valid_r & lsu_exc_valid_r & ~take_nmi;
-   assign mtval_clear_r = exc_or_int_valid_r & ~mtval_capture_pc_r & ~mtval_capture_inst_r & ~mtval_capture_lsu_r & ~mepc_trigger_hit_sel_pc_r;
-
-
-   assign mtval_ns[31:0] = (({32{mtval_capture_pc_r}} & {pc_r[31:1], 1'b0}) |
-                            ({32{mtval_capture_pc_plus2_r}} & {pc_r[31:1] + 31'b1, 1'b0}) |
-                            ({32{mtval_capture_inst_r}} & dec_illegal_inst[31:0]) |
-                            ({32{mtval_capture_lsu_r}} & lsu_error_pkt_addr_r[31:0]) |
-                            ({32{wr_mtval_r & ~interrupt_valid_r}} & dec_csr_wrdata_r[31:0]) |
-                            ({32{~take_nmi & ~wr_mtval_r & ~mtval_capture_pc_r & ~mtval_capture_inst_r & ~mtval_clear_r & ~mtval_capture_lsu_r}} & mtval[31:0]) );
-
-
-   rvdffe #(32)  mtval_ff (.*, .en(tlu_flush_lower_r | wr_mtval_r), .din(mtval_ns[31:0]), .dout(mtval[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MCGC (RW) Clock gating control
-   // [31:10]: Reserved, reads 0x0
-   // [9]    : picio_clk_override
-   // [7]    : dec_clk_override
-   // [6]    : Unused
-   // [5]    : ifu_clk_override
-   // [4]    : lsu_clk_override
-   // [3]    : bus_clk_override
-   // [2]    : pic_clk_override
-   // [1]    : dccm_clk_override
-   // [0]    : icm_clk_override
-   //
-   localparam MCGC          = 12'h7f8;
-   assign wr_mcgc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCGC);
-
-   assign mcgc_ns[9:0] = wr_mcgc_r ? {~dec_csr_wrdata_r[9], dec_csr_wrdata_r[8:0]} : mcgc_int[9:0];
-   rvdffe #(10)  mcgc_ff (.*, .en(wr_mcgc_r), .din(mcgc_ns[9:0]), .dout(mcgc_int[9:0]));
-
-   assign mcgc[9:0] = {~mcgc_int[9], mcgc_int[8:0]};
-
-   assign dec_tlu_picio_clk_override= mcgc[9];
-   assign dec_tlu_misc_clk_override = mcgc[8];
-   assign dec_tlu_dec_clk_override  = mcgc[7];
-   //sign dec_tlu_exu_clk_override  = mcgc[6];
-   assign dec_tlu_ifu_clk_override  = mcgc[5];
-   assign dec_tlu_lsu_clk_override  = mcgc[4];
-   assign dec_tlu_bus_clk_override  = mcgc[3];
-   assign dec_tlu_pic_clk_override  = mcgc[2];
-   assign dec_tlu_dccm_clk_override = mcgc[1];
-   assign dec_tlu_icm_clk_override  = mcgc[0];
-
-   // ----------------------------------------------------------------------
-   // MFDC (RW) Feature Disable Control
-   // [31:19] : Reserved, reads 0x0
-   // [18:16] : DMA QoS Prty
-   // [15:13] : Reserved, reads 0x0
-   // [12]   : Disable trace
-   // [11]   : Disable external load forwarding
-   // [10]   : Disable dual issue
-   // [9]    : Disable pic multiple ints
-   // [8]    : Disable core ecc
-   // [7]    : Disable secondary alu?s
-   // [6]    : Unused, 0x0
-   // [5]    : Disable non-blocking loads/divides
-   // [4]    : Disable fast divide
-   // [3]    : Disable branch prediction and return stack
-   // [2]    : Disable write buffer coalescing
-   // [1]    : Disable load misses that bypass the write buffer
-   // [0]    : Disable pipelining - Enable single instruction execution
-   //
-   localparam MFDC          = 12'h7f9;
-
-   assign wr_mfdc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDC);
-
-   rvdffe #(16)  mfdc_ff (.*, .en(wr_mfdc_r), .din({mfdc_ns[15:0]}), .dout(mfdc_int[15:0]));
-
-   // flip poweron value of bit 6 for AXI build
-   if(pt.BUILD_AXI4==1) begin : axi4
-      // flip poweron valid of bit 12
-         assign mfdc_ns[15:0] = {~dec_csr_wrdata_r[18:16], dec_csr_wrdata_r[12], dec_csr_wrdata_r[11:7], ~dec_csr_wrdata_r[6], dec_csr_wrdata_r[5:0]};
-         assign mfdc[18:0] = {~mfdc_int[15:13], 3'b0, mfdc_int[12], mfdc_int[11:7], ~mfdc_int[6], mfdc_int[5:0]};
-   end
-   else begin
-      // flip poweron valid of bit 12
-         assign mfdc_ns[15:0] = {~dec_csr_wrdata_r[18:16],dec_csr_wrdata_r[12:0]};
-         assign mfdc[18:0] = {~mfdc_int[15:13], 3'b0, mfdc_int[12:0]};
-   end
-
-
-   assign dec_tlu_dma_qos_prty[2:0] = mfdc[18:16];
-   assign dec_tlu_trace_disable = mfdc[12];
-   assign dec_tlu_external_ldfwd_disable = mfdc[11];
-   assign dec_tlu_core_ecc_disable = 1'b1;//mfdc[8];
-   assign dec_tlu_sideeffect_posted_disable = mfdc[6];
-   assign dec_tlu_bpred_disable = mfdc[3];
-   assign dec_tlu_wb_coalescing_disable = mfdc[2];
-   assign dec_tlu_pipelining_disable = mfdc[0];
-
-   // ----------------------------------------------------------------------
-   // MCPC (RW) Pause counter
-   // [31:0] : Reads 0x0, decs in the wb register in decode_ctl
-
-   assign dec_tlu_wr_pause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCPC) & ~interrupt_valid_r & ~take_ext_int_start;
-
-   // ----------------------------------------------------------------------
-   // MRAC (RW)
-   // [31:0] : Region Access Control Register, 16 regions, {side_effect, cachable} pairs
-   localparam MRAC          = 12'h7c0;
-
-   assign wr_mrac_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MRAC);
-
-   // prevent pairs of 0x11, side_effect and cacheable
-   assign mrac_in[31:0] = {dec_csr_wrdata_r[31], dec_csr_wrdata_r[30] & ~dec_csr_wrdata_r[31],
-                           dec_csr_wrdata_r[29], dec_csr_wrdata_r[28] & ~dec_csr_wrdata_r[29],
-                           dec_csr_wrdata_r[27], dec_csr_wrdata_r[26] & ~dec_csr_wrdata_r[27],
-                           dec_csr_wrdata_r[25], dec_csr_wrdata_r[24] & ~dec_csr_wrdata_r[25],
-                           dec_csr_wrdata_r[23], dec_csr_wrdata_r[22] & ~dec_csr_wrdata_r[23],
-                           dec_csr_wrdata_r[21], dec_csr_wrdata_r[20] & ~dec_csr_wrdata_r[21],
-                           dec_csr_wrdata_r[19], dec_csr_wrdata_r[18] & ~dec_csr_wrdata_r[19],
-                           dec_csr_wrdata_r[17], dec_csr_wrdata_r[16] & ~dec_csr_wrdata_r[17],
-                           dec_csr_wrdata_r[15], dec_csr_wrdata_r[14] & ~dec_csr_wrdata_r[15],
-                           dec_csr_wrdata_r[13], dec_csr_wrdata_r[12] & ~dec_csr_wrdata_r[13],
-                           dec_csr_wrdata_r[11], dec_csr_wrdata_r[10] & ~dec_csr_wrdata_r[11],
-                           dec_csr_wrdata_r[9], dec_csr_wrdata_r[8] & ~dec_csr_wrdata_r[9],
-                           dec_csr_wrdata_r[7], dec_csr_wrdata_r[6] & ~dec_csr_wrdata_r[7],
-                           dec_csr_wrdata_r[5], dec_csr_wrdata_r[4] & ~dec_csr_wrdata_r[5],
-                           dec_csr_wrdata_r[3], dec_csr_wrdata_r[2] & ~dec_csr_wrdata_r[3],
-                           dec_csr_wrdata_r[1], dec_csr_wrdata_r[0] & ~dec_csr_wrdata_r[1]};
-
-   rvdffe #(32)  mrac_ff (.*, .en(wr_mrac_r), .din(mrac_in[31:0]), .dout(mrac[31:0]));
-
-   // drive to LSU/IFU
-   assign dec_tlu_mrac_ff[31:0] = mrac[31:0];
-
-   // ----------------------------------------------------------------------
-   // MDEAU (WAR0)
-   // [31:0] : Dbus Error Address Unlock register
-   //
-   localparam MDEAU         = 12'hbc0;
-
-   assign wr_mdeau_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MDEAU);
-
-
-   // ----------------------------------------------------------------------
-   // MDSEAC (R)
-   // [31:0] : Dbus Store Error Address Capture register
-   //
-   localparam MDSEAC        = 12'hfc0;
-
-   // only capture error bus if the MDSEAC reg is not locked
-   assign mdseac_locked_ns = mdseac_en | (mdseac_locked_f & ~wr_mdeau_r);
-
-   assign mdseac_en = (lsu_imprecise_error_store_any | lsu_imprecise_error_load_any) & ~nmi_int_detected_f & ~mdseac_locked_f;
-
-   rvdffe #(32)  mdseac_ff (.*, .en(mdseac_en), .din(lsu_imprecise_error_addr_any[31:0]), .dout(mdseac[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MPMC (R0W1)
-   // [0] : FW halt
-   // [1] : Set MSTATUS[MIE] on halt
-
-   localparam MPMC          = 12'h7c6;
-
-   assign wr_mpmc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MPMC);
-
-   // allow the cycle of the dbg halt flush that contains the wr_mpmc_r to
-   // set the mstatus bit potentially, use delayed version of internal dbg halt.
-   assign fw_halt_req = wr_mpmc_r & dec_csr_wrdata_r[0] & ~internal_dbg_halt_mode_f2 & ~ext_int_freeze_d1;
-
-   assign fw_halted_ns = (fw_halt_req | fw_halted) & ~set_mie_pmu_fw_halt;
-   assign mpmc_b_ns[1] = wr_mpmc_r ? ~dec_csr_wrdata_r[1] : ~mpmc[1];
-   rvdff #(1)  mpmc_ff (.*, .clk(csr_wr_clk), .din(mpmc_b_ns[1]), .dout(mpmc_b[1]));
-   assign mpmc[1] = ~mpmc_b[1];
-
-   // ----------------------------------------------------------------------
-   // MICECT (I-Cache error counter/threshold)
-   // [31:27] : Icache parity error threshold
-   // [26:0]  : Icache parity error count
-   localparam MICECT        = 12'h7f0;
-
-   assign csr_sat[31:27] = (dec_csr_wrdata_r[31:27] > 5'd26) ? 5'd26 : dec_csr_wrdata_r[31:27];
-
-   assign wr_micect_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MICECT);
-   assign micect_inc[26:0] = micect[26:0] + {26'b0, ic_perr_r};
-   assign micect_ns =  wr_micect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {micect[31:27], micect_inc[26:0]};
-
-   rvdffe #(32)  micect_ff (.*, .en(wr_micect_r | ic_perr_r), .din(micect_ns[31:0]), .dout(micect[31:0]));
-
-   assign mice_ce_req = |({32'hffffffff << micect[31:27]} & {5'b0, micect[26:0]});
-
-   // ----------------------------------------------------------------------
-   // MICCMECT (ICCM error counter/threshold)
-   // [31:27] : ICCM parity error threshold
-   // [26:0]  : ICCM parity error count
-   localparam MICCMECT      = 12'h7f1;
-
-   assign wr_miccmect_r     = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MICCMECT);
-   assign miccmect_inc[26:0] = miccmect[26:0] + {26'b0, iccm_sbecc_r | iccm_dma_sb_error};
-   assign miccmect_ns        = wr_miccmect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {miccmect[31:27], miccmect_inc[26:0]};
-
-   rvdffe #(32)  miccmect_ff (.*, .clk(free_l2clk), .en(wr_miccmect_r | iccm_sbecc_r | iccm_dma_sb_error), .din(miccmect_ns[31:0]), .dout(miccmect[31:0]));
-
-   assign miccme_ce_req = |({32'hffffffff << miccmect[31:27]} & {5'b0, miccmect[26:0]});
-
-   // ----------------------------------------------------------------------
-   // MDCCMECT (DCCM error counter/threshold)
-   // [31:27] : DCCM parity error threshold
-   // [26:0]  : DCCM parity error count
-   localparam MDCCMECT      = 12'h7f2;
-
-   assign wr_mdccmect_r     = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MDCCMECT);
-   assign mdccmect_inc[26:0] = mdccmect[26:0] + {26'b0, lsu_single_ecc_error_r_d1};
-   assign mdccmect_ns        = wr_mdccmect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {mdccmect[31:27], mdccmect_inc[26:0]};
-
-   rvdffe #(32)  mdccmect_ff (.*, .clk(free_l2clk), .en(wr_mdccmect_r | lsu_single_ecc_error_r_d1), .din(mdccmect_ns[31:0]), .dout(mdccmect[31:0]));
-
-   assign mdccme_ce_req = |({32'hffffffff << mdccmect[31:27]} & {5'b0, mdccmect[26:0]});
-
-
-   // ----------------------------------------------------------------------
-   // MFDHT (Force Debug Halt Threshold)
-   // [5:1] : Halt timeout threshold (power of 2)
-   //   [0] : Halt timeout enabled
-   localparam MFDHT         = 12'h7ce;
-
-   assign wr_mfdht_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDHT);
-
-   assign mfdht_ns[5:0] = wr_mfdht_r ? dec_csr_wrdata_r[5:0] : mfdht[5:0];
-
-   rvdffs #(6)  mfdht_ff (.*, .clk(csr_wr_clk), .en(wr_mfdht_r), .din(mfdht_ns[5:0]), .dout(mfdht[5:0]));
-
-    // ----------------------------------------------------------------------
-   // MFDHS(RW)
-   // [1] : LSU operation pending when debug halt threshold reached
-   // [0] : IFU operation pending when debug halt threshold reached
-
-   localparam MFDHS         = 12'h7cf;
-
-   assign wr_mfdhs_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDHS);
-
-   assign mfdhs_ns[1:0] = wr_mfdhs_r ? dec_csr_wrdata_r[1:0] : ((dbg_tlu_halted & ~dbg_tlu_halted_f) ? {~lsu_idle_any_f, ~ifu_miss_state_idle_f} : mfdhs[1:0]);
-
-   rvdffs #(2)  mfdhs_ff (.*, .clk(free_clk), .en(wr_mfdhs_r | dbg_tlu_halted), .din(mfdhs_ns[1:0]), .dout(mfdhs[1:0]));
-
-   assign force_halt_ctr[31:0] = debug_halt_req_f ? (force_halt_ctr_f[31:0] + 32'b1) : (dbg_tlu_halted_f ? 32'b0 : force_halt_ctr_f[31:0]);
-
-   rvdffe #(32)  forcehaltctr_ff (.*, .en(mfdht[0]), .din(force_halt_ctr[31:0]), .dout(force_halt_ctr_f[31:0]));
-
-   assign force_halt = mfdht[0] & |(force_halt_ctr_f[31:0] & (32'hffffffff << mfdht[5:1]));
-
-
-   // ----------------------------------------------------------------------
-   // MEIVT (External Interrupt Vector Table (R/W))
-   // [31:10]: Base address (R/W)
-   // [9:0]  : Reserved, reads 0x0
-   localparam MEIVT         = 12'hbc8;
-
-   assign wr_meivt_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEIVT);
-
-   rvdffe #(22)  meivt_ff (.*, .en(wr_meivt_r), .din(dec_csr_wrdata_r[31:10]), .dout(meivt[31:10]));
-
-
-   // ----------------------------------------------------------------------
-   // MEIHAP (External Interrupt Handler Access Pointer (R))
-   // [31:10]: Base address (R/W)
-   // [9:2]  : ClaimID (R)
-   // [1:0]  : Reserved, 0x0
-   localparam MEIHAP        = 12'hfc8;
-
-   assign wr_meihap_r = wr_meicpct_r;
-
-   rvdffe #(8)  meihap_ff (.*, .en(wr_meihap_r), .din(pic_claimid[7:0]), .dout(meihap[9:2]));
-
-   assign dec_tlu_meihap[31:2] = {meivt[31:10], meihap[9:2]};
-   // ----------------------------------------------------------------------
-   // MEICURPL (R/W)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : CURRPRI - Priority level of current interrupt service routine (R/W)
-   localparam MEICURPL      = 12'hbcc;
-
-   assign wr_meicurpl_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICURPL);
-   assign meicurpl_ns[3:0] = wr_meicurpl_r ? dec_csr_wrdata_r[3:0] : meicurpl[3:0];
-
-   rvdff #(4)  meicurpl_ff (.*, .clk(csr_wr_clk), .din(meicurpl_ns[3:0]), .dout(meicurpl[3:0]));
-
-   // PIC needs this reg
-   assign dec_tlu_meicurpl[3:0] = meicurpl[3:0];
-
-
-   // ----------------------------------------------------------------------
-   // MEICIDPL (R/W)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : External Interrupt Claim ID's Priority Level Register
-   localparam MEICIDPL      = 12'hbcb;
-
-   assign wr_meicidpl_r = (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICIDPL)) | take_ext_int_start;
-
-   assign meicidpl_ns[3:0] = wr_meicpct_r ? pic_pl[3:0] : (wr_meicidpl_r ? dec_csr_wrdata_r[3:0] : meicidpl[3:0]);
-
-
-   // ----------------------------------------------------------------------
-   // MEICPCT (Capture CLAIMID in MEIHAP and PL in MEICIDPL
-   // [31:1] : Reserved (read 0x0)
-   // [0]    : Capture (W1, Read 0)
-   localparam MEICPCT       = 12'hbca;
-
-   assign wr_meicpct_r = (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICPCT)) | take_ext_int_start;
-
-   // ----------------------------------------------------------------------
-   // MEIPT (External Interrupt Priority Threshold)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : PRITHRESH
-   localparam MEIPT         = 12'hbc9;
-
-   assign wr_meipt_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEIPT);
-   assign meipt_ns[3:0] = wr_meipt_r ? dec_csr_wrdata_r[3:0] : meipt[3:0];
-
-   rvdff #(4)  meipt_ff (.*, .clk(csr_wr_clk), .din(meipt_ns[3:0]), .dout(meipt[3:0]));
-
-   // to PIC
-   assign dec_tlu_meipt[3:0] = meipt[3:0];
-   // ----------------------------------------------------------------------
-   // DCSR (R/W) (Only accessible in debug mode)
-   // [31:28] : xdebugver (hard coded to 0x4) RO
-   // [27:16] : 0x0, reserved
-   // [15]    : ebreakm
-   // [14]    : 0x0, reserved
-   // [13]    : ebreaks (0x0 for this core)
-   // [12]    : ebreaku (0x0 for this core)
-   // [11]    : stepie
-   // [10]    : stopcount
-   // [9]     : 0x0 //stoptime
-   // [8:6]   : cause (RO)
-   // [5:4]   : 0x0, reserved
-   // [3]     : nmip
-   // [2]     : step
-   // [1:0]   : prv (0x3 for this core)
-   //
-   localparam DCSR          = 12'h7b0;
-
-   // RV has clarified that 'priority 4' in the spec means top priority.
-   // 4. single step. 3. Debugger request. 2. Ebreak. 1. Trigger.
-
-   // RV debug spec indicates a cause priority change for trigger hits during single step.
-   assign trigger_hit_for_dscr_cause_r_d1 = trigger_hit_dmode_r_d1 | (trigger_hit_r_d1 & dcsr_single_step_done_f);
-
-   assign dcsr_cause[8:6] = ( ({3{dcsr_single_step_done_f & ~ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1 & ~debug_halt_req}} & 3'b100) |
-                              ({3{debug_halt_req & ~ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1}} &  3'b011) |
-                              ({3{ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1}} &  3'b001) |
-                              ({3{trigger_hit_for_dscr_cause_r_d1}} & 3'b010));
-
-   assign wr_dcsr_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DCSR);
-
-
-
-  // Multiple halt enter requests can happen before we are halted.
-  // We have to continue to upgrade based on dcsr_cause priority but we can't downgrade.
-   assign dcsr_cause_upgradeable = internal_dbg_halt_mode_f & (dcsr[8:6] == 3'b011);
-   assign enter_debug_halt_req_le = enter_debug_halt_req & (~dbg_tlu_halted | dcsr_cause_upgradeable);
-
-   assign nmi_in_debug_mode = nmi_int_detected_f & internal_dbg_halt_mode_f;
-   assign dcsr_ns[15:2] = enter_debug_halt_req_le ? {dcsr[15:9], dcsr_cause[8:6], dcsr[5:2]} :
-                          (wr_dcsr_r ? {dec_csr_wrdata_r[15], 3'b0, dec_csr_wrdata_r[11:10], 1'b0, dcsr[8:6], 2'b00, nmi_in_debug_mode | dcsr[3], dec_csr_wrdata_r[2]} :
-                           {dcsr[15:4], nmi_in_debug_mode, dcsr[2]});
-
-   rvdffe #(14)  dcsr_ff (.*, .clk(free_l2clk), .en(enter_debug_halt_req_le | wr_dcsr_r | internal_dbg_halt_mode | take_nmi), .din(dcsr_ns[15:2]), .dout(dcsr[15:2]));
-
-   // ----------------------------------------------------------------------
-   // DPC (R/W) (Only accessible in debug mode)
-   // [31:0] : Debug PC
-   localparam DPC           = 12'h7b1;
-
-   assign wr_dpc_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DPC);
-   assign dpc_capture_npc = dbg_tlu_halted & ~dbg_tlu_halted_f & ~request_debug_mode_done;
-   assign dpc_capture_pc = request_debug_mode_r;
-
-   assign dpc_ns[31:1] = ( ({31{~dpc_capture_pc & ~dpc_capture_npc & wr_dpc_r}} & dec_csr_wrdata_r[31:1]) |
-                           ({31{dpc_capture_pc}} & pc_r[31:1]) |
-                           ({31{~dpc_capture_pc & dpc_capture_npc}} & npc_r[31:1]) );
-
-   rvdffe #(31)  dpc_ff (.*, .en(wr_dpc_r | dpc_capture_pc | dpc_capture_npc), .din(dpc_ns[31:1]), .dout(dpc[31:1]));
-
-   // ----------------------------------------------------------------------
-   // DICAWICS (R/W) (Only accessible in debug mode)
-   // [31:25] : Reserved
-   // [24]    : Array select, 0 is data, 1 is tag
-   // [23:22] : Reserved
-   // [21:20] : Way select
-   // [19:17] : Reserved
-   // [16:3]  : Index
-   // [2:0]   : Reserved
-   localparam DICAWICS      = 12'h7c8;
-
-   assign dicawics_ns[16:0] = {dec_csr_wrdata_r[24], dec_csr_wrdata_r[21:20], dec_csr_wrdata_r[16:3]};
-   assign wr_dicawics_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAWICS);
-
-   rvdffe #(17)  dicawics_ff (.*, .en(wr_dicawics_r), .din(dicawics_ns[16:0]), .dout(dicawics[16:0]));
-
-   // ----------------------------------------------------------------------
-   // DICAD0 (R/W) (Only accessible in debug mode)
-   //
-   // If dicawics[array] is 0
-   // [31:0]  : inst data
-   //
-   // If dicawics[array] is 1
-   // [31:16] : Tag
-   // [15:7]  : Reserved
-   // [6:4]   : LRU
-   // [3:1]   : Reserved
-   // [0]     : Valid
-   localparam DICAD0        = 12'h7c9;
-
-   assign dicad0_ns[31:0] = wr_dicad0_r ? dec_csr_wrdata_r[31:0] : ifu_ic_debug_rd_data[31:0];
-
-   assign wr_dicad0_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD0);
-
-   rvdffe #(32)  dicad0_ff (.*, .en(wr_dicad0_r | ifu_ic_debug_rd_data_valid), .din(dicad0_ns[31:0]), .dout(dicad0[31:0]));
-
-   // ----------------------------------------------------------------------
-   // DICAD0H (R/W) (Only accessible in debug mode)
-   //
-   // If dicawics[array] is 0
-   // [63:32]  : inst data
-   //
-   localparam DICAD0H       = 12'h7cc;
-
-   assign dicad0h_ns[31:0] = wr_dicad0h_r ? dec_csr_wrdata_r[31:0] : ifu_ic_debug_rd_data[63:32];
-
-   assign wr_dicad0h_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD0H);
-
-   rvdffe #(32)  dicad0h_ff (.*, .en(wr_dicad0h_r | ifu_ic_debug_rd_data_valid), .din(dicad0h_ns[31:0]), .dout(dicad0h[31:0]));
-
-
-if (pt.ICACHE_ECC == 1) begin
-   // ----------------------------------------------------------------------
-   // DICAD1 (R/W) (Only accessible in debug mode)
-   // [6:0]     : ECC
-   localparam DICAD1        = 12'h7ca;
-
-   assign dicad1_ns[6:0] = wr_dicad1_r ? dec_csr_wrdata_r[6:0] : ifu_ic_debug_rd_data[70:64];
-
-   assign wr_dicad1_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD1);
-
-   rvdffe #(.WIDTH(7), .OVERRIDE(1))  dicad1_ff (.*, .en(wr_dicad1_r | ifu_ic_debug_rd_data_valid), .din(dicad1_ns[6:0]), .dout(dicad1_raw[6:0]));
-
-   assign dicad1[31:0] = {25'b0, dicad1_raw[6:0]};
-
-end
-else begin
-   // ----------------------------------------------------------------------
-   // DICAD1 (R/W) (Only accessible in debug mode)
-   // [3:0]     : Parity
-   localparam DICAD1        = 12'h7ca;
-
-   assign dicad1_ns[3:0] = wr_dicad1_r ? dec_csr_wrdata_r[3:0] : ifu_ic_debug_rd_data[67:64];
-
-   assign wr_dicad1_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD1);
-
-   rvdffs #(4)  dicad1_ff (.*, .clk(free_clk), .en(wr_dicad1_r | ifu_ic_debug_rd_data_valid), .din(dicad1_ns[3:0]), .dout(dicad1_raw[3:0]));
-
-   assign dicad1[31:0] = {28'b0, dicad1_raw[3:0]};
-end
-   // ----------------------------------------------------------------------
-   // DICAGO (R/W) (Only accessible in debug mode)
-   // [0]     : Go
-   localparam DICAGO        = 12'h7cb;
-
-if (pt.ICACHE_ECC == 1)
-   assign dec_tlu_ic_diag_pkt.icache_wrdata[70:0] = {      dicad1[6:0], dicad0h[31:0], dicad0[31:0]};
-else
-   assign dec_tlu_ic_diag_pkt.icache_wrdata[70:0] = {3'b0, dicad1[3:0], dicad0h[31:0], dicad0[31:0]};
-
-
-   assign dec_tlu_ic_diag_pkt.icache_dicawics[16:0] = dicawics[16:0];
-
-   assign icache_rd_valid = allow_dbg_halt_csr_write & dec_csr_any_unq_d & dec_i0_decode_d & ~dec_csr_wen_unq_d & (dec_csr_rdaddr_d[11:0] == DICAGO);
-   assign icache_wr_valid = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAGO);
-
-
-   assign dec_tlu_ic_diag_pkt.icache_rd_valid = icache_rd_valid_f;
-   assign dec_tlu_ic_diag_pkt.icache_wr_valid = icache_wr_valid_f;
-
-   // ----------------------------------------------------------------------
-   // MTSEL (R/W)
-   // [1:0] : Trigger select : 00, 01, 10 are data/address triggers. 11 is inst count
-   localparam MTSEL         = 12'h7a0;
-
-   assign wr_mtsel_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTSEL);
-   assign mtsel_ns[1:0] = wr_mtsel_r ? {dec_csr_wrdata_r[1:0]} : mtsel[1:0];
-
-   rvdff #(2)  mtsel_ff (.*, .clk(csr_wr_clk), .din(mtsel_ns[1:0]), .dout(mtsel[1:0]));
-
-   // ----------------------------------------------------------------------
-   // MTDATA1 (R/W)
-   // [31:0] : Trigger Data 1
-   localparam MTDATA1       = 12'h7a1;
-
-   // for triggers 0, 1, 2 and 3 aka Match Control
-   // [31:28] : type, hard coded to 0x2
-   // [27]    : dmode
-   // [26:21] : hard coded to 0x1f
-   // [20]    : hit
-   // [19]    : select (0 - address, 1 - data)
-   // [18]    : timing, always 'before', reads 0x0
-   // [17:12] : action, bits  [17:13] not implemented and reads 0x0
-   // [11]    : chain
-   // [10:7]  : match, bits [10:8] not implemented and reads 0x0
-   // [6]     : M
-   // [5:3]   : not implemented, reads 0x0
-   // [2]     : execute
-   // [1]     : store
-   // [0]     : load
-   //
-   // decoder ring
-   // [27]    : => 9
-   // [20]    : => 8
-   // [19]    : => 7
-   // [12]    : => 6
-   // [11]    : => 5
-   // [7]     : => 4
-   // [6]     : => 3
-   // [2]     : => 2
-   // [1]     : => 1
-   // [0]     : => 0
-
-
-   // don't allow setting load-data.
-   assign tdata_load = dec_csr_wrdata_r[0] & ~dec_csr_wrdata_r[19];
-   // don't allow setting execute-data.
-   assign tdata_opcode = dec_csr_wrdata_r[2] & ~dec_csr_wrdata_r[19];
-   // don't allow clearing DMODE and action=1
-   assign tdata_action = (dec_csr_wrdata_r[27] & dbg_tlu_halted_f) & dec_csr_wrdata_r[12];
-
-   // Chain bit has conditions: WARL for triggers without chains. Force to zero if dmode is 0 but next trigger dmode is 1.
-   assign tdata_chain = mtsel[0] ? 1'b0 : // triggers 1 and 3 chain bit is always zero
-                        mtsel[1] ?  dec_csr_wrdata_r[11] & ~(mtdata1_t3[MTDATA1_DMODE] & ~dec_csr_wrdata_r[27]) : // trigger 2
-                                    dec_csr_wrdata_r[11] & ~(mtdata1_t1[MTDATA1_DMODE] & ~dec_csr_wrdata_r[27]);  // trigger 0
-
-   // Kill mtdata1 write if dmode=1 but prior trigger has dmode=0/chain=1. Only applies to T1 and T3
-   assign tdata_kill_write = mtsel[1] ? dec_csr_wrdata_r[27] & (~mtdata1_t2[MTDATA1_DMODE] & mtdata1_t2[MTDATA1_CHAIN]) : // trigger 3
-                                        dec_csr_wrdata_r[27] & (~mtdata1_t0[MTDATA1_DMODE] & mtdata1_t0[MTDATA1_CHAIN]) ; // trigger 1
-
-
-   assign tdata_wrdata_r[9:0]  = {dec_csr_wrdata_r[27] & dbg_tlu_halted_f,
-                                   dec_csr_wrdata_r[20:19],
-                                   tdata_action,
-                                   tdata_chain,
-                                   dec_csr_wrdata_r[7:6],
-                                   tdata_opcode,
-                                   dec_csr_wrdata_r[1],
-                                   tdata_load};
-
-   // If the DMODE bit is set, tdata1 can only be updated in debug_mode
-   assign wr_mtdata1_t0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b0) & (~mtdata1_t0[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign mtdata1_t0_ns[9:0] = wr_mtdata1_t0_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t0[9], update_hit_bit_r[0] | mtdata1_t0[8], mtdata1_t0[7:0]};
-
-   assign wr_mtdata1_t1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b01) & (~mtdata1_t1[MTDATA1_DMODE] | dbg_tlu_halted_f) & ~tdata_kill_write;
-   assign mtdata1_t1_ns[9:0] = wr_mtdata1_t1_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t1[9], update_hit_bit_r[1] | mtdata1_t1[8], mtdata1_t1[7:0]};
-
-   assign wr_mtdata1_t2_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b10) & (~mtdata1_t2[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign mtdata1_t2_ns[9:0] = wr_mtdata1_t2_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t2[9], update_hit_bit_r[2] | mtdata1_t2[8], mtdata1_t2[7:0]};
-
-   assign wr_mtdata1_t3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b11) & (~mtdata1_t3[MTDATA1_DMODE] | dbg_tlu_halted_f) & ~tdata_kill_write;
-   assign mtdata1_t3_ns[9:0] = wr_mtdata1_t3_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t3[9], update_hit_bit_r[3] | mtdata1_t3[8], mtdata1_t3[7:0]};
-
-
-   rvdffe #(10)  mtdata1_t0_ff (.*, .en(trigger_enabled[0] | wr_mtdata1_t0_r), .din(mtdata1_t0_ns[9:0]), .dout(mtdata1_t0[9:0]));
-   rvdffe #(10)  mtdata1_t1_ff (.*, .en(trigger_enabled[1] | wr_mtdata1_t1_r), .din(mtdata1_t1_ns[9:0]), .dout(mtdata1_t1[9:0]));
-   rvdffe #(10)  mtdata1_t2_ff (.*, .en(trigger_enabled[2] | wr_mtdata1_t2_r), .din(mtdata1_t2_ns[9:0]), .dout(mtdata1_t2[9:0]));
-   rvdffe #(10)  mtdata1_t3_ff (.*, .en(trigger_enabled[3] | wr_mtdata1_t3_r), .din(mtdata1_t3_ns[9:0]), .dout(mtdata1_t3[9:0]));
-
-   assign mtdata1_tsel_out[31:0] = ( ({32{(mtsel[1:0] == 2'b00)}} & {4'h2, mtdata1_t0[9], 6'b011111, mtdata1_t0[8:7], 6'b0, mtdata1_t0[6:5], 3'b0, mtdata1_t0[4:3], 3'b0, mtdata1_t0[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b01)}} & {4'h2, mtdata1_t1[9], 6'b011111, mtdata1_t1[8:7], 6'b0, mtdata1_t1[6:5], 3'b0, mtdata1_t1[4:3], 3'b0, mtdata1_t1[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b10)}} & {4'h2, mtdata1_t2[9], 6'b011111, mtdata1_t2[8:7], 6'b0, mtdata1_t2[6:5], 3'b0, mtdata1_t2[4:3], 3'b0, mtdata1_t2[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b11)}} & {4'h2, mtdata1_t3[9], 6'b011111, mtdata1_t3[8:7], 6'b0, mtdata1_t3[6:5], 3'b0, mtdata1_t3[4:3], 3'b0, mtdata1_t3[2:0]}));
-
-   assign trigger_pkt_any[0].select = mtdata1_t0[MTDATA1_SEL];
-   assign trigger_pkt_any[0].match = mtdata1_t0[MTDATA1_MATCH];
-   assign trigger_pkt_any[0].store = mtdata1_t0[MTDATA1_ST];
-   assign trigger_pkt_any[0].load = mtdata1_t0[MTDATA1_LD];
-   assign trigger_pkt_any[0].execute = mtdata1_t0[MTDATA1_EXE];
-   assign trigger_pkt_any[0].m = mtdata1_t0[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[1].select = mtdata1_t1[MTDATA1_SEL];
-   assign trigger_pkt_any[1].match = mtdata1_t1[MTDATA1_MATCH];
-   assign trigger_pkt_any[1].store = mtdata1_t1[MTDATA1_ST];
-   assign trigger_pkt_any[1].load = mtdata1_t1[MTDATA1_LD];
-   assign trigger_pkt_any[1].execute = mtdata1_t1[MTDATA1_EXE];
-   assign trigger_pkt_any[1].m = mtdata1_t1[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[2].select = mtdata1_t2[MTDATA1_SEL];
-   assign trigger_pkt_any[2].match = mtdata1_t2[MTDATA1_MATCH];
-   assign trigger_pkt_any[2].store = mtdata1_t2[MTDATA1_ST];
-   assign trigger_pkt_any[2].load = mtdata1_t2[MTDATA1_LD];
-   assign trigger_pkt_any[2].execute = mtdata1_t2[MTDATA1_EXE];
-   assign trigger_pkt_any[2].m = mtdata1_t2[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[3].select = mtdata1_t3[MTDATA1_SEL];
-   assign trigger_pkt_any[3].match = mtdata1_t3[MTDATA1_MATCH];
-   assign trigger_pkt_any[3].store = mtdata1_t3[MTDATA1_ST];
-   assign trigger_pkt_any[3].load = mtdata1_t3[MTDATA1_LD];
-   assign trigger_pkt_any[3].execute = mtdata1_t3[MTDATA1_EXE];
-   assign trigger_pkt_any[3].m = mtdata1_t3[MTDATA1_M_ENABLED];
-
-
-
-
-
-   // ----------------------------------------------------------------------
-   // MTDATA2 (R/W)
-   // [31:0] : Trigger Data 2
-   localparam MTDATA2       = 12'h7a2;
-
-   // If the DMODE bit is set, tdata2 can only be updated in debug_mode
-   assign wr_mtdata2_t0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b0)  & (~mtdata1_t0[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b01) & (~mtdata1_t1[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t2_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b10) & (~mtdata1_t2[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b11) & (~mtdata1_t3[MTDATA1_DMODE] | dbg_tlu_halted_f);
-
-   rvdffe #(32)  mtdata2_t0_ff (.*, .en(wr_mtdata2_t0_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t0[31:0]));
-   rvdffe #(32)  mtdata2_t1_ff (.*, .en(wr_mtdata2_t1_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t1[31:0]));
-   rvdffe #(32)  mtdata2_t2_ff (.*, .en(wr_mtdata2_t2_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t2[31:0]));
-   rvdffe #(32)  mtdata2_t3_ff (.*, .en(wr_mtdata2_t3_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t3[31:0]));
-
-   assign mtdata2_tsel_out[31:0] = ( ({32{(mtsel[1:0] == 2'b00)}} & mtdata2_t0[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b01)}} & mtdata2_t1[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b10)}} & mtdata2_t2[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b11)}} & mtdata2_t3[31:0]));
-
-   assign trigger_pkt_any[0].tdata2[31:0] = mtdata2_t0[31:0];
-   assign trigger_pkt_any[1].tdata2[31:0] = mtdata2_t1[31:0];
-   assign trigger_pkt_any[2].tdata2[31:0] = mtdata2_t2[31:0];
-   assign trigger_pkt_any[3].tdata2[31:0] = mtdata2_t3[31:0];
-
-
-   //----------------------------------------------------------------------
-   // Performance Monitor Counters section starts
-   //----------------------------------------------------------------------
-   localparam MHPME_NOEVENT             = 10'd0;
-   localparam MHPME_CLK_ACTIVE          = 10'd1; // OOP - out of pipe
-   localparam MHPME_ICACHE_HIT          = 10'd2; // OOP
-   localparam MHPME_ICACHE_MISS         = 10'd3; // OOP
-   localparam MHPME_INST_COMMIT         = 10'd4;
-   localparam MHPME_INST_COMMIT_16B     = 10'd5;
-   localparam MHPME_INST_COMMIT_32B     = 10'd6;
-   localparam MHPME_INST_ALIGNED        = 10'd7; // OOP
-   localparam MHPME_INST_DECODED        = 10'd8; // OOP
-   localparam MHPME_INST_MUL            = 10'd9;
-   localparam MHPME_INST_DIV            = 10'd10;
-   localparam MHPME_INST_LOAD           = 10'd11;
-   localparam MHPME_INST_STORE          = 10'd12;
-   localparam MHPME_INST_MALOAD         = 10'd13;
-   localparam MHPME_INST_MASTORE        = 10'd14;
-   localparam MHPME_INST_ALU            = 10'd15;
-   localparam MHPME_INST_CSRREAD        = 10'd16;
-   localparam MHPME_INST_CSRRW          = 10'd17;
-   localparam MHPME_INST_CSRWRITE       = 10'd18;
-   localparam MHPME_INST_EBREAK         = 10'd19;
-   localparam MHPME_INST_ECALL          = 10'd20;
-   localparam MHPME_INST_FENCE          = 10'd21;
-   localparam MHPME_INST_FENCEI         = 10'd22;
-   localparam MHPME_INST_MRET           = 10'd23;
-   localparam MHPME_INST_BRANCH         = 10'd24;
-   localparam MHPME_BRANCH_MP           = 10'd25;
-   localparam MHPME_BRANCH_TAKEN        = 10'd26;
-   localparam MHPME_BRANCH_NOTP         = 10'd27;
-   localparam MHPME_FETCH_STALL         = 10'd28; // OOP
-   localparam MHPME_DECODE_STALL        = 10'd30; // OOP
-   localparam MHPME_POSTSYNC_STALL      = 10'd31; // OOP
-   localparam MHPME_PRESYNC_STALL       = 10'd32; // OOP
-   localparam MHPME_LSU_SB_WB_STALL     = 10'd34; // OOP
-   localparam MHPME_DMA_DCCM_STALL      = 10'd35; // OOP
-   localparam MHPME_DMA_ICCM_STALL      = 10'd36; // OOP
-   localparam MHPME_EXC_TAKEN           = 10'd37;
-   localparam MHPME_TIMER_INT_TAKEN     = 10'd38;
-   localparam MHPME_EXT_INT_TAKEN       = 10'd39;
-   localparam MHPME_FLUSH_LOWER         = 10'd40;
-   localparam MHPME_BR_ERROR            = 10'd41;
-   localparam MHPME_IBUS_TRANS          = 10'd42; // OOP
-   localparam MHPME_DBUS_TRANS          = 10'd43; // OOP
-   localparam MHPME_DBUS_MA_TRANS       = 10'd44; // OOP
-   localparam MHPME_IBUS_ERROR          = 10'd45; // OOP
-   localparam MHPME_DBUS_ERROR          = 10'd46; // OOP
-   localparam MHPME_IBUS_STALL          = 10'd47; // OOP
-   localparam MHPME_DBUS_STALL          = 10'd48; // OOP
-   localparam MHPME_INT_DISABLED        = 10'd49; // OOP
-   localparam MHPME_INT_STALLED         = 10'd50; // OOP
-   localparam MHPME_INST_BITMANIP       = 10'd54;
-   localparam MHPME_DBUS_LOAD           = 10'd55;
-   localparam MHPME_DBUS_STORE          = 10'd56;
-   // Counts even during sleep state
-   localparam MHPME_SLEEP_CYC           = 10'd512; // OOP
-   localparam MHPME_DMA_READ_ALL        = 10'd513; // OOP
-   localparam MHPME_DMA_WRITE_ALL       = 10'd514; // OOP
-   localparam MHPME_DMA_READ_DCCM       = 10'd515; // OOP
-   localparam MHPME_DMA_WRITE_DCCM      = 10'd516; // OOP
-
-   // Pack the event selects into a vector for genvar
-   assign mhpme_vec[0][9:0] = mhpme3[9:0];
-   assign mhpme_vec[1][9:0] = mhpme4[9:0];
-   assign mhpme_vec[2][9:0] = mhpme5[9:0];
-   assign mhpme_vec[3][9:0] = mhpme6[9:0];
-
-   // only consider committed itypes
-   //logic [3:0] pmu_i0_itype_qual;
-   assign pmu_i0_itype_qual[3:0] = dec_tlu_packet_r.pmu_i0_itype[3:0] & {4{tlu_i0_commit_cmt}};
-
-   // Generate the muxed incs for all counters based on event type
-   for (genvar i=0 ; i < 4; i++) begin
-      assign mhpmc_inc_r[i] =  {{~mcountinhibit[i+3]}} &
-           (
-             ({1{(mhpme_vec[i][9:0] == MHPME_CLK_ACTIVE      )}} & 1'b1) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_ICACHE_HIT      )}} & {ifu_pmu_ic_hit}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_ICACHE_MISS     )}} & {ifu_pmu_ic_miss}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT     )}} & {tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT_16B )}} & {tlu_i0_commit_cmt & ~exu_pmu_i0_pc4 & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT_32B )}} & {tlu_i0_commit_cmt &  exu_pmu_i0_pc4 & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ALIGNED    )}} & ifu_pmu_instr_aligned)  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_DECODED    )}} & dec_pmu_instr_decoded)  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DECODE_STALL    )}} & {dec_pmu_decode_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MUL        )}} & {(pmu_i0_itype_qual == MUL)})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_DIV        )}} & {dec_tlu_packet_r.pmu_divide  & tlu_i0_commit_cmt & ~illegal_r})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_LOAD       )}} & {(pmu_i0_itype_qual == LOAD)})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_STORE      )}} & {(pmu_i0_itype_qual == STORE)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MALOAD     )}} & {(pmu_i0_itype_qual == LOAD)} &
-                                                                      {1{dec_tlu_packet_r.pmu_lsu_misaligned}})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MASTORE    )}} & {(pmu_i0_itype_qual == STORE)} &
-                                                                      {1{dec_tlu_packet_r.pmu_lsu_misaligned}})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ALU        )}} & {(pmu_i0_itype_qual == ALU)})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRREAD    )}} & {(pmu_i0_itype_qual == CSRREAD)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRWRITE   )}} & {(pmu_i0_itype_qual == CSRWRITE)})|
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRRW      )}} & {(pmu_i0_itype_qual == CSRRW)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_EBREAK     )}} & {(pmu_i0_itype_qual == EBREAK)})  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ECALL      )}} & {(pmu_i0_itype_qual == ECALL)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_FENCE      )}} & {(pmu_i0_itype_qual == FENCE)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_FENCEI     )}} & {(pmu_i0_itype_qual == FENCEI)})  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MRET       )}} & {(pmu_i0_itype_qual == MRET)})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_BRANCH     )}} & {
-                                                                     ((pmu_i0_itype_qual == CONDBR) | (pmu_i0_itype_qual == JAL))})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_MP       )}} & {exu_pmu_i0_br_misp & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_TAKEN    )}} & {exu_pmu_i0_br_ataken & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_NOTP     )}} & {dec_tlu_packet_r.pmu_i0_br_unpred & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_FETCH_STALL     )}} & { ifu_pmu_fetch_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DECODE_STALL    )}} & { dec_pmu_decode_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_POSTSYNC_STALL  )}} & {dec_pmu_postsync_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_PRESYNC_STALL   )}} & {dec_pmu_presync_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_LSU_SB_WB_STALL )}} & { lsu_store_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_DCCM_STALL  )}} & { dma_dccm_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_ICCM_STALL  )}} & { dma_iccm_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_EXC_TAKEN       )}} & { (i0_exception_valid_r | i0_trigger_hit_r | lsu_exc_valid_r)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_TIMER_INT_TAKEN )}} & { take_timer_int | take_int_timer0_int | take_int_timer1_int}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_EXT_INT_TAKEN   )}} & { take_ext_int}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_FLUSH_LOWER     )}} & { tlu_flush_lower_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BR_ERROR        )}} & {(dec_tlu_br0_error_r | dec_tlu_br0_start_error_r) & rfpc_i0_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_TRANS      )}} & {ifu_pmu_bus_trxn}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_TRANS      )}} & {lsu_pmu_bus_trxn}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_MA_TRANS   )}} & {lsu_pmu_bus_misaligned}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_ERROR      )}} & {ifu_pmu_bus_error}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_ERROR      )}} & {lsu_pmu_bus_error}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_STALL      )}} & {ifu_pmu_bus_busy}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_STALL      )}} & {lsu_pmu_bus_busy}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INT_DISABLED    )}} & {~mstatus[MSTATUS_MIE]}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INT_STALLED     )}} & {~mstatus[MSTATUS_MIE] & |(mip[5:0] & mie[5:0])}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_BITMANIP     )}} & {(pmu_i0_itype_qual == BITMANIPU)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_LOAD       )}} & {tlu_i0_commit_cmt & lsu_pmu_load_external_r & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_STORE      )}} & {tlu_i0_commit_cmt & lsu_pmu_store_external_r & ~illegal_r}) |
-             // These count even during sleep
-             ({1{(mhpme_vec[i][9:0] == MHPME_SLEEP_CYC       )}} & {dec_tlu_pmu_fw_halted}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_READ_ALL    )}} & {dma_pmu_any_read}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_WRITE_ALL   )}} & {dma_pmu_any_write}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_READ_DCCM   )}} & {dma_pmu_dccm_read}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_WRITE_DCCM  )}} & {dma_pmu_dccm_write})
-             );
-   end
-
-
-   if(pt.FAST_INTERRUPT_REDIRECT)
-   rvdffie #(31)  mstatus_ff (.*, .clk(free_l2clk),
-                             .din({mdseac_locked_ns, lsu_single_ecc_error_r, lsu_exc_valid_r, lsu_i0_exc_r,
-                                   take_ext_int_start,    take_ext_int_start_d1, take_ext_int_start_d2, ext_int_freeze,
-                                   mip_ns[5:0], mcyclel_cout & ~wr_mcycleh_r & mcyclel_cout_in,
-                                   minstret_enable, minstretl_cout_ns, fw_halted_ns,
-                                   meicidpl_ns[3:0], icache_rd_valid, icache_wr_valid, mhpmc_inc_r[3:0], perfcnt_halted,
-                                   mstatus_ns[1:0]}),
-                             .dout({mdseac_locked_f, lsu_single_ecc_error_r_d1, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1,
-                                    take_ext_int_start_d1, take_ext_int_start_d2, take_ext_int_start_d3, ext_int_freeze_d1,
-                                    mip[5:0], mcyclel_cout_f, minstret_enable_f, minstretl_cout_f,
-                                    fw_halted, meicidpl[3:0], icache_rd_valid_f, icache_wr_valid_f,
-                                    mhpmc_inc_r_d1[3:0], perfcnt_halted_d1,
-                                    mstatus[1:0]}));
-
-   else
-   rvdffie #(27)  mstatus_ff (.*, .clk(free_l2clk),
-                             .din({mdseac_locked_ns, lsu_single_ecc_error_r, lsu_exc_valid_r, lsu_i0_exc_r,
-                                   mip_ns[5:0], mcyclel_cout & ~wr_mcycleh_r & mcyclel_cout_in,
-                                   minstret_enable, minstretl_cout_ns, fw_halted_ns,
-                                   meicidpl_ns[3:0], icache_rd_valid, icache_wr_valid, mhpmc_inc_r[3:0], perfcnt_halted,
-                                   mstatus_ns[1:0]}),
-                             .dout({mdseac_locked_f, lsu_single_ecc_error_r_d1, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1,
-                                    mip[5:0], mcyclel_cout_f, minstret_enable_f, minstretl_cout_f,
-                                    fw_halted, meicidpl[3:0], icache_rd_valid_f, icache_wr_valid_f,
-                                    mhpmc_inc_r_d1[3:0], perfcnt_halted_d1,
-                                    mstatus[1:0]}));
-
-   assign perfcnt_halted = ((dec_tlu_dbg_halted & dcsr[DCSR_STOPC]) | dec_tlu_pmu_fw_halted);
-   assign perfcnt_during_sleep[3:0] = {4{~(dec_tlu_dbg_halted & dcsr[DCSR_STOPC])}} & {mhpme_vec[3][9],mhpme_vec[2][9],mhpme_vec[1][9],mhpme_vec[0][9]};
-
-   assign dec_tlu_perfcnt0 = mhpmc_inc_r_d1[0] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[0]);
-   assign dec_tlu_perfcnt1 = mhpmc_inc_r_d1[1] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[1]);
-   assign dec_tlu_perfcnt2 = mhpmc_inc_r_d1[2] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[2]);
-   assign dec_tlu_perfcnt3 = mhpmc_inc_r_d1[3] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[3]);
-
-   // ----------------------------------------------------------------------
-   // MHPMC3H(RW), MHPMC3(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 3
-   localparam MHPMC3        = 12'hB03;
-   localparam MHPMC3H       = 12'hB83;
-
-   assign mhpmc3_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC3);
-   assign mhpmc3_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[0]) & (|(mhpmc_inc_r[0]));
-   assign mhpmc3_wr_en  = mhpmc3_wr_en0 | mhpmc3_wr_en1;
-   assign mhpmc3_incr[63:0] = {mhpmc3h[31:0],mhpmc3[31:0]} + {63'b0, 1'b1};
-   assign mhpmc3_ns[31:0] = mhpmc3_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc3_incr[31:0];
-   rvdffe #(32)  mhpmc3_ff (.*, .clk(free_l2clk), .en(mhpmc3_wr_en), .din(mhpmc3_ns[31:0]), .dout(mhpmc3[31:0]));
-
-   assign mhpmc3h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC3H);
-   assign mhpmc3h_wr_en  = mhpmc3h_wr_en0 | mhpmc3_wr_en1;
-   assign mhpmc3h_ns[31:0] = mhpmc3h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc3_incr[63:32];
-   rvdffe #(32)  mhpmc3h_ff (.*, .clk(free_l2clk), .en(mhpmc3h_wr_en), .din(mhpmc3h_ns[31:0]), .dout(mhpmc3h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC4H(RW), MHPMC4(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 4
-   localparam MHPMC4        = 12'hB04;
-   localparam MHPMC4H       = 12'hB84;
-
-   assign mhpmc4_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC4);
-   assign mhpmc4_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[1]) & (|(mhpmc_inc_r[1]));
-   assign mhpmc4_wr_en  = mhpmc4_wr_en0 | mhpmc4_wr_en1;
-   assign mhpmc4_incr[63:0] = {mhpmc4h[31:0],mhpmc4[31:0]} + {63'b0,1'b1};
-   assign mhpmc4_ns[31:0] = mhpmc4_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc4_incr[31:0];
-   rvdffe #(32)  mhpmc4_ff (.*, .clk(free_l2clk), .en(mhpmc4_wr_en), .din(mhpmc4_ns[31:0]), .dout(mhpmc4[31:0]));
-
-   assign mhpmc4h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC4H);
-   assign mhpmc4h_wr_en  = mhpmc4h_wr_en0 | mhpmc4_wr_en1;
-   assign mhpmc4h_ns[31:0] = mhpmc4h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc4_incr[63:32];
-   rvdffe #(32)  mhpmc4h_ff (.*, .clk(free_l2clk), .en(mhpmc4h_wr_en), .din(mhpmc4h_ns[31:0]), .dout(mhpmc4h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC5H(RW), MHPMC5(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 5
-   localparam MHPMC5        = 12'hB05;
-   localparam MHPMC5H       = 12'hB85;
-
-   assign mhpmc5_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC5);
-   assign mhpmc5_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[2]) & (|(mhpmc_inc_r[2]));
-   assign mhpmc5_wr_en  = mhpmc5_wr_en0 | mhpmc5_wr_en1;
-   assign mhpmc5_incr[63:0] = {mhpmc5h[31:0],mhpmc5[31:0]} + {63'b0,1'b1};
-   assign mhpmc5_ns[31:0] = mhpmc5_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc5_incr[31:0];
-   rvdffe #(32)  mhpmc5_ff (.*, .clk(free_l2clk), .en(mhpmc5_wr_en), .din(mhpmc5_ns[31:0]), .dout(mhpmc5[31:0]));
-
-   assign mhpmc5h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC5H);
-   assign mhpmc5h_wr_en  = mhpmc5h_wr_en0 | mhpmc5_wr_en1;
-   assign mhpmc5h_ns[31:0] = mhpmc5h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc5_incr[63:32];
-   rvdffe #(32)  mhpmc5h_ff (.*, .clk(free_l2clk), .en(mhpmc5h_wr_en), .din(mhpmc5h_ns[31:0]), .dout(mhpmc5h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC6H(RW), MHPMC6(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 6
-   localparam MHPMC6        = 12'hB06;
-   localparam MHPMC6H       = 12'hB86;
-
-   assign mhpmc6_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC6);
-   assign mhpmc6_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[3]) & (|(mhpmc_inc_r[3]));
-   assign mhpmc6_wr_en  = mhpmc6_wr_en0 | mhpmc6_wr_en1;
-   assign mhpmc6_incr[63:0] = {mhpmc6h[31:0],mhpmc6[31:0]} + {63'b0,1'b1};
-   assign mhpmc6_ns[31:0] = mhpmc6_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc6_incr[31:0];
-   rvdffe #(32)  mhpmc6_ff (.*, .clk(free_l2clk), .en(mhpmc6_wr_en), .din(mhpmc6_ns[31:0]), .dout(mhpmc6[31:0]));
-
-   assign mhpmc6h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC6H);
-   assign mhpmc6h_wr_en  = mhpmc6h_wr_en0 | mhpmc6_wr_en1;
-   assign mhpmc6h_ns[31:0] = mhpmc6h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc6_incr[63:32];
-   rvdffe #(32)  mhpmc6h_ff (.*, .clk(free_l2clk), .en(mhpmc6h_wr_en), .din(mhpmc6h_ns[31:0]), .dout(mhpmc6h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPME3(RW)
-   // [9:0] : Hardware Performance Monitor Event 3
-   localparam MHPME3        = 12'h323;
-
-   // we only have events 0-56 with holes, 512-516, HPME* are WARL so zero otherwise.
-   assign zero_event_r = ( (dec_csr_wrdata_r[9:0] > 10'd516) |
-                           (|dec_csr_wrdata_r[31:10]) |
-                           ((dec_csr_wrdata_r[9:0] < 10'd512) & (dec_csr_wrdata_r[9:0] > 10'd56)) |
-                           ((dec_csr_wrdata_r[9:0] < 10'd54) & (dec_csr_wrdata_r[9:0] > 10'd50)) |
-                           (dec_csr_wrdata_r[9:0] == 10'd29) |
-                           (dec_csr_wrdata_r[9:0] == 10'd33)
-                           );
-
-   assign event_r[9:0] = zero_event_r ? '0 : dec_csr_wrdata_r[9:0];
-
-   assign wr_mhpme3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME3);
-   rvdffe #(10)  mhpme3_ff (.*, .en(wr_mhpme3_r), .din(event_r[9:0]), .dout(mhpme3[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME4(RW)
-   // [9:0] : Hardware Performance Monitor Event 4
-   localparam MHPME4        = 12'h324;
-
-   assign wr_mhpme4_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME4);
-   rvdffe #(10)  mhpme4_ff (.*, .en(wr_mhpme4_r), .din(event_r[9:0]), .dout(mhpme4[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME5(RW)
-   // [9:0] : Hardware Performance Monitor Event 5
-   localparam MHPME5        = 12'h325;
-
-   assign wr_mhpme5_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME5);
-   rvdffe #(10)  mhpme5_ff (.*, .en(wr_mhpme5_r), .din(event_r[9:0]), .dout(mhpme5[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME6(RW)
-   // [9:0] : Hardware Performance Monitor Event 6
-   localparam MHPME6        = 12'h326;
-
-   assign wr_mhpme6_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME6);
-   rvdffe #(10)  mhpme6_ff (.*, .en(wr_mhpme6_r), .din(event_r[9:0]), .dout(mhpme6[9:0]));
-
-   //----------------------------------------------------------------------
-   // Performance Monitor Counters section ends
-   //----------------------------------------------------------------------
-   // ----------------------------------------------------------------------
-
-   // MCOUNTINHIBIT(RW)
-   // [31:7] : Reserved, read 0x0
-   // [6]    : HPM6 disable
-   // [5]    : HPM5 disable
-   // [4]    : HPM4 disable
-   // [3]    : HPM3 disable
-   // [2]    : MINSTRET disable
-   // [1]    : reserved, read 0x0
-   // [0]    : MCYCLE disable
-
-   localparam MCOUNTINHIBIT             = 12'h320;
-
-   assign wr_mcountinhibit_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCOUNTINHIBIT);
-   rvdffs #(6)  mcountinhibit_ff (.*, .clk(csr_wr_clk), .en(wr_mcountinhibit_r), .din({dec_csr_wrdata_r[6:2], dec_csr_wrdata_r[0]}), .dout({mcountinhibit[6:2], mcountinhibit[0]}));
-   assign mcountinhibit[1] = 1'b0;
-
-   //--------------------------------------------------------------------------------
-   // trace
-   //--------------------------------------------------------------------------------
-   logic [4:0] dec_tlu_exc_cause_wb1_raw, dec_tlu_exc_cause_wb2;
-   logic       dec_tlu_int_valid_wb1_raw, dec_tlu_int_valid_wb2;
-
-   assign {dec_tlu_i0_valid_wb1,
-           dec_tlu_i0_exc_valid_wb1,
-           dec_tlu_exc_cause_wb1_raw[4:0],
-           dec_tlu_int_valid_wb1_raw}  =   {8{~dec_tlu_trace_disable}} & {i0_valid_wb,
-                                                                          i0_exception_valid_r_d1 | lsu_i0_exc_r_d1 | (trigger_hit_r_d1 & ~trigger_hit_dmode_r_d1),
-                                                                          exc_cause_wb[4:0],
-                                                                          interrupt_valid_r_d1};
-
-
-
-  // skid buffer for ints, reduces trace port count by 1
-   rvdffie #(.WIDTH(6), .OVERRIDE(1))  traceskidff (.*,  .clk(clk),
-                        .din ({dec_tlu_exc_cause_wb1_raw[4:0],
-                               dec_tlu_int_valid_wb1_raw}),
-                        .dout({dec_tlu_exc_cause_wb2[4:0],
-                               dec_tlu_int_valid_wb2}));
-   //skid for ints
-   assign dec_tlu_exc_cause_wb1[4:0] =  dec_tlu_int_valid_wb2 ? dec_tlu_exc_cause_wb2[4:0] : dec_tlu_exc_cause_wb1_raw[4:0];
-   assign dec_tlu_int_valid_wb1 = dec_tlu_int_valid_wb2;
-
-   assign dec_tlu_mtval_wb1  = mtval[31:0];
-
-   // end trace
-   //--------------------------------------------------------------------------------
-
-
-   // ----------------------------------------------------------------------
-   // CSR read mux
-   // ----------------------------------------------------------------------
-
-// file "csrdecode" is human readable file that has all of the CSR decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "csrdecode" except legal equation:
-
-// 1) coredecode -in csrdecode > corecsrdecode.e
-
-// 2) espresso -Dso -oeqntott corecsrdecode.e | addassign  > csrequations
-
-// to generate the legal CSR equation below:
-
-// 1) coredecode -in csrdecode -legal > csrlegal.e
-
-// 2) espresso -Dso -oeqntott csrlegal.e | addassign  > csrlegal_equation
-// coredecode -in csrdecode > corecsrdecode.e; espresso -Dso -oeqntott corecsrdecode.e | addassign  > csrequations; coredecode -in csrdecode -legal > csrlegal.e; espresso -Dso -oeqntott csrlegal.e | addassign  > csrlegal_equation
-
-assign csr_misa = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mvendorid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_marchid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mimpid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mhartid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_mstatus = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mtvec = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mip = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[2]);
-
-assign csr_mie = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mcyclel = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]);
-
-assign csr_mcycleh = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_minstretl = (!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_minstreth = (!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mscratch = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mepc = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mcause = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mscause = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_mtval = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mrac = (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_dmst = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_mdseac = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]);
-
-assign csr_meihap = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[3]);
-
-assign csr_meivt = (!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_meipt = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_meicurpl = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_meicidpl = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dcsr = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mcgc = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdc = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dpc = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[0]);
-
-assign csr_mtsel = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mtdata1 = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]);
-
-assign csr_mtdata2 = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[1]);
-
-assign csr_mhpmc3 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc4 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc5 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc6 = (!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc3h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc4h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc5h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc6h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme3 = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme4 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme5 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme6 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mcountinhibit = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mitctl0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitctl1 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mitb0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mitb1 = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitcnt0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitcnt1 = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mpmc = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign csr_meicpct = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_micect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_miccmect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]);
-
-assign csr_mdccmect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdht = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdhs = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_dicawics = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_dicad0h = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_dicad0 = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dicad1 = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_dicago = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign presync = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign postsync = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[10]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign legal = (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]) | (
-    dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]) | (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]) | (dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[3]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[3]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]);
-
-
-
-assign dec_tlu_presync_d = presync & dec_csr_any_unq_d & ~dec_csr_wen_unq_d;
-assign dec_tlu_postsync_d = postsync & dec_csr_any_unq_d;
-
-   // allow individual configuration of these features
-assign conditionally_illegal = ((csr_mitcnt0 | csr_mitcnt1 | csr_mitb0 | csr_mitb1 | csr_mitctl0 | csr_mitctl1) & !pt.TIMER_LEGAL_EN);
-
-assign valid_csr = ( legal & (~(csr_dcsr | csr_dpc | csr_dmst | csr_dicawics | csr_dicad0 | csr_dicad0h | csr_dicad1 | csr_dicago) | dbg_tlu_halted_f)
-                     & ~fast_int_meicpct & ~conditionally_illegal);
-
-assign dec_csr_legal_d = ( dec_csr_any_unq_d &
-                           valid_csr &          // of a valid CSR
-                           ~(dec_csr_wen_unq_d & (csr_mvendorid | csr_marchid | csr_mimpid | csr_mhartid | csr_mdseac | csr_meihap)) // that's not a write to a RO CSR
-                           );
-   // CSR read mux
-assign dec_csr_rddata_d[31:0] = ( ({32{csr_misa}}      & 32'h40201104) |
-                                  ({32{csr_mvendorid}} & 32'h00000045) |
-                                  ({32{csr_marchid}}   & 32'h00000010) |
-                                  ({32{csr_mimpid}}    & 32'h3) |
-                                  ({32{csr_mhartid}}   & {core_id[31:4], 4'b0}) |
-                                  ({32{csr_mstatus}}   & {{15{1'b0}}, 2'b01, 2'b00, 2'b11, 3'b0, mstatus[1], 3'b0, mstatus[0], 3'b0}) |
-                                  ({32{csr_mtvec}}     & {mtvec[30:1], 1'b0, mtvec[0]}) |
-                                  ({32{csr_mip}}       & {1'b0, mip[5:3], 16'b0, mip[2], 3'b0, mip[1], 3'b0, mip[0], 3'b0}) |
-                                  ({32{csr_mie}}       & {1'b0, mie[5:3], 16'b0, mie[2], 3'b0, mie[1], 3'b0, mie[0], 3'b0}) |
-                                  ({32{csr_mcyclel}}   & mcyclel[31:0]) |
-                                  ({32{csr_mcycleh}}   & mcycleh_inc[31:0]) |
-                                  ({32{csr_minstretl}} & minstretl_read[31:0]) |
-                                  ({32{csr_minstreth}} & minstreth_read[31:0]) |
-                                  ({32{csr_mscratch}}  & mscratch[31:0]) |
-                                  ({32{csr_mepc}}      & {mepc[31:1], 1'b0}) |
-                                  ({32{csr_mcause}}    & mcause[31:0]) |
-                                  ({32{csr_mscause}}   & {28'b0, mscause[3:0]}) |
-                                  ({32{csr_mtval}}     & mtval[31:0]) |
-                                  ({32{csr_mrac}}      & mrac[31:0]) |
-                                  ({32{csr_mdseac}}    & mdseac[31:0]) |
-                                  ({32{csr_meivt}}     & {meivt[31:10], 10'b0}) |
-                                  ({32{csr_meihap}}    & {meivt[31:10], meihap[9:2], 2'b0}) |
-                                  ({32{csr_meicurpl}}  & {28'b0, meicurpl[3:0]}) |
-                                  ({32{csr_meicidpl}}  & {28'b0, meicidpl[3:0]}) |
-                                  ({32{csr_meipt}}     & {28'b0, meipt[3:0]}) |
-                                  ({32{csr_mcgc}}      & {22'b0, mcgc[9:0]}) |
-                                  ({32{csr_mfdc}}      & {13'b0, mfdc[18:0]}) |
-                                  ({32{csr_dcsr}}      & {16'h4000, dcsr[15:2], 2'b11}) |
-                                  ({32{csr_dpc}}       & {dpc[31:1], 1'b0}) |
-                                  ({32{csr_dicad0}}    & dicad0[31:0]) |
-                                  ({32{csr_dicad0h}}   & dicad0h[31:0]) |
-                                  ({32{csr_dicad1}}    & dicad1[31:0]) |
-                                  ({32{csr_dicawics}}  & {7'b0, dicawics[16], 2'b0, dicawics[15:14], 3'b0, dicawics[13:0], 3'b0}) |
-                                  ({32{csr_mtsel}}     & {30'b0, mtsel[1:0]}) |
-                                  ({32{csr_mtdata1}}   & {mtdata1_tsel_out[31:0]}) |
-                                  ({32{csr_mtdata2}}   & {mtdata2_tsel_out[31:0]}) |
-                                  ({32{csr_micect}}    & {micect[31:0]}) |
-                                  ({32{csr_miccmect}}  & {miccmect[31:0]}) |
-                                  ({32{csr_mdccmect}}  & {mdccmect[31:0]}) |
-                                  ({32{csr_mhpmc3}}    & mhpmc3[31:0]) |
-                                  ({32{csr_mhpmc4}}    & mhpmc4[31:0]) |
-                                  ({32{csr_mhpmc5}}    & mhpmc5[31:0]) |
-                                  ({32{csr_mhpmc6}}    & mhpmc6[31:0]) |
-                                  ({32{csr_mhpmc3h}}   & mhpmc3h[31:0]) |
-                                  ({32{csr_mhpmc4h}}   & mhpmc4h[31:0]) |
-                                  ({32{csr_mhpmc5h}}   & mhpmc5h[31:0]) |
-                                  ({32{csr_mhpmc6h}}   & mhpmc6h[31:0]) |
-                                  ({32{csr_mfdht}}     & {26'b0, mfdht[5:0]}) |
-                                  ({32{csr_mfdhs}}     & {30'b0, mfdhs[1:0]}) |
-                                  ({32{csr_mhpme3}}    & {22'b0,mhpme3[9:0]}) |
-                                  ({32{csr_mhpme4}}    & {22'b0,mhpme4[9:0]}) |
-                                  ({32{csr_mhpme5}}    & {22'b0,mhpme5[9:0]}) |
-                                  ({32{csr_mhpme6}}    & {22'b0,mhpme6[9:0]}) |
-                                  ({32{csr_mcountinhibit}} & {25'b0, mcountinhibit[6:0]}) |
-                                  ({32{csr_mpmc}}      & {30'b0, mpmc[1], 1'b0}) |
-                                  ({32{dec_timer_read_d}} & dec_timer_rddata_d[31:0])
-                                  );
-
-
-
-endmodule // eb1_dec_tlu_ctl
-
-module eb1_dec_timer_ctl 
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic clk,
-   input logic free_l2clk,
-   input logic csr_wr_clk,
-   input logic rst_l,
-   input logic        dec_csr_wen_r_mod,      // csr write enable at wb
-   input logic [11:0] dec_csr_wraddr_r,      // write address for csr
-   input logic [31:0] dec_csr_wrdata_r,   // csr write data at wb
-
-   input logic csr_mitctl0,
-   input logic csr_mitctl1,
-   input logic csr_mitb0,
-   input logic csr_mitb1,
-   input logic csr_mitcnt0,
-   input logic csr_mitcnt1,
-
-
-   input logic dec_pause_state, // Paused
-   input logic dec_tlu_pmu_fw_halted, // pmu/fw halted
-   input logic internal_dbg_halt_timers, // debug halted
-
-   output logic [31:0] dec_timer_rddata_d, // timer CSR read data
-   output logic        dec_timer_read_d, // timer CSR address match
-   output logic        dec_timer_t0_pulse, // timer0 int
-   output logic        dec_timer_t1_pulse, // timer1 int
-
-   input  logic        scan_mode
-   );
-   localparam MITCTL_ENABLE             = 0;
-   localparam MITCTL_ENABLE_HALTED      = 1;
-   localparam MITCTL_ENABLE_PAUSED      = 2;
-
-   logic [31:0] mitcnt0_ns, mitcnt0, mitcnt1_ns, mitcnt1, mitb0, mitb1, mitb0_b, mitb1_b, mitcnt0_inc, mitcnt1_inc;
-   logic [2:0] mitctl0_ns, mitctl0;
-   logic [3:0] mitctl1_ns, mitctl1;
-   logic wr_mitcnt0_r, wr_mitcnt1_r, wr_mitb0_r, wr_mitb1_r, wr_mitctl0_r, wr_mitctl1_r;
-   logic mitcnt0_inc_ok, mitcnt1_inc_ok;
-   logic mitcnt0_inc_cout, mitcnt1_inc_cout;
- logic mit0_match_ns;
- logic mit1_match_ns;
- logic mitctl0_0_b_ns;
- logic mitctl0_0_b;
- logic mitctl1_0_b_ns;
- logic mitctl1_0_b;
-
-   assign mit0_match_ns = (mitcnt0[31:0] >= mitb0[31:0]);
-   assign mit1_match_ns = (mitcnt1[31:0] >= mitb1[31:0]);
-
-   assign dec_timer_t0_pulse = mit0_match_ns;
-   assign dec_timer_t1_pulse = mit1_match_ns;
-   // ----------------------------------------------------------------------
-   // MITCNT0 (RW)
-   // [31:0] : Internal Timer Counter 0
-
-   localparam MITCNT0       = 12'h7d2;
-
-   assign wr_mitcnt0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCNT0);
-
-   assign mitcnt0_inc_ok = mitctl0[MITCTL_ENABLE] & (~dec_pause_state | mitctl0[MITCTL_ENABLE_PAUSED]) & (~dec_tlu_pmu_fw_halted | mitctl0[MITCTL_ENABLE_HALTED]) & ~internal_dbg_halt_timers;
-
-   assign {mitcnt0_inc_cout, mitcnt0_inc[7:0]} = mitcnt0[7:0] + {7'b0, 1'b1};
-   assign mitcnt0_inc[31:8] = mitcnt0[31:8] + {23'b0, mitcnt0_inc_cout};
-
-   assign mitcnt0_ns[31:0]  = wr_mitcnt0_r ? dec_csr_wrdata_r[31:0] : mit0_match_ns ? 'b0 : mitcnt0_inc[31:0];
-
-   rvdffe #(24) mitcnt0_ffb      (.*, .clk(free_l2clk), .en(wr_mitcnt0_r | (mitcnt0_inc_ok & mitcnt0_inc_cout) | mit0_match_ns), .din(mitcnt0_ns[31:8]), .dout(mitcnt0[31:8]));
-   rvdffe #(8)  mitcnt0_ffa      (.*, .clk(free_l2clk), .en(wr_mitcnt0_r | mitcnt0_inc_ok | mit0_match_ns),                       .din(mitcnt0_ns[7:0]), .dout(mitcnt0[7:0]));
-
-   // ----------------------------------------------------------------------
-   // MITCNT1 (RW)
-   // [31:0] : Internal Timer Counter 0
-
-   localparam MITCNT1       = 12'h7d5;
-
-   assign wr_mitcnt1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCNT1);
-
-   assign mitcnt1_inc_ok = mitctl1[MITCTL_ENABLE] &
-                           (~dec_pause_state | mitctl1[MITCTL_ENABLE_PAUSED]) &
-                           (~dec_tlu_pmu_fw_halted | mitctl1[MITCTL_ENABLE_HALTED]) &
-                           ~internal_dbg_halt_timers &
-                           (~mitctl1[3] | mit0_match_ns);
-
-   // only inc MITCNT1 if not cascaded with 0, or if 0 overflows
-   assign {mitcnt1_inc_cout, mitcnt1_inc[7:0]} = mitcnt1[7:0] + {7'b0, 1'b1};
-   assign mitcnt1_inc[31:8] = mitcnt1[31:8] + {23'b0, mitcnt1_inc_cout};
-
-   assign mitcnt1_ns[31:0]  = wr_mitcnt1_r ? dec_csr_wrdata_r[31:0] : mit1_match_ns ? 'b0 : mitcnt1_inc[31:0];
-
-   rvdffe #(24) mitcnt1_ffb      (.*, .clk(free_l2clk), .en(wr_mitcnt1_r | (mitcnt1_inc_ok & mitcnt1_inc_cout) | mit1_match_ns), .din(mitcnt1_ns[31:8]), .dout(mitcnt1[31:8]));
-   rvdffe #(8)  mitcnt1_ffa      (.*, .clk(free_l2clk), .en(wr_mitcnt1_r | mitcnt1_inc_ok | mit1_match_ns),                       .din(mitcnt1_ns[7:0]), .dout(mitcnt1[7:0]));
-
-
-   // ----------------------------------------------------------------------
-   // MITB0 (RW)
-   // [31:0] : Internal Timer Bound 0
-
-   localparam MITB0         = 12'h7d3;
-
-   assign wr_mitb0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITB0);
-
-   rvdffe #(32) mitb0_ff      (.*, .en(wr_mitb0_r), .din(~dec_csr_wrdata_r[31:0]), .dout(mitb0_b[31:0]));
-   assign mitb0[31:0] = ~mitb0_b[31:0];
-
-   // ----------------------------------------------------------------------
-   // MITB1 (RW)
-   // [31:0] : Internal Timer Bound 1
-
-   localparam MITB1         = 12'h7d6;
-
-   assign wr_mitb1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITB1);
-
-   rvdffe #(32) mitb1_ff      (.*, .en(wr_mitb1_r), .din(~dec_csr_wrdata_r[31:0]), .dout(mitb1_b[31:0]));
-   assign mitb1[31:0] = ~mitb1_b[31:0];
-
-   // ----------------------------------------------------------------------
-   // MITCTL0 (RW) Internal Timer Ctl 0
-   // [31:3] : Reserved, reads 0x0
-   // [2]    : Enable while PAUSEd
-   // [1]    : Enable while HALTed
-   // [0]    : Enable (resets to 0x1)
-
-   localparam MITCTL0       = 12'h7d4;
-
-   assign wr_mitctl0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCTL0);
-   assign mitctl0_ns[2:0] = wr_mitctl0_r ? {dec_csr_wrdata_r[2:0]} : {mitctl0[2:0]};
-
-   assign mitctl0_0_b_ns = ~mitctl0_ns[0];
-   rvdffs #(3) mitctl0_ff      (.*, .clk(csr_wr_clk), .en(wr_mitctl0_r), .din({mitctl0_ns[2:1], mitctl0_0_b_ns}), .dout({mitctl0[2:1], mitctl0_0_b}));
-   assign mitctl0[0] = ~mitctl0_0_b;
-
-   // ----------------------------------------------------------------------
-   // MITCTL1 (RW) Internal Timer Ctl 1
-   // [31:4] : Reserved, reads 0x0
-   // [3]    : Cascade
-   // [2]    : Enable while PAUSEd
-   // [1]    : Enable while HALTed
-   // [0]    : Enable (resets to 0x1)
-
-   localparam MITCTL1       = 12'h7d7;
-
-   assign wr_mitctl1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCTL1);
-   assign mitctl1_ns[3:0] = wr_mitctl1_r ? {dec_csr_wrdata_r[3:0]} : {mitctl1[3:0]};
-
-   assign mitctl1_0_b_ns = ~mitctl1_ns[0];
-   rvdffs #(4) mitctl1_ff      (.*, .clk(csr_wr_clk), .en(wr_mitctl1_r), .din({mitctl1_ns[3:1], mitctl1_0_b_ns}), .dout({mitctl1[3:1], mitctl1_0_b}));
-   assign mitctl1[0] = ~mitctl1_0_b;
-   assign dec_timer_read_d = csr_mitcnt1 | csr_mitcnt0 | csr_mitb1 | csr_mitb0 | csr_mitctl0 | csr_mitctl1;
-   assign dec_timer_rddata_d[31:0] = ( ({32{csr_mitcnt0}}      & mitcnt0[31:0]) |
-                                       ({32{csr_mitcnt1}}      & mitcnt1[31:0]) |
-                                       ({32{csr_mitb0}}        & mitb0[31:0]) |
-                                       ({32{csr_mitb1}}        & mitb1[31:0]) |
-                                       ({32{csr_mitctl0}}      & {29'b0, mitctl0[2:0]}) |
-                                       ({32{csr_mitctl1}}      & {28'b0, mitctl1[3:0]})
-                                       );
-
-
-endmodule // dec_timer_ctl
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DEC Trigger Logic
-// Comments:
-//
-//********************************************************************************
-module eb1_dec_trigger
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-
-   input eb1_trigger_pkt_t [3:0] trigger_pkt_any,           // Packet from tlu. 'select':0-pc,1-Opcode  'Execute' needs to be set for dec triggers to fire. 'match'-1 do mask, 0: full match
-   input logic [31:1]  dec_i0_pc_d,                          // i0 pc
-
-   output logic [3:0] dec_i0_trigger_match_d                 // Trigger match
-);
-
-   logic [3:0][31:0]  dec_i0_match_data;
-   logic [3:0]        dec_i0_trigger_data_match;
-
-   for (genvar i=0; i<4; i++) begin
-      assign dec_i0_match_data[i][31:0] = ({32{~trigger_pkt_any[i].select & trigger_pkt_any[i].execute}} & {dec_i0_pc_d[31:1], trigger_pkt_any[i].tdata2[0]});      // select=0; do a PC match
-
-      rvmaskandmatch trigger_i0_match (.mask(trigger_pkt_any[i].tdata2[31:0]), .data(dec_i0_match_data[i][31:0]), .masken(trigger_pkt_any[i].match), .match(dec_i0_trigger_data_match[i]));
-
-      assign dec_i0_trigger_match_d[i] = trigger_pkt_any[i].execute & trigger_pkt_any[i].m & dec_i0_trigger_data_match[i];
-   end
-
-endmodule // eb1_dec_trigger
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic          clk,                                           // Top level clock
-   input logic          rst_l,                                         // Reset
-   input logic          scan_mode,                                     // Scan control
-
-   input logic  [1:0]   dec_data_en,                                   // Clock enable {x,r}, one cycle pulse
-   input logic  [1:0]   dec_ctl_en,                                    // Clock enable {x,r}, two cycle pulse
-   input logic  [31:0]  dbg_cmd_wrdata,                                // Debug data   to primary I0 RS1
-   input eb1_alu_pkt_t i0_ap,                                         // DEC alu {valid,predecodes}
-
-   input logic          dec_debug_wdata_rs1_d,                         // Debug select to primary I0 RS1
-
-   input eb1_predict_pkt_t dec_i0_predict_p_d,                        // DEC branch predict packet
-   input logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d,                // DEC predict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d,     // DEC predict index
-   input logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d,               // DEC predict branch tag
-
-   input logic  [31:0]  lsu_result_m,                                  // Load result M-stage
-   input logic  [31:0]  lsu_nonblock_load_data,                        // nonblock load data
-   input logic          dec_i0_rs1_en_d,                               // Qualify GPR RS1 data
-   input logic          dec_i0_rs2_en_d,                               // Qualify GPR RS2 data
-   input logic  [31:0]  gpr_i0_rs1_d,                                  // DEC data gpr
-   input logic  [31:0]  gpr_i0_rs2_d,                                  // DEC data gpr
-   input logic  [31:0]  dec_i0_immed_d,                                // DEC data immediate
-   input logic  [31:0]  dec_i0_result_r,                               // DEC result in R-stage
-   input logic  [12:1]  dec_i0_br_immed_d,                             // Branch immediate
-   input logic          dec_i0_alu_decode_d,                           // Valid to X-stage ALU
-   input logic          dec_i0_branch_d,                               // Branch in D-stage
-   input logic          dec_i0_select_pc_d,                            // PC select to RS1
-   input logic  [31:1]  dec_i0_pc_d,                                   // Instruction PC
-   input logic  [3:0]   dec_i0_rs1_bypass_en_d,                        // DEC bypass select  1 - X-stage, 0 - dec bypass data
-   input logic  [3:0]   dec_i0_rs2_bypass_en_d,                        // DEC bypass select  1 - X-stage, 0 - dec bypass data
-   input logic          dec_csr_ren_d,                                 // CSR read select
-   input logic  [31:0]  dec_csr_rddata_d,                              // CSR read data
-
-   input logic          dec_qual_lsu_d,                                // LSU instruction at D.  Use to quiet LSU operands
-   input eb1_mul_pkt_t mul_p,                                         // DEC {valid, operand signs, low, operand bypass}
-   input eb1_div_pkt_t div_p,                                         // DEC {valid, unsigned, rem}
-   input logic          dec_div_cancel,                                // Cancel the divide operation
-
-   input logic  [31:1]  pred_correct_npc_x,                            // DEC NPC for correctly predicted branch
-
-   input logic          dec_tlu_flush_lower_r,                         // Flush divide and secondary ALUs
-   input logic  [31:1]  dec_tlu_flush_path_r,                          // Redirect target
-
-
-   input logic         dec_extint_stall,                               // External stall mux select
-   input logic [31:2]  dec_tlu_meihap,                                 // External stall mux data
-
-
-   output logic [31:0]  exu_lsu_rs1_d,                                 // LSU operand
-   output logic [31:0]  exu_lsu_rs2_d,                                 // LSU operand
-
-   output logic         exu_flush_final,                               // Pipe is being flushed this cycle
-   output logic [31:1]  exu_flush_path_final,                          // Target for the oldest flush source
-
-   output logic [31:0]  exu_i0_result_x,                               // Primary ALU result to DEC
-   output logic [31:1]  exu_i0_pc_x,                                   // Primary PC  result to DEC
-   output logic [31:0]  exu_csr_rs1_x,                                 // RS1 source for a CSR instruction
-
-   output logic [31:1]  exu_npc_r,                                     // Divide NPC
-   output logic [1:0]   exu_i0_br_hist_r,                              // to DEC  I0 branch history
-   output logic         exu_i0_br_error_r,                             // to DEC  I0 branch error
-   output logic         exu_i0_br_start_error_r,                       // to DEC  I0 branch start error
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r,     // to DEC  I0 branch index
-   output logic         exu_i0_br_valid_r,                             // to DEC  I0 branch valid
-   output logic         exu_i0_br_mp_r,                                // to DEC  I0 branch mispredict
-   output logic         exu_i0_br_middle_r,                            // to DEC  I0 branch middle
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_i0_br_fghr_r,               // to DEC  I0 branch fghr
-   output logic         exu_i0_br_way_r,                               // to DEC  I0 branch way
-
-   output eb1_predict_pkt_t exu_mp_pkt,                               // Mispredict branch packet
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_eghr,                    // Mispredict global history
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   output logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-
-   output logic         exu_pmu_i0_br_misp,                            // to PMU - I0 E4 branch mispredict
-   output logic         exu_pmu_i0_br_ataken,                          // to PMU - I0 E4 taken
-   output logic         exu_pmu_i0_pc4,                                // to PMU - I0 E4 PC
-
-
-   output logic [31:0]  exu_div_result,                                // Divide result
-   output logic         exu_div_wren                                   // Divide write enable to GPR
-  );
-
-
-
-
-   logic [31:0]                i0_rs1_bypass_data_d;
-   logic [31:0]                i0_rs2_bypass_data_d;
-   logic                       i0_rs1_bypass_en_d;
-   logic                       i0_rs2_bypass_en_d;
-   logic [31:0]                i0_rs1_d,  i0_rs2_d;
-   logic [31:0]                muldiv_rs1_d;
-   logic [31:1]                pred_correct_npc_r;
-   logic                       i0_pred_correct_upper_r;
-   logic [31:1]                i0_flush_path_upper_r;
-   logic                       x_data_en, x_data_en_q1, x_data_en_q2, r_data_en, r_data_en_q2;
-   logic                       x_ctl_en,  r_ctl_en;
-
-   logic [pt.BHT_GHR_SIZE-1:0] ghr_d_ns, ghr_d;
-   logic [pt.BHT_GHR_SIZE-1:0] ghr_x_ns, ghr_x;
-   logic                       i0_taken_d;
-   logic                       i0_taken_x;
-   logic                       i0_valid_d;
-   logic                       i0_valid_x;
-   logic [pt.BHT_GHR_SIZE-1:0] after_flush_eghr;
-
-   eb1_predict_pkt_t          final_predict_mp;
-   eb1_predict_pkt_t          i0_predict_newp_d;
-
-   logic                       flush_in_d;
-   logic [31:0]                alu_result_x;
-
-   logic                       mul_valid_x;
-   logic [31:0]                mul_result_x;
-
-   eb1_predict_pkt_t          i0_pp_r;
-
-   logic                       i0_flush_upper_d;
-   logic [31:1]                i0_flush_path_d;
-   eb1_predict_pkt_t          i0_predict_p_d;
-   logic                       i0_pred_correct_upper_d;
-
-   logic                       i0_flush_upper_x;
-   logic [31:1]                i0_flush_path_x;
-   eb1_predict_pkt_t          i0_predict_p_x;
-   logic                       i0_pred_correct_upper_x;
-   logic                       i0_branch_x;
-
-   localparam PREDPIPESIZE = pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1+pt.BHT_GHR_SIZE+pt.BTB_BTAG_SIZE;
-   logic [PREDPIPESIZE-1:0]    predpipe_d, predpipe_x, predpipe_r, final_predpipe_mp;
-
-
-
-
-   rvdffpcie #(31)                       i_flush_path_x_ff    (.*, .clk(clk),        .en ( x_data_en     ),  .din ( i0_flush_path_d[31:1]         ),  .dout( i0_flush_path_x[31:1]      ) );
-   rvdffe #(32)                          i_csr_rs1_x_ff       (.*, .clk(clk),        .en ( x_data_en_q1  ),  .din ( i0_rs1_d[31:0]                ),  .dout( exu_csr_rs1_x[31:0]        ) );
-   rvdffppe #($bits(eb1_predict_pkt_t)) i_predictpacket_x_ff (.*, .clk(clk),        .en ( x_data_en     ),  .din ( i0_predict_p_d                ),  .dout( i0_predict_p_x             ) );
-   rvdffe #(PREDPIPESIZE)                i_predpipe_x_ff      (.*, .clk(clk),        .en ( x_data_en_q2  ),  .din ( predpipe_d                    ),  .dout( predpipe_x                 ) );
-   rvdffe #(PREDPIPESIZE)                i_predpipe_r_ff      (.*, .clk(clk),        .en ( r_data_en_q2  ),  .din ( predpipe_x                    ),  .dout( predpipe_r                 ) );
-
-   rvdffe #(4+pt.BHT_GHR_SIZE)          i_x_ff               (.*, .clk(clk),        .en ( x_ctl_en      ),  .din ({i0_valid_d,i0_taken_d,i0_flush_upper_d,i0_pred_correct_upper_d,ghr_x_ns[pt.BHT_GHR_SIZE-1:0]} ),
-                                                                                                            .dout({i0_valid_x,i0_taken_x,i0_flush_upper_x,i0_pred_correct_upper_x,ghr_x[pt.BHT_GHR_SIZE-1:0]}    ) );
-
-   rvdffppe #($bits(eb1_predict_pkt_t)+1) i_r_ff0         (.*, .clk(clk),        .en ( r_ctl_en      ),  .din ({i0_pred_correct_upper_x, i0_predict_p_x}),
-                                                                                                          .dout({i0_pred_correct_upper_r, i0_pp_r       }) );
-
-   rvdffpcie #(31)                      i_flush_r_ff         (.*, .clk(clk),        .en ( r_data_en     ),  .din ( i0_flush_path_x[31:1]         ),  .dout( i0_flush_path_upper_r[31:1]) );
-   rvdffpcie #(31)                      i_npc_r_ff           (.*, .clk(clk),        .en ( r_data_en     ),  .din ( pred_correct_npc_x[31:1]      ),  .dout( pred_correct_npc_r[31:1]   ) );
-
-   rvdffie #(pt.BHT_GHR_SIZE+2,1)       i_misc_ff            (.*, .clk(clk),                                .din ({ghr_d_ns[pt.BHT_GHR_SIZE-1:0], mul_p.valid, dec_i0_branch_d}),
-                                                                                                            .dout({ghr_d[pt.BHT_GHR_SIZE-1:0]   , mul_valid_x, i0_branch_x}) );
-
-
-
-
-
-   assign predpipe_d[PREDPIPESIZE-1:0]
-                                   = {i0_predict_fghr_d, i0_predict_index_d, i0_predict_btag_d};
-
-
-   assign i0_rs1_bypass_en_d       = dec_i0_rs1_bypass_en_d[0] | dec_i0_rs1_bypass_en_d[1] | dec_i0_rs1_bypass_en_d[2] | dec_i0_rs1_bypass_en_d[3];
-   assign i0_rs2_bypass_en_d       = dec_i0_rs2_bypass_en_d[0] | dec_i0_rs2_bypass_en_d[1] | dec_i0_rs2_bypass_en_d[2] | dec_i0_rs2_bypass_en_d[3];
-
-   assign i0_rs1_bypass_data_d[31:0]=({32{dec_i0_rs1_bypass_en_d[0]}} & dec_i0_result_r[31:0]       ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[1]}} & lsu_result_m[31:0]          ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[2]}} & exu_i0_result_x[31:0]       ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[3]}} & lsu_nonblock_load_data[31:0]);
-
-   assign i0_rs2_bypass_data_d[31:0]=({32{dec_i0_rs2_bypass_en_d[0]}} & dec_i0_result_r[31:0]       ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[1]}} & lsu_result_m[31:0]          ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[2]}} & exu_i0_result_x[31:0]       ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[3]}} & lsu_nonblock_load_data[31:0]);
-
-
-   assign i0_rs1_d[31:0]           = ({32{ i0_rs1_bypass_en_d                                           }}             & i0_rs1_bypass_data_d[31:0]) |
-                                     ({32{~i0_rs1_bypass_en_d &  dec_i0_select_pc_d                     }}             & {dec_i0_pc_d[31:1],1'b0}  ) |    // for jal's
-                                     ({32{~i0_rs1_bypass_en_d &  dec_debug_wdata_rs1_d                  }}             & dbg_cmd_wrdata[31:0]      ) |
-                                     ({32{~i0_rs1_bypass_en_d & ~dec_debug_wdata_rs1_d & dec_i0_rs1_en_d}}             & gpr_i0_rs1_d[31:0]        );
-
-   assign i0_rs2_d[31:0]           = ({32{~i0_rs2_bypass_en_d & dec_i0_rs2_en_d}}                                      & gpr_i0_rs2_d[31:0]        ) |
-                                     ({32{~i0_rs2_bypass_en_d                  }}                                      & dec_i0_immed_d[31:0]      ) |
-                                     ({32{ i0_rs2_bypass_en_d                  }}                                      & i0_rs2_bypass_data_d[31:0]);
-
-
-   assign exu_lsu_rs1_d[31:0]      = ({32{~i0_rs1_bypass_en_d & ~dec_extint_stall & dec_i0_rs1_en_d & dec_qual_lsu_d}} & gpr_i0_rs1_d[31:0]        ) |
-                                     ({32{ i0_rs1_bypass_en_d & ~dec_extint_stall                   & dec_qual_lsu_d}} & i0_rs1_bypass_data_d[31:0]) |
-                                     ({32{                       dec_extint_stall                   & dec_qual_lsu_d}} & {dec_tlu_meihap[31:2],2'b0});
-
-   assign exu_lsu_rs2_d[31:0]      = ({32{~i0_rs2_bypass_en_d & ~dec_extint_stall & dec_i0_rs2_en_d & dec_qual_lsu_d}} & gpr_i0_rs2_d[31:0]        ) |
-                                     ({32{ i0_rs2_bypass_en_d & ~dec_extint_stall                   & dec_qual_lsu_d}} & i0_rs2_bypass_data_d[31:0]);
-
-
-   assign muldiv_rs1_d[31:0]       = ({32{~i0_rs1_bypass_en_d & dec_i0_rs1_en_d}}                                      & gpr_i0_rs1_d[31:0]        ) |
-                                     ({32{ i0_rs1_bypass_en_d                  }}                                      & i0_rs1_bypass_data_d[31:0]);
-
-
-   assign x_data_en                =  dec_data_en[1];
-   assign x_data_en_q1             =  dec_data_en[1] & dec_csr_ren_d;
-   assign x_data_en_q2             =  dec_data_en[1] & dec_i0_branch_d;
-   assign r_data_en                =  dec_data_en[0];
-   assign r_data_en_q2             =  dec_data_en[0] & i0_branch_x;
-   assign x_ctl_en                 =  dec_ctl_en[1];
-   assign r_ctl_en                 =  dec_ctl_en[0];
-
-
-
-
-   eb1_exu_alu_ctl #(.pt(pt)) i_alu  (.*,
-                          .enable            ( x_data_en                   ),   // I
-                          .pp_in             ( i0_predict_newp_d           ),   // I
-                          .valid_in          ( dec_i0_alu_decode_d         ),   // I
-                          .flush_upper_x     ( i0_flush_upper_x            ),   // I
-                          .flush_lower_r     ( dec_tlu_flush_lower_r       ),   // I
-                          .a_in              ( i0_rs1_d[31:0]              ),   // I
-                          .b_in              ( i0_rs2_d[31:0]              ),   // I
-                          .pc_in             ( dec_i0_pc_d[31:1]           ),   // I
-                          .brimm_in          ( dec_i0_br_immed_d[12:1]     ),   // I
-                          .ap                ( i0_ap                       ),   // I
-                          .csr_ren_in        ( dec_csr_ren_d               ),   // I
-                          .csr_rddata_in     ( dec_csr_rddata_d[31:0]      ),   // I
-                          .result_ff         ( alu_result_x[31:0]          ),   // O
-                          .flush_upper_out   ( i0_flush_upper_d            ),   // O
-                          .flush_final_out   ( exu_flush_final             ),   // O
-                          .flush_path_out    ( i0_flush_path_d[31:1]       ),   // O
-                          .predict_p_out     ( i0_predict_p_d              ),   // O
-                          .pred_correct_out  ( i0_pred_correct_upper_d     ),   // O
-                          .pc_ff             ( exu_i0_pc_x[31:1]           ));  // O
-
-
-
-   eb1_exu_mul_ctl #(.pt(pt)) i_mul   (.*,
-                          .mul_p             ( mul_p              & {$bits(eb1_mul_pkt_t){mul_p.valid}} ),   // I
-                          .rs1_in            ( muldiv_rs1_d[31:0] & {32{mul_p.valid}}                    ),   // I
-                          .rs2_in            ( i0_rs2_d[31:0]     & {32{mul_p.valid}}                    ),   // I
-                          .result_x          ( mul_result_x[31:0]                                        ));  // O
-
-
-
-   eb1_exu_div_ctl #(.pt(pt)) i_div   (.*,
-                          .cancel            ( dec_div_cancel              ),   // I
-                          .dp                ( div_p                       ),   // I
-                          .dividend          ( muldiv_rs1_d[31:0]          ),   // I
-                          .divisor           ( i0_rs2_d[31:0]              ),   // I
-                          .finish_dly        ( exu_div_wren                ),   // O
-                          .out               ( exu_div_result[31:0]        ));  // O
-
-
-
-   assign exu_i0_result_x[31:0]    =  (mul_valid_x)  ?  mul_result_x[31:0]  :  alu_result_x[31:0];
-
-
-
-
-   always_comb begin
-      i0_predict_newp_d            =  dec_i0_predict_p_d;
-      i0_predict_newp_d.boffset    =  dec_i0_pc_d[1];  // from the start of inst
-   end
-
-
-   assign exu_pmu_i0_br_misp       =  i0_pp_r.misp;
-   assign exu_pmu_i0_br_ataken     =  i0_pp_r.ataken;
-   assign exu_pmu_i0_pc4           =  i0_pp_r.pc4;
-
-
-   assign i0_valid_d               =  i0_predict_p_d.valid  & dec_i0_alu_decode_d & ~dec_tlu_flush_lower_r;
-   assign i0_taken_d               = (i0_predict_p_d.ataken & dec_i0_alu_decode_d);
-
-if(pt.BTB_ENABLE==1) begin
-   // maintain GHR at D
-   assign ghr_d_ns[pt.BHT_GHR_SIZE-1:0]
-                                   = ({pt.BHT_GHR_SIZE{~dec_tlu_flush_lower_r &  i0_valid_d}} & {ghr_d[pt.BHT_GHR_SIZE-2:0], i0_taken_d}) |
-                                     ({pt.BHT_GHR_SIZE{~dec_tlu_flush_lower_r & ~i0_valid_d}} &  ghr_d[pt.BHT_GHR_SIZE-1:0]             ) |
-                                     ({pt.BHT_GHR_SIZE{ dec_tlu_flush_lower_r              }} &  ghr_x[pt.BHT_GHR_SIZE-1:0]             );
-
-   // maintain GHR at X
-   assign ghr_x_ns[pt.BHT_GHR_SIZE-1:0]
-                                   = ({pt.BHT_GHR_SIZE{ i0_valid_x}} & {ghr_x[pt.BHT_GHR_SIZE-2:0], i0_taken_x}) |
-                                     ({pt.BHT_GHR_SIZE{~i0_valid_x}} &  ghr_x[pt.BHT_GHR_SIZE-1:0]             ) ;
-
-
-   assign exu_i0_br_valid_r                                 =  i0_pp_r.valid;
-   assign exu_i0_br_mp_r                                    =  i0_pp_r.misp;
-   assign exu_i0_br_way_r                                   =  i0_pp_r.way;
-   assign exu_i0_br_hist_r[1:0]                             =  {2{i0_pp_r.valid}} & i0_pp_r.hist[1:0];
-   assign exu_i0_br_error_r                                 =  i0_pp_r.br_error;
-   assign exu_i0_br_middle_r                                =  i0_pp_r.pc4 ^ i0_pp_r.boffset;
-   assign exu_i0_br_start_error_r                           =  i0_pp_r.br_start_error;
-
-   assign {exu_i0_br_fghr_r[pt.BHT_GHR_SIZE-1:0],
-           exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]}=  predpipe_r[PREDPIPESIZE-1:pt.BTB_BTAG_SIZE];
-
-
-   assign final_predict_mp                                  = (i0_flush_upper_x)  ?  i0_predict_p_x  :  '0;
-
-   assign final_predpipe_mp[PREDPIPESIZE-1:0]               = (i0_flush_upper_x)  ?  predpipe_x      :  '0;
-
-   assign after_flush_eghr[pt.BHT_GHR_SIZE-1:0]             = (i0_flush_upper_x & ~dec_tlu_flush_lower_r)  ?  ghr_d[pt.BHT_GHR_SIZE-1:0]  :  ghr_x[pt.BHT_GHR_SIZE-1:0];
-
-
-   assign exu_mp_pkt.valid                                  =  final_predict_mp.valid;
-   assign exu_mp_pkt.way                                    =  final_predict_mp.way;
-   assign exu_mp_pkt.misp                                   =  final_predict_mp.misp;
-   assign exu_mp_pkt.pcall                                  =  final_predict_mp.pcall;
-   assign exu_mp_pkt.pja                                    =  final_predict_mp.pja;
-   assign exu_mp_pkt.pret                                   =  final_predict_mp.pret;
-   assign exu_mp_pkt.ataken                                 =  final_predict_mp.ataken;
-   assign exu_mp_pkt.boffset                                =  final_predict_mp.boffset;
-   assign exu_mp_pkt.pc4                                    =  final_predict_mp.pc4;
-   assign exu_mp_pkt.hist[1:0]                              =  final_predict_mp.hist[1:0];
-   assign exu_mp_pkt.toffset[11:0]                          =  final_predict_mp.toffset[11:0];
-
-   assign exu_mp_fghr[pt.BHT_GHR_SIZE-1:0]                  =  after_flush_eghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign {exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],
-           exu_mp_btag[pt.BTB_BTAG_SIZE-1:0]}               =  final_predpipe_mp[PREDPIPESIZE-pt.BHT_GHR_SIZE-1:0];
-
-   assign exu_mp_eghr[pt.BHT_GHR_SIZE-1:0]                  =  final_predpipe_mp[PREDPIPESIZE-1:pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+pt.BTB_BTAG_SIZE+1]; // mp ghr for bht write
-end // if (pt.BTB_ENABLE==1)
-else begin
-   assign ghr_d_ns = '0;
-   assign ghr_x_ns = '0;
-   assign exu_mp_pkt = '0;
-   assign exu_mp_eghr = '0;
-   assign exu_mp_fghr = '0;
-   assign exu_mp_index = '0;
-   assign exu_mp_btag = '0;
-   assign exu_i0_br_hist_r = '0;
-   assign exu_i0_br_error_r = '0;
-   assign exu_i0_br_start_error_r = '0;
-   assign exu_i0_br_index_r = '0;
-   assign exu_i0_br_valid_r = '0;
-   assign exu_i0_br_mp_r = '0;
-   assign exu_i0_br_middle_r = '0;
-   assign exu_i0_br_fghr_r = '0;
-   assign exu_i0_br_way_r = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   assign exu_flush_path_final[31:1] = ( {31{ dec_tlu_flush_lower_r                   }} & dec_tlu_flush_path_r[31:1] ) |
-                                       ( {31{~dec_tlu_flush_lower_r & i0_flush_upper_d}} & i0_flush_path_d[31:1]      );
-
-   assign exu_npc_r[31:1]            = (i0_pred_correct_upper_r)  ?  pred_correct_npc_r[31:1]    :  i0_flush_path_upper_r[31:1];
-
-
-endmodule // eb1_exu
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Function: Top level brqrv core file
-// Comments:
-//
-//********************************************************************************
-
-module eb1_dma_ctrl 
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic         clk,
-   input logic         free_clk,
-   input logic         rst_l,
-   input logic         dma_bus_clk_en, // slave bus clock enable
-   input logic         clk_override,
-   input logic         scan_mode,
-
-   // Debug signals
-   input logic [31:0]  dbg_cmd_addr,
-   input logic [31:0]  dbg_cmd_wrdata,
-   input logic         dbg_cmd_valid,
-   input logic         dbg_cmd_write, // 1: write command, 0: read_command
-   input logic [1:0]   dbg_cmd_type, // 0:gpr 1:csr 2: memory
-   input logic [1:0]   dbg_cmd_size, // size of the abstract mem access debug command
-
-   input  logic        dbg_dma_bubble,   // Debug needs a bubble to send a valid
-   output logic        dma_dbg_ready,    // DMA is ready to accept debug request
-
-   output logic        dma_dbg_cmd_done,
-   output logic        dma_dbg_cmd_fail,
-   output logic [31:0] dma_dbg_rddata,
-
-   // Core side signals
-   output logic        dma_dccm_req,  // DMA dccm request (only one of dccm/iccm will be set)
-   output logic        dma_iccm_req,  // DMA iccm request
-   output logic [2:0]  dma_mem_tag,   // DMA Buffer entry number
-   output logic [31:0] dma_mem_addr,  // DMA request address
-   output logic [2:0]  dma_mem_sz,    // DMA request size
-   output logic        dma_mem_write, // DMA write to dccm/iccm
-   output logic [63:0] dma_mem_wdata, // DMA write data
-
-   input logic         dccm_dma_rvalid,    // dccm data valid for DMA read
-   input logic         dccm_dma_ecc_error, // ECC error on DMA read
-   input logic [2:0]   dccm_dma_rtag,      // Tag of the DMA req
-   input logic [63:0]  dccm_dma_rdata,     // dccm data for DMA read
-   input logic         iccm_dma_rvalid,    // iccm data valid for DMA read
-   input logic         iccm_dma_ecc_error, // ECC error on DMA read
-   input logic [2:0]   iccm_dma_rtag,      // Tag of the DMA req
-   input logic [63:0]  iccm_dma_rdata,     // iccm data for DMA read
-
-   output logic        dma_active,         // DMA is busy
-   output logic        dma_dccm_stall_any, // stall dccm pipe (bubble) so that DMA can proceed
-   output logic        dma_iccm_stall_any, // stall iccm pipe (bubble) so that DMA can proceed
-   input logic         dccm_ready, // dccm ready to accept DMA request
-   input logic         iccm_ready, // iccm ready to accept DMA request
-   input logic [2:0]   dec_tlu_dma_qos_prty,    // DMA QoS priority coming from MFDC [18:15]
-
-   // PMU signals
-   output logic        dma_pmu_dccm_read,
-   output logic        dma_pmu_dccm_write,
-   output logic        dma_pmu_any_read,
-   output logic        dma_pmu_any_write,
-
-   // AXI Write Channels
-   input  logic                        dma_axi_awvalid,
-   output logic                        dma_axi_awready,
-   input  logic [pt.DMA_BUS_TAG-1:0]   dma_axi_awid,
-   input  logic [31:0]                 dma_axi_awaddr,
-   input  logic [2:0]                  dma_axi_awsize,
-
-
-   input  logic                        dma_axi_wvalid,
-   output logic                        dma_axi_wready,
-   input  logic [63:0]                 dma_axi_wdata,
-   input  logic [7:0]                  dma_axi_wstrb,
-
-   output logic                        dma_axi_bvalid,
-   input  logic                        dma_axi_bready,
-   output logic [1:0]                  dma_axi_bresp,
-   output logic [pt.DMA_BUS_TAG-1:0]   dma_axi_bid,
-
-   // AXI Read Channels
-   input  logic                        dma_axi_arvalid,
-   output logic                        dma_axi_arready,
-   input  logic [pt.DMA_BUS_TAG-1:0]   dma_axi_arid,
-   input  logic [31:0]                 dma_axi_araddr,
-   input  logic [2:0]                  dma_axi_arsize,
-
-   output logic                        dma_axi_rvalid,
-   input  logic                        dma_axi_rready,
-   output logic [pt.DMA_BUS_TAG-1:0]   dma_axi_rid,
-   output logic [63:0]                 dma_axi_rdata,
-   output logic [1:0]                  dma_axi_rresp,
-   output logic                        dma_axi_rlast
-);
-
-
-   localparam DEPTH = pt.DMA_BUF_DEPTH;
-   localparam DEPTH_PTR = $clog2(DEPTH);
-   localparam NACK_COUNT = 7;
-
-   logic [DEPTH-1:0]        fifo_valid;
-   logic [DEPTH-1:0][1:0]   fifo_error;
-   logic [DEPTH-1:0]        fifo_error_bus;
-   logic [DEPTH-1:0]        fifo_rpend;
-   logic [DEPTH-1:0]        fifo_done;      // DMA trxn is done in core
-   logic [DEPTH-1:0]        fifo_done_bus;  // DMA trxn is done in core but synced to bus clock
-   logic [DEPTH-1:0][31:0]  fifo_addr;
-   logic [DEPTH-1:0][2:0]   fifo_sz;
-   logic [DEPTH-1:0][7:0]   fifo_byteen;
-   logic [DEPTH-1:0]        fifo_write;
-   logic [DEPTH-1:0]        fifo_posted_write;
-   logic [DEPTH-1:0]        fifo_dbg;
-   logic [DEPTH-1:0][63:0]  fifo_data;
-   logic [DEPTH-1:0][pt.DMA_BUS_TAG-1:0]  fifo_tag;
-   logic [DEPTH-1:0][pt.DMA_BUS_ID-1:0]   fifo_mid;
-   logic [DEPTH-1:0][pt.DMA_BUS_PRTY-1:0] fifo_prty;
-
-   logic [DEPTH-1:0]        fifo_cmd_en;
-   logic [DEPTH-1:0]        fifo_data_en;
-   logic [DEPTH-1:0]        fifo_pend_en;
-   logic [DEPTH-1:0]        fifo_done_en;
-   logic [DEPTH-1:0]        fifo_done_bus_en;
-   logic [DEPTH-1:0]        fifo_error_en;
-   logic [DEPTH-1:0]        fifo_error_bus_en;
-   logic [DEPTH-1:0]        fifo_reset;
-   logic [DEPTH-1:0][1:0]   fifo_error_in;
-   logic [DEPTH-1:0][63:0]  fifo_data_in;
-
-   logic                    fifo_write_in;
-   logic                    fifo_posted_write_in;
-   logic                    fifo_dbg_in;
-   logic [31:0]             fifo_addr_in;
-   logic [2:0]              fifo_sz_in;
-   logic [7:0]              fifo_byteen_in;
-
-   logic [DEPTH_PTR-1:0]    RspPtr, NxtRspPtr;
-   logic [DEPTH_PTR-1:0]    WrPtr, NxtWrPtr;
-   logic [DEPTH_PTR-1:0]    RdPtr, NxtRdPtr;
-   logic                    WrPtrEn, RdPtrEn, RspPtrEn;
-
-   logic [1:0]              dma_dbg_sz;
-   logic [1:0]              dma_dbg_addr;
-   logic [31:0]             dma_dbg_mem_rddata;
-   logic [31:0]             dma_dbg_mem_wrdata;
-   logic                    dma_dbg_cmd_error;
-   logic                    dma_dbg_cmd_done_q;
-
-   logic                    fifo_full, fifo_full_spec, fifo_empty;
-   logic                    dma_address_error, dma_alignment_error;
-   logic [3:0]              num_fifo_vld;
-   logic                    dma_mem_req;
-   logic [31:0]             dma_mem_addr_int;
-   logic [2:0]              dma_mem_sz_int;
-   logic [7:0]              dma_mem_byteen;
-   logic                    dma_mem_addr_in_dccm;
-   logic                    dma_mem_addr_in_iccm;
-   logic                    dma_mem_addr_in_pic;
-   logic                    dma_mem_addr_in_pic_region_nc;
-   logic                    dma_mem_addr_in_dccm_region_nc;
-   logic                    dma_mem_addr_in_iccm_region_nc;
-
-   logic [2:0]              dma_nack_count, dma_nack_count_d, dma_nack_count_csr;
-
-   logic                    dma_buffer_c1_clken;
-   logic                    dma_free_clken;
-   logic                    dma_buffer_c1_clk;
-   logic                    dma_free_clk;
-   logic                    dma_bus_clk;
-
-   logic                    bus_rsp_valid, bus_rsp_sent;
-   logic                    bus_cmd_valid, bus_cmd_sent;
-   logic                    bus_cmd_write, bus_cmd_posted_write;
-   logic [7:0]              bus_cmd_byteen;
-   logic [2:0]              bus_cmd_sz;
-   logic [31:0]             bus_cmd_addr;
-   logic [63:0]             bus_cmd_wdata;
-   logic [pt.DMA_BUS_TAG-1:0]  bus_cmd_tag;
-   logic [pt.DMA_BUS_ID-1:0]   bus_cmd_mid;
-   logic [pt.DMA_BUS_PRTY-1:0] bus_cmd_prty;
-   logic                    bus_posted_write_done;
-
-   logic                    fifo_full_spec_bus;
-   logic                    dbg_dma_bubble_bus;
-   logic                    stall_dma_in;
-   logic                    dma_fifo_ready;
-
-   logic                       wrbuf_en, wrbuf_data_en;
-   logic                       wrbuf_cmd_sent, wrbuf_rst, wrbuf_data_rst;
-   logic                       wrbuf_vld, wrbuf_data_vld;
-   logic [pt.DMA_BUS_TAG-1:0]  wrbuf_tag;
-   logic [2:0]                 wrbuf_sz;
-   logic [31:0]                wrbuf_addr;
-   logic [63:0]                wrbuf_data;
-   logic [7:0]                 wrbuf_byteen;
-
-   logic                       rdbuf_en;
-   logic                       rdbuf_cmd_sent, rdbuf_rst;
-   logic                       rdbuf_vld;
-   logic [pt.DMA_BUS_TAG-1:0]  rdbuf_tag;
-   logic [2:0]                 rdbuf_sz;
-   logic [31:0]                rdbuf_addr;
-
-   logic                       axi_mstr_prty_in, axi_mstr_prty_en;
-   logic                       axi_mstr_priority;
-   logic                       axi_mstr_sel;
-
-   logic                       axi_rsp_valid, axi_rsp_sent;
-   logic                       axi_rsp_write;
-   logic [pt.DMA_BUS_TAG-1:0]  axi_rsp_tag;
-   logic [1:0]                 axi_rsp_error;
-   logic [63:0]                axi_rsp_rdata;
-
-   //------------------------LOGIC STARTS HERE---------------------------------
-
-   // FIFO inputs
-   assign fifo_addr_in[31:0]    = dbg_cmd_valid ? dbg_cmd_addr[31:0] : bus_cmd_addr[31:0];
-   assign fifo_byteen_in[7:0]   = {8{~dbg_cmd_valid}} & bus_cmd_byteen[7:0];    // Byte enable is used only for bus requests
-   assign fifo_sz_in[2:0]       = dbg_cmd_valid ? {1'b0,dbg_cmd_size[1:0]} : bus_cmd_sz[2:0];
-   assign fifo_write_in         = dbg_cmd_valid ? dbg_cmd_write : bus_cmd_write;
-   assign fifo_posted_write_in  = ~dbg_cmd_valid & bus_cmd_posted_write;
-   assign fifo_dbg_in           = dbg_cmd_valid;
-
-   for (genvar i=0 ;i<DEPTH; i++) begin: GenFifo
-      assign fifo_cmd_en[i]   = ((bus_cmd_sent & dma_bus_clk_en) | (dbg_cmd_valid & dbg_cmd_type[1])) & (i == WrPtr[DEPTH_PTR-1:0]);
-      assign fifo_data_en[i] = (((bus_cmd_sent & fifo_write_in & dma_bus_clk_en) | (dbg_cmd_valid & dbg_cmd_type[1] & dbg_cmd_write))  & (i == WrPtr[DEPTH_PTR-1:0])) |
-                               ((dma_address_error | dma_alignment_error) & (i == RdPtr[DEPTH_PTR-1:0])) |
-                               (dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) |
-                               (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0])));
-      assign fifo_pend_en[i] = (dma_dccm_req | dma_iccm_req) & ~dma_mem_write & (i == RdPtr[DEPTH_PTR-1:0]);
-      assign fifo_error_en[i] = ((dma_address_error | dma_alignment_error | dma_dbg_cmd_error) & (i == RdPtr[DEPTH_PTR-1:0])) |
-                                ((dccm_dma_rvalid & dccm_dma_ecc_error) & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) |
-                                ((iccm_dma_rvalid & iccm_dma_ecc_error) & (i == DEPTH_PTR'(iccm_dma_rtag[2:0])));
-      assign fifo_error_bus_en[i] = (((|fifo_error_in[i][1:0]) & fifo_error_en[i]) | (|fifo_error[i])) & dma_bus_clk_en;
-      assign fifo_done_en[i] = ((|fifo_error[i] | fifo_error_en[i] | ((dma_dccm_req | dma_iccm_req) & dma_mem_write)) & (i == RdPtr[DEPTH_PTR-1:0])) |
-                               (dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) |
-                               (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0])));
-      assign fifo_done_bus_en[i] = (fifo_done_en[i] | fifo_done[i]) & dma_bus_clk_en;
-      assign fifo_reset[i] = (((bus_rsp_sent | bus_posted_write_done) & dma_bus_clk_en) | dma_dbg_cmd_done) & (i == RspPtr[DEPTH_PTR-1:0]);
-      assign fifo_error_in[i]   = (dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) ? {1'b0,dccm_dma_ecc_error} : (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0]))) ? {1'b0,iccm_dma_ecc_error}  :
-                                                                                                                {(dma_address_error | dma_alignment_error | dma_dbg_cmd_error), dma_alignment_error};
-      assign fifo_data_in[i]   = (fifo_error_en[i] & (|fifo_error_in[i])) ? {32'b0,fifo_addr[i]} :
-                                                        ((dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0])))  ? dccm_dma_rdata[63:0] : (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0]))) ? iccm_dma_rdata[63:0] :
-                                                                                                                                                       (dbg_cmd_valid ? {2{dma_dbg_mem_wrdata[31:0]}} : bus_cmd_wdata[63:0]));
-
-      rvdffsc #(1) fifo_valid_dff (.din(1'b1), .dout(fifo_valid[i]), .en(fifo_cmd_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(2) fifo_error_dff (.din(fifo_error_in[i]), .dout(fifo_error[i]), .en(fifo_error_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_error_bus_dff (.din(1'b1), .dout(fifo_error_bus[i]), .en(fifo_error_bus_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_rpend_dff (.din(1'b1), .dout(fifo_rpend[i]), .en(fifo_pend_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_done_dff (.din(1'b1), .dout(fifo_done[i]), .en(fifo_done_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_done_bus_dff (.din(1'b1), .dout(fifo_done_bus[i]), .en(fifo_done_bus_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffe  #(32) fifo_addr_dff (.din(fifo_addr_in[31:0]), .dout(fifo_addr[i]), .en(fifo_cmd_en[i]), .*);
-      rvdffs  #(3) fifo_sz_dff (.din(fifo_sz_in[2:0]), .dout(fifo_sz[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(8) fifo_byteen_dff (.din(fifo_byteen_in[7:0]), .dout(fifo_byteen[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(1) fifo_write_dff (.din(fifo_write_in), .dout(fifo_write[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(1) fifo_posted_write_dff (.din(fifo_posted_write_in), .dout(fifo_posted_write[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(1) fifo_dbg_dff (.din(fifo_dbg_in), .dout(fifo_dbg[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffe  #(64) fifo_data_dff (.din(fifo_data_in[i]), .dout(fifo_data[i]), .en(fifo_data_en[i]), .*);
-      rvdffs  #(pt.DMA_BUS_TAG) fifo_tag_dff(.din(bus_cmd_tag[pt.DMA_BUS_TAG-1:0]), .dout(fifo_tag[i][pt.DMA_BUS_TAG-1:0]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(pt.DMA_BUS_ID) fifo_mid_dff(.din(bus_cmd_mid[pt.DMA_BUS_ID-1:0]), .dout(fifo_mid[i][pt.DMA_BUS_ID-1:0]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(pt.DMA_BUS_PRTY) fifo_prty_dff(.din(bus_cmd_prty[pt.DMA_BUS_PRTY-1:0]), .dout(fifo_prty[i][pt.DMA_BUS_PRTY-1:0]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-   end
-
-   // Pointer logic
-   assign NxtWrPtr[DEPTH_PTR-1:0] = (WrPtr[DEPTH_PTR-1:0] == (DEPTH-1)) ? '0 : WrPtr[DEPTH_PTR-1:0] + 1'b1;
-   assign NxtRdPtr[DEPTH_PTR-1:0] = (RdPtr[DEPTH_PTR-1:0] == (DEPTH-1)) ? '0 : RdPtr[DEPTH_PTR-1:0] + 1'b1;
-   assign NxtRspPtr[DEPTH_PTR-1:0] = (RspPtr[DEPTH_PTR-1:0] == (DEPTH-1)) ? '0 : RspPtr[DEPTH_PTR-1:0] + 1'b1;
-
-   assign WrPtrEn = |fifo_cmd_en[DEPTH-1:0];
-   assign RdPtrEn = dma_dccm_req | dma_iccm_req | (dma_address_error | dma_alignment_error | dma_dbg_cmd_error);
-   assign RspPtrEn = (dma_dbg_cmd_done | (bus_rsp_sent | bus_posted_write_done) & dma_bus_clk_en);
-
-   rvdffs #(DEPTH_PTR) WrPtr_dff(.din(NxtWrPtr[DEPTH_PTR-1:0]), .dout(WrPtr[DEPTH_PTR-1:0]), .en(WrPtrEn), .clk(dma_free_clk), .*);
-   rvdffs #(DEPTH_PTR) RdPtr_dff(.din(NxtRdPtr[DEPTH_PTR-1:0]), .dout(RdPtr[DEPTH_PTR-1:0]), .en(RdPtrEn), .clk(dma_free_clk), .*);
-   rvdffs #(DEPTH_PTR) RspPtr_dff(.din(NxtRspPtr[DEPTH_PTR-1:0]), .dout(RspPtr[DEPTH_PTR-1:0]), .en(RspPtrEn), .clk(dma_free_clk), .*);
-
-   // Miscellaneous signals
-   assign fifo_full = fifo_full_spec_bus;
-
-   always_comb begin
-      num_fifo_vld[3:0] = {3'b0,bus_cmd_sent} - {3'b0,bus_rsp_sent};
-      for (int i=0; i<DEPTH; i++) begin
-         num_fifo_vld[3:0] += {3'b0,fifo_valid[i]};
-      end
-   end
-   assign fifo_full_spec          = (num_fifo_vld[3:0] >= DEPTH);
-
-   assign dma_fifo_ready = ~(fifo_full | dbg_dma_bubble_bus);
-
-   // Error logic
-   assign dma_address_error = fifo_valid[RdPtr] & ~fifo_done[RdPtr] & ~fifo_dbg[RdPtr] & (~(dma_mem_addr_in_dccm | dma_mem_addr_in_iccm));    // request not for ICCM or DCCM
-   assign dma_alignment_error = fifo_valid[RdPtr] & ~fifo_done[RdPtr] & ~fifo_dbg[RdPtr] & ~dma_address_error &
-                                (((dma_mem_sz_int[2:0] == 3'h1) & dma_mem_addr_int[0])                                                       |    // HW size but unaligned
-                                 ((dma_mem_sz_int[2:0] == 3'h2) & (|dma_mem_addr_int[1:0]))                                                  |    // W size but unaligned
-                                 ((dma_mem_sz_int[2:0] == 3'h3) & (|dma_mem_addr_int[2:0]))                                                  |    // DW size but unaligned
-                                 (dma_mem_addr_in_iccm & ~((dma_mem_sz_int[1:0] == 2'b10) | (dma_mem_sz_int[1:0] == 2'b11)))                 |    // ICCM access not word size
-                                 (dma_mem_addr_in_dccm & dma_mem_write & ~((dma_mem_sz_int[1:0] == 2'b10) | (dma_mem_sz_int[1:0] == 2'b11))) |    // DCCM write not word size
-                                 (dma_mem_write & (dma_mem_sz_int[2:0] == 3'h2) & (dma_mem_byteen[dma_mem_addr_int[2:0]+:4] != 4'hf))        |    // Write byte enables not aligned for word store
-                                 (dma_mem_write & (dma_mem_sz_int[2:0] == 3'h3) & ~((dma_mem_byteen[7:0] == 8'h0f) | (dma_mem_byteen[7:0] == 8'hf0) | (dma_mem_byteen[7:0] == 8'hff)))); // Write byte enables not aligned for dword store
-
-
-   //Dbg outputs
-   assign dma_dbg_ready    = fifo_empty & dbg_dma_bubble;
-   assign dma_dbg_cmd_done = (fifo_valid[RspPtr] & fifo_dbg[RspPtr] & fifo_done[RspPtr]);
-   assign dma_dbg_cmd_fail     = |fifo_error[RspPtr];
-
-   assign dma_dbg_sz[1:0]          = fifo_sz[RspPtr][1:0];
-   assign dma_dbg_addr[1:0]        = fifo_addr[RspPtr][1:0];
-   assign dma_dbg_mem_rddata[31:0] = fifo_addr[RspPtr][2] ? fifo_data[RspPtr][63:32] : fifo_data[RspPtr][31:0];
-   assign dma_dbg_rddata[31:0]     = ({32{(dma_dbg_sz[1:0] == 2'h0)}} & ((dma_dbg_mem_rddata[31:0] >> 8*dma_dbg_addr[1:0]) & 32'hff)) |
-                                     ({32{(dma_dbg_sz[1:0] == 2'h1)}} & ((dma_dbg_mem_rddata[31:0] >> 16*dma_dbg_addr[1]) & 32'hffff)) |
-                                     ({32{(dma_dbg_sz[1:0] == 2'h2)}} & dma_dbg_mem_rddata[31:0]);
-
-   assign dma_dbg_cmd_error = fifo_valid[RdPtr] & ~fifo_done[RdPtr] & fifo_dbg[RdPtr] &
-                                 ((~(dma_mem_addr_in_dccm | dma_mem_addr_in_iccm | dma_mem_addr_in_pic)) |             // Address outside of ICCM/DCCM/PIC
-                                  ((dma_mem_addr_in_iccm | dma_mem_addr_in_pic) & (dma_mem_sz_int[1:0] != 2'b10)));    // Only word accesses allowed for ICCM/PIC
-
-   assign dma_dbg_mem_wrdata[31:0] = ({32{dbg_cmd_size[1:0] == 2'h0}} & {4{dbg_cmd_wrdata[7:0]}}) |
-                                     ({32{dbg_cmd_size[1:0] == 2'h1}} & {2{dbg_cmd_wrdata[15:0]}}) |
-                                     ({32{dbg_cmd_size[1:0] == 2'h2}} & dbg_cmd_wrdata[31:0]);
-
-   // Block the decode if fifo full
-   assign dma_dccm_stall_any = dma_mem_req & (dma_mem_addr_in_dccm | dma_mem_addr_in_pic) & (dma_nack_count >= dma_nack_count_csr);
-   assign dma_iccm_stall_any = dma_mem_req & dma_mem_addr_in_iccm & (dma_nack_count >= dma_nack_count_csr);
-
-   // Used to indicate ready to debug
-   assign fifo_empty     = ~((|(fifo_valid[DEPTH-1:0])) | bus_cmd_sent);
-
-   // Nack counter, stall the lsu pipe if 7 nacks
-   assign dma_nack_count_csr[2:0] = dec_tlu_dma_qos_prty[2:0];
-   assign dma_nack_count_d[2:0] = (dma_nack_count[2:0] >= dma_nack_count_csr[2:0]) ? ({3{~(dma_dccm_req | dma_iccm_req)}} & dma_nack_count[2:0]) :
-                                                                                    (dma_mem_req & ~(dma_dccm_req | dma_iccm_req)) ? (dma_nack_count[2:0] + 1'b1) : 3'b0;
-
-   rvdffs #(3) nack_count_dff(.din(dma_nack_count_d[2:0]), .dout(dma_nack_count[2:0]), .en(dma_mem_req), .clk(dma_free_clk), .*);
-
-   // Core outputs
-   assign dma_mem_req         = fifo_valid[RdPtr] & ~fifo_rpend[RdPtr] & ~fifo_done[RdPtr] & ~(dma_address_error | dma_alignment_error | dma_dbg_cmd_error);
-   assign dma_dccm_req        = dma_mem_req & (dma_mem_addr_in_dccm | dma_mem_addr_in_pic) & dccm_ready;
-   assign dma_iccm_req        = dma_mem_req & dma_mem_addr_in_iccm & iccm_ready;
-   assign dma_mem_tag[2:0]    = 3'(RdPtr);
-   assign dma_mem_addr_int[31:0] = fifo_addr[RdPtr];
-   assign dma_mem_sz_int[2:0] = fifo_sz[RdPtr];
-   assign dma_mem_addr[31:0]  = (dma_mem_write & ~fifo_dbg[RdPtr] & (dma_mem_byteen[7:0] == 8'hf0)) ? {dma_mem_addr_int[31:3],1'b1,dma_mem_addr_int[1:0]} : dma_mem_addr_int[31:0];
-   assign dma_mem_sz[2:0]     = (dma_mem_write & ~fifo_dbg[RdPtr] & ((dma_mem_byteen[7:0] == 8'h0f) | (dma_mem_byteen[7:0] == 8'hf0))) ? 3'h2 : dma_mem_sz_int[2:0];
-   assign dma_mem_byteen[7:0] = fifo_byteen[RdPtr];
-   assign dma_mem_write       = fifo_write[RdPtr];
-   assign dma_mem_wdata[63:0] = fifo_data[RdPtr];
-
-   // PMU outputs
-   assign dma_pmu_dccm_read   = dma_dccm_req & ~dma_mem_write;
-   assign dma_pmu_dccm_write  = dma_dccm_req & dma_mem_write;
-   assign dma_pmu_any_read    = (dma_dccm_req | dma_iccm_req) & ~dma_mem_write;
-   assign dma_pmu_any_write   = (dma_dccm_req | dma_iccm_req) & dma_mem_write;
-
-   // Address check  dccm
-   if (pt.DCCM_ENABLE) begin: Gen_dccm_enable
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) addr_dccm_rangecheck (
-         .addr(dma_mem_addr_int[31:0]),
-         .in_range(dma_mem_addr_in_dccm),
-         .in_region(dma_mem_addr_in_dccm_region_nc)
-      );
-   end else begin: Gen_dccm_disable
-      assign dma_mem_addr_in_dccm = '0;
-      assign dma_mem_addr_in_dccm_region_nc = '0;
-   end // else: !if(pt.ICCM_ENABLE)
-
-   // Address check  iccm
-   if (pt.ICCM_ENABLE) begin: Gen_iccm_enable
-      rvrangecheck #(.CCM_SADR(pt.ICCM_SADR),
-                     .CCM_SIZE(pt.ICCM_SIZE)) addr_iccm_rangecheck (
-         .addr(dma_mem_addr_int[31:0]),
-         .in_range(dma_mem_addr_in_iccm),
-         .in_region(dma_mem_addr_in_iccm_region_nc)
-      );
-   end else begin: Gen_iccm_disable
-      assign dma_mem_addr_in_iccm = '0;
-      assign dma_mem_addr_in_iccm_region_nc = '0;
-   end // else: !if(pt.ICCM_ENABLE)
-
-
-   // PIC memory address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) addr_pic_rangecheck (
-      .addr(dma_mem_addr_int[31:0]),
-      .in_range(dma_mem_addr_in_pic),
-      .in_region(dma_mem_addr_in_pic_region_nc)
-    );
-
-   // Inputs
-   rvdff_fpga #(1) fifo_full_bus_ff     (.din(fifo_full_spec),   .dout(fifo_full_spec_bus), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(1) dbg_dma_bubble_ff    (.din(dbg_dma_bubble),   .dout(dbg_dma_bubble_bus), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdff      #(1) dma_dbg_cmd_doneff   (.din(dma_dbg_cmd_done), .dout(dma_dbg_cmd_done_q), .clk(free_clk), .*);
-
-   // Clock Gating logic
-   assign dma_buffer_c1_clken = (bus_cmd_valid & dma_bus_clk_en) | dbg_cmd_valid | clk_override;
-   assign dma_free_clken = (bus_cmd_valid | bus_rsp_valid | dbg_cmd_valid | dma_dbg_cmd_done | dma_dbg_cmd_done_q | (|fifo_valid[DEPTH-1:0]) | clk_override);
-
-   rvoclkhdr dma_buffer_c1cgc ( .en(dma_buffer_c1_clken), .l1clk(dma_buffer_c1_clk), .* );
-   rvoclkhdr dma_free_cgc (.en(dma_free_clken), .l1clk(dma_free_clk), .*);
-
-
-   rvclkhdr  dma_bus_cgc (.en(dma_bus_clk_en), .l1clk(dma_bus_clk), .*);
-
-   // Write channel buffer
-   assign wrbuf_en       = dma_axi_awvalid & dma_axi_awready;
-   assign wrbuf_data_en  = dma_axi_wvalid & dma_axi_wready;
-   assign wrbuf_cmd_sent = bus_cmd_sent & bus_cmd_write;
-   assign wrbuf_rst      = wrbuf_cmd_sent & ~wrbuf_en;
-   assign wrbuf_data_rst = wrbuf_cmd_sent & ~wrbuf_data_en;
-
-   rvdffsc_fpga  #(.WIDTH(1))              wrbuf_vldff       (.din(1'b1), .dout(wrbuf_vld),      .en(wrbuf_en),      .clear(wrbuf_rst),      .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffsc_fpga  #(.WIDTH(1))              wrbuf_data_vldff  (.din(1'b1), .dout(wrbuf_data_vld), .en(wrbuf_data_en), .clear(wrbuf_data_rst), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(pt.DMA_BUS_TAG)) wrbuf_tagff       (.din(dma_axi_awid[pt.DMA_BUS_TAG-1:0]), .dout(wrbuf_tag[pt.DMA_BUS_TAG-1:0]), .en(wrbuf_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(3))              wrbuf_szff        (.din(dma_axi_awsize[2:0]),  .dout(wrbuf_sz[2:0]),     .en(wrbuf_en),                  .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffe        #(.WIDTH(32))             wrbuf_addrff      (.din(dma_axi_awaddr[31:0]), .dout(wrbuf_addr[31:0]),  .en(wrbuf_en & dma_bus_clk_en), .*);
-   rvdffe        #(.WIDTH(64))             wrbuf_dataff      (.din(dma_axi_wdata[63:0]),  .dout(wrbuf_data[63:0]),  .en(wrbuf_data_en & dma_bus_clk_en), .*);
-   rvdffs_fpga   #(.WIDTH(8))              wrbuf_byteenff    (.din(dma_axi_wstrb[7:0]),   .dout(wrbuf_byteen[7:0]), .en(wrbuf_data_en),             .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-
-   // Read channel buffer
-   assign rdbuf_en    = dma_axi_arvalid & dma_axi_arready;
-   assign rdbuf_cmd_sent = bus_cmd_sent & ~bus_cmd_write;
-   assign rdbuf_rst   = rdbuf_cmd_sent & ~rdbuf_en;
-
-   rvdffsc_fpga  #(.WIDTH(1))              rdbuf_vldff  (.din(1'b1), .dout(rdbuf_vld), .en(rdbuf_en), .clear(rdbuf_rst), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(pt.DMA_BUS_TAG)) rdbuf_tagff  (.din(dma_axi_arid[pt.DMA_BUS_TAG-1:0]), .dout(rdbuf_tag[pt.DMA_BUS_TAG-1:0]), .en(rdbuf_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(3))              rdbuf_szff   (.din(dma_axi_arsize[2:0]),  .dout(rdbuf_sz[2:0]),    .en(rdbuf_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32))              rdbuf_addrff (.din(dma_axi_araddr[31:0]), .dout(rdbuf_addr[31:0]), .en(rdbuf_en & dma_bus_clk_en), .*);
-
-   assign dma_axi_awready = ~(wrbuf_vld & ~wrbuf_cmd_sent);
-   assign dma_axi_wready  = ~(wrbuf_data_vld & ~wrbuf_cmd_sent);
-   assign dma_axi_arready = ~(rdbuf_vld & ~rdbuf_cmd_sent);
-
-   //Generate a single request from read/write channel
-   assign bus_cmd_valid                     = (wrbuf_vld & wrbuf_data_vld) | rdbuf_vld;
-   assign bus_cmd_sent                      = bus_cmd_valid & dma_fifo_ready;
-   assign bus_cmd_write                     = axi_mstr_sel;
-   assign bus_cmd_posted_write              = '0;
-   assign bus_cmd_addr[31:0]                = axi_mstr_sel ? wrbuf_addr[31:0] : rdbuf_addr[31:0];
-   assign bus_cmd_sz[2:0]                   = axi_mstr_sel ? wrbuf_sz[2:0] : rdbuf_sz[2:0];
-   assign bus_cmd_wdata[63:0]               = wrbuf_data[63:0];
-   assign bus_cmd_byteen[7:0]               = wrbuf_byteen[7:0];
-   assign bus_cmd_tag[pt.DMA_BUS_TAG-1:0]   = axi_mstr_sel ? wrbuf_tag[pt.DMA_BUS_TAG-1:0] : rdbuf_tag[pt.DMA_BUS_TAG-1:0];
-   assign bus_cmd_mid[pt.DMA_BUS_ID-1:0]    = '0;
-   assign bus_cmd_prty[pt.DMA_BUS_PRTY-1:0] = '0;
-
-   // Sel=1 -> write has higher priority
-   assign axi_mstr_sel     = (wrbuf_vld & wrbuf_data_vld & rdbuf_vld) ? axi_mstr_priority : (wrbuf_vld & wrbuf_data_vld);
-   assign axi_mstr_prty_in = ~axi_mstr_priority;
-   assign axi_mstr_prty_en = bus_cmd_sent;
-   rvdffs_fpga #(.WIDTH(1)) mstr_prtyff(.din(axi_mstr_prty_in), .dout(axi_mstr_priority), .en(axi_mstr_prty_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-
-   assign axi_rsp_valid                   = fifo_valid[RspPtr] & ~fifo_dbg[RspPtr] & fifo_done_bus[RspPtr];
-   assign axi_rsp_rdata[63:0]             = fifo_data[RspPtr];
-   assign axi_rsp_write                   = fifo_write[RspPtr];
-   assign axi_rsp_error[1:0]              = fifo_error[RspPtr][0] ? 2'b10 : (fifo_error[RspPtr][1] ? 2'b11 : 2'b0);
-   assign axi_rsp_tag[pt.DMA_BUS_TAG-1:0] = fifo_tag[RspPtr];
-
-   // AXI response channel signals
-   assign dma_axi_bvalid                  = axi_rsp_valid & axi_rsp_write;
-   assign dma_axi_bresp[1:0]              = axi_rsp_error[1:0];
-   assign dma_axi_bid[pt.DMA_BUS_TAG-1:0] = axi_rsp_tag[pt.DMA_BUS_TAG-1:0];
-
-   assign dma_axi_rvalid                  = axi_rsp_valid & ~axi_rsp_write;
-   assign dma_axi_rresp[1:0]              = axi_rsp_error;
-   assign dma_axi_rdata[63:0]             = axi_rsp_rdata[63:0];
-   assign dma_axi_rlast                   = 1'b1;
-   assign dma_axi_rid[pt.DMA_BUS_TAG-1:0] = axi_rsp_tag[pt.DMA_BUS_TAG-1:0];
-
-   assign bus_posted_write_done = 1'b0;
-   assign bus_rsp_valid      = (dma_axi_bvalid | dma_axi_rvalid);
-   assign bus_rsp_sent       = (dma_axi_bvalid & dma_axi_bready) | (dma_axi_rvalid & dma_axi_rready);
-
-   assign dma_active  = wrbuf_vld | rdbuf_vld | (|fifo_valid[DEPTH-1:0]);
-
-endmodule // eb1_dma_ctrl
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_alu_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input  logic                  clk,                // Top level clock
-   input  logic                  rst_l,              // Reset
-   input  logic                  scan_mode,          // Scan control
-
-   input  logic                  flush_upper_x,      // Branch flush from previous cycle
-   input  logic                  flush_lower_r,      // Master flush of entire pipeline
-   input  logic                  enable,             // Clock enable
-   input  logic                  valid_in,           // Valid
-   input  eb1_alu_pkt_t         ap,                 // predecodes
-   input  logic                  csr_ren_in,         // CSR select
-   input  logic        [31:0]    csr_rddata_in,      // CSR data
-   input  logic signed [31:0]    a_in,               // A operand
-   input  logic        [31:0]    b_in,               // B operand
-   input  logic        [31:1]    pc_in,              // for pc=pc+2,4 calculations
-   input  eb1_predict_pkt_t     pp_in,              // Predicted branch structure
-   input  logic        [12:1]    brimm_in,           // Branch offset
-
-
-   output logic        [31:0]    result_ff,          // final result
-   output logic                  flush_upper_out,    // Branch flush
-   output logic                  flush_final_out,    // Branch flush or flush entire pipeline
-   output logic        [31:1]    flush_path_out,     // Branch flush PC
-   output logic        [31:1]    pc_ff,              // flopped PC
-   output logic                  pred_correct_out,   // NPC control
-   output eb1_predict_pkt_t     predict_p_out       // Predicted branch structure
-  );
-
-
-   logic               [31:0]    zba_a_in;
-   logic               [31:0]    aout;
-   logic                         cout,ov,neg;
-   logic               [31:0]    lout;
-   logic               [31:0]    sout;
-   logic                         sel_shift;
-   logic                         sel_adder;
-   logic                         slt_one;
-   logic                         actual_taken;
-   logic               [31:1]    pcout;
-   logic                         cond_mispredict;
-   logic                         target_mispredict;
-   logic                         eq, ne, lt, ge;
-   logic                         any_jal;
-   logic               [1:0]     newhist;
-   logic                         sel_pc;
-   logic               [31:0]    csr_write_data;
-   logic               [31:0]    result;
-
-
-
-
-   // *** Start - BitManip ***
-
-   // Zbb
-   logic                  ap_clz;
-   logic                  ap_ctz;
-   logic                  ap_pcnt;
-   logic                  ap_sext_b;
-   logic                  ap_sext_h;
-   logic                  ap_min;
-   logic                  ap_max;
-   logic                  ap_pack;
-   logic                  ap_packu;
-   logic                  ap_packh;
-   logic                  ap_rol;
-   logic                  ap_ror;
-   logic                  ap_rev;
-   logic                  ap_rev8;
-   logic                  ap_orc_b;
-   logic                  ap_orc16;
-   logic                  ap_zbb;
-
-   // Zbs
-   logic                  ap_sbset;
-   logic                  ap_sbclr;
-   logic                  ap_sbinv;
-   logic                  ap_sbext;
-
-   // Zbr
-   logic                  ap_slo;
-   logic                  ap_sro;
-
-   // Zba
-   logic                  ap_sh1add;
-   logic                  ap_sh2add;
-   logic                  ap_sh3add;
-   logic                  ap_zba;
-
-
-
-   if (pt.BITMANIP_ZBB == 1)
-     begin
-       assign ap_clz          =  ap.clz;
-       assign ap_ctz          =  ap.ctz;
-       assign ap_pcnt         =  ap.pcnt;
-       assign ap_sext_b       =  ap.sext_b;
-       assign ap_sext_h       =  ap.sext_h;
-       assign ap_min          =  ap.min;
-       assign ap_max          =  ap.max;
-     end
-   else
-     begin
-       assign ap_clz          =  1'b0;
-       assign ap_ctz          =  1'b0;
-       assign ap_pcnt         =  1'b0;
-       assign ap_sext_b       =  1'b0;
-       assign ap_sext_h       =  1'b0;
-       assign ap_min          =  1'b0;
-       assign ap_max          =  1'b0;
-     end
-
-
-   if ( (pt.BITMANIP_ZBB == 1) | (pt.BITMANIP_ZBP == 1) )
-     begin
-       assign ap_pack         =  ap.pack;
-       assign ap_packu        =  ap.packu;
-       assign ap_packh        =  ap.packh;
-       assign ap_rol          =  ap.rol;
-       assign ap_ror          =  ap.ror;
-       assign ap_rev          =  ap.grev & (b_in[4:0] == 5'b11111);
-       assign ap_rev8         =  ap.grev & (b_in[4:0] == 5'b11000);
-       assign ap_orc_b        =  ap.gorc & (b_in[4:0] == 5'b00111);
-       assign ap_orc16        =  ap.gorc & (b_in[4:0] == 5'b10000);
-       assign ap_zbb          =  ap.zbb;
-     end
-   else
-     begin
-       assign ap_pack         =  1'b0;
-       assign ap_packu        =  1'b0;
-       assign ap_packh        =  1'b0;
-       assign ap_rol          =  1'b0;
-       assign ap_ror          =  1'b0;
-       assign ap_rev          =  1'b0;
-       assign ap_rev8         =  1'b0;
-       assign ap_orc_b        =  1'b0;
-       assign ap_orc16        =  1'b0;
-       assign ap_zbb          =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBS == 1)
-     begin
-       assign ap_sbset        =  ap.sbset;
-       assign ap_sbclr        =  ap.sbclr;
-       assign ap_sbinv        =  ap.sbinv;
-       assign ap_sbext        =  ap.sbext;
-     end
-   else
-     begin
-       assign ap_sbset        =  1'b0;
-       assign ap_sbclr        =  1'b0;
-       assign ap_sbinv        =  1'b0;
-       assign ap_sbext        =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBP == 1)
-     begin
-       assign ap_slo          =  ap.slo;
-       assign ap_sro          =  ap.sro;
-     end
-   else
-     begin
-       assign ap_slo          =  1'b0;
-       assign ap_sro          =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBA == 1)
-     begin
-       assign ap_sh1add       =  ap.sh1add;
-       assign ap_sh2add       =  ap.sh2add;
-       assign ap_sh3add       =  ap.sh3add;
-       assign ap_zba          =  ap.zba;
-     end
-   else
-     begin
-       assign ap_sh1add       =  1'b0;
-       assign ap_sh2add       =  1'b0;
-       assign ap_sh3add       =  1'b0;
-       assign ap_zba          =  1'b0;
-     end
-
-
-
-
-   // *** End   - BitManip ***
-
-
-
-
-   rvdffpcie #(31) i_pc_ff      (.*, .clk(clk), .en(enable),              .din(pc_in[31:1]),    .dout(pc_ff[31:1]));   // any PC is run through here - doesn't have to be alu
-   rvdffe    #(32) i_result_ff  (.*, .clk(clk), .en(enable & valid_in),   .din(result[31:0]),   .dout(result_ff[31:0]));
-
-
-
-   // immediates are just muxed into rs2
-
-   // add    =>  add=1;
-   // sub    =>  add=1; sub=1;
-
-   // and    =>  lctl=3
-   // or     =>  lctl=2
-   // xor    =>  lctl=1
-
-   // sll    =>  sctl=3
-   // srl    =>  sctl=2
-   // sra    =>  sctl=1
-
-   // slt    =>  slt
-
-   // lui    =>  lctl=2; or x0, imm20 previously << 12
-   // auipc  =>  add;   add pc, imm20 previously << 12
-
-   // beq    =>  bctl=4; add; add x0, pc, sext(offset[12:1])
-   // bne    =>  bctl=3; add; add x0, pc, sext(offset[12:1])
-   // blt    =>  bctl=2; add; add x0, pc, sext(offset[12:1])
-   // bge    =>  bctl=1; add; add x0, pc, sext(offset[12:1])
-
-   // jal    =>  rs1=pc {pc[31:1],1'b0},  rs2=sext(offset20:1]);   rd=pc+[2,4]
-   // jalr   =>  rs1=rs1,                 rs2=sext(offset20:1]);   rd=pc+[2,4]
-
-
-
-   assign zba_a_in[31:0]      = ( {32{ ap_sh1add}} & {a_in[30:0],1'b0} ) |
-                                ( {32{ ap_sh2add}} & {a_in[29:0],2'b0} ) |
-                                ( {32{ ap_sh3add}} & {a_in[28:0],3'b0} ) |
-                                ( {32{~ap_zba   }} &  a_in[31:0]       );
-
-   logic        [31:0]    bm;
-
-   assign bm[31:0]            = ( ap.sub )  ?  ~b_in[31:0]  :  b_in[31:0];
-
-   assign {cout, aout[31:0]}  = {1'b0, zba_a_in[31:0]} + {1'b0, bm[31:0]} + {32'b0, ap.sub};
-
-   assign ov                  = (~a_in[31] & ~bm[31] &  aout[31]) |
-                                ( a_in[31] &  bm[31] & ~aout[31] );
-
-   assign lt                  = (~ap.unsign & (neg ^ ov)) |
-                                ( ap.unsign & ~cout);
-
-   assign eq                  = (a_in[31:0] == b_in[31:0]);
-   assign ne                  = ~eq;
-   assign neg                 =  aout[31];
-   assign ge                  = ~lt;
-
-
-
-   assign lout[31:0]          =  ( {32{csr_ren_in       }} &  csr_rddata_in[31:0]       ) |
-                                 ( {32{ap.land & ~ap_zbb}} &  a_in[31:0] &  b_in[31:0]  ) |
-                                 ( {32{ap.lor  & ~ap_zbb}} & (a_in[31:0] |  b_in[31:0]) ) |
-                                 ( {32{ap.lxor & ~ap_zbb}} & (a_in[31:0] ^  b_in[31:0]) ) |
-                                 ( {32{ap.land &  ap_zbb}} &  a_in[31:0] & ~b_in[31:0]  ) |
-                                 ( {32{ap.lor  &  ap_zbb}} & (a_in[31:0] | ~b_in[31:0]) ) |
-                                 ( {32{ap.lxor &  ap_zbb}} & (a_in[31:0] ^ ~b_in[31:0]) );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SLO,SRO      * * * * * * * * * * * * * * * * * *
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ROL,ROR      * * * * * * * * * * * * * * * * * *
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ZBEXT        * * * * * * * * * * * * * * * * * *
-
-   logic        [5:0]     shift_amount;
-   logic        [31:0]    shift_mask;
-   logic        [62:0]    shift_extend;
-   logic        [62:0]    shift_long;
-
-
-   assign shift_amount[5:0]            = ( { 6{ap.sll}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |   // [5] unused
-                                         ( { 6{ap.srl}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap.sra}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_rol}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |
-                                         ( { 6{ap_ror}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_slo}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |
-                                         ( { 6{ap_sro}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_sbext}} &          {1'b0,b_in[4:0]}  );
-
-
-   assign shift_mask[31:0]             = ( 32'hffffffff << ({5{ap.sll | ap_slo}} & b_in[4:0]) );
-
-
-   assign shift_extend[31:0]           =  a_in[31:0];
-
-   assign shift_extend[62:32]          = ( {31{ap.sra}} & {31{a_in[31]}} ) |
-                                         ( {31{ap.sll}} &     a_in[30:0] ) |
-                                         ( {31{ap_rol}} &     a_in[30:0] ) |
-                                         ( {31{ap_ror}} &     a_in[30:0] ) |
-                                         ( {31{ap_slo}} &     a_in[30:0] ) |
-                                         ( {31{ap_sro}} & {31{  1'b1  }} );
-
-
-   assign shift_long[62:0]    = ( shift_extend[62:0] >> shift_amount[4:0] );   // 62-32 unused
-
-   assign sout[31:0]          = ( shift_long[31:0] & shift_mask[31:0] ) | ( {32{ap_slo}} & ~shift_mask[31:0] );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CLZ,CTZ      * * * * * * * * * * * * * * * * * *
-
-   logic                  bitmanip_clz_ctz_sel;
-   logic        [31:0]    bitmanip_a_reverse_ff;
-   logic        [31:0]    bitmanip_lzd_in;
-   logic        [5:0]     bitmanip_dw_lzd_enc;
-   logic        [5:0]     bitmanip_clz_ctz_result;
-
-   assign bitmanip_clz_ctz_sel         =  ap_clz | ap_ctz;
-
-   assign bitmanip_a_reverse_ff[31:0]  = {a_in[0],  a_in[1],  a_in[2],  a_in[3],  a_in[4],  a_in[5],  a_in[6],  a_in[7],
-                                          a_in[8],  a_in[9],  a_in[10], a_in[11], a_in[12], a_in[13], a_in[14], a_in[15],
-                                          a_in[16], a_in[17], a_in[18], a_in[19], a_in[20], a_in[21], a_in[22], a_in[23],
-                                          a_in[24], a_in[25], a_in[26], a_in[27], a_in[28], a_in[29], a_in[30], a_in[31]};
-
-   assign bitmanip_lzd_in[31:0]        = ( {32{ap_clz}} & a_in[31:0]                 ) |
-                                         ( {32{ap_ctz}} & bitmanip_a_reverse_ff[31:0]);
-
-   logic        [31:0]    bitmanip_lzd_os;
-   integer                i;
-   logic                  found;
-
-   always_comb
-     begin
-        bitmanip_lzd_os[31:0]   =  bitmanip_lzd_in[31:0];
-        bitmanip_dw_lzd_enc[5:0]=  6'b0;
-        found = 1'b0;
-
-        for (int i=0; i<32 && found==0; i++) begin
-           if (bitmanip_lzd_os[31] == 1'b0) begin
-              bitmanip_dw_lzd_enc[5:0]=  bitmanip_dw_lzd_enc[5:0] + 6'b00_0001;
-              bitmanip_lzd_os[31:0]   =  bitmanip_lzd_os[31:0] << 1;
-           end
-           else
-              found=1'b1;
-        end
-     end
-
-
-
-   assign bitmanip_clz_ctz_result[5:0] = {6{bitmanip_clz_ctz_sel}} & {bitmanip_dw_lzd_enc[5],( {5{~bitmanip_dw_lzd_enc[5]}} & bitmanip_dw_lzd_enc[4:0] )};
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  PCNT         * * * * * * * * * * * * * * * * * *
-
-   logic        [5:0]     bitmanip_pcnt;
-   logic        [5:0]     bitmanip_pcnt_result;
-
-
-   integer                bitmanip_pcnt_i;
-
-   always_comb
-     begin
-       bitmanip_pcnt[5:0]               =  6'b0;
-
-       for (bitmanip_pcnt_i=0; bitmanip_pcnt_i<32; bitmanip_pcnt_i++)
-         begin
-            bitmanip_pcnt[5:0]          =  bitmanip_pcnt[5:0] + {5'b0,a_in[bitmanip_pcnt_i]};
-         end      // FOR    bitmanip_pcnt_i
-     end          // ALWAYS_COMB
-
-
-   assign bitmanip_pcnt_result[5:0]    =  {6{ap_pcnt}} & bitmanip_pcnt[5:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SEXT_B,SEXT_H  * * * * * * * * * * * * * * * * *
-
-   logic       [31:0]     bitmanip_sext_result;
-
-   assign bitmanip_sext_result[31:0]   = ( {32{ap_sext_b}} & { {24{a_in[7]}} ,a_in[7:0]  } ) |
-                                         ( {32{ap_sext_h}} & { {16{a_in[15]}},a_in[15:0] } );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  MIN,MAX,MINU,MAXU  * * * * * * * * * * * * * * *
-
-   logic                  bitmanip_minmax_sel;
-   logic        [31:0]    bitmanip_minmax_result;
-
-   assign bitmanip_minmax_sel          =  ap_min | ap_max;
-
-
-   logic                  bitmanip_minmax_sel_a;
-
-   assign bitmanip_minmax_sel_a        =  ge  ^ ap_min;
-
-   assign bitmanip_minmax_result[31:0] = ({32{bitmanip_minmax_sel &  bitmanip_minmax_sel_a}}  &  a_in[31:0]) |
-                                         ({32{bitmanip_minmax_sel & ~bitmanip_minmax_sel_a}}  &  b_in[31:0]);
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  PACK, PACKU, PACKH * * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_pack_result;
-   logic        [31:0]    bitmanip_packu_result;
-   logic        [31:0]    bitmanip_packh_result;
-
-   assign bitmanip_pack_result[31:0]   = {32{ap_pack}}  & {b_in[15:0], a_in[15:0]};
-   assign bitmanip_packu_result[31:0]  = {32{ap_packu}} & {b_in[31:16],a_in[31:16]};
-   assign bitmanip_packh_result[31:0]  = {32{ap_packh}} & {16'b0,b_in[7:0],a_in[7:0]};
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  REV, REV8, ORC_B * * * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_rev_result;
-   logic        [31:0]    bitmanip_rev8_result;
-   logic        [31:0]    bitmanip_orc_b_result;
-   logic        [31:0]    bitmanip_orc16_result;
-
-   assign bitmanip_rev_result[31:0]    = {32{ap_rev}}   &
-                                         {a_in[00],a_in[01],a_in[02],a_in[03],a_in[04],a_in[05],a_in[06],a_in[07],
-                                          a_in[08],a_in[09],a_in[10],a_in[11],a_in[12],a_in[13],a_in[14],a_in[15],
-                                          a_in[16],a_in[17],a_in[18],a_in[19],a_in[20],a_in[21],a_in[22],a_in[23],
-                                          a_in[24],a_in[25],a_in[26],a_in[27],a_in[28],a_in[29],a_in[30],a_in[31]};
-
-   assign bitmanip_rev8_result[31:0]   = {32{ap_rev8}}  & {a_in[7:0],a_in[15:8],a_in[23:16],a_in[31:24]};
-
-
-// uint32_t gorc32(uint32_t rs1, uint32_t rs2)
-// {
-//      uint32_t x = rs1;
-//      int shamt = rs2 & 31;                                                        ORC.B  ORC16
-//      if (shamt &  1) x |= ((x & 0x55555555) <<  1) | ((x & 0xAAAAAAAA) >>  1);      1      0
-//      if (shamt &  2) x |= ((x & 0x33333333) <<  2) | ((x & 0xCCCCCCCC) >>  2);      1      0
-//      if (shamt &  4) x |= ((x & 0x0F0F0F0F) <<  4) | ((x & 0xF0F0F0F0) >>  4);      1      0
-//      if (shamt &  8) x |= ((x & 0x00FF00FF) <<  8) | ((x & 0xFF00FF00) >>  8);      0      0
-//      if (shamt & 16) x |= ((x & 0x0000FFFF) << 16) | ((x & 0xFFFF0000) >> 16);      0      1
-//      return x;
-// }
-
-
-// BEFORE              31  ,   30  ,   29  ,   28  ,    27  ,   26,     25,     24
-// shamt[0]  b =    a31|a30,a31|a30,a29|a28,a29|a28, a27|a26,a27|a26,a25|a24,a25|a24
-// shamt[1]  c =    b31|b29,b30|b28,b31|b29,b30|b28, b27|b25,b26|b24,b27|b25,b26|b24
-// shamt[2]  d =    c31|c27,c30|c26,c29|c25,c28|c24, c31|c27,c30|c26,c29|c25,c28|c24
-//
-// Expand d31 =        c31         |         c27;
-//            =   b31   |   b29    |    b27   |   b25;
-//            = a31|a30 | a29|a28  |  a27|a26 | a25|a24
-
-   assign bitmanip_orc_b_result[31:0]  = {32{ap_orc_b}} & { {8{| a_in[31:24]}}, {8{| a_in[23:16]}}, {8{| a_in[15:8]}}, {8{| a_in[7:0]}} };
-
-   assign bitmanip_orc16_result[31:0]  = {32{ap_orc16}} & {     {a_in[31:16] | a_in[15:0]},             {a_in[31:16] | a_in[15:0]}      };
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ZBSET, ZBCLR, ZBINV  * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_sb_1hot;
-   logic        [31:0]    bitmanip_sb_data;
-
-   assign bitmanip_sb_1hot[31:0]       = ( 32'h00000001 << b_in[4:0] );
-
-   assign bitmanip_sb_data[31:0]       = ( {32{ap_sbset}} & ( a_in[31:0] |  bitmanip_sb_1hot[31:0]) ) |
-                                         ( {32{ap_sbclr}} & ( a_in[31:0] & ~bitmanip_sb_1hot[31:0]) ) |
-                                         ( {32{ap_sbinv}} & ( a_in[31:0] ^  bitmanip_sb_1hot[31:0]) );
-
-
-
-
-
-
-   assign sel_shift           =  ap.sll  | ap.srl | ap.sra | ap_slo | ap_sro | ap_rol | ap_ror;
-   assign sel_adder           = (ap.add  | ap.sub | ap_zba) & ~ap.slt & ~ap_min & ~ap_max;
-   assign sel_pc              =  ap.jal  | pp_in.pcall | pp_in.pja | pp_in.pret;
-   assign csr_write_data[31:0]= (ap.csr_imm)  ?  b_in[31:0]  :  a_in[31:0];
-
-   assign slt_one             =  ap.slt & lt;
-
-
-
-   assign result[31:0]        =                        lout[31:0]             |
-                                ({32{sel_shift}}    &  sout[31:0]           ) |
-                                ({32{sel_adder}}    &  aout[31:0]           ) |
-                                ({32{sel_pc}}       & {pcout[31:1],1'b0}    ) |
-                                ({32{ap.csr_write}} &  csr_write_data[31:0] ) |
-                                                      {31'b0, slt_one}        |
-                                ({32{ap_sbext}}     & {31'b0, sout[0]}      ) |
-                                                      {26'b0, bitmanip_clz_ctz_result[5:0]} |
-                                                      {26'b0, bitmanip_pcnt_result[5:0]}    |
-                                                       bitmanip_sext_result[31:0]    |
-                                                       bitmanip_minmax_result[31:0]  |
-                                                       bitmanip_pack_result[31:0]    |
-                                                       bitmanip_packu_result[31:0]   |
-                                                       bitmanip_packh_result[31:0]   |
-                                                       bitmanip_rev_result[31:0]     |
-                                                       bitmanip_rev8_result[31:0]    |
-                                                       bitmanip_orc_b_result[31:0]   |
-                                                       bitmanip_orc16_result[31:0]   |
-                                                       bitmanip_sb_data[31:0];
-
-
-
-   // *** branch handling ***
-
-   assign any_jal             =  ap.jal      |
-                                 pp_in.pcall |
-                                 pp_in.pja   |
-                                 pp_in.pret;
-
-   assign actual_taken        = (ap.beq & eq) |
-                                (ap.bne & ne) |
-                                (ap.blt & lt) |
-                                (ap.bge & ge) |
-                                 any_jal;
-
-   // for a conditional br pcout[] will be the opposite of the branch prediction
-   // for jal or pcall, it will be the link address pc+2 or pc+4
-
-   rvbradder ibradder (
-                     .pc     ( pc_in[31:1]    ),
-                     .offset ( brimm_in[12:1] ),
-                     .dout   ( pcout[31:1]    ));
-
-
-   // pred_correct is for the npc logic
-   // pred_correct indicates not to use the flush_path
-   // for any_jal pred_correct==0
-
-   assign pred_correct_out    = (valid_in & ap.predict_nt & ~actual_taken & ~any_jal) |
-                                (valid_in & ap.predict_t  &  actual_taken & ~any_jal);
-
-
-   // for any_jal adder output is the flush path
-   assign flush_path_out[31:1]= (any_jal) ? aout[31:1] : pcout[31:1];
-
-
-   // pcall and pret are included here
-   assign cond_mispredict     = (ap.predict_t  & ~actual_taken) |
-                                (ap.predict_nt &  actual_taken);
-
-
-   // target mispredicts on ret's
-
-   assign target_mispredict   =  pp_in.pret & (pp_in.prett[31:1] != aout[31:1]);
-
-   assign flush_upper_out     =   (ap.jal | cond_mispredict | target_mispredict) & valid_in & ~flush_upper_x   & ~flush_lower_r;
-   assign flush_final_out     = ( (ap.jal | cond_mispredict | target_mispredict) & valid_in & ~flush_upper_x ) |  flush_lower_r;
-
-
-   // .i 3
-   // .o 2
-   // .ilb hist[1] hist[0] taken
-   // .ob newhist[1] newhist[0]
-   // .type fd
-   //
-   // 00 0 01
-   // 01 0 01
-   // 10 0 00
-   // 11 0 10
-   // 00 1 10
-   // 01 1 00
-   // 10 1 11
-   // 11 1 11
-
-   assign newhist[1]          = ( pp_in.hist[1] &  pp_in.hist[0]) | (~pp_in.hist[0] & actual_taken);
-   assign newhist[0]          = (~pp_in.hist[1] & ~actual_taken)  | ( pp_in.hist[1] & actual_taken);
-
-   always_comb begin
-      predict_p_out           =  pp_in;
-
-      predict_p_out.misp      = ~flush_upper_x & ~flush_lower_r & (cond_mispredict | target_mispredict);
-      predict_p_out.ataken    =  actual_taken;
-      predict_p_out.hist[1]   =  newhist[1];
-      predict_p_out.hist[0]   =  newhist[0];
-
-   end
-
-
-
-endmodule // eb1_exu_alu_ctl
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_div_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic           clk,                       // Top level clock
-   input logic           rst_l,                     // Reset
-   input logic           scan_mode,                 // Scan mode
-
-   input eb1_div_pkt_t  dp,                        // valid, sign, rem
-   input logic  [31:0]   dividend,                  // Numerator
-   input logic  [31:0]   divisor,                   // Denominator
-
-   input logic           cancel,                    // Cancel divide
-
-
-   output logic          finish_dly,                // Finish to match data
-   output logic [31:0]   out                        // Result
-  );
-
-
-   logic [31:0]          out_raw;
-
-   assign out[31:0] = {32{finish_dly}} & out_raw[31:0];     // Qualification added to quiet result bus while divide is iterating
-
-
-
-   if (pt.DIV_NEW == 0)
-      begin
-        eb1_exu_div_existing_1bit_cheapshortq   i_existing_1bit_div_cheapshortq (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 1) )
-      begin
-        eb1_exu_div_new_1bit_fullshortq         i_new_1bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 2) )
-      begin
-        eb1_exu_div_new_2bit_fullshortq         i_new_2bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 3) )
-      begin
-        eb1_exu_div_new_3bit_fullshortq         i_new_3bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 4) )
-      begin
-        eb1_exu_div_new_4bit_fullshortq         i_new_4bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-
-endmodule // eb1_exu_div_ctl
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_existing_1bit_cheapshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic         div_clken;
-   logic         run_in, run_state;
-   logic  [5:0]  count_in, count;
-   logic [32:0]  m_ff;
-   logic         qff_enable;
-   logic         aff_enable;
-   logic [32:0]  q_in, q_ff;
-   logic [32:0]  a_in, a_ff;
-   logic [32:0]  m_eff;
-   logic [32:0]  a_shift;
-   logic         dividend_neg_ff, divisor_neg_ff;
-   logic [31:0]  dividend_comp;
-   logic [31:0]  dividend_eff;
-   logic [31:0]  q_ff_comp;
-   logic [31:0]  q_ff_eff;
-   logic [31:0]  a_ff_comp;
-   logic [31:0]  a_ff_eff;
-   logic         sign_ff, sign_eff;
-   logic         rem_ff;
-   logic         add;
-   logic [32:0]  a_eff;
-   logic [64:0]  a_eff_shift;
-   logic         rem_correct;
-   logic         valid_ff_x;
-   logic         valid_x;
-   logic         finish;
-   logic         finish_ff;
-
-   logic         smallnum_case, smallnum_case_ff;
-   logic  [3:0]  smallnum, smallnum_ff;
-   logic         m_already_comp;
-
-   logic [4:0]   a_cls;
-   logic [4:0]   b_cls;
-   logic [5:0]   shortq_shift;
-   logic [5:0]   shortq_shift_ff;
-   logic [5:0]   shortq;
-   logic         shortq_enable;
-   logic         shortq_enable_ff;
-   logic [32:0]  short_dividend;
-   logic [3:0]   shortq_raw;
-   logic [3:0]   shortq_shift_xx;
-
-
-
-   rvdffe #(23) i_misc_ff        (.*, .clk(clk), .en(div_clken),   .din ({valid_in & ~cancel,
-                                                                          finish   & ~cancel,
-                                                                          run_in,
-                                                                          count_in[5:0],
-                                                                          (valid_in & dividend_in[31]) | (~valid_in & dividend_neg_ff),
-                                                                          (valid_in & divisor_in[31] ) | (~valid_in & divisor_neg_ff ),
-                                                                          (valid_in & sign_eff       ) | (~valid_in & sign_ff        ),
-                                                                          (valid_in & rem_in         ) | (~valid_in & rem_ff         ),
-                                                                          smallnum_case,
-                                                                          smallnum[3:0],
-                                                                          shortq_enable,
-                                                                          shortq_shift[3:0]}),
-
-                                                                   .dout({valid_ff_x,
-                                                                          finish_ff,
-                                                                          run_state,
-                                                                          count[5:0],
-                                                                          dividend_neg_ff,
-                                                                          divisor_neg_ff,
-                                                                          sign_ff,
-                                                                          rem_ff,
-                                                                          smallnum_case_ff,
-                                                                          smallnum_ff[3:0],
-                                                                          shortq_enable_ff,
-                                                                          shortq_shift_xx[3:0]}));
-
-
-   rvdffe #(33) mff              (.*, .clk(clk), .en(valid_in),    .din({signed_in & divisor_in[31], divisor_in[31:0]}),   .dout(m_ff[32:0]));
-   rvdffe #(33) qff              (.*, .clk(clk), .en(qff_enable),  .din(q_in[32:0]),                                       .dout(q_ff[32:0]));
-   rvdffe #(33) aff              (.*, .clk(clk), .en(aff_enable),  .din(a_in[32:0]),                                       .dout(a_ff[32:0]));
-
-   rvtwoscomp #(32) i_dividend_comp (.din(q_ff[31:0]),    .dout(dividend_comp[31:0]));
-   rvtwoscomp #(32) i_q_ff_comp     (.din(q_ff[31:0]),    .dout(q_ff_comp[31:0]));
-   rvtwoscomp #(32) i_a_ff_comp     (.din(a_ff[31:0]),    .dout(a_ff_comp[31:0]));
-
-
-   assign valid_x                 = valid_ff_x & ~cancel;
-
-
-   // START - short circuit logic for small numbers {{
-
-   // small number divides - any 4b / 4b is done in 1 cycle (divisor != 0)
-   // to generate espresso equations:
-   // 1.  smalldiv > smalldiv.e
-   // 2.  espresso -Dso -oeqntott smalldiv.e | addassign > smalldiv
-
-   // smallnum case does not cover divide by 0
-   assign smallnum_case           = ((q_ff[31:4] == 28'b0) & (m_ff[31:4] == 28'b0) & (m_ff[31:0] != 32'b0) & ~rem_ff & valid_x) |
-                                    ((q_ff[31:0] == 32'b0) &                         (m_ff[31:0] != 32'b0) & ~rem_ff & valid_x);
-
-
-   assign smallnum[3]             = ( q_ff[3] &                                  ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           );
-
-
-   assign smallnum[2]             = ( q_ff[3] &                                  ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    ( q_ff[2] &                                  ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] & ~m_ff[2]                      );
-
-
-   assign smallnum[1]             = ( q_ff[2] &                                  ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    (                       q_ff[1] &            ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &                                  ~m_ff[3] &            ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] & ~q_ff[2] &                       ~m_ff[3] & ~m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] &  m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &             q_ff[1] & ~m_ff[3] &                       ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &  m_ff[2]                      );
-
-
-   assign smallnum[0]             = (            q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] &  q_ff[0] &            ~m_ff[3] &             m_ff[1] &  m_ff[0]) |
-                                    (            q_ff[2] &                       ~m_ff[3] &            ~m_ff[1] & ~m_ff[0]) |
-                                    (                       q_ff[1] &            ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    (                                  q_ff[0] & ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] & ~q_ff[1] &            ~m_ff[3] & ~m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &                                             ~m_ff[2] & ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] & ~q_ff[2] &                       ~m_ff[3] &  m_ff[2] &  m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &  m_ff[2] & ~m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] &             q_ff[0] & ~m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] & ~q_ff[1] &            ~m_ff[3] &  m_ff[2] &             m_ff[0]) |
-                                    (           ~q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                                             ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] &             q_ff[1] &                       ~m_ff[2] &            ~m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] &  m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                        m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &             q_ff[1] &             m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &                        q_ff[0] &            ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &            ~q_ff[1] &            ~m_ff[3] &  m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &             m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &             m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &             q_ff[0] &  m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] &  q_ff[1] &            ~m_ff[3] &             m_ff[1]           ) |
-                                    ( q_ff[3] &             q_ff[1] &  q_ff[0] &            ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &  q_ff[0] &  m_ff[3]                                 );
-
-
-   // END   - short circuit logic for small numbers }}
-
-
-   // *** Start Short Q *** {{
-
-   assign short_dividend[31:0]    =  q_ff[31:0];
-   assign short_dividend[32]      =  sign_ff & q_ff[31];
-
-
-   //    A       B
-   //   210     210    SH
-   //   ---     ---    --
-   //   1xx     000     0
-   //   1xx     001     8
-   //   1xx     01x    16
-   //   1xx     1xx    24
-   //   01x     000     8
-   //   01x     001    16
-   //   01x     01x    24
-   //   01x     1xx    32
-   //   001     000    16
-   //   001     001    24
-   //   001     01x    32
-   //   001     1xx    32
-   //   000     000    24
-   //   000     001    32
-   //   000     01x    32
-   //   000     1xx    32
-
-   assign a_cls[4:3]              =  2'b0;
-   assign a_cls[2]                =  (~short_dividend[32] & (short_dividend[31:24] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[31:23] != {9{1'b1}}));
-   assign a_cls[1]                =  (~short_dividend[32] & (short_dividend[23:16] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[22:15] != {8{1'b1}}));
-   assign a_cls[0]                =  (~short_dividend[32] & (short_dividend[15:08] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[14:07] != {8{1'b1}}));
-
-   assign b_cls[4:3]              =  2'b0;
-   assign b_cls[2]                =  (~m_ff[32]           & (          m_ff[31:24] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[31:24] != {8{1'b1}}));
-   assign b_cls[1]                =  (~m_ff[32]           & (          m_ff[23:16] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[23:16] != {8{1'b1}}));
-   assign b_cls[0]                =  (~m_ff[32]           & (          m_ff[15:08] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[15:08] != {8{1'b1}}));
-
-   assign shortq_raw[3]           = ( (a_cls[2:1] == 2'b01 ) & (b_cls[2]   == 1'b1  ) ) |   // Shift by 32
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2]   == 1'b1  ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2]   == 1'b1  ) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:0] == 3'b001) );
-
-   assign shortq_raw[2]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2]   == 1'b1  ) ) |   // Shift by 24
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:0] == 3'b001) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:0] == 3'b000) );
-
-   assign shortq_raw[1]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2:1] == 2'b01 ) ) |   // Shift by 16
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:0] == 3'b001) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:0] == 3'b000) );
-
-   assign shortq_raw[0]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2:0] == 3'b001) ) |   // Shift by  8
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:0] == 3'b000) );
-
-
-   assign shortq_enable           =  valid_ff_x & (m_ff[31:0] != 32'b0) & (shortq_raw[3:0] != 4'b0);
-
-   assign shortq_shift[3:0]       = ({4{shortq_enable}} & shortq_raw[3:0]);
-
-   assign shortq[5:0]             =  6'b0;
-   assign shortq_shift[5:4]       =  2'b0;
-   assign shortq_shift_ff[5]      =  1'b0;
-
-   assign shortq_shift_ff[4:0]    = ({5{shortq_shift_xx[3]}} & 5'b1_1111) |   // 31
-                                    ({5{shortq_shift_xx[2]}} & 5'b1_1000) |   // 24
-                                    ({5{shortq_shift_xx[1]}} & 5'b1_0000) |   // 16
-                                    ({5{shortq_shift_xx[0]}} & 5'b0_1000);    //  8
-
-   // *** End   Short *** }}
-
-
-
-
-
-   assign div_clken               =  valid_in | run_state | finish | finish_ff;
-
-   assign run_in                  = (valid_in | run_state) & ~finish & ~cancel;
-
-   assign count_in[5:0]           = {6{run_state & ~finish & ~cancel & ~shortq_enable}} & (count[5:0] + {1'b0,shortq_shift_ff[4:0]} + 6'd1);
-
-
-   assign finish                  = (smallnum_case | ((~rem_ff) ? (count[5:0] == 6'd32) : (count[5:0] == 6'd33)));
-
-   assign valid_out               =  finish_ff & ~cancel;
-
-   assign sign_eff                =  signed_in & (divisor_in[31:0] != 32'b0);
-
-
-   assign q_in[32:0]              = ({33{~run_state                                   }} &  {1'b0,dividend_in[31:0]}) |
-                                    ({33{ run_state &  (valid_ff_x | shortq_enable_ff)}} &  ({dividend_eff[31:0], ~a_in[32]} << shortq_shift_ff[4:0])) |
-                                    ({33{ run_state & ~(valid_ff_x | shortq_enable_ff)}} &  {q_ff[31:0], ~a_in[32]});
-
-   assign qff_enable              =  valid_in | (run_state & ~shortq_enable);
-
-
-
-
-   assign dividend_eff[31:0]      = (sign_ff & dividend_neg_ff) ? dividend_comp[31:0] : q_ff[31:0];
-
-
-   assign m_eff[32:0]             = ( add ) ? m_ff[32:0] : ~m_ff[32:0];
-
-   assign a_eff_shift[64:0]       = {33'b0, dividend_eff[31:0]} << shortq_shift_ff[4:0];
-
-   assign a_eff[32:0]             = ({33{ rem_correct                    }} &  a_ff[32:0]            ) |
-                                    ({33{~rem_correct & ~shortq_enable_ff}} & {a_ff[31:0], q_ff[32]} ) |
-                                    ({33{~rem_correct &  shortq_enable_ff}} &  a_eff_shift[64:32]    );
-
-   assign a_shift[32:0]           = {33{run_state}} & a_eff[32:0];
-
-   assign a_in[32:0]              = {33{run_state}} & (a_shift[32:0] + m_eff[32:0] + {32'b0,~add});
-
-   assign aff_enable              =  valid_in | (run_state & ~shortq_enable & (count[5:0]!=6'd33)) | rem_correct;
-
-
-   assign m_already_comp          = (divisor_neg_ff & sign_ff);
-
-   // if m already complemented, then invert operation add->sub, sub->add
-   assign add                     = (a_ff[32] | rem_correct) ^ m_already_comp;
-
-   assign rem_correct             = (count[5:0] == 6'd33) & rem_ff & a_ff[32];
-
-
-
-   assign q_ff_eff[31:0]          = (sign_ff & (dividend_neg_ff ^ divisor_neg_ff)) ? q_ff_comp[31:0] : q_ff[31:0];
-
-   assign a_ff_eff[31:0]          = (sign_ff &  dividend_neg_ff) ? a_ff_comp[31:0] : a_ff[31:0];
-
-   assign data_out[31:0]          = ({32{ smallnum_case_ff          }} & {28'b0, smallnum_ff[3:0]}) |
-                                    ({32{                     rem_ff}} &  a_ff_eff[31:0]          ) |
-                                    ({32{~smallnum_case_ff & ~rem_ff}} &  q_ff_eff[31:0]          );
-
-
-
-
-endmodule // eb1_exu_div_existing_1bit_cheapshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_1bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in, b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable, r_sign_sel, r_restore_sel, r_adder_sel;
-   logic        [31:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic                   quotient_set;
-   logic        [32:0]     adder_out;
-
-   logic        [63:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(32) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[31:0]),           .dout(r_ff[31:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {6'b0,1'b1} + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[63:0]       = { {32{dividend_sign_ff}} , a_ff[31:0]} << shortq_shift_ff[4:0];
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[30:0],1'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & ~quotient_set & ~shortq_enable_ff;
-   assign r_adder_sel            =  running_state &  quotient_set & ~shortq_enable_ff;
-
-
-   assign r_in[31:0]             = ( {32{r_sign_sel      }} &  32'hffffffff          ) |
-                                   ( {32{r_restore_sel   }} & {r_ff[30:0] ,a_ff[31]} ) |
-                                   ( {32{r_adder_sel     }} &  adder_out[31:0]       ) |
-                                   ( {32{shortq_enable_ff}} &  ar_shifted[63:32]     ) |
-                                   ( {32{by_zero_case    }} &  a_ff[31:0]            );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff       }} & {q_ff[30:0], quotient_set}  ) |
-                                   ( {32{ smallnum_case  }} & {28'b0     , smallnum[3:0]} ) |
-                                   ( {32{ by_zero_case   }} & {32{1'b1}}                  );
-
-
-
-   assign adder_out[32:0]        = {r_ff[31:0],a_ff[31]} + {b_ff[32:0] };
-
-
-   assign quotient_set           = (~adder_out[32] ^ dividend_sign_ff) | ( (a_ff[30:0] == 31'b0) & (adder_out[32:0] == 33'b0) );
-
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:1] ==  4'b1111) & ~cancel;
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  (5'b11111 - shortq[4:0]);
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_1bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_2bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [34:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable, r_sign_sel, r_restore_sel, r_adder1_sel, r_adder2_sel, r_adder3_sel;
-   logic        [31:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic         [3:1]     quotient_raw;
-   logic         [1:0]     quotient_new;
-   logic        [32:0]     adder1_out;
-   logic        [33:0]     adder2_out;
-   logic        [34:0]     adder3_out;
-
-   logic        [63:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:1]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(18) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:1],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:1], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(32) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[31:0]),           .dout(r_ff[31:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {5'b0,2'b10} + {2'b0,shortq_shift_ff[4:1],1'b0});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[63:0]       = { {32{dividend_sign_ff}} , a_ff[31:0]} << {shortq_shift_ff[4:1],1'b0};
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[29:0],2'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[1:0] == 2'b00) & ~shortq_enable_ff;
-   assign r_adder1_sel           =  running_state & (quotient_new[1:0] == 2'b01) & ~shortq_enable_ff;
-   assign r_adder2_sel           =  running_state & (quotient_new[1:0] == 2'b10) & ~shortq_enable_ff;
-   assign r_adder3_sel           =  running_state & (quotient_new[1:0] == 2'b11) & ~shortq_enable_ff;
-
-
-   assign r_in[31:0]             = ( {32{r_sign_sel      }} &  32'hffffffff             ) |
-                                   ( {32{r_restore_sel   }} & {r_ff[29:0] ,a_ff[31:30]} ) |
-                                   ( {32{r_adder1_sel    }} &  adder1_out[31:0]         ) |
-                                   ( {32{r_adder2_sel    }} &  adder2_out[31:0]         ) |
-                                   ( {32{r_adder3_sel    }} &  adder3_out[31:0]         ) |
-                                   ( {32{shortq_enable_ff}} &  ar_shifted[63:32]        ) |
-                                   ( {32{by_zero_case    }} &  a_ff[31:0]               );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff       }} & {q_ff[29:0], quotient_new[1:0]} ) |
-                                   ( {32{ smallnum_case  }} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case   }} & {32{1'b1}}                      );
-
-
-   assign b_ff[34:33]            = {b_ff[32],b_ff[32]};
-
-
-   assign adder1_out[32:0]       = {         r_ff[30:0],a_ff[31:30]}  +                       b_ff[32:0];
-   assign adder2_out[33:0]       = {         r_ff[31:0],a_ff[31:30]}  + {b_ff[32:0],1'b0};
-   assign adder3_out[34:0]       = {r_ff[31],r_ff[31:0],a_ff[31:30]}  + {b_ff[33:0],1'b0}  +  b_ff[34:0];
-
-
-   assign quotient_raw[1]        = (~adder1_out[32] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder1_out[32:0] == 33'b0) );
-   assign quotient_raw[2]        = (~adder2_out[33] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder2_out[33:0] == 34'b0) );
-   assign quotient_raw[3]        = (~adder3_out[34] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder3_out[34:0] == 35'b0) );
-
-   assign quotient_new[1]        = quotient_raw[3] |  quotient_raw[2];
-   assign quotient_new[0]        = quotient_raw[3] |(~quotient_raw[2] & quotient_raw[1]);
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:1] ==  4'b1111) & ~cancel;
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  (5'b11111 - shortq[4:0]);   // [0] is unused
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_2bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_3bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [32:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [36:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable;
-   logic                   r_sign_sel;
-   logic                   r_restore_sel;
-   logic                   r_adder1_sel, r_adder2_sel, r_adder3_sel, r_adder4_sel, r_adder5_sel, r_adder6_sel, r_adder7_sel;
-   logic        [32:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic         [7:1]     quotient_raw;
-   logic         [2:0]     quotient_new;
-   logic        [33:0]     adder1_out;
-   logic        [34:0]     adder2_out;
-   logic        [35:0]     adder3_out;
-   logic        [36:0]     adder4_out;
-   logic        [36:0]     adder5_out;
-   logic        [36:0]     adder6_out;
-   logic        [36:0]     adder7_out;
-
-   logic        [65:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_decode;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(33) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[32:0]),           .dout(a_ff[32:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(33) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[32:0]),           .dout(r_ff[32:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd33);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {5'b0,2'b11} + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[65:0]       = { {33{dividend_sign_ff}} , a_ff[32:0]} << {shortq_shift_ff[4:0]};
-
-   assign a_in[32:0]             = ( {33{~a_shift & ~shortq_enable_ff}} & {signed_in & dividend_in[31],dividend_in[31:0]} ) |
-                                   ( {33{ a_shift                    }} & {a_ff[29:0],3'b0}  ) |
-                                   ( {33{            shortq_enable_ff}} &  ar_shifted[32:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[2:0] == 3'b000) & ~shortq_enable_ff;
-   assign r_adder1_sel           =  running_state & (quotient_new[2:0] == 3'b001) & ~shortq_enable_ff;
-   assign r_adder2_sel           =  running_state & (quotient_new[2:0] == 3'b010) & ~shortq_enable_ff;
-   assign r_adder3_sel           =  running_state & (quotient_new[2:0] == 3'b011) & ~shortq_enable_ff;
-   assign r_adder4_sel           =  running_state & (quotient_new[2:0] == 3'b100) & ~shortq_enable_ff;
-   assign r_adder5_sel           =  running_state & (quotient_new[2:0] == 3'b101) & ~shortq_enable_ff;
-   assign r_adder6_sel           =  running_state & (quotient_new[2:0] == 3'b110) & ~shortq_enable_ff;
-   assign r_adder7_sel           =  running_state & (quotient_new[2:0] == 3'b111) & ~shortq_enable_ff;
-
-
-   assign r_in[32:0]             = ( {33{r_sign_sel      }} & {33{1'b1}}               ) |
-                                   ( {33{r_restore_sel   }} & {r_ff[29:0] ,a_ff[32:30]} ) |
-                                   ( {33{r_adder1_sel    }} &  adder1_out[32:0]         ) |
-                                   ( {33{r_adder2_sel    }} &  adder2_out[32:0]         ) |
-                                   ( {33{r_adder3_sel    }} &  adder3_out[32:0]         ) |
-                                   ( {33{r_adder4_sel    }} &  adder4_out[32:0]         ) |
-                                   ( {33{r_adder5_sel    }} &  adder5_out[32:0]         ) |
-                                   ( {33{r_adder6_sel    }} &  adder6_out[32:0]         ) |
-                                   ( {33{r_adder7_sel    }} &  adder7_out[32:0]         ) |
-                                   ( {33{shortq_enable_ff}} &  ar_shifted[65:33]        ) |
-                                   ( {33{by_zero_case    }} & {1'b0,a_ff[31:0]}         );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff     }} & {q_ff[28:0], quotient_new[2:0]} ) |
-                                   ( {32{ smallnum_case}} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case }} & {32{1'b1}}                      );
-
-
-   assign b_ff[36:33]            = {b_ff[32],b_ff[32],b_ff[32],b_ff[32]};
-
-
-   assign adder1_out[33:0]       = {         r_ff[30:0],a_ff[32:30]}  +                                              b_ff[33:0];
-   assign adder2_out[34:0]       = {         r_ff[31:0],a_ff[32:30]}  +                        {b_ff[33:0],1'b0};
-   assign adder3_out[35:0]       = {         r_ff[32:0],a_ff[32:30]}  +                        {b_ff[34:0],1'b0}  +  b_ff[35:0];
-   assign adder4_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0};
-   assign adder5_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +                        b_ff[36:0];
-   assign adder6_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +  {b_ff[35:0],1'b0};
-   assign adder7_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +  {b_ff[35:0],1'b0}  +  b_ff[36:0];
-
-   assign quotient_raw[1]        = (~adder1_out[33] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder1_out[33:0] == 34'b0) );
-   assign quotient_raw[2]        = (~adder2_out[34] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder2_out[34:0] == 35'b0) );
-   assign quotient_raw[3]        = (~adder3_out[35] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder3_out[35:0] == 36'b0) );
-   assign quotient_raw[4]        = (~adder4_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder4_out[36:0] == 37'b0) );
-   assign quotient_raw[5]        = (~adder5_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder5_out[36:0] == 37'b0) );
-   assign quotient_raw[6]        = (~adder6_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder6_out[36:0] == 37'b0) );
-   assign quotient_raw[7]        = (~adder7_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder7_out[36:0] == 37'b0) );
-
-   assign quotient_new[2]        = quotient_raw[7] |   quotient_raw[6] | quotient_raw[5]  |   quotient_raw[4];
-   assign quotient_new[1]        = quotient_raw[7] |   quotient_raw[6] |                    (~quotient_raw[4] & quotient_raw[3]) | (~quotient_raw[3] & quotient_raw[2]);
-   assign quotient_new[0]        = quotient_raw[7] | (~quotient_raw[6] & quotient_raw[5]) | (~quotient_raw[4] & quotient_raw[3]) | (~quotient_raw[2] & quotient_raw[1]);
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:2] ==  3'b111) & ~cancel;
-
-   assign shortq_decode[4:0]      = ( {5{shortq[4:0] == 5'd31}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd30}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd29}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd28}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd27}} & 5'd03) |
-                                    ( {5{shortq[4:0] == 5'd26}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd25}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd24}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd23}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd22}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd21}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd20}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd19}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd18}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd17}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd16}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd15}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd14}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd13}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd12}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd11}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd10}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd09}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd08}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd07}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd06}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd05}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd04}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd03}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd02}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd01}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd00}} & 5'd27);
-
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  shortq_decode[4:0];
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_3bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_4bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [37:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable;
-   logic                   r_sign_sel;
-   logic                   r_restore_sel;
-   logic                   r_adder01_sel, r_adder02_sel, r_adder03_sel;
-   logic                   r_adder04_sel, r_adder05_sel, r_adder06_sel, r_adder07_sel;
-   logic                   r_adder08_sel, r_adder09_sel, r_adder10_sel, r_adder11_sel;
-   logic                   r_adder12_sel, r_adder13_sel, r_adder14_sel, r_adder15_sel;
-   logic        [32:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic        [15:1]     quotient_raw;
-   logic         [3:0]     quotient_new;
-   logic        [34:0]     adder01_out;
-   logic        [35:0]     adder02_out;
-   logic        [36:0]     adder03_out;
-   logic        [37:0]     adder04_out;
-   logic        [37:0]     adder05_out;
-   logic        [37:0]     adder06_out;
-   logic        [37:0]     adder07_out;
-   logic        [37:0]     adder08_out;
-   logic        [37:0]     adder09_out;
-   logic        [37:0]     adder10_out;
-   logic        [37:0]     adder11_out;
-   logic        [37:0]     adder12_out;
-   logic        [37:0]     adder13_out;
-   logic        [37:0]     adder14_out;
-   logic        [37:0]     adder15_out;
-
-   logic        [64:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_decode;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),     .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                       .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),        .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),        .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(33) i_r_ff           (.*, .clk(clk), .en(rq_enable),       .din(r_in[32:0]),           .dout(r_ff[32:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),       .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + 7'd4 + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[64:0]       = { {33{dividend_sign_ff}} , a_ff[31:0]} << {shortq_shift_ff[4:0]};
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[27:0],4'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[3:0] == 4'd00) & ~shortq_enable_ff;
-   assign r_adder01_sel          =  running_state & (quotient_new[3:0] == 4'd01) & ~shortq_enable_ff;
-   assign r_adder02_sel          =  running_state & (quotient_new[3:0] == 4'd02) & ~shortq_enable_ff;
-   assign r_adder03_sel          =  running_state & (quotient_new[3:0] == 4'd03) & ~shortq_enable_ff;
-   assign r_adder04_sel          =  running_state & (quotient_new[3:0] == 4'd04) & ~shortq_enable_ff;
-   assign r_adder05_sel          =  running_state & (quotient_new[3:0] == 4'd05) & ~shortq_enable_ff;
-   assign r_adder06_sel          =  running_state & (quotient_new[3:0] == 4'd06) & ~shortq_enable_ff;
-   assign r_adder07_sel          =  running_state & (quotient_new[3:0] == 4'd07) & ~shortq_enable_ff;
-   assign r_adder08_sel          =  running_state & (quotient_new[3:0] == 4'd08) & ~shortq_enable_ff;
-   assign r_adder09_sel          =  running_state & (quotient_new[3:0] == 4'd09) & ~shortq_enable_ff;
-   assign r_adder10_sel          =  running_state & (quotient_new[3:0] == 4'd10) & ~shortq_enable_ff;
-   assign r_adder11_sel          =  running_state & (quotient_new[3:0] == 4'd11) & ~shortq_enable_ff;
-   assign r_adder12_sel          =  running_state & (quotient_new[3:0] == 4'd12) & ~shortq_enable_ff;
-   assign r_adder13_sel          =  running_state & (quotient_new[3:0] == 4'd13) & ~shortq_enable_ff;
-   assign r_adder14_sel          =  running_state & (quotient_new[3:0] == 4'd14) & ~shortq_enable_ff;
-   assign r_adder15_sel          =  running_state & (quotient_new[3:0] == 4'd15) & ~shortq_enable_ff;
-
-   assign r_in[32:0]             = ( {33{r_sign_sel      }} & {33{1'b1}}               ) |
-                                   ( {33{r_restore_sel   }} & {r_ff[28:0],a_ff[31:28]} ) |
-                                   ( {33{r_adder01_sel   }} &  adder01_out[32:0]       ) |
-                                   ( {33{r_adder02_sel   }} &  adder02_out[32:0]       ) |
-                                   ( {33{r_adder03_sel   }} &  adder03_out[32:0]       ) |
-                                   ( {33{r_adder04_sel   }} &  adder04_out[32:0]       ) |
-                                   ( {33{r_adder05_sel   }} &  adder05_out[32:0]       ) |
-                                   ( {33{r_adder06_sel   }} &  adder06_out[32:0]       ) |
-                                   ( {33{r_adder07_sel   }} &  adder07_out[32:0]       ) |
-                                   ( {33{r_adder08_sel   }} &  adder08_out[32:0]       ) |
-                                   ( {33{r_adder09_sel   }} &  adder09_out[32:0]       ) |
-                                   ( {33{r_adder10_sel   }} &  adder10_out[32:0]       ) |
-                                   ( {33{r_adder11_sel   }} &  adder11_out[32:0]       ) |
-                                   ( {33{r_adder12_sel   }} &  adder12_out[32:0]       ) |
-                                   ( {33{r_adder13_sel   }} &  adder13_out[32:0]       ) |
-                                   ( {33{r_adder14_sel   }} &  adder14_out[32:0]       ) |
-                                   ( {33{r_adder15_sel   }} &  adder15_out[32:0]       ) |
-                                   ( {33{shortq_enable_ff}} &  ar_shifted[64:32]       ) |
-                                   ( {33{by_zero_case    }} & {1'b0,a_ff[31:0]}        );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff     }} & {q_ff[27:0], quotient_new[3:0]} ) |
-                                   ( {32{ smallnum_case}} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case }} & {32{1'b1}}                      );
-
-
-   assign b_ff[37:33]            = {b_ff[32],b_ff[32],b_ff[32],b_ff[32],b_ff[32]};
-
-
-   assign adder01_out[34:0]      = {         r_ff[30:0],a_ff[31:28]}  +                                                                   b_ff[34:0];
-   assign adder02_out[35:0]      = {         r_ff[31:0],a_ff[31:28]}  +                                             {b_ff[34:0],1'b0};
-   assign adder03_out[36:0]      = {         r_ff[32:0],a_ff[31:28]}  +                                             {b_ff[35:0],1'b0}  +  b_ff[36:0];
-   assign adder04_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0};
-   assign adder05_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +                        b_ff[37:0];
-   assign adder06_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0};
-   assign adder07_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0}  +  b_ff[37:0];
-   assign adder08_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0};
-   assign adder09_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                                              b_ff[37:0];
-   assign adder10_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                        {b_ff[36:0],1'b0};
-   assign adder11_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                        {b_ff[36:0],1'b0}  +  b_ff[37:0];
-   assign adder12_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0};
-   assign adder13_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +                        b_ff[37:0];
-   assign adder14_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0};
-   assign adder15_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0}  +  b_ff[37:0];
-
-   assign quotient_raw[01]       = (~adder01_out[34] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder01_out[34:0] == 35'b0) );
-   assign quotient_raw[02]       = (~adder02_out[35] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder02_out[35:0] == 36'b0) );
-   assign quotient_raw[03]       = (~adder03_out[36] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder03_out[36:0] == 37'b0) );
-   assign quotient_raw[04]       = (~adder04_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder04_out[37:0] == 38'b0) );
-   assign quotient_raw[05]       = (~adder05_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder05_out[37:0] == 38'b0) );
-   assign quotient_raw[06]       = (~adder06_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder06_out[37:0] == 38'b0) );
-   assign quotient_raw[07]       = (~adder07_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder07_out[37:0] == 38'b0) );
-   assign quotient_raw[08]       = (~adder08_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder08_out[37:0] == 38'b0) );
-   assign quotient_raw[09]       = (~adder09_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder09_out[37:0] == 38'b0) );
-   assign quotient_raw[10]       = (~adder10_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder10_out[37:0] == 38'b0) );
-   assign quotient_raw[11]       = (~adder11_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder11_out[37:0] == 38'b0) );
-   assign quotient_raw[12]       = (~adder12_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder12_out[37:0] == 38'b0) );
-   assign quotient_raw[13]       = (~adder13_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder13_out[37:0] == 38'b0) );
-   assign quotient_raw[14]       = (~adder14_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder14_out[37:0] == 38'b0) );
-   assign quotient_raw[15]       = (~adder15_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder15_out[37:0] == 38'b0) );
-
-
-   assign quotient_new[0]        = ( quotient_raw[15:01] == 15'b000_0000_0000_0001 ) |  //  1
-                                   ( quotient_raw[15:03] == 13'b000_0000_0000_01   ) |  //  3
-                                   ( quotient_raw[15:05] == 11'b000_0000_0001      ) |  //  5
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:09] ==  7'b000_0001           ) |  //  9
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[1]        = ( quotient_raw[15:02] == 14'b000_0000_0000_001  ) |  //  2
-                                   ( quotient_raw[15:03] == 13'b000_0000_0000_01   ) |  //  3
-                                   ( quotient_raw[15:06] == 10'b000_0000_001       ) |  //  6
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:10] ==  6'b000_001            ) |  // 10
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[2]        = ( quotient_raw[15:04] == 12'b000_0000_0000_1    ) |  //  4
-                                   ( quotient_raw[15:05] == 11'b000_0000_0001      ) |  //  5
-                                   ( quotient_raw[15:06] == 10'b000_0000_001       ) |  //  6
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:12] ==  4'b000_1              ) |  // 12
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[3]        = ( quotient_raw[15:08] ==  8'b000_0000_1         ) |  //  8
-                                   ( quotient_raw[15:09] ==  7'b000_0001           ) |  //  9
-                                   ( quotient_raw[15:10] ==  6'b000_001            ) |  // 10
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:12] ==  4'b000_1              ) |  // 12
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:2] ==  3'b111) & ~cancel;
-
-   assign shortq_decode[4:0]      = ( {5{shortq[4:0] == 5'd31}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd30}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd29}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd28}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd27}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd26}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd25}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd24}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd23}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd22}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd21}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd20}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd19}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd18}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd17}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd16}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd15}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd14}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd13}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd12}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd11}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd10}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd09}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd08}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd07}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd06}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd05}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd04}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd03}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd02}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd01}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd00}} & 5'd28);
-
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  shortq_decode[4:0];
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_4bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-module eb1_exu_div_cls
-  (
-   input  logic [32:0] operand,
-
-   output logic [4:0]  cls                  // Count leading sign bits - "n" format ignoring [32]
-   );
-
-
-   logic [4:0]   cls_zeros;
-   logic [4:0]   cls_ones;
-
-
-assign cls_zeros[4:0]             = ({5{operand[31]    ==  {           1'b1} }} & 5'd00) |
-                                    ({5{operand[31:30] ==  {{ 1{1'b0}},1'b1} }} & 5'd01) |
-                                    ({5{operand[31:29] ==  {{ 2{1'b0}},1'b1} }} & 5'd02) |
-                                    ({5{operand[31:28] ==  {{ 3{1'b0}},1'b1} }} & 5'd03) |
-                                    ({5{operand[31:27] ==  {{ 4{1'b0}},1'b1} }} & 5'd04) |
-                                    ({5{operand[31:26] ==  {{ 5{1'b0}},1'b1} }} & 5'd05) |
-                                    ({5{operand[31:25] ==  {{ 6{1'b0}},1'b1} }} & 5'd06) |
-                                    ({5{operand[31:24] ==  {{ 7{1'b0}},1'b1} }} & 5'd07) |
-                                    ({5{operand[31:23] ==  {{ 8{1'b0}},1'b1} }} & 5'd08) |
-                                    ({5{operand[31:22] ==  {{ 9{1'b0}},1'b1} }} & 5'd09) |
-                                    ({5{operand[31:21] ==  {{10{1'b0}},1'b1} }} & 5'd10) |
-                                    ({5{operand[31:20] ==  {{11{1'b0}},1'b1} }} & 5'd11) |
-                                    ({5{operand[31:19] ==  {{12{1'b0}},1'b1} }} & 5'd12) |
-                                    ({5{operand[31:18] ==  {{13{1'b0}},1'b1} }} & 5'd13) |
-                                    ({5{operand[31:17] ==  {{14{1'b0}},1'b1} }} & 5'd14) |
-                                    ({5{operand[31:16] ==  {{15{1'b0}},1'b1} }} & 5'd15) |
-                                    ({5{operand[31:15] ==  {{16{1'b0}},1'b1} }} & 5'd16) |
-                                    ({5{operand[31:14] ==  {{17{1'b0}},1'b1} }} & 5'd17) |
-                                    ({5{operand[31:13] ==  {{18{1'b0}},1'b1} }} & 5'd18) |
-                                    ({5{operand[31:12] ==  {{19{1'b0}},1'b1} }} & 5'd19) |
-                                    ({5{operand[31:11] ==  {{20{1'b0}},1'b1} }} & 5'd20) |
-                                    ({5{operand[31:10] ==  {{21{1'b0}},1'b1} }} & 5'd21) |
-                                    ({5{operand[31:09] ==  {{22{1'b0}},1'b1} }} & 5'd22) |
-                                    ({5{operand[31:08] ==  {{23{1'b0}},1'b1} }} & 5'd23) |
-                                    ({5{operand[31:07] ==  {{24{1'b0}},1'b1} }} & 5'd24) |
-                                    ({5{operand[31:06] ==  {{25{1'b0}},1'b1} }} & 5'd25) |
-                                    ({5{operand[31:05] ==  {{26{1'b0}},1'b1} }} & 5'd26) |
-                                    ({5{operand[31:04] ==  {{27{1'b0}},1'b1} }} & 5'd27) |
-                                    ({5{operand[31:03] ==  {{28{1'b0}},1'b1} }} & 5'd28) |
-                                    ({5{operand[31:02] ==  {{29{1'b0}},1'b1} }} & 5'd29) |
-                                    ({5{operand[31:01] ==  {{30{1'b0}},1'b1} }} & 5'd30) |
-                                    ({5{operand[31:00] ==  {{31{1'b0}},1'b1} }} & 5'd31) |
-                                    ({5{operand[31:00] ==  {{32{1'b0}}     } }} & 5'd00);    // Don't care case as it will be handled as special case
-
-
-assign cls_ones[4:0]              = ({5{operand[31:30] ==  {{ 1{1'b1}},1'b0} }} & 5'd00) |
-                                    ({5{operand[31:29] ==  {{ 2{1'b1}},1'b0} }} & 5'd01) |
-                                    ({5{operand[31:28] ==  {{ 3{1'b1}},1'b0} }} & 5'd02) |
-                                    ({5{operand[31:27] ==  {{ 4{1'b1}},1'b0} }} & 5'd03) |
-                                    ({5{operand[31:26] ==  {{ 5{1'b1}},1'b0} }} & 5'd04) |
-                                    ({5{operand[31:25] ==  {{ 6{1'b1}},1'b0} }} & 5'd05) |
-                                    ({5{operand[31:24] ==  {{ 7{1'b1}},1'b0} }} & 5'd06) |
-                                    ({5{operand[31:23] ==  {{ 8{1'b1}},1'b0} }} & 5'd07) |
-                                    ({5{operand[31:22] ==  {{ 9{1'b1}},1'b0} }} & 5'd08) |
-                                    ({5{operand[31:21] ==  {{10{1'b1}},1'b0} }} & 5'd09) |
-                                    ({5{operand[31:20] ==  {{11{1'b1}},1'b0} }} & 5'd10) |
-                                    ({5{operand[31:19] ==  {{12{1'b1}},1'b0} }} & 5'd11) |
-                                    ({5{operand[31:18] ==  {{13{1'b1}},1'b0} }} & 5'd12) |
-                                    ({5{operand[31:17] ==  {{14{1'b1}},1'b0} }} & 5'd13) |
-                                    ({5{operand[31:16] ==  {{15{1'b1}},1'b0} }} & 5'd14) |
-                                    ({5{operand[31:15] ==  {{16{1'b1}},1'b0} }} & 5'd15) |
-                                    ({5{operand[31:14] ==  {{17{1'b1}},1'b0} }} & 5'd16) |
-                                    ({5{operand[31:13] ==  {{18{1'b1}},1'b0} }} & 5'd17) |
-                                    ({5{operand[31:12] ==  {{19{1'b1}},1'b0} }} & 5'd18) |
-                                    ({5{operand[31:11] ==  {{20{1'b1}},1'b0} }} & 5'd19) |
-                                    ({5{operand[31:10] ==  {{21{1'b1}},1'b0} }} & 5'd20) |
-                                    ({5{operand[31:09] ==  {{22{1'b1}},1'b0} }} & 5'd21) |
-                                    ({5{operand[31:08] ==  {{23{1'b1}},1'b0} }} & 5'd22) |
-                                    ({5{operand[31:07] ==  {{24{1'b1}},1'b0} }} & 5'd23) |
-                                    ({5{operand[31:06] ==  {{25{1'b1}},1'b0} }} & 5'd24) |
-                                    ({5{operand[31:05] ==  {{26{1'b1}},1'b0} }} & 5'd25) |
-                                    ({5{operand[31:04] ==  {{27{1'b1}},1'b0} }} & 5'd26) |
-                                    ({5{operand[31:03] ==  {{28{1'b1}},1'b0} }} & 5'd27) |
-                                    ({5{operand[31:02] ==  {{29{1'b1}},1'b0} }} & 5'd28) |
-                                    ({5{operand[31:01] ==  {{30{1'b1}},1'b0} }} & 5'd29) |
-                                    ({5{operand[31:00] ==  {{31{1'b1}},1'b0} }} & 5'd30) |
-                                    ({5{operand[31:00] ==  {{32{1'b1}}     } }} & 5'd31);
-
-
-assign cls[4:0]                   =  operand[32]  ?  cls_ones[4:0]  :  cls_zeros[4:0];
-
-endmodule // eb1_exu_div_cls
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_mul_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic          clk,              // Top level clock
-   input logic          rst_l,            // Reset
-   input logic          scan_mode,        // Scan mode
-
-   input eb1_mul_pkt_t mul_p,            // {Valid, RS1 signed operand, RS2 signed operand, Select low 32-bits of result}
-
-   input logic [31:0]   rs1_in,           // A operand
-   input logic [31:0]   rs2_in,           // B operand
-
-
-   output logic [31:0]  result_x          // Result
-  );
-
-
-   logic                mul_x_enable;
-   logic                bit_x_enable;
-   logic signed [32:0]  rs1_ext_in;
-   logic signed [32:0]  rs2_ext_in;
-   logic        [65:0]  prod_x;
-   logic                low_x;
-
-
-
-   // *** Start - BitManip ***
-
-   logic                bitmanip_sel_d;
-   logic                bitmanip_sel_x;
-   logic        [31:0]  bitmanip_d;
-   logic        [31:0]  bitmanip_x;
-
-
-
-   // ZBE
-   logic                ap_bext;
-   logic                ap_bdep;
-
-   // ZBC
-   logic                ap_clmul;
-   logic                ap_clmulh;
-   logic                ap_clmulr;
-
-   // ZBP
-   logic                ap_grev;
-   logic                ap_gorc;
-   logic                ap_shfl;
-   logic                ap_unshfl;
-
-   // ZBR
-   logic                ap_crc32_b;
-   logic                ap_crc32_h;
-   logic                ap_crc32_w;
-   logic                ap_crc32c_b;
-   logic                ap_crc32c_h;
-   logic                ap_crc32c_w;
-
-   // ZBF
-   logic                ap_bfp;
-
-
-   if (pt.BITMANIP_ZBE == 1)
-     begin
-       assign ap_bext         =  mul_p.bext;
-       assign ap_bdep         =  mul_p.bdep;
-     end
-   else
-     begin
-       assign ap_bext         =  1'b0;
-       assign ap_bdep         =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBC == 1)
-     begin
-       assign ap_clmul        =  mul_p.clmul;
-       assign ap_clmulh       =  mul_p.clmulh;
-       assign ap_clmulr       =  mul_p.clmulr;
-     end
-   else
-     begin
-       assign ap_clmul        =  1'b0;
-       assign ap_clmulh       =  1'b0;
-       assign ap_clmulr       =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBP == 1)
-     begin
-       assign ap_grev         =  mul_p.grev;
-       assign ap_gorc         =  mul_p.gorc;
-       assign ap_shfl         =  mul_p.shfl;
-       assign ap_unshfl       =  mul_p.unshfl;
-     end
-   else
-     begin
-       assign ap_grev         =  1'b0;
-       assign ap_gorc         =  1'b0;
-       assign ap_shfl         =  1'b0;
-       assign ap_unshfl       =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBR == 1)
-     begin
-       assign ap_crc32_b      =  mul_p.crc32_b;
-       assign ap_crc32_h      =  mul_p.crc32_h;
-       assign ap_crc32_w      =  mul_p.crc32_w;
-       assign ap_crc32c_b     =  mul_p.crc32c_b;
-       assign ap_crc32c_h     =  mul_p.crc32c_h;
-       assign ap_crc32c_w     =  mul_p.crc32c_w;
-     end
-   else
-     begin
-       assign ap_crc32_b      =  1'b0;
-       assign ap_crc32_h      =  1'b0;
-       assign ap_crc32_w      =  1'b0;
-       assign ap_crc32c_b     =  1'b0;
-       assign ap_crc32c_h     =  1'b0;
-       assign ap_crc32c_w     =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBF == 1)
-     begin
-       assign ap_bfp          =  mul_p.bfp;
-     end
-   else
-     begin
-       assign ap_bfp          =  1'b0;
-     end
-
-
-   // *** End   - BitManip ***
-
-
-
-   assign mul_x_enable           =  mul_p.valid;
-   assign bit_x_enable           =  mul_p.valid;
-
-   assign rs1_ext_in[32]         =  mul_p.rs1_sign & rs1_in[31];
-   assign rs2_ext_in[32]         =  mul_p.rs2_sign & rs2_in[31];
-
-   assign rs1_ext_in[31:0]       =  rs1_in[31:0];
-   assign rs2_ext_in[31:0]       =  rs2_in[31:0];
-
-
-
-   // --------------------------- Multiply       ----------------------------------
-
-
-   logic signed [32:0]  rs1_x;
-   logic signed [32:0]  rs2_x;
-
-   rvdffe #(34) i_a_x_ff         (.*, .clk(clk),  .din({mul_p.low,rs1_ext_in[32:0]}),        .dout({low_x,rs1_x[32:0]}),                 .en(mul_x_enable));
-   rvdffe #(33) i_b_x_ff         (.*, .clk(clk),  .din(           rs2_ext_in[32:0] ),        .dout(       rs2_x[32:0] ),                 .en(mul_x_enable));
-
-
-   assign prod_x[65:0]           =  rs1_x  *  rs2_x;
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  BEXT, BDEP   * * * * * * * * * * * * * * * * * *
-
-
-   // *** BEXT == "gather"  ***
-
-   logic        [31:0]    bext_d;
-   logic                  bext_test_bit_d;
-   integer                bext_i, bext_j;
-
-
-   always_comb
-     begin
-
-       bext_j                    =      0;
-       bext_test_bit_d           =   1'b0;
-       bext_d[31:0]              =  32'b0;
-
-       for (bext_i=0; bext_i<32; bext_i++)
-         begin
-             bext_test_bit_d     =  rs2_in[bext_i];
-             if (bext_test_bit_d)
-               begin
-                  bext_d[bext_j] =  rs1_in[bext_i];
-                  bext_j         =  bext_j + 1;
-               end  // IF  bext_test_bit
-         end        // FOR bext_i
-     end            // ALWAYS_COMB
-
-
-
-   // *** BDEP == "scatter" ***
-
-   logic        [31:0]    bdep_d;
-   logic                  bdep_test_bit_d;
-   integer                bdep_i, bdep_j;
-
-
-   always_comb
-     begin
-
-       bdep_j                    =      0;
-       bdep_test_bit_d           =   1'b0;
-       bdep_d[31:0]              =  32'b0;
-
-       for (bdep_i=0; bdep_i<32; bdep_i++)
-         begin
-             bdep_test_bit_d     =  rs2_in[bdep_i];
-             if (bdep_test_bit_d)
-               begin
-                  bdep_d[bdep_i] =  rs1_in[bdep_j];
-                  bdep_j         =  bdep_j + 1;
-               end  // IF  bdep_test_bit
-         end        // FOR bdep_i
-     end            // ALWAYS_COMB
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CLMUL, CLMULH, CLMULR  * * * * * * * * * * * * *
-
-   logic        [62:0]    clmul_raw_d;
-
-
-   assign clmul_raw_d[62:0]      = ( {63{rs2_in[00]}} & {31'b0,rs1_in[31:0]      } ) ^
-                                   ( {63{rs2_in[01]}} & {30'b0,rs1_in[31:0], 1'b0} ) ^
-                                   ( {63{rs2_in[02]}} & {29'b0,rs1_in[31:0], 2'b0} ) ^
-                                   ( {63{rs2_in[03]}} & {28'b0,rs1_in[31:0], 3'b0} ) ^
-                                   ( {63{rs2_in[04]}} & {27'b0,rs1_in[31:0], 4'b0} ) ^
-                                   ( {63{rs2_in[05]}} & {26'b0,rs1_in[31:0], 5'b0} ) ^
-                                   ( {63{rs2_in[06]}} & {25'b0,rs1_in[31:0], 6'b0} ) ^
-                                   ( {63{rs2_in[07]}} & {24'b0,rs1_in[31:0], 7'b0} ) ^
-                                   ( {63{rs2_in[08]}} & {23'b0,rs1_in[31:0], 8'b0} ) ^
-                                   ( {63{rs2_in[09]}} & {22'b0,rs1_in[31:0], 9'b0} ) ^
-                                   ( {63{rs2_in[10]}} & {21'b0,rs1_in[31:0],10'b0} ) ^
-                                   ( {63{rs2_in[11]}} & {20'b0,rs1_in[31:0],11'b0} ) ^
-                                   ( {63{rs2_in[12]}} & {19'b0,rs1_in[31:0],12'b0} ) ^
-                                   ( {63{rs2_in[13]}} & {18'b0,rs1_in[31:0],13'b0} ) ^
-                                   ( {63{rs2_in[14]}} & {17'b0,rs1_in[31:0],14'b0} ) ^
-                                   ( {63{rs2_in[15]}} & {16'b0,rs1_in[31:0],15'b0} ) ^
-                                   ( {63{rs2_in[16]}} & {15'b0,rs1_in[31:0],16'b0} ) ^
-                                   ( {63{rs2_in[17]}} & {14'b0,rs1_in[31:0],17'b0} ) ^
-                                   ( {63{rs2_in[18]}} & {13'b0,rs1_in[31:0],18'b0} ) ^
-                                   ( {63{rs2_in[19]}} & {12'b0,rs1_in[31:0],19'b0} ) ^
-                                   ( {63{rs2_in[20]}} & {11'b0,rs1_in[31:0],20'b0} ) ^
-                                   ( {63{rs2_in[21]}} & {10'b0,rs1_in[31:0],21'b0} ) ^
-                                   ( {63{rs2_in[22]}} & { 9'b0,rs1_in[31:0],22'b0} ) ^
-                                   ( {63{rs2_in[23]}} & { 8'b0,rs1_in[31:0],23'b0} ) ^
-                                   ( {63{rs2_in[24]}} & { 7'b0,rs1_in[31:0],24'b0} ) ^
-                                   ( {63{rs2_in[25]}} & { 6'b0,rs1_in[31:0],25'b0} ) ^
-                                   ( {63{rs2_in[26]}} & { 5'b0,rs1_in[31:0],26'b0} ) ^
-                                   ( {63{rs2_in[27]}} & { 4'b0,rs1_in[31:0],27'b0} ) ^
-                                   ( {63{rs2_in[28]}} & { 3'b0,rs1_in[31:0],28'b0} ) ^
-                                   ( {63{rs2_in[29]}} & { 2'b0,rs1_in[31:0],29'b0} ) ^
-                                   ( {63{rs2_in[30]}} & { 1'b0,rs1_in[31:0],30'b0} ) ^
-                                   ( {63{rs2_in[31]}} & {      rs1_in[31:0],31'b0} );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  GREV         * * * * * * * * * * * * * * * * * *
-
-   // uint32_t grev32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 31;
-   //
-   //     if (shamt &  1)  x = ( (x & 0x55555555) <<  1) | ( (x & 0xAAAAAAAA) >>  1);
-   //     if (shamt &  2)  x = ( (x & 0x33333333) <<  2) | ( (x & 0xCCCCCCCC) >>  2);
-   //     if (shamt &  4)  x = ( (x & 0x0F0F0F0F) <<  4) | ( (x & 0xF0F0F0F0) >>  4);
-   //     if (shamt &  8)  x = ( (x & 0x00FF00FF) <<  8) | ( (x & 0xFF00FF00) >>  8);
-   //     if (shamt & 16)  x = ( (x & 0x0000FFFF) << 16) | ( (x & 0xFFFF0000) >> 16);
-   //
-   //     return x;
-   //  }
-
-
-   logic        [31:0]    grev1_d;
-   logic        [31:0]    grev2_d;
-   logic        [31:0]    grev4_d;
-   logic        [31:0]    grev8_d;
-   logic        [31:0]    grev_d;
-
-
-   assign grev1_d[31:0]       = (rs2_in[0])  ?  {rs1_in[30],rs1_in[31],rs1_in[28],rs1_in[29],rs1_in[26],rs1_in[27],rs1_in[24],rs1_in[25],
-                                                 rs1_in[22],rs1_in[23],rs1_in[20],rs1_in[21],rs1_in[18],rs1_in[19],rs1_in[16],rs1_in[17],
-                                                 rs1_in[14],rs1_in[15],rs1_in[12],rs1_in[13],rs1_in[10],rs1_in[11],rs1_in[08],rs1_in[09],
-                                                 rs1_in[06],rs1_in[07],rs1_in[04],rs1_in[05],rs1_in[02],rs1_in[03],rs1_in[00],rs1_in[01]}  :  rs1_in[31:0];
-
-   assign grev2_d[31:0]       = (rs2_in[1])  ?  {grev1_d[29:28],grev1_d[31:30],grev1_d[25:24],grev1_d[27:26],
-                                                 grev1_d[21:20],grev1_d[23:22],grev1_d[17:16],grev1_d[19:18],
-                                                 grev1_d[13:12],grev1_d[15:14],grev1_d[09:08],grev1_d[11:10],
-                                                 grev1_d[05:04],grev1_d[07:06],grev1_d[01:00],grev1_d[03:02]}  :  grev1_d[31:0];
-
-   assign grev4_d[31:0]       = (rs2_in[2])  ?  {grev2_d[27:24],grev2_d[31:28],grev2_d[19:16],grev2_d[23:20],
-                                                 grev2_d[11:08],grev2_d[15:12],grev2_d[03:00],grev2_d[07:04]}  :  grev2_d[31:0];
-
-   assign grev8_d[31:0]       = (rs2_in[3])  ?  {grev4_d[23:16],grev4_d[31:24],grev4_d[07:00],grev4_d[15:08]}  :  grev4_d[31:0];
-
-   assign grev_d[31:0]        = (rs2_in[4])  ?  {grev8_d[15:00],grev8_d[31:16]}  :  grev8_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  GORC         * * * * * * * * * * * * * * * * * *
-
-   // uint32_t gorc32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 31;
-   //
-   //     if (shamt &  1)  x |= ( (x & 0x55555555) <<  1) | ( (x & 0xAAAAAAAA) >>  1);
-   //     if (shamt &  2)  x |= ( (x & 0x33333333) <<  2) | ( (x & 0xCCCCCCCC) >>  2);
-   //     if (shamt &  4)  x |= ( (x & 0x0F0F0F0F) <<  4) | ( (x & 0xF0F0F0F0) >>  4);
-   //     if (shamt &  8)  x |= ( (x & 0x00FF00FF) <<  8) | ( (x & 0xFF00FF00) >>  8);
-   //     if (shamt & 16)  x |= ( (x & 0x0000FFFF) << 16) | ( (x & 0xFFFF0000) >> 16);
-   //
-   //     return x;
-   //  }
-
-
-   logic        [31:0]    gorc1_d;
-   logic        [31:0]    gorc2_d;
-   logic        [31:0]    gorc4_d;
-   logic        [31:0]    gorc8_d;
-   logic        [31:0]    gorc_d;
-
-
-   assign gorc1_d[31:0]       = ( {32{rs2_in[0]}} & {rs1_in[30],rs1_in[31],rs1_in[28],rs1_in[29],rs1_in[26],rs1_in[27],rs1_in[24],rs1_in[25],
-                                                     rs1_in[22],rs1_in[23],rs1_in[20],rs1_in[21],rs1_in[18],rs1_in[19],rs1_in[16],rs1_in[17],
-                                                     rs1_in[14],rs1_in[15],rs1_in[12],rs1_in[13],rs1_in[10],rs1_in[11],rs1_in[08],rs1_in[09],
-                                                     rs1_in[06],rs1_in[07],rs1_in[04],rs1_in[05],rs1_in[02],rs1_in[03],rs1_in[00],rs1_in[01]} ) | rs1_in[31:0];
-
-   assign gorc2_d[31:0]       = ( {32{rs2_in[1]}} & {gorc1_d[29:28],gorc1_d[31:30],gorc1_d[25:24],gorc1_d[27:26],
-                                                     gorc1_d[21:20],gorc1_d[23:22],gorc1_d[17:16],gorc1_d[19:18],
-                                                     gorc1_d[13:12],gorc1_d[15:14],gorc1_d[09:08],gorc1_d[11:10],
-                                                     gorc1_d[05:04],gorc1_d[07:06],gorc1_d[01:00],gorc1_d[03:02]} ) | gorc1_d[31:0];
-
-   assign gorc4_d[31:0]       = ( {32{rs2_in[2]}} & {gorc2_d[27:24],gorc2_d[31:28],gorc2_d[19:16],gorc2_d[23:20],
-                                                     gorc2_d[11:08],gorc2_d[15:12],gorc2_d[03:00],gorc2_d[07:04]} ) | gorc2_d[31:0];
-
-   assign gorc8_d[31:0]       = ( {32{rs2_in[3]}} & {gorc4_d[23:16],gorc4_d[31:24],gorc4_d[07:00],gorc4_d[15:08]} ) | gorc4_d[31:0];
-
-   assign gorc_d[31:0]        = ( {32{rs2_in[4]}} & {gorc8_d[15:00],gorc8_d[31:16]} ) | gorc8_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SHFL, UNSHLF * * * * * * * * * * * * * * * * * *
-
-   // uint32_t shuffle32_stage (uint32_t src, uint32_t maskL, uint32_t maskR, int N)
-   // {
-   //     uint32_t x  = src & ~(maskL | maskR);
-   //     x          |= ((src << N) & maskL) | ((src >> N) & maskR);
-   //     return x;
-   // }
-   //
-   //
-   //
-   // uint32_t shfl32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 15
-   //
-   //     if (shamt & 8)  x = shuffle32_stage(x, 0x00ff0000, 0x0000ff00, 8);
-   //     if (shamt & 4)  x = shuffle32_stage(x, 0x0f000f00, 0x00f000f0, 4);
-   //     if (shamt & 2)  x = shuffle32_stage(x, 0x30303030, 0xc0c0c0c0, 2);
-   //     if (shamt & 1)  x = shuffle32_stage(x, 0x44444444, 0x22222222, 1);
-   //
-   //     return x;
-   // }
-
-
-   logic        [31:0]    shfl8_d;
-   logic        [31:0]    shfl4_d;
-   logic        [31:0]    shfl2_d;
-   logic        [31:0]    shfl_d;
-
-
-
-   assign shfl8_d[31:0]       = (rs2_in[3])  ?  {rs1_in[31:24],rs1_in[15:08],rs1_in[23:16],rs1_in[07:00]}      :  rs1_in[31:0];
-
-   assign shfl4_d[31:0]       = (rs2_in[2])  ?  {shfl8_d[31:28],shfl8_d[23:20],shfl8_d[27:24],shfl8_d[19:16],
-                                                 shfl8_d[15:12],shfl8_d[07:04],shfl8_d[11:08],shfl8_d[03:00]}  :  shfl8_d[31:0];
-
-   assign shfl2_d[31:0]       = (rs2_in[1])  ?  {shfl4_d[31:30],shfl4_d[27:26],shfl4_d[29:28],shfl4_d[25:24],
-                                                 shfl4_d[23:22],shfl4_d[19:18],shfl4_d[21:20],shfl4_d[17:16],
-                                                 shfl4_d[15:14],shfl4_d[11:10],shfl4_d[13:12],shfl4_d[09:08],
-                                                 shfl4_d[07:06],shfl4_d[03:02],shfl4_d[05:04],shfl4_d[01:00]}  :  shfl4_d[31:0];
-
-   assign shfl_d[31:0]        = (rs2_in[0])  ?  {shfl2_d[31],shfl2_d[29],shfl2_d[30],shfl2_d[28],shfl2_d[27],shfl2_d[25],shfl2_d[26],shfl2_d[24],
-                                                 shfl2_d[23],shfl2_d[21],shfl2_d[22],shfl2_d[20],shfl2_d[19],shfl2_d[17],shfl2_d[18],shfl2_d[16],
-                                                 shfl2_d[15],shfl2_d[13],shfl2_d[14],shfl2_d[12],shfl2_d[11],shfl2_d[09],shfl2_d[10],shfl2_d[08],
-                                                 shfl2_d[07],shfl2_d[05],shfl2_d[06],shfl2_d[04],shfl2_d[03],shfl2_d[01],shfl2_d[02],shfl2_d[00]}  :  shfl2_d[31:0];
-
-
-
-
-   // uint32_t unshfl32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 15
-   //
-   //     if (shamt & 1)  x = shuffle32_stage(x, 0x44444444, 0x22222222, 1);
-   //     if (shamt & 2)  x = shuffle32_stage(x, 0x30303030, 0xc0c0c0c0, 2);
-   //     if (shamt & 4)  x = shuffle32_stage(x, 0x0f000f00, 0x00f000f0, 4);
-   //     if (shamt & 8)  x = shuffle32_stage(x, 0x00ff0000, 0x0000ff00, 8);
-   //
-   //     return x;
-   // }
-
-
-   logic        [31:0]    unshfl1_d;
-   logic        [31:0]    unshfl2_d;
-   logic        [31:0]    unshfl4_d;
-   logic        [31:0]    unshfl_d;
-
-
-   assign unshfl1_d[31:0]     = (rs2_in[0])  ?  {rs1_in[31],rs1_in[29],rs1_in[30],rs1_in[28],rs1_in[27],rs1_in[25],rs1_in[26],rs1_in[24],
-                                                 rs1_in[23],rs1_in[21],rs1_in[22],rs1_in[20],rs1_in[19],rs1_in[17],rs1_in[18],rs1_in[16],
-                                                 rs1_in[15],rs1_in[13],rs1_in[14],rs1_in[12],rs1_in[11],rs1_in[09],rs1_in[10],rs1_in[08],
-                                                 rs1_in[07],rs1_in[05],rs1_in[06],rs1_in[04],rs1_in[03],rs1_in[01],rs1_in[02],rs1_in[00]}  :  rs1_in[31:0];
-
-   assign unshfl2_d[31:0]     = (rs2_in[1])  ?  {unshfl1_d[31:30],unshfl1_d[27:26],unshfl1_d[29:28],unshfl1_d[25:24],
-                                                 unshfl1_d[23:22],unshfl1_d[19:18],unshfl1_d[21:20],unshfl1_d[17:16],
-                                                 unshfl1_d[15:14],unshfl1_d[11:10],unshfl1_d[13:12],unshfl1_d[09:08],
-                                                 unshfl1_d[07:06],unshfl1_d[03:02],unshfl1_d[05:04],unshfl1_d[01:00]}  :  unshfl1_d[31:0];
-
-   assign unshfl4_d[31:0]     = (rs2_in[2])  ?  {unshfl2_d[31:28],unshfl2_d[23:20],unshfl2_d[27:24],unshfl2_d[19:16],
-                                                 unshfl2_d[15:12],unshfl2_d[07:04],unshfl2_d[11:08],unshfl2_d[03:00]}  :  unshfl2_d[31:0];
-
-   assign unshfl_d[31:0]      = (rs2_in[3])  ?  {unshfl4_d[31:24],unshfl4_d[15:08],unshfl4_d[23:16],unshfl4_d[07:00]}  :  unshfl4_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CRC32, CRC32c  * * * * * * * * * * * * * * * * *
-
-   // ***  computed from   https: //crccalc.com  ***
-   //
-   // "a" is 8'h61 = 8'b0110_0001    (8'h61 ^ 8'hff = 8'h9e)
-   //
-   // Input must first be XORed with 32'hffff_ffff
-   //
-   //
-   // CRC32
-   //
-   // Input    Output        Input      Output
-   // -----   --------      --------   --------
-   // "a"     e8b7be43      ffffff9e   174841bc
-   // "aa"    078a19d7      ffff9e9e   f875e628
-   // "aaaa"  ad98e545      9e9e9e9e   5267a1ba
-   //
-   //
-   //
-   // CRC32c
-   //
-   // Input    Output        Input      Output
-   // -----   --------      --------   --------
-   // "a"     c1d04330      ffffff9e   3e2fbccf
-   // "aa"    f1f2dac2      ffff9e9e   0e0d253d
-   // "aaaa"  6a52eeb0      9e9e9e9e   95ad114f
-
-
-   logic                  crc32_all;
-   logic        [31:0]    crc32_poly_rev;
-   logic        [31:0]    crc32c_poly_rev;
-   integer                crc32_bi, crc32_hi, crc32_wi, crc32c_bi, crc32c_hi, crc32c_wi;
-   logic        [31:0]    crc32_bd, crc32_hd, crc32_wd, crc32c_bd, crc32c_hd, crc32c_wd;
-
-
-   assign crc32_all              =  ap_crc32_b  | ap_crc32_h  | ap_crc32_w | ap_crc32c_b | ap_crc32c_h | ap_crc32c_w;
-
-   assign crc32_poly_rev[31:0]   =  32'hEDB88320;    // bit reverse of 32'h04C11DB7
-   assign crc32c_poly_rev[31:0]  =  32'h82F63B78;    // bit reverse of 32'h1EDC6F41
-
-
-   always_comb
-     begin
-       crc32_bd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_bi=0; crc32_bi<8; crc32_bi++)
-         begin
-            crc32_bd[31:0] = (crc32_bd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_bd[0]}});
-         end      // FOR    crc32_bi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32_hd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_hi=0; crc32_hi<16; crc32_hi++)
-         begin
-            crc32_hd[31:0] = (crc32_hd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_hd[0]}});
-         end      // FOR    crc32_hi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32_wd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_wi=0; crc32_wi<32; crc32_wi++)
-         begin
-            crc32_wd[31:0] = (crc32_wd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_wd[0]}});
-         end      // FOR    crc32_wi
-     end          // ALWAYS_COMB
-
-
-
-
-   always_comb
-     begin
-       crc32c_bd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_bi=0; crc32c_bi<8; crc32c_bi++)
-         begin
-            crc32c_bd[31:0] = (crc32c_bd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_bd[0]}});
-         end      // FOR    crc32c_bi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32c_hd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_hi=0; crc32c_hi<16; crc32c_hi++)
-         begin
-            crc32c_hd[31:0] = (crc32c_hd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_hd[0]}});
-         end      // FOR    crc32c_hi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32c_wd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_wi=0; crc32c_wi<32; crc32c_wi++)
-         begin
-            crc32c_wd[31:0] = (crc32c_wd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_wd[0]}});
-         end      // FOR    crc32c_wi
-     end          // ALWAYS_COMB
-
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  BFP          * * * * * * * * * * * * * * * * * *
-
-   logic        [4:0]     bfp_len;
-   logic        [4:0]     bfp_off;
-   logic        [31:0]    bfp_len_mask_;
-   logic        [15:0]    bfp_preshift_data;
-   logic        [63:0]    bfp_shift_data;
-   logic        [63:0]    bfp_shift_mask;
-   logic        [31:0]    bfp_result_d;
-
-
-   assign bfp_len[3:0]           =  rs2_in[27:24];
-   assign bfp_len[4]             = (bfp_len[3:0] == 4'b0);   // If LEN field is zero, then LEN=16
-   assign bfp_off[4:0]           =  rs2_in[20:16];
-
-   assign bfp_len_mask_[31:0]    =  32'hffff_ffff  <<  bfp_len[4:0];
-   assign bfp_preshift_data[15:0]=  rs2_in[15:0] & ~bfp_len_mask_[15:0];
-
-   assign bfp_shift_data[63:0]   = {16'b0,bfp_preshift_data[15:0], 16'b0,bfp_preshift_data[15:0]}  <<  bfp_off[4:0];
-   assign bfp_shift_mask[63:0]   = {bfp_len_mask_[31:0],           bfp_len_mask_[31:0]}            <<  bfp_off[4:0];
-
-   assign bfp_result_d[31:0]     = bfp_shift_data[63:32] | (rs1_in[31:0] & bfp_shift_mask[63:32]);
-
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  Common logic * * * * * * * * * * * * * * * * * *
-
-
-   assign bitmanip_sel_d         =  ap_bext | ap_bdep | ap_clmul | ap_clmulh | ap_clmulr | ap_grev | ap_gorc | ap_shfl | ap_unshfl | crc32_all | ap_bfp;
-
-   assign bitmanip_d[31:0]       = ( {32{ap_bext}}     &       bext_d[31:0]        ) |
-                                   ( {32{ap_bdep}}     &       bdep_d[31:0]        ) |
-                                   ( {32{ap_clmul}}    &       clmul_raw_d[31:0]   ) |
-                                   ( {32{ap_clmulh}}   & {1'b0,clmul_raw_d[62:32]} ) |
-                                   ( {32{ap_clmulr}}   &       clmul_raw_d[62:31]  ) |
-                                   ( {32{ap_grev}}     &       grev_d[31:0]        ) |
-                                   ( {32{ap_gorc}}     &       gorc_d[31:0]        ) |
-                                   ( {32{ap_shfl}}     &       shfl_d[31:0]        ) |
-                                   ( {32{ap_unshfl}}   &       unshfl_d[31:0]      ) |
-                                   ( {32{ap_crc32_b}}  &       crc32_bd[31:0]      ) |
-                                   ( {32{ap_crc32_h}}  &       crc32_hd[31:0]      ) |
-                                   ( {32{ap_crc32_w}}  &       crc32_wd[31:0]      ) |
-                                   ( {32{ap_crc32c_b}} &       crc32c_bd[31:0]     ) |
-                                   ( {32{ap_crc32c_h}} &       crc32c_hd[31:0]     ) |
-                                   ( {32{ap_crc32c_w}} &       crc32c_wd[31:0]     ) |
-                                   ( {32{ap_bfp}}      &       bfp_result_d[31:0]  );
-
-
-
-   rvdffe #(33) i_bitmanip_ff    (.*, .clk(clk),  .din({bitmanip_sel_d,bitmanip_d[31:0]}),   .dout({bitmanip_sel_x,bitmanip_x[31:0]}),   .en(bit_x_enable));
-
-
-
-
-   assign result_x[31:0]         =  ( {32{~bitmanip_sel_x & ~low_x}} & prod_x[63:32]    ) |
-                                    ( {32{~bitmanip_sel_x &  low_x}} & prod_x[31:0]     ) |
-                                                                       bitmanip_x[31:0];
-
-
-
-endmodule  // eb1_exu_mul_ctl
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-//********************************************************************************
-// Function: Top level file for Icache, Fetch, Branch prediction & Aligner
-// BFF -> F1 -> F2 -> A
-//********************************************************************************
-
-module eb1_ifu
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic free_l2clk,                   // Clock always.                  Through one clock header.  For flops with    second header built in.
-   input logic active_clk,                   // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic clk,                          // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic rst_l,                        // reset, active low
-
-   input logic dec_i0_decode_d,              // Valid instruction at D and not blocked
-
-   input logic exu_flush_final, // flush, includes upper and lower
-   input logic dec_tlu_i0_commit_cmt , // committed i0
-   input logic dec_tlu_flush_err_wb , // flush due to parity error.
-   input logic dec_tlu_flush_noredir_wb, // don't fetch, validated with exu_flush_final
-   input logic [31:1] exu_flush_path_final, // flush fetch address
-
-   input logic [31:0]  dec_tlu_mrac_ff ,// Side_effect , cacheable for each region
-   input logic         dec_tlu_fence_i_wb, // fence.i, invalidate icache, validated with exu_flush_final
-   input logic         dec_tlu_flush_leak_one_wb, // ignore bp for leak one fetches
-
-   input logic                       dec_tlu_bpred_disable,     // disable all branch prediction
-   input logic                       dec_tlu_core_ecc_disable,  // disable ecc checking and flagging
-   input logic                       dec_tlu_force_halt,        // force halt
-
-  //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   output logic                            ifu_axi_bready,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-
-   input  logic                      ifu_bus_clk_en,
-
-   input  logic                      dma_iccm_req,
-   input  logic [31:0]               dma_mem_addr,
-   input  logic [2:0]                dma_mem_sz,
-   input  logic                      dma_mem_write,
-   input  logic [63:0]               dma_mem_wdata,
-   input  logic [2:0]                dma_mem_tag,       //  DMA Buffer entry number
-
-
-   input  logic                      dma_iccm_stall_any,
-   output logic                      iccm_dma_ecc_error,
-   output logic                      iccm_dma_rvalid,
-   output logic [63:0]               iccm_dma_rdata,
-   output logic [2:0]                iccm_dma_rtag,     //   Tag of the DMA req
-   output logic                      iccm_ready,
-
-   output logic       ifu_pmu_instr_aligned,
-   output logic       ifu_pmu_fetch_stall,
-   output logic       ifu_ic_error_start,     // has all of the I$ ecc/parity for data/tag
-
-//   I$ & ITAG Ports
-   output logic [31:1]               ic_rw_addr,         // Read/Write addresss to the Icache.
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_wr_en,           // Icache write enable, when filling the Icache.
-   output logic                      ic_rd_en,           // Icache read  enable.
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0][70:0]               ic_wr_data,         // Data to fill to the Icache. With ECC
-   input  logic [63:0]              ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]              ic_debug_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]                     ictag_debug_rd_data,// Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,   // Debug wr cache.
-
-   output logic [70:0]               ifu_ic_debug_rd_data,
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    //
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-   output logic [63:0]               ic_premux_data,     // Premux data to be muxed with each way of the Icache.
-   output logic                      ic_sel_premux_data, // Select the premux data.
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_tag_valid,       // Valid bits when accessing the Icache. One valid bit per way. F2 stage
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_rd_hit,          // Compare hits from Icache tags. Per way.  F2 stage
-   input  logic                      ic_tag_perr,        // Icache Tag parity error
-
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]               iccm_rw_addr,       // ICCM read/write address.
-   output logic                      iccm_wren,          // ICCM write enable (through the DMA)
-   output logic                      iccm_rden,          // ICCM read enable.
-   output logic [77:0]               iccm_wr_data,       // ICCM write data.
-   output logic [2:0]                iccm_wr_size,       // ICCM write location within DW.
-
-   input  logic [63:0]               iccm_rd_data,       // Data read from ICCM.
-   input  logic [77:0]               iccm_rd_data_ecc,   // Data + ECC read from ICCM.
-
-   output logic                      ifu_iccm_rd_ecc_single_err, // This fetch has a single ICCM ecc  error.
-
-// Perf counter sigs
-   output logic       ifu_pmu_ic_miss, // ic miss
-   output logic       ifu_pmu_ic_hit, // ic hit
-   output logic       ifu_pmu_bus_error, // iside bus error
-   output logic       ifu_pmu_bus_busy,  // iside bus busy
-   output logic       ifu_pmu_bus_trxn, // iside bus transactions
-
-
-   output logic       ifu_i0_icaf,         // Instruction 0 access fault. From Aligner to Decode
-   output logic [1:0] ifu_i0_icaf_type, // Instruction 0 access fault type
-
-   output logic  ifu_i0_valid,        // Instruction 0 valid. From Aligner to Decode
-   output logic  ifu_i0_icaf_second,  // Instruction 0 has access fault on second 2B of 4B inst
-   output logic  ifu_i0_dbecc,        // Instruction 0 has double bit ecc error
-   output logic  iccm_dma_sb_error,   // Single Bit ECC error from a DMA access
-   output logic[31:0] ifu_i0_instr,   // Instruction 0 . From Aligner to Decode
-   output logic[31:1] ifu_i0_pc,      // Instruction 0 pc. From Aligner to Decode
-   output logic ifu_i0_pc4,           // Instruction 0 is 4 byte. From Aligner to Decode
-
-   output logic ifu_miss_state_idle,   // There is no outstanding miss. Cache miss state is idle.
-
-   output eb1_br_pkt_t i0_brp,           // Instruction 0 branch packet. From Aligner to Decode
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index, // BP index
-   output logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr, // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag, // BP tag
-   output logic [$clog2(pt.BTB_SIZE)-1:0]         ifu_i0_fa_index,          // Fully associt btb index
-
-   input eb1_predict_pkt_t  exu_mp_pkt, // mispredict packet
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_mp_eghr, // execute ghr
-   input logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   input logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-   input eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // slot0 update/error pkt
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_i0_br_fghr_r, // fghr to bp
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r, // bp index
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   input dec_tlu_flush_lower_wb,
-
-   output logic [15:0] ifu_i0_cinst,
-
-
-/// Icache debug
-   input  eb1_cache_debug_pkt_t        dec_tlu_ic_diag_pkt ,
-   output logic                    ifu_ic_debug_rd_data_valid,
-   output logic                                iccm_buf_correct_ecc,
-   output logic                                iccm_correction_state,
-
-   input logic scan_mode
-   );
-
-   localparam TAGWIDTH = 2 ;
-   localparam IDWIDTH  = 2 ;
-
-   logic                   ifu_fb_consume1, ifu_fb_consume2;
-   logic [31:1]            ifc_fetch_addr_f;
-   logic [31:1]            ifc_fetch_addr_bf;
-
-   logic [1:0]   ifu_fetch_val;  // valids on a 2B boundary, left justified [7] implies valid fetch
-   logic [31:1]  ifu_fetch_pc;   // starting pc of fetch
-
-   logic iccm_rd_ecc_single_err, ic_error_start;
-   assign ifu_iccm_rd_ecc_single_err = iccm_rd_ecc_single_err;
-   assign ifu_ic_error_start = ic_error_start;
-
-
-   logic        ic_write_stall;
-   logic        ic_dma_active;
-   logic        ifc_dma_access_ok;
-   logic [1:0]  ic_access_fault_f;
-   logic [1:0]  ic_access_fault_type_f;
-   logic        ifu_ic_mb_empty;
-
-   logic ic_hit_f;
-
-   logic [1:0] ifu_bp_way_f; // way indication; right justified
-   logic       ifu_bp_hit_taken_f; // kill next fetch; taken target found
-   logic [31:1] ifu_bp_btb_target_f; //  predicted target PC
-   logic        ifu_bp_inst_mask_f; // tell ic which valids to kill because of a taken branch; right justified
-   logic [1:0]  ifu_bp_hist1_f; // history counters for all 4 potential branches; right justified
-   logic [1:0]  ifu_bp_hist0_f; // history counters for all 4 potential branches; right justified
-   logic [11:0] ifu_bp_poffset_f; // predicted target
-   logic [1:0]  ifu_bp_ret_f; // predicted ret ; right justified
-   logic [1:0]  ifu_bp_pc4_f; // pc4 indication; right justified
-   logic [1:0]  ifu_bp_valid_f; // branch valid, right justified
-   logic [pt.BHT_GHR_SIZE-1:0] ifu_bp_fghr_f;
-   logic [1:0] [$clog2(pt.BTB_SIZE)-1:0] ifu_bp_fa_index_f;
-
-
-   // fetch control
-   eb1_ifu_ifc_ctl #(.pt(pt)) ifc (.*
-                    );
-
-   // branch predictor
-   if (pt.BTB_ENABLE==1) begin  : bpred
-      eb1_ifu_bp_ctl #(.pt(pt)) bp (.*);
-   end
-   else begin : bpred
-      assign ifu_bp_hit_taken_f = '0;
-      // verif wires
-      logic btb_wr_en_way0, btb_wr_en_way1,dec_tlu_error_wb;
-      logic [16+pt.BTB_BTAG_SIZE:0] btb_wr_data;
-      assign btb_wr_en_way0 = '0;
-      assign btb_wr_en_way1 = '0;
-      assign btb_wr_data = '0;
-      assign dec_tlu_error_wb ='0;
-      assign ifu_bp_inst_mask_f = 1'b1;
-   end
-
-
-   logic [1:0]   ic_fetch_val_f;
-   logic [31:0] ic_data_f;
-   logic [31:0] ifu_fetch_data_f;
-   logic ifc_fetch_req_f;
-   logic ifc_fetch_req_f_raw;
-   logic [1:0] iccm_rd_ecc_double_err;  // This fetch has an iccm double error.
-
-   logic ifu_async_error_start;
-
-
-   assign ifu_fetch_data_f[31:0] = ic_data_f[31:0];
-   assign ifu_fetch_val[1:0] = ic_fetch_val_f[1:0];
-   assign ifu_fetch_pc[31:1] = ifc_fetch_addr_f[31:1];
-
- logic                       ifc_fetch_uncacheable_bf;      // The fetch request is uncacheable space. BF stage
- logic                       ifc_fetch_req_bf;              // Fetch request. Comes with the address.  BF stage
- logic                       ifc_fetch_req_bf_raw;          // Fetch request without some qualifications. Used for clock-gating. BF stage
- logic                       ifc_iccm_access_bf;            // This request is to the ICCM. Do not generate misses to the bus.
- logic                       ifc_region_acc_fault_bf;       // Access fault. in ICCM region but offset is outside defined ICCM.
-
-   // aligner
-
-   eb1_ifu_aln_ctl #(.pt(pt)) aln (
-                                    .*
-                                    );
-
-
-   // icache
-   eb1_ifu_mem_ctl #(.pt(pt)) mem_ctl
-     (.*,
-      .ic_data_f(ic_data_f[31:0])
-      );
-
-
-
-   // Performance debug info
-   //
-   //
-`ifdef DUMP_BTB_ON
-   logic              exu_mp_valid; // conditional branch mispredict
-   logic exu_mp_way; // conditional branch mispredict
-   logic exu_mp_ataken; // direction is actual taken
-   logic exu_mp_boffset; // branch offsett
-   logic exu_mp_pc4; // branch is a 4B inst
-   logic exu_mp_call; // branch is a call inst
-   logic exu_mp_ret; // branch is a ret inst
-   logic exu_mp_ja; // branch is a jump always
-   logic [1:0] exu_mp_hist; // new history
-   logic [11:0] exu_mp_tgt; // target offset
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_addr; // BTB/BHT address
-
-   assign exu_mp_valid = exu_mp_pkt.misp; // conditional branch mispredict
-   assign exu_mp_ataken = exu_mp_pkt.ataken;  // direction is actual taken
-   assign exu_mp_boffset = exu_mp_pkt.boffset;  // branch offset
-   assign exu_mp_pc4 = exu_mp_pkt.pc4;  // branch is a 4B inst
-   assign exu_mp_call = exu_mp_pkt.pcall;  // branch is a call inst
-   assign exu_mp_ret = exu_mp_pkt.pret;  // branch is a ret inst
-   assign exu_mp_ja = exu_mp_pkt.pja;  // branch is a jump always
-   assign exu_mp_way = exu_mp_pkt.way;  // branch is a jump always
-   assign exu_mp_hist[1:0] = exu_mp_pkt.hist[1:0];  // new history
-   assign exu_mp_tgt[11:0]  = exu_mp_pkt.toffset[11:0] ;  // target offset
-   assign exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  = exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ;  // BTB/BHT address
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] btb_rd_addr_f;
- `define DEC `CPU_TOP.dec
- `define EXU `CPU_TOP.exu
-   eb1_btb_addr_hash f2hash(.pc(ifc_fetch_addr_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-   logic [31:0] mppc_ns, mppc;
-   logic        exu_flush_final_d1;
-   assign mppc_ns[31:1] = `EXU.i0_flush_upper_x ? `EXU.exu_i0_pc_x : `EXU.dec_i0_pc_d;
-   assign mppc_ns[0] = 1'b0;
-   rvdff #(33)  junk_ff (.*, .clk(active_clk), .din({mppc_ns[31:0], exu_flush_final}), .dout({mppc[31:0], exu_flush_final_d1}));
-   logic  tmp_bnk;
-   assign tmp_bnk = bpred.bp.btb_sel_f[1];
-
-   always @(negedge clk) begin
-      if(`DEC.tlu.mcyclel[31:0] == 32'h0000_0010) begin
-         $display("BTB_CONFIG: %d",pt.BTB_SIZE);
-         `ifndef BP_NOGSHARE
-         $display("BHT_CONFIG: %d gshare: 1",pt.BHT_SIZE);
-         `else
-         $display("BHT_CONFIG: %d gshare: 0",pt.BHT_SIZE);
-         `endif
-         $display("RS_CONFIG: %d", pt.RET_STACK_SIZE);
-      end
-       if(exu_flush_final_d1 & ~(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error) & (exu_mp_pkt.misp | exu_mp_pkt.ataken))
-         $display("%7d BTB_MP  : index: %0h bank: %0h call: %b ret: %b ataken: %b hist: %h valid: %b tag: %h targ: %h eghr: %b pred: %b ghr_index: %h brpc: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha, exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO], 1'b0, exu_mp_call, exu_mp_ret, exu_mp_ataken, exu_mp_hist[1:0], exu_mp_valid, exu_mp_btag[pt.BTB_BTAG_SIZE-1:0], {exu_flush_path_final[31:1], 1'b0}, exu_mp_eghr[pt.BHT_GHR_SIZE-1:0], exu_mp_valid, bpred.bp.bht_wr_addr0, mppc[31:0], exu_mp_pkt.way);
-
-     for(int i = 0; i < 8; i++) begin
-      if(ifu_bp_valid_f[i] & ifc_fetch_req_f)
-        $display("%7d BTB_HIT : index: %0h bank: %0h call: %b ret: %b taken: %b strength: %b tag: %h targ: %0h ghr: %4b ghr_index: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],bpred.bp.btb_sel_f[1], bpred.bp.btb_rd_call_f, bpred.bp.btb_rd_ret_f, ifu_bp_hist1_f[tmp_bnk], ifu_bp_hist0_f[tmp_bnk], bpred.bp.fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0], {ifu_bp_btb_target_f[31:1], 1'b0}, bpred.bp.fghr[pt.BHT_GHR_SIZE-1:0], bpred.bp.bht_rd_addr_f, ifu_bp_way_f[tmp_bnk]);
-     end
-      if(dec_tlu_br0_r_pkt.valid & ~(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error))
-        $display("%7d BTB_UPD0: ghr_index: %0h bank: %0h hist: %h  way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,bpred.bp.br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO],{dec_tlu_br0_r_pkt.middle}, dec_tlu_br0_r_pkt.hist, dec_tlu_br0_r_pkt.way);
-
-      if(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error)
-        $display("%7d BTB_ERR0: index: %0h bank: %0h start: %b rfpc: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],1'b0, dec_tlu_br0_r_pkt.br_start_error, {exu_flush_path_final[31:1], 1'b0}, dec_tlu_br0_r_pkt.way);
-   end // always @ (negedge clk)
-      function [1:0] encode4_2;
-      input [3:0] in;
-
-      encode4_2[1] = in[3] | in[2];
-      encode4_2[0] = in[3] | in[1];
-
-   endfunction
-`endif
-endmodule // eb1_ifu
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Instruction aligner
-//********************************************************************************
-module eb1_ifu_aln_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-
-   input logic                                    scan_mode,                // Flop scan mode control
-   input logic                                    rst_l,                    // reset, active low
-   input logic                                    clk,                      // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                                    active_clk,               // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-
-   input logic                                    ifu_async_error_start,    // ecc/parity related errors with current fetch - not sent down the pipe
-
-   input logic [1:0]                              iccm_rd_ecc_double_err,   // This fetch has a double ICCM ecc  error.
-
-   input logic [1:0]                              ic_access_fault_f,        // Instruction access fault for the current fetch.
-   input logic [1:0]                              ic_access_fault_type_f,   // Instruction access fault types
-
-   input logic                                    exu_flush_final,          // Flush from the pipeline.
-
-   input logic                                    dec_i0_decode_d,          // Valid instruction at D-stage and not blocked
-
-   input logic [31:0]                             ifu_fetch_data_f,         // fetch data in memory format - not right justified
-
-   input logic [1:0]                              ifu_fetch_val,            // valids on a 2B boundary, right justified
-   input logic [31:1]                             ifu_fetch_pc,             // starting pc of fetch
-
-
-
-   output logic                                   ifu_i0_valid,             // Instruction 0 is valid
-   output logic                                   ifu_i0_icaf,              // Instruction 0 has access fault
-   output logic [1:0]                             ifu_i0_icaf_type,         // Instruction 0 access fault type
-   output logic                                   ifu_i0_icaf_second,       // Instruction 0 has access fault on second 2B of 4B inst
-
-   output logic                                   ifu_i0_dbecc,             // Instruction 0 has double bit ecc error
-   output logic [31:0]                            ifu_i0_instr,             // Instruction 0
-   output logic [31:1]                            ifu_i0_pc,                // Instruction 0 PC
-   output logic                                   ifu_i0_pc4,
-
-   output logic                                   ifu_fb_consume1,          // Consumed one buffer. To fetch control fetch for buffer mass balance
-   output logic                                   ifu_fb_consume2,          // Consumed two buffers.To fetch control fetch for buffer mass balance
-
-
-   input logic [pt.BHT_GHR_SIZE-1:0]              ifu_bp_fghr_f,            // fetch GHR
-   input logic [31:1]                             ifu_bp_btb_target_f,      // predicted RET target
-   input logic [11:0]                             ifu_bp_poffset_f,         // predicted target offset
-   input logic [1:0] [$clog2(pt.BTB_SIZE)-1:0]    ifu_bp_fa_index_f,        // predicted branch index (fully associative option)
-
-   input logic [1:0]                              ifu_bp_hist0_f,           // history counters for all 4 potential branches, bit 1, right justified
-   input logic [1:0]                              ifu_bp_hist1_f,           // history counters for all 4 potential branches, bit 1, right justified
-   input logic [1:0]                              ifu_bp_pc4_f,             // pc4 indication, right justified
-   input logic [1:0]                              ifu_bp_way_f,             // way indication, right justified
-   input logic [1:0]                              ifu_bp_valid_f,           // branch valid, right justified
-   input logic [1:0]                              ifu_bp_ret_f,             // predicted ret indication, right justified
-
-
-   output eb1_br_pkt_t                           i0_brp,                   // Branch packet for I0.
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]   ifu_i0_bp_index,          // BP index
-   output logic [pt.BHT_GHR_SIZE-1:0]             ifu_i0_bp_fghr,           // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0]            ifu_i0_bp_btag,           // BP tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0]         ifu_i0_fa_index,          // Fully associt btb index
-
-   output logic                                   ifu_pmu_instr_aligned,    // number of inst aligned this cycle
-
-   output logic [15:0]                            ifu_i0_cinst              // 16b compress inst for i0
-   );
-
-
-
-   logic                                          ifvalid;
-   logic                                          shift_f1_f0, shift_f2_f0, shift_f2_f1;
-   logic                                          fetch_to_f0, fetch_to_f1, fetch_to_f2;
-
-   logic [1:0]                                    f2val_in, f2val;
-   logic [1:0]                                    f1val_in, f1val;
-   logic [1:0]                                    f0val_in, f0val;
-   logic [1:0]                                    sf1val, sf0val;
-
-   logic [31:0]                                   aligndata;
-   logic                                          first4B, first2B;
-
-   logic [31:0]                                   uncompress0;
-   logic                                          i0_shift;
-   logic                                          shift_2B, shift_4B;
-   logic                                          f1_shift_2B;
-   logic                                          f2_valid, sf1_valid, sf0_valid;
-
-   logic [31:0]                                   ifirst;
-   logic [1:0]                                    alignval;
-   logic [31:1]                                   firstpc, secondpc;
-
-   logic [11:0]                                   f1poffset;
-   logic [11:0]                                   f0poffset;
-   logic [pt.BHT_GHR_SIZE-1:0]                    f1fghr;
-   logic [pt.BHT_GHR_SIZE-1:0]                    f0fghr;
-   logic [1:0]                                    f1hist1;
-   logic [1:0]                                    f0hist1;
-   logic [1:0]                                    f1hist0;
-   logic [1:0]                                    f0hist0;
-
-   logic [1:0][$clog2(pt.BTB_SIZE)-1:0]           f0index, f1index, alignindex;
-
-   logic [1:0]                                    f1ictype;
-   logic [1:0]                                    f0ictype;
-
-   logic [1:0]                                    f1pc4;
-   logic [1:0]                                    f0pc4;
-
-   logic [1:0]                                    f1ret;
-   logic [1:0]                                    f0ret;
-   logic [1:0]                                    f1way;
-   logic [1:0]                                    f0way;
-
-   logic [1:0]                                    f1brend;
-   logic [1:0]                                    f0brend;
-
-   logic [1:0]                                    alignbrend;
-   logic [1:0]                                    alignpc4;
-
-   logic [1:0]                                    alignret;
-   logic [1:0]                                    alignway;
-   logic [1:0]                                    alignhist1;
-   logic [1:0]                                    alignhist0;
-   logic [1:1]                                    alignfromf1;
-   logic                                          i0_ends_f1;
-   logic                                          i0_br_start_error;
-
-   logic [31:1]                                   f1prett;
-   logic [31:1]                                   f0prett;
-   logic [1:0]                                    f1dbecc;
-   logic [1:0]                                    f0dbecc;
-   logic [1:0]                                    f1icaf;
-   logic [1:0]                                    f0icaf;
-
-   logic [1:0]                                    aligndbecc;
-   logic [1:0]                                    alignicaf;
-   logic                                          i0_brp_pc4;
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]          firstpc_hash, secondpc_hash;
-
-   logic                                          first_legal;
-
-   logic [1:0]                                    wrptr, wrptr_in;
-   logic [1:0]                                    rdptr, rdptr_in;
-   logic [2:0]                                    qwen;
-   logic [31:0]                                   q2,q1,q0;
-   logic                                          q2off_in, q2off;
-   logic                                          q1off_in, q1off;
-   logic                                          q0off_in, q0off;
-   logic                                          f0_shift_2B;
-
-   logic [31:0]                                   q0eff;
-   logic [31:0]                                   q0final;
-   logic                                          q0ptr;
-   logic [1:0]                                    q0sel;
-
-   logic [31:0]                                   q1eff;
-   logic [15:0]                                   q1final;
-   logic                                          q1ptr;
-   logic [1:0]                                    q1sel;
-
-   logic [2:0]                                    qren;
-
-   logic                                          consume_fb1, consume_fb0;
-   logic [1:0]                                    icaf_eff;
-
-   localparam                                     BRDATA_SIZE  = pt.BTB_ENABLE ? 16+($clog2(pt.BTB_SIZE)*2*pt.BTB_FULLYA) : 2;
-   localparam                                     BRDATA_WIDTH = pt.BTB_ENABLE ? 8+($clog2(pt.BTB_SIZE)*pt.BTB_FULLYA) : 1;
-   logic [BRDATA_SIZE-1:0]                        brdata_in, brdata2, brdata1, brdata0;
-   logic [BRDATA_SIZE-1:0]                        brdata1eff, brdata0eff;
-   logic [BRDATA_SIZE-1:0]                        brdata1final, brdata0final;
-
-   localparam                                     MHI   = 1+(pt.BTB_ENABLE * (43+pt.BHT_GHR_SIZE));
-   localparam                                     MSIZE = 2+(pt.BTB_ENABLE * (43+pt.BHT_GHR_SIZE));
-
-   logic [MHI:0]                                  misc_data_in, misc2, misc1, misc0;
-   logic [MHI:0]                                  misc1eff, misc0eff;
-
-   logic [pt.BTB_BTAG_SIZE-1:0]                  firstbrtag_hash, secondbrtag_hash;
-
-   logic                                         error_stall_in, error_stall;
-
-   assign error_stall_in = (error_stall | ifu_async_error_start) & ~exu_flush_final;
-
-   rvdff #(.WIDTH(7))  bundle1ff (.*,
-                                  .clk(active_clk),
-                                  .din ({wrptr_in[1:0],rdptr_in[1:0],q2off_in,q1off_in,q0off_in}),
-                                  .dout({wrptr[1:0],   rdptr[1:0],   q2off,   q1off,   q0off})
-                                  );
-
-   rvdffie #(.WIDTH(7),.OVERRIDE(1))  bundle2ff (.*,
-                                                 .din ({error_stall_in,f2val_in[1:0],f1val_in[1:0],f0val_in[1:0]}),
-                                                 .dout({error_stall,   f2val[1:0],   f1val[1:0],   f0val[1:0]   })
-                                                 );
-
-if(pt.BTB_ENABLE==1) begin
-   rvdffe #(BRDATA_SIZE)  brdata2ff   (.*, .clk(clk), .en(qwen[2]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata2[BRDATA_SIZE-1:0]));
-   rvdffe #(BRDATA_SIZE)  brdata1ff   (.*, .clk(clk), .en(qwen[1]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata1[BRDATA_SIZE-1:0]));
-   rvdffe #(BRDATA_SIZE)  brdata0ff   (.*, .clk(clk), .en(qwen[0]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata0[BRDATA_SIZE-1:0]));
-   rvdffe #(MSIZE)        misc2ff     (.*, .clk(clk), .en(qwen[2]),        .din(misc_data_in[MHI:0]),        .dout(misc2[MHI:0]));
-   rvdffe #(MSIZE)        misc1ff     (.*, .clk(clk), .en(qwen[1]),        .din(misc_data_in[MHI:0]),        .dout(misc1[MHI:0]));
-   rvdffe #(MSIZE)        misc0ff     (.*, .clk(clk), .en(qwen[0]),        .din(misc_data_in[MHI:0]),        .dout(misc0[MHI:0]));
-end
-else begin
-
-   rvdffie #((MSIZE*3)+(BRDATA_SIZE*3))    miscff      (.*,
-                                                        .din({qwen[2] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc2[MHI:0], brdata2[BRDATA_SIZE-1:0]},
-                                                              qwen[1] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc1[MHI:0], brdata1[BRDATA_SIZE-1:0]},
-                                                              qwen[0] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc0[MHI:0], brdata0[BRDATA_SIZE-1:0]}}),
-                                                        .dout({misc2[MHI:0],misc1[MHI:0],misc0[MHI:0],
-                                                               brdata2[BRDATA_SIZE-1:0], brdata1[BRDATA_SIZE-1:0], brdata0[BRDATA_SIZE-1:0]})
-                                                        );
-end
-
-  logic [31:1] q2pc, q1pc, q0pc;
-
-   rvdffe #(31)           q2pcff        (.*, .clk(clk), .en(qwen[2]),        .din(ifu_fetch_pc[31:1]),     .dout(q2pc[31:1]));
-   rvdffe #(31)           q1pcff        (.*, .clk(clk), .en(qwen[1]),        .din(ifu_fetch_pc[31:1]),     .dout(q1pc[31:1]));
-   rvdffe #(31)           q0pcff        (.*, .clk(clk), .en(qwen[0]),        .din(ifu_fetch_pc[31:1]),     .dout(q0pc[31:1]));
-
-   rvdffe #(32)           q2ff        (.*, .clk(clk), .en(qwen[2]),        .din(ifu_fetch_data_f[31:0]),     .dout(q2[31:0]));
-   rvdffe #(32)           q1ff        (.*, .clk(clk), .en(qwen[1]),        .din(ifu_fetch_data_f[31:0]),     .dout(q1[31:0]));
-   rvdffe #(32)           q0ff        (.*, .clk(clk), .en(qwen[0]),        .din(ifu_fetch_data_f[31:0]),     .dout(q0[31:0]));
-
-
-   // new queue control logic
-
-   assign qren[2:0]          = {  rdptr[1:0] == 2'b10,
-                                  rdptr[1:0] == 2'b01,
-                                  rdptr[1:0] == 2'b00 };
-
-   assign qwen[2:0]          = { (wrptr[1:0] == 2'b10) & ifvalid,
-                                 (wrptr[1:0] == 2'b01) & ifvalid,
-                                 (wrptr[1:0] == 2'b00) & ifvalid };
-
-
-   assign rdptr_in[1:0]      = ({2{ qren[0]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{ qren[1]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qren[2]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{ qren[0]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qren[1]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{ qren[2]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{~ifu_fb_consume1 & ~ifu_fb_consume2 & ~exu_flush_final}} & rdptr[1:0]);
-
-   assign wrptr_in[1:0]      = ({2{ qwen[0] & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{ qwen[1] & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qwen[2] & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{~ifvalid & ~exu_flush_final}} & wrptr[1:0]);
-
-
-
-   assign q2off_in          = ( ~qwen[2] & (rdptr[1:0]==2'd2)  &  (q2off | f0_shift_2B) ) |
-                              ( ~qwen[2] & (rdptr[1:0]==2'd1)  &  (q2off | f1_shift_2B) ) |
-                              ( ~qwen[2] & (rdptr[1:0]==2'd0)  &   q2off                );
-
-   assign q1off_in          = ( ~qwen[1] & (rdptr[1:0]==2'd1)  &  (q1off | f0_shift_2B) ) |
-                              ( ~qwen[1] & (rdptr[1:0]==2'd0)  &  (q1off | f1_shift_2B) ) |
-                              ( ~qwen[1] & (rdptr[1:0]==2'd2)  &   q1off                );
-
-   assign q0off_in          = ( ~qwen[0] & (rdptr[1:0]==2'd0)  &  (q0off | f0_shift_2B) ) |
-                              ( ~qwen[0] & (rdptr[1:0]==2'd2)  &  (q0off | f1_shift_2B) ) |
-                              ( ~qwen[0] & (rdptr[1:0]==2'd1)  &   q0off                );
-
-
-
-   assign q0ptr              = ( (rdptr[1:0]==2'b00) & q0off ) |
-                               ( (rdptr[1:0]==2'b01) & q1off ) |
-                               ( (rdptr[1:0]==2'b10) & q2off );
-
-   assign q1ptr              = ( (rdptr[1:0]==2'b00) & q1off ) |
-                               ( (rdptr[1:0]==2'b01) & q2off ) |
-                               ( (rdptr[1:0]==2'b10) & q0off );
-
-   assign q0sel[1:0]         = {q0ptr,~q0ptr};
-
-   assign q1sel[1:0]         = {q1ptr,~q1ptr};
-
-   // end new queue control logic
-
-
-   // misc data that is associated with each fetch buffer
-
-   if(pt.BTB_ENABLE==1)
-     assign misc_data_in[MHI:0] = {
-
-                                    ic_access_fault_type_f[1:0],
-                                    ifu_bp_btb_target_f[31:1],
-                                    ifu_bp_poffset_f[11:0],
-                                    ifu_bp_fghr_f[pt.BHT_GHR_SIZE-1:0]
-                                    };
-   else
-     assign misc_data_in[MHI:0] = {
-                                    ic_access_fault_type_f[1:0]
-                                    };
-
-
-   assign {misc1eff[MHI:0],misc0eff[MHI:0]} = (({MSIZE*2{qren[0]}} & {misc1[MHI:0],misc0[MHI:0]}) |
-                                               ({MSIZE*2{qren[1]}} & {misc2[MHI:0],misc1[MHI:0]}) |
-                                               ({MSIZE*2{qren[2]}} & {misc0[MHI:0],misc2[MHI:0]}));
-
-   if(pt.BTB_ENABLE==1) begin
-   assign {
-            f1ictype[1:0],
-            f1prett[31:1],
-            f1poffset[11:0],
-            f1fghr[pt.BHT_GHR_SIZE-1:0]
-            } = misc1eff[MHI:0];
-
-   assign {
-            f0ictype[1:0],
-            f0prett[31:1],
-            f0poffset[11:0],
-            f0fghr[pt.BHT_GHR_SIZE-1:0]
-            } = misc0eff[MHI:0];
-
-      if(pt.BTB_FULLYA) begin
-         assign brdata_in[BRDATA_SIZE-1:0] = {
-                                               ifu_bp_fa_index_f[1], iccm_rd_ecc_double_err[1],ic_access_fault_f[1],ifu_bp_hist1_f[1],ifu_bp_hist0_f[1],ifu_bp_pc4_f[1],ifu_bp_way_f[1],ifu_bp_valid_f[1],ifu_bp_ret_f[1],
-                                               ifu_bp_fa_index_f[0], iccm_rd_ecc_double_err[0],ic_access_fault_f[0],ifu_bp_hist1_f[0],ifu_bp_hist0_f[0],ifu_bp_pc4_f[0],ifu_bp_way_f[0],ifu_bp_valid_f[0],ifu_bp_ret_f[0]
-                                               };
-         assign {f0index[1],f0dbecc[1],f0icaf[1],f0hist1[1],f0hist0[1],f0pc4[1],f0way[1],f0brend[1],f0ret[1],
-                 f0index[0],f0dbecc[0],f0icaf[0],f0hist1[0],f0hist0[0],f0pc4[0],f0way[0],f0brend[0],f0ret[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-         assign {f1index[1],f1dbecc[1],f1icaf[1],f1hist1[1],f1hist0[1],f1pc4[1],f1way[1],f1brend[1],f1ret[1],
-                 f1index[0],f1dbecc[0],f1icaf[0],f1hist1[0],f1hist0[0],f1pc4[0],f1way[0],f1brend[0],f1ret[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      end
-      else begin
-         assign brdata_in[BRDATA_SIZE-1:0] = {
-                                               iccm_rd_ecc_double_err[1],ic_access_fault_f[1],ifu_bp_hist1_f[1],ifu_bp_hist0_f[1],ifu_bp_pc4_f[1],ifu_bp_way_f[1],ifu_bp_valid_f[1],ifu_bp_ret_f[1],
-                                               iccm_rd_ecc_double_err[0],ic_access_fault_f[0],ifu_bp_hist1_f[0],ifu_bp_hist0_f[0],ifu_bp_pc4_f[0],ifu_bp_way_f[0],ifu_bp_valid_f[0],ifu_bp_ret_f[0]
-                                               };
-         assign {f0dbecc[1],f0icaf[1],f0hist1[1],f0hist0[1],f0pc4[1],f0way[1],f0brend[1],f0ret[1],
-                 f0dbecc[0],f0icaf[0],f0hist1[0],f0hist0[0],f0pc4[0],f0way[0],f0brend[0],f0ret[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-         assign {f1dbecc[1],f1icaf[1],f1hist1[1],f1hist0[1],f1pc4[1],f1way[1],f1brend[1],f1ret[1],
-                 f1dbecc[0],f1icaf[0],f1hist1[0],f1hist0[0],f1pc4[0],f1way[0],f1brend[0],f1ret[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      end
-
-
-
-
-   assign {brdata1eff[BRDATA_SIZE-1:0],brdata0eff[BRDATA_SIZE-1:0]} = (({BRDATA_SIZE*2{qren[0]}} & {brdata1[BRDATA_SIZE-1:0],brdata0[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[1]}} & {brdata2[BRDATA_SIZE-1:0],brdata1[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[2]}} & {brdata0[BRDATA_SIZE-1:0],brdata2[BRDATA_SIZE-1:0]}));
-
-   assign brdata0final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q0sel[0]}} & {                     brdata0eff[2*BRDATA_WIDTH-1:0]}) |
-                                           ({BRDATA_SIZE{q0sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata0eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   assign brdata1final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q1sel[0]}} & {                     brdata1eff[2*BRDATA_WIDTH-1:0]}) |
-                                           ({BRDATA_SIZE{q1sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata1eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   end // if (pt.BTB_ENABLE==1)
-   else begin
-      assign {
-               f1ictype[1:0]
-               } = misc1eff[MHI:0];
-
-      assign {
-               f0ictype[1:0]
-               } = misc0eff[MHI:0];
-
-      assign brdata_in[BRDATA_SIZE-1:0] = {
-                                            iccm_rd_ecc_double_err[1],ic_access_fault_f[1],
-                                            iccm_rd_ecc_double_err[0],ic_access_fault_f[0]
-                                            };
-      assign {f0dbecc[1],f0icaf[1],
-              f0dbecc[0],f0icaf[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-      assign {f1dbecc[1],f1icaf[1],
-              f1dbecc[0],f1icaf[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      assign {brdata1eff[BRDATA_SIZE-1:0],brdata0eff[BRDATA_SIZE-1:0]} = (({BRDATA_SIZE*2{qren[0]}} & {brdata1[BRDATA_SIZE-1:0],brdata0[BRDATA_SIZE-1:0]}) |
-                                                                          ({BRDATA_SIZE*2{qren[1]}} & {brdata2[BRDATA_SIZE-1:0],brdata1[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[2]}} & {brdata0[BRDATA_SIZE-1:0],brdata2[BRDATA_SIZE-1:0]}));
-
-      assign brdata0final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q0sel[0]}} & {                     brdata0eff[2*BRDATA_WIDTH-1:0]}) |
-                                              ({BRDATA_SIZE{q0sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata0eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-      assign brdata1final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q1sel[0]}} & {                     brdata1eff[2*BRDATA_WIDTH-1:0]}) |
-                                              ({BRDATA_SIZE{q1sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata1eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   end // else: !if(pt.BTB_ENABLE==1)
-
-
-   // possible states of { sf0_valid, sf1_valid, f2_valid }
-   //
-   // 000    if->f0
-   // 100    if->f1
-   // 101    illegal
-   // 010    if->f1, f1->f0
-   // 110    if->f2
-   // 001    if->f1, f2->f0
-   // 011    if->f2, f2->f1, f1->f0
-   // 111   !if,     no shift
-
-   assign f2_valid           =  f2val[0];
-   assign sf1_valid          =  sf1val[0];
-   assign sf0_valid          =  sf0val[0];
-
-   // interface to fetch
-
-   assign consume_fb0        = ~sf0val[0] & f0val[0];
-
-   assign consume_fb1        = ~sf1val[0] & f1val[0];
-
-   assign ifu_fb_consume1    =  consume_fb0 & ~consume_fb1 & ~exu_flush_final;
-   assign ifu_fb_consume2    =  consume_fb0 &  consume_fb1 & ~exu_flush_final;
-
-   assign ifvalid            =  ifu_fetch_val[0];
-
-   assign shift_f1_f0        =  ~sf0_valid &  sf1_valid;
-   assign shift_f2_f0        =  ~sf0_valid & ~sf1_valid &  f2_valid;
-   assign shift_f2_f1        =  ~sf0_valid &  sf1_valid &  f2_valid;
-
-   assign fetch_to_f0        =  ~sf0_valid & ~sf1_valid & ~f2_valid & ifvalid;
-
-   assign fetch_to_f1        = (~sf0_valid & ~sf1_valid &  f2_valid & ifvalid)  |
-                               (~sf0_valid &  sf1_valid & ~f2_valid & ifvalid)  |
-                               ( sf0_valid & ~sf1_valid & ~f2_valid & ifvalid);
-
-   assign fetch_to_f2        = (~sf0_valid &  sf1_valid &  f2_valid & ifvalid)  |
-                               ( sf0_valid &  sf1_valid & ~f2_valid & ifvalid);
-
-
-   assign f2val_in[1:0]      = ({2{ fetch_to_f2 &                               ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{~fetch_to_f2 & ~shift_f2_f1 & ~shift_f2_f0 & ~exu_flush_final}} & f2val[1:0]        );
-
-
-   assign sf1val[1:0]        = ({2{ f1_shift_2B}} & {1'b0,f1val[1]}) |
-                               ({2{~f1_shift_2B}} & f1val[1:0]     );
-
-   assign f1val_in[1:0]      = ({2{ fetch_to_f1                               & ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{                shift_f2_f1                & ~exu_flush_final}} & f2val[1:0]        ) |
-                               ({2{~fetch_to_f1 & ~shift_f2_f1 & ~shift_f1_f0 & ~exu_flush_final}} & sf1val[1:0]       );
-
-
-
-   assign sf0val[1:0]        = ({2{ shift_2B            }} & {1'b0,f0val[1]}) |
-                               ({2{~shift_2B & ~shift_4B}} & f0val[1:0]);
-
-   assign f0val_in[1:0]      = ({2{fetch_to_f0                                & ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{                shift_f2_f0                & ~exu_flush_final}} & f2val[1:0]        ) |
-                               ({2{                               shift_f1_f0 & ~exu_flush_final}} & sf1val[1:0]       ) |
-                               ({2{~fetch_to_f0 & ~shift_f2_f0 & ~shift_f1_f0 & ~exu_flush_final}} & sf0val[1:0]       );
-
-   assign {q1eff[31:0],q0eff[31:0]} = (({64{qren[0]}} & {q1[31:0],q0[31:0]}) |
-                                       ({64{qren[1]}} & {q2[31:0],q1[31:0]}) |
-                                       ({64{qren[2]}} & {q0[31:0],q2[31:0]}));
-
-   assign q0final[31:0]      = ({32{q0sel[0]}} & {      q0eff[31:0]}) |
-                               ({32{q0sel[1]}} & {16'b0,q0eff[31:16]});
-
-   assign q1final[15:0]      = ({16{q1sel[0]}} & q1eff[15:0] ) |
-                               ({16{q1sel[1]}} & q1eff[31:16]);
-   logic [31:1] q0pceff, q0pcfinal;
-   logic [31:1] q1pceff;
-
-   assign {q1pceff[31:1],q0pceff[31:1]} = (({62{qren[0]}} & {q1pc[31:1],q0pc[31:1]}) |
-                                           ({62{qren[1]}} & {q2pc[31:1],q1pc[31:1]}) |
-                                           ({62{qren[2]}} & {q0pc[31:1],q2pc[31:1]}));
-
-
-   assign q0pcfinal[31:1]      = ({31{q0sel[0]}} & ( q0pceff[31:1])) |
-                                 ({31{q0sel[1]}} & ( q0pceff[31:1] + 31'd1));
-
-   assign aligndata[31:0]    = ({32{ f0val[1]           }} & {q0final[31:0]}) |
-                               ({32{~f0val[1] & f0val[0]}} & {q1final[15:0],q0final[15:0]});
-
-   assign alignval[1:0]      = ({ 2{ f0val[1]           }} & {2'b11}) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1val[0],1'b1});
-
-   assign alignicaf[1:0]    = ({ 2{ f0val[1]           }} &  f0icaf[1:0]          ) |
-                              ({ 2{~f0val[1] & f0val[0]}} & {f1icaf[0],f0icaf[0]});
-
-   assign aligndbecc[1:0]    = ({ 2{ f0val[1]           }} &  f0dbecc[1:0]          ) |
-                              ({ 2{~f0val[1] & f0val[0]}} & {f1dbecc[0],f0dbecc[0]});
-
-   if (pt.BTB_ENABLE==1) begin
-
-   // for branch prediction
-
-   assign alignbrend[1:0]    = ({ 2{ f0val[1]           }} &  f0brend[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1brend[0],f0brend[0]});
-
-   assign alignpc4[1:0]      = ({ 2{ f0val[1]           }} &  f0pc4[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1pc4[0],f0pc4[0]});
-
-      if(pt.BTB_FULLYA) begin
-         assign alignindex[0]      = f0index[0];
-         assign alignindex[1]      = f0val[1] ? f0index[1] : f1index[0];
-      end
-
-   assign alignret[1:0]      = ({ 2{ f0val[1]           }} &  f0ret[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1ret[0],f0ret[0]});
-
-   assign alignway[1:0]      = ({ 2{ f0val[1]           }} &  f0way[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1way[0],f0way[0]});
-
-   assign alignhist1[1:0]    = ({ 2{ f0val[1]           }} &  f0hist1[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1hist1[0],f0hist1[0]});
-
-   assign alignhist0[1:0]    = ({ 2{ f0val[1]           }} &  f0hist0[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1hist0[0],f0hist0[0]});
-
-   assign secondpc[31:1]     = ({31{ f0val[1]           }} &  (q0pceff[31:1] + 31'd1)) |
-                               // you need the base pc for 2nd one only (4B max, 2B for the 1st and 2B for the 2nd)
-                               ({31{~f0val[1] & f0val[0]}} &   q1pceff[31:1]      );
-
-
-   assign firstpc[31:1]      =  q0pcfinal[31:1];
-      end // if (pt.BTB_ENABLE==1)
-
-   assign alignfromf1[1]     =      ~f0val[1] & f0val[0];
-
-
-   assign ifu_i0_pc[31:1]    =  q0pcfinal[31:1];
-
-
-   assign ifu_i0_pc4         =  first4B;
-
-
-   assign ifu_i0_cinst[15:0] = aligndata[15:0];
-
-   assign first4B            = (aligndata[1:0] == 2'b11);
-   assign first2B            = ~first4B;
-
-   assign ifu_i0_valid       = (first4B & alignval[1]) |
-                               (first2B & alignval[0]);
-
-   // inst access fault on any byte of inst results in access fault for the inst
-   assign ifu_i0_icaf        = (first4B & (|alignicaf[1:0])) |
-                               (first2B &   alignicaf[0]   );
-
-   assign ifu_i0_icaf_type[1:0] = (first4B & ~f0val[1] & f0val[0] & ~alignicaf[0] & ~aligndbecc[0]) ? f1ictype[1:0] : f0ictype[1:0];
-
-
-   assign icaf_eff[1:0] = alignicaf[1:0] | aligndbecc[1:0];
-
-   assign ifu_i0_icaf_second = first4B & ~icaf_eff[0] & icaf_eff[1];
-
-   assign ifu_i0_dbecc       = (first4B & (|aligndbecc[1:0])) |
-                               (first2B &   aligndbecc[0]   );
-
-
-   assign ifirst[31:0]       =  aligndata[31:0];
-
-
-   assign ifu_i0_instr[31:0] = ({32{first4B & alignval[1]}} & ifirst[31:0]) |
-                               ({32{first2B & alignval[0]}} & uncompress0[31:0]);
-
-if(pt.BTB_ENABLE==1) begin
-
-   // if you detect br does not start on instruction boundary
-
-   eb1_btb_addr_hash #(.pt(pt)) firsthash (.pc(firstpc [pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]),
-                                            .hash(firstpc_hash [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-   eb1_btb_addr_hash #(.pt(pt)) secondhash(.pc(secondpc[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]),
-                                            .hash(secondpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-   if(pt.BTB_FULLYA) begin
-      assign firstbrtag_hash = firstpc;
-      assign secondbrtag_hash = secondpc;
-   end
-   else begin
-      if(pt.BTB_BTAG_FOLD) begin : btbfold
-         eb1_btb_tag_hash_fold #(.pt(pt)) first_brhash (.pc(firstpc [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                         .hash(firstbrtag_hash [pt.BTB_BTAG_SIZE-1:0]));
-         eb1_btb_tag_hash_fold #(.pt(pt)) second_brhash(.pc(secondpc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                         .hash(secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0]));
-      end
-      else begin
-         eb1_btb_tag_hash #(.pt(pt)) first_brhash (.pc(firstpc [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                    .hash(firstbrtag_hash [pt.BTB_BTAG_SIZE-1:0]));
-         eb1_btb_tag_hash #(.pt(pt)) second_brhash(.pc(secondpc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                    .hash(secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0]));
-      end
-   end // else: !if(pt.BTB_FULLYA)
-
-
-   // start_indexing - you want pc to be based on where the end of branch is prediction
-   // normal indexing pc based that's incorrect now for pc4 cases it's pc4 + 2
-
-   always_comb begin
-
-      i0_brp                 = '0;
-
-      i0_br_start_error      = (first4B & alignval[1] & alignbrend[0]);
-
-      i0_brp.valid           = (first2B & alignbrend[0]) |
-                               (first4B & alignbrend[1]) |
-                                i0_br_start_error;
-
-      i0_brp_pc4             = (first2B & alignpc4[0]) |
-                               (first4B & alignpc4[1]);
-
-      i0_brp.ret             = (first2B & alignret[0]) |
-                               (first4B & alignret[1]);
-
-      i0_brp.way             = (first2B | alignbrend[0])  ?  alignway[0]  :  alignway[1];
-
-      i0_brp.hist[1]         = (first2B & alignhist1[0]) |
-                               (first4B & alignhist1[1]);
-
-      i0_brp.hist[0]         = (first2B & alignhist0[0]) |
-                               (first4B & alignhist0[1]);
-
-      i0_ends_f1             =  first4B & alignfromf1[1];
-
-      i0_brp.toffset[11:0]   = (i0_ends_f1)  ?  f1poffset[11:0]  :  f0poffset[11:0];
-
-      i0_brp.prett[31:1]     = (i0_ends_f1)  ?  f1prett[31:1]    :  f0prett[31:1];
-
-      i0_brp.br_start_error  = i0_br_start_error;
-
-      i0_brp.bank            = (first2B | alignbrend[0])  ?  firstpc[1]  :  secondpc[1];
-
-      i0_brp.br_error        = (i0_brp.valid &  i0_brp_pc4 &  first2B) |
-                               (i0_brp.valid & ~i0_brp_pc4 &  first4B);
-
-      if(pt.BTB_FULLYA)
-        ifu_i0_fa_index = (first2B | alignbrend[0])  ?  alignindex[0]  :  alignindex[1];
-      else
-        ifu_i0_fa_index = '0;
-
- end
-
-
-   assign ifu_i0_bp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = (first2B | alignbrend[0])  ?  firstpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  :
-                                                                                         secondpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign ifu_i0_bp_fghr[pt.BHT_GHR_SIZE-1:0]            = (i0_ends_f1)               ?  f1fghr[pt.BHT_GHR_SIZE-1:0]  :
-                                                                                         f0fghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign ifu_i0_bp_btag[pt.BTB_BTAG_SIZE-1:0]           = (first2B | alignbrend[0])  ?  firstbrtag_hash[pt.BTB_BTAG_SIZE-1:0]  :
-                                                                                         secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0];
-end
-else begin
-   assign i0_brp = '0;
-   assign ifu_i0_bp_index = '0;
-   assign ifu_i0_bp_fghr = '0;
-   assign ifu_i0_bp_btag = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   // decompress
-
-   // quiet inputs for 4B inst
-   eb1_ifu_compress_ctl #(.pt(pt)) compress0 (.din((first2B) ? aligndata[15:0] : '0), .dout(uncompress0[31:0]));
-
-
-
-   assign i0_shift           =  dec_i0_decode_d & ~error_stall;
-
-   assign ifu_pmu_instr_aligned = i0_shift;
-
-
-   // compute how many bytes are being shifted from f0
-
-   assign shift_2B           =  i0_shift & first2B;
-
-   assign shift_4B           =  i0_shift & first4B;
-
-   // exact equations for the queue logic
-   assign f0_shift_2B        = (shift_2B & f0val[0]            ) |
-                               (shift_4B & f0val[0] & ~f0val[1]);
-
-
-   // f0 valid states
-   //     11
-   //     10
-   //     00
-
-   assign f1_shift_2B        =  f0val[0] & ~f0val[1] & shift_4B;
-
-
-
-endmodule
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Branch predictor
-// Comments:
-//
-//
-//  Bank3 : Bank2 : Bank1 : Bank0
-//  FA  C       8       4       0
-//********************************************************************************
-
-module eb1_ifu_bp_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-
-   input logic clk,
-   input logic rst_l,
-
-   input logic ic_hit_f,      // Icache hit, enables F address capture
-
-   input logic [31:1] ifc_fetch_addr_f, // look up btb address
-   input logic ifc_fetch_req_f,  // F1 valid
-
-   input eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // BP commit update packet, includes errors
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_i0_br_fghr_r, // fghr to bp
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r, // bp index
-
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associative btb error index
-
-   input logic dec_tlu_flush_lower_wb, // used to move EX4 RS to EX1 and F
-   input logic dec_tlu_flush_leak_one_wb, // don't hit for leak one fetches
-
-   input logic dec_tlu_bpred_disable, // disable all branch prediction
-
-   input eb1_predict_pkt_t  exu_mp_pkt, // mispredict packet
-
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_mp_eghr, // execute ghr (for patching fghr)
-   input logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   input logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-   input logic exu_flush_final, // all flushes
-
-   output logic ifu_bp_hit_taken_f, // btb hit, select target
-   output logic [31:1] ifu_bp_btb_target_f, //  predicted target PC
-   output logic ifu_bp_inst_mask_f, // tell ic which valids to kill because of a taken branch, right justified
-
-   output logic [pt.BHT_GHR_SIZE-1:0] ifu_bp_fghr_f, // fetch ghr
-
-   output logic [1:0] ifu_bp_way_f, // way
-   output logic [1:0] ifu_bp_ret_f, // predicted ret
-   output logic [1:0] ifu_bp_hist1_f, // history counters for all 4 potential branches, bit 1, right justified
-   output logic [1:0] ifu_bp_hist0_f, // history counters for all 4 potential branches, bit 0, right justified
-   output logic [1:0] ifu_bp_pc4_f, // pc4 indication, right justified
-   output logic [1:0] ifu_bp_valid_f, // branch valid, right justified
-   output logic [11:0] ifu_bp_poffset_f, // predicted target
-
-   output logic [1:0] [$clog2(pt.BTB_SIZE)-1:0]    ifu_bp_fa_index_f, // predicted branch index (fully associative option)
-
-   input  logic       scan_mode
-   );
-
-
-   localparam BTB_DWIDTH =  pt.BTB_TOFFSET_SIZE+pt.BTB_BTAG_SIZE+5;
-   localparam BTB_DWIDTH_TOP =  int'(pt.BTB_TOFFSET_SIZE)+int'(pt.BTB_BTAG_SIZE)+4;
-   localparam BTB_FA_INDEX = $clog2(pt.BTB_SIZE)-1;
-   localparam FA_CMP_LOWER = $clog2(pt.ICACHE_LN_SZ);
-   localparam FA_TAG_END_UPPER= 5+int'(pt.BTB_TOFFSET_SIZE)+int'(FA_CMP_LOWER)-1; // must cast to int or vcs build fails
-   localparam FA_TAG_START_LOWER = 3+int'(pt.BTB_TOFFSET_SIZE)+int'(FA_CMP_LOWER);
-   localparam FA_TAG_END_LOWER = 5+int'(pt.BTB_TOFFSET_SIZE);
-
-   localparam TAG_START=BTB_DWIDTH-1;
-   localparam PC4=4;
-   localparam BOFF=3;
-   localparam CALL=2;
-   localparam RET=1;
-   localparam BV=0;
-
-   localparam LRU_SIZE=pt.BTB_ARRAY_DEPTH;
-   localparam NUM_BHT_LOOP = (pt.BHT_ARRAY_DEPTH > 16 ) ? 16 : pt.BHT_ARRAY_DEPTH;
-   localparam NUM_BHT_LOOP_INNER_HI =  (pt.BHT_ARRAY_DEPTH > 16 ) ?pt.BHT_ADDR_LO+3 : pt.BHT_ADDR_HI;
-   localparam NUM_BHT_LOOP_OUTER_LO =  (pt.BHT_ARRAY_DEPTH > 16 ) ?pt.BHT_ADDR_LO+4 : pt.BHT_ADDR_LO;
-   localparam BHT_NO_ADDR_MATCH  = ( pt.BHT_ARRAY_DEPTH <= 16 );
-
-
-   logic exu_mp_valid_write;
-   logic exu_mp_ataken;
-   logic exu_mp_valid; // conditional branch mispredict
-   logic exu_mp_boffset; // branch offsett
-   logic exu_mp_pc4; // branch is a 4B inst
-   logic exu_mp_call; // branch is a call inst
-   logic exu_mp_ret; // branch is a ret inst
-   logic exu_mp_ja; // branch is a jump always
-   logic [1:0] exu_mp_hist; // new history
-   logic [11:0] exu_mp_tgt; // target offset
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_addr; // BTB/BHT address
-   logic                                   dec_tlu_br0_v_wb; // WB stage history update
-   logic [1:0]                             dec_tlu_br0_hist_wb; // new history
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_tlu_br0_addr_wb; // addr
-   logic                                   dec_tlu_br0_error_wb; // error; invalidate bank
-   logic                                   dec_tlu_br0_start_error_wb; // error; invalidate all 4 banks in fg
-   logic [pt.BHT_GHR_SIZE-1:0]             exu_i0_br_fghr_wb;
-
-   logic use_mp_way, use_mp_way_p1;
-   logic [pt.RET_STACK_SIZE-1:0][31:0] rets_out, rets_in;
-   logic [pt.RET_STACK_SIZE-1:0]        rsenable;
-
-
-   logic [11:0]       btb_rd_tgt_f;
-   logic              btb_rd_pc4_f, btb_rd_call_f, btb_rd_ret_f;
-   logic [1:1]        bp_total_branch_offset_f;
-
-   logic [31:1]       bp_btb_target_adder_f;
-   logic [31:1]       bp_rs_call_target_f;
-   logic              rs_push, rs_pop, rs_hold;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] btb_rd_addr_p1_f, btb_wr_addr, btb_rd_addr_f;
-   logic [pt.BTB_BTAG_SIZE-1:0] btb_wr_tag, fetch_rd_tag_f, fetch_rd_tag_p1_f;
-   logic [BTB_DWIDTH-1:0]        btb_wr_data;
-   logic               btb_wr_en_way0, btb_wr_en_way1;
-
-
-   logic               dec_tlu_error_wb, btb_valid, dec_tlu_br0_middle_wb;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]        btb_error_addr_wb;
-   logic branch_error_collision_f, fetch_mp_collision_f, branch_error_collision_p1_f, fetch_mp_collision_p1_f;
-
-   logic  branch_error_bank_conflict_f;
-   logic [pt.BHT_GHR_SIZE-1:0] merged_ghr, fghr_ns, fghr;
-   logic [1:0] num_valids;
-   logic [LRU_SIZE-1:0] btb_lru_b0_f, btb_lru_b0_hold, btb_lru_b0_ns,
-                        fetch_wrindex_dec, fetch_wrindex_p1_dec, fetch_wrlru_b0, fetch_wrlru_p1_b0,
-                        mp_wrindex_dec, mp_wrlru_b0;
-   logic                btb_lru_rd_f, btb_lru_rd_p1_f, lru_update_valid_f;
-   logic  tag_match_way0_f, tag_match_way1_f;
-   logic [1:0] way_raw, bht_dir_f, btb_sel_f, wayhit_f, vwayhit_f, wayhit_p1_f;
-   logic [1:0] bht_valid_f, bht_force_taken_f;
-
-   logic leak_one_f, leak_one_f_d1;
-
-   logic [LRU_SIZE-1:0][BTB_DWIDTH-1:0]  btb_bank0_rd_data_way0_out ;
-
-   logic [LRU_SIZE-1:0][BTB_DWIDTH-1:0]  btb_bank0_rd_data_way1_out ;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way0_f ;
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way1_f ;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way0_p1_f ;
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way1_p1_f ;
-
-   logic                [BTB_DWIDTH-1:0] btb_vbank0_rd_data_f, btb_vbank1_rd_data_f;
-
-   logic                                         final_h;
-   logic                                         btb_fg_crossing_f;
-   logic                                         middle_of_bank;
-
-
-   logic [1:0]                                   bht_vbank0_rd_data_f, bht_vbank1_rd_data_f;
-   logic                                         branch_error_bank_conflict_p1_f;
-   logic                                         tag_match_way0_p1_f, tag_match_way1_p1_f;
-
-   logic [1:0]                                   btb_vlru_rd_f, fetch_start_f, tag_match_vway1_expanded_f, tag_match_way0_expanded_p1_f, tag_match_way1_expanded_p1_f;
-   logic [31:2] fetch_addr_p1_f;
-
-
-   logic exu_mp_way, exu_mp_way_f, dec_tlu_br0_way_wb, dec_tlu_way_wb;
-   logic                [BTB_DWIDTH-1:0] btb_bank0e_rd_data_f, btb_bank0e_rd_data_p1_f;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0o_rd_data_f;
-
-   logic [1:0] tag_match_way0_expanded_f, tag_match_way1_expanded_f;
-
-
-    logic [1:0]                                  bht_bank0_rd_data_f;
-    logic [1:0]                                  bht_bank1_rd_data_f;
-    logic [1:0]                                  bht_bank0_rd_data_p1_f;
-   genvar                                        j, i;
-
-   assign exu_mp_valid = exu_mp_pkt.misp & ~leak_one_f; // conditional branch mispredict
-   assign exu_mp_boffset = exu_mp_pkt.boffset;  // branch offset
-   assign exu_mp_pc4 = exu_mp_pkt.pc4;  // branch is a 4B inst
-   assign exu_mp_call = exu_mp_pkt.pcall;  // branch is a call inst
-   assign exu_mp_ret = exu_mp_pkt.pret;  // branch is a ret inst
-   assign exu_mp_ja = exu_mp_pkt.pja;  // branch is a jump always
-   assign exu_mp_way = exu_mp_pkt.way;  // repl way
-   assign exu_mp_hist[1:0] = exu_mp_pkt.hist[1:0];  // new history
-   assign exu_mp_tgt[11:0]  = exu_mp_pkt.toffset[11:0] ;  // target offset
-   assign exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  = exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ;  // BTB/BHT address
-   assign exu_mp_ataken = exu_mp_pkt.ataken;
-
-
-   assign dec_tlu_br0_v_wb = dec_tlu_br0_r_pkt.valid;
-   assign dec_tlu_br0_hist_wb[1:0]  = dec_tlu_br0_r_pkt.hist[1:0];
-   assign dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-   assign dec_tlu_br0_error_wb = dec_tlu_br0_r_pkt.br_error;
-   assign dec_tlu_br0_middle_wb = dec_tlu_br0_r_pkt.middle;
-   assign dec_tlu_br0_way_wb = dec_tlu_br0_r_pkt.way;
-   assign dec_tlu_br0_start_error_wb = dec_tlu_br0_r_pkt.br_start_error;
-   assign exu_i0_br_fghr_wb[pt.BHT_GHR_SIZE-1:0] = exu_i0_br_fghr_r[pt.BHT_GHR_SIZE-1:0];
-
-
-
-
-   // ----------------------------------------------------------------------
-   // READ
-   // ----------------------------------------------------------------------
-
-   // hash the incoming fetch PC, first guess at hashing algorithm
-   eb1_btb_addr_hash #(.pt(pt)) f1hash(.pc(ifc_fetch_addr_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-
-   assign fetch_addr_p1_f[31:2] = ifc_fetch_addr_f[31:2] + 30'b1;
-   eb1_btb_addr_hash #(.pt(pt)) f1hash_p1(.pc(fetch_addr_p1_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-   assign btb_sel_f[1] = ~bht_dir_f[0];
-   assign btb_sel_f[0] =  bht_dir_f[0];
-
-   assign fetch_start_f[1:0] = {ifc_fetch_addr_f[1], ~ifc_fetch_addr_f[1]};
-
-   // Errors colliding with fetches must kill the btb/bht hit.
-
-   assign branch_error_collision_f = dec_tlu_error_wb & (btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]);
-   assign branch_error_collision_p1_f = dec_tlu_error_wb & (btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]);
-
-   assign branch_error_bank_conflict_f = branch_error_collision_f & dec_tlu_error_wb;
-   assign branch_error_bank_conflict_p1_f = branch_error_collision_p1_f & dec_tlu_error_wb;
-
-   // set on leak one, hold until next flush without leak one
-   assign leak_one_f = (dec_tlu_flush_leak_one_wb & dec_tlu_flush_lower_wb) | (leak_one_f_d1 & ~dec_tlu_flush_lower_wb);
-
-logic exu_flush_final_d1;
-
- if(!pt.BTB_FULLYA) begin
-   assign fetch_mp_collision_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                                    exu_mp_valid & ifc_fetch_req_f &
-                                    (exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO])
-                                    );
-   assign fetch_mp_collision_p1_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                                       exu_mp_valid & ifc_fetch_req_f &
-                                       (exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO])
-                                       );
-   // 2 -way SA, figure out the way hit and mux accordingly
-   assign tag_match_way0_f = btb_bank0_rd_data_way0_f[BV] & (btb_bank0_rd_data_way0_f[TAG_START:17] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way1_f = btb_bank0_rd_data_way1_f[BV] & (btb_bank0_rd_data_way1_f[TAG_START:17] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way0_p1_f = btb_bank0_rd_data_way0_p1_f[BV] & (btb_bank0_rd_data_way0_p1_f[TAG_START:17] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_p1_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way1_p1_f = btb_bank0_rd_data_way1_p1_f[BV] & (btb_bank0_rd_data_way1_p1_f[TAG_START:17] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_p1_f) & ifc_fetch_req_f & ~leak_one_f;
-
-
-   // Both ways could hit, use the offset bit to reorder
-
-   assign tag_match_way0_expanded_f[1:0] = {tag_match_way0_f &  (btb_bank0_rd_data_way0_f[BOFF] ^ btb_bank0_rd_data_way0_f[PC4]),
-                                             tag_match_way0_f & ~(btb_bank0_rd_data_way0_f[BOFF] ^ btb_bank0_rd_data_way0_f[PC4])};
-
-   assign tag_match_way1_expanded_f[1:0] = {tag_match_way1_f &  (btb_bank0_rd_data_way1_f[BOFF] ^ btb_bank0_rd_data_way1_f[PC4]),
-                                             tag_match_way1_f & ~(btb_bank0_rd_data_way1_f[BOFF] ^ btb_bank0_rd_data_way1_f[PC4])};
-
-   assign tag_match_way0_expanded_p1_f[1:0] = {tag_match_way0_p1_f &  (btb_bank0_rd_data_way0_p1_f[BOFF] ^ btb_bank0_rd_data_way0_p1_f[PC4]),
-                                                tag_match_way0_p1_f & ~(btb_bank0_rd_data_way0_p1_f[BOFF] ^ btb_bank0_rd_data_way0_p1_f[PC4])};
-
-   assign tag_match_way1_expanded_p1_f[1:0] = {tag_match_way1_p1_f &  (btb_bank0_rd_data_way1_p1_f[BOFF] ^ btb_bank0_rd_data_way1_p1_f[PC4]),
-                                                tag_match_way1_p1_f & ~(btb_bank0_rd_data_way1_p1_f[BOFF] ^ btb_bank0_rd_data_way1_p1_f[PC4])};
-
-   assign wayhit_f[1:0] = tag_match_way0_expanded_f[1:0] | tag_match_way1_expanded_f[1:0];
-   assign wayhit_p1_f[1:0] = tag_match_way0_expanded_p1_f[1:0] | tag_match_way1_expanded_p1_f[1:0];
-
-   assign btb_bank0o_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_f[1]}} & btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_f[1]}} & btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0]) );
-   assign btb_bank0e_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_f[0]}} & btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_f[0]}} & btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0]) );
-
-   assign btb_bank0e_rd_data_p1_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_p1_f[0]}} & btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0]) |
-                                                               ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_p1_f[0]}} & btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0]) );
-
-   // virtual bank order
-
-   assign btb_vbank0_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{fetch_start_f[0]}} &  btb_bank0e_rd_data_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{fetch_start_f[1]}} &  btb_bank0o_rd_data_f[BTB_DWIDTH-1:0]) );
-   assign btb_vbank1_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{fetch_start_f[0]}} &  btb_bank0o_rd_data_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{fetch_start_f[1]}} &  btb_bank0e_rd_data_p1_f[BTB_DWIDTH-1:0]) );
-
-   assign way_raw[1:0] =  tag_match_vway1_expanded_f[1:0] | (~vwayhit_f[1:0] & btb_vlru_rd_f[1:0]);
-
-   // --------------------------------------------------------------------------------
-   // --------------------------------------------------------------------------------
-   // update lru
-   // mp
-
-   // create a onehot lru write vector
-   assign mp_wrindex_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   // fetch
-   assign fetch_wrindex_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-   assign fetch_wrindex_p1_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign mp_wrlru_b0[LRU_SIZE-1:0] = mp_wrindex_dec[LRU_SIZE-1:0] & {LRU_SIZE{exu_mp_valid}};
-
-
-   assign btb_lru_b0_hold[LRU_SIZE-1:0] = ~mp_wrlru_b0[LRU_SIZE-1:0] & ~fetch_wrlru_b0[LRU_SIZE-1:0];
-
-   // Forward the mp lru information to the fetch, avoids multiple way hits later
-   assign use_mp_way = fetch_mp_collision_f;
-   assign use_mp_way_p1 = fetch_mp_collision_p1_f;
-
-   assign lru_update_valid_f = (vwayhit_f[0] | vwayhit_f[1]) & ifc_fetch_req_f & ~leak_one_f;
-
-
-   assign fetch_wrlru_b0[LRU_SIZE-1:0] = fetch_wrindex_dec[LRU_SIZE-1:0] &
-                                         {LRU_SIZE{lru_update_valid_f}};
-   assign fetch_wrlru_p1_b0[LRU_SIZE-1:0] = fetch_wrindex_p1_dec[LRU_SIZE-1:0] &
-                                         {LRU_SIZE{lru_update_valid_f}};
-
-   assign btb_lru_b0_ns[LRU_SIZE-1:0] = ( (btb_lru_b0_hold[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]) |
-                                          (mp_wrlru_b0[LRU_SIZE-1:0] & {LRU_SIZE{~exu_mp_way}}) |
-                                          (fetch_wrlru_b0[LRU_SIZE-1:0] & {LRU_SIZE{tag_match_way0_f}}) |
-                                          (fetch_wrlru_p1_b0[LRU_SIZE-1:0] & {LRU_SIZE{tag_match_way0_p1_f}}) );
-
-
-
-   assign btb_lru_rd_f = use_mp_way ? exu_mp_way_f : |(fetch_wrindex_dec[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]);
-
-   assign btb_lru_rd_p1_f = use_mp_way_p1 ? exu_mp_way_f : |(fetch_wrindex_p1_dec[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]);
-
-   // rotated
-   assign btb_vlru_rd_f[1:0] = ( ({2{fetch_start_f[0]}} & {btb_lru_rd_f, btb_lru_rd_f}) |
-                                  ({2{fetch_start_f[1]}} & {btb_lru_rd_p1_f, btb_lru_rd_f}));
-
-   assign tag_match_vway1_expanded_f[1:0] = ( ({2{fetch_start_f[0]}} & {tag_match_way1_expanded_f[1:0]}) |
-                                               ({2{fetch_start_f[1]}} & {tag_match_way1_expanded_p1_f[0], tag_match_way1_expanded_f[1]}) );
-
-
-   rvdffe #(LRU_SIZE) btb_lru_ff (.*, .en(ifc_fetch_req_f | exu_mp_valid),
-                                    .din(btb_lru_b0_ns[(LRU_SIZE)-1:0]),
-                                   .dout(btb_lru_b0_f[(LRU_SIZE)-1:0]));
-
- end // if (!pt.BTB_FULLYA)
-   // Detect end of cache line and mask as needed
-   logic eoc_near;
-   logic eoc_mask;
-   assign eoc_near = &ifc_fetch_addr_f[pt.ICACHE_BEAT_ADDR_HI:3];
-   assign eoc_mask = ~eoc_near| (|(~ifc_fetch_addr_f[2:1]));
-
-
-
-   // --------------------------------------------------------------------------------
-   // --------------------------------------------------------------------------------
-
-   // mux out critical hit bank for pc computation
-   // This is only useful for the first taken branch in the fetch group
-   logic [16:1] btb_sel_data_f;
-
-   assign btb_rd_tgt_f[11:0] = btb_sel_data_f[16:5];
-   assign btb_rd_pc4_f       = btb_sel_data_f[4];
-   assign btb_rd_call_f      = btb_sel_data_f[2];
-   assign btb_rd_ret_f       = btb_sel_data_f[1];
-
-   assign btb_sel_data_f[16:1] = ( ({16{btb_sel_f[1]}} & btb_vbank1_rd_data_f[16:1]) |
-                                    ({16{btb_sel_f[0]}} & btb_vbank0_rd_data_f[16:1]) );
-
-
-   logic [1:0] hist0_raw, hist1_raw, pc4_raw, pret_raw;
-
-   // a valid taken target needs to kill the next fetch as we compute the target address
-   assign ifu_bp_hit_taken_f = |(vwayhit_f[1:0] & hist1_raw[1:0]) & ifc_fetch_req_f & ~leak_one_f_d1 & ~dec_tlu_bpred_disable;
-
-
-   // Don't put calls/rets/ja in the predictor, force the bht taken instead
-   assign bht_force_taken_f[1:0] = {(btb_vbank1_rd_data_f[CALL] | btb_vbank1_rd_data_f[RET]),
-                                     (btb_vbank0_rd_data_f[CALL] | btb_vbank0_rd_data_f[RET])};
-
-
-   // taken and valid, otherwise, branch errors must clear the bht
-   assign bht_valid_f[1:0] = vwayhit_f[1:0];
-
-   assign bht_vbank0_rd_data_f[1:0] = ( ({2{fetch_start_f[0]}} & bht_bank0_rd_data_f[1:0]) |
-                                         ({2{fetch_start_f[1]}} & bht_bank1_rd_data_f[1:0]) );
-
-   assign bht_vbank1_rd_data_f[1:0] = ( ({2{fetch_start_f[0]}} & bht_bank1_rd_data_f[1:0]) |
-                                         ({2{fetch_start_f[1]}} & bht_bank0_rd_data_p1_f[1:0]) );
-
-
-   assign bht_dir_f[1:0] = {(bht_force_taken_f[1] | bht_vbank1_rd_data_f[1]) & bht_valid_f[1],
-                             (bht_force_taken_f[0] | bht_vbank0_rd_data_f[1]) & bht_valid_f[0]};
-
-   assign ifu_bp_inst_mask_f = (ifu_bp_hit_taken_f & btb_sel_f[1]) | ~ifu_bp_hit_taken_f;
-
-
-
-
-   // Branch prediction info is sent with the 2byte lane associated with the end of the branch.
-   // Cases
-   //       BANK1         BANK0
-   // -------------------------------
-   // |      :       |      :       |
-   // -------------------------------
-   //         <------------>                   : PC4 branch, offset, should be in B1 (indicated on [2])
-   //                <------------>            : PC4 branch, no offset, indicate PC4, VALID, HIST on [1]
-   //                       <------------>     : PC4 branch, offset, indicate PC4, VALID, HIST on [0]
-   //                <------>                  : PC2 branch, offset, indicate VALID, HIST on [1]
-   //                       <------>           : PC2 branch, no offset, indicate VALID, HIST on [0]
-   //
-
-
-
-   assign hist1_raw[1:0] = bht_force_taken_f[1:0] | {bht_vbank1_rd_data_f[1],
-                                                      bht_vbank0_rd_data_f[1]};
-
-   assign hist0_raw[1:0] = {bht_vbank1_rd_data_f[0],
-                            bht_vbank0_rd_data_f[0]};
-
-
-   assign pc4_raw[1:0] = {vwayhit_f[1] & btb_vbank1_rd_data_f[PC4],
-                          vwayhit_f[0] & btb_vbank0_rd_data_f[PC4]};
-
-   assign pret_raw[1:0] = {vwayhit_f[1] & ~btb_vbank1_rd_data_f[CALL] & btb_vbank1_rd_data_f[RET],
-                           vwayhit_f[0] & ~btb_vbank0_rd_data_f[CALL] & btb_vbank0_rd_data_f[RET]};
-
-   // GHR
-
-
-  // count the valids with masking based on first taken
-   assign num_valids[1:0] = countones(bht_valid_f[1:0]);
-
-   // Note that the following property holds
-   // P: prior ghr, H: history bit of last valid branch in line (could be 1 or 0)
-   // Num valid branches   What new GHR must be
-   // 2                    0H
-   // 1                    PH
-   // 0                    PP
-
-   assign final_h = |(btb_sel_f[1:0] & bht_dir_f[1:0]);
-
-   assign merged_ghr[pt.BHT_GHR_SIZE-1:0] = (
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h2}} & {fghr[pt.BHT_GHR_SIZE-3:0], 1'b0, final_h}) | // 0H
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h1}} & {fghr[pt.BHT_GHR_SIZE-2:0], final_h}) | // PH
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h0}} & {fghr[pt.BHT_GHR_SIZE-1:0]}) ); // PP
-
-   logic [pt.BHT_GHR_SIZE-1:0] exu_flush_ghr;
-   assign exu_flush_ghr[pt.BHT_GHR_SIZE-1:0] = exu_mp_fghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign fghr_ns[pt.BHT_GHR_SIZE-1:0] = ( ({pt.BHT_GHR_SIZE{exu_flush_final_d1}} & exu_flush_ghr[pt.BHT_GHR_SIZE-1:0]) |
-                                         ({pt.BHT_GHR_SIZE{~exu_flush_final_d1 & ifc_fetch_req_f & ic_hit_f & ~leak_one_f_d1}} & merged_ghr[pt.BHT_GHR_SIZE-1:0]) |
-                                         ({pt.BHT_GHR_SIZE{~exu_flush_final_d1 & ~(ifc_fetch_req_f & ic_hit_f & ~leak_one_f_d1)}} & fghr[pt.BHT_GHR_SIZE-1:0]));
-
-   rvdffie #(.WIDTH(pt.BHT_GHR_SIZE+3),.OVERRIDE(1)) fetchghr (.*,
-                                          .din ({exu_flush_final, exu_mp_way, leak_one_f, fghr_ns[pt.BHT_GHR_SIZE-1:0]}),
-                                          .dout({exu_flush_final_d1, exu_mp_way_f, leak_one_f_d1, fghr[pt.BHT_GHR_SIZE-1:0]}));
-
-   assign ifu_bp_fghr_f[pt.BHT_GHR_SIZE-1:0] = fghr[pt.BHT_GHR_SIZE-1:0];
-
-
-   assign ifu_bp_way_f[1:0] = way_raw[1:0];
-   assign ifu_bp_hist1_f[1:0]    = hist1_raw[1:0];
-   assign ifu_bp_hist0_f[1:0]    = hist0_raw[1:0];
-   assign ifu_bp_pc4_f[1:0]     = pc4_raw[1:0];
-
-   assign ifu_bp_valid_f[1:0]   = vwayhit_f[1:0] & ~{2{dec_tlu_bpred_disable}};
-   assign ifu_bp_ret_f[1:0]     = pret_raw[1:0];
-
-
-   // compute target
-   // Form the fetch group offset based on the btb hit location and the location of the branch within the 4 byte chunk
-
-//  .i 5
-//  .o 3
-//  .ilb bht_dir_f[1] bht_dir_f[0] fetch_start_f[1] fetch_start_f[0] btb_rd_pc4_f
-//  .ob bloc_f[1] bloc_f[0] use_fa_plus
-//  .type fr
-//
-//
-//  ## rotdir[1:0]  fs   pc4  off fapl
-//    -1            01 -  01  0
-//    10            01 -  10  0
-//
-//    -1            10 -  10  0
-//    10            10 0  01  1
-//    10            10 1  01  0
-logic [1:0] bloc_f;
-logic use_fa_plus;
-assign bloc_f[1] = (bht_dir_f[0] & ~fetch_start_f[0]) | (~bht_dir_f[0]
-     & fetch_start_f[0]);
-assign bloc_f[0] = (bht_dir_f[0] & fetch_start_f[0]) | (~bht_dir_f[0]
-     & ~fetch_start_f[0]);
-assign use_fa_plus = (~bht_dir_f[0] & ~fetch_start_f[0] & ~btb_rd_pc4_f);
-
-
-
-
-    assign btb_fg_crossing_f = fetch_start_f[0] & btb_sel_f[0] & btb_rd_pc4_f;
-
-   assign bp_total_branch_offset_f =  bloc_f[1] ^ btb_rd_pc4_f;
-
-   logic [31:2] adder_pc_in_f, ifc_fetch_adder_prior;
-   rvdfflie #(.WIDTH(30), .LEFT(19)) faddrf_ff (.*, .en(ifc_fetch_req_f & ~ifu_bp_hit_taken_f & ic_hit_f), .din(ifc_fetch_addr_f[31:2]), .dout(ifc_fetch_adder_prior[31:2]));
-
-
-   assign ifu_bp_poffset_f[11:0] = btb_rd_tgt_f[11:0];
-
-   assign adder_pc_in_f[31:2] = ( ({30{ use_fa_plus}} & fetch_addr_p1_f[31:2]) |
-                                   ({30{ btb_fg_crossing_f}} & ifc_fetch_adder_prior[31:2]) |
-                                   ({30{~btb_fg_crossing_f & ~use_fa_plus}} & ifc_fetch_addr_f[31:2]));
-
-   rvbradder predtgt_addr (.pc({adder_pc_in_f[31:2], bp_total_branch_offset_f}),
-                         .offset(btb_rd_tgt_f[11:0]),
-                         .dout(bp_btb_target_adder_f[31:1])
-                         );
-   // mux in the return stack address here for a predicted return assuming the RS is valid, quite if no prediction
-   assign ifu_bp_btb_target_f[31:1] = (({31{btb_rd_ret_f & ~btb_rd_call_f & rets_out[0][0] & ifu_bp_hit_taken_f}} & rets_out[0][31:1]) |
-                                       ({31{~(btb_rd_ret_f & ~btb_rd_call_f & rets_out[0][0]) & ifu_bp_hit_taken_f}} & bp_btb_target_adder_f[31:1]) );
-
-
-   // ----------------------------------------------------------------------
-   // Return Stack
-   // ----------------------------------------------------------------------
-
-   rvbradder rs_addr (.pc({adder_pc_in_f[31:2], bp_total_branch_offset_f}),
-                    .offset({11'b0,  ~btb_rd_pc4_f}),
-                    .dout(bp_rs_call_target_f[31:1])
-                         );
-
-   assign rs_push = (btb_rd_call_f & ~btb_rd_ret_f & ifu_bp_hit_taken_f);
-   assign rs_pop = (btb_rd_ret_f & ~btb_rd_call_f & ifu_bp_hit_taken_f);
-   assign rs_hold = ~rs_push & ~rs_pop;
-
-
-
-   // Fetch based (bit 0 is a valid)
-   assign rets_in[0][31:0] = ( ({32{rs_push}} & {bp_rs_call_target_f[31:1], 1'b1}) | // target[31:1], valid
-                               ({32{rs_pop}}  & rets_out[1][31:0]) );
-
-   assign rsenable[0] = ~rs_hold;
-
-   for (i=0; i<pt.RET_STACK_SIZE; i++) begin : retstack
-
-      // for the last entry in the stack, we don't have a pop position
-      if(i==pt.RET_STACK_SIZE-1) begin
-         assign rets_in[i][31:0] = rets_out[i-1][31:0];
-         assign rsenable[i] = rs_push;
-      end
-      else if(i>0) begin
-        assign rets_in[i][31:0] = ( ({32{rs_push}} & rets_out[i-1][31:0]) |
-                                    ({32{rs_pop}}  & rets_out[i+1][31:0]) );
-         assign rsenable[i] = rs_push | rs_pop;
-      end
-      rvdffe #(32) rets_ff (.*, .en(rsenable[i]), .din(rets_in[i][31:0]), .dout(rets_out[i][31:0]));
-
-   end : retstack
-
-   // ----------------------------------------------------------------------
-   // WRITE
-   // ----------------------------------------------------------------------
-
-
-   assign dec_tlu_error_wb = dec_tlu_br0_start_error_wb | dec_tlu_br0_error_wb;
-
-   assign btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign dec_tlu_way_wb = dec_tlu_br0_way_wb;
-
-   assign btb_valid = exu_mp_valid & ~dec_tlu_error_wb;
-
-   assign btb_wr_tag[pt.BTB_BTAG_SIZE-1:0] = exu_mp_btag[pt.BTB_BTAG_SIZE-1:0];
-
-   if(!pt.BTB_FULLYA) begin
-
-      if(pt.BTB_BTAG_FOLD) begin : btbfold
-         eb1_btb_tag_hash_fold #(.pt(pt)) rdtagf  (.hash(fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]),
-                                                    .pc({ifc_fetch_addr_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-         eb1_btb_tag_hash_fold #(.pt(pt)) rdtagp1f(.hash(fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]),
-                                                    .pc({fetch_addr_p1_f[ pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-      end
-      else begin
-         eb1_btb_tag_hash #(.pt(pt)) rdtagf(.hash(fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]),
-                                             .pc({ifc_fetch_addr_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-         eb1_btb_tag_hash #(.pt(pt)) rdtagp1f(.hash(fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]),
-                                               .pc({fetch_addr_p1_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-      end
-
-      assign btb_wr_en_way0 = ( ({{~exu_mp_way & exu_mp_valid_write & ~dec_tlu_error_wb}}) |
-                                ({{~dec_tlu_way_wb & dec_tlu_error_wb}}));
-
-      assign btb_wr_en_way1 = ( ({{exu_mp_way & exu_mp_valid_write & ~dec_tlu_error_wb}}) |
-                                ({{dec_tlu_way_wb & dec_tlu_error_wb}}));
-      assign btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = dec_tlu_error_wb ? btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] : exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-
-      assign vwayhit_f[1:0] = ( ({2{fetch_start_f[0]}} & {wayhit_f[1:0]}) |
-                                ({2{fetch_start_f[1]}} & {wayhit_p1_f[0], wayhit_f[1]})) & {eoc_mask, 1'b1};
-
-   end // if (!pt.BTB_FULLYA)
-
-   assign btb_wr_data[BTB_DWIDTH-1:0] = {btb_wr_tag[pt.BTB_BTAG_SIZE-1:0], exu_mp_tgt[pt.BTB_TOFFSET_SIZE-1:0], exu_mp_pc4, exu_mp_boffset,
-                                                exu_mp_call | exu_mp_ja, exu_mp_ret | exu_mp_ja, btb_valid} ;
-
-   assign exu_mp_valid_write = exu_mp_valid & exu_mp_ataken & ~exu_mp_pkt.valid;
-   logic [1:0] bht_wr_data0, bht_wr_data2;
-   logic [1:0] bht_wr_en0, bht_wr_en2;
-
-   assign middle_of_bank = exu_mp_pc4 ^ exu_mp_boffset;
-   assign bht_wr_en0[1:0] = {2{exu_mp_valid & ~exu_mp_call & ~exu_mp_ret & ~exu_mp_ja}} & {middle_of_bank, ~middle_of_bank};
-   assign bht_wr_en2[1:0] = {2{dec_tlu_br0_v_wb}} & {dec_tlu_br0_middle_wb, ~dec_tlu_br0_middle_wb} ;
-
-   // Experiments show this is the best priority scheme for same bank/index writes at the same time.
-   assign bht_wr_data0[1:0] = exu_mp_hist[1:0]; // lowest priority
-   assign bht_wr_data2[1:0] = dec_tlu_br0_hist_wb[1:0]; // highest priority
-
-
-
-   logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] bht_rd_addr_f, bht_rd_addr_p1_f, bht_wr_addr0, bht_wr_addr2;
-
-   logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] mp_hashed, br0_hashed_wb, bht_rd_addr_hashed_f, bht_rd_addr_hashed_p1_f;
-   eb1_btb_ghr_hash #(.pt(pt)) mpghrhs  (.hashin(exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(exu_mp_eghr[pt.BHT_GHR_SIZE-1:0]), .hash(mp_hashed[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) br0ghrhs (.hashin(dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(exu_i0_br_fghr_wb[pt.BHT_GHR_SIZE-1:0]), .hash(br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) fghrhs (.hashin(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(fghr[pt.BHT_GHR_SIZE-1:0]), .hash(bht_rd_addr_hashed_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) fghrhs_p1 (.hashin(btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(fghr[pt.BHT_GHR_SIZE-1:0]), .hash(bht_rd_addr_hashed_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-
-   assign bht_wr_addr0[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = mp_hashed[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_wr_addr2[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_rd_addr_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = bht_rd_addr_hashed_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_rd_addr_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = bht_rd_addr_hashed_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-
-
-   // ----------------------------------------------------------------------
-   // Structures. Using FLOPS
-   // ----------------------------------------------------------------------
-   // BTB
-   // Entry -> tag[pt.BTB_BTAG_SIZE-1:0], toffset[11:0], pc4, boffset, call, ret, valid
-
-   if(!pt.BTB_FULLYA) begin
-
-      for (j=0 ; j<LRU_SIZE ; j++) begin : BTB_FLOPS
-         // Way 0
-         rvdffe #(17+pt.BTB_BTAG_SIZE) btb_bank0_way0 (.*,
-                    .en(((btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == j) & btb_wr_en_way0)),
-                    .din        (btb_wr_data[BTB_DWIDTH-1:0]),
-                    .dout       (btb_bank0_rd_data_way0_out[j]));
-
-         // Way 1
-         rvdffe #(17+pt.BTB_BTAG_SIZE) btb_bank0_way1 (.*,
-                    .en(((btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == j) & btb_wr_en_way1)),
-                    .din        (btb_wr_data[BTB_DWIDTH-1:0]),
-                    .dout       (btb_bank0_rd_data_way1_out[j]));
-
-      end
-
-
-    always_comb begin : BTB_rd_mux
-        btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0] = '0 ;
-
-        for (int j=0; j< LRU_SIZE; j++) begin
-          if (btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == (pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1)'(j)) begin
-
-           btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way0_out[j];
-           btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way1_out[j];
-
-          end
-        end
-        for (int j=0; j< LRU_SIZE; j++) begin
-          if (btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == (pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1)'(j)) begin
-
-           btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way0_out[j];
-           btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way1_out[j];
-
-          end
-        end
-    end
-end // if (!pt.BTB_FULLYA)
-
-
-
-
-
-      if(pt.BTB_FULLYA) begin : fa
-
-         logic found1, hit0, hit1;
-         logic btb_used_reset, write_used;
-         logic [$clog2(pt.BTB_SIZE)-1:0] btb_fa_wr_addr0, hit0_index, hit1_index;
-
-         logic [pt.BTB_SIZE-1:0]         btb_tag_hit, btb_offset_0, btb_offset_1, btb_used_ns, btb_used,
-                                         wr0_en, btb_upper_hit;
-         logic [pt.BTB_SIZE-1:0][BTB_DWIDTH-1:0] btbdata;
-
-         // Fully Associative tag hash uses bits 31:3. Bits 2:1 are the offset bits used for the 4 tag comp banks
-         // Full tag used to speed up lookup. There is one 31:3 cmp per entry, and 4 2:1 cmps per entry.
-
-         logic [FA_CMP_LOWER-1:1]  ifc_fetch_addr_p1_f;
-
-
-         assign ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1] = ifc_fetch_addr_f[FA_CMP_LOWER-1:1] + 1'b1;
-
-         assign fetch_mp_collision_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == ifc_fetch_addr_f[31:1]) &
-                                      exu_mp_valid & ifc_fetch_req_f & ~exu_mp_pkt.way);
-         assign fetch_mp_collision_p1_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == {ifc_fetch_addr_f[31:FA_CMP_LOWER], ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1]}) &
-                                      exu_mp_valid & ifc_fetch_req_f & ~exu_mp_pkt.way);
-
-      always_comb begin
-         btb_vbank0_rd_data_f = '0;
-         btb_vbank1_rd_data_f = '0;
-         btb_tag_hit = '0;
-         btb_upper_hit = '0;
-         btb_offset_0 = '0;
-         btb_offset_1 = '0;
-
-         found1 = 1'b0;
-         hit0 = 1'b0;
-         hit1 = 1'b0;
-         hit0_index = '0;
-         hit1_index = '0;
-         btb_fa_wr_addr0 = '0;
-
-         for(int i=0; i<pt.BTB_SIZE; i++) begin
-            // Break the cmp into chunks for lower area.
-            // Chunk1: FA 31:6 or 31:5 depending on icache line size
-            // Chunk2: FA 5:1 or 4:1 depending on icache line size
-            btb_upper_hit[i] = (btbdata[i][BTB_DWIDTH_TOP:FA_TAG_END_UPPER] == ifc_fetch_addr_f[31:FA_CMP_LOWER]) & btbdata[i][0] & ~wr0_en[i];
-            btb_offset_0[i] = (btbdata[i][FA_TAG_START_LOWER:FA_TAG_END_LOWER] == ifc_fetch_addr_f[FA_CMP_LOWER-1:1]) & btb_upper_hit[i];
-            btb_offset_1[i] = (btbdata[i][FA_TAG_START_LOWER:FA_TAG_END_LOWER] == ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1]) & btb_upper_hit[i];
-
-            if(~hit0) begin
-               if(btb_offset_0[i]) begin
-                  hit0_index[BTB_FA_INDEX:0] = (BTB_FA_INDEX+1)'(i);
-                  // hit unless we are also writing this entry at the same time
-                  hit0 = 1'b1;
-               end
-            end
-            if(~hit1) begin
-               if(btb_offset_1[i]) begin
-                  hit1_index[BTB_FA_INDEX:0] = (BTB_FA_INDEX+1)'(i);
-                  hit1 = 1'b1;
-               end
-            end
-
-
-            // Mux out the 2 potential branches
-            if(btb_offset_0[i] == 1'b1)
-              btb_vbank0_rd_data_f[BTB_DWIDTH-1:0] = fetch_mp_collision_f ? btb_wr_data : btbdata[i];
-            if(btb_offset_1[i] == 1'b1)
-              btb_vbank1_rd_data_f[BTB_DWIDTH-1:0] = fetch_mp_collision_p1_f ? btb_wr_data : btbdata[i];
-
-            // find the first zero from bit zero in the used vector, this is the write address
-            if(~found1) begin
-               if(~btb_used[i]) begin
-                  btb_fa_wr_addr0[BTB_FA_INDEX:0] = i[BTB_FA_INDEX:0];
-                  found1 = 1'b1;
-               end
-            end
-         end
-      end // always_comb begin
-
-
-   assign vwayhit_f[1:0] = {hit1, hit0} & {eoc_mask, 1'b1};
-
-   // way bit is reused as the predicted bit
-   assign way_raw[1:0] =  vwayhit_f[1:0] | {fetch_mp_collision_p1_f, fetch_mp_collision_f};
-
-   for (j=0 ; j<pt.BTB_SIZE ; j++) begin : BTB_FAFLOPS
-
-      assign wr0_en[j] = ((btb_fa_wr_addr0[BTB_FA_INDEX:0] == j) & (exu_mp_valid_write & ~exu_mp_pkt.way)) |
-                         ((dec_fa_error_index == j) & dec_tlu_error_wb);
-
-      rvdffe #(BTB_DWIDTH) btb_fa (.*, .clk(clk),
-                                   .en  (wr0_en[j]),
-                                   .din (btb_wr_data[BTB_DWIDTH-1:0]),
-                                   .dout(btbdata[j]));
-   end // block: BTB_FAFLOPS
-
-   assign ifu_bp_fa_index_f[1] = hit1 ? hit1_index : '0;
-   assign ifu_bp_fa_index_f[0] = hit0 ? hit0_index : '0;
-
-   assign btb_used_reset = &btb_used[pt.BTB_SIZE-1:0];
-   assign btb_used_ns[pt.BTB_SIZE-1:0] = ({pt.BTB_SIZE{vwayhit_f[1]}} & (32'b1 << hit1_index[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{vwayhit_f[0]}} & (32'b1 << hit0_index[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{exu_mp_valid_write & ~exu_mp_pkt.way & ~dec_tlu_error_wb}} & (32'b1 << btb_fa_wr_addr0[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{btb_used_reset}} & {pt.BTB_SIZE{1'b0}}) |
-                                         ({pt.BTB_SIZE{~btb_used_reset & dec_tlu_error_wb}} & (btb_used[pt.BTB_SIZE-1:0] & ~(32'b1 << dec_fa_error_index[BTB_FA_INDEX:0]))) |
-                                         (~{pt.BTB_SIZE{btb_used_reset | dec_tlu_error_wb}} & btb_used[pt.BTB_SIZE-1:0]);
-
-   assign write_used = btb_used_reset | ifu_bp_hit_taken_f | exu_mp_valid_write | dec_tlu_error_wb;
-
-
-   rvdffe #(pt.BTB_SIZE) btb_usedf (.*, .clk(clk),
-                    .en  (write_used),
-                    .din (btb_used_ns[pt.BTB_SIZE-1:0]),
-                    .dout(btb_used[pt.BTB_SIZE-1:0]));
-
-end // block: fa
-
-
-   //-----------------------------------------------------------------------------
-   // BHT
-   // 2 bit Entry -> direction, strength
-   //
-   //-----------------------------------------------------------------------------
-
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0][NUM_BHT_LOOP-1:0][1:0]      bht_bank_wr_data ;
-   logic [1:0] [pt.BHT_ARRAY_DEPTH-1:0] [1:0]                bht_bank_rd_data_out ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0]                 bht_bank_clken ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0]                 bht_bank_clk   ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0][NUM_BHT_LOOP-1:0]           bht_bank_sel   ;
-
-   for ( i=0; i<2; i++) begin : BANKS
-     for (genvar k=0 ; k < (pt.BHT_ARRAY_DEPTH)/NUM_BHT_LOOP ; k++) begin : BHT_CLK_GROUP
-     assign bht_bank_clken[i][k]  = (bht_wr_en0[i] & ((bht_wr_addr0[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) |  BHT_NO_ADDR_MATCH)) |
-                                    (bht_wr_en2[i] & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) |  BHT_NO_ADDR_MATCH));
-
-     rvclkhdr bht_bank_grp_cgc ( .en(bht_bank_clken[i][k]), .l1clk(bht_bank_clk[i][k]), .* ); // ifndef RV_FPGA_OPTIMIZE
-
-
-     for (j=0 ; j<NUM_BHT_LOOP ; j++) begin : BHT_FLOPS
-       assign   bht_bank_sel[i][k][j]    = (bht_wr_en0[i] & (bht_wr_addr0[NUM_BHT_LOOP_INNER_HI :pt.BHT_ADDR_LO] == j) & ((bht_wr_addr0[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) |
-                                           (bht_wr_en2[i] & (bht_wr_addr2[NUM_BHT_LOOP_INNER_HI :pt.BHT_ADDR_LO] == j) & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) ;
-
-       assign bht_bank_wr_data[i][k][j]  = (bht_wr_en2[i] & (bht_wr_addr2[NUM_BHT_LOOP_INNER_HI:pt.BHT_ADDR_LO] == j) & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) ? bht_wr_data2[1:0] :
-                                                                                                                      bht_wr_data0[1:0]   ;
-
-
-          rvdffs_fpga #(2) bht_bank (.*,
-                    .clk        (bht_bank_clk[i][k]),
-                    .en         (bht_bank_sel[i][k][j]),
-                    .rawclk     (clk),
-                    .clken      (bht_bank_sel[i][k][j]),
-                    .din        (bht_bank_wr_data[i][k][j]),
-                    .dout       (bht_bank_rd_data_out[i][(16*k)+j]));
-
-      end // block: BHT_FLOPS
-   end // block: BHT_CLK_GROUP
- end // block: BANKS
-
-    always_comb begin : BHT_rd_mux
-     bht_bank0_rd_data_f[1:0] = '0 ;
-     bht_bank1_rd_data_f[1:0] = '0 ;
-     bht_bank0_rd_data_p1_f[1:0] = '0 ;
-     for (int j=0; j< pt.BHT_ARRAY_DEPTH; j++) begin
-       if (bht_rd_addr_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] == (pt.BHT_ADDR_HI-pt.BHT_ADDR_LO+1)'(j)) begin
-         bht_bank0_rd_data_f[1:0] = bht_bank_rd_data_out[0][j];
-         bht_bank1_rd_data_f[1:0] = bht_bank_rd_data_out[1][j];
-       end
-       if (bht_rd_addr_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] == (pt.BHT_ADDR_HI-pt.BHT_ADDR_LO+1)'(j)) begin
-         bht_bank0_rd_data_p1_f[1:0] = bht_bank_rd_data_out[0][j];
-       end
-      end
-    end // block: BHT_rd_mux
-
-
-function [1:0] countones;
-      input [1:0] valid;
-
-      begin
-
-countones[1:0] = {2'b0, valid[1]} +
-                 {2'b0, valid[0]};
-      end
-   endfunction
-endmodule // eb1_ifu_bp_ctl
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-// purpose of this file is to convert 16b RISCV compressed instruction into 32b equivalent
-
-module eb1_ifu_compress_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input  logic [15:0] din,        // 16-bit   compressed instruction
-   output logic [31:0] dout        // 32-bit uncompressed instruction
-   );
-
-
-   logic               legal;
-
-   logic [15:0]  i;
-
-   logic [31:0]  o,l1,l2,l3;
-
-
-   assign i[15:0] = din[15:0];
-
-
-   logic [4:0]   rs2d,rdd,rdpd,rs2pd;
-
-   logic rdrd;
-   logic rdrs1;
-   logic rs2rs2;
-   logic rdprd;
-   logic rdprs1;
-   logic rs2prs2;
-   logic rs2prd;
-   logic uimm9_2;
-   logic ulwimm6_2;
-   logic ulwspimm7_2;
-   logic rdeq2;
-   logic rdeq1;
-   logic rs1eq2;
-   logic sbroffset8_1;
-   logic simm9_4;
-   logic simm5_0;
-   logic sjaloffset11_1;
-   logic sluimm17_12;
-   logic uimm5_0;
-   logic uswimm6_2;
-   logic uswspimm7_2;
-
-
-
-   // form the opcodes
-
-   // formats
-   //
-   // c.add rd 11:7 rs2  6:2
-   // c.and rdp 9:7 rs2p 4:2
-   //
-   // add rs2 24:20 rs1 19:15  rd 11:7
-
-   assign rs2d[4:0] = i[6:2];
-
-   assign rdd[4:0] = i[11:7];
-
-   assign rdpd[4:0] = {2'b01, i[9:7]};
-
-   assign rs2pd[4:0] = {2'b01, i[4:2]};
-
-
-
-   // merge in rd, rs1, rs2
-
-
-   // rd
-   assign l1[6:0] = o[6:0];
-
-   assign l1[11:7] = o[11:7] |
-                     ({5{rdrd}} & rdd[4:0]) |
-                     ({5{rdprd}} & rdpd[4:0]) |
-                     ({5{rs2prd}} & rs2pd[4:0]) |
-                     ({5{rdeq1}} & 5'd1) |
-                     ({5{rdeq2}} & 5'd2);
-
-
-   // rs1
-   assign l1[14:12] = o[14:12];
-   assign l1[19:15] = o[19:15] |
-                      ({5{rdrs1}} & rdd[4:0]) |
-                      ({5{rdprs1}} & rdpd[4:0]) |
-                      ({5{rs1eq2}} & 5'd2);
-
-
-   // rs2
-   assign l1[24:20] = o[24:20] |
-                      ({5{rs2rs2}} & rs2d[4:0]) |
-                      ({5{rs2prs2}} & rs2pd[4:0]);
-
-   assign l1[31:25] = o[31:25];
-
-   logic [5:0] simm5d;
-   logic [9:2] uimm9d;
-
-   logic [9:4] simm9d;
-   logic [6:2] ulwimm6d;
-   logic [7:2] ulwspimm7d;
-   logic [5:0] uimm5d;
-   logic [20:1] sjald;
-
-   logic [31:12] sluimmd;
-
-   // merge in immediates + jal offset
-
-   assign simm5d[5:0] = { i[12], i[6:2] };
-
-   assign uimm9d[9:2] = { i[10:7], i[12:11], i[5], i[6] };
-
-   assign simm9d[9:4] = { i[12], i[4:3], i[5], i[2], i[6] };
-
-   assign ulwimm6d[6:2] = { i[5], i[12:10], i[6] };
-
-   assign ulwspimm7d[7:2] = { i[3:2], i[12], i[6:4] };
-
-   assign uimm5d[5:0] = { i[12], i[6:2] };
-
-   assign sjald[11:1] = { i[12], i[8], i[10:9], i[6], i[7], i[2], i[11], i[5:4], i[3] };
-
-   assign sjald[20:12] =  {9{i[12]}};
-
-
-
-   assign sluimmd[31:12] = { {15{i[12]}}, i[6:2] };
-
-
-   assign l2[31:20] = ( l1[31:20] ) |
-                      ( {12{simm5_0}}   &  {{7{simm5d[5]}},simm5d[4:0]} ) |
-                      ( {12{uimm9_2}}   &  {2'b0,uimm9d[9:2],2'b0} ) |
-                      ( {12{simm9_4}}   &   {{3{simm9d[9]}},simm9d[8:4],4'b0} ) |
-                      ( {12{ulwimm6_2}} &   {5'b0,ulwimm6d[6:2],2'b0} ) |
-                      ( {12{ulwspimm7_2}}  & {4'b0,ulwspimm7d[7:2],2'b0} ) |
-                      ( {12{uimm5_0}}      &    {6'b0,uimm5d[5:0]} ) |
-                      ( {12{sjaloffset11_1}} &  {sjald[20],sjald[10:1],sjald[11]} ) |
-                      ( {12{sluimm17_12}}    &  sluimmd[31:20] );
-
-
-
-   assign l2[19:12] = ( l1[19:12] ) |
-                      ( {8{sjaloffset11_1}} & sjald[19:12] ) |
-                      ( {8{sluimm17_12}} & sluimmd[19:12] );
-
-
-   assign l2[11:0] = l1[11:0];
-
-
-   // merge in branch offset and store immediates
-
-   logic [8:1]   sbr8d;
-   logic [6:2]   uswimm6d;
-   logic [7:2]   uswspimm7d;
-
-
-   assign sbr8d[8:1] =   { i[12], i[6], i[5], i[2], i[11], i[10], i[4], i[3] };
-
-   assign uswimm6d[6:2] = { i[5], i[12:10], i[6] };
-
-   assign uswspimm7d[7:2] = { i[8:7], i[12:9] };
-
-   assign l3[31:25] = ( l2[31:25] ) |
-                      ( {7{sbroffset8_1}} & { {4{sbr8d[8]}},sbr8d[7:5] } ) |
-                      ( {7{uswimm6_2}}    & { 5'b0, uswimm6d[6:5] } ) |
-                      ( {7{uswspimm7_2}} & { 4'b0, uswspimm7d[7:5] } );
-
-
-   assign l3[24:12] = l2[24:12];
-
-   assign l3[11:7] = ( l2[11:7] ) |
-                     ( {5{sbroffset8_1}} & { sbr8d[4:1], sbr8d[8] } ) |
-                     ( {5{uswimm6_2}} & { uswimm6d[4:2], 2'b0 } ) |
-                     ( {5{uswspimm7_2}} & { uswspimm7d[4:2], 2'b0 } );
-
-   assign l3[6:0] = l2[6:0];
-
-
-   assign dout[31:0] = l3[31:0] & {32{legal}};
-
-
-// file "cdecode" is human readable file that has all of the compressed instruction decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "cdecode" except legal equation:
-
-// 1) coredecode -in cdecode > cdecode.e
-
-// 2) espresso -Dso -oeqntott cdecode.e | addassign > compress_equations
-
-// to generate the legal (16b compressed instruction is legal)  equation below:
-
-// 1) coredecode -in cdecode -legal > clegal.e
-
-// 2) espresso -Dso -oeqntott clegal.e | addassign > clegal_equation
-
-
-
-
-
-// espresso decodes
-assign rdrd = (!i[14]&i[6]&i[1]) | (!i[15]&i[14]&i[11]&i[0]) | (!i[14]&i[5]&i[1]) | (
-    !i[15]&i[14]&i[10]&i[0]) | (!i[14]&i[4]&i[1]) | (!i[15]&i[14]&i[9]
-    &i[0]) | (!i[14]&i[3]&i[1]) | (!i[15]&i[14]&!i[8]&i[0]) | (!i[14]
-    &i[2]&i[1]) | (!i[15]&i[14]&i[7]&i[0]) | (!i[15]&i[1]) | (!i[15]
-    &!i[13]&i[0]);
-
-assign rdrs1 = (!i[14]&i[12]&i[11]&i[1]) | (!i[14]&i[12]&i[10]&i[1]) | (!i[14]
-    &i[12]&i[9]&i[1]) | (!i[14]&i[12]&i[8]&i[1]) | (!i[14]&i[12]&i[7]
-    &i[1]) | (!i[14]&!i[12]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[6]&i[1]) | (!i[14]&i[12]&i[5]&i[1]) | (!i[14]&i[12]&i[4]
-    &i[1]) | (!i[14]&i[12]&i[3]&i[1]) | (!i[14]&i[12]&i[2]&i[1]) | (
-    !i[15]&!i[14]&!i[13]&i[0]) | (!i[15]&!i[14]&i[1]);
-
-assign rs2rs2 = (i[15]&i[6]&i[1]) | (i[15]&i[5]&i[1]) | (i[15]&i[4]&i[1]) | (
-    i[15]&i[3]&i[1]) | (i[15]&i[2]&i[1]) | (i[15]&i[14]&i[1]);
-
-assign rdprd = (i[15]&!i[14]&!i[13]&i[0]);
-
-assign rdprs1 = (i[15]&!i[13]&i[0]) | (i[15]&i[14]&i[0]) | (i[14]&!i[1]&!i[0]);
-
-assign rs2prs2 = (i[15]&!i[14]&!i[13]&i[11]&i[10]&i[0]) | (i[15]&!i[1]&!i[0]);
-
-assign rs2prd = (!i[15]&!i[1]&!i[0]);
-
-assign uimm9_2 = (!i[14]&!i[1]&!i[0]);
-
-assign ulwimm6_2 = (!i[15]&i[14]&!i[1]&!i[0]);
-
-assign ulwspimm7_2 = (!i[15]&i[14]&i[1]);
-
-assign rdeq2 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]);
-
-assign rdeq1 = (!i[14]&i[12]&i[11]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[10]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[9]
-    &!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[8]&!i[6]&!i[5]
-    &!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[7]&!i[6]&!i[5]&!i[4]&!i[3]
-    &!i[2]&i[1]) | (!i[15]&!i[14]&i[13]);
-
-assign rs1eq2 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]) | (i[14]
-    &i[1]) | (!i[14]&!i[1]&!i[0]);
-
-assign sbroffset8_1 = (i[15]&i[14]&i[0]);
-
-assign simm9_4 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]);
-
-assign simm5_0 = (!i[14]&!i[13]&i[11]&!i[10]&i[0]) | (!i[15]&!i[13]&i[0]);
-
-assign sjaloffset11_1 = (!i[14]&i[13]);
-
-assign sluimm17_12 = (!i[15]&i[14]&i[13]&i[7]) | (!i[15]&i[14]&i[13]&!i[8]) | (
-    !i[15]&i[14]&i[13]&i[9]) | (!i[15]&i[14]&i[13]&i[10]) | (!i[15]&i[14]
-    &i[13]&i[11]);
-
-assign uimm5_0 = (i[15]&!i[14]&!i[13]&!i[11]&i[0]) | (!i[15]&!i[14]&i[1]);
-
-assign uswimm6_2 = (i[15]&!i[1]&!i[0]);
-
-assign uswspimm7_2 = (i[15]&i[14]&i[1]);
-
-assign o[31]  = 1'b0;
-
-assign o[30] = (i[15]&!i[14]&!i[13]&i[10]&!i[6]&!i[5]&i[0]) | (i[15]&!i[14]
-    &!i[13]&!i[11]&i[10]&i[0]);
-
-assign o[29]  = 1'b0;
-
-assign o[28]  = 1'b0;
-
-assign o[27]  = 1'b0;
-
-assign o[26]  = 1'b0;
-
-assign o[25]  = 1'b0;
-
-assign o[24]  = 1'b0;
-
-assign o[23]  = 1'b0;
-
-assign o[22]  = 1'b0;
-
-assign o[21]  = 1'b0;
-
-assign o[20] = (!i[14]&i[12]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]
-    &!i[3]&!i[2]&i[1]);
-
-assign o[19]  = 1'b0;
-
-assign o[18]  = 1'b0;
-
-assign o[17]  = 1'b0;
-
-assign o[16]  = 1'b0;
-
-assign o[15]  = 1'b0;
-
-assign o[14] = (i[15]&!i[14]&!i[13]&!i[11]&i[0]) | (i[15]&!i[14]&!i[13]&!i[10]
-    &i[0]) | (i[15]&!i[14]&!i[13]&i[6]&i[0]) | (i[15]&!i[14]&!i[13]&i[5]
-    &i[0]);
-
-assign o[13] = (i[15]&!i[14]&!i[13]&i[11]&!i[10]&i[0]) | (i[15]&!i[14]&!i[13]
-    &i[11]&i[6]&i[0]) | (i[14]&!i[0]);
-
-assign o[12] = (i[15]&!i[14]&!i[13]&i[6]&i[5]&i[0]) | (i[15]&!i[14]&!i[13]&!i[11]
-    &i[0]) | (i[15]&!i[14]&!i[13]&!i[10]&i[0]) | (!i[15]&!i[14]&i[1]) | (
-    i[15]&i[14]&i[13]);
-
-assign o[11]  = 1'b0;
-
-assign o[10]  = 1'b0;
-
-assign o[9]  = 1'b0;
-
-assign o[8]  = 1'b0;
-
-assign o[7]  = 1'b0;
-
-assign o[6] = (i[15]&!i[14]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&!i[0]) | (!i[14]&i[13]) | (
-    i[15]&i[14]&i[0]);
-
-assign o[5] = (i[15]&!i[0]) | (i[15]&i[11]&i[10]) | (i[13]&!i[8]) | (i[13]&i[7]) | (
-    i[13]&i[9]) | (i[13]&i[10]) | (i[13]&i[11]) | (!i[14]&i[13]) | (
-    i[15]&i[14]);
-
-assign o[4] = (!i[14]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[0]) | (!i[15]&!i[14]
-    &!i[0]) | (!i[14]&i[6]&!i[0]) | (!i[15]&i[14]&i[0]) | (!i[14]&i[5]
-    &!i[0]) | (!i[14]&i[4]&!i[0]) | (!i[14]&!i[13]&i[0]) | (!i[14]&i[3]
-    &!i[0]) | (!i[14]&i[2]&!i[0]);
-
-assign o[3] = (!i[14]&i[13]);
-
-assign o[2] = (!i[14]&i[12]&i[11]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[10]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[9]
-    &!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[8]&!i[6]&!i[5]
-    &!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[7]&!i[6]&!i[5]&!i[4]&!i[3]
-    &!i[2]&i[1]) | (i[15]&!i[14]&!i[12]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]
-    &!i[0]) | (!i[15]&i[13]&!i[8]) | (!i[15]&i[13]&i[7]) | (!i[15]&i[13]
-    &i[9]) | (!i[15]&i[13]&i[10]) | (!i[15]&i[13]&i[11]) | (!i[14]&i[13]);
-
-// 32b instruction has lower two bits 2'b11
-
-assign o[1]  = 1'b1;
-
-assign o[0]  = 1'b1;
-
-assign legal = (!i[13]&!i[12]&i[11]&i[1]&!i[0]) | (!i[13]&!i[12]&i[6]&i[1]&!i[0]) | (
-    !i[15]&!i[13]&i[11]&!i[1]) | (!i[13]&!i[12]&i[5]&i[1]&!i[0]) | (
-    !i[13]&!i[12]&i[10]&i[1]&!i[0]) | (!i[15]&!i[13]&i[6]&!i[1]) | (
-    i[15]&!i[12]&!i[1]&i[0]) | (!i[13]&!i[12]&i[9]&i[1]&!i[0]) | (!i[12]
-    &i[6]&!i[1]&i[0]) | (!i[15]&!i[13]&i[5]&!i[1]) | (!i[13]&!i[12]&i[8]
-    &i[1]&!i[0]) | (!i[12]&i[5]&!i[1]&i[0]) | (!i[15]&!i[13]&i[10]&!i[1]) | (
-    !i[13]&!i[12]&i[7]&i[1]&!i[0]) | (i[12]&i[11]&!i[10]&!i[1]&i[0]) | (
-    !i[15]&!i[13]&i[9]&!i[1]) | (!i[13]&!i[12]&i[4]&i[1]&!i[0]) | (i[13]
-    &i[12]&!i[1]&i[0]) | (!i[15]&!i[13]&i[8]&!i[1]) | (!i[13]&!i[12]&i[3]
-    &i[1]&!i[0]) | (i[13]&i[4]&!i[1]&i[0]) | (!i[13]&!i[12]&i[2]&i[1]
-    &!i[0]) | (!i[15]&!i[13]&i[7]&!i[1]) | (i[13]&i[3]&!i[1]&i[0]) | (
-    i[13]&i[2]&!i[1]&i[0]) | (i[14]&!i[13]&!i[1]) | (!i[14]&!i[12]&!i[1]
-    &i[0]) | (i[15]&!i[13]&i[12]&i[1]&!i[0]) | (!i[15]&!i[13]&!i[12]&i[1]
-    &!i[0]) | (!i[15]&!i[13]&i[12]&!i[1]) | (i[14]&!i[13]&!i[0]);
-
-
-
-
-endmodule
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Icache closely coupled memory --- ICCM
-//********************************************************************************
-
-module eb1_ifu_iccm_mem
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
- `ifdef USE_POWER_PINS
-   input logic 					vccd1,
-   input logic						vssd1,
- `endif
-   input logic                                        clk,                                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                                        active_clk,                          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                                        rst_l,                               // reset, active low
-   input logic                                        clk_override,                        // Override non-functional clock gating
-
-   input logic                                        iccm_wren,                           // ICCM write enable
-   input logic                                        iccm_rden,                           // ICCM read enable
-   input logic [pt.ICCM_BITS-1:1]                     iccm_rw_addr,                        // ICCM read/write address
-   input logic                                        iccm_buf_correct_ecc,                // ICCM is doing a single bit error correct cycle
-   input logic                                        iccm_correction_state,               // ICCM under a correction - This is needed to guard replacements when hit
-   input logic [2:0]                                  iccm_wr_size,                        // ICCM write size
-   input logic [77:0]                                 iccm_wr_data,                        // ICCM write data
-
-   input eb1_ccm_ext_in_pkt_t [pt.ICCM_NUM_BANKS-1:0] iccm_ext_in_pkt,                    // External packet
-
-   output logic [63:0]                                iccm_rd_data,                        // ICCM read data
-   output logic [77:0]                                iccm_rd_data_ecc,                    // ICCM read ecc
-   input  logic                                       scan_mode                            // Scan mode control
-
-);
-
-
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                wren_bank;
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                rden_bank;
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                iccm_clken;
-   logic [pt.ICCM_NUM_BANKS-1:0] [pt.ICCM_BITS-1:pt.ICCM_BANK_INDEX_LO] addr_bank;
-
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_dout, iccm_bank_dout_fn;
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_wr_data;
-   logic [pt.ICCM_BITS-1:1]              addr_bank_inc;
-   logic [pt.ICCM_BANK_HI : 2]           iccm_rd_addr_hi_q;
-   logic [pt.ICCM_BANK_HI : 1]           iccm_rd_addr_lo_q;
-   logic             [63:0]              iccm_rd_data_pre;
-   logic             [63:0]              iccm_data;
-   logic [1:0]                           addr_incr;
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_wr_data_vec;
-
-   // logic to handle hard persisten faults
-   logic [1:0] [pt.ICCM_BITS-1:2]        redundant_address;
-   logic [1:0] [38:0]                    redundant_data;
-   logic [1:0]                           redundant_valid;
-   logic [pt.ICCM_NUM_BANKS-1:0]         sel_red1, sel_red0, sel_red1_q, sel_red0_q;
-
-
-   logic [38:0]                          redundant_data0_in, redundant_data1_in;
-   logic                                 redundant_lru, redundant_lru_in, redundant_lru_en;
-   logic                                 redundant_data0_en;
-   logic                                 redundant_data1_en;
-   logic                                 r0_addr_en, r1_addr_en;
-
-   // Testing persistent flip
-   //   logic [3:0]                              not_iccm_bank_dout;
-   //   logic [15:3]                     ecc_insert_flip_in, ecc_insert_flip;
-   //   logic                                 flip_en, flip_match, flip_match_q;
-   //
-   //   assign      flip_in = (iccm_rw_addr[3:2] != 2'b00);    // dont flip when bank0 - this is to make some progress in DMA streaming cases
-   //   assign      flip_en = iccm_rden;
-   //
-   //   rvdffs #(1) flipmatch  (.*,
-   //                   .clk(clk),
-   //                   .din(flip_in),
-   //                   .en(flip_en),
-   //                   .dout(flip_match_q));
-   //
-   // end of testing flip
-
-
-   assign addr_incr[1:0]                    = (iccm_wr_size[1:0] == 2'b11) ?  2'b10: 2'b01;
-   assign addr_bank_inc[pt.ICCM_BITS-1 : 1] = iccm_rw_addr[pt.ICCM_BITS-1 : 1] + addr_incr[1:0];
-
-   for (genvar i=0; i<pt.ICCM_NUM_BANKS/2; i++) begin: mem_bank_data
-      assign iccm_bank_wr_data_vec[(2*i)]   = iccm_wr_data[38:0];
-      assign iccm_bank_wr_data_vec[(2*i)+1] = iccm_wr_data[77:39];
-   end
-
-   for (genvar i=0; i<pt.ICCM_NUM_BANKS; i++) begin: mem_bank
-      assign wren_bank[i]         = iccm_wren & ((iccm_rw_addr[pt.ICCM_BANK_HI:2] == i) | (addr_bank_inc[pt.ICCM_BANK_HI:2] == i));
-      assign iccm_bank_wr_data[i] = iccm_bank_wr_data_vec[i];
-      assign rden_bank[i]         = iccm_rden & ( (iccm_rw_addr[pt.ICCM_BANK_HI:2] == i) | (addr_bank_inc[pt.ICCM_BANK_HI:2] == i));
-      assign iccm_clken[i]        =  wren_bank[i] | rden_bank[i] | clk_override;
-      assign addr_bank[i][pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] = wren_bank[i] ? iccm_rw_addr[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] :
-                                                                                      ((addr_bank_inc[pt.ICCM_BANK_HI:2] == i) ?
-                                                                                                    addr_bank_inc[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] :
-                                                                                                    iccm_rw_addr[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO]);
-
-
-     if (pt.ICCM_INDEX_BITS == 6 ) begin : iccm
-               ram_64x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-
-   else if (pt.ICCM_INDEX_BITS == 7 ) begin : iccm
-               ram_128x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-
-     else if (pt.ICCM_INDEX_BITS == 8 ) begin : iccm
-               /*ram_256x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );*/
-                                      sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~iccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(iccm_bank_wr_data[i][31:0]),
-									.dout0(iccm_bank_dout[i][31:0]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-  					);
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 9 ) begin : iccm
-               ram_512x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 10 ) begin : iccm
-              /* ram_1024x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-                                     );*/
-                                     
-                                     sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~iccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(iccm_bank_wr_data[i]),
-									.dout0(iccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-  					);
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 11 ) begin : iccm
-               ram_2048x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 12 ) begin : iccm
-               ram_4096x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 13 ) begin : iccm
-               ram_8192x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 14 ) begin : iccm
-               ram_16384x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else begin : iccm
-               ram_32768x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-
-
-   // match the redundant rows
-   assign sel_red1[i]  = (redundant_valid[1]  & (((iccm_rw_addr[pt.ICCM_BITS-1:2] == redundant_address[1][pt.ICCM_BITS-1:2]) & (iccm_rw_addr[3:2] == i)) |
-                                                 ((addr_bank_inc[pt.ICCM_BITS-1:2]== redundant_address[1][pt.ICCM_BITS-1:2]) & (addr_bank_inc[3:2] == i))));
-
-   assign sel_red0[i]  = (redundant_valid[0]  & (((iccm_rw_addr[pt.ICCM_BITS-1:2] == redundant_address[0][pt.ICCM_BITS-1:2]) & (iccm_rw_addr[3:2] == i)) |
-                                                 ((addr_bank_inc[pt.ICCM_BITS-1:2]== redundant_address[0][pt.ICCM_BITS-1:2]) & (addr_bank_inc[3:2] == i))));
-
-   rvdff #(1) selred0  (.*,
-                   .clk(active_clk),
-                   .din(sel_red0[i]),
-                   .dout(sel_red0_q[i]));
-
-   rvdff #(1) selred1  (.*,
-                   .clk(active_clk),
-                   .din(sel_red1[i]),
-                   .dout(sel_red1_q[i]));
-
-
-  // muxing out the memory data with the redundant data if the address matches
-   assign iccm_bank_dout_fn[i][38:0] = ({39{sel_red1_q[i]}}                         & redundant_data[1][38:0]) |
-                                       ({39{sel_red0_q[i]}}                         & redundant_data[0][38:0]) |
-                                       ({39{~sel_red0_q[i] & ~sel_red1_q[i]}}       & iccm_bank_dout[i][38:0]);
-
-  end : mem_bank
-// This section does the redundancy for tolerating single bit errors
-// 2x 39 bit data values with address[hi:2] and a valid bit is needed to CAM and sub out the reads/writes to the particular locations
-// Also a LRU flop is kept to decide which of the redundant element to replace.
-   assign r0_addr_en              = ~redundant_lru & iccm_buf_correct_ecc;
-   assign r1_addr_en              = redundant_lru  & iccm_buf_correct_ecc;
-   assign redundant_lru_en         = iccm_buf_correct_ecc | (((|sel_red0[pt.ICCM_NUM_BANKS-1:0]) | (|sel_red1[pt.ICCM_NUM_BANKS-1:0])) & iccm_rden & iccm_correction_state);
-   assign redundant_lru_in        = iccm_buf_correct_ecc ? ~redundant_lru : (|sel_red0[pt.ICCM_NUM_BANKS-1:0]) ? 1'b1 : 1'b0;
-
-   rvdffs #() red_lru  (.*,                               // LRU flop for the redundant replacements
-                   .clk(active_clk),
-                   .en(redundant_lru_en),
-                   .din(redundant_lru_in),
-                   .dout(redundant_lru));
-
-    rvdffs #(pt.ICCM_BITS-2) r0_address  (.*,                 // Redundant Row 0 address
-                   .clk(active_clk),
-                   .en(r0_addr_en),
-                   .din(iccm_rw_addr[pt.ICCM_BITS-1:2]),
-                   .dout(redundant_address[0][pt.ICCM_BITS-1:2]));
-
-   rvdffs #(pt.ICCM_BITS-2) r1_address  (.*,                   // Redundant Row 0 address
-                   .clk(active_clk),
-                   .en(r1_addr_en),
-                   .din(iccm_rw_addr[pt.ICCM_BITS-1:2]),
-                   .dout(redundant_address[1][pt.ICCM_BITS-1:2]));
-
-    rvdffs #(1) r0_valid  (.*,
-                   .clk(active_clk),                                  // Redundant Row 0 Valid
-                   .en(r0_addr_en),
-                   .din(1'b1),
-                   .dout(redundant_valid[0]));
-
-   rvdffs #(1) r1_valid  (.*,                                   // Redundant Row 1 Valid
-                   .clk(active_clk),
-                   .en(r1_addr_en),
-                   .din(1'b1),
-                   .dout(redundant_valid[1]));
-
-
-
-   // We will have to update the Redundant copies in addition to the memory on subsequent writes to this memory location.
-   // The data gets updated on : 1) correction cycle, 2) Future writes - this could be W writes from DMA ( match up till addr[2]) or DW writes ( match till address[3])
-   // The data to pick also depends on the current address[2], size and the addr[2] stored in the address field of the redundant flop. Correction cycle is always W write and the data is splat on both legs, so choosing lower Word
-
-    assign redundant_data0_en      = ((iccm_rw_addr[pt.ICCM_BITS-1:3] == redundant_address[0][pt.ICCM_BITS-1:3]) & ((iccm_rw_addr[2] == redundant_address[0][2]) | (iccm_wr_size[1:0] == 2'b11)) & redundant_valid[0] & iccm_wren) |
-                                      (~redundant_lru & iccm_buf_correct_ecc);
-
-    assign redundant_data0_in[38:0] = (((iccm_rw_addr[2] == redundant_address[0][2]) & iccm_rw_addr[2]) | (redundant_address[0][2] & (iccm_wr_size[1:0] == 2'b11))) ? iccm_wr_data[77:39]  : iccm_wr_data[38:0];
-
-    rvdffs #(39) r0_data  (.*,                                 // Redundant Row 1 data
-                   .clk(active_clk),
-                   .en(redundant_data0_en),
-                   .din(redundant_data0_in[38:0]),
-                   .dout(redundant_data[0][38:0]));
-
-   assign redundant_data1_en      =  ((iccm_rw_addr[pt.ICCM_BITS-1:3] == redundant_address[1][pt.ICCM_BITS-1:3]) & ((iccm_rw_addr[2] == redundant_address[1][2]) | (iccm_wr_size[1:0] == 2'b11)) & redundant_valid[1] & iccm_wren) |
-                                     (redundant_lru & iccm_buf_correct_ecc);
-
-   assign redundant_data1_in[38:0] = (((iccm_rw_addr[2] == redundant_address[1][2]) & iccm_rw_addr[2]) | (redundant_address[1][2] & (iccm_wr_size[1:0] == 2'b11))) ? iccm_wr_data[77:39]  : iccm_wr_data[38:0];
-
-    rvdffs #(39) r1_data  (.*,                                  // Redundant Row 1 data
-                   .clk(active_clk),
-                   .en(redundant_data1_en),
-                   .din(redundant_data1_in[38:0]),
-                   .dout(redundant_data[1][38:0]));
-
-
-   rvdffs  #(pt.ICCM_BANK_HI)   rd_addr_lo_ff (.*, .clk(active_clk), .din(iccm_rw_addr [pt.ICCM_BANK_HI:1]), .dout(iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:1]), .en(1'b1));   // bit 0 of address is always 0
-   rvdffs  #(pt.ICCM_BANK_BITS) rd_addr_hi_ff (.*, .clk(active_clk), .din(addr_bank_inc[pt.ICCM_BANK_HI:2]), .dout(iccm_rd_addr_hi_q[pt.ICCM_BANK_HI:2]), .en(1'b1));
-
-   assign iccm_rd_data_pre[63:0] = {iccm_bank_dout_fn[iccm_rd_addr_hi_q][31:0], iccm_bank_dout_fn[iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:2]][31:0]};
-   assign iccm_data[63:0]        = 64'({16'b0, (iccm_rd_data_pre[63:0] >> (16*iccm_rd_addr_lo_q[1]))});
-   assign iccm_rd_data[63:0]     = {iccm_data[63:0]};
-   assign iccm_rd_data_ecc[77:0] = {iccm_bank_dout_fn[iccm_rd_addr_hi_q][38:0], iccm_bank_dout_fn[iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:2]][38:0]};
-
-endmodule // eb1_ifu_iccm_mem
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// eb1_ifu_ifc_ctl.sv
-// Function: Fetch pipe control
-//
-// Comments:
-//********************************************************************************
-
-module eb1_ifu_ifc_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic clk,                         // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic free_l2clk,                  // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic rst_l, // reset enable, from core pin
-   input logic scan_mode, // scan
-
-   input logic ic_hit_f,      // Icache hit
-   input logic ifu_ic_mb_empty, // Miss buffer empty
-
-   input logic ifu_fb_consume1,  // Aligner consumed 1 fetch buffer
-   input logic ifu_fb_consume2,  // Aligner consumed 2 fetch buffers
-
-   input logic dec_tlu_flush_noredir_wb, // Don't fetch on flush
-   input logic exu_flush_final, // FLush
-   input logic [31:1] exu_flush_path_final, // Flush path
-
-   input logic ifu_bp_hit_taken_f, // btb hit, select the target path
-   input logic [31:1] ifu_bp_btb_target_f, //  predicted target PC
-
-   input logic ic_dma_active, // IC DMA active, stop fetching
-   input logic ic_write_stall, // IC is writing, stop fetching
-   input logic dma_iccm_stall_any, // force a stall in the fetch pipe for DMA ICCM access
-
-   input logic [31:0]  dec_tlu_mrac_ff ,   // side_effect and cacheable for each region
-
-   output logic [31:1] ifc_fetch_addr_f, // fetch addr F
-   output logic [31:1] ifc_fetch_addr_bf, // fetch addr BF
-
-   output logic  ifc_fetch_req_f,  // fetch request valid F
-
-   output logic  ifu_pmu_fetch_stall, // pmu event measuring fetch stall
-
-   output logic                       ifc_fetch_uncacheable_bf,      // The fetch request is uncacheable space. BF stage
-   output logic                      ifc_fetch_req_bf,              // Fetch request. Comes with the address.  BF stage
-   output logic                       ifc_fetch_req_bf_raw,          // Fetch request without some qualifications. Used for clock-gating. BF stage
-   output logic                       ifc_iccm_access_bf,            // This request is to the ICCM. Do not generate misses to the bus.
-   output logic                       ifc_region_acc_fault_bf,       // Access fault. in ICCM region but offset is outside defined ICCM.
-
-   output logic  ifc_dma_access_ok // fetch is not accessing the ICCM, DMA can proceed
-
-   
-
-   );
-
-   logic [31:1]  fetch_addr_bf;
-   logic [31:1]  fetch_addr_next;
-   logic [3:0]   fb_write_f, fb_write_ns;
-
-   logic     fb_full_f_ns, fb_full_f;
-   logic     fb_right, fb_right2, fb_left, wfm, idle;
-   logic     sel_last_addr_bf, sel_next_addr_bf;
-   logic     miss_f, miss_a;
-   logic     flush_fb, dma_iccm_stall_any_f;
-   logic     mb_empty_mod, goto_idle, leave_idle;
-   logic     fetch_bf_en;
-   logic         line_wrap;
-   logic         fetch_addr_next_1;
-
-   // FSM assignment
-    typedef enum logic [1:0] { IDLE  = 2'b00 ,
-                               FETCH = 2'b01 ,
-                               STALL = 2'b10 ,
-                               WFM   = 2'b11   } state_t ;
-   state_t state      ;
-   state_t next_state ;
-
-   logic     dma_stall;
-   assign dma_stall = ic_dma_active | dma_iccm_stall_any_f;
-
-
-
-   // Fetch address mux
-   // - flush
-   // - Miss *or* flush during WFM (icache miss buffer is blocking)
-   // - Sequential
-
-if(pt.BTB_ENABLE==1) begin
-   logic sel_btb_addr_bf;
-
-   assign sel_last_addr_bf = ~exu_flush_final & (~ifc_fetch_req_f | ~ic_hit_f);
-   assign sel_btb_addr_bf  = ~exu_flush_final & ifc_fetch_req_f & ifu_bp_hit_taken_f & ic_hit_f;
-   assign sel_next_addr_bf = ~exu_flush_final & ifc_fetch_req_f & ~ifu_bp_hit_taken_f & ic_hit_f;
-
-
-   assign fetch_addr_bf[31:1] = ( ({31{exu_flush_final}} &  exu_flush_path_final[31:1]) | // FLUSH path
-                  ({31{sel_last_addr_bf}} & ifc_fetch_addr_f[31:1]) | // MISS path
-                  ({31{sel_btb_addr_bf}} & {ifu_bp_btb_target_f[31:1]})| // BTB target
-                  ({31{sel_next_addr_bf}} & {fetch_addr_next[31:1]})); // SEQ path
-
-
-end // if (pt.BTB_ENABLE=1)
-   else begin
-   assign sel_last_addr_bf = ~exu_flush_final & (~ifc_fetch_req_f | ~ic_hit_f);
-   assign sel_next_addr_bf = ~exu_flush_final & ifc_fetch_req_f & ic_hit_f;
-
-
-   assign fetch_addr_bf[31:1] = ( ({31{exu_flush_final}} &  exu_flush_path_final[31:1]) | // FLUSH path
-                  ({31{sel_last_addr_bf}} & ifc_fetch_addr_f[31:1]) | // MISS path
-                  ({31{sel_next_addr_bf}} & {fetch_addr_next[31:1]})); // SEQ path
-
-end
-   assign fetch_addr_next[31:1] = {({ifc_fetch_addr_f[31:2]} + 31'b1), fetch_addr_next_1 };
-   assign line_wrap = (fetch_addr_next[pt.ICACHE_TAG_INDEX_LO] ^ ifc_fetch_addr_f[pt.ICACHE_TAG_INDEX_LO]);
-
-   assign fetch_addr_next_1 = line_wrap ? 1'b0 : ifc_fetch_addr_f[1];
-
-   assign ifc_fetch_req_bf_raw = ~idle;
-   assign ifc_fetch_req_bf =  ifc_fetch_req_bf_raw &
-
-                 ~(fb_full_f_ns & ~(ifu_fb_consume2 | ifu_fb_consume1)) &
-                 ~dma_stall &
-                 ~ic_write_stall &
-                 ~dec_tlu_flush_noredir_wb ;
-
-
-   assign fetch_bf_en = exu_flush_final | ifc_fetch_req_f;
-
-   assign miss_f = ifc_fetch_req_f & ~ic_hit_f & ~exu_flush_final;
-
-   assign mb_empty_mod = (ifu_ic_mb_empty | exu_flush_final) & ~dma_stall & ~miss_f & ~miss_a;
-
-   // Halt flushes and takes us to IDLE
-   assign goto_idle = exu_flush_final & dec_tlu_flush_noredir_wb;
-   // If we're in IDLE, and we get a flush, goto FETCH
-   assign leave_idle = exu_flush_final & ~dec_tlu_flush_noredir_wb & idle;
-
-//.i 7
-//.o 2
-//.ilb state[1] state[0] reset_delayed miss_f mb_empty_mod  goto_idle leave_idle
-//.ob next_state[1] next_state[0]
-//.type fr
-//
-//# fetch 01, stall 10, wfm 11, idle 00
-//-- 1---- 01
-//-- 0--1- 00
-//00 0--00 00
-//00 0--01 01
-//
-//01 01-0- 11
-//01 00-0- 01
-//
-//11 0-10- 01
-//11 0-00- 11
-
-   assign next_state[1] = (~state[1] & state[0] & miss_f & ~goto_idle) |
-              (state[1] & ~mb_empty_mod & ~goto_idle);
-
-   assign next_state[0] = (~goto_idle & leave_idle) | (state[0] & ~goto_idle);
-
-   assign flush_fb = exu_flush_final;
-
-   // model fb write logic to mass balance the fetch buffers
-   assign fb_right = ( ifu_fb_consume1 & ~ifu_fb_consume2 & (~ifc_fetch_req_f | miss_f)) | // Consumed and no new fetch
-              (ifu_fb_consume2 &  ifc_fetch_req_f); // Consumed 2 and new fetch
-
-
-   assign fb_right2 = (ifu_fb_consume2 & (~ifc_fetch_req_f | miss_f)); // Consumed 2 and no new fetch
-
-   assign fb_left = ifc_fetch_req_f & ~(ifu_fb_consume1 | ifu_fb_consume2) & ~miss_f;
-
-// CBH
-   assign fb_write_ns[3:0] = ( ({4{(flush_fb)}} & 4'b0001) |
-                   ({4{~flush_fb & fb_right }} & {1'b0, fb_write_f[3:1]}) |
-                   ({4{~flush_fb & fb_right2}} & {2'b0, fb_write_f[3:2]}) |
-                   ({4{~flush_fb & fb_left  }} & {fb_write_f[2:0], 1'b0}) |
-                   ({4{~flush_fb & ~fb_right & ~fb_right2 & ~fb_left}}  & fb_write_f[3:0]));
-
-
-   assign fb_full_f_ns = fb_write_ns[3];
-
-   assign idle     = state      == IDLE  ;
-   assign wfm      = state      == WFM   ;
-
-   rvdffie #(10) fbwrite_ff (.*, .clk(free_l2clk),
-                          .din( {dma_iccm_stall_any, miss_f, ifc_fetch_req_bf, next_state[1:0], fb_full_f_ns, fb_write_ns[3:0]}),
-                          .dout({dma_iccm_stall_any_f, miss_a, ifc_fetch_req_f, state[1:0], fb_full_f, fb_write_f[3:0]}));
-
-   assign ifu_pmu_fetch_stall = wfm | 
-                (ifc_fetch_req_bf_raw & ( (fb_full_f & ~(ifu_fb_consume2 | ifu_fb_consume1 | exu_flush_final)) |
-                  dma_stall));
-
-
-
-   assign ifc_fetch_addr_bf[31:1] = fetch_addr_bf[31:1];
-
-   rvdffpcie #(31) faddrf1_ff  (.*, .en(fetch_bf_en), .din(fetch_addr_bf[31:1]), .dout(ifc_fetch_addr_f[31:1]));
-
-
- if (pt.ICCM_ENABLE)  begin
-   logic iccm_acc_in_region_bf;
-   logic iccm_acc_in_range_bf;
-   rvrangecheck #( .CCM_SADR    (pt.ICCM_SADR),
-                   .CCM_SIZE    (pt.ICCM_SIZE) ) iccm_rangecheck (
-                                     .addr     ({ifc_fetch_addr_bf[31:1],1'b0}) ,
-                                     .in_range (iccm_acc_in_range_bf) ,
-                                     .in_region(iccm_acc_in_region_bf)
-                                     );
-
-   assign ifc_iccm_access_bf = iccm_acc_in_range_bf ;
-
-  assign ifc_dma_access_ok = ( (~ifc_iccm_access_bf |
-                 (fb_full_f & ~(ifu_fb_consume2 | ifu_fb_consume1)) |
-                 (wfm  & ~ifc_fetch_req_bf) |
-                 idle ) & ~exu_flush_final) |
-                  dma_iccm_stall_any_f;
-
-  assign ifc_region_acc_fault_bf = ~iccm_acc_in_range_bf & iccm_acc_in_region_bf ;
- end
- else  begin
-   assign ifc_iccm_access_bf = 1'b0 ;
-   assign ifc_dma_access_ok  = 1'b0 ;
-   assign ifc_region_acc_fault_bf  = 1'b0 ;
- end
-
-   assign ifc_fetch_uncacheable_bf =  ~dec_tlu_mrac_ff[{ifc_fetch_addr_bf[31:28] , 1'b0 }]  ; // bit 0 of each region description is the cacheable bit
-
-endmodule // eb1_ifu_ifc_ctl
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-
-//********************************************************************************
-// Function: Icache , iccm  control
-// BFF -> F1 -> F2 -> A
-//********************************************************************************
-
-module eb1_ifu_mem_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic clk,                                                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic active_clk,                                          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic free_l2clk,                                          // Clock always.                  Through one clock header.  For flops with    second header built in.
-   input logic rst_l,                                               // reset, active low
-
-   input logic                       exu_flush_final,               // Flush from the pipeline., includes flush lower
-   input logic                       dec_tlu_flush_lower_wb,        // Flush lower from the pipeline.
-   input logic                       dec_tlu_flush_err_wb,          // Flush from the pipeline due to perr.
-   input logic                       dec_tlu_i0_commit_cmt,         // committed i0 instruction
-   input logic                       dec_tlu_force_halt,            // force halt.
-
-   input logic [31:1]                ifc_fetch_addr_bf,             // Fetch Address byte aligned always.      F1 stage.
-   input logic                       ifc_fetch_uncacheable_bf,      // The fetch request is uncacheable space. F1 stage
-   input logic                       ifc_fetch_req_bf,              // Fetch request. Comes with the address.  F1 stage
-   input logic                       ifc_fetch_req_bf_raw,          // Fetch request without some qualifications. Used for clock-gating. F1 stage
-   input logic                       ifc_iccm_access_bf,            // This request is to the ICCM. Do not generate misses to the bus.
-   input logic                       ifc_region_acc_fault_bf,       // Access fault. in ICCM region but offset is outside defined ICCM.
-   input logic                       ifc_dma_access_ok,             // It is OK to give dma access to the ICCM. (ICCM is not busy this cycle).
-   input logic                       dec_tlu_fence_i_wb,            // Fence.i instruction is committing. Clear all Icache valids.
-   input logic                       ifu_bp_hit_taken_f,            // Branch is predicted taken. Kill the fetch next cycle.
-
-   input logic                       ifu_bp_inst_mask_f,            // tell ic which valids to kill because of a taken branch, right justified
-
-   output logic                      ifu_miss_state_idle,           // No icache misses are outstanding.
-   output logic                      ifu_ic_mb_empty,               // Continue with normal fetching. This does not mean that miss is finished.
-   output logic                      ic_dma_active  ,               // In the middle of servicing dma request to ICCM. Do not make any new requests.
-   output logic                      ic_write_stall,                // Stall fetch the cycle we are writing the cache.
-
-/// PMU signals
-   output logic                      ifu_pmu_ic_miss,               // IC miss event
-   output logic                      ifu_pmu_ic_hit,                // IC hit event
-   output logic                      ifu_pmu_bus_error,             // Bus error event
-   output logic                      ifu_pmu_bus_busy,              // Bus busy event
-   output logic                      ifu_pmu_bus_trxn,              // Bus transaction
-
-  //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   output logic                            ifu_axi_bready,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-
-    input  logic                     ifu_bus_clk_en,
-
-
-   input  logic                      dma_iccm_req,      //  dma iccm command (read or write)
-   input  logic [31:0]               dma_mem_addr,      //  dma address
-   input  logic [2:0]                dma_mem_sz,        //  size
-   input  logic                      dma_mem_write,     //  write
-   input  logic [63:0]               dma_mem_wdata,     //  write data
-   input  logic [2:0]                dma_mem_tag,       //  DMA Buffer entry number
-
-   output logic                      iccm_dma_ecc_error,//   Data read from iccm has an ecc error
-   output logic                      iccm_dma_rvalid,   //   Data read from iccm is valid
-   output logic [63:0]               iccm_dma_rdata,    //   dma data read from iccm
-   output logic [2:0]                iccm_dma_rtag,     //   Tag of the DMA req
-   output logic                      iccm_ready,        //   iccm ready to accept new command.
-
-
-//   I$ & ITAG Ports
-   output logic [31:1]               ic_rw_addr,         // Read/Write addresss to the Icache.
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_wr_en,           // Icache write enable, when filling the Icache.
-   output logic                      ic_rd_en,           // Icache read  enable.
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0] [70:0]               ic_wr_data,           // Data to fill to the Icache. With ECC
-   input  logic [63:0]               ic_rd_data ,          // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]               ic_debug_rd_data ,          // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]               ictag_debug_rd_data,  // Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,     // Debug wr cache.
-   output logic [70:0]               ifu_ic_debug_rd_data, // debug data read
-
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    //
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_tag_valid,       // Valid bits when accessing the Icache. One valid bit per way. F2 stage
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_rd_hit,          // Compare hits from Icache tags. Per way.  F2 stage
-   input  logic                      ic_tag_perr,        // Icache Tag parity error
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]  iccm_rw_addr,       // ICCM read/write address.
-   output logic                      iccm_wren,          // ICCM write enable (through the DMA)
-   output logic                      iccm_rden,          // ICCM read enable.
-   output logic [77:0]               iccm_wr_data,       // ICCM write data.
-   output logic [2:0]                iccm_wr_size,       // ICCM write location within DW.
-
-   input  logic [63:0]               iccm_rd_data,       // Data read from ICCM.
-   input  logic [77:0]               iccm_rd_data_ecc,   // Data + ECC read from ICCM.
-   input  logic [1:0]                ifu_fetch_val,
-   // IFU control signals
-   output logic                      ic_hit_f,               // Hit in Icache(if Icache access) or ICCM access( ICCM always has ic_hit_f)
-   output logic [1:0]                ic_access_fault_f,      // Access fault (bus error or ICCM access in region but out of offset range).
-   output logic [1:0]                ic_access_fault_type_f, // Access fault types
-   output logic                      iccm_rd_ecc_single_err, // This fetch has a single ICCM ecc  error.
-   output logic [1:0]                iccm_rd_ecc_double_err, // This fetch has a double ICCM ecc  error.
-   output logic                      ic_error_start,         // This has any I$ errors ( data/tag/ecc/parity )
-
-   output logic                      ifu_async_error_start,  // Or of the sb iccm, and all the icache errors sent to aligner to stop
-   output logic                      iccm_dma_sb_error,      // Single Bit ECC error from a DMA access
-   output logic [1:0]                ic_fetch_val_f,         // valid bytes for fetch. To the Aligner.
-   output logic [31:0]               ic_data_f,              // Data read from Icache or ICCM. To the Aligner.
-   output logic [63:0]               ic_premux_data,         // Premuxed data to be muxed with Icache data
-   output logic                      ic_sel_premux_data,     // Select premux data.
-
-/////  Debug
-   input  eb1_cache_debug_pkt_t     dec_tlu_ic_diag_pkt ,       // Icache/tag debug read/write packet
-   input  logic                      dec_tlu_core_ecc_disable,   // disable the ecc checking and flagging
-   output logic                      ifu_ic_debug_rd_data_valid, // debug data valid.
-   output logic                      iccm_buf_correct_ecc,
-   output logic                      iccm_correction_state,
-
-
-   input  logic         scan_mode
-   );
-
-//  Create different defines for ICACHE and ICCM enable combinations
-
- localparam   NUM_OF_BEATS = 8 ;
-
-
-
-   logic [31:3]    ifu_ic_req_addr_f;
-   logic           uncacheable_miss_in ;
-   logic           uncacheable_miss_ff;
-
-
-
-   logic           bus_ifu_wr_en     ;
-   logic           bus_ifu_wr_en_ff  ;
-   logic           bus_ifu_wr_en_ff_q  ;
-   logic           bus_ifu_wr_en_ff_wo_err  ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     bus_ic_wr_en ;
-
-   logic           reset_tag_valid_for_miss  ;
-
-
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_mb_in;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_rep_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_mb_ff;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_hit_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_new_w_debug;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     tagv_mb_in;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     tagv_mb_ff;
-
-
-   logic           ifu_wr_data_comb_err ;
-   logic           ifu_byp_data_err_new;
-   logic  [1:0]    ifu_byp_data_err_f;
-   logic           ifu_wr_cumulative_err_data;
-   logic           ifu_wr_cumulative_err;
-   logic           ifu_wr_data_comb_err_ff;
-   logic           scnd_miss_index_match ;
-
-
-   logic           ifc_dma_access_q_ok;
-   logic           ifc_iccm_access_f ;
-   logic           ifc_region_acc_fault_f;
-   logic           ifc_region_acc_fault_final_f;
-   logic  [1:0]    ifc_bus_acc_fault_f;
-   logic           ic_act_miss_f;
-   logic           ic_miss_under_miss_f;
-   logic           ic_ignore_2nd_miss_f;
-   logic           ic_act_hit_f;
-   logic           miss_pending;
-   logic [31:1]    imb_in , imb_ff  ;
-   logic [31:pt.ICACHE_BEAT_ADDR_HI+1]    miss_addr_in , miss_addr  ;
-   logic           miss_wrap_f ;
-   logic           flush_final_f;
-   logic           ifc_fetch_req_f;
-   logic           ifc_fetch_req_f_raw;
-   logic           fetch_req_f_qual   ;
-   logic           ifc_fetch_req_qual_bf ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     replace_way_mb_any;
-   logic           last_beat;
-   logic           reset_beat_cnt  ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]     ic_req_addr_bits_hi_3 ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]     ic_wr_addr_bits_hi_3 ;
-   logic [31:1]    ifu_fetch_addr_int_f ;
-   logic [31:1]    ifu_ic_rw_int_addr ;
-   logic           crit_wd_byp_ok_ff ;
-   logic           ic_crit_wd_rdy_new_ff;
-   logic   [79:0]  ic_byp_data_only_pre_new;
-   logic   [79:0]  ic_byp_data_only_new;
-   logic           ic_byp_hit_f ;
-   logic           ic_valid ;
-   logic           ic_valid_ff;
-   logic           reset_all_tags;
-   logic           ic_valid_w_debug;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ifu_tag_wren,ifu_tag_wren_ff;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ic_debug_tag_wr_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ifu_tag_wren_w_debug;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ic_debug_way_ff;
-   logic           ic_debug_rd_en_ff   ;
-   logic           fetch_bf_f_c1_clken ;
-   logic           fetch_bf_f_c1_clk;
-   logic           debug_c1_clken;
-   logic           debug_c1_clk;
-
-   logic           reset_ic_in ;
-   logic           reset_ic_ff ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:1]     vaddr_f ;
-   logic [31:1]    ifu_status_wr_addr;
-   logic           sel_mb_addr ;
-   logic           sel_mb_addr_ff ;
-   logic           sel_mb_status_addr ;
-   logic [63:0]    ic_final_data;
-
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_ic_rw_int_addr_ff ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_status_wr_addr_ff ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_ic_rw_int_addr_w_debug ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_status_wr_addr_w_debug ;
-
-   logic [pt.ICACHE_STATUS_BITS-1:0]                              way_status_new_ff ;
-   logic                                    way_status_wr_en_ff ;
-   logic [pt.ICACHE_TAG_DEPTH-1:0][pt.ICACHE_STATUS_BITS-1:0]        way_status_out ;
-   logic [1:0]                              ic_debug_way_enc;
-
-   logic [pt.IFU_BUS_TAG-1:0]             ifu_bus_rid_ff;
-
-   logic         fetch_req_icache_f;
-   logic         fetch_req_iccm_f;
-   logic         ic_iccm_hit_f;
-   logic         fetch_uncacheable_ff;
-   logic         way_status_wr_en;
-   logic         sel_byp_data;
-   logic         sel_ic_data;
-   logic         sel_iccm_data;
-   logic         ic_rd_parity_final_err;
-   logic         ic_act_miss_f_delayed;
-   logic         bus_ifu_wr_data_error;
-   logic         bus_ifu_wr_data_error_ff;
-   logic         way_status_wr_en_w_debug;
-   logic         ic_debug_tag_val_rd_out;
-   logic         ifu_pmu_ic_miss_in;
-   logic         ifu_pmu_ic_hit_in;
-   logic         ifu_pmu_bus_error_in;
-   logic         ifu_pmu_bus_trxn_in;
-   logic         ifu_pmu_bus_busy_in;
-   logic         ic_debug_ict_array_sel_in;
-   logic         ic_debug_ict_array_sel_ff;
-   logic         debug_data_clken;
-   logic         last_data_recieved_in ;
-   logic         last_data_recieved_ff ;
-
-   logic                          ifu_bus_rvalid           ;
-   logic                          ifu_bus_rvalid_ff        ;
-   logic                          ifu_bus_rvalid_unq_ff    ;
-   logic                          ifu_bus_arready_unq       ;
-   logic                          ifu_bus_arready_unq_ff    ;
-   logic                          ifu_bus_arvalid           ;
-   logic                          ifu_bus_arvalid_ff        ;
-   logic                          ifu_bus_arready           ;
-   logic                          ifu_bus_arready_ff        ;
-   logic [63:0]                   ifu_bus_rdata_ff        ;
-   logic [1:0]                    ifu_bus_rresp_ff          ;
-   logic                          ifu_bus_rsp_valid ;
-   logic                          ifu_bus_rsp_ready ;
-   logic [pt.IFU_BUS_TAG-1:0]     ifu_bus_rsp_tag;
-   logic [63:0]                   ifu_bus_rsp_rdata;
-   logic [1:0]                    ifu_bus_rsp_opc;
-
-   logic [pt.ICACHE_NUM_BEATS-1:0]    write_fill_data;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    wr_data_c1_clk;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_valid_in;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_valid;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_error_in;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_error;
-   logic [pt.ICACHE_BEAT_ADDR_HI:1]    byp_fetch_index;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_0;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_1;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]    byp_fetch_index_inc;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_inc_0;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_inc_1;
-   logic          miss_buff_hit_unq_f ;
-   logic          stream_hit_f ;
-   logic          stream_miss_f ;
-   logic          stream_eol_f ;
-   logic          crit_byp_hit_f ;
-   logic [pt.IFU_BUS_TAG-1:0] other_tag ;
-   logic [(2*pt.ICACHE_NUM_BEATS)-1:0] [31:0] ic_miss_buff_data;
-   logic [63:0] ic_miss_buff_half;
-   logic        scnd_miss_req, scnd_miss_req_q;
-   logic        scnd_miss_req_in;
-
-
-   logic [pt.ICCM_BITS-1:2]                iccm_ecc_corr_index_ff;
-   logic [pt.ICCM_BITS-1:2]                iccm_ecc_corr_index_in;
-   logic [38:0]                         iccm_ecc_corr_data_ff;
-   logic                                iccm_ecc_write_status     ;
-   logic                                iccm_rd_ecc_single_err_ff   ;
-   logic                                iccm_error_start;     // start the error fsm
-   logic                                perr_state_en;
-   logic                                miss_state_en;
-
-   logic        busclk;
-   logic        busclk_force;
-   logic        busclk_reset;
-   logic        bus_ifu_bus_clk_en_ff;
-   logic        bus_ifu_bus_clk_en ;
-
-   logic        ifc_bus_ic_req_ff_in;
-   logic        ifu_bus_cmd_valid ;
-   logic        ifu_bus_cmd_ready ;
-
-   logic        bus_inc_data_beat_cnt     ;
-   logic        bus_reset_data_beat_cnt   ;
-   logic        bus_hold_data_beat_cnt    ;
-
-   logic        bus_inc_cmd_beat_cnt     ;
-   logic        bus_reset_cmd_beat_cnt_0   ;
-   logic        bus_reset_cmd_beat_cnt_secondlast   ;
-   logic        bus_hold_cmd_beat_cnt    ;
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_data_beat_count  ;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_data_beat_count      ;
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_cmd_beat_count  ;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_cmd_beat_count      ;
-
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_rd_addr_count;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_rd_addr_count;
-
-
-   logic        bus_cmd_sent           ;
-   logic        bus_last_data_beat     ;
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]       bus_wren            ;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]       bus_wren_last       ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]       wren_reset_miss      ;
-   logic        ifc_dma_access_ok_d;
-   logic        ifc_dma_access_ok_prev;
-
-   logic   bus_cmd_req_in ;
-   logic   bus_cmd_req_hold ;
-
-   logic   second_half_available ;
-   logic   write_ic_16_bytes ;
-
-   logic   ifc_region_acc_fault_final_bf;
-   logic   ifc_region_acc_fault_memory_bf;
-   logic   ifc_region_acc_fault_memory_f;
-   logic   ifc_region_acc_okay;
-
-   logic   iccm_correct_ecc;
-   logic   dma_sb_err_state, dma_sb_err_state_ff;
-   logic   two_byte_instr;
-
-   typedef enum logic [2:0] {IDLE=3'b000, CRIT_BYP_OK=3'b001, HIT_U_MISS=3'b010, MISS_WAIT=3'b011,CRIT_WRD_RDY=3'b100,SCND_MISS=3'b101,STREAM=3'b110 , STALL_SCND_MISS=3'b111} miss_state_t;
-   miss_state_t miss_state, miss_nxtstate;
-
-   typedef enum logic [1:0] {ERR_STOP_IDLE=2'b00, ERR_FETCH1=2'b01 , ERR_FETCH2=2'b10 , ERR_STOP_FETCH=2'b11} err_stop_state_t;
-   err_stop_state_t err_stop_state, err_stop_nxtstate;
-   logic   err_stop_state_en ;
-   logic   err_stop_fetch ;
-
-   logic   ic_crit_wd_rdy;         // Critical fetch is ready to be bypassed.
-
-   logic   ifu_bp_hit_taken_q_f;
-   logic   ifu_bus_rvalid_unq;
-   logic   bus_cmd_beat_en;
-
-
-// ---- Clock gating section -----
-// c1 clock enables
-
-
-   assign fetch_bf_f_c1_clken  = ifc_fetch_req_bf_raw | ifc_fetch_req_f | miss_pending | exu_flush_final | scnd_miss_req;
-   assign debug_c1_clken       = ic_debug_rd_en | ic_debug_wr_en ;
-   // C1 - 1 clock pulse for data
-
-   rvclkhdr fetch_bf_f_c1_cgc    ( .en(fetch_bf_f_c1_clken),     .l1clk(fetch_bf_f_c1_clk), .* );
-   rvclkhdr debug_c1_cgc         ( .en(debug_c1_clken),          .l1clk(debug_c1_clk), .* );
-
-
-
-// ------ end clock gating section ------------------------
-
-   logic [1:0]    iccm_single_ecc_error;
-   logic          dma_iccm_req_f ;
-   assign iccm_dma_sb_error     = (|iccm_single_ecc_error[1:0] )  & dma_iccm_req_f ;
-   assign ifu_async_error_start = iccm_rd_ecc_single_err | ic_error_start;
-
-
-   typedef enum logic [2:0] {ERR_IDLE=3'b000, IC_WFF=3'b001 , ECC_WFF=3'b010 , ECC_CORR=3'b011, DMA_SB_ERR=3'b100} perr_state_t;
-   perr_state_t perr_state, perr_nxtstate;
-
-
-   assign ic_dma_active = iccm_correct_ecc | (perr_state == DMA_SB_ERR) | (err_stop_state == ERR_STOP_FETCH) | err_stop_fetch |
-                          dec_tlu_flush_err_wb; // The last term is to give a error-correction a chance to finish before refetch starts
-
-   assign scnd_miss_req_in     = ifu_bus_rsp_valid & bus_ifu_bus_clk_en & ifu_bus_rsp_ready &
-                                 (&bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]) &
-                                 ~uncacheable_miss_ff &  ((miss_state == SCND_MISS) | (miss_nxtstate == SCND_MISS)) & ~exu_flush_final;
-
-   assign ifu_bp_hit_taken_q_f = ifu_bp_hit_taken_f & ic_hit_f ;
-
-   //////////////////////////////////// Create Miss State Machine ///////////////////////
-   //                                   Create Miss State Machine                      //
-   //                                   Create Miss State Machine                      //
-   //                                   Create Miss State Machine                      //
-   //////////////////////////////////// Create Miss State Machine ///////////////////////
-   // FIFO state machine
-   always_comb begin : MISS_SM
-      miss_nxtstate   = IDLE;
-      miss_state_en   = 1'b0;
-      case (miss_state)
-         IDLE: begin : idle
-                  miss_nxtstate = (ic_act_miss_f & ~exu_flush_final) ? CRIT_BYP_OK : HIT_U_MISS ;
-                  miss_state_en = ic_act_miss_f & ~dec_tlu_force_halt ;
-         end
-         CRIT_BYP_OK: begin : crit_byp_ok
-                  miss_nxtstate =  (dec_tlu_force_halt ) ?                                                                             IDLE :
-                                  ( ic_byp_hit_f &  (last_data_recieved_ff | (bus_ifu_wr_en_ff & last_beat)) &  uncacheable_miss_ff) ? IDLE :
-                                  ( ic_byp_hit_f &  ~last_data_recieved_ff                                &  uncacheable_miss_ff) ? MISS_WAIT :
-                                  (~ic_byp_hit_f &  ~exu_flush_final &  (bus_ifu_wr_en_ff & last_beat)       &  uncacheable_miss_ff) ? CRIT_WRD_RDY :
-                                  (                                      (bus_ifu_wr_en_ff & last_beat)       & ~uncacheable_miss_ff) ? IDLE :
-                                  ( ic_byp_hit_f  &  ~exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat)       & ~ifu_bp_hit_taken_q_f   & ~uncacheable_miss_ff) ? STREAM :
-                                  ( bus_ifu_wr_en_ff &  ~exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat)       & ~ifu_bp_hit_taken_q_f   & ~uncacheable_miss_ff) ? STREAM :
-                                  (~ic_byp_hit_f  &  ~exu_flush_final &  (bus_ifu_wr_en_ff & last_beat)       & ~uncacheable_miss_ff) ? IDLE :
-                                  ( (exu_flush_final | ifu_bp_hit_taken_q_f)  & ~(bus_ifu_wr_en_ff & last_beat)                      ) ? HIT_U_MISS : IDLE;
-                  miss_state_en =  dec_tlu_force_halt | exu_flush_final | ic_byp_hit_f | ifu_bp_hit_taken_q_f | (bus_ifu_wr_en_ff & last_beat) | (bus_ifu_wr_en_ff & ~uncacheable_miss_ff)  ;
-         end
-         CRIT_WRD_RDY: begin : crit_wrd_rdy
-                  miss_nxtstate =  IDLE ;
-                  miss_state_en =  exu_flush_final | flush_final_f | ic_byp_hit_f | dec_tlu_force_halt  ;
-         end
-         STREAM: begin : stream
-                  miss_nxtstate =  ((exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f ) & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt) ? HIT_U_MISS  : IDLE ;
-                  miss_state_en =    exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f   |  (bus_ifu_wr_en_ff & last_beat) | dec_tlu_force_halt ;
-         end
-         MISS_WAIT: begin : miss_wait
-                  miss_nxtstate =  (exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt) ? HIT_U_MISS  : IDLE ;
-                  miss_state_en =   exu_flush_final | (bus_ifu_wr_en_ff & last_beat) | dec_tlu_force_halt ;
-         end
-         HIT_U_MISS: begin : hit_u_miss
-                  miss_nxtstate =  ic_miss_under_miss_f & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt ? SCND_MISS :
-                                   ic_ignore_2nd_miss_f & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt ? STALL_SCND_MISS : IDLE  ;
-                  miss_state_en = (bus_ifu_wr_en_ff & last_beat) | ic_miss_under_miss_f | ic_ignore_2nd_miss_f | dec_tlu_force_halt;
-         end
-         SCND_MISS: begin : scnd_miss
-                  miss_nxtstate   = dec_tlu_force_halt ? IDLE  :
-                                    exu_flush_final ?  ((bus_ifu_wr_en_ff & last_beat) ? IDLE : HIT_U_MISS) : CRIT_BYP_OK;
-                  miss_state_en   = (bus_ifu_wr_en_ff & last_beat) | exu_flush_final | dec_tlu_force_halt;
-         end
-         STALL_SCND_MISS: begin : stall_scnd_miss
-                  miss_nxtstate   =  dec_tlu_force_halt ? IDLE  :
-                                     exu_flush_final ?  ((bus_ifu_wr_en_ff & last_beat) ? IDLE : HIT_U_MISS) : IDLE;
-                  miss_state_en   = (bus_ifu_wr_en_ff & last_beat) | exu_flush_final | dec_tlu_force_halt;
-         end
-         default: begin : def_case
-                  miss_nxtstate   = IDLE;
-                  miss_state_en   = 1'b0;
-         end
-      endcase
-   end
-   rvdffs #(($bits(miss_state_t))) miss_state_ff (.clk(active_clk), .din(miss_nxtstate), .dout({miss_state}), .en(miss_state_en),   .*);
-
-  logic    sel_hold_imb     ;
-
-   assign miss_pending       =  (miss_state != IDLE) ;
-   assign crit_wd_byp_ok_ff  =  (miss_state == CRIT_BYP_OK) | ((miss_state == CRIT_WRD_RDY) & ~flush_final_f);
-   assign sel_hold_imb       =  (miss_pending & ~(bus_ifu_wr_en_ff & last_beat) & ~((miss_state == CRIT_WRD_RDY) & exu_flush_final) &
-                              ~((miss_state == CRIT_WRD_RDY) & crit_byp_hit_f) ) | ic_act_miss_f |
-                                (miss_pending & (miss_nxtstate == CRIT_WRD_RDY)) ;
-
-
-   logic         sel_hold_imb_scnd;
-   logic  [31:1] imb_scnd_in;
-   logic  [31:1] imb_scnd_ff;
-   logic         uncacheable_miss_scnd_in ;
-   logic         uncacheable_miss_scnd_ff ;
-
-   logic  [pt.ICACHE_NUM_WAYS-1:0] tagv_mb_scnd_in;
-   logic  [pt.ICACHE_NUM_WAYS-1:0] tagv_mb_scnd_ff;
-
-   logic  [pt.ICACHE_STATUS_BITS-1:0] way_status_mb_scnd_in;
-   logic  [pt.ICACHE_STATUS_BITS-1:0] way_status_mb_scnd_ff;
-
-   assign sel_hold_imb_scnd                                =((miss_state == SCND_MISS) | ic_miss_under_miss_f) & ~flush_final_f ;
-   assign way_status_mb_scnd_in[pt.ICACHE_STATUS_BITS-1:0] = (miss_state == SCND_MISS) ? way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0] : {way_status[pt.ICACHE_STATUS_BITS-1:0]} ;
-   assign tagv_mb_scnd_in[pt.ICACHE_NUM_WAYS-1:0]          = (miss_state == SCND_MISS) ? tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0]          : ({ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0]} & {pt.ICACHE_NUM_WAYS{~reset_all_tags & ~exu_flush_final}});
-   assign uncacheable_miss_scnd_in   = sel_hold_imb_scnd ? uncacheable_miss_scnd_ff : ifc_fetch_uncacheable_bf ;
-
-
-   rvdff_fpga #(1)  unc_miss_scnd_ff    (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din (uncacheable_miss_scnd_in), .dout(uncacheable_miss_scnd_ff));
-   rvdffpcie #(31) imb_f_scnd_ff       (.*, .en(fetch_bf_f_c1_clken),  .din ({imb_scnd_in[31:1]}), .dout({imb_scnd_ff[31:1]}));
-   rvdff_fpga #(pt.ICACHE_STATUS_BITS)  mb_rep_wayf2_scnd_ff (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din ({way_status_mb_scnd_in[pt.ICACHE_STATUS_BITS-1:0]}), .dout({way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0]}));
-   rvdff_fpga #(pt.ICACHE_NUM_WAYS)     mb_tagv_scnd_ff      (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din ({tagv_mb_scnd_in[pt.ICACHE_NUM_WAYS-1:0]}), .dout({tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0]}));
-
-
-
-
-   assign ic_req_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] = bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] ;
-   assign ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3]  = ifu_bus_rid_ff[pt.ICACHE_BEAT_BITS-1:0] & {pt.ICACHE_BEAT_BITS{bus_ifu_wr_en_ff}};
-   // NOTE: Cacheline size is 16 bytes in this example.
-   // Tag     Index  Bank Offset
-   // [31:16] [15:5] [4]  [3:0]
-
-
-   assign fetch_req_icache_f   = ifc_fetch_req_f & ~ifc_iccm_access_f & ~ifc_region_acc_fault_final_f;
-   assign fetch_req_iccm_f     = ifc_fetch_req_f &  ifc_iccm_access_f;
-
-   assign ic_iccm_hit_f        = fetch_req_iccm_f  &  (~miss_pending | (miss_state==HIT_U_MISS) | (miss_state==STREAM));
-   assign ic_byp_hit_f         = (crit_byp_hit_f | stream_hit_f)  & fetch_req_icache_f &  miss_pending ;
-   assign ic_act_hit_f         = (|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) & fetch_req_icache_f & ~reset_all_tags & (~miss_pending | (miss_state==HIT_U_MISS)) & ~sel_mb_addr_ff;
-   assign ic_act_miss_f        = (((~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & ~miss_pending) | scnd_miss_req) & ~ifc_region_acc_fault_final_f;
-   assign ic_miss_under_miss_f = (~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & (miss_state == HIT_U_MISS) &
-                                   (imb_ff[31:pt.ICACHE_TAG_INDEX_LO] != ifu_fetch_addr_int_f[31:pt.ICACHE_TAG_INDEX_LO]) & ~uncacheable_miss_ff & ~sel_mb_addr_ff & ~ifc_region_acc_fault_final_f;
-   assign ic_ignore_2nd_miss_f = (~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & (miss_state == HIT_U_MISS) &
-                                   ((imb_ff[31:pt.ICACHE_TAG_INDEX_LO] == ifu_fetch_addr_int_f[31:pt.ICACHE_TAG_INDEX_LO])  |   uncacheable_miss_ff) ;
-   assign ic_hit_f             =  ic_act_hit_f | ic_byp_hit_f | ic_iccm_hit_f | (ifc_region_acc_fault_final_f & ifc_fetch_req_f);
-
-   assign uncacheable_miss_in   = scnd_miss_req ? uncacheable_miss_scnd_ff : sel_hold_imb ? uncacheable_miss_ff : ifc_fetch_uncacheable_bf ;
-   assign imb_in[31:1]          = scnd_miss_req ? imb_scnd_ff[31:1]        : sel_hold_imb ? imb_ff[31:1] : {ifc_fetch_addr_bf[31:1]} ;
-
-   assign imb_scnd_in[31:1]     = sel_hold_imb_scnd ? imb_scnd_ff[31:1] : {ifc_fetch_addr_bf[31:1]} ;
-
-   assign scnd_miss_index_match  =  (imb_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == imb_scnd_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]) & scnd_miss_req & ~ifu_wr_cumulative_err_data;
-   assign way_status_mb_in[pt.ICACHE_STATUS_BITS-1:0] = (scnd_miss_req & ~scnd_miss_index_match) ? way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0] :
-                                                        (scnd_miss_req &  scnd_miss_index_match) ? way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] :
-                                                         miss_pending                            ? way_status_mb_ff[pt.ICACHE_STATUS_BITS-1:0] :
-                                                                                                  {way_status[pt.ICACHE_STATUS_BITS-1:0]} ;
-   assign tagv_mb_in[pt.ICACHE_NUM_WAYS-1:0]          = scnd_miss_req ? (tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0] | ({pt.ICACHE_NUM_WAYS {scnd_miss_index_match}} & replace_way_mb_any[pt.ICACHE_NUM_WAYS-1:0])) :
-                                                         miss_pending ? tagv_mb_ff[pt.ICACHE_NUM_WAYS-1:0]  : ({ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0]} & {pt.ICACHE_NUM_WAYS{~reset_all_tags & ~exu_flush_final}}) ;
-
-   assign reset_ic_in           = miss_pending & ~scnd_miss_req_q &  (reset_all_tags |  reset_ic_ff) ;
-
-
-
-   rvdffpcie #(31) ifu_fetch_addr_f_ff (.*, .en(fetch_bf_f_c1_clken), .din ({ifc_fetch_addr_bf[31:1]}), .dout({ifu_fetch_addr_int_f[31:1]}));
-
-   assign vaddr_f[pt.ICACHE_BEAT_ADDR_HI:1] = ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:1] ;
-
-   rvdffpcie #(31) imb_f_ff        (.*, .en(fetch_bf_f_c1_clken), .din (imb_in[31:1]), .dout(imb_ff[31:1]));
-   rvdff_fpga #(1) unc_miss_ff     (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ( uncacheable_miss_in),               .dout( uncacheable_miss_ff));
-
-
-   assign miss_addr_in[31:pt.ICACHE_BEAT_ADDR_HI+1]      = (~miss_pending                    ) ? imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] :
-                                                           (                scnd_miss_req_q  ) ? imb_scnd_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] : miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1] ;
-
-
-   rvdfflie #(.WIDTH(31-pt.ICACHE_BEAT_ADDR_HI),.LEFT(31-pt.ICACHE_BEAT_ADDR_HI-8)) miss_f_ff       (.*, .en(bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .din ({miss_addr_in[31:pt.ICACHE_BEAT_ADDR_HI+1]}), .dout({miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1]}));
-
-
-
-
-
-   rvdff_fpga #(pt.ICACHE_STATUS_BITS)  mb_rep_wayf2_ff (.*, .clk(fetch_bf_f_c1_clk),  .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ({way_status_mb_in[pt.ICACHE_STATUS_BITS-1:0]}), .dout({way_status_mb_ff[pt.ICACHE_STATUS_BITS-1:0]}));
-   rvdff_fpga #(pt.ICACHE_NUM_WAYS)     mb_tagv_ff      (.*, .clk(fetch_bf_f_c1_clk),  .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ({tagv_mb_in[pt.ICACHE_NUM_WAYS-1:0]}), .dout({tagv_mb_ff[pt.ICACHE_NUM_WAYS-1:0]}));
-
-   assign ifc_fetch_req_qual_bf  = ifc_fetch_req_bf  & ~((miss_state == CRIT_WRD_RDY) & flush_final_f) & ~stream_miss_f ;// & ~exu_flush_final ;
-
-   assign ifc_fetch_req_f       = ifc_fetch_req_f_raw & ~exu_flush_final ;
-
-   rvdff_fpga #(1) ifu_iccm_acc_ff     (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_iccm_access_bf),      .dout(ifc_iccm_access_f));
-   rvdff_fpga #(1) ifu_iccm_reg_acc_ff (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_region_acc_fault_final_bf), .dout(ifc_region_acc_fault_final_f));
-   rvdff_fpga #(1) rgn_acc_ff          (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_region_acc_fault_bf),       .dout(ifc_region_acc_fault_f));
-
-
-   assign ifu_ic_req_addr_f[31:3]  = {miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_req_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] };
-   assign ifu_ic_mb_empty          = (((miss_state == HIT_U_MISS) | (miss_state == STREAM)) & ~(bus_ifu_wr_en_ff & last_beat)) |  ~miss_pending ;
-   assign ifu_miss_state_idle      = (miss_state == IDLE) ;
-
-
-   assign sel_mb_addr  = ((miss_pending & write_ic_16_bytes & ~uncacheable_miss_ff) | reset_tag_valid_for_miss) ;
-   assign ifu_ic_rw_int_addr[31:1] = ({31{ sel_mb_addr}}  &  {imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] , imb_ff[2:1]})  |
-                                     ({31{~sel_mb_addr}}  &  ifc_fetch_addr_bf[31:1] )   ;
-
-   assign sel_mb_status_addr  = ((miss_pending & write_ic_16_bytes & ~uncacheable_miss_ff & last_beat & bus_ifu_wr_en_ff_q) | reset_tag_valid_for_miss) ;
-   assign ifu_status_wr_addr[31:1] = ({31{ sel_mb_status_addr}}  &  {imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] , imb_ff[2:1]})  |
-                                     ({31{~sel_mb_status_addr}}  &  ifu_fetch_addr_int_f[31:1] )   ;
-
-
-  assign ic_rw_addr[31:1]      = ifu_ic_rw_int_addr[31:1] ;
-
-
-if (pt.ICACHE_ECC == 1) begin: icache_ecc_1
-   logic [6:0]       ic_wr_ecc;
-   logic [6:0]       ic_miss_buff_ecc;
-   logic [141:0]     ic_wr_16bytes_data ;
-   logic [70:0]      ifu_ic_debug_rd_data_in   ;
-
-                rvecc_encode_64  ic_ecc_encode_64_bus (
-                           .din    (ifu_bus_rdata_ff[63:0]),
-                           .ecc_out(ic_wr_ecc[6:0]));
-                rvecc_encode_64  ic_ecc_encode_64_buff (
-                           .din    (ic_miss_buff_half[63:0]),
-                           .ecc_out(ic_miss_buff_ecc[6:0]));
-
-   for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_wr_data_loop
-      assign ic_wr_data[i][70:0]  =  ic_wr_16bytes_data[((71*i)+70): (71*i)];
-   end
-
-
-   assign ic_debug_wr_data[70:0]   = {dec_tlu_ic_diag_pkt.icache_wrdata[70:0]} ;
-   assign ic_error_start           = ((|ic_eccerr[pt.ICACHE_BANKS_WAY-1:0]) & ic_act_hit_f)  | ic_rd_parity_final_err;
-
-
-
-  assign ifu_ic_debug_rd_data_in[70:0] = ic_debug_ict_array_sel_ff ? {2'b0,ictag_debug_rd_data[25:21],32'b0,ictag_debug_rd_data[20:0],{7-pt.ICACHE_STATUS_BITS{1'b0}}, way_status[pt.ICACHE_STATUS_BITS-1:0],3'b0,ic_debug_tag_val_rd_out} :
-                                                                     ic_debug_rd_data[70:0];
-
-  rvdffe #(71) ifu_debug_data_ff (.*,
-                                  .en (debug_data_clken),
-                                  .din ({
-                                         ifu_ic_debug_rd_data_in[70:0]
-                                         }),
-                                  .dout({
-                                         ifu_ic_debug_rd_data[70:0]
-                                         })
-                                  );
-
-  assign ic_wr_16bytes_data[141:0] =  ifu_bus_rid_ff[0] ? {ic_wr_ecc[6:0] , ifu_bus_rdata_ff[63:0] ,  ic_miss_buff_ecc[6:0] , ic_miss_buff_half[63:0] } :
-                                                        {ic_miss_buff_ecc[6:0] ,  ic_miss_buff_half[63:0] , ic_wr_ecc[6:0] , ifu_bus_rdata_ff[63:0] } ;
-
-
-end
-else begin : icache_parity_1
-   logic [3:0]   ic_wr_parity;
-   logic [3:0]   ic_miss_buff_parity;
-   logic [135:0] ic_wr_16bytes_data ;
-   logic [70:0]  ifu_ic_debug_rd_data_in   ;
-    for (genvar i=0 ; i < 4 ; i++) begin : DATA_PGEN
-       rveven_paritygen #(16) par_bus  (.data_in   (ifu_bus_rdata_ff[((16*i)+15):(16*i)]),
-                                      .parity_out(ic_wr_parity[i]));
-       rveven_paritygen #(16) par_buff  (.data_in   (ic_miss_buff_half[((16*i)+15):(16*i)]),
-                                      .parity_out(ic_miss_buff_parity[i]));
-    end
-
-
-   for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_wr_data_loop
-      assign ic_wr_data[i][70:0]  =  {3'b0, ic_wr_16bytes_data[((68*i)+67): (68*i)]};
-   end
-
-
-
-
-
-   assign ic_debug_wr_data[70:0]   = {dec_tlu_ic_diag_pkt.icache_wrdata[70:0]} ;
-   assign ic_error_start           = ((|ic_parerr[pt.ICACHE_BANKS_WAY-1:0]) & ic_act_hit_f) | ic_rd_parity_final_err;
-
-   assign ifu_ic_debug_rd_data_in[70:0] = ic_debug_ict_array_sel_ff ? {6'b0,ictag_debug_rd_data[21],32'b0,ictag_debug_rd_data[20:0],{7-pt.ICACHE_STATUS_BITS{1'b0}},way_status[pt.ICACHE_STATUS_BITS-1:0],3'b0,ic_debug_tag_val_rd_out} :
-                                                                      ic_debug_rd_data[70:0] ;
-
-   rvdffe #(71) ifu_debug_data_ff (.*,
-                                   .en (debug_data_clken),
-                                   .din ({
-                                          ifu_ic_debug_rd_data_in[70:0]
-                                          }),
-                                   .dout({
-                                          ifu_ic_debug_rd_data[70:0]
-                                          })
-                                   );
-
-   assign ic_wr_16bytes_data[135:0] =  ifu_bus_rid_ff[0] ? {ic_wr_parity[3:0] , ifu_bus_rdata_ff[63:0] ,  ic_miss_buff_parity[3:0] , ic_miss_buff_half[63:0] } :
-                                                        {ic_miss_buff_parity[3:0] ,  ic_miss_buff_half[63:0] , ic_wr_parity[3:0] , ifu_bus_rdata_ff[63:0] } ;
-
-end
-
-
-  assign ifu_wr_data_comb_err       =  bus_ifu_wr_data_error_ff ;
-  assign ifu_wr_cumulative_err      = (ifu_wr_data_comb_err | ifu_wr_data_comb_err_ff) & ~reset_beat_cnt;
-  assign ifu_wr_cumulative_err_data =  ifu_wr_data_comb_err | ifu_wr_data_comb_err_ff ;
-
-
-  assign sel_byp_data     =  (ic_crit_wd_rdy | (miss_state == STREAM) | (miss_state == CRIT_BYP_OK));
-  assign sel_ic_data      = ~(ic_crit_wd_rdy | (miss_state == STREAM) | (miss_state == CRIT_BYP_OK) | (miss_state == MISS_WAIT)) & ~fetch_req_iccm_f & ~ifc_region_acc_fault_final_f;
-
- if (pt.ICCM_ICACHE==1) begin: iccm_icache
-  assign sel_iccm_data    =  fetch_req_iccm_f  ;
-
-  assign ic_final_data[63:0]  = ({64{sel_byp_data | sel_iccm_data | sel_ic_data}} & {ic_rd_data[63:0]} ) ;
-
-  assign ic_premux_data[63:0] = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) |
-                          ({64{sel_iccm_data}} & {iccm_rd_data[63:0]});
-
-  assign ic_sel_premux_data = sel_iccm_data | sel_byp_data ;
- end
-
-if (pt.ICCM_ONLY == 1 ) begin: iccm_only
-  assign sel_iccm_data    =  fetch_req_iccm_f  ;
-  assign ic_final_data[63:0]  = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) |
-                          ({64{sel_iccm_data}} & {iccm_rd_data[63:0]});
-  assign ic_premux_data = '0 ;
-  assign ic_sel_premux_data = '0 ;
-end
-
-if (pt.ICACHE_ONLY == 1 ) begin: icache_only
-  assign ic_final_data[63:0]  = ({64{sel_byp_data | sel_ic_data}} & {ic_rd_data[63:0]} ) ;
-  assign ic_premux_data[63:0] = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) ;
-  assign ic_sel_premux_data =  sel_byp_data ;
-end
-
-
-if (pt.NO_ICCM_NO_ICACHE == 1 ) begin: no_iccm_no_icache
-  assign ic_final_data[63:0]  = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) ;
-  assign ic_premux_data = 0 ;
-  assign ic_sel_premux_data = '0 ;
-end
-
-
-  assign ifc_bus_acc_fault_f[1:0]   =  {2{ic_byp_hit_f}} & ifu_byp_data_err_f[1:0] ;
-  assign ic_data_f[31:0]      = ic_final_data[31:0];
-
-
-
-assign fetch_req_f_qual       = ic_hit_f & ~exu_flush_final;
-assign ic_access_fault_f[1:0]  = ({2{ifc_region_acc_fault_final_f}} | ifc_bus_acc_fault_f[1:0])  & {2{~exu_flush_final}};
-assign ic_access_fault_type_f[1:0] = |iccm_rd_ecc_double_err       ? 2'b01 :
-                                     ifc_region_acc_fault_f        ? 2'b10 :
-                                     ifc_region_acc_fault_memory_f ? 2'b11 :  2'b00 ;
-
-  // right justified
-
-assign ic_fetch_val_f[1] = fetch_req_f_qual & ifu_bp_inst_mask_f & ~(vaddr_f[pt.ICACHE_BEAT_ADDR_HI:1] == {pt.ICACHE_BEAT_ADDR_HI{1'b1}}) & (err_stop_state != ERR_FETCH2);
-assign ic_fetch_val_f[0] = fetch_req_f_qual ;
-assign two_byte_instr    =  (ic_data_f[1:0] != 2'b11 )  ;
-
-/////////////////////////////////////////////////////////////////////////////////////
-//  Create full buffer...                                                          //
-/////////////////////////////////////////////////////////////////////////////////////
-     logic [63:0]       ic_miss_buff_data_in;
-     assign ic_miss_buff_data_in[63:0] = ifu_bus_rsp_rdata[63:0];
-
-     for (genvar i=0; i<pt.ICACHE_NUM_BEATS; i++) begin :  wr_flop
-
-        assign write_fill_data[i]        =   bus_ifu_wr_en & (  (pt.IFU_BUS_TAG)'(i)  == ifu_bus_rsp_tag[pt.IFU_BUS_TAG-1:0]);
-
-        rvdffe #(32) byp_data_0_ff (.*,
-                                    .en (write_fill_data[i]),
-                                    .din (ic_miss_buff_data_in[31:0]),
-                                    .dout(ic_miss_buff_data[i*2][31:0])
-                                    );
-
-        rvdffe #(32) byp_data_1_ff (.*,
-                                    .en (write_fill_data[i]),
-                                    .din (ic_miss_buff_data_in[63:32]),
-                                    .dout(ic_miss_buff_data[i*2+1][31:0])
-                                    );
-
-        assign ic_miss_buff_data_valid_in[i]  = write_fill_data[i] ? 1'b1  : (ic_miss_buff_data_valid[i]  & ~ic_act_miss_f) ;
-
-        rvdff #(1) byp_data_valid_ff (.*,
-                  .clk (active_clk),
-                  .din (ic_miss_buff_data_valid_in[i]),
-                  .dout(ic_miss_buff_data_valid[i]));
-
-        assign ic_miss_buff_data_error_in[i]  = write_fill_data[i] ? bus_ifu_wr_data_error  : (ic_miss_buff_data_error[i]  & ~ic_act_miss_f) ;
-
-        rvdff #(1) byp_data_error_ff (.*,
-                  .clk (active_clk),
-                  .din (ic_miss_buff_data_error_in[i] ),
-                  .dout(ic_miss_buff_data_error[i]));
-     end
-
-/////////////////////////////////////////////////////////////////////////////////////
-// New bypass ready                                                                //
-/////////////////////////////////////////////////////////////////////////////////////
-   logic   [pt.ICACHE_BEAT_ADDR_HI:1]  bypass_index;
-   logic   [pt.ICACHE_BEAT_ADDR_HI:3]  bypass_index_5_3_inc;
-   logic   bypass_data_ready_in;
-   logic   ic_crit_wd_rdy_new_in;
-
-   assign bypass_index[pt.ICACHE_BEAT_ADDR_HI:1] = imb_ff[pt.ICACHE_BEAT_ADDR_HI:1] ;
-   assign bypass_index_5_3_inc[pt.ICACHE_BEAT_ADDR_HI:3] = bypass_index[pt.ICACHE_BEAT_ADDR_HI:3] + 1 ;
-
-
-   assign bypass_data_ready_in = ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      & ~bypass_index[2] & ~bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      & ~bypass_index[2] &  bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      &  bypass_index[2] & ~bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]] & ic_miss_buff_data_valid_in[bypass_index_5_3_inc[pt.ICACHE_BEAT_ADDR_HI:3]] &  bypass_index[2] & bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]] & (bypass_index[pt.ICACHE_BEAT_ADDR_HI:3] == {pt.ICACHE_BEAT_ADDR_HI{1'b1}})))   ;
-
-
-
-   assign    ic_crit_wd_rdy_new_in = ( bypass_data_ready_in & crit_wd_byp_ok_ff   &  uncacheable_miss_ff &  ~exu_flush_final & ~ifu_bp_hit_taken_q_f) |
-                                     (                        crit_wd_byp_ok_ff   & ~uncacheable_miss_ff &  ~exu_flush_final & ~ifu_bp_hit_taken_q_f) |
-                                     (ic_crit_wd_rdy_new_ff & ~fetch_req_icache_f & crit_wd_byp_ok_ff    &  ~exu_flush_final) ;
-
-
-  assign byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:1]          =    ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:1]       ;
-  assign byp_fetch_index_0[pt.ICACHE_BEAT_ADDR_HI:2]        =   {ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3],1'b0} ;
-  assign byp_fetch_index_1[pt.ICACHE_BEAT_ADDR_HI:2]        =   {ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3],1'b1} ;
-  assign byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]      =    ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3]+1'b1 ;
-  assign byp_fetch_index_inc_0[pt.ICACHE_BEAT_ADDR_HI:2]    =   {byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3], 1'b0} ;
-  assign byp_fetch_index_inc_1[pt.ICACHE_BEAT_ADDR_HI:2]    =   {byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3], 1'b1} ;
-
-  assign  ifu_byp_data_err_new = (~ifu_fetch_addr_int_f[2] &  ~ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 (~ifu_fetch_addr_int_f[2] &   ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 ( ifu_fetch_addr_int_f[2] &  ~ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 ( ifu_fetch_addr_int_f[2] &   ifu_fetch_addr_int_f[1] & (ic_miss_buff_data_error[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]] | ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )) ;
-
-  assign  ifu_byp_data_err_f[1:0]  =   (ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  ? 2'b11 :
-                                      ( ifu_fetch_addr_int_f[2] &  ifu_fetch_addr_int_f[1] &   ~(ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] ) & (~miss_wrap_f & ic_miss_buff_data_error[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]])) ? 2'b10 : 2'b00;
-
-
-
-
-
-  assign ic_byp_data_only_pre_new[79:0] =  ({80{~ifu_fetch_addr_int_f[2]}} &   {ic_miss_buff_data[byp_fetch_index_inc_0][15:0],ic_miss_buff_data[byp_fetch_index_1][31:0]     , ic_miss_buff_data[byp_fetch_index_0][31:0]}) |
-                                           ({80{ ifu_fetch_addr_int_f[2]}} &   {ic_miss_buff_data[byp_fetch_index_inc_1][15:0],ic_miss_buff_data[byp_fetch_index_inc_0][31:0] , ic_miss_buff_data[byp_fetch_index_1][31:0]}) ;
-
-  assign ic_byp_data_only_new[79:0]      = ~ifu_fetch_addr_int_f[1] ? {ic_byp_data_only_pre_new[79:0]} :
-                                                                      {16'b0,ic_byp_data_only_pre_new[79:16]} ;
-
-  assign miss_wrap_f      =  (imb_ff[pt.ICACHE_TAG_INDEX_LO] != ifu_fetch_addr_int_f[pt.ICACHE_TAG_INDEX_LO] ) ;
-
-  assign miss_buff_hit_unq_f  = ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     & ~byp_fetch_index[2] & ~byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     & ~byp_fetch_index[2] &  byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     &  byp_fetch_index[2] & ~byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] & ic_miss_buff_data_valid[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]] &  byp_fetch_index[2] &  byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] &  (byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3] == {pt.ICACHE_BEAT_BITS{1'b1}})))   ;
-
-  assign stream_hit_f     =  (miss_buff_hit_unq_f & ~miss_wrap_f ) & (miss_state==STREAM) ;
-  assign stream_miss_f    = ~(miss_buff_hit_unq_f & ~miss_wrap_f ) & (miss_state==STREAM) & ifc_fetch_req_f;
-  assign stream_eol_f     =  (byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:2] == {pt.ICACHE_BEAT_BITS+1{1'b1}}) & ifc_fetch_req_f & stream_hit_f;
-
-  assign crit_byp_hit_f   =  (miss_buff_hit_unq_f ) & ((miss_state == CRIT_WRD_RDY) | (miss_state==CRIT_BYP_OK)) ;
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Figure out if you have the data to write.                                       //
-/////////////////////////////////////////////////////////////////////////////////////
-
-assign other_tag[pt.IFU_BUS_TAG-1:0] = {ifu_bus_rid_ff[pt.IFU_BUS_TAG-1:1] , ~ifu_bus_rid_ff[0] } ;
-assign second_half_available      = ic_miss_buff_data_valid[other_tag] ;
-assign write_ic_16_bytes          = second_half_available & bus_ifu_wr_en_ff ;
-assign ic_miss_buff_half[63:0]    = {ic_miss_buff_data[{other_tag,1'b1}],ic_miss_buff_data[{other_tag,1'b0}] } ;
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Parity checking logic for Icache logic.                                         //
-/////////////////////////////////////////////////////////////////////////////////////
-
-
-assign ic_rd_parity_final_err = ic_tag_perr & ~exu_flush_final & sel_ic_data & ~(ifc_region_acc_fault_final_f | (|ifc_bus_acc_fault_f)) &
-                                      (fetch_req_icache_f & ~reset_all_tags & (~miss_pending | (miss_state==HIT_U_MISS)) & ~sel_mb_addr_ff);
-
-logic [pt.ICACHE_NUM_WAYS-1:0]                   perr_err_inv_way;
-logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]   perr_ic_index_ff;
-logic                                         perr_sel_invalidate;
-logic                                         perr_sb_write_status   ;
-
-
-
-   rvdffe #(.WIDTH(pt.ICACHE_INDEX_HI-pt.ICACHE_TAG_INDEX_LO+1),.OVERRIDE(1)) perr_dat_ff    (.din(ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]), .dout(perr_ic_index_ff[pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]), .en(perr_sb_write_status),  .*);
-
-   assign perr_err_inv_way[pt.ICACHE_NUM_WAYS-1:0]   =  {pt.ICACHE_NUM_WAYS{perr_sel_invalidate}} ;
-   assign iccm_correct_ecc     = (perr_state == ECC_CORR);
-   assign dma_sb_err_state     = (perr_state == DMA_SB_ERR);
-   assign iccm_buf_correct_ecc = iccm_correct_ecc & ~dma_sb_err_state_ff;
-
-
-
-   //////////////////////////////////// Create Parity Error State Machine ///////////////////////
-   //                                   Create Parity Error State Machine                      //
-   //                                   Create Parity Error State Machine                      //
-   //                                   Create Parity Error State Machine                      //
-   //////////////////////////////////// Create Parity Error State Machine ///////////////////////
-
-
-   // FIFO state machine
-   always_comb begin  : ERROR_SM
-      perr_nxtstate            = ERR_IDLE;
-      perr_state_en            = 1'b0;
-      perr_sb_write_status     = 1'b0;
-      perr_sel_invalidate      = 1'b0;
-
-      case (perr_state)
-         ERR_IDLE: begin : err_idle
-                  perr_nxtstate         =  iccm_dma_sb_error ? DMA_SB_ERR : (ic_error_start & ~exu_flush_final) ? IC_WFF : ECC_WFF;
-                  perr_state_en         =  (((iccm_error_start | ic_error_start) & ~exu_flush_final) | iccm_dma_sb_error) & ~dec_tlu_force_halt;
-                  perr_sb_write_status  =  perr_state_en;
-         end
-         IC_WFF: begin : icache_wff    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  perr_nxtstate       =  ERR_IDLE ;
-                  perr_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_force_halt ;
-                  perr_sel_invalidate =  (dec_tlu_flush_err_wb &  dec_tlu_flush_lower_wb);
-         end
-         ECC_WFF: begin : ecc_wff
-                  perr_nxtstate       =  ((~dec_tlu_flush_err_wb &  dec_tlu_flush_lower_wb ) | dec_tlu_force_halt) ? ERR_IDLE : ECC_CORR ;
-                  perr_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_force_halt  ;
-         end
-         DMA_SB_ERR : begin : dma_sb_ecc
-                 perr_nxtstate       = dec_tlu_force_halt ? ERR_IDLE : ECC_CORR;
-                 perr_state_en       = 1'b1;
-         end
-         ECC_CORR: begin : ecc_corr
-                  perr_nxtstate       =  ERR_IDLE  ;
-                  perr_state_en       =   1'b1   ;
-         end
-         default: begin : def_case
-                  perr_nxtstate            = ERR_IDLE;
-                  perr_state_en            = 1'b0;
-                  perr_sb_write_status     = 1'b0;
-                  perr_sel_invalidate      = 1'b0;
-         end
-      endcase
-   end
-
-   rvdffs #(($bits(perr_state_t))) perr_state_ff (.clk(active_clk), .din(perr_nxtstate), .dout({perr_state}), .en(perr_state_en),   .*);
-
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   always_comb begin  : ERROR_STOP_FETCH
-      err_stop_nxtstate            = ERR_STOP_IDLE;
-      err_stop_state_en            = 1'b0;
-      err_stop_fetch               = 1'b0;
-      iccm_correction_state        = 1'b0;
-
-      case (err_stop_state)
-         ERR_STOP_IDLE: begin : err_stop_idle
-                  err_stop_nxtstate         =  ERR_FETCH1;
-                  err_stop_state_en         =  dec_tlu_flush_err_wb & (perr_state  == ECC_WFF) & ~dec_tlu_force_halt;
-         end
-         ERR_FETCH1: begin : err_fetch1    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  err_stop_nxtstate       =  (dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : ((ifu_fetch_val[1:0] == 2'b11) | (ifu_fetch_val[0] & two_byte_instr))   ?  ERR_STOP_FETCH : ifu_fetch_val[0] ? ERR_FETCH2 :  ERR_FETCH1;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | ifu_fetch_val[0] | ifu_bp_hit_taken_q_f | dec_tlu_force_halt;
-                  err_stop_fetch          =   ((ifu_fetch_val[1:0] == 2'b11) | (ifu_fetch_val[0] & two_byte_instr))  & ~(exu_flush_final | dec_tlu_i0_commit_cmt);
-                  iccm_correction_state   = 1'b1;
-
-        end
-         ERR_FETCH2: begin : err_fetch2    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  err_stop_nxtstate       =  (dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : ifu_fetch_val[0] ?  ERR_STOP_FETCH : ERR_FETCH2;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | ifu_fetch_val[0] | dec_tlu_force_halt ;
-                  err_stop_fetch          =   ifu_fetch_val[0] & ~exu_flush_final & ~dec_tlu_i0_commit_cmt ;
-                  iccm_correction_state   = 1'b1;
-
-         end
-         ERR_STOP_FETCH: begin : ecc_wff
-                  err_stop_nxtstate       =  ( (dec_tlu_flush_lower_wb & ~dec_tlu_flush_err_wb) | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : dec_tlu_flush_err_wb ? ERR_FETCH1 : ERR_STOP_FETCH ;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb |  dec_tlu_i0_commit_cmt | dec_tlu_force_halt   ;
-                  err_stop_fetch          =  1'b1;
-                  iccm_correction_state   = 1'b1;
-
-         end
-         default: begin : def_case
-                  err_stop_nxtstate            = ERR_STOP_IDLE;
-                  err_stop_state_en            = 1'b0;
-                  err_stop_fetch               = 1'b0 ;
-                  iccm_correction_state   = 1'b1;
-
-         end
-      endcase
-   end
-   rvdffs #(($bits(err_stop_state_t))) err_stop_state_ff (.clk(active_clk), .din(err_stop_nxtstate), .dout({err_stop_state}), .en(err_stop_state_en),   .*);
-
-
-
-   assign bus_ifu_bus_clk_en =  ifu_bus_clk_en ;
-
-   rvclkhdr bus_clk_f(.en(bus_ifu_bus_clk_en), .l1clk(busclk), .*);
-   rvclkhdr bus_clk(.en(bus_ifu_bus_clk_en | dec_tlu_force_halt), .l1clk(busclk_force), .*);
-
-
-
-
-   assign  scnd_miss_req = scnd_miss_req_q & ~exu_flush_final;
-
-   assign  ifc_bus_ic_req_ff_in  = (ic_act_miss_f | bus_cmd_req_hold | ifu_bus_cmd_valid) & ~dec_tlu_force_halt & ~((bus_cmd_beat_count== {pt.ICACHE_BEAT_BITS{1'b1}}) & ifu_bus_cmd_valid & ifu_bus_cmd_ready & miss_pending);
-
-   rvdff_fpga #(1) bus_ic_req_ff2(.*, .clk(busclk_force), .clken(bus_ifu_bus_clk_en | dec_tlu_force_halt), .rawclk(clk), .din(ifc_bus_ic_req_ff_in), .dout(ifu_bus_cmd_valid));
-
-   assign    bus_cmd_req_in  = (ic_act_miss_f | bus_cmd_req_hold) & ~bus_cmd_sent & ~dec_tlu_force_halt ; // hold until first command sent
-
-
-
-    // AXI command signals
-    //  Read Channel
-    assign ifu_axi_arvalid               =  ifu_bus_cmd_valid ;
-    assign ifu_axi_arid[pt.IFU_BUS_TAG-1:0] = ((pt.IFU_BUS_TAG)'(bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0])) & {pt.IFU_BUS_TAG{ifu_bus_cmd_valid}};
-    assign ifu_axi_araddr[31:0]          =   {ifu_ic_req_addr_f[31:3],3'b0}  & {32{ifu_bus_cmd_valid}};
-    assign ifu_axi_arsize[2:0]           =  3'b011;
-    assign ifu_axi_arprot[2:0]           = 3'b101;
-    assign ifu_axi_arcache[3:0]          = 4'b1111;
-    assign ifu_axi_arregion[3:0]         = ifu_ic_req_addr_f[31:28];
-    assign ifu_axi_arlen[7:0]            = '0;
-    assign ifu_axi_arburst[1:0]          = 2'b01;
-    assign ifu_axi_arqos[3:0]            = '0;
-    assign ifu_axi_arlock                = '0;
-    assign ifu_axi_rready                = 1'b1;
-
-    //  Write Channel
-    assign ifu_axi_awvalid                  = '0 ;
-    assign ifu_axi_awid[pt.IFU_BUS_TAG-1:0] = '0 ;
-    assign ifu_axi_awaddr[31:0]             = '0 ;
-    assign ifu_axi_awsize[2:0]              = '0 ;
-    assign ifu_axi_awprot[2:0]              = '0;
-    assign ifu_axi_awcache[3:0]             = '0 ;
-    assign ifu_axi_awregion[3:0]            = '0 ;
-    assign ifu_axi_awlen[7:0]               = '0;
-    assign ifu_axi_awburst[1:0]             = '0 ;
-    assign ifu_axi_awqos[3:0]               = '0;
-    assign ifu_axi_awlock                   = '0;
-
-    assign ifu_axi_wvalid                =  '0;
-    assign ifu_axi_wstrb[7:0]            =  '0;
-    assign ifu_axi_wdata[63:0]           =  '0;
-    assign ifu_axi_wlast                 =  '0;
-    assign ifu_axi_bready                =  '0;
-
-
-   assign ifu_bus_arready_unq     =  ifu_axi_arready ;
-   assign ifu_bus_rvalid_unq      =  ifu_axi_rvalid ;
-   assign ifu_bus_arvalid         =  ifu_axi_arvalid ;
-
-   rvdff_fpga #(1)               bus_rdy_ff      (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_arready_unq),            .dout(ifu_bus_arready_unq_ff));
-   rvdff_fpga #(1)               bus_rsp_vld_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_rvalid_unq),             .dout(ifu_bus_rvalid_unq_ff));
-   rvdff_fpga #(1)               bus_cmd_ff      (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_arvalid),                .dout(ifu_bus_arvalid_ff));
-   rvdff_fpga #(2)               bus_rsp_cmd_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_axi_rresp[1:0]),             .dout(ifu_bus_rresp_ff[1:0]));
-   rvdff_fpga #(pt.IFU_BUS_TAG)  bus_rsp_tag_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_axi_rid[pt.IFU_BUS_TAG-1:0]),.dout(ifu_bus_rid_ff[pt.IFU_BUS_TAG-1:0]));
-   rvdffe #(64)                  bus_data_ff     (.*, .clk(clk),     .din(ifu_axi_rdata[63:0]),            .dout(ifu_bus_rdata_ff[63:0]), .en(ifu_bus_clk_en & ifu_axi_rvalid));
-
-   assign ifu_bus_cmd_ready = ifu_axi_arready ;
-   assign ifu_bus_rsp_valid = ifu_axi_rvalid ;
-   assign ifu_bus_rsp_ready = ifu_axi_rready ;
-   assign ifu_bus_rsp_tag[pt.IFU_BUS_TAG-1:0] = ifu_axi_rid[pt.IFU_BUS_TAG-1:0] ;
-   assign ifu_bus_rsp_rdata[63:0] = ifu_axi_rdata[63:0] ;
-   assign ifu_bus_rsp_opc[1:0] = {ifu_axi_rresp[1:0]} ;
-
-
-
-
-
-
-
-
-
-   // Create write signals so we can write to the miss-buffer directly from the bus.
-
-   assign ifu_bus_rvalid            =  ifu_bus_rsp_valid & bus_ifu_bus_clk_en ;
-
-
-
-   assign ifu_bus_arready            =  ifu_bus_arready_unq    & bus_ifu_bus_clk_en    ;
-   assign ifu_bus_arready_ff         =  ifu_bus_arready_unq_ff & bus_ifu_bus_clk_en_ff ;
-
-   assign ifu_bus_rvalid_ff          =  ifu_bus_rvalid_unq_ff & bus_ifu_bus_clk_en_ff ;
-   assign bus_cmd_sent               =  ifu_bus_arvalid & ifu_bus_arready & miss_pending & ~dec_tlu_force_halt;
-   assign bus_inc_data_beat_cnt      = (bus_ifu_wr_en_ff & ~bus_last_data_beat & ~dec_tlu_force_halt) ;
-   assign bus_reset_data_beat_cnt    =  ic_act_miss_f | (bus_ifu_wr_en_ff &  bus_last_data_beat) | dec_tlu_force_halt;
-   assign bus_hold_data_beat_cnt     = ~bus_inc_data_beat_cnt & ~bus_reset_data_beat_cnt ;
-
-   assign bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] = ({pt.ICACHE_BEAT_BITS{bus_reset_data_beat_cnt}} & (pt.ICACHE_BEAT_BITS)'(0)) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_inc_data_beat_cnt}}   & (bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] + {{pt.ICACHE_BEAT_BITS-1{1'b0}},1'b1})) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_hold_data_beat_cnt}}  &  bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]);
-
-
-   assign last_data_recieved_in =  (bus_ifu_wr_en_ff &  bus_last_data_beat & ~scnd_miss_req) | (last_data_recieved_ff & ~ic_act_miss_f) ;
-
-
-
-// Request Address Count
-   assign bus_new_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] = (~miss_pending                    ) ? imb_ff[pt.ICACHE_BEAT_ADDR_HI:3] :
-                                                           (                scnd_miss_req_q  ) ? imb_scnd_ff[pt.ICACHE_BEAT_ADDR_HI:3] :
-                                                           ( bus_cmd_sent                    ) ? (bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] + 3'b001) :
-                                                                                                  bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0];
-
-   rvdff_fpga #(pt.ICACHE_BEAT_BITS)  bus_rd_addr_ff (.*,  .clk(busclk_reset),  .clken (bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .rawclk(clk), .din ({bus_new_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0]}), .dout({bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0]}));
-
-
-
-// command beat Count
-   assign bus_inc_cmd_beat_cnt              =  ifu_bus_cmd_valid    &  ifu_bus_cmd_ready & miss_pending & ~dec_tlu_force_halt;
-   assign bus_reset_cmd_beat_cnt_0          =  (ic_act_miss_f        & ~uncacheable_miss_in) | dec_tlu_force_halt ;
-   assign bus_reset_cmd_beat_cnt_secondlast =  ic_act_miss_f        &  uncacheable_miss_in ;
-   assign bus_hold_cmd_beat_cnt             = ~bus_inc_cmd_beat_cnt & ~(ic_act_miss_f | scnd_miss_req | dec_tlu_force_halt) ;
-   assign bus_cmd_beat_en                   =  bus_inc_cmd_beat_cnt | ic_act_miss_f | dec_tlu_force_halt;
-
-   assign bus_new_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0] =  ({pt.ICACHE_BEAT_BITS{bus_reset_cmd_beat_cnt_0}}       & (pt.ICACHE_BEAT_BITS)'(0) ) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_reset_cmd_beat_cnt_secondlast}} & (pt.ICACHE_BEAT_BITS)'(pt.ICACHE_SCND_LAST)) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_inc_cmd_beat_cnt}}              & (bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0] + {{pt.ICACHE_BEAT_BITS-1{1'b0}}, 1'b1})) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_hold_cmd_beat_cnt}}             &  bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]) ;
-
-
-   rvclkhdr bus_clk_reset(.en(bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .l1clk(busclk_reset), .*);
-
-
-
-
-   rvdffs_fpga #(pt.ICACHE_BEAT_BITS)  bus_cmd_beat_ff (.*, .clk(busclk_reset), .clken (bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .rawclk(clk), .en (bus_cmd_beat_en), .din ({bus_new_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]}),
-                    .dout({bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]}));
-
-
-    assign bus_last_data_beat     =  uncacheable_miss_ff ? (bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] == {{pt.ICACHE_BEAT_BITS-1{1'b0}},1'b1}) : (&bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]);
-
-   assign  bus_ifu_wr_en            =  ifu_bus_rvalid     & miss_pending ;
-   assign  bus_ifu_wr_en_ff         =  ifu_bus_rvalid_ff  & miss_pending ;
-   assign  bus_ifu_wr_en_ff_q       =  ifu_bus_rvalid_ff  & miss_pending & ~uncacheable_miss_ff & ~(|ifu_bus_rresp_ff[1:0]) & write_ic_16_bytes; // qualify with no-error conditions ;
-   assign  bus_ifu_wr_en_ff_wo_err  =  ifu_bus_rvalid_ff & miss_pending &  ~uncacheable_miss_ff;
-
-
-   rvdffie #(10) misc_ff
-       ( .*,
-         .clk(free_l2clk),
-         .din( {ic_act_miss_f,        ifu_wr_cumulative_err,exu_flush_final,  ic_crit_wd_rdy_new_in,bus_ifu_bus_clk_en,   scnd_miss_req_in,bus_cmd_req_in,  last_data_recieved_in,
-ifc_dma_access_ok_d,   dma_iccm_req}),
-         .dout({ic_act_miss_f_delayed,ifu_wr_data_comb_err_ff,  flush_final_f,ic_crit_wd_rdy_new_ff,bus_ifu_bus_clk_en_ff,scnd_miss_req_q, bus_cmd_req_hold,last_data_recieved_ff,
-ifc_dma_access_ok_prev,dma_iccm_req_f})
-         );
-
-   rvdffie #(.WIDTH(pt.ICACHE_BEAT_BITS+5),.OVERRIDE(1)) misc1_ff
-       ( .*,
-         .clk(free_l2clk),
-         .din( {reset_ic_in,sel_mb_addr,   bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0],ifc_region_acc_fault_memory_bf,ic_debug_rd_en,       ic_debug_rd_en_ff}),
-         .dout({reset_ic_ff,sel_mb_addr_ff,bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0],    ifc_region_acc_fault_memory_f, ic_debug_rd_en_ff,ifu_ic_debug_rd_data_valid})
-         );
-
-   assign    reset_tag_valid_for_miss = ic_act_miss_f_delayed & (miss_state == CRIT_BYP_OK) & ~uncacheable_miss_ff;
-   assign    bus_ifu_wr_data_error    = |ifu_bus_rsp_opc[1:0] &  ifu_bus_rvalid  & miss_pending;
-   assign    bus_ifu_wr_data_error_ff = |ifu_bus_rresp_ff[1:0] &  ifu_bus_rvalid_ff  & miss_pending;
-
-
-   assign ic_crit_wd_rdy   =  ic_crit_wd_rdy_new_in | ic_crit_wd_rdy_new_ff ;
-   assign last_beat        =  bus_last_data_beat & bus_ifu_wr_en_ff;
-   assign reset_beat_cnt    = bus_reset_data_beat_cnt ;
-
-// DMA
-   // Making sure that the dma_access is allowed when we have 2 back to back dma_access_ok. Also gating with current state == idle
-   assign ifc_dma_access_ok_d  = ifc_dma_access_ok &  ~iccm_correct_ecc & ~iccm_dma_sb_error;
-   assign ifc_dma_access_q_ok  = ifc_dma_access_ok &  ~iccm_correct_ecc & ifc_dma_access_ok_prev &  (perr_state == ERR_IDLE)  & ~iccm_dma_sb_error;
-   assign iccm_ready           = ifc_dma_access_q_ok ;
-
-   logic [1:0]        iccm_ecc_word_enable;
-
-    if (pt.ICCM_ENABLE == 1 ) begin: iccm_enabled
-         logic  [3:2] dma_mem_addr_ff  ;
-         logic  iccm_dma_rden    ;
-
-         logic  iccm_dma_ecc_error_in;
-         logic  [13:0] dma_mem_ecc;
-         logic  [63:0] iccm_dma_rdata_in;
-         logic  [31:0] iccm_dma_rdata_1_muxed;
-         logic [1:0] [31:0] iccm_corrected_data;
-         logic [1:0] [06:0] iccm_corrected_ecc;
-
-
-         logic [1:0]        iccm_double_ecc_error;
-
-
-         logic [pt.ICCM_BITS-1:2]       iccm_rw_addr_f;
-
-         logic [31:0]       iccm_corrected_data_f_mux;
-         logic [06:0]       iccm_corrected_ecc_f_mux;
-         logic              iccm_dma_rvalid_in;
-         logic [77:0]       iccm_rdmux_data;
-         logic              iccm_rd_ecc_single_err_hold_in ;
-         logic [2:0]        dma_mem_tag_ff;
-
-
-
-
-         assign iccm_wren          =  (ifc_dma_access_q_ok & dma_iccm_req &  dma_mem_write) | iccm_correct_ecc;
-         assign iccm_rden          =  (ifc_dma_access_q_ok & dma_iccm_req & ~dma_mem_write) | (ifc_iccm_access_bf & ifc_fetch_req_bf);
-         assign iccm_dma_rden      =  (ifc_dma_access_q_ok & dma_iccm_req & ~dma_mem_write)                     ;
-         assign iccm_wr_size[2:0]  =  {3{dma_iccm_req}}    & dma_mem_sz[2:0] ;
-
-         rvecc_encode  iccm_ecc_encode0 (
-                           .din(dma_mem_wdata[31:0]),
-                           .ecc_out(dma_mem_ecc[6:0]));
-
-         rvecc_encode  iccm_ecc_encode1 (
-                           .din(dma_mem_wdata[63:32]),
-                           .ecc_out(dma_mem_ecc[13:7]));
-
-        assign iccm_wr_data[77:0]   =  (iccm_correct_ecc & ~(ifc_dma_access_q_ok & dma_iccm_req)) ?  {iccm_ecc_corr_data_ff[38:0], iccm_ecc_corr_data_ff[38:0]} :
-                                       {dma_mem_ecc[13:7],dma_mem_wdata[63:32], dma_mem_ecc[6:0],dma_mem_wdata[31:0]};
-
-         assign iccm_dma_rdata_1_muxed[31:0] = dma_mem_addr_ff[2] ?  iccm_corrected_data[0][31:0] : iccm_corrected_data[1][31:0] ;
-         assign iccm_dma_rdata_in[63:0]      = iccm_dma_ecc_error_in ? {2{dma_mem_addr[31:0]}} : {iccm_dma_rdata_1_muxed[31:0], iccm_corrected_data[0]};
-         assign iccm_dma_ecc_error_in   =   |(iccm_double_ecc_error[1:0]);
-
-         rvdffe    #(64) dma_data_ff      (.*, .clk(clk), .en(iccm_dma_rvalid_in),  .din(iccm_dma_rdata_in[63:0]), .dout(iccm_dma_rdata[63:0]));
-         rvdffie   #(11) dma_misc_bits    (.*, .clk(free_l2clk), .din({dma_mem_tag[2:0],
-                                                                       dma_mem_tag_ff[2:0],
-                                                                       dma_mem_addr[3:2],
-                                                                       iccm_dma_rden,
-                                                                       iccm_dma_rvalid_in,
-                                                                       iccm_dma_ecc_error_in }),
-                                                                .dout({dma_mem_tag_ff[2:0],
-                                                                       iccm_dma_rtag[2:0],
-                                                                       dma_mem_addr_ff[3:2],
-                                                                       iccm_dma_rvalid_in,
-                                                                       iccm_dma_rvalid,
-                                                                       iccm_dma_ecc_error }));
-
-         assign iccm_rw_addr[pt.ICCM_BITS-1:1]    = (  ifc_dma_access_q_ok & dma_iccm_req  & ~iccm_correct_ecc) ? dma_mem_addr[pt.ICCM_BITS-1:1] :
-                                                 (~(ifc_dma_access_q_ok & dma_iccm_req) &  iccm_correct_ecc) ? {iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2],1'b0} : ifc_fetch_addr_bf[pt.ICCM_BITS-1:1] ;
-
-
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// ECC checking logic for ICCM data.                                               //
-/////////////////////////////////////////////////////////////////////////////////////
-
-  logic [3:0] ic_fetch_val_int_f;
-  logic [3:0] ic_fetch_val_shift_right;
-  assign ic_fetch_val_int_f[3:0] = {2'b00 , ic_fetch_val_f[1:0] } ;
-  assign ic_fetch_val_shift_right[3:0] = {ic_fetch_val_int_f << ifu_fetch_addr_int_f[1] } ;
-
-   assign iccm_rdmux_data[77:0] = iccm_rd_data_ecc[77:0];
-   for (genvar i=0; i < 2 ; i++) begin : ICCM_ECC_CHECK
-      assign iccm_ecc_word_enable[i] = ((|ic_fetch_val_shift_right[(2*i+1):(2*i)] & ~exu_flush_final & sel_iccm_data) | iccm_dma_rvalid_in) & ~dec_tlu_core_ecc_disable;
-   rvecc_decode  ecc_decode (
-                           .en(iccm_ecc_word_enable[i]),
-                           .sed_ded ( 1'b0 ),    // 1 : means only detection
-                           .din(iccm_rdmux_data[(39*i+31):(39*i)]),
-                           .ecc_in(iccm_rdmux_data[(39*i+38):(39*i+32)]),
-                           .dout(iccm_corrected_data[i][31:0]),
-                           .ecc_out(iccm_corrected_ecc[i][6:0]),
-                           .single_ecc_error(iccm_single_ecc_error[i]),
-                           .double_ecc_error(iccm_double_ecc_error[i]));
-end
-
-  assign iccm_rd_ecc_single_err  = (|iccm_single_ecc_error[1:0] ) & ifc_iccm_access_f & ifc_fetch_req_f;
-  assign iccm_rd_ecc_double_err[1:0]  = ~ifu_fetch_addr_int_f[1] ? ({iccm_double_ecc_error[0], iccm_double_ecc_error[0]} ) & {2{ifc_iccm_access_f}} :
-                                                                   ({iccm_double_ecc_error[1], iccm_double_ecc_error[0]} ) & {2{ifc_iccm_access_f}} ;
-
-  assign iccm_corrected_data_f_mux[31:0] = iccm_single_ecc_error[0] ? iccm_corrected_data[0] : iccm_corrected_data[1];
-  assign iccm_corrected_ecc_f_mux[6:0]   = iccm_single_ecc_error[0] ? iccm_corrected_ecc[0]  : iccm_corrected_ecc[1];
-
-  assign iccm_ecc_write_status           = ((iccm_rd_ecc_single_err & ~iccm_rd_ecc_single_err_ff)  & ~exu_flush_final) | iccm_dma_sb_error;
-  assign iccm_rd_ecc_single_err_hold_in  = (iccm_rd_ecc_single_err | iccm_rd_ecc_single_err_ff) & ~exu_flush_final ;
-  assign iccm_error_start                =  iccm_rd_ecc_single_err;
-  assign iccm_ecc_corr_index_in[pt.ICCM_BITS-1:2] = iccm_single_ecc_error[0] ? iccm_rw_addr_f[pt.ICCM_BITS-1:2] : iccm_rw_addr_f[pt.ICCM_BITS-1:2] + 1'b1 ;
-
-   rvdffie #(pt.ICCM_BITS-1) iccm_index_f   (.*, .clk(free_l2clk), .din({iccm_rw_addr[pt.ICCM_BITS-1:2],
-                                                                         iccm_rd_ecc_single_err_hold_in
-                                                                                                       }),
-                                                                  .dout({iccm_rw_addr_f[pt.ICCM_BITS-1:2],
-                                                                         iccm_rd_ecc_single_err_ff}));
-
-   rvdffe #((39+(pt.ICCM_BITS-2)))      ecc_dat0_ff  (
-                                                      .clk(clk),
-                                                      .din({iccm_corrected_ecc_f_mux[6:0],  iccm_corrected_data_f_mux[31:0],iccm_ecc_corr_index_in[pt.ICCM_BITS-1:2]}),
-                                                      .dout({iccm_ecc_corr_data_ff[38:0]   ,iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2]}),
-                                                      .en(iccm_ecc_write_status),
-                                                      .*
-                                                      );
-
-     end else begin : iccm_disabled
-         assign iccm_dma_rvalid = 1'b0 ;
-         assign iccm_dma_ecc_error = 1'b0 ;
-         assign iccm_dma_rdata[63:0] = '0 ;
-         assign iccm_single_ecc_error = '0 ;
-         assign iccm_dma_rtag         = '0 ;
-
-
-
-
-
-
-         assign iccm_rd_ecc_single_err                 = 1'b0 ;
-         assign iccm_rd_ecc_double_err                 = '0 ;
-         assign iccm_rd_ecc_single_err_ff              = 1'b0 ;
-         assign iccm_error_start                         = 1'b0;
-         assign iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2]  =  '0;
-         assign iccm_ecc_corr_data_ff[38:0]            =  '0;
-         assign iccm_ecc_write_status                  =  '0;
-
-
-
-
-
-
-    end
-
-
-////// ICCM signals
-
-
- assign   ic_rd_en    =  (ifc_fetch_req_bf & ~ifc_fetch_uncacheable_bf & ~ifc_iccm_access_bf  &
-                            ~(((miss_state == STREAM) & ~miss_state_en)                                       |
-                              ((miss_state == CRIT_BYP_OK) & ~miss_state_en)                                  |
-                              ((miss_state == STALL_SCND_MISS) & ~miss_state_en)                              |
-                              ((miss_state == MISS_WAIT) & ~miss_state_en)                                    |
-                              ((miss_state == CRIT_WRD_RDY) & ~miss_state_en)  |
-                              ((miss_state == CRIT_BYP_OK) &  miss_state_en &  (miss_nxtstate == MISS_WAIT))  ))  |
-                             ( ifc_fetch_req_bf & exu_flush_final  & ~ifc_fetch_uncacheable_bf & ~ifc_iccm_access_bf )     ;
-
-logic   ic_real_rd_wp_unused;
-assign  ic_real_rd_wp_unused  =  (ifc_fetch_req_bf &  ~ifc_iccm_access_bf  &  ~ifc_region_acc_fault_final_bf & ~dec_tlu_fence_i_wb & ~stream_miss_f & ~ic_act_miss_f &
-                            ~(((miss_state == STREAM) & ~miss_state_en) |
-                              ((miss_state == CRIT_BYP_OK) & ~miss_state_en & ~(miss_nxtstate == MISS_WAIT)) |
-                              ((miss_state == CRIT_BYP_OK) &  miss_state_en &  (miss_nxtstate == MISS_WAIT)) |
-                              ((miss_state == MISS_WAIT) & ~miss_state_en) |
-                              ((miss_state == STALL_SCND_MISS) & ~miss_state_en)  |
-                              ((miss_state == CRIT_WRD_RDY) & ~miss_state_en)  |
-                              ((miss_nxtstate == STREAM) &  miss_state_en)  |
-                              ((miss_state == SCND_MISS) & ~miss_state_en))) |
-                          (ifc_fetch_req_bf &  ~ifc_iccm_access_bf  &  ~ifc_region_acc_fault_final_bf & ~dec_tlu_fence_i_wb & ~stream_miss_f & exu_flush_final)  ;
-
-
-assign ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] = bus_ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] & {pt.ICACHE_NUM_WAYS{write_ic_16_bytes}};
-assign ic_write_stall                =  write_ic_16_bytes &  ~((((miss_state== CRIT_BYP_OK) | ((miss_state==STREAM) & ~(exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f ))) & ~(bus_ifu_wr_en_ff & last_beat & ~uncacheable_miss_ff)));
-
-
-
-
-///////////////////////////////////////////////////////////////
-// Icache status and LRU
-///////////////////////////////////////////////////////////////
-logic [pt.ICACHE_NUM_WAYS-1:0] ic_tag_valid_unq;
-if (pt.ICACHE_ENABLE == 1 ) begin: icache_enabled
-   assign  ic_valid  = ~ifu_wr_cumulative_err_data & ~(reset_ic_in | reset_ic_ff) & ~reset_tag_valid_for_miss;
-
-   assign ifu_status_wr_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] = ((ic_debug_rd_en | ic_debug_wr_en ) & ic_debug_tag_array) ?
-                                                                           ic_debug_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] :
-                                                                           ifu_status_wr_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO];
-
-   // status
-
-         assign way_status_wr_en_w_debug = way_status_wr_en | (ic_debug_wr_en  & ic_debug_tag_array);
-
-         assign way_status_new_w_debug[pt.ICACHE_STATUS_BITS-1:0]  = (ic_debug_wr_en  & ic_debug_tag_array) ? (pt.ICACHE_STATUS_BITS == 1) ? ic_debug_wr_data[4] : ic_debug_wr_data[6:4] :
-                                                way_status_new[pt.ICACHE_STATUS_BITS-1:0] ;
-
-   rvdffie #(.WIDTH(pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO+1+pt.ICACHE_STATUS_BITS),.OVERRIDE(1))  status_misc_ff
-     (.*,
-      .clk(free_l2clk),
-      .din({ ifu_status_wr_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO], way_status_wr_en_w_debug, way_status_new_w_debug[pt.ICACHE_STATUS_BITS-1:0]}),
-      .dout({ifu_status_wr_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],      way_status_wr_en_ff,      way_status_new_ff[pt.ICACHE_STATUS_BITS-1:0]} )
-      );
-
-   logic [(pt.ICACHE_TAG_DEPTH/8)-1 : 0] way_status_clken;
-   logic [(pt.ICACHE_TAG_DEPTH/8)-1 : 0] way_status_clk;
-
-   for (genvar i=0 ; i<pt.ICACHE_TAG_DEPTH/8 ; i++) begin : CLK_GRP_WAY_STATUS
-      assign way_status_clken[i] = (ifu_status_wr_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+3] == i );
-
-           rvclkhdr way_status_cgc ( .en(way_status_clken[i]),   .l1clk(way_status_clk[i]), .* );
-
-
-
-      for (genvar j=0 ; j<8 ; j++) begin : WAY_STATUS
-         rvdffs_fpga #(pt.ICACHE_STATUS_BITS) ic_way_status (.*,
-                   .clk(way_status_clk[i]),
-                   .clken(way_status_clken[i]),
-                   .rawclk(clk),
-                   .en(((ifu_status_wr_addr_ff[pt.ICACHE_TAG_INDEX_LO+2:pt.ICACHE_TAG_INDEX_LO] == j) & way_status_wr_en_ff)),
-                   .din(way_status_new_ff[pt.ICACHE_STATUS_BITS-1:0]),
-                   .dout(way_status_out[8*i+j]));
-      end  // WAY_STATUS
-   end  // CLK_GRP_WAY_STATUS
-
-  always_comb begin : way_status_out_mux
-      way_status[pt.ICACHE_STATUS_BITS-1:0] = '0 ;
-      for (int j=0; j< pt.ICACHE_TAG_DEPTH; j++) begin : status_mux_loop
-        if (ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO)'(j)) begin : mux_out
-         way_status[pt.ICACHE_STATUS_BITS-1:0] =  way_status_out[j];
-        end
-      end
-  end
-
-         assign ifu_ic_rw_int_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] = ((ic_debug_rd_en | ic_debug_wr_en ) & ic_debug_tag_array) ?
-                                                                        ic_debug_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] :
-                                                                        ifu_ic_rw_int_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO];
-         assign ifu_tag_wren_w_debug[pt.ICACHE_NUM_WAYS-1:0] = ifu_tag_wren[pt.ICACHE_NUM_WAYS-1:0] | ic_debug_tag_wr_en[pt.ICACHE_NUM_WAYS-1:0] ;
-
-         assign ic_valid_w_debug = (ic_debug_wr_en & ic_debug_tag_array) ? ic_debug_wr_data[0] : ic_valid;
-
-         rvdffie #(pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO+pt.ICACHE_NUM_WAYS+1) tag_addr_ff (.*,
-                                                                                              .clk(free_l2clk),
-                                                                                              .din({ifu_ic_rw_int_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],
-                                                                                                    ifu_tag_wren_w_debug[pt.ICACHE_NUM_WAYS-1:0],
-                                                                                                    ic_valid_w_debug}),
-                                                                                              .dout({ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],
-                                                                                                     ifu_tag_wren_ff[pt.ICACHE_NUM_WAYS-1:0],
-                                                                                                     ic_valid_ff})
-                                                                                              );
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_DEPTH-1:0] ic_tag_valid_out ;
-
-   logic [(pt.ICACHE_TAG_DEPTH/32)-1:0] [pt.ICACHE_NUM_WAYS-1:0] tag_valid_clken ;
-   logic [(pt.ICACHE_TAG_DEPTH/32)-1:0] [pt.ICACHE_NUM_WAYS-1:0] tag_valid_clk   ;
-
-   for (genvar i=0 ; i<pt.ICACHE_TAG_DEPTH/32 ; i++) begin : CLK_GRP_TAG_VALID
-      for (genvar j=0; j<pt.ICACHE_NUM_WAYS; j++) begin : way_clken
-      if (pt.ICACHE_TAG_DEPTH == 32 ) begin
-        assign tag_valid_clken[i][j] =  ifu_tag_wren_ff[j] | perr_err_inv_way[j] | reset_all_tags;
-      end else begin
-         assign tag_valid_clken[i][j] = (((ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+5] == i ) &  ifu_tag_wren_ff[j] ) |
-                                        ((perr_ic_index_ff     [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+5] == i ) &  perr_err_inv_way[j]) | reset_all_tags);
-      end
-
-
-           rvclkhdr way_status_cgc ( .en(tag_valid_clken[i][j]),   .l1clk(tag_valid_clk[i][j]), .* );
-
-
-
-
-      for (genvar k=0 ; k<32 ; k++) begin : TAG_VALID
-         rvdffs_fpga #(1) ic_way_tagvalid_dup (.*,
-                   .clk(tag_valid_clk[i][j]),
-                   .clken(tag_valid_clken[i][j]),
-                   .rawclk(clk),
-                   .en(((ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (k + 32*i)) & ifu_tag_wren_ff[j] ) |
-                       ((perr_ic_index_ff     [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (k + 32*i)) & perr_err_inv_way[j]) | reset_all_tags),
-                   .din(ic_valid_ff & ~reset_all_tags & ~perr_sel_invalidate),
-                   .dout(ic_tag_valid_out[j][32*i+k]));
-      end
-      end
-   end
-
-
-  always_comb begin : tag_valid_out_mux
-      ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0] = '0;
-      for (int j=0; j< pt.ICACHE_TAG_DEPTH; j++) begin : tag_valid_loop
-        if (ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO)'(j)) begin : valid_out
-           for ( int k=0; k<pt.ICACHE_NUM_WAYS; k++) begin
-             ic_tag_valid_unq[k] |= ic_tag_valid_out[k][j];
-        end
-      end
-      end
-  end
-   //   four-way set associative - three bits
-//   each bit represents one branch point in a binary decision tree; let 1
-//   represent that the left side has been referenced more recently than the
-//   right side, and 0 vice-versa
-//
-//              are all 4 ways valid?
-//                   /       \
-//                  |        no, use an invalid way.
-//                  |
-//                  |
-//             bit_0 == 0?             state | replace      ref to | next state
-//               /       \             ------+--------      -------+-----------
-//              y         n             x00  |  way_0      way_0 |    _11
-//             /           \            x10  |  way_1      way_1 |    _01
-//      bit_1 == 0?    bit_2 == 0?      0x1  |  way_2      way_2 |    1_0
-//        /    \          /    \        1x1  |  way_3      way_3 |    0_0
-//       y      n        y      n
-//      /        \      /        \        ('x' means don't care       ('_' means unchanged)
-//    way_0    way_1  way_2     way_3      don't care)
-
-   if (pt.ICACHE_NUM_WAYS == 4) begin: four_way_plru
-   assign replace_way_mb_any[3] = ( way_status_mb_ff[2]  & way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[3]& tagv_mb_ff[2] &  tagv_mb_ff[1] &  tagv_mb_ff[0]) ;
-   assign replace_way_mb_any[2] = (~way_status_mb_ff[2]  & way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[2]& tagv_mb_ff[1] &  tagv_mb_ff[0]) ;
-   assign replace_way_mb_any[1] = ( way_status_mb_ff[1] & ~way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[1]& tagv_mb_ff[0] ) ;
-   assign replace_way_mb_any[0] = (~way_status_mb_ff[1] & ~way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[0] ) ;
-
-   assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = ({3{~exu_flush_final & ic_rd_hit[0]}} & {way_status[2] , 1'b1 , 1'b1}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[1]}} & {way_status[2] , 1'b0 , 1'b1}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[2]}} & {1'b1 ,way_status[1]  , 1'b0}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[3]}} & {1'b0 ,way_status[1]  , 1'b0}) ;
-
-  assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = ({3{replace_way_mb_any[0]}} & {way_status_mb_ff[2] , 1'b1 , 1'b1}) |
-                                   ({3{replace_way_mb_any[1]}} & {way_status_mb_ff[2] , 1'b0 , 1'b1}) |
-                                   ({3{replace_way_mb_any[2]}} & {1'b1 ,way_status_mb_ff[1]  , 1'b0}) |
-                                   ({3{replace_way_mb_any[3]}} & {1'b0 ,way_status_mb_ff[1]  , 1'b0}) ;
-  end
-   else begin : two_ways_plru
-      assign replace_way_mb_any[0]                      = (~way_status_mb_ff  & tagv_mb_ff[0] & tagv_mb_ff[1]) | ~tagv_mb_ff[0];
-      assign replace_way_mb_any[1]                      = ( way_status_mb_ff  & tagv_mb_ff[0] & tagv_mb_ff[1]) | ~tagv_mb_ff[1] & tagv_mb_ff[0];
-      assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = ic_rd_hit[0];
-      assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = replace_way_mb_any[0];
-
-   end
-  // Make sure to select the way_status_hit_new even when in hit_under_miss.
-  assign way_status_new[pt.ICACHE_STATUS_BITS-1:0]     = (bus_ifu_wr_en_ff_q  & last_beat )  ? way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] :
-                                                          way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] ;
-
-
-  assign way_status_wr_en  = (bus_ifu_wr_en_ff_q  & last_beat) | ic_act_hit_f;
-
-   for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin  : bus_wren_loop
-      assign bus_wren[i]           = bus_ifu_wr_en_ff_q & replace_way_mb_any[i] & miss_pending ;
-      assign bus_wren_last[i]      = bus_ifu_wr_en_ff_wo_err & replace_way_mb_any[i] & miss_pending & bus_last_data_beat;
-      assign ifu_tag_wren[i]       = bus_wren_last[i] | wren_reset_miss[i];
-      assign wren_reset_miss[i]    = replace_way_mb_any[i] & reset_tag_valid_for_miss ;
-
-   end
-   assign bus_ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] = bus_wren[pt.ICACHE_NUM_WAYS-1:0];
-
-
-end else begin: icache_disabled
-   assign ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0]      = '0;
-   assign way_status[pt.ICACHE_STATUS_BITS-1:0]         = '0;
-   assign replace_way_mb_any[pt.ICACHE_NUM_WAYS-1:0]    = '0;
-   assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = '0;
-   assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = '0;
-   assign way_status_new[pt.ICACHE_STATUS_BITS-1:0]     = '0;
-   assign way_status_wr_en                           = '0;
-   assign bus_wren[pt.ICACHE_NUM_WAYS-1:0]              = '0;
-
-end
-
-   assign ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0] = ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0]   & {pt.ICACHE_NUM_WAYS{(~fetch_uncacheable_ff & ifc_fetch_req_f_raw) }} ;
-   assign ic_debug_tag_val_rd_out           = |(ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0] &  ic_debug_way_ff[pt.ICACHE_NUM_WAYS-1:0]   & {pt.ICACHE_NUM_WAYS{ic_debug_rd_en_ff}}) ;
-///////////////////////////////////////////
-// PMU signals
-///////////////////////////////////////////
-
- assign ifu_pmu_ic_miss_in   = ic_act_miss_f ;
- assign ifu_pmu_ic_hit_in    = ic_act_hit_f  ;
- assign ifu_pmu_bus_error_in = |ifc_bus_acc_fault_f;
- assign ifu_pmu_bus_trxn_in  = bus_cmd_sent ;
- assign ifu_pmu_bus_busy_in  = ifu_bus_arvalid_ff & ~ifu_bus_arready_ff & miss_pending ;
-
-   rvdffie #(9) ifu_pmu_sigs_ff (.*,
-                    .clk (free_l2clk),
-                    .din ({ifc_fetch_uncacheable_bf, ifc_fetch_req_qual_bf, dma_sb_err_state, dec_tlu_fence_i_wb,
-                           ifu_pmu_ic_miss_in,
-                           ifu_pmu_ic_hit_in,
-                           ifu_pmu_bus_error_in,
-                           ifu_pmu_bus_busy_in,
-                           ifu_pmu_bus_trxn_in
-                          }),
-                    .dout({fetch_uncacheable_ff, ifc_fetch_req_f_raw, dma_sb_err_state_ff, reset_all_tags,
-                           ifu_pmu_ic_miss,
-                           ifu_pmu_ic_hit,
-                           ifu_pmu_bus_error,
-                           ifu_pmu_bus_busy,
-                           ifu_pmu_bus_trxn
-                           }));
-
-
-///////////////////////////////////////////////////////
-// Cache debug logic                                 //
-///////////////////////////////////////////////////////
-assign ic_debug_addr[pt.ICACHE_INDEX_HI:3] = dec_tlu_ic_diag_pkt.icache_dicawics[pt.ICACHE_INDEX_HI-3:0] ;
-assign ic_debug_way_enc[01:00]             = dec_tlu_ic_diag_pkt.icache_dicawics[15:14] ;
-
-
-assign ic_debug_tag_array       = dec_tlu_ic_diag_pkt.icache_dicawics[16] ;
-assign ic_debug_rd_en           = dec_tlu_ic_diag_pkt.icache_rd_valid ;
-assign ic_debug_wr_en           = dec_tlu_ic_diag_pkt.icache_wr_valid ;
-
-
-assign ic_debug_way[pt.ICACHE_NUM_WAYS-1:0]        = {(ic_debug_way_enc[1:0] == 2'b11),
-                                                      (ic_debug_way_enc[1:0] == 2'b10),
-                                                      (ic_debug_way_enc[1:0] == 2'b01),
-                                                      (ic_debug_way_enc[1:0] == 2'b00) };
-
-assign ic_debug_tag_wr_en[pt.ICACHE_NUM_WAYS-1:0] = {pt.ICACHE_NUM_WAYS{ic_debug_wr_en & ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-
-assign ic_debug_ict_array_sel_in      =  ic_debug_rd_en & ic_debug_tag_array ;
-
-rvdff_fpga #(01+pt.ICACHE_NUM_WAYS) ifu_debug_sel_ff (.*, .clk (debug_c1_clk),
-                    .clken(debug_c1_clken), .rawclk(clk),
-                    .din ({ic_debug_ict_array_sel_in,
-                           ic_debug_way[pt.ICACHE_NUM_WAYS-1:0]
-                          }),
-                    .dout({ic_debug_ict_array_sel_ff,
-                           ic_debug_way_ff[pt.ICACHE_NUM_WAYS-1:0]
-                           }));
-
-
-
-
-assign debug_data_clken  =  ic_debug_rd_en_ff;
-
-
-
-
-// memory protection  - equation to look identical to the LSU equation
-   assign ifc_region_acc_okay = (~(|{pt.INST_ACCESS_ENABLE0,pt.INST_ACCESS_ENABLE1,pt.INST_ACCESS_ENABLE2,pt.INST_ACCESS_ENABLE3,pt.INST_ACCESS_ENABLE4,pt.INST_ACCESS_ENABLE5,pt.INST_ACCESS_ENABLE6,pt.INST_ACCESS_ENABLE7})) |
-                               (pt.INST_ACCESS_ENABLE0 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK0)) == (pt.INST_ACCESS_ADDR0 | pt.INST_ACCESS_MASK0)) |
-                               (pt.INST_ACCESS_ENABLE1 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK1)) == (pt.INST_ACCESS_ADDR1 | pt.INST_ACCESS_MASK1)) |
-                               (pt.INST_ACCESS_ENABLE2 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK2)) == (pt.INST_ACCESS_ADDR2 | pt.INST_ACCESS_MASK2)) |
-                               (pt.INST_ACCESS_ENABLE3 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK3)) == (pt.INST_ACCESS_ADDR3 | pt.INST_ACCESS_MASK3)) |
-                               (pt.INST_ACCESS_ENABLE4 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK4)) == (pt.INST_ACCESS_ADDR4 | pt.INST_ACCESS_MASK4)) |
-                               (pt.INST_ACCESS_ENABLE5 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK5)) == (pt.INST_ACCESS_ADDR5 | pt.INST_ACCESS_MASK5)) |
-                               (pt.INST_ACCESS_ENABLE6 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK6)) == (pt.INST_ACCESS_ADDR6 | pt.INST_ACCESS_MASK6)) |
-                               (pt.INST_ACCESS_ENABLE7 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK7)) == (pt.INST_ACCESS_ADDR7 | pt.INST_ACCESS_MASK7));
-
-   assign ifc_region_acc_fault_memory_bf   =  ~ifc_iccm_access_bf & ~ifc_region_acc_okay & ifc_fetch_req_bf;
-
-   assign ifc_region_acc_fault_final_bf = ifc_region_acc_fault_bf | ifc_region_acc_fault_memory_bf;
-
-
-
-
-endmodule  // eb1_ifu_mem_ctl
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Function: Top level file for load store unit
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-
-module eb1_lsu
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-(
-
-   input logic                             clk_override,             // Override non-functional clock gating
-   input logic                             dec_tlu_flush_lower_r,    // I0/I1 writeback flush. This is used to flush the old packets only
-   input logic                             dec_tlu_i0_kill_writeb_r, // I0 is flushed, don't writeback any results to arch state
-   input logic                             dec_tlu_force_halt,       // This will be high till TLU goes to debug halt
-
-   // chicken signals
-   input logic                             dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                             dec_tlu_wb_coalescing_disable,     // disable the write buffer coalesce
-   input logic                             dec_tlu_sideeffect_posted_disable, // disable the posted sideeffect load store to the bus
-   input logic                             dec_tlu_core_ecc_disable,          // disable the generation of the ecc
-
-   input logic [31:0]                      exu_lsu_rs1_d,        // address rs operand
-   input logic [31:0]                      exu_lsu_rs2_d,        // store data
-   input logic [11:0]                      dec_lsu_offset_d,     // address offset operand
-
-   input                                   eb1_lsu_pkt_t lsu_p,  // lsu control packet
-   input logic                             dec_lsu_valid_raw_d,   // Raw valid for address computation
-   input logic [31:0]                      dec_tlu_mrac_ff,       // CSR for memory region control
-
-   output logic [31:0]                     lsu_result_m,          // lsu load data
-   output logic [31:0]                     lsu_result_corr_r,     // This is the ECC corrected data going to RF
-   output logic                            lsu_load_stall_any,    // This is for blocking loads in the decode
-   output logic                            lsu_store_stall_any,   // This is for blocking stores in the decode
-   output logic                            lsu_fastint_stall_any, // Stall the fastint in decode-1 stage
-   output logic                            lsu_idle_any,          // lsu buffers are empty and no instruction in the pipeline. Doesn't include DMA
-   output logic                            lsu_active,            // Used to turn off top level clk
-
-   output logic [31:1]                     lsu_fir_addr,        // fast interrupt address
-   output logic [1:0]                      lsu_fir_error,       // Error during fast interrupt lookup
-
-   output logic                            lsu_single_ecc_error_incr,     // Increment the ecc counter
-   output eb1_lsu_error_pkt_t             lsu_error_pkt_r,               // lsu exception packet
-   output logic                            lsu_imprecise_error_load_any,  // bus load imprecise error
-   output logic                            lsu_imprecise_error_store_any, // bus store imprecise error
-   output logic [31:0]                     lsu_imprecise_error_addr_any,  // bus store imprecise error address
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,      // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,        // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,        // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r,    // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,   // the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,   // non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,     // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,         // Data of the non block load
-
-   output logic                            lsu_pmu_load_external_m,        // PMU : Bus loads
-   output logic                            lsu_pmu_store_external_m,       // PMU : Bus loads
-   output logic                            lsu_pmu_misaligned_m,           // PMU : misaligned
-   output logic                            lsu_pmu_bus_trxn,               // PMU : bus transaction
-   output logic                            lsu_pmu_bus_misaligned,         // PMU : misaligned access going to the bus
-   output logic                            lsu_pmu_bus_error,              // PMU : bus sending error back
-   output logic                            lsu_pmu_bus_busy,               // PMU : bus is not ready
-
-   // Trigger signals
-   input                                   eb1_trigger_pkt_t [3:0] trigger_pkt_any, // Trigger info from the decode
-   output logic [3:0]                      lsu_trigger_match_m,                      // lsu trigger hit (one bit per trigger)
-
-   // DCCM ports
-   output logic                            dccm_wren,       // DCCM write enable
-   output logic                            dccm_rden,       // DCCM read enable
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo, // DCCM write address low bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi, // DCCM write address hi bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo, // DCCM read address low bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi, // DCCM read address hi bank (hi and low same if aligned read)
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo, // DCCM write data for lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi, // DCCM write data for hi bank
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_lo, // DCCM read data low bank
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_hi, // DCCM read data hi bank
-
-   // PIC ports
-   output logic                            picm_wren,    // PIC memory write enable
-   output logic                            picm_rden,    // PIC memory read enable
-   output logic                            picm_mken,    // Need to read the mask for stores to determine which bits to write/forward
-   output logic [31:0]                     picm_rdaddr,  // address for pic read access
-   output logic [31:0]                     picm_wraddr,  // address for pic write access
-   output logic [31:0]                     picm_wr_data, // PIC memory write data
-   input logic [31:0]                      picm_rd_data, // PIC memory read/mask data
-
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-   input  logic                            lsu_axi_rlast,
-
-   input logic                             lsu_bus_clk_en,    // external drives a clock_en to control bus ratio
-
-   // DMA slave
-   input logic                             dma_dccm_req,       // DMA read/write to dccm
-   input logic [2:0]                       dma_mem_tag,        // DMA request tag
-   input logic [31:0]                      dma_mem_addr,       // DMA address
-   input logic [2:0]                       dma_mem_sz,         // DMA access size
-   input logic                             dma_mem_write,      // DMA access is a write
-   input logic [63:0]                      dma_mem_wdata,      // DMA write data
-
-   output logic                            dccm_dma_rvalid,     // lsu data valid for DMA dccm read
-   output logic                            dccm_dma_ecc_error,  // DMA load had ecc error
-   output logic [2:0]                      dccm_dma_rtag,       // DMA request tag
-   output logic [63:0]                     dccm_dma_rdata,      // lsu data for DMA dccm read
-   output logic                            dccm_ready,          // lsu ready for DMA access
-
-   input logic                             scan_mode,           // scan mode
-   input logic                             clk,                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                             active_clk,          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                             rst_l                // reset, active low
-
-   );
-
-
-   logic        lsu_dccm_rden_m;
-   logic        lsu_dccm_rden_r;
-   logic [31:0] store_data_m;
-   logic [31:0] store_data_r;
-   logic [31:0] store_data_hi_r, store_data_lo_r;
-   logic [31:0] store_datafn_hi_r, store_datafn_lo_r;
-   logic [31:0] sec_data_lo_m, sec_data_hi_m;
-   logic [31:0] sec_data_lo_r, sec_data_hi_r;
-
-   logic [31:0] lsu_ld_data_m;
-   logic [31:0] dccm_rdata_hi_m, dccm_rdata_lo_m;
-   logic [6:0]  dccm_data_ecc_hi_m, dccm_data_ecc_lo_m;
-   logic        lsu_single_ecc_error_m;
-   logic        lsu_double_ecc_error_m;
-
-   logic [31:0] lsu_ld_data_r;
-   logic [31:0] lsu_ld_data_corr_r;
-   logic [31:0] dccm_rdata_hi_r, dccm_rdata_lo_r;
-   logic [6:0]  dccm_data_ecc_hi_r, dccm_data_ecc_lo_r;
-   logic        single_ecc_error_hi_r, single_ecc_error_lo_r;
-   logic        lsu_single_ecc_error_r;
-   logic        lsu_double_ecc_error_r;
-   logic        ld_single_ecc_error_r, ld_single_ecc_error_r_ff;
-
-   logic [31:0] picm_mask_data_m;
-
-   logic [31:0] lsu_addr_d, lsu_addr_m, lsu_addr_r;
-   logic [31:0] end_addr_d, end_addr_m, end_addr_r;
-
-   eb1_lsu_pkt_t    lsu_pkt_d, lsu_pkt_m, lsu_pkt_r;
-   logic        lsu_i0_valid_d, lsu_i0_valid_m, lsu_i0_valid_r;
-
-   // Store Buffer signals
-   logic        store_stbuf_reqvld_r;
-   logic        ldst_stbuf_reqvld_r;
-
-   logic        lsu_commit_r;
-   logic        lsu_exc_m;
-
-   logic        addr_in_dccm_d, addr_in_dccm_m, addr_in_dccm_r;
-   logic        addr_in_pic_d, addr_in_pic_m, addr_in_pic_r;
-   logic        ldst_dual_d, ldst_dual_m, ldst_dual_r;
-   logic        addr_external_m;
-
-   logic                          stbuf_reqvld_any;
-   logic                          stbuf_reqvld_flushed_any;
-   logic [pt.LSU_SB_BITS-1:0]     stbuf_addr_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_data_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  stbuf_ecc_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r_ff, sec_data_hi_r_ff;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_hi_r_ff, sec_data_ecc_lo_r_ff;
-
-   logic                          lsu_cmpen_m;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_hi_m;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_lo_m;
-   logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_hi_m;
-   logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_lo_m;
-
-   logic        lsu_stbuf_commit_any;
-   logic        lsu_stbuf_empty_any;   // This is for blocking loads
-   logic        lsu_stbuf_full_any;
-
-    // Bus signals
-   logic        lsu_busreq_r;
-   logic        lsu_bus_buffer_pend_any;
-   logic        lsu_bus_buffer_empty_any;
-   logic        lsu_bus_buffer_full_any;
-   logic        lsu_busreq_m;
-   logic [31:0] bus_read_data_m;
-
-   logic        flush_m_up, flush_r;
-   logic        is_sideeffects_m;
-   logic [2:0]  dma_mem_tag_d, dma_mem_tag_m;
-   logic        ldst_nodma_mtor;
-   logic        dma_dccm_wen, dma_pic_wen;
-   logic [31:0] dma_dccm_wdata_lo, dma_dccm_wdata_hi;
-   logic [pt.DCCM_ECC_WIDTH-1:0] dma_dccm_wdata_ecc_lo, dma_dccm_wdata_ecc_hi;
-
-   // Clocks
-   logic        lsu_busm_clken;
-   logic        lsu_bus_obuf_c1_clken;
-   logic        lsu_c1_m_clk, lsu_c1_r_clk;
-   logic        lsu_c2_m_clk, lsu_c2_r_clk;
-   logic        lsu_store_c1_m_clk, lsu_store_c1_r_clk;
-
-   logic        lsu_stbuf_c1_clk;
-   logic        lsu_bus_ibuf_c1_clk, lsu_bus_obuf_c1_clk, lsu_bus_buf_c1_clk;
-   logic        lsu_busm_clk;
-   logic        lsu_free_c2_clk;
-
-   logic        lsu_raw_fwd_lo_m, lsu_raw_fwd_hi_m;
-   logic        lsu_raw_fwd_lo_r, lsu_raw_fwd_hi_r;
-
-   assign       lsu_raw_fwd_lo_m = (|stbuf_fwdbyteen_lo_m[pt.DCCM_BYTE_WIDTH-1:0]);
-   assign       lsu_raw_fwd_hi_m = (|stbuf_fwdbyteen_hi_m[pt.DCCM_BYTE_WIDTH-1:0]);
-
-   eb1_lsu_lsc_ctl #(.pt(pt)) lsu_lsc_ctl (.*);
-
-   // block stores in decode  - for either bus or stbuf reasons
-   assign lsu_store_stall_any = lsu_stbuf_full_any | lsu_bus_buffer_full_any | ld_single_ecc_error_r_ff;
-   assign lsu_load_stall_any = lsu_bus_buffer_full_any | ld_single_ecc_error_r_ff;
-   assign lsu_fastint_stall_any = ld_single_ecc_error_r;    // Stall the fastint in decode-1 stage
-
-   // Ready to accept dma trxns
-   // There can't be any inpipe forwarding from non-dma packet to dma packet since they can be flushed so we can't have st in r when dma is in m
-   assign dma_mem_tag_d[2:0]   = dma_mem_tag[2:0];
-   assign ldst_nodma_mtor = (lsu_pkt_m.valid & ~lsu_pkt_m.dma & (addr_in_dccm_m | addr_in_pic_m) & lsu_pkt_m.store);
-
-   assign dccm_ready = ~(dec_lsu_valid_raw_d | ldst_nodma_mtor | ld_single_ecc_error_r_ff);
-
-   assign dma_dccm_wen = dma_dccm_req & dma_mem_write & addr_in_dccm_d & dma_mem_sz[1];   // Perform DMA writes only for word/dword
-   assign dma_pic_wen  = dma_dccm_req & dma_mem_write & addr_in_pic_d;
-   assign {dma_dccm_wdata_hi[31:0], dma_dccm_wdata_lo[31:0]} = dma_mem_wdata[63:0] >> {dma_mem_addr[2:0], 3'b000};   // Shift the dma data to lower bits to make it consistent to lsu stores
-
-
-   // Generate per cycle flush signals
-   assign flush_m_up = dec_tlu_flush_lower_r;
-   assign flush_r    = dec_tlu_i0_kill_writeb_r;
-
-   // lsu idle
-   // lsu halt idle. This is used for entering the halt mode. Also, DMA accesses are allowed during fence.
-   // Indicates non-idle if there is a instruction valid in d-r or read/write buffers are non-empty since they can come with error
-   // Store buffer now have only non-dma dccm stores
-   // stbuf_empty not needed since it has only dccm stores
-   assign lsu_idle_any = ~((lsu_pkt_m.valid & ~lsu_pkt_m.dma) |
-                           (lsu_pkt_r.valid & ~lsu_pkt_r.dma)) &
-                           lsu_bus_buffer_empty_any;
-
-   assign lsu_active = (lsu_pkt_m.valid | lsu_pkt_r.valid | ld_single_ecc_error_r_ff) | ~lsu_bus_buffer_empty_any;  // This includes DMA. Used for gating top clock
-
-   // Instantiate the store buffer
-   assign store_stbuf_reqvld_r = lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_dccm_r & ~flush_r & (~lsu_pkt_r.dma | ((lsu_pkt_r.by | lsu_pkt_r.half) & ~lsu_double_ecc_error_r));
-
-   // Disable Forwarding for now
-   assign lsu_cmpen_m = lsu_pkt_m.valid & (lsu_pkt_m.load | lsu_pkt_m.store) & (addr_in_dccm_m | addr_in_pic_m);
-
-   // Bus signals
-   assign lsu_busreq_m = lsu_pkt_m.valid & ((lsu_pkt_m.load | lsu_pkt_m.store) & addr_external_m) & ~flush_m_up & ~lsu_exc_m & ~lsu_pkt_m.fast_int;
-
-   // Dual signals
-   assign ldst_dual_d  = (lsu_addr_d[2] != end_addr_d[2]);
-   assign ldst_dual_m  = (lsu_addr_m[2] != end_addr_m[2]);
-   assign ldst_dual_r  = (lsu_addr_r[2] != end_addr_r[2]);
-
-   // PMU signals
-   assign lsu_pmu_misaligned_m     = lsu_pkt_m.valid & ((lsu_pkt_m.half & lsu_addr_m[0]) | (lsu_pkt_m.word & (|lsu_addr_m[1:0])));
-   assign lsu_pmu_load_external_m  = lsu_pkt_m.valid & lsu_pkt_m.load & addr_external_m;
-   assign lsu_pmu_store_external_m = lsu_pkt_m.valid & lsu_pkt_m.store & addr_external_m;
-
-   eb1_lsu_dccm_ctl #(.pt(pt)) dccm_ctl (
-      .lsu_addr_d(lsu_addr_d[31:0]),
-      .end_addr_d(end_addr_d[pt.DCCM_BITS-1:0]),
-      .lsu_addr_m(lsu_addr_m[pt.DCCM_BITS-1:0]),
-      .lsu_addr_r(lsu_addr_r[31:0]),
-
-      .end_addr_m(end_addr_m[pt.DCCM_BITS-1:0]),
-      .end_addr_r(end_addr_r[pt.DCCM_BITS-1:0]),
-      .*
-   );
-
-   eb1_lsu_stbuf #(.pt(pt)) stbuf (
-      .lsu_addr_d(lsu_addr_d[pt.LSU_SB_BITS-1:0]),
-      .end_addr_d(end_addr_d[pt.LSU_SB_BITS-1:0]),
-
-      .*
-
-   );
-
-   eb1_lsu_ecc #(.pt(pt)) ecc (
-      .lsu_addr_r(lsu_addr_r[pt.DCCM_BITS-1:0]),
-      .end_addr_r(end_addr_r[pt.DCCM_BITS-1:0]),
-      .lsu_addr_m(lsu_addr_m[pt.DCCM_BITS-1:0]),
-      .end_addr_m(end_addr_m[pt.DCCM_BITS-1:0]),
-      .*
-   );
-
-   eb1_lsu_trigger #(.pt(pt)) trigger (
-      .store_data_m(store_data_m[31:0]),
-      .*
-   );
-
-   // Clk domain
-   eb1_lsu_clkdomain #(.pt(pt)) clkdomain (.*);
-
-   // Bus interface
-   eb1_lsu_bus_intf #(.pt(pt)) bus_intf (
-      .lsu_addr_m(lsu_addr_m[31:0] & {32{addr_external_m & lsu_pkt_m.valid}}),
-      .lsu_addr_r(lsu_addr_r[31:0] & {32{lsu_busreq_r}}),
-
-      .end_addr_m(end_addr_m[31:0] & {32{addr_external_m & lsu_pkt_m.valid}}),
-      .end_addr_r(end_addr_r[31:0] & {32{lsu_busreq_r}}),
-
-      .store_data_r(store_data_r[31:0] & {32{lsu_busreq_r}}),
-      .*
-   );
-
-   //Flops
-   rvdff #(3) dma_mem_tag_mff     (.*, .din(dma_mem_tag_d[2:0]), .dout(dma_mem_tag_m[2:0]), .clk(lsu_c1_m_clk));
-   rvdff #(2) lsu_raw_fwd_r_ff    (.*, .din({lsu_raw_fwd_hi_m, lsu_raw_fwd_lo_m}),     .dout({lsu_raw_fwd_hi_r, lsu_raw_fwd_lo_r}),     .clk(lsu_c2_r_clk));
-
-
-endmodule // eb1_lsu
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Checks the memory map for the address
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_addrcheck
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic          lsu_c2_m_clk,              // clock
-   input logic          rst_l,                     // reset
-
-   input logic [31:0]   start_addr_d,              // start address for lsu
-   input logic [31:0]   end_addr_d,                // end address for lsu
-   input eb1_lsu_pkt_t lsu_pkt_d,                 // packet in d
-   input logic [31:0]   dec_tlu_mrac_ff,           // CSR read
-   input logic [3:0]    rs1_region_d,              // address rs operand [31:28]
-
-   input logic [31:0]   rs1_d,                     // address rs operand
-
-   output logic         is_sideeffects_m,          // is sideffects space
-   output logic         addr_in_dccm_d,            // address in dccm
-   output logic         addr_in_pic_d,             // address in pic
-   output logic         addr_external_d,           // address in external
-
-   output logic         access_fault_d,            // access fault
-   output logic         misaligned_fault_d,        // misaligned
-   output logic [3:0]   exc_mscause_d,             // mscause for access/misaligned faults
-
-   output logic         fir_dccm_access_error_d,   // Fast interrupt dccm access error
-   output logic         fir_nondccm_access_error_d,// Fast interrupt dccm access error
-
-   input  logic         scan_mode                  // Scan mode
-);
-
-
-   logic        non_dccm_access_ok;
-   logic        is_sideeffects_d, is_aligned_d;
-   logic        start_addr_in_dccm_d, end_addr_in_dccm_d;
-   logic        start_addr_in_dccm_region_d, end_addr_in_dccm_region_d;
-   logic        start_addr_in_pic_d, end_addr_in_pic_d;
-   logic        start_addr_in_pic_region_d, end_addr_in_pic_region_d;
-   logic [4:0]  csr_idx;
-   logic        addr_in_iccm;
-   logic        start_addr_dccm_or_pic;
-   logic        base_reg_dccm_or_pic;
-   logic        unmapped_access_fault_d, mpu_access_fault_d, picm_access_fault_d, regpred_access_fault_d;
-   logic        regcross_misaligned_fault_d, sideeffect_misaligned_fault_d;
-   logic [3:0]  access_fault_mscause_d;
-   logic [3:0]  misaligned_fault_mscause_d;
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      // Start address check
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) start_addr_dccm_rangecheck (
-         .addr(start_addr_d[31:0]),
-         .in_range(start_addr_in_dccm_d),
-         .in_region(start_addr_in_dccm_region_d)
-      );
-
-      // End address check
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) end_addr_dccm_rangecheck (
-         .addr(end_addr_d[31:0]),
-         .in_range(end_addr_in_dccm_d),
-         .in_region(end_addr_in_dccm_region_d)
-      );
-   end else begin: Gen_dccm_disable // block: Gen_dccm_enable
-      assign start_addr_in_dccm_d = '0;
-      assign start_addr_in_dccm_region_d = '0;
-      assign end_addr_in_dccm_d = '0;
-      assign end_addr_in_dccm_region_d = '0;
-   end
-
-   if (pt.ICCM_ENABLE == 1) begin : check_iccm
-      assign addr_in_iccm =  (start_addr_d[31:28] == pt.ICCM_REGION);
-   end else begin
-     assign addr_in_iccm = 1'b0;
-   end
-
-   // PIC memory check
-   // Start address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) start_addr_pic_rangecheck (
-      .addr(start_addr_d[31:0]),
-      .in_range(start_addr_in_pic_d),
-      .in_region(start_addr_in_pic_region_d)
-   );
-
-   // End address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) end_addr_pic_rangecheck (
-      .addr(end_addr_d[31:0]),
-      .in_range(end_addr_in_pic_d),
-      .in_region(end_addr_in_pic_region_d)
-   );
-
-   assign start_addr_dccm_or_pic  = start_addr_in_dccm_region_d | start_addr_in_pic_region_d;
-   assign base_reg_dccm_or_pic    = ((rs1_region_d[3:0] == pt.DCCM_REGION) & pt.DCCM_ENABLE) | (rs1_region_d[3:0] == pt.PIC_REGION);
-   assign addr_in_dccm_d          = (start_addr_in_dccm_d & end_addr_in_dccm_d);
-   assign addr_in_pic_d           = (start_addr_in_pic_d & end_addr_in_pic_d);
-
-   assign addr_external_d   = ~(start_addr_in_dccm_region_d | start_addr_in_pic_region_d);
-   assign csr_idx[4:0]       = {start_addr_d[31:28], 1'b1};
-   assign is_sideeffects_d = dec_tlu_mrac_ff[csr_idx] & ~(start_addr_in_dccm_region_d | start_addr_in_pic_region_d | addr_in_iccm) & lsu_pkt_d.valid & (lsu_pkt_d.store | lsu_pkt_d.load);  //every region has the 2 LSB indicating ( 1: sideeffects/no_side effects, and 0: cacheable ). Ignored in internal regions
-   assign is_aligned_d    = (lsu_pkt_d.word & (start_addr_d[1:0] == 2'b0)) |
-                              (lsu_pkt_d.half & (start_addr_d[0] == 1'b0)) |
-                              lsu_pkt_d.by;
-
-   assign non_dccm_access_ok = (~(|{pt.DATA_ACCESS_ENABLE0,pt.DATA_ACCESS_ENABLE1,pt.DATA_ACCESS_ENABLE2,pt.DATA_ACCESS_ENABLE3,pt.DATA_ACCESS_ENABLE4,pt.DATA_ACCESS_ENABLE5,pt.DATA_ACCESS_ENABLE6,pt.DATA_ACCESS_ENABLE7})) |
-                               (((pt.DATA_ACCESS_ENABLE0 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK0)) == (pt.DATA_ACCESS_ADDR0 | pt.DATA_ACCESS_MASK0)) |
-                                 (pt.DATA_ACCESS_ENABLE1 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK1)) == (pt.DATA_ACCESS_ADDR1 | pt.DATA_ACCESS_MASK1)) |
-                                 (pt.DATA_ACCESS_ENABLE2 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK2)) == (pt.DATA_ACCESS_ADDR2 | pt.DATA_ACCESS_MASK2)) |
-                                 (pt.DATA_ACCESS_ENABLE3 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK3)) == (pt.DATA_ACCESS_ADDR3 | pt.DATA_ACCESS_MASK3)) |
-                                 (pt.DATA_ACCESS_ENABLE4 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK4)) == (pt.DATA_ACCESS_ADDR4 | pt.DATA_ACCESS_MASK4)) |
-                                 (pt.DATA_ACCESS_ENABLE5 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK5)) == (pt.DATA_ACCESS_ADDR5 | pt.DATA_ACCESS_MASK5)) |
-                                 (pt.DATA_ACCESS_ENABLE6 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK6)) == (pt.DATA_ACCESS_ADDR6 | pt.DATA_ACCESS_MASK6)) |
-                                 (pt.DATA_ACCESS_ENABLE7 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK7)) == (pt.DATA_ACCESS_ADDR7 | pt.DATA_ACCESS_MASK7)))   &
-                                ((pt.DATA_ACCESS_ENABLE0 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK0)) == (pt.DATA_ACCESS_ADDR0 | pt.DATA_ACCESS_MASK0)) |
-                                 (pt.DATA_ACCESS_ENABLE1 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK1)) == (pt.DATA_ACCESS_ADDR1 | pt.DATA_ACCESS_MASK1)) |
-                                 (pt.DATA_ACCESS_ENABLE2 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK2)) == (pt.DATA_ACCESS_ADDR2 | pt.DATA_ACCESS_MASK2)) |
-                                 (pt.DATA_ACCESS_ENABLE3 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK3)) == (pt.DATA_ACCESS_ADDR3 | pt.DATA_ACCESS_MASK3)) |
-                                 (pt.DATA_ACCESS_ENABLE4 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK4)) == (pt.DATA_ACCESS_ADDR4 | pt.DATA_ACCESS_MASK4)) |
-                                 (pt.DATA_ACCESS_ENABLE5 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK5)) == (pt.DATA_ACCESS_ADDR5 | pt.DATA_ACCESS_MASK5)) |
-                                 (pt.DATA_ACCESS_ENABLE6 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK6)) == (pt.DATA_ACCESS_ADDR6 | pt.DATA_ACCESS_MASK6)) |
-                                 (pt.DATA_ACCESS_ENABLE7 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK7)) == (pt.DATA_ACCESS_ADDR7 | pt.DATA_ACCESS_MASK7))));
-
-   // Access fault logic
-   // 0. Unmapped local memory : Addr in dccm region but not in dccm offset OR Addr in picm region but not in picm offset OR DCCM -> PIC cross when DCCM/PIC in same region
-   // 1. Uncorrectable (double bit) ECC error
-   // 3. Address is not in a populated non-dccm region
-   // 5. Region predication access fault: Base Address in DCCM/PIC and Final address in non-DCCM/non-PIC region or vice versa
-   // 6. Ld/St access to picm are not word aligned or word size
-   assign regpred_access_fault_d  = (start_addr_dccm_or_pic ^ base_reg_dccm_or_pic);                   // 5. Region predication access fault: Base Address in DCCM/PIC and Final address in non-DCCM/non-PIC region or vice versa
-   assign picm_access_fault_d     = (addr_in_pic_d & ((start_addr_d[1:0] != 2'b0) | ~lsu_pkt_d.word));                                               // 6. Ld/St access to picm are not word aligned or word size
-
-   if (pt.DCCM_ENABLE & (pt.DCCM_REGION == pt.PIC_REGION)) begin
-      assign unmapped_access_fault_d = ((start_addr_in_dccm_region_d & ~(start_addr_in_dccm_d | start_addr_in_pic_d)) |   // 0. Addr in dccm/pic region but not in dccm/pic offset
-                                        (end_addr_in_dccm_region_d & ~(end_addr_in_dccm_d | end_addr_in_pic_d))       |   // 0. Addr in dccm/pic region but not in dccm/pic offset
-                                        (start_addr_in_dccm_d & end_addr_in_pic_d)                                    |   // 0. DCCM -> PIC cross when DCCM/PIC in same region
-                                        (start_addr_in_pic_d  & end_addr_in_dccm_d));                                     // 0. DCCM -> PIC cross when DCCM/PIC in same region
-      assign mpu_access_fault_d      = (~start_addr_in_dccm_region_d & ~non_dccm_access_ok);                              // 3. Address is not in a populated non-dccm region
-   end else begin
-      assign unmapped_access_fault_d = ((start_addr_in_dccm_region_d & ~start_addr_in_dccm_d)                              |   // 0. Addr in dccm region but not in dccm offset
-                                        (end_addr_in_dccm_region_d & ~end_addr_in_dccm_d)                                  |   // 0. Addr in dccm region but not in dccm offset
-                                        (start_addr_in_pic_region_d & ~start_addr_in_pic_d)                                |   // 0. Addr in picm region but not in picm offset
-                                        (end_addr_in_pic_region_d & ~end_addr_in_pic_d));                                      // 0. Addr in picm region but not in picm offset
-      assign mpu_access_fault_d      = (~start_addr_in_pic_region_d & ~start_addr_in_dccm_region_d & ~non_dccm_access_ok);     // 3. Address is not in a populated non-dccm region
-   end
-
-   assign access_fault_d = (unmapped_access_fault_d | mpu_access_fault_d | picm_access_fault_d | regpred_access_fault_d) & lsu_pkt_d.valid & ~lsu_pkt_d.dma;
-   assign access_fault_mscause_d[3:0] = unmapped_access_fault_d ? 4'h2 : mpu_access_fault_d ? 4'h3 : regpred_access_fault_d ? 4'h5 : picm_access_fault_d ? 4'h6 : 4'h0;
-
-   // Misaligned happens due to 2 reasons
-   // 0. Region cross
-   // 1. sideeffects access which are not aligned
-   assign regcross_misaligned_fault_d = (start_addr_d[31:28] != end_addr_d[31:28]);
-   assign sideeffect_misaligned_fault_d = (is_sideeffects_d & ~is_aligned_d);
-   assign misaligned_fault_d = (regcross_misaligned_fault_d | (sideeffect_misaligned_fault_d & addr_external_d)) & lsu_pkt_d.valid & ~lsu_pkt_d.dma;
-   assign misaligned_fault_mscause_d[3:0] = regcross_misaligned_fault_d ? 4'h2 : sideeffect_misaligned_fault_d ? 4'h1 : 4'h0;
-
-   assign exc_mscause_d[3:0] = misaligned_fault_d ? misaligned_fault_mscause_d[3:0] : access_fault_mscause_d[3:0];
-
-   // Fast interrupt error logic
-   assign fir_dccm_access_error_d    = ((start_addr_in_dccm_region_d & ~start_addr_in_dccm_d) |
-                                        (end_addr_in_dccm_region_d   & ~end_addr_in_dccm_d)) & lsu_pkt_d.valid & lsu_pkt_d.fast_int;
-   assign fir_nondccm_access_error_d = ~(start_addr_in_dccm_region_d & end_addr_in_dccm_region_d) & lsu_pkt_d.valid & lsu_pkt_d.fast_int;
-
-   rvdff #(.WIDTH(1))   is_sideeffects_mff (.din(is_sideeffects_d), .dout(is_sideeffects_m), .clk(lsu_c2_m_clk), .*);
-
-endmodule // eb1_lsu_addrcheck
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: lsu interface with interface queue
-// Comments:
-//
-//********************************************************************************
-
-module eb1_lsu_bus_buffer
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic                          clk,                                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                          clk_override,                       // Override non-functional clock gating
-   input logic                          rst_l,                              // reset, active low
-   input logic                          scan_mode,                          // scan mode
-   input logic                          dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                          dec_tlu_wb_coalescing_disable,      // disable write buffer coalescing
-   input logic                          dec_tlu_sideeffect_posted_disable,  // Don't block the sideeffect load store to the bus
-   input logic                          dec_tlu_force_halt,
-
-   // various clocks needed for the bus reads and writes
-   input logic                          lsu_bus_obuf_c1_clken,
-   input logic                          lsu_busm_clken,
-   input logic                          lsu_c2_r_clk,
-   input logic                          lsu_bus_ibuf_c1_clk,
-   input logic                          lsu_bus_obuf_c1_clk,
-   input logic                          lsu_bus_buf_c1_clk,
-   input logic                          lsu_free_c2_clk,
-   input logic                          lsu_busm_clk,
-
-
-   input logic                          dec_lsu_valid_raw_d,            // Raw valid for address computation
-   input eb1_lsu_pkt_t                 lsu_pkt_m,                      // lsu packet flowing down the pipe
-   input eb1_lsu_pkt_t                 lsu_pkt_r,                      // lsu packet flowing down the pipe
-
-   input logic [31:0]                   lsu_addr_m,                     // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_m,                     // lsu address flowing down the pipe
-   input logic [31:0]                   lsu_addr_r,                     // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_r,                     // lsu address flowing down the pipe
-   input logic [31:0]                   store_data_r,                   // store data flowing down the pipe
-
-   input logic                          no_word_merge_r,                // r store doesn't need to wait in ibuf since it will not coalesce
-   input logic                          no_dword_merge_r,               // r store doesn't need to wait in ibuf since it will not coalesce
-   input logic                          lsu_busreq_m,                   // bus request is in m
-   output logic                         lsu_busreq_r,                   // bus request is in r
-   input logic                          ld_full_hit_m,                  // load can get all its byte from a write buffer entry
-   input logic                          flush_m_up,                     // flush
-   input logic                          flush_r,                        // flush
-   input logic                          lsu_commit_r,                   // lsu instruction in r commits
-   input logic                          is_sideeffects_r,               // lsu attribute is side_effects
-   input logic                          ldst_dual_d,                    // load/store is unaligned at 32 bit boundary
-   input logic                          ldst_dual_m,                    // load/store is unaligned at 32 bit boundary
-   input logic                          ldst_dual_r,                    // load/store is unaligned at 32 bit boundary
-
-   input logic [7:0]                    ldst_byteen_ext_m,              // HI and LO signals
-
-   output logic                         lsu_bus_buffer_pend_any,          // bus buffer has a pending bus entry
-   output logic                         lsu_bus_buffer_full_any,          // bus buffer is full
-   output logic                         lsu_bus_buffer_empty_any,         // bus buffer is empty
-
-   output logic [3:0]                   ld_byte_hit_buf_lo, ld_byte_hit_buf_hi,    // Byte enables for forwarding data
-   output logic [31:0]                  ld_fwddata_buf_lo, ld_fwddata_buf_hi,      // load forwarding data
-
-   output logic                         lsu_imprecise_error_load_any,     // imprecise load bus error
-   output logic                         lsu_imprecise_error_store_any,    // imprecise store bus error
-   output logic [31:0]                  lsu_imprecise_error_addr_any,     // address of the imprecise error
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,     // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,       // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,       // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r,   // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,  // the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,  // non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,    // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,        // Data of the non block load
-
-   // PMU events
-   output logic                         lsu_pmu_bus_trxn,
-   output logic                         lsu_pmu_bus_misaligned,
-   output logic                         lsu_pmu_bus_error,
-   output logic                         lsu_pmu_bus_busy,
-
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-
-   input logic                             lsu_bus_clk_en,
-   input logic                             lsu_bus_clk_en_q
-
-);
-
-   // For Ld: IDLE -> WAIT -> CMD -> RESP -> DONE_PARTIAL(?) -> DONE_WAIT(?) -> DONE -> IDLE
-   // For St: IDLE -> WAIT -> CMD -> RESP(?) -> IDLE
-   typedef enum logic [2:0] {IDLE=3'b000, WAIT=3'b001, CMD=3'b010, RESP=3'b011, DONE_PARTIAL=3'b100, DONE_WAIT=3'b101, DONE=3'b110} state_t;
-
-   localparam DEPTH     = pt.LSU_NUM_NBLOAD;
-   localparam DEPTH_LOG2 = pt.LSU_NUM_NBLOAD_WIDTH;
-   localparam TIMER     = 8;   // This can be only power of 2
-   localparam TIMER_MAX = TIMER - 1;  // Maximum value of timer
-   localparam TIMER_LOG2 = (TIMER < 2) ? 1 : $clog2(TIMER);
-
-   logic [3:0]                          ldst_byteen_hi_m, ldst_byteen_lo_m;
-   logic [DEPTH-1:0]                    ld_addr_hitvec_lo, ld_addr_hitvec_hi;
-   logic [3:0][DEPTH-1:0]               ld_byte_hitvec_lo, ld_byte_hitvec_hi;
-   logic [3:0][DEPTH-1:0]               ld_byte_hitvecfn_lo, ld_byte_hitvecfn_hi;
-
-   logic                                ld_addr_ibuf_hit_lo, ld_addr_ibuf_hit_hi;
-   logic [3:0]                          ld_byte_ibuf_hit_lo, ld_byte_ibuf_hit_hi;
-
-   logic [3:0]                          ldst_byteen_r;
-   logic [3:0]                          ldst_byteen_hi_r, ldst_byteen_lo_r;
-   logic [31:0]                         store_data_hi_r, store_data_lo_r;
-   logic                                is_aligned_r;                   // Aligned load/store
-   logic                                ldst_samedw_r;
-
-   logic                                lsu_nonblock_load_valid_r;
-   logic [31:0]                         lsu_nonblock_load_data_hi, lsu_nonblock_load_data_lo, lsu_nonblock_data_unalgn;
-   logic [1:0]                          lsu_nonblock_addr_offset;
-   logic [1:0]                          lsu_nonblock_sz;
-   logic                                lsu_nonblock_unsign;
-   logic                                lsu_nonblock_load_data_ready;
-
-   logic [DEPTH-1:0]                    CmdPtr0Dec, CmdPtr1Dec;
-   logic [DEPTH-1:0]                    RspPtrDec;
-   logic [DEPTH_LOG2-1:0]               CmdPtr0, CmdPtr1;
-   logic [DEPTH_LOG2-1:0]               RspPtr;
-   logic [DEPTH_LOG2-1:0]               WrPtr0_m, WrPtr0_r;
-   logic [DEPTH_LOG2-1:0]               WrPtr1_m, WrPtr1_r;
-   logic                                found_wrptr0, found_wrptr1, found_cmdptr0, found_cmdptr1;
-   logic [3:0]                          buf_numvld_any, buf_numvld_wrcmd_any, buf_numvld_cmd_any, buf_numvld_pend_any;
-   logic                                any_done_wait_state;
-   logic                                bus_sideeffect_pend;
-   logic                                bus_coalescing_disable;
-
-   logic                                bus_addr_match_pending;
-   logic                                bus_cmd_sent, bus_cmd_ready;
-   logic                                bus_wcmd_sent, bus_wdata_sent;
-   logic                                bus_rsp_read, bus_rsp_write;
-   logic [pt.LSU_BUS_TAG-1:0]           bus_rsp_read_tag, bus_rsp_write_tag;
-   logic                                bus_rsp_read_error, bus_rsp_write_error;
-   logic [63:0]                         bus_rsp_rdata;
-
-   // Bus buffer signals
-   state_t [DEPTH-1:0]                  buf_state;
-   logic   [DEPTH-1:0][1:0]             buf_sz;
-   logic   [DEPTH-1:0][31:0]            buf_addr;
-   logic   [DEPTH-1:0][3:0]             buf_byteen;
-   logic   [DEPTH-1:0]                  buf_sideeffect;
-   logic   [DEPTH-1:0]                  buf_write;
-   logic   [DEPTH-1:0]                  buf_unsign;
-   logic   [DEPTH-1:0]                  buf_dual;
-   logic   [DEPTH-1:0]                  buf_samedw;
-   logic   [DEPTH-1:0]                  buf_nomerge;
-   logic   [DEPTH-1:0]                  buf_dualhi;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_dualtag;
-   logic   [DEPTH-1:0]                  buf_ldfwd;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_ldfwdtag;
-   logic   [DEPTH-1:0]                  buf_error;
-   logic   [DEPTH-1:0][31:0]            buf_data;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_age, buf_age_younger;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage, buf_rsp_pickage;
-
-   state_t [DEPTH-1:0]                  buf_nxtstate;
-   logic   [DEPTH-1:0]                  buf_rst;
-   logic   [DEPTH-1:0]                  buf_state_en;
-   logic   [DEPTH-1:0]                  buf_cmd_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_resp_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_dual_in;
-   logic   [DEPTH-1:0]                  buf_samedw_in;
-   logic   [DEPTH-1:0]                  buf_nomerge_in;
-   logic   [DEPTH-1:0]                  buf_sideeffect_in;
-   logic   [DEPTH-1:0]                  buf_unsign_in;
-   logic   [DEPTH-1:0][1:0]             buf_sz_in;
-   logic   [DEPTH-1:0]                  buf_write_in;
-   logic   [DEPTH-1:0]                  buf_wr_en;
-   logic   [DEPTH-1:0]                  buf_dualhi_in;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_dualtag_in;
-   logic   [DEPTH-1:0]                  buf_ldfwd_en;
-   logic   [DEPTH-1:0]                  buf_ldfwd_in;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_ldfwdtag_in;
-   logic   [DEPTH-1:0][3:0]             buf_byteen_in;
-   logic   [DEPTH-1:0][31:0]            buf_addr_in;
-   logic   [DEPTH-1:0][31:0]            buf_data_in;
-   logic   [DEPTH-1:0]                  buf_error_en;
-   logic   [DEPTH-1:0]                  buf_data_en;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_age_in;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_ageQ;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage_set;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage_in;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspageQ;
-
-   // Input buffer signals
-   logic                               ibuf_valid;
-   logic                               ibuf_dual;
-   logic                               ibuf_samedw;
-   logic                               ibuf_nomerge;
-   logic [DEPTH_LOG2-1:0]              ibuf_tag;
-   logic [DEPTH_LOG2-1:0]              ibuf_dualtag;
-   logic                               ibuf_sideeffect;
-   logic                               ibuf_unsign;
-   logic                               ibuf_write;
-   logic [1:0]                         ibuf_sz;
-   logic [3:0]                         ibuf_byteen;
-   logic [31:0]                        ibuf_addr;
-   logic [31:0]                        ibuf_data;
-   logic [TIMER_LOG2-1:0]              ibuf_timer;
-
-   logic                               ibuf_byp;
-   logic                               ibuf_wr_en;
-   logic                               ibuf_rst;
-   logic                               ibuf_force_drain;
-   logic                               ibuf_drain_vld;
-   logic [DEPTH-1:0]                   ibuf_drainvec_vld;
-   logic [DEPTH_LOG2-1:0]              ibuf_tag_in;
-   logic [DEPTH_LOG2-1:0]              ibuf_dualtag_in;
-   logic [1:0]                         ibuf_sz_in;
-   logic [31:0]                        ibuf_addr_in;
-   logic [3:0]                         ibuf_byteen_in;
-   logic [31:0]                        ibuf_data_in;
-   logic [TIMER_LOG2-1:0]              ibuf_timer_in;
-   logic [3:0]                         ibuf_byteen_out;
-   logic [31:0]                        ibuf_data_out;
-   logic                               ibuf_merge_en, ibuf_merge_in;
-
-   // Output buffer signals
-   logic                               obuf_valid;
-   logic                               obuf_write;
-   logic                               obuf_nosend;
-   logic                               obuf_rdrsp_pend;
-   logic                               obuf_sideeffect;
-   logic [31:0]                        obuf_addr;
-   logic [63:0]                        obuf_data;
-   logic [1:0]                         obuf_sz;
-   logic [7:0]                         obuf_byteen;
-   logic                               obuf_merge;
-   logic                               obuf_cmd_done, obuf_data_done;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag0;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag1;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_rdrsp_tag;
-
-   logic                               ibuf_buf_byp;
-   logic                               obuf_force_wr_en;
-   logic                               obuf_wr_wait;
-   logic                               obuf_wr_en, obuf_wr_enQ;
-   logic                               obuf_rst;
-   logic                               obuf_write_in;
-   logic                               obuf_nosend_in;
-   logic                               obuf_rdrsp_pend_en;
-   logic                               obuf_rdrsp_pend_in;
-   logic                               obuf_sideeffect_in;
-   logic                               obuf_aligned_in;
-   logic [31:0]                        obuf_addr_in;
-   logic [63:0]                        obuf_data_in;
-   logic [1:0]                         obuf_sz_in;
-   logic [7:0]                         obuf_byteen_in;
-   logic                               obuf_merge_in;
-   logic                               obuf_cmd_done_in, obuf_data_done_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag0_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag1_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_rdrsp_tag_in;
-
-   logic                               obuf_merge_en;
-   logic [TIMER_LOG2-1:0]              obuf_wr_timer, obuf_wr_timer_in;
-   logic [7:0]                         obuf_byteen0_in, obuf_byteen1_in;
-   logic [63:0]                        obuf_data0_in, obuf_data1_in;
-
-   logic                               lsu_axi_awvalid_q, lsu_axi_awready_q;
-   logic                               lsu_axi_wvalid_q, lsu_axi_wready_q;
-   logic                               lsu_axi_arvalid_q, lsu_axi_arready_q;
-   logic                               lsu_axi_bvalid_q, lsu_axi_bready_q;
-   logic                               lsu_axi_rvalid_q, lsu_axi_rready_q;
-   logic [pt.LSU_BUS_TAG-1:0]          lsu_axi_bid_q, lsu_axi_rid_q;
-   logic [1:0]                         lsu_axi_bresp_q, lsu_axi_rresp_q;
-   logic [pt.LSU_BUS_TAG-1:0]          lsu_imprecise_error_store_tag;
-   logic [63:0]                        lsu_axi_rdata_q;
-
-   //------------------------------------------------------------------------------
-   // Load forwarding logic start
-   //------------------------------------------------------------------------------
-
-   // Function to do 8 to 3 bit encoding
-   function automatic logic [2:0] f_Enc8to3;
-      input logic [7:0] Dec_value;
-
-      logic [2:0]       Enc_value;
-      Enc_value[0] = Dec_value[1] | Dec_value[3] | Dec_value[5] | Dec_value[7];
-      Enc_value[1] = Dec_value[2] | Dec_value[3] | Dec_value[6] | Dec_value[7];
-      Enc_value[2] = Dec_value[4] | Dec_value[5] | Dec_value[6] | Dec_value[7];
-
-      return Enc_value[2:0];
-   endfunction // f_Enc8to3
-
-   // Buffer hit logic for bus load forwarding
-   assign ldst_byteen_hi_m[3:0]   = ldst_byteen_ext_m[7:4];
-   assign ldst_byteen_lo_m[3:0]   = ldst_byteen_ext_m[3:0];
-   for (genvar i=0; i<DEPTH; i++) begin
-      assign ld_addr_hitvec_lo[i] = (lsu_addr_m[31:2] == buf_addr[i][31:2]) & buf_write[i] & (buf_state[i] != IDLE) & lsu_busreq_m;
-      assign ld_addr_hitvec_hi[i] = (end_addr_m[31:2] == buf_addr[i][31:2]) & buf_write[i] & (buf_state[i] != IDLE) & lsu_busreq_m;
-   end
-
-   for (genvar j=0; j<4; j++) begin
-     assign ld_byte_hit_buf_lo[j] = |(ld_byte_hitvecfn_lo[j]) | ld_byte_ibuf_hit_lo[j];
-     assign ld_byte_hit_buf_hi[j] = |(ld_byte_hitvecfn_hi[j]) | ld_byte_ibuf_hit_hi[j];
-     for (genvar i=0; i<DEPTH; i++) begin
-         assign ld_byte_hitvec_lo[j][i] = ld_addr_hitvec_lo[i] & buf_byteen[i][j] & ldst_byteen_lo_m[j];
-         assign ld_byte_hitvec_hi[j][i] = ld_addr_hitvec_hi[i] & buf_byteen[i][j] & ldst_byteen_hi_m[j];
-
-         assign ld_byte_hitvecfn_lo[j][i] = ld_byte_hitvec_lo[j][i] & ~(|(ld_byte_hitvec_lo[j] & buf_age_younger[i])) & ~ld_byte_ibuf_hit_lo[j];  // Kill the byte enable if younger entry exists or byte exists in ibuf
-         assign ld_byte_hitvecfn_hi[j][i] = ld_byte_hitvec_hi[j][i] & ~(|(ld_byte_hitvec_hi[j] & buf_age_younger[i])) & ~ld_byte_ibuf_hit_hi[j];  // Kill the byte enable if younger entry exists or byte exists in ibuf
-      end
-   end
-
-   // Hit in the ibuf
-   assign ld_addr_ibuf_hit_lo = (lsu_addr_m[31:2] == ibuf_addr[31:2]) & ibuf_write & ibuf_valid & lsu_busreq_m;
-   assign ld_addr_ibuf_hit_hi = (end_addr_m[31:2] == ibuf_addr[31:2]) & ibuf_write & ibuf_valid & lsu_busreq_m;
-
-   for (genvar i=0; i<4; i++) begin
-      assign ld_byte_ibuf_hit_lo[i] = ld_addr_ibuf_hit_lo & ibuf_byteen[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_ibuf_hit_hi[i] = ld_addr_ibuf_hit_hi & ibuf_byteen[i] & ldst_byteen_hi_m[i];
-   end
-
-   always_comb begin
-      ld_fwddata_buf_lo[31:0] = {{8{ld_byte_ibuf_hit_lo[3]}},{8{ld_byte_ibuf_hit_lo[2]}},{8{ld_byte_ibuf_hit_lo[1]}},{8{ld_byte_ibuf_hit_lo[0]}}} & ibuf_data[31:0];
-      ld_fwddata_buf_hi[31:0] = {{8{ld_byte_ibuf_hit_hi[3]}},{8{ld_byte_ibuf_hit_hi[2]}},{8{ld_byte_ibuf_hit_hi[1]}},{8{ld_byte_ibuf_hit_hi[0]}}} & ibuf_data[31:0];
-      for (int i=0; i<DEPTH; i++) begin
-         ld_fwddata_buf_lo[7:0]   |= {8{ld_byte_hitvecfn_lo[0][i]}} & buf_data[i][7:0];
-         ld_fwddata_buf_lo[15:8]  |= {8{ld_byte_hitvecfn_lo[1][i]}} & buf_data[i][15:8];
-         ld_fwddata_buf_lo[23:16] |= {8{ld_byte_hitvecfn_lo[2][i]}} & buf_data[i][23:16];
-         ld_fwddata_buf_lo[31:24] |= {8{ld_byte_hitvecfn_lo[3][i]}} & buf_data[i][31:24];
-
-         ld_fwddata_buf_hi[7:0]   |= {8{ld_byte_hitvecfn_hi[0][i]}} & buf_data[i][7:0];
-         ld_fwddata_buf_hi[15:8]  |= {8{ld_byte_hitvecfn_hi[1][i]}} & buf_data[i][15:8];
-         ld_fwddata_buf_hi[23:16] |= {8{ld_byte_hitvecfn_hi[2][i]}} & buf_data[i][23:16];
-         ld_fwddata_buf_hi[31:24] |= {8{ld_byte_hitvecfn_hi[3][i]}} & buf_data[i][31:24];
-      end
-   end
-
-   //------------------------------------------------------------------------------
-   // Load forwarding logic end
-   //------------------------------------------------------------------------------
-
-   assign bus_coalescing_disable = dec_tlu_wb_coalescing_disable | pt.BUILD_AHB_LITE;
-
-   // Get the hi/lo byte enable
-   assign ldst_byteen_r[3:0] = ({4{lsu_pkt_r.by}}   & 4'b0001) |
-                                 ({4{lsu_pkt_r.half}} & 4'b0011) |
-                                 ({4{lsu_pkt_r.word}} & 4'b1111);
-
-   assign {ldst_byteen_hi_r[3:0], ldst_byteen_lo_r[3:0]} = {4'b0,ldst_byteen_r[3:0]} << lsu_addr_r[1:0];
-   assign {store_data_hi_r[31:0], store_data_lo_r[31:0]} = {32'b0,store_data_r[31:0]} << 8*lsu_addr_r[1:0];
-   assign ldst_samedw_r    = (lsu_addr_r[3] == end_addr_r[3]);
-   assign is_aligned_r    = (lsu_pkt_r.word & (lsu_addr_r[1:0] == 2'b0)) |
-                            (lsu_pkt_r.half & (lsu_addr_r[0] == 1'b0))   |
-                            lsu_pkt_r.by;
-
-   //------------------------------------------------------------------------------
-   // Input buffer logic starts here
-   //------------------------------------------------------------------------------
-
-   assign ibuf_byp = lsu_busreq_r & (lsu_pkt_r.load | no_word_merge_r) & ~ibuf_valid;
-   assign ibuf_wr_en = lsu_busreq_r & lsu_commit_r & ~ibuf_byp;
-   assign ibuf_rst   = (ibuf_drain_vld & ~ibuf_wr_en) | dec_tlu_force_halt;
-   assign ibuf_force_drain = lsu_busreq_m & ~lsu_busreq_r & ibuf_valid & (lsu_pkt_m.load | (ibuf_addr[31:2] != lsu_addr_m[31:2]));  // Move the ibuf to buf if there is a non-colaescable ld/st in m but nothing in r
-   assign ibuf_drain_vld = ibuf_valid & (((ibuf_wr_en | (ibuf_timer == TIMER_MAX)) & ~(ibuf_merge_en & ibuf_merge_in)) | ibuf_byp | ibuf_force_drain | ibuf_sideeffect | ~ibuf_write | bus_coalescing_disable);
-   assign ibuf_tag_in[DEPTH_LOG2-1:0] = (ibuf_merge_en & ibuf_merge_in) ? ibuf_tag[DEPTH_LOG2-1:0] : (ldst_dual_r ? WrPtr1_r : WrPtr0_r);
-   assign ibuf_dualtag_in[DEPTH_LOG2-1:0] = WrPtr0_r;
-   assign ibuf_sz_in[1:0]   = {lsu_pkt_r.word, lsu_pkt_r.half};
-   assign ibuf_addr_in[31:0] = ldst_dual_r ? end_addr_r[31:0] : lsu_addr_r[31:0];
-   assign ibuf_byteen_in[3:0] = (ibuf_merge_en & ibuf_merge_in) ? (ibuf_byteen[3:0] | ldst_byteen_lo_r[3:0]) : (ldst_dual_r ? ldst_byteen_hi_r[3:0] : ldst_byteen_lo_r[3:0]);
-   for (genvar i=0; i<4; i++) begin
-      assign ibuf_data_in[(8*i)+7:(8*i)] = (ibuf_merge_en & ibuf_merge_in) ? (ldst_byteen_lo_r[i] ? store_data_lo_r[(8*i)+7:(8*i)] : ibuf_data[(8*i)+7:(8*i)]) :
-                                                                             (ldst_dual_r ? store_data_hi_r[(8*i)+7:(8*i)] : store_data_lo_r[(8*i)+7:(8*i)]);
-   end
-   assign ibuf_timer_in = ibuf_wr_en ? '0 : (ibuf_timer < TIMER_MAX) ? (ibuf_timer + 1'b1) : ibuf_timer;
-
-
-   assign ibuf_merge_en = lsu_busreq_r & lsu_commit_r & lsu_pkt_r.store & ibuf_valid & ibuf_write & (lsu_addr_r[31:2] == ibuf_addr[31:2]) & ~is_sideeffects_r & ~bus_coalescing_disable;
-   assign ibuf_merge_in = ~ldst_dual_r;   // If it's a unaligned store, merge needs to happen on the way out of ibuf
-
-   // ibuf signals going to bus buffer after merging
-   for (genvar i=0; i<4; i++) begin
-      assign ibuf_byteen_out[i] = (ibuf_merge_en & ~ibuf_merge_in) ? (ibuf_byteen[i] | ldst_byteen_lo_r[i]) : ibuf_byteen[i];
-      assign ibuf_data_out[(8*i)+7:(8*i)] = (ibuf_merge_en & ~ibuf_merge_in) ? (ldst_byteen_lo_r[i] ? store_data_lo_r[(8*i)+7:(8*i)] : ibuf_data[(8*i)+7:(8*i)]) :
-                                                                                                        ibuf_data[(8*i)+7:(8*i)];
-   end
-
-   rvdffsc #(.WIDTH(1))              ibuf_valid_ff     (.din(1'b1),                      .dout(ibuf_valid),      .en(ibuf_wr_en), .clear(ibuf_rst), .clk(lsu_free_c2_clk), .*);
-   rvdffs  #(.WIDTH(DEPTH_LOG2))     ibuf_tagff        (.din(ibuf_tag_in),               .dout(ibuf_tag),        .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(DEPTH_LOG2))     ibuf_dualtagff    (.din(ibuf_dualtag_in),           .dout(ibuf_dualtag),    .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_dualff       (.din(ldst_dual_r),               .dout(ibuf_dual),       .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_samedwff     (.din(ldst_samedw_r),             .dout(ibuf_samedw),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_nomergeff    (.din(no_dword_merge_r),          .dout(ibuf_nomerge),    .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_sideeffectff (.din(is_sideeffects_r),          .dout(ibuf_sideeffect), .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_unsignff     (.din(lsu_pkt_r.unsign),          .dout(ibuf_unsign),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_writeff      (.din(lsu_pkt_r.store),           .dout(ibuf_write),      .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(2))              ibuf_szff         (.din(ibuf_sz_in[1:0]),           .dout(ibuf_sz),         .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffe  #(.WIDTH(32))             ibuf_addrff       (.din(ibuf_addr_in[31:0]),        .dout(ibuf_addr),       .en(ibuf_wr_en),                                              .*);
-   rvdffs  #(.WIDTH(4))              ibuf_byteenff     (.din(ibuf_byteen_in[3:0]),       .dout(ibuf_byteen),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffe  #(.WIDTH(32))             ibuf_dataff       (.din(ibuf_data_in[31:0]),        .dout(ibuf_data),       .en(ibuf_wr_en),                                              .*);
-   rvdff   #(.WIDTH(TIMER_LOG2))     ibuf_timerff      (.din(ibuf_timer_in),             .dout(ibuf_timer),                                         .clk(lsu_free_c2_clk),     .*);
-
-
-   //------------------------------------------------------------------------------
-   // Input buffer logic ends here
-   //------------------------------------------------------------------------------
-
-
-   //------------------------------------------------------------------------------
-   // Output buffer logic starts here
-   //------------------------------------------------------------------------------
-
-   assign obuf_wr_wait = (buf_numvld_wrcmd_any[3:0] == 4'b1) & (buf_numvld_cmd_any[3:0] == 4'b1) & (obuf_wr_timer != TIMER_MAX) &
-                         ~bus_coalescing_disable & ~buf_nomerge[CmdPtr0] & ~buf_sideeffect[CmdPtr0] & ~obuf_force_wr_en;
-   assign obuf_wr_timer_in = obuf_wr_en ? 3'b0: (((buf_numvld_cmd_any > 4'b0) & (obuf_wr_timer < TIMER_MAX)) ? (obuf_wr_timer + 1'b1) : obuf_wr_timer);
-   assign obuf_force_wr_en = lsu_busreq_m & ~lsu_busreq_r & ~ibuf_valid & (buf_numvld_cmd_any[3:0] == 4'b1) & (lsu_addr_m[31:2] != buf_addr[CmdPtr0][31:2]);   // Entry in m can't merge with entry going to obuf and there is no entry in between
-   assign ibuf_buf_byp = ibuf_byp & (buf_numvld_pend_any[3:0] == 4'b0) & (~lsu_pkt_r.store | no_dword_merge_r);
-
-   assign obuf_wr_en = ((ibuf_buf_byp & lsu_commit_r & ~(is_sideeffects_r & bus_sideeffect_pend)) |
-                        ((buf_state[CmdPtr0] == CMD) & found_cmdptr0 & ~buf_cmd_state_bus_en[CmdPtr0] & ~(buf_sideeffect[CmdPtr0] & bus_sideeffect_pend) &
-                         (~(buf_dual[CmdPtr0] & buf_samedw[CmdPtr0] & ~buf_write[CmdPtr0]) | found_cmdptr1 | buf_nomerge[CmdPtr0] | obuf_force_wr_en))) &
-                       (bus_cmd_ready | ~obuf_valid | obuf_nosend) & ~obuf_wr_wait  & ~bus_addr_match_pending & lsu_bus_clk_en;
-
-   assign obuf_rst   = ((bus_cmd_sent | (obuf_valid & obuf_nosend)) & ~obuf_wr_en & lsu_bus_clk_en) | dec_tlu_force_halt;
-
-   assign obuf_write_in      = ibuf_buf_byp ? lsu_pkt_r.store : buf_write[CmdPtr0];
-   assign obuf_sideeffect_in = ibuf_buf_byp ? is_sideeffects_r : buf_sideeffect[CmdPtr0];
-   assign obuf_addr_in[31:0] = ibuf_buf_byp ? lsu_addr_r[31:0] : buf_addr[CmdPtr0];
-   assign obuf_sz_in[1:0]    = ibuf_buf_byp ? {lsu_pkt_r.word, lsu_pkt_r.half} : buf_sz[CmdPtr0];
-   assign obuf_merge_in      = obuf_merge_en;
-   assign obuf_tag0_in[pt.LSU_BUS_TAG-1:0] = ibuf_buf_byp ? (pt.LSU_BUS_TAG)'(WrPtr0_r) : (pt.LSU_BUS_TAG)'(CmdPtr0);
-   assign obuf_tag1_in[pt.LSU_BUS_TAG-1:0] = ibuf_buf_byp ? (pt.LSU_BUS_TAG)'(WrPtr1_r) : (pt.LSU_BUS_TAG)'(CmdPtr1);
-
-   assign obuf_cmd_done_in    = ~(obuf_wr_en | obuf_rst) & (obuf_cmd_done | bus_wcmd_sent);
-   assign obuf_data_done_in   = ~(obuf_wr_en | obuf_rst) & (obuf_data_done | bus_wdata_sent);
-
-   assign obuf_aligned_in    = ibuf_buf_byp ? is_aligned_r : ((obuf_sz_in[1:0] == 2'b0) |
-                                                              (obuf_sz_in[0] & ~obuf_addr_in[0]) |
-                                                              (obuf_sz_in[1] & ~(|obuf_addr_in[1:0])));
-
-   assign obuf_rdrsp_pend_in  = ((~(obuf_wr_en & ~obuf_nosend_in) & obuf_rdrsp_pend & ~(bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag))) | (bus_cmd_sent & ~obuf_write)) & ~dec_tlu_force_halt;
-   assign obuf_rdrsp_pend_en  = lsu_bus_clk_en | dec_tlu_force_halt;
-   assign obuf_rdrsp_tag_in[pt.LSU_BUS_TAG-1:0] = (bus_cmd_sent & ~obuf_write) ? obuf_tag0[pt.LSU_BUS_TAG-1:0] : obuf_rdrsp_tag[pt.LSU_BUS_TAG-1:0];
-   // No ld to ld fwd for aligned
-   assign obuf_nosend_in      = (obuf_addr_in[31:3] == obuf_addr[31:3]) & obuf_aligned_in & ~obuf_sideeffect & ~obuf_write & ~obuf_write_in & ~dec_tlu_external_ldfwd_disable &
-                                ((obuf_valid & ~obuf_nosend) | (obuf_rdrsp_pend & ~(bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag))));
-
-   assign obuf_byteen0_in[7:0] = ibuf_buf_byp ? (lsu_addr_r[2] ? {ldst_byteen_lo_r[3:0],4'b0} : {4'b0,ldst_byteen_lo_r[3:0]}) :
-                                                (buf_addr[CmdPtr0][2] ? {buf_byteen[CmdPtr0],4'b0} : {4'b0,buf_byteen[CmdPtr0]});
-   assign obuf_byteen1_in[7:0] = ibuf_buf_byp ? (end_addr_r[2] ? {ldst_byteen_hi_r[3:0],4'b0} : {4'b0,ldst_byteen_hi_r[3:0]}) :
-                                                (buf_addr[CmdPtr1][2] ? {buf_byteen[CmdPtr1],4'b0} : {4'b0,buf_byteen[CmdPtr1]});
-   assign obuf_data0_in[63:0]  = ibuf_buf_byp ? (lsu_addr_r[2] ? {store_data_lo_r[31:0],32'b0} : {32'b0,store_data_lo_r[31:0]}) :
-                                                (buf_addr[CmdPtr0][2] ? {buf_data[CmdPtr0],32'b0} : {32'b0,buf_data[CmdPtr0]});
-   assign obuf_data1_in[63:0]  = ibuf_buf_byp ? (end_addr_r[2] ? {store_data_hi_r[31:0],32'b0} :{32'b0,store_data_hi_r[31:0]}) :
-                                                (buf_addr[CmdPtr1][2] ? {buf_data[CmdPtr1],32'b0} : {32'b0,buf_data[CmdPtr1]});
-
-   for (genvar i=0 ;i<8; i++) begin
-      assign obuf_byteen_in[i] = obuf_byteen0_in[i] | (obuf_merge_en & obuf_byteen1_in[i]);
-      assign obuf_data_in[(8*i)+7:(8*i)] = (obuf_merge_en & obuf_byteen1_in[i]) ? obuf_data1_in[(8*i)+7:(8*i)] : obuf_data0_in[(8*i)+7:(8*i)];
-   end
-
-   // No store obuf merging for AXI since all stores are sent non-posted. Can't track the second id right now
-   assign obuf_merge_en = ((CmdPtr0 != CmdPtr1) & found_cmdptr0 & found_cmdptr1 & (buf_state[CmdPtr0] == CMD) & (buf_state[CmdPtr1] == CMD) &
-                           ~buf_cmd_state_bus_en[CmdPtr0] & ~buf_sideeffect[CmdPtr0] &
-                           (~buf_write[CmdPtr0] & buf_dual[CmdPtr0] & ~buf_dualhi[CmdPtr0] & buf_samedw[CmdPtr0])) |  // CmdPtr0/CmdPtr1 are for same load which is within a DW
-                          (ibuf_buf_byp & ldst_samedw_r & ldst_dual_r);
-
-
-   rvdff_fpga  #(.WIDTH(1))              obuf_wren_ff      (.din(obuf_wr_en),                  .dout(obuf_wr_enQ),                                        .clk(lsu_busm_clk),        .clken(lsu_busm_clken), .rawclk(clk),        .*);
-   rvdffsc     #(.WIDTH(1))              obuf_valid_ff     (.din(1'b1),                        .dout(obuf_valid),      .en(obuf_wr_en), .clear(obuf_rst), .clk(lsu_free_c2_clk),                                                  .*);
-   rvdffs      #(.WIDTH(1))              obuf_nosend_ff    (.din(obuf_nosend_in),              .dout(obuf_nosend),     .en(obuf_wr_en),                   .clk(lsu_free_c2_clk),                                                  .*);
-   rvdffs      #(.WIDTH(1))              obuf_rdrsp_pend_ff(.din(obuf_rdrsp_pend_in),          .dout(obuf_rdrsp_pend), .en(obuf_rdrsp_pend_en),           .clk(lsu_free_c2_clk),                                                  .*);
-   rvdff_fpga  #(.WIDTH(1))              obuf_cmd_done_ff  (.din(obuf_cmd_done_in),            .dout(obuf_cmd_done),                                      .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              obuf_data_done_ff (.din(obuf_data_done_in),           .dout(obuf_data_done),                                     .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) obuf_rdrsp_tagff  (.din(obuf_rdrsp_tag_in),           .dout(obuf_rdrsp_tag),                                     .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(pt.LSU_BUS_TAG)) obuf_tag0ff       (.din(obuf_tag0_in),                .dout(obuf_tag0),       .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(pt.LSU_BUS_TAG)) obuf_tag1ff       (.din(obuf_tag1_in),                .dout(obuf_tag1),       .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_mergeff      (.din(obuf_merge_in),               .dout(obuf_merge),      .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_writeff      (.din(obuf_write_in),               .dout(obuf_write),      .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_sideeffectff (.din(obuf_sideeffect_in),          .dout(obuf_sideeffect), .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(2))              obuf_szff         (.din(obuf_sz_in[1:0]),             .dout(obuf_sz),         .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(8))              obuf_byteenff     (.din(obuf_byteen_in[7:0]),         .dout(obuf_byteen),     .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffe     #(.WIDTH(32))              obuf_addrff       (.din(obuf_addr_in[31:0]),          .dout(obuf_addr),       .en(obuf_wr_en),                                                                                           .*);
-   rvdffe     #(.WIDTH(64))              obuf_dataff       (.din(obuf_data_in[63:0]),          .dout(obuf_data),       .en(obuf_wr_en),                                                                                           .*);
-   rvdff_fpga #(.WIDTH(TIMER_LOG2))      obuf_timerff      (.din(obuf_wr_timer_in),            .dout(obuf_wr_timer),                                      .clk(lsu_busm_clk),        .clken(lsu_busm_clken), .rawclk(clk),        .*);
-
-
-   //------------------------------------------------------------------------------
-   // Output buffer logic ends here
-   //------------------------------------------------------------------------------
-
-   // Find the entry to allocate and entry to send
-   always_comb begin
-      WrPtr0_m[DEPTH_LOG2-1:0] = '0;
-      WrPtr1_m[DEPTH_LOG2-1:0] = '0;
-      found_wrptr0  = '0;
-      found_wrptr1  = '0;
-
-      // Find first write pointer
-      for (int i=0; i<DEPTH; i++) begin
-         if (~found_wrptr0) begin
-            WrPtr0_m[DEPTH_LOG2-1:0] = DEPTH_LOG2'(i);
-            found_wrptr0 = (buf_state[i] == IDLE) & ~((ibuf_valid & (ibuf_tag == i))                                               |
-                                                      (lsu_busreq_r & ((WrPtr0_r == i) | (ldst_dual_r & (WrPtr1_r == i)))));
-         end
-      end
-
-      // Find second write pointer
-      for (int i=0; i<DEPTH; i++) begin
-         if (~found_wrptr1) begin
-            WrPtr1_m[DEPTH_LOG2-1:0] = DEPTH_LOG2'(i);
-            found_wrptr1 = (buf_state[i] == IDLE) & ~((ibuf_valid & (ibuf_tag == i))                                               |
-                                                      (lsu_busreq_m & (WrPtr0_m == i))                                         |
-                                                      (lsu_busreq_r & ((WrPtr0_r == i) | (ldst_dual_r & (WrPtr1_r == i)))));
-         end
-      end
-   end
-
-   // Get the command ptr
-   for (genvar i=0; i<DEPTH; i++) begin
-      // These should be one-hot
-      assign CmdPtr0Dec[i] = ~(|buf_age[i]) & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i];
-      assign CmdPtr1Dec[i] = ~(|(buf_age[i] & ~CmdPtr0Dec)) & ~CmdPtr0Dec[i] & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i];
-      assign RspPtrDec[i]  = ~(|buf_rsp_pickage[i]) & (buf_state[i] == DONE_WAIT);
-   end
-
-   assign found_cmdptr0 = |CmdPtr0Dec;
-   assign found_cmdptr1 = |CmdPtr1Dec;
-   assign CmdPtr0 = f_Enc8to3(8'(CmdPtr0Dec[DEPTH-1:0]));
-   assign CmdPtr1 = f_Enc8to3(8'(CmdPtr1Dec[DEPTH-1:0]));
-   assign RspPtr  = f_Enc8to3(8'(RspPtrDec[DEPTH-1:0]));
-
-   // Age vector
-   for (genvar i=0; i<DEPTH; i++) begin: GenAgeVec
-      for (genvar j=0; j<DEPTH; j++) begin
-         assign buf_age_in[i][j] = (((buf_state[i] == IDLE) & buf_state_en[i]) &
-                                    (((buf_state[j] == WAIT) | ((buf_state[j] == CMD) & ~buf_cmd_state_bus_en[j]))                   |       // Set age bit for older entries
-                                     (ibuf_drain_vld & lsu_busreq_r & (ibuf_byp | ldst_dual_r) & (i == WrPtr0_r) & (j == ibuf_tag))  |       // Set case for dual lo
-                                     (ibuf_byp & lsu_busreq_r & ldst_dual_r & (i == WrPtr1_r) & (j == WrPtr0_r))))                      |     // ibuf bypass case
-                                   buf_age[i][j];
-
-
-         assign buf_age[i][j]    = buf_ageQ[i][j] & ~((buf_state[j] == CMD) & buf_cmd_state_bus_en[j]) & ~dec_tlu_force_halt;  // Reset case
-
-         assign buf_age_younger[i][j] = (i == j) ? 1'b0: (~buf_age[i][j] & (buf_state[j] != IDLE));   // Younger entries
-      end
-   end
-
-   // Age vector for responses
-   for (genvar i=0; i<DEPTH; i++) begin: GenRspAgeVec
-      for (genvar j=0; j<DEPTH; j++) begin
-         assign buf_rspage_set[i][j] = ((buf_state[i] == IDLE) & buf_state_en[i]) &
-                                           (~((buf_state[j] == IDLE) | (buf_state[j] == DONE))                                         |       // Set age bit for older entries
-                                            (ibuf_drain_vld & lsu_busreq_r & (ibuf_byp | ldst_dual_r) & (DEPTH_LOG2'(i) == WrPtr0_r) & (DEPTH_LOG2'(j) == ibuf_tag))  |       // Set case for dual lo
-                                            (ibuf_byp & lsu_busreq_r & ldst_dual_r & (DEPTH_LOG2'(i) == WrPtr1_r) & (DEPTH_LOG2'(j) == WrPtr0_r)));
-         assign buf_rspage_in[i][j] = buf_rspage_set[i][j] | buf_rspage[i][j];
-         assign buf_rspage[i][j]    = buf_rspageQ[i][j] & ~((buf_state[j] == DONE) | (buf_state[j] == IDLE)) & ~dec_tlu_force_halt;  // Reset case
-         assign buf_rsp_pickage[i][j] = buf_rspageQ[i][j] & (buf_state[j] == DONE_WAIT);
-     end
-   end
-
-   //------------------------------------------------------------------------------
-   // Buffer logic
-   //------------------------------------------------------------------------------
-   for (genvar i=0; i<DEPTH; i++) begin
-
-      assign ibuf_drainvec_vld[i] = (ibuf_drain_vld & (i == ibuf_tag));
-      assign buf_byteen_in[i]     = ibuf_drainvec_vld[i] ? ibuf_byteen_out[3:0] : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? ldst_byteen_hi_r[3:0] : ldst_byteen_lo_r[3:0]);
-      assign buf_addr_in[i]       = ibuf_drainvec_vld[i] ? ibuf_addr[31:0] : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? end_addr_r[31:0] : lsu_addr_r[31:0]);
-      assign buf_dual_in[i]       = ibuf_drainvec_vld[i] ? ibuf_dual : ldst_dual_r;
-      assign buf_samedw_in[i]     = ibuf_drainvec_vld[i] ? ibuf_samedw : ldst_samedw_r;
-      assign buf_nomerge_in[i]    = ibuf_drainvec_vld[i] ? (ibuf_nomerge | ibuf_force_drain) : no_dword_merge_r;
-      assign buf_dualhi_in[i]     = ibuf_drainvec_vld[i] ? ibuf_dual : (ibuf_byp & ldst_dual_r & (i == WrPtr1_r));   // If it's dual, ibuf will always have the high
-      assign buf_dualtag_in[i]    = ibuf_drainvec_vld[i] ? ibuf_dualtag : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? WrPtr0_r : WrPtr1_r);
-      assign buf_sideeffect_in[i] = ibuf_drainvec_vld[i] ? ibuf_sideeffect : is_sideeffects_r;
-      assign buf_unsign_in[i]     = ibuf_drainvec_vld[i] ? ibuf_unsign : lsu_pkt_r.unsign;
-      assign buf_sz_in[i]         = ibuf_drainvec_vld[i] ? ibuf_sz : {lsu_pkt_r.word, lsu_pkt_r.half};
-      assign buf_write_in[i]      = ibuf_drainvec_vld[i] ? ibuf_write : lsu_pkt_r.store;
-
-      // Buffer entry state machine
-      always_comb begin
-         buf_nxtstate[i]          = IDLE;
-         buf_state_en[i]          = '0;
-         buf_resp_state_bus_en[i] = '0;
-         buf_state_bus_en[i]      = '0;
-         buf_wr_en[i]             = '0;
-         buf_data_in[i]           = '0;
-         buf_data_en[i]           = '0;
-         buf_error_en[i]          = '0;
-         buf_rst[i]               = dec_tlu_force_halt;
-         buf_ldfwd_en[i]          = dec_tlu_force_halt;
-         buf_ldfwd_in[i]          = '0;
-         buf_ldfwdtag_in[i]       = '0;
-
-         case (buf_state[i])
-            IDLE: begin
-                     buf_nxtstate[i] = lsu_bus_clk_en ? CMD : WAIT;
-                     buf_state_en[i] = (lsu_busreq_r & lsu_commit_r & (((ibuf_byp | ldst_dual_r) & ~ibuf_merge_en & (i == WrPtr0_r)) | (ibuf_byp & ldst_dual_r & (i == WrPtr1_r)))) |
-                                       (ibuf_drain_vld & (i == ibuf_tag));
-                     buf_wr_en[i]    = buf_state_en[i];
-                     buf_data_en[i]  = buf_state_en[i];
-                     buf_data_in[i]   = (ibuf_drain_vld & (i == ibuf_tag)) ? ibuf_data_out[31:0] : store_data_lo_r[31:0];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            WAIT: begin
-                     buf_nxtstate[i] = dec_tlu_force_halt ? IDLE : CMD;
-                     buf_state_en[i] = lsu_bus_clk_en | dec_tlu_force_halt;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            CMD: begin
-                     buf_nxtstate[i]          = dec_tlu_force_halt ? IDLE : (obuf_nosend & bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag)) ? DONE_WAIT : RESP;
-                     buf_cmd_state_bus_en[i]  = ((obuf_tag0 == i) | (obuf_merge & (obuf_tag1 == i))) & obuf_valid & obuf_wr_enQ;  // Just use the recently written obuf_valid
-                     buf_state_bus_en[i]      = buf_cmd_state_bus_en[i];
-                     buf_state_en[i]          = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_ldfwd_in[i]          = 1'b1;
-                     buf_ldfwd_en[i]          = buf_state_en[i] & ~buf_write[i] & obuf_nosend & ~dec_tlu_force_halt;
-                     buf_ldfwdtag_in[i]       = DEPTH_LOG2'(obuf_rdrsp_tag[pt.LSU_BUS_TAG-2:0]);
-                     buf_data_en[i]           = buf_state_bus_en[i] & lsu_bus_clk_en & obuf_nosend & bus_rsp_read;
-                     buf_error_en[i]          = buf_state_bus_en[i] & lsu_bus_clk_en & obuf_nosend & bus_rsp_read_error;
-                     buf_data_in[i]           = buf_error_en[i] ? bus_rsp_rdata[31:0] : (buf_addr[i][2] ? bus_rsp_rdata[63:32] : bus_rsp_rdata[31:0]);
-            end
-            RESP: begin
-                     buf_nxtstate[i]           = (dec_tlu_force_halt | (buf_write[i] & ~bus_rsp_write_error)) ? IDLE :    // Side-effect writes will be non-posted
-                                                      (buf_dual[i] & ~buf_samedw[i] & ~buf_write[i] & (buf_state[buf_dualtag[i]] != DONE_PARTIAL)) ? DONE_PARTIAL : // Goto DONE_PARTIAL if this is the first return of dual
-                                                           (buf_ldfwd[i] | any_done_wait_state |
-                                                            (buf_dual[i] & ~buf_samedw[i] & ~buf_write[i] & buf_ldfwd[buf_dualtag[i]] &
-                                                             (buf_state[buf_dualtag[i]] == DONE_PARTIAL) & any_done_wait_state)) ? DONE_WAIT : DONE;
-                     buf_resp_state_bus_en[i]  = (bus_rsp_write & (bus_rsp_write_tag == (pt.LSU_BUS_TAG)'(i))) |
-                                                 (bus_rsp_read  & ((bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(i)) |
-                                                                   (buf_ldfwd[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[i]))) |
-                                                                   (buf_dual[i] & buf_dualhi[i] & ~buf_write[i] & buf_samedw[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_dualtag[i])))));
-                     buf_state_bus_en[i]       = buf_resp_state_bus_en[i];
-                     buf_state_en[i]           = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_data_en[i]            = buf_state_bus_en[i] & bus_rsp_read & lsu_bus_clk_en;
-                      // Need to capture the error for stores as well for AXI
-                     buf_error_en[i]           = buf_state_bus_en[i] & lsu_bus_clk_en & ((bus_rsp_read_error  & (bus_rsp_read_tag  == (pt.LSU_BUS_TAG)'(i))) |
-                                                                                         (bus_rsp_read_error  & buf_ldfwd[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[i]))) |
-                                                                                         (bus_rsp_write_error & (bus_rsp_write_tag == (pt.LSU_BUS_TAG)'(i))));
-                     buf_data_in[i][31:0]      = (buf_state_en[i] & ~buf_error_en[i]) ? (buf_addr[i][2] ? bus_rsp_rdata[63:32] : bus_rsp_rdata[31:0]) : bus_rsp_rdata[31:0];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE_PARTIAL: begin   // Other part of dual load hasn't returned
-                     buf_nxtstate[i]           = dec_tlu_force_halt ? IDLE : (buf_ldfwd[i] | buf_ldfwd[buf_dualtag[i]] | any_done_wait_state) ? DONE_WAIT : DONE;
-                     buf_state_bus_en[i]       = bus_rsp_read & ((bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_dualtag[i])) |
-                                                                 (buf_ldfwd[buf_dualtag[i]] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[buf_dualtag[i]]))));
-                     buf_state_en[i]           = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE_WAIT: begin  // WAIT state if there are multiple outstanding nb returns
-                      buf_nxtstate[i]           = dec_tlu_force_halt ? IDLE : DONE;
-                      buf_state_en[i]           = ((RspPtr == DEPTH_LOG2'(i)) | (buf_dual[i] & (buf_dualtag[i] == RspPtr))) | dec_tlu_force_halt;
-                      buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE: begin
-                     buf_nxtstate[i]           = IDLE;
-                     buf_rst[i]                = 1'b1;
-                     buf_state_en[i]           = 1'b1;
-                     buf_ldfwd_in[i]           = 1'b0;
-                     buf_ldfwd_en[i]           = buf_state_en[i];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            default : begin
-                     buf_nxtstate[i]          = IDLE;
-                     buf_state_en[i]          = '0;
-                     buf_resp_state_bus_en[i] = '0;
-                     buf_state_bus_en[i]      = '0;
-                     buf_wr_en[i]             = '0;
-                     buf_data_in[i]           = '0;
-                     buf_data_en[i]           = '0;
-                     buf_error_en[i]          = '0;
-                     buf_rst[i]               = '0;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-         endcase
-      end
-
-      rvdffs  #(.WIDTH($bits(state_t))) buf_state_ff     (.din(buf_nxtstate[i]),             .dout({buf_state[i]}),    .en(buf_state_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdff   #(.WIDTH(DEPTH))          buf_ageff        (.din(buf_age_in[i]),               .dout(buf_ageQ[i]),                                                                    .clk(lsu_bus_buf_c1_clk), .*);
-      rvdff   #(.WIDTH(DEPTH))          buf_rspageff     (.din(buf_rspage_in[i]),            .dout(buf_rspageQ[i]),                                                                 .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(DEPTH_LOG2))     buf_dualtagff    (.din(buf_dualtag_in[i]),           .dout(buf_dualtag[i]),    .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_dualff       (.din(buf_dual_in[i]),              .dout(buf_dual[i]),       .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_samedwff     (.din(buf_samedw_in[i]),            .dout(buf_samedw[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_nomergeff    (.din(buf_nomerge_in[i]),           .dout(buf_nomerge[i]),    .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_dualhiff     (.din(buf_dualhi_in[i]),            .dout(buf_dualhi[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_ldfwdff      (.din(buf_ldfwd_in[i]),             .dout(buf_ldfwd[i]),      .en(buf_ldfwd_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(DEPTH_LOG2))     buf_ldfwdtagff   (.din(buf_ldfwdtag_in[i]),          .dout(buf_ldfwdtag[i]),   .en(buf_ldfwd_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_sideeffectff (.din(buf_sideeffect_in[i]),        .dout(buf_sideeffect[i]), .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_unsignff     (.din(buf_unsign_in[i]),            .dout(buf_unsign[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_writeff      (.din(buf_write_in[i]),             .dout(buf_write[i]),      .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(2))              buf_szff         (.din(buf_sz_in[i]),                .dout(buf_sz[i]),         .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffe  #(.WIDTH(32))             buf_addrff       (.din(buf_addr_in[i][31:0]),        .dout(buf_addr[i]),       .en(buf_wr_en[i]),                                                                     .*);
-      rvdffs  #(.WIDTH(4))              buf_byteenff     (.din(buf_byteen_in[i][3:0]),       .dout(buf_byteen[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffe  #(.WIDTH(32))             buf_dataff       (.din(buf_data_in[i][31:0]),        .dout(buf_data[i]),       .en(buf_data_en[i]),                                                                   .*);
-      rvdffsc #(.WIDTH(1))              buf_errorff      (.din(1'b1),                        .dout(buf_error[i]),      .en(buf_error_en[i]),                    .clear(buf_rst[i]), .clk(lsu_bus_buf_c1_clk), .*);
-
-   end
-
-   // buffer full logic
-   always_comb begin
-      buf_numvld_any[3:0] =  ({1'b0,lsu_busreq_m} << ldst_dual_m) +
-                             ({1'b0,lsu_busreq_r} << ldst_dual_r) +
-                             ibuf_valid;
-      buf_numvld_wrcmd_any[3:0] = 4'b0;
-      buf_numvld_cmd_any[3:0] = 4'b0;
-      buf_numvld_pend_any[3:0] = 4'b0;
-      any_done_wait_state = 1'b0;
-      for (int i=0; i<DEPTH; i++) begin
-         buf_numvld_any[3:0] += {3'b0, (buf_state[i] != IDLE)};
-         buf_numvld_wrcmd_any[3:0] += {3'b0, (buf_write[i] & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i])};
-         buf_numvld_cmd_any[3:0]   += {3'b0, ((buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i])};
-         buf_numvld_pend_any[3:0]   += {3'b0, ((buf_state[i] == WAIT) | ((buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i]))};
-         any_done_wait_state |= (buf_state[i] == DONE_WAIT);
-      end
-   end
-
-   assign lsu_bus_buffer_pend_any = (buf_numvld_pend_any != 0);
-   assign lsu_bus_buffer_full_any = (ldst_dual_d & dec_lsu_valid_raw_d) ? (buf_numvld_any[3:0] >= (DEPTH-1)) : (buf_numvld_any[3:0] == DEPTH);
-   assign lsu_bus_buffer_empty_any = ~(|buf_state[DEPTH-1:0]) & ~ibuf_valid & ~obuf_valid;
-
-
-   // Non blocking ports
-   assign lsu_nonblock_load_valid_m = lsu_busreq_m & lsu_pkt_m.valid & lsu_pkt_m.load & ~flush_m_up & ~ld_full_hit_m;
-   assign lsu_nonblock_load_tag_m[DEPTH_LOG2-1:0] = WrPtr0_m[DEPTH_LOG2-1:0];
-   assign lsu_nonblock_load_inv_r = lsu_nonblock_load_valid_r & ~lsu_commit_r;
-   assign lsu_nonblock_load_inv_tag_r[DEPTH_LOG2-1:0] = WrPtr0_r[DEPTH_LOG2-1:0];      // r tag needs to be accurate even if there is no invalidate
-
-   always_comb begin
-      lsu_nonblock_load_data_ready = '0;
-      lsu_nonblock_load_data_error = '0;
-      lsu_nonblock_load_data_tag[DEPTH_LOG2-1:0] = '0;
-      lsu_nonblock_load_data_lo[31:0] = '0;
-      lsu_nonblock_load_data_hi[31:0] = '0;
-      for (int i=0; i<DEPTH; i++) begin
-          // Use buf_rst[i] instead of buf_state_en[i] for timing
-          lsu_nonblock_load_data_ready      |= (buf_state[i] == DONE) & ~buf_write[i];
-          lsu_nonblock_load_data_error      |= (buf_state[i] == DONE) & buf_error[i] & ~buf_write[i];
-          lsu_nonblock_load_data_tag[DEPTH_LOG2-1:0]   |= DEPTH_LOG2'(i) & {DEPTH_LOG2{((buf_state[i] == DONE) & ~buf_write[i] & (~buf_dual[i] | ~buf_dualhi[i]))}};
-          lsu_nonblock_load_data_lo[31:0]     |= buf_data[i][31:0] & {32{((buf_state[i] == DONE) & ~buf_write[i] & (~buf_dual[i] | ~buf_dualhi[i]))}};
-          lsu_nonblock_load_data_hi[31:0]     |= buf_data[i][31:0] & {32{((buf_state[i] == DONE) & ~buf_write[i] & (buf_dual[i] & buf_dualhi[i]))}};
-      end
-   end
-
-   assign lsu_nonblock_addr_offset[1:0] = buf_addr[lsu_nonblock_load_data_tag][1:0];
-   assign lsu_nonblock_sz[1:0]          = buf_sz[lsu_nonblock_load_data_tag][1:0];
-   assign lsu_nonblock_unsign           = buf_unsign[lsu_nonblock_load_data_tag];
-   assign lsu_nonblock_data_unalgn[31:0] = 32'({lsu_nonblock_load_data_hi[31:0], lsu_nonblock_load_data_lo[31:0]} >> 8*lsu_nonblock_addr_offset[1:0]);
-
-   assign lsu_nonblock_load_data_valid = lsu_nonblock_load_data_ready & ~lsu_nonblock_load_data_error;
-   assign lsu_nonblock_load_data[31:0] = ({32{ lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b00)}} & {24'b0,lsu_nonblock_data_unalgn[7:0]}) |
-                                         ({32{ lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b01)}} & {16'b0,lsu_nonblock_data_unalgn[15:0]}) |
-                                         ({32{~lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b00)}} & {{24{lsu_nonblock_data_unalgn[7]}}, lsu_nonblock_data_unalgn[7:0]}) |
-                                         ({32{~lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b01)}} & {{16{lsu_nonblock_data_unalgn[15]}},lsu_nonblock_data_unalgn[15:0]}) |
-                                         ({32{(lsu_nonblock_sz[1:0] == 2'b10)}} & lsu_nonblock_data_unalgn[31:0]);
-
-   // Determine if there is a pending return to sideeffect load/store
-   always_comb begin
-      bus_sideeffect_pend = obuf_valid & obuf_sideeffect & dec_tlu_sideeffect_posted_disable;
-      for (int i=0; i<DEPTH; i++) begin
-         bus_sideeffect_pend |= ((buf_state[i] == RESP) & buf_sideeffect[i] & dec_tlu_sideeffect_posted_disable);
-      end
-   end
-
-   // We have no ordering rules for AXI. Need to check outstanding trxns to same address for AXI
-   always_comb begin
-      bus_addr_match_pending = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         bus_addr_match_pending |= (obuf_valid & (obuf_addr[31:3] == buf_addr[i][31:3]) & (buf_state[i] == RESP) & ~((obuf_tag0 == (pt.LSU_BUS_TAG)'(i)) | (obuf_merge & (obuf_tag1 == (pt.LSU_BUS_TAG)'(i)))));
-      end
-   end
-
-   // Generic bus signals
-   assign bus_cmd_ready                      = obuf_write ? ((obuf_cmd_done | obuf_data_done) ? (obuf_cmd_done ? lsu_axi_wready : lsu_axi_awready) : (lsu_axi_awready & lsu_axi_wready)) : lsu_axi_arready;
-   assign bus_wcmd_sent                      = lsu_axi_awvalid & lsu_axi_awready;
-   assign bus_wdata_sent                     = lsu_axi_wvalid & lsu_axi_wready;
-   assign bus_cmd_sent                       = ((obuf_cmd_done | bus_wcmd_sent) & (obuf_data_done | bus_wdata_sent)) | (lsu_axi_arvalid & lsu_axi_arready);
-
-   assign bus_rsp_read                       = lsu_axi_rvalid & lsu_axi_rready;
-   assign bus_rsp_write                      = lsu_axi_bvalid & lsu_axi_bready;
-   assign bus_rsp_read_tag[pt.LSU_BUS_TAG-1:0]  = lsu_axi_rid[pt.LSU_BUS_TAG-1:0];
-   assign bus_rsp_write_tag[pt.LSU_BUS_TAG-1:0] = lsu_axi_bid[pt.LSU_BUS_TAG-1:0];
-   assign bus_rsp_write_error                = bus_rsp_write & (lsu_axi_bresp[1:0] != 2'b0);
-   assign bus_rsp_read_error                 = bus_rsp_read  & (lsu_axi_rresp[1:0] != 2'b0);
-   assign bus_rsp_rdata[63:0]                = lsu_axi_rdata[63:0];
-
-   // AXI command signals
-   assign lsu_axi_awvalid               = obuf_valid & obuf_write & ~obuf_cmd_done & ~bus_addr_match_pending;
-   assign lsu_axi_awid[pt.LSU_BUS_TAG-1:0] = (pt.LSU_BUS_TAG)'(obuf_tag0);
-   assign lsu_axi_awaddr[31:0]          = obuf_sideeffect ? obuf_addr[31:0] : {obuf_addr[31:3],3'b0};
-   assign lsu_axi_awsize[2:0]           = obuf_sideeffect ? {1'b0, obuf_sz[1:0]} : 3'b011;
-   assign lsu_axi_awprot[2:0]           = 3'b001;
-   assign lsu_axi_awcache[3:0]          = obuf_sideeffect ? 4'b0 : 4'b1111;
-   assign lsu_axi_awregion[3:0]         = obuf_addr[31:28];
-   assign lsu_axi_awlen[7:0]            = '0;
-   assign lsu_axi_awburst[1:0]          = 2'b01;
-   assign lsu_axi_awqos[3:0]            = '0;
-   assign lsu_axi_awlock                = '0;
-
-   assign lsu_axi_wvalid                = obuf_valid & obuf_write & ~obuf_data_done & ~bus_addr_match_pending;
-   assign lsu_axi_wstrb[7:0]            = obuf_byteen[7:0] & {8{obuf_write}};
-   assign lsu_axi_wdata[63:0]           = obuf_data[63:0];
-   assign lsu_axi_wlast                 = '1;
-
-   assign lsu_axi_arvalid               = obuf_valid & ~obuf_write & ~obuf_nosend & ~bus_addr_match_pending;
-   assign lsu_axi_arid[pt.LSU_BUS_TAG-1:0] = (pt.LSU_BUS_TAG)'(obuf_tag0);
-   assign lsu_axi_araddr[31:0]          = obuf_sideeffect ? obuf_addr[31:0] : {obuf_addr[31:3],3'b0};
-   assign lsu_axi_arsize[2:0]           = obuf_sideeffect ? {1'b0, obuf_sz[1:0]} : 3'b011;
-   assign lsu_axi_arprot[2:0]           = 3'b001;
-   assign lsu_axi_arcache[3:0]          = obuf_sideeffect ? 4'b0 : 4'b1111;
-   assign lsu_axi_arregion[3:0]         = obuf_addr[31:28];
-   assign lsu_axi_arlen[7:0]            = '0;
-   assign lsu_axi_arburst[1:0]          = 2'b01;
-   assign lsu_axi_arqos[3:0]            = '0;
-   assign lsu_axi_arlock                = '0;
-
-   assign lsu_axi_bready = 1;
-   assign lsu_axi_rready = 1;
-
-   always_comb begin
-      lsu_imprecise_error_store_any = '0;
-      lsu_imprecise_error_store_tag = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         lsu_imprecise_error_store_any |= lsu_bus_clk_en_q & (buf_state[i] == DONE) & buf_error[i] & buf_write[i];
-         lsu_imprecise_error_store_tag |= DEPTH_LOG2'(i) & {DEPTH_LOG2{((buf_state[i] == DONE) & buf_error[i] & buf_write[i])}};
-      end
-   end
-   assign lsu_imprecise_error_load_any       = lsu_nonblock_load_data_error & ~lsu_imprecise_error_store_any;   // This is to make sure we send only one imprecise error for load/store
-   assign lsu_imprecise_error_addr_any[31:0] = lsu_imprecise_error_store_any ? buf_addr[lsu_imprecise_error_store_tag] : buf_addr[lsu_nonblock_load_data_tag];
-
-   // PMU signals
-   assign lsu_pmu_bus_trxn  = (lsu_axi_awvalid & lsu_axi_awready) | (lsu_axi_wvalid & lsu_axi_wready) | (lsu_axi_arvalid & lsu_axi_arready);
-   assign lsu_pmu_bus_misaligned = lsu_busreq_r & ldst_dual_r & lsu_commit_r;
-   assign lsu_pmu_bus_error = lsu_imprecise_error_load_any | lsu_imprecise_error_store_any;
-   assign lsu_pmu_bus_busy  = (lsu_axi_awvalid & ~lsu_axi_awready) | (lsu_axi_wvalid & ~lsu_axi_wready) | (lsu_axi_arvalid & ~lsu_axi_arready);
-
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_awvalid_ff (.din(lsu_axi_awvalid),                .dout(lsu_axi_awvalid_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_awready_ff (.din(lsu_axi_awready),                .dout(lsu_axi_awready_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_wvalid_ff  (.din(lsu_axi_wvalid),                 .dout(lsu_axi_wvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_wready_ff  (.din(lsu_axi_wready),                 .dout(lsu_axi_wready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_arvalid_ff (.din(lsu_axi_arvalid),                .dout(lsu_axi_arvalid_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_arready_ff (.din(lsu_axi_arready),                .dout(lsu_axi_arready_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_bvalid_ff  (.din(lsu_axi_bvalid),                 .dout(lsu_axi_bvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_bready_ff  (.din(lsu_axi_bready),                 .dout(lsu_axi_bready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(2))              lsu_axi_bresp_ff   (.din(lsu_axi_bresp[1:0]),             .dout(lsu_axi_bresp_q[1:0]),             .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) lsu_axi_bid_ff     (.din(lsu_axi_bid[pt.LSU_BUS_TAG-1:0]),.dout(lsu_axi_bid_q[pt.LSU_BUS_TAG-1:0]),.clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(64))             lsu_axi_rdata_ff   (.din(lsu_axi_rdata[63:0]),            .dout(lsu_axi_rdata_q[63:0]),            .en((lsu_axi_rvalid | clk_override) & lsu_bus_clk_en), .*);
-
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_rvalid_ff  (.din(lsu_axi_rvalid),                 .dout(lsu_axi_rvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_rready_ff  (.din(lsu_axi_rready),                 .dout(lsu_axi_rready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(2))              lsu_axi_rresp_ff   (.din(lsu_axi_rresp[1:0]),             .dout(lsu_axi_rresp_q[1:0]),             .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) lsu_axi_rid_ff     (.din(lsu_axi_rid[pt.LSU_BUS_TAG-1:0]),.dout(lsu_axi_rid_q[pt.LSU_BUS_TAG-1:0]),.clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-
-   rvdff #(.WIDTH(DEPTH_LOG2)) lsu_WrPtr0_rff (.din(WrPtr0_m), .dout(WrPtr0_r), .clk(lsu_c2_r_clk), .*);
-   rvdff #(.WIDTH(DEPTH_LOG2)) lsu_WrPtr1_rff (.din(WrPtr1_m), .dout(WrPtr1_r), .clk(lsu_c2_r_clk), .*);
-
-   rvdff #(.WIDTH(1)) lsu_busreq_rff (.din(lsu_busreq_m & ~flush_r & ~ld_full_hit_m),      .dout(lsu_busreq_r), .clk(lsu_c2_r_clk), .*);
-   rvdff #(.WIDTH(1)) lsu_nonblock_load_valid_rff  (.din(lsu_nonblock_load_valid_m),  .dout(lsu_nonblock_load_valid_r), .clk(lsu_c2_r_clk), .*);
-
-
-endmodule // eb1_lsu_bus_buffer
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: lsu interface with interface queue
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_bus_intf
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic                          clk,                                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                          clk_override,                       // Override non-functional clock gating
-   input logic                          rst_l,                              // reset, active low
-   input logic                          scan_mode,                          // scan mode
-   input logic                          dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                          dec_tlu_wb_coalescing_disable,      // disable write buffer coalescing
-   input logic                          dec_tlu_sideeffect_posted_disable,  // disable the posted sideeffect load store to the bus
-
-   // various clocks needed for the bus reads and writes
-   input logic                          lsu_bus_obuf_c1_clken,              // obuf clock enable
-   input logic                          lsu_busm_clken,                     // bus clock enable
-
-   input logic                          lsu_c1_r_clk,                       // r pipe single pulse clock
-   input logic                          lsu_c2_r_clk,                       // r pipe double pulse clock
-   input logic                          lsu_bus_ibuf_c1_clk,                // ibuf single pulse clock
-   input logic                          lsu_bus_obuf_c1_clk,                // obuf single pulse clock
-   input logic                          lsu_bus_buf_c1_clk,                 // buf  single pulse clock
-   input logic                          lsu_free_c2_clk,                    // free clock double pulse clock
-   input logic                          active_clk,                         // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                          lsu_busm_clk,                       // bus clock
-
-   input logic                          dec_lsu_valid_raw_d,               // Raw valid for address computation
-   input logic                          lsu_busreq_m,                      // bus request is in m
-
-   input                                eb1_lsu_pkt_t lsu_pkt_m,          // lsu packet flowing down the pipe
-   input                                eb1_lsu_pkt_t lsu_pkt_r,          // lsu packet flowing down the pipe
-
-   input logic [31:0]                   lsu_addr_m,                        // lsu address flowing down the pipe
-   input logic [31:0]                   lsu_addr_r,                        // lsu address flowing down the pipe
-
-   input logic [31:0]                   end_addr_m,                        // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_r,                        // lsu address flowing down the pipe
-
-   input logic [31:0]                   store_data_r,                      // store data flowing down the pipe
-   input logic                          dec_tlu_force_halt,
-
-   input logic                          lsu_commit_r,                      // lsu instruction in r commits
-   input logic                          is_sideeffects_m,                  // lsu attribute is side_effects
-   input logic                          flush_m_up,                        // flush
-   input logic                          flush_r,                           // flush
-   input logic                          ldst_dual_d, ldst_dual_m, ldst_dual_r,
-
-   output logic                         lsu_busreq_r,                      // bus request is in r
-   output logic                         lsu_bus_buffer_pend_any,           // bus buffer has a pending bus entry
-   output logic                         lsu_bus_buffer_full_any,           // write buffer is full
-   output logic                         lsu_bus_buffer_empty_any,          // write buffer is empty
-   output logic [31:0]                  bus_read_data_m,                   // the bus return data
-
-
-   output logic                         lsu_imprecise_error_load_any,      // imprecise load bus error
-   output logic                         lsu_imprecise_error_store_any,     // imprecise store bus error
-   output logic [31:0]                  lsu_imprecise_error_addr_any,      // address of the imprecise error
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,   // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,     // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,     // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r, // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,// the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,// non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,  // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,      // Data of the non block load
-
-   // PMU events
-   output logic                         lsu_pmu_bus_trxn,
-   output logic                         lsu_pmu_bus_misaligned,
-   output logic                         lsu_pmu_bus_error,
-   output logic                         lsu_pmu_bus_busy,
-
-   // AXI Write Channels
-   output logic                        lsu_axi_awvalid,
-   input  logic                        lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_awid,
-   output logic [31:0]                 lsu_axi_awaddr,
-   output logic [3:0]                  lsu_axi_awregion,
-   output logic [7:0]                  lsu_axi_awlen,
-   output logic [2:0]                  lsu_axi_awsize,
-   output logic [1:0]                  lsu_axi_awburst,
-   output logic                        lsu_axi_awlock,
-   output logic [3:0]                  lsu_axi_awcache,
-   output logic [2:0]                  lsu_axi_awprot,
-   output logic [3:0]                  lsu_axi_awqos,
-
-   output logic                        lsu_axi_wvalid,
-   input  logic                        lsu_axi_wready,
-   output logic [63:0]                 lsu_axi_wdata,
-   output logic [7:0]                  lsu_axi_wstrb,
-   output logic                        lsu_axi_wlast,
-
-   input  logic                        lsu_axi_bvalid,
-   output logic                        lsu_axi_bready,
-   input  logic [1:0]                  lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                        lsu_axi_arvalid,
-   input  logic                        lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_arid,
-   output logic [31:0]                 lsu_axi_araddr,
-   output logic [3:0]                  lsu_axi_arregion,
-   output logic [7:0]                  lsu_axi_arlen,
-   output logic [2:0]                  lsu_axi_arsize,
-   output logic [1:0]                  lsu_axi_arburst,
-   output logic                        lsu_axi_arlock,
-   output logic [3:0]                  lsu_axi_arcache,
-   output logic [2:0]                  lsu_axi_arprot,
-   output logic [3:0]                  lsu_axi_arqos,
-
-   input  logic                        lsu_axi_rvalid,
-   output logic                        lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_rid,
-   input  logic [63:0]                 lsu_axi_rdata,
-   input  logic [1:0]                  lsu_axi_rresp,
-
-   input logic                         lsu_bus_clk_en
-
-);
-
-
-
-   logic              lsu_bus_clk_en_q;
-
-   logic [3:0]        ldst_byteen_m, ldst_byteen_r;
-   logic [7:0]        ldst_byteen_ext_m, ldst_byteen_ext_r;
-   logic [3:0]        ldst_byteen_hi_m, ldst_byteen_hi_r;
-   logic [3:0]        ldst_byteen_lo_m, ldst_byteen_lo_r;
-   logic              is_sideeffects_r;
-
-   logic [63:0]       store_data_ext_r;
-   logic [31:0]       store_data_hi_r;
-   logic [31:0]       store_data_lo_r;
-
-   logic              addr_match_dw_lo_r_m;
-   logic              addr_match_word_lo_r_m;
-   logic              no_word_merge_r, no_dword_merge_r;
-
-   logic              ld_addr_rhit_lo_lo, ld_addr_rhit_hi_lo, ld_addr_rhit_lo_hi, ld_addr_rhit_hi_hi;
-   logic [3:0]        ld_byte_rhit_lo_lo, ld_byte_rhit_hi_lo, ld_byte_rhit_lo_hi, ld_byte_rhit_hi_hi;
-
-   logic [3:0]        ld_byte_hit_lo, ld_byte_rhit_lo;
-   logic [3:0]        ld_byte_hit_hi, ld_byte_rhit_hi;
-
-   logic [31:0]       ld_fwddata_rpipe_lo;
-   logic [31:0]       ld_fwddata_rpipe_hi;
-
-   logic [3:0]        ld_byte_hit_buf_lo, ld_byte_hit_buf_hi;
-   logic [31:0]       ld_fwddata_buf_lo, ld_fwddata_buf_hi;
-
-   logic [63:0]       ld_fwddata_lo, ld_fwddata_hi;
-   logic [63:0]       ld_fwddata_m;
-
-   logic              ld_full_hit_hi_m, ld_full_hit_lo_m;
-   logic              ld_full_hit_m;
-
-   assign ldst_byteen_m[3:0] = ({4{lsu_pkt_m.by}}   & 4'b0001) |
-                                 ({4{lsu_pkt_m.half}} & 4'b0011) |
-                                 ({4{lsu_pkt_m.word}} & 4'b1111);
-
-   // Read/Write Buffer
-   eb1_lsu_bus_buffer #(.pt(pt)) bus_buffer (
-      .*
-   );
-
-   // Logic to determine if dc5 store can be coalesced or not with younger stores. Bypass ibuf if cannot colaesced
-   assign addr_match_dw_lo_r_m = (lsu_addr_r[31:3] == lsu_addr_m[31:3]);
-   assign addr_match_word_lo_r_m = addr_match_dw_lo_r_m & ~(lsu_addr_r[2]^lsu_addr_m[2]);
-
-   assign no_word_merge_r  = lsu_busreq_r & ~ldst_dual_r & lsu_busreq_m & (lsu_pkt_m.load | ~addr_match_word_lo_r_m);
-   assign no_dword_merge_r = lsu_busreq_r & ~ldst_dual_r & lsu_busreq_m & (lsu_pkt_m.load | ~addr_match_dw_lo_r_m);
-
-   // Create Hi/Lo signals
-   assign ldst_byteen_ext_m[7:0] = {4'b0,ldst_byteen_m[3:0]} << lsu_addr_m[1:0];
-   assign ldst_byteen_ext_r[7:0] = {4'b0,ldst_byteen_r[3:0]} << lsu_addr_r[1:0];
-
-   assign store_data_ext_r[63:0] = {32'b0,store_data_r[31:0]} << {lsu_addr_r[1:0],3'b0};
-
-   assign ldst_byteen_hi_m[3:0]   = ldst_byteen_ext_m[7:4];
-   assign ldst_byteen_lo_m[3:0]   = ldst_byteen_ext_m[3:0];
-   assign ldst_byteen_hi_r[3:0]   = ldst_byteen_ext_r[7:4];
-   assign ldst_byteen_lo_r[3:0]   = ldst_byteen_ext_r[3:0];
-
-   assign store_data_hi_r[31:0]   = store_data_ext_r[63:32];
-   assign store_data_lo_r[31:0]   = store_data_ext_r[31:0];
-
-   assign ld_addr_rhit_lo_lo = (lsu_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_lo_hi = (end_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_hi_lo = (lsu_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_hi_hi = (end_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-
-   for (genvar i=0; i<4; i++) begin: GenBusBufFwd
-      assign ld_byte_rhit_lo_lo[i] = ld_addr_rhit_lo_lo & ldst_byteen_lo_r[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_rhit_lo_hi[i] = ld_addr_rhit_lo_hi & ldst_byteen_lo_r[i] & ldst_byteen_hi_m[i];
-      assign ld_byte_rhit_hi_lo[i] = ld_addr_rhit_hi_lo & ldst_byteen_hi_r[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_rhit_hi_hi[i] = ld_addr_rhit_hi_hi & ldst_byteen_hi_r[i] & ldst_byteen_hi_m[i];
-
-      assign ld_byte_hit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i] |
-                                 ld_byte_hit_buf_lo[i];
-
-      assign ld_byte_hit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i] |
-                                 ld_byte_hit_buf_hi[i];
-
-      assign ld_byte_rhit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_rhit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-      assign ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_lo[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                    ({8{ld_byte_rhit_hi_lo[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      assign ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_hi[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                    ({8{ld_byte_rhit_hi_hi[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      // Final muxing between m/r
-      assign ld_fwddata_lo[(8*i)+7:(8*i)] = ld_byte_rhit_lo[i]    ? ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] : ld_fwddata_buf_lo[(8*i)+7:(8*i)];
-
-      assign ld_fwddata_hi[(8*i)+7:(8*i)] = ld_byte_rhit_hi[i]    ? ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] : ld_fwddata_buf_hi[(8*i)+7:(8*i)];
-
-   end
-
-   always_comb begin
-      ld_full_hit_lo_m = 1'b1;
-      ld_full_hit_hi_m = 1'b1;
-      for (int i=0; i<4; i++) begin
-         ld_full_hit_lo_m &= (ld_byte_hit_lo[i] | ~ldst_byteen_lo_m[i]);
-         ld_full_hit_hi_m &= (ld_byte_hit_hi[i] | ~ldst_byteen_hi_m[i]);
-      end
-   end
-
-   // This will be high if all the bytes of load hit the stores in pipe/write buffer (m/r/wrbuf)
-   assign ld_full_hit_m = ld_full_hit_lo_m & ld_full_hit_hi_m & lsu_busreq_m & lsu_pkt_m.load & ~is_sideeffects_m;
-
-   assign ld_fwddata_m[63:0] = {ld_fwddata_hi[31:0], ld_fwddata_lo[31:0]} >> (8*lsu_addr_m[1:0]);
-   assign bus_read_data_m[31:0]                        = ld_fwddata_m[31:0];
-
-   // Fifo flops
-
-   rvdff #(.WIDTH(1)) clken_ff (.din(lsu_bus_clk_en), .dout(lsu_bus_clk_en_q), .clk(active_clk), .*);
-
-   rvdff #(.WIDTH(1)) is_sideeffects_rff (.din(is_sideeffects_m), .dout(is_sideeffects_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(4) lsu_byten_rff (.*, .din(ldst_byteen_m[3:0]), .dout(ldst_byteen_r[3:0]), .clk(lsu_c1_r_clk));
-
-endmodule // eb1_lsu_bus_intf
-
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Clock Generation Block
-// Comments: All the clocks are generate here
-//
-// //********************************************************************************
-
-
-module eb1_lsu_clkdomain
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic      clk,                               // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic      active_clk,                        // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic      rst_l,                             // reset, active low
-   input logic      dec_tlu_force_halt,                // This will be high till TLU goes to debug halt
-
-   // Inputs
-   input logic      clk_override,                      // chciken bit to turn off clock gating
-   input logic      dma_dccm_req,                      // dma is active
-   input logic      ldst_stbuf_reqvld_r,               // allocating in to the store queue
-
-   input logic      stbuf_reqvld_any,                  // stbuf is draining
-   input logic      stbuf_reqvld_flushed_any,          // instruction going to stbuf is flushed
-   input logic      lsu_busreq_r,                      // busreq in r
-   input logic      lsu_bus_buffer_pend_any,           // bus buffer has a pending bus entry
-   input logic      lsu_bus_buffer_empty_any,          // external bus buffer is empty
-   input logic      lsu_stbuf_empty_any,               // stbuf is empty
-
-   input logic      lsu_bus_clk_en,                    // bus clock enable
-
-   input eb1_lsu_pkt_t  lsu_p,                        // lsu packet in decode
-   input eb1_lsu_pkt_t  lsu_pkt_d,                    // lsu packet in d
-   input eb1_lsu_pkt_t  lsu_pkt_m,                    // lsu packet in m
-   input eb1_lsu_pkt_t  lsu_pkt_r,                    // lsu packet in r
-
-   // Outputs
-   output logic     lsu_bus_obuf_c1_clken,             // obuf clock enable
-   output logic     lsu_busm_clken,                    // bus clock enable
-
-   output logic     lsu_c1_m_clk,                      // m pipe single pulse clock
-   output logic     lsu_c1_r_clk,                      // r pipe single pulse clock
-
-   output logic     lsu_c2_m_clk,                      // m pipe double pulse clock
-   output logic     lsu_c2_r_clk,                      // r pipe double pulse clock
-
-   output logic     lsu_store_c1_m_clk,                // store in m
-   output logic     lsu_store_c1_r_clk,                // store in r
-
-   output logic     lsu_stbuf_c1_clk,
-   output logic     lsu_bus_obuf_c1_clk,               // ibuf clock
-   output logic     lsu_bus_ibuf_c1_clk,               // ibuf clock
-   output logic     lsu_bus_buf_c1_clk,                // ibuf clock
-   output logic     lsu_busm_clk,                      // bus clock
-
-   output logic     lsu_free_c2_clk,                   // free double pulse clock
-
-   input  logic     scan_mode                          // Scan mode
-);
-
-   logic lsu_c1_m_clken, lsu_c1_r_clken;
-   logic lsu_c2_m_clken, lsu_c2_r_clken;
-   logic lsu_c1_m_clken_q, lsu_c1_r_clken_q;
-   logic lsu_store_c1_m_clken, lsu_store_c1_r_clken;
-
-
-   logic lsu_stbuf_c1_clken;
-   logic lsu_bus_ibuf_c1_clken, lsu_bus_buf_c1_clken;
-
-   logic lsu_free_c1_clken, lsu_free_c1_clken_q, lsu_free_c2_clken;
-
-   //-------------------------------------------------------------------------------------------
-   // Clock Enable logic
-   //-------------------------------------------------------------------------------------------
-
-   assign lsu_c1_m_clken = lsu_p.valid | dma_dccm_req | clk_override;
-   assign lsu_c1_r_clken = lsu_pkt_m.valid | lsu_c1_m_clken_q | clk_override;
-
-   assign lsu_c2_m_clken = lsu_c1_m_clken | lsu_c1_m_clken_q | clk_override;
-   assign lsu_c2_r_clken = lsu_c1_r_clken | lsu_c1_r_clken_q | clk_override;
-
-   assign lsu_store_c1_m_clken = ((lsu_c1_m_clken & lsu_pkt_d.store) | clk_override) ;
-   assign lsu_store_c1_r_clken = ((lsu_c1_r_clken & lsu_pkt_m.store) | clk_override) ;
-
-   assign lsu_stbuf_c1_clken = ldst_stbuf_reqvld_r | stbuf_reqvld_any | stbuf_reqvld_flushed_any | clk_override;
-   assign lsu_bus_ibuf_c1_clken = lsu_busreq_r | clk_override;
-   assign lsu_bus_obuf_c1_clken = (lsu_bus_buffer_pend_any | lsu_busreq_r | clk_override) & lsu_bus_clk_en;
-   assign lsu_bus_buf_c1_clken  = ~lsu_bus_buffer_empty_any | lsu_busreq_r | dec_tlu_force_halt | clk_override;
-
-   assign lsu_free_c1_clken = (lsu_p.valid | lsu_pkt_d.valid | lsu_pkt_m.valid | lsu_pkt_r.valid) |
-                              ~lsu_bus_buffer_empty_any | ~lsu_stbuf_empty_any | clk_override;
-   assign lsu_free_c2_clken = lsu_free_c1_clken | lsu_free_c1_clken_q | clk_override;
-
-    // Flops
-   rvdff #(1) lsu_free_c1_clkenff (.din(lsu_free_c1_clken), .dout(lsu_free_c1_clken_q), .clk(active_clk), .*);
-
-   rvdff #(1) lsu_c1_m_clkenff (.din(lsu_c1_m_clken), .dout(lsu_c1_m_clken_q), .clk(lsu_free_c2_clk), .*);
-   rvdff #(1) lsu_c1_r_clkenff (.din(lsu_c1_r_clken), .dout(lsu_c1_r_clken_q), .clk(lsu_free_c2_clk), .*);
-
-   // Clock Headers
-   rvoclkhdr lsu_c1m_cgc ( .en(lsu_c1_m_clken), .l1clk(lsu_c1_m_clk), .* );
-   rvoclkhdr lsu_c1r_cgc ( .en(lsu_c1_r_clken), .l1clk(lsu_c1_r_clk), .* );
-
-   rvoclkhdr lsu_c2m_cgc ( .en(lsu_c2_m_clken), .l1clk(lsu_c2_m_clk), .* );
-   rvoclkhdr lsu_c2r_cgc ( .en(lsu_c2_r_clken), .l1clk(lsu_c2_r_clk), .* );
-
-   rvoclkhdr lsu_store_c1m_cgc (.en(lsu_store_c1_m_clken), .l1clk(lsu_store_c1_m_clk), .*);
-   rvoclkhdr lsu_store_c1r_cgc (.en(lsu_store_c1_r_clken), .l1clk(lsu_store_c1_r_clk), .*);
-
-   rvoclkhdr lsu_stbuf_c1_cgc ( .en(lsu_stbuf_c1_clken), .l1clk(lsu_stbuf_c1_clk), .* );
-   rvoclkhdr lsu_bus_ibuf_c1_cgc ( .en(lsu_bus_ibuf_c1_clken), .l1clk(lsu_bus_ibuf_c1_clk), .* );
-   rvoclkhdr lsu_bus_buf_c1_cgc  ( .en(lsu_bus_buf_c1_clken),  .l1clk(lsu_bus_buf_c1_clk), .* );
-
-   assign lsu_busm_clken = (~lsu_bus_buffer_empty_any | lsu_busreq_r | clk_override) & lsu_bus_clk_en;
-
-   rvclkhdr  lsu_bus_obuf_c1_cgc ( .en(lsu_bus_obuf_c1_clken), .l1clk(lsu_bus_obuf_c1_clk), .* );
-   rvclkhdr  lsu_busm_cgc (.en(lsu_busm_clken), .l1clk(lsu_busm_clk), .*);
-
-
-   rvoclkhdr lsu_free_cgc (.en(lsu_free_c2_clken), .l1clk(lsu_free_c2_clk), .*);
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DCCM for LSU pipe
-// Comments: Single ported memory
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-module eb1_lsu_dccm_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic                             lsu_c2_m_clk,            // clocks
-   input logic                             lsu_c2_r_clk,            // clocks
-   input logic                             lsu_c1_r_clk,            // clocks
-   input logic                             lsu_store_c1_r_clk,      // clocks
-   input logic                             lsu_free_c2_clk,         // clocks
-   input logic                             clk_override,            // Override non-functional clock gating
-   input logic                             clk,                     // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-
-   input logic                             rst_l,                   // reset, active low
-
-   input                                   eb1_lsu_pkt_t lsu_pkt_r,// lsu packets
-   input                                   eb1_lsu_pkt_t lsu_pkt_m,// lsu packets
-   input                                   eb1_lsu_pkt_t lsu_pkt_d,// lsu packets
-   input logic                             addr_in_dccm_d,          // address maps to dccm
-   input logic                             addr_in_pic_d,           // address maps to pic
-   input logic                             addr_in_pic_m,           // address maps to pic
-   input logic                             addr_in_dccm_m, addr_in_dccm_r,   // address in dccm per pipe stage
-   input logic                             addr_in_pic_r,                    // address in pic  per pipe stage
-   input logic                             lsu_raw_fwd_lo_r, lsu_raw_fwd_hi_r,
-   input logic                             lsu_commit_r,            // lsu instruction in r commits
-   input logic                             ldst_dual_m, ldst_dual_r,// load/store is unaligned at 32 bit boundary per pipe stage
-
-   // lsu address down the pipe
-   input logic [31:0]                      lsu_addr_d,
-   input logic [pt.DCCM_BITS-1:0]          lsu_addr_m,
-   input logic [31:0]                      lsu_addr_r,
-
-   // lsu address down the pipe - needed to check unaligned
-   input logic [pt.DCCM_BITS-1:0]          end_addr_d,
-   input logic [pt.DCCM_BITS-1:0]          end_addr_m,
-   input logic [pt.DCCM_BITS-1:0]          end_addr_r,
-
-
-   input logic                             stbuf_reqvld_any,        // write enable
-   input logic [pt.LSU_SB_BITS-1:0]        stbuf_addr_any,          // stbuf address (aligned)
-
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_data_any,          // the read out from stbuf
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     stbuf_ecc_any,           // the encoded data with ECC bits
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_fwddata_hi_m,      // stbuf fowarding to load
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_fwddata_lo_m,      // stbuf fowarding to load
-   input logic [pt.DCCM_BYTE_WIDTH-1:0]    stbuf_fwdbyteen_hi_m,    // stbuf fowarding to load
-   input logic [pt.DCCM_BYTE_WIDTH-1:0]    stbuf_fwdbyteen_lo_m,    // stbuf fowarding to load
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_hi_r,         // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_lo_r,         // data from the dccm
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_hi_r,      // data from the dccm + ecc
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_lo_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_r,           // right justified, ie load byte will have data at 7:0
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_corr_r,      // right justified & ECC corrected, ie load byte will have data at 7:0
-
-   input logic                             lsu_double_ecc_error_r,  // lsu has a DED
-   input logic                             single_ecc_error_hi_r,   // sec detected on hi dccm bank
-   input logic                             single_ecc_error_lo_r,   // sec detected on lower dccm bank
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_r,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_r,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_r_ff,        // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_r_ff,        // corrected dccm data
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     sec_data_ecc_hi_r_ff,    // the encoded data with ECC bits
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     sec_data_ecc_lo_r_ff,    // the encoded data with ECC bits
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_hi_m,         // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_lo_m,         // data from the dccm
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_hi_m,      // data from the dccm + ecc
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_lo_m,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_m,           // right justified, ie load byte will have data at 7:0
-
-   input logic                             lsu_double_ecc_error_m,  // lsu has a DED
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_m,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_m,           // corrected dccm data
-
-   input logic [31:0]                      store_data_m,            // Store data M-stage
-   input logic                             dma_dccm_wen,            // Perform DMA writes only for word/dword
-   input logic                             dma_pic_wen,             // Perform PIC writes
-   input logic [2:0]                       dma_mem_tag_m,           // DMA Buffer entry number M-stage
-   input logic [31:0]                      dma_mem_addr,            // DMA request address
-   input logic [63:0]                      dma_mem_wdata,           // DMA write data
-   input logic [31:0]                      dma_dccm_wdata_lo,       // Shift the dma data to lower bits to make it consistent to lsu stores
-   input logic [31:0]                      dma_dccm_wdata_hi,       // Shift the dma data to lower bits to make it consistent to lsu stores
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     dma_dccm_wdata_ecc_hi,   // ECC bits for the DMA wdata
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     dma_dccm_wdata_ecc_lo,   // ECC bits for the DMA wdata
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_data_hi_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_data_lo_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_datafn_hi_r,       // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_datafn_lo_r,       // data from the dccm
-   output logic [31:0]                     store_data_r,            // raw store data to be sent to bus
-   output logic                            ld_single_ecc_error_r,
-   output logic                            ld_single_ecc_error_r_ff,
-
-   output logic [31:0]                     picm_mask_data_m,        // pic data to stbuf
-   output logic                            lsu_stbuf_commit_any,    // stbuf wins the dccm port or is to pic
-   output logic                            lsu_dccm_rden_m,         // dccm read
-   output logic                            lsu_dccm_rden_r,         // dccm read
-
-   output logic                            dccm_dma_rvalid,         // dccm serviving the dma load
-   output logic                            dccm_dma_ecc_error,      // DMA load had ecc error
-   output logic [2:0]                      dccm_dma_rtag,           // DMA return tag
-   output logic [63:0]                     dccm_dma_rdata,          // dccm data to dma request
-
-   // DCCM ports
-   output logic                            dccm_wren,               // dccm interface -- write
-   output logic                            dccm_rden,               // dccm interface -- write
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo,         // dccm interface -- wr addr for lo bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi,         // dccm interface -- wr addr for hi bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo,         // dccm interface -- read address for lo bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi,         // dccm interface -- read address for hi bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,         // dccm write data for lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,         // dccm write data for hi bank
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_lo,         // dccm read data back from the dccm
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_hi,         // dccm read data back from the dccm
-
-   // PIC ports
-   output logic                            picm_wren,               // write to pic
-   output logic                            picm_rden,               // read to pick
-   output logic                            picm_mken,               // write to pic need a mask
-   output logic [31:0]                     picm_rdaddr,             // address for pic read access
-   output logic [31:0]                     picm_wraddr,             // address for pic write access
-   output logic [31:0]                     picm_wr_data,            // write data
-   input logic [31:0]                      picm_rd_data,            // read data
-
-   input logic                             scan_mode                // scan mode
-);
-
-
-   localparam DCCM_WIDTH_BITS = $clog2(pt.DCCM_BYTE_WIDTH);
-
-   logic                           lsu_dccm_rden_d, lsu_dccm_wren_d;
-   logic                           ld_single_ecc_error_lo_r, ld_single_ecc_error_hi_r;
-   logic                           ld_single_ecc_error_lo_r_ns, ld_single_ecc_error_hi_r_ns;
-   logic                           ld_single_ecc_error_lo_r_ff, ld_single_ecc_error_hi_r_ff;
-   logic                           lsu_double_ecc_error_r_ff;
-   logic [pt.DCCM_BITS-1:0]        ld_sec_addr_lo_r_ff, ld_sec_addr_hi_r_ff;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_lo_r_in, store_data_hi_r_in ;
-   logic [63:0]                    picm_rd_data_m;
-
-   logic                           dccm_wr_bypass_d_m_hi, dccm_wr_bypass_d_r_hi;
-   logic                           dccm_wr_bypass_d_m_lo, dccm_wr_bypass_d_r_lo;
-   logic                           kill_ecc_corr_lo_r, kill_ecc_corr_hi_r;
-
-    // byte_en flowing down
-   logic [3:0]                     store_byteen_m ,store_byteen_r;
-   logic [7:0]                     store_byteen_ext_m, store_byteen_ext_r;
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic [63:0]  lsu_rdata_r, lsu_rdata_corr_r;
-      logic [63:0]  dccm_rdata_r, dccm_rdata_corr_r;
-      logic [63:0]  stbuf_fwddata_r;
-      logic [7:0]   stbuf_fwdbyteen_r;
-      logic [31:0]  stbuf_fwddata_lo_r, stbuf_fwddata_hi_r;
-      logic [3:0]   stbuf_fwdbyteen_lo_r, stbuf_fwdbyteen_hi_r;
-      logic [31:0]  lsu_rdata_lo_r, lsu_rdata_hi_r;
-      logic [63:0]  picm_rd_data_r;
-      logic [63:32] lsu_ld_data_r_nc, lsu_ld_data_corr_r_nc;
-      logic [2:0]   dma_mem_tag_r;
-      logic         stbuf_fwddata_en;
-
-      assign dccm_dma_rvalid      = lsu_pkt_r.valid & lsu_pkt_r.load & lsu_pkt_r.dma;
-      assign dccm_dma_ecc_error   = lsu_double_ecc_error_r;
-      assign dccm_dma_rtag[2:0]   = dma_mem_tag_r[2:0];
-      assign dccm_dma_rdata[63:0] = ldst_dual_r ? lsu_rdata_corr_r[63:0] : {2{lsu_rdata_corr_r[31:0]}};
-      assign {lsu_ld_data_r_nc[63:32], lsu_ld_data_r[31:0]}           = lsu_rdata_r[63:0] >> 8*lsu_addr_r[1:0];
-      assign {lsu_ld_data_corr_r_nc[63:32], lsu_ld_data_corr_r[31:0]} = lsu_rdata_corr_r[63:0] >> 8*lsu_addr_r[1:0];
-
-      assign picm_rd_data_r[63:32]   = picm_rd_data_r[31:0];
-      assign dccm_rdata_r[63:0]      = {dccm_rdata_hi_r[31:0],dccm_rdata_lo_r[31:0]};
-      assign dccm_rdata_corr_r[63:0] = {sec_data_hi_r[31:0],sec_data_lo_r[31:0]};
-      assign stbuf_fwddata_r[63:0]   = {stbuf_fwddata_hi_r[31:0], stbuf_fwddata_lo_r[31:0]};
-      assign stbuf_fwdbyteen_r[7:0]  = {stbuf_fwdbyteen_hi_r[3:0], stbuf_fwdbyteen_lo_r[3:0]};
-      assign stbuf_fwddata_en        = (|stbuf_fwdbyteen_hi_m[3:0]) | (|stbuf_fwdbyteen_lo_m[3:0]) | clk_override;
-
-      for (genvar i=0; i<8; i++) begin: GenDMAData
-         assign lsu_rdata_corr_r[(8*i)+7:8*i]  = stbuf_fwdbyteen_r[i] ? stbuf_fwddata_r[(8*i)+7:8*i] :
-                                                                        (addr_in_pic_r ? picm_rd_data_r[(8*i)+7:8*i] :  ({8{addr_in_dccm_r}} & dccm_rdata_corr_r[(8*i)+7:8*i]));
-
-         assign lsu_rdata_r[(8*i)+7:8*i]       = stbuf_fwdbyteen_r[i] ? stbuf_fwddata_r[(8*i)+7:8*i] :
-                                                                        (addr_in_pic_r ? picm_rd_data_r[(8*i)+7:8*i] :  ({8{addr_in_dccm_r}} & dccm_rdata_r[(8*i)+7:8*i]));
-      end
-      rvdffe #(pt.DCCM_DATA_WIDTH) dccm_rdata_hi_r_ff    (.*, .din(dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(dccm_rdata_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en((lsu_dccm_rden_m & ldst_dual_m) | clk_override));
-      rvdffe #(pt.DCCM_DATA_WIDTH) dccm_rdata_lo_r_ff    (.*, .din(dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(dccm_rdata_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_dccm_rden_m | clk_override));
-      rvdffe #(2*pt.DCCM_ECC_WIDTH)  dccm_data_ecc_r_ff  (.*, .din({dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0], dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0]}),
-                                                              .dout({dccm_data_ecc_hi_r[pt.DCCM_ECC_WIDTH-1:0], dccm_data_ecc_lo_r[pt.DCCM_ECC_WIDTH-1:0]}),                                  .en(lsu_dccm_rden_m | clk_override));
-      rvdff #(8)                   stbuf_fwdbyteen_ff    (.*, .din({stbuf_fwdbyteen_hi_m[3:0], stbuf_fwdbyteen_lo_m[3:0]}), .dout({stbuf_fwdbyteen_hi_r[3:0], stbuf_fwdbyteen_lo_r[3:0]}), .clk(lsu_c2_r_clk));
-      rvdffe #(64)                 stbuf_fwddata_ff      (.*, .din({stbuf_fwddata_hi_m[31:0], stbuf_fwddata_lo_m[31:0]}),   .dout({stbuf_fwddata_hi_r[31:0], stbuf_fwddata_lo_r[31:0]}),   .en(stbuf_fwddata_en));
-      rvdffe #(32)                 picm_rddata_rff       (.*, .din(picm_rd_data_m[31:0]),                                   .dout(picm_rd_data_r[31:0]),                                   .en(addr_in_pic_m | clk_override));
-      rvdff #(3)                   dma_mem_tag_rff       (.*, .din(dma_mem_tag_m[2:0]),                                     .dout(dma_mem_tag_r[2:0]),                                     .clk(lsu_c1_r_clk));
-
-   end else begin: L2U_Plus1_0
-
-      logic [63:0]  lsu_rdata_m, lsu_rdata_corr_m;
-      logic [63:0]  dccm_rdata_m, dccm_rdata_corr_m;
-      logic [63:0]  stbuf_fwddata_m;
-      logic [7:0]   stbuf_fwdbyteen_m;
-      logic [63:32] lsu_ld_data_m_nc, lsu_ld_data_corr_m_nc;
-      logic [31:0]  lsu_ld_data_corr_m;
-
-      assign dccm_dma_rvalid      = lsu_pkt_m.valid & lsu_pkt_m.load & lsu_pkt_m.dma;
-      assign dccm_dma_ecc_error   = lsu_double_ecc_error_m;
-      assign dccm_dma_rtag[2:0]   = dma_mem_tag_m[2:0];
-      assign dccm_dma_rdata[63:0] = ldst_dual_m ? lsu_rdata_corr_m[63:0] : {2{lsu_rdata_corr_m[31:0]}};
-      assign {lsu_ld_data_m_nc[63:32], lsu_ld_data_m[31:0]} = lsu_rdata_m[63:0] >> 8*lsu_addr_m[1:0];
-      assign {lsu_ld_data_corr_m_nc[63:32], lsu_ld_data_corr_m[31:0]} = lsu_rdata_corr_m[63:0] >> 8*lsu_addr_m[1:0];
-
-      assign dccm_rdata_m[63:0]      = {dccm_rdata_hi_m[31:0],dccm_rdata_lo_m[31:0]};
-      assign dccm_rdata_corr_m[63:0] = {sec_data_hi_m[31:0],sec_data_lo_m[31:0]};
-      assign stbuf_fwddata_m[63:0]   = {stbuf_fwddata_hi_m[31:0], stbuf_fwddata_lo_m[31:0]};
-      assign stbuf_fwdbyteen_m[7:0]  = {stbuf_fwdbyteen_hi_m[3:0], stbuf_fwdbyteen_lo_m[3:0]};
-
-      for (genvar i=0; i<8; i++) begin: GenLoop
-         assign lsu_rdata_corr_m[(8*i)+7:8*i] = stbuf_fwdbyteen_m[i] ? stbuf_fwddata_m[(8*i)+7:8*i] :
-                                                                       (addr_in_pic_m ? picm_rd_data_m[(8*i)+7:8*i] : ({8{addr_in_dccm_m}} & dccm_rdata_corr_m[(8*i)+7:8*i]));
-
-         assign lsu_rdata_m[(8*i)+7:8*i]      = stbuf_fwdbyteen_m[i] ? stbuf_fwddata_m[(8*i)+7:8*i] :
-                                                                       (addr_in_pic_m ? picm_rd_data_m[(8*i)+7:8*i] : ({8{addr_in_dccm_m}} & dccm_rdata_m[(8*i)+7:8*i]));
-      end
-
-      rvdffe #(32) lsu_ld_data_corr_rff(.*, .din(lsu_ld_data_corr_m[31:0]), .dout(lsu_ld_data_corr_r[31:0]), .en((lsu_pkt_m.valid & lsu_pkt_m.load & (addr_in_pic_m | addr_in_dccm_m)) | clk_override));
-   end
-
-   assign kill_ecc_corr_lo_r = (((lsu_addr_d[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_d[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_d.valid & lsu_pkt_d.store & lsu_pkt_d.dma & addr_in_dccm_d) |
-                               (((lsu_addr_m[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_m[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_m.valid & lsu_pkt_m.store & lsu_pkt_m.dma & addr_in_dccm_m);
-
-   assign kill_ecc_corr_hi_r = (((lsu_addr_d[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_d[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_d.valid & lsu_pkt_d.store & lsu_pkt_d.dma & addr_in_dccm_d) |
-                               (((lsu_addr_m[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_m[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_m.valid & lsu_pkt_m.store & lsu_pkt_m.dma & addr_in_dccm_m);
-
-   assign ld_single_ecc_error_lo_r = lsu_pkt_r.load & single_ecc_error_lo_r & ~lsu_raw_fwd_lo_r;
-   assign ld_single_ecc_error_hi_r = lsu_pkt_r.load & single_ecc_error_hi_r & ~lsu_raw_fwd_hi_r;
-   assign ld_single_ecc_error_r    = (ld_single_ecc_error_lo_r | ld_single_ecc_error_hi_r) & ~lsu_double_ecc_error_r;
-
-   assign ld_single_ecc_error_lo_r_ns = ld_single_ecc_error_lo_r & (lsu_commit_r | lsu_pkt_r.dma) & ~kill_ecc_corr_lo_r;
-   assign ld_single_ecc_error_hi_r_ns = ld_single_ecc_error_hi_r & (lsu_commit_r | lsu_pkt_r.dma) & ~kill_ecc_corr_hi_r;
-   assign ld_single_ecc_error_r_ff = (ld_single_ecc_error_lo_r_ff | ld_single_ecc_error_hi_r_ff) & ~lsu_double_ecc_error_r_ff;
-
-   assign lsu_stbuf_commit_any = stbuf_reqvld_any &
-                                 (~(lsu_dccm_rden_d | lsu_dccm_wren_d | ld_single_ecc_error_r_ff) |
-                                  (lsu_dccm_rden_d & ~((stbuf_addr_any[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] == lsu_addr_d[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]) |
-                                                       (stbuf_addr_any[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] == end_addr_d[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]))));
-
-   // No need to read for aligned word/dword stores since ECC will come by new data completely
-   assign lsu_dccm_rden_d = lsu_pkt_d.valid & (lsu_pkt_d.load | (lsu_pkt_d.store & (~(lsu_pkt_d.word | lsu_pkt_d.dword) | (lsu_addr_d[1:0] != 2'b0)))) & addr_in_dccm_d;
-
-   // DMA will read/write in decode stage
-   assign lsu_dccm_wren_d = dma_dccm_wen;
-
-   // DCCM inputs
-   assign dccm_wren                             = lsu_dccm_wren_d | lsu_stbuf_commit_any | ld_single_ecc_error_r_ff;
-   assign dccm_rden                             = lsu_dccm_rden_d & addr_in_dccm_d;
-   assign dccm_wr_addr_lo[pt.DCCM_BITS-1:0]     = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_lo_r_ff ? ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0] : ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0]) :
-                                                                             lsu_dccm_wren_d ? lsu_addr_d[pt.DCCM_BITS-1:0] : stbuf_addr_any[pt.DCCM_BITS-1:0];
-   assign dccm_wr_addr_hi[pt.DCCM_BITS-1:0]     = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_hi_r_ff ? ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0] : ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0]) :
-                                                                             lsu_dccm_wren_d ? end_addr_d[pt.DCCM_BITS-1:0] : stbuf_addr_any[pt.DCCM_BITS-1:0];
-   assign dccm_rd_addr_lo[pt.DCCM_BITS-1:0]     = lsu_addr_d[pt.DCCM_BITS-1:0];
-   assign dccm_rd_addr_hi[pt.DCCM_BITS-1:0]     = end_addr_d[pt.DCCM_BITS-1:0];
-   assign dccm_wr_data_lo[pt.DCCM_FDATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_lo_r_ff ? {sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                               {sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]}) :
-                                                                                (dma_dccm_wen ? {dma_dccm_wdata_ecc_lo[pt.DCCM_ECC_WIDTH-1:0],dma_dccm_wdata_lo[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                {stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0],stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]});
-   assign dccm_wr_data_hi[pt.DCCM_FDATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_hi_r_ff ? {sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                               {sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]}) :
-                                                                                (dma_dccm_wen ? {dma_dccm_wdata_ecc_hi[pt.DCCM_ECC_WIDTH-1:0],dma_dccm_wdata_hi[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                {stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0],stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]});
-
-   // DCCM outputs
-   assign store_byteen_m[3:0] = {4{lsu_pkt_m.store}} &
-                                (({4{lsu_pkt_m.by}}    & 4'b0001) |
-                                 ({4{lsu_pkt_m.half}}  & 4'b0011) |
-                                 ({4{lsu_pkt_m.word}}  & 4'b1111));
-
-   assign store_byteen_r[3:0] =  {4{lsu_pkt_r.store}} &
-                                 (({4{lsu_pkt_r.by}}    & 4'b0001) |
-                                  ({4{lsu_pkt_r.half}}  & 4'b0011) |
-                                  ({4{lsu_pkt_r.word}}  & 4'b1111));
-
-   assign store_byteen_ext_m[7:0] = {4'b0,store_byteen_m[3:0]} << lsu_addr_m[1:0];      // The packet in m
-   assign store_byteen_ext_r[7:0] = {4'b0,store_byteen_r[3:0]} << lsu_addr_r[1:0];
-
-
-
-   assign dccm_wr_bypass_d_m_lo   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == lsu_addr_m[pt.DCCM_BITS-1:2]) & addr_in_dccm_m;
-   assign dccm_wr_bypass_d_m_hi   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == end_addr_m[pt.DCCM_BITS-1:2]) & addr_in_dccm_m;
-
-   assign dccm_wr_bypass_d_r_lo   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) & addr_in_dccm_r;
-   assign dccm_wr_bypass_d_r_hi   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) & addr_in_dccm_r;
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U1_Plus1_1
-      logic        dccm_wren_Q;
-      logic [31:0] dccm_wr_data_Q;
-      logic        dccm_wr_bypass_d_m_lo_Q, dccm_wr_bypass_d_m_hi_Q;
-      logic [31:0] store_data_pre_hi_r, store_data_pre_lo_r;
-
-      assign {store_data_pre_hi_r[31:0], store_data_pre_lo_r[31:0]} = {32'b0,store_data_r[31:0]} << 8*lsu_addr_r[1:0];
-
-      for (genvar i=0; i<4; i++) begin
-          assign store_data_lo_r[(8*i)+7:(8*i)]   = store_byteen_ext_r[i] ? store_data_pre_lo_r[(8*i)+7:(8*i)] : ((dccm_wren_Q & dccm_wr_bypass_d_m_lo_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_lo_r[(8*i)+7:(8*i)]);
-          assign store_data_hi_r[(8*i)+7:(8*i)]   = store_byteen_ext_r[i+4] ? store_data_pre_hi_r[(8*i)+7:(8*i)] : ((dccm_wren_Q & dccm_wr_bypass_d_m_hi_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_hi_r[(8*i)+7:(8*i)]);
-
-          assign store_datafn_lo_r[(8*i)+7:(8*i)] = store_byteen_ext_r[i] ? store_data_pre_lo_r[(8*i)+7:(8*i)] : ((lsu_stbuf_commit_any & dccm_wr_bypass_d_r_lo) ? stbuf_data_any[(8*i)+7:(8*i)] :
-                                                                                                                    ((dccm_wren_Q & dccm_wr_bypass_d_m_lo_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_lo_r[(8*i)+7:(8*i)]));
-          assign store_datafn_hi_r[(8*i)+7:(8*i)] = store_byteen_ext_r[i+4] ? store_data_pre_hi_r[(8*i)+7:(8*i)] : ((lsu_stbuf_commit_any & dccm_wr_bypass_d_r_hi) ? stbuf_data_any[(8*i)+7:(8*i)] :
-                                                                                                                    ((dccm_wren_Q & dccm_wr_bypass_d_m_hi_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_hi_r[(8*i)+7:(8*i)]));
-      end
-
-      rvdff #(1)   dccm_wren_ff       (.*, .din(lsu_stbuf_commit_any),  .dout(dccm_wren_Q),             .clk(lsu_free_c2_clk));   // ECC load errors writing to dccm shouldn't fwd to stores in pipe
-      rvdffe #(32) dccm_wrdata_ff     (.*, .din(stbuf_data_any[31:0]),  .dout(dccm_wr_data_Q[31:0]),    .en(lsu_stbuf_commit_any | clk_override), .clk(clk));
-      rvdff #(1)   dccm_wrbyp_dm_loff (.*, .din(dccm_wr_bypass_d_m_lo), .dout(dccm_wr_bypass_d_m_lo_Q), .clk(lsu_free_c2_clk));
-      rvdff #(1)   dccm_wrbyp_dm_hiff (.*, .din(dccm_wr_bypass_d_m_hi), .dout(dccm_wr_bypass_d_m_hi_Q), .clk(lsu_free_c2_clk));
-      rvdff #(32)  store_data_rff     (.*, .din(store_data_m[31:0]),    .dout(store_data_r[31:0]),      .clk(lsu_store_c1_r_clk));
-
-   end else begin: L2U1_Plus1_0
-
-      logic [31:0] store_data_hi_m, store_data_lo_m;
-      logic [63:0] store_data_mask;
-      assign {store_data_hi_m[31:0] , store_data_lo_m[31:0]} = {32'b0,store_data_m[31:0]} << 8*lsu_addr_m[1:0];
-
-      for (genvar i=0; i<4; i++) begin
-         assign store_data_hi_r_in[(8*i)+7:(8*i)]  = store_byteen_ext_m[i+4] ? store_data_hi_m[(8*i)+7:(8*i)] :
-                                                                               ((lsu_stbuf_commit_any &  dccm_wr_bypass_d_m_hi)   ? stbuf_data_any[(8*i)+7:(8*i)] : sec_data_hi_m[(8*i)+7:(8*i)]);
-         assign store_data_lo_r_in[(8*i)+7:(8*i)]  = store_byteen_ext_m[i]   ? store_data_lo_m[(8*i)+7:(8*i)] :
-                                                                               ((lsu_stbuf_commit_any &  dccm_wr_bypass_d_m_lo) ? stbuf_data_any[(8*i)+7:(8*i)] : sec_data_lo_m[(8*i)+7:(8*i)]);
-
-         assign store_datafn_lo_r[(8*i)+7:(8*i)]   = (lsu_stbuf_commit_any & dccm_wr_bypass_d_r_lo & ~store_byteen_ext_r[i])   ? stbuf_data_any[(8*i)+7:(8*i)] : store_data_lo_r[(8*i)+7:(8*i)];
-         assign store_datafn_hi_r[(8*i)+7:(8*i)]   = (lsu_stbuf_commit_any & dccm_wr_bypass_d_r_hi & ~store_byteen_ext_r[i+4]) ? stbuf_data_any[(8*i)+7:(8*i)] : store_data_hi_r[(8*i)+7:(8*i)];
-      end // for (genvar i=0; i<BYTE_WIDTH; i++)
-
-      for (genvar i=0; i<4; i++) begin
-         assign store_data_mask[(8*i)+7:(8*i)] = {8{store_byteen_r[i]}};
-      end
-      assign store_data_r[31:0]      = 32'({store_data_hi_r[31:0],store_data_lo_r[31:0]} >> 8*lsu_addr_r[1:0]) & store_data_mask[31:0];
-
-      rvdffe #(pt.DCCM_DATA_WIDTH) store_data_hi_rff (.*, .din(store_data_hi_r_in[pt.DCCM_DATA_WIDTH-1:0]), .dout(store_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en((ldst_dual_m & lsu_pkt_m.valid & lsu_pkt_m.store) | clk_override), .clk(clk));
-      rvdff  #(pt.DCCM_DATA_WIDTH) store_data_lo_rff (.*, .din(store_data_lo_r_in[pt.DCCM_DATA_WIDTH-1:0]), .dout(store_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .clk(lsu_store_c1_r_clk));
-
-   end
-
-   assign dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rd_data_lo[pt.DCCM_DATA_WIDTH-1:0]; // for ld choose dccm_out
-   assign dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rd_data_hi[pt.DCCM_DATA_WIDTH-1:0]; // for ld this is used for ecc
-
-   assign dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0] = dccm_rd_data_lo[pt.DCCM_FDATA_WIDTH-1:pt.DCCM_DATA_WIDTH];
-   assign dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0] = dccm_rd_data_hi[pt.DCCM_FDATA_WIDTH-1:pt.DCCM_DATA_WIDTH];
-
-   // PIC signals. PIC ignores the lower 2 bits of address since PIC memory registers are 32-bits
-   assign picm_wren          = (lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_pic_r & lsu_commit_r) | dma_pic_wen;
-   assign picm_rden          = lsu_pkt_d.valid & lsu_pkt_d.load  & addr_in_pic_d;
-   assign picm_mken          = lsu_pkt_d.valid & lsu_pkt_d.store & addr_in_pic_d;  // Get the mask for stores
-   assign picm_rdaddr[31:0]  = pt.PIC_BASE_ADDR | {{32-pt.PIC_BITS{1'b0}},lsu_addr_d[pt.PIC_BITS-1:0]};
-
-   assign picm_wraddr[31:0]  = pt.PIC_BASE_ADDR | {{32-pt.PIC_BITS{1'b0}},(dma_pic_wen ? dma_mem_addr[pt.PIC_BITS-1:0] : lsu_addr_r[pt.PIC_BITS-1:0])};
-
-   assign picm_wr_data[31:0] = dma_pic_wen ? dma_mem_wdata[31:0] : store_datafn_lo_r[31:0];
-
-   assign picm_mask_data_m[31:0] = picm_rd_data_m[31:0];
-   assign picm_rd_data_m[63:0]   = {picm_rd_data[31:0],picm_rd_data[31:0]};
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      rvdff #(1) dccm_rden_mff (.*, .din(lsu_dccm_rden_d), .dout(lsu_dccm_rden_m), .clk(lsu_c2_m_clk));
-      rvdff #(1) dccm_rden_rff (.*, .din(lsu_dccm_rden_m), .dout(lsu_dccm_rden_r), .clk(lsu_c2_r_clk));
-
-      // ECC correction flops since dccm write happens next cycle
-      // We are writing to dccm in r+1 for ecc correction since fast_int needs to be blocked in decode - 1. We can probably write in r for plus0 configuration since we know ecc error in M.
-      // In that case these (_ff) flops are needed only in plus1 configuration
-      rvdff #(1) ld_double_ecc_error_rff    (.*, .din(lsu_double_ecc_error_r),   .dout(lsu_double_ecc_error_r_ff),   .clk(lsu_free_c2_clk));
-      rvdff #(1) ld_single_ecc_error_hi_rff (.*, .din(ld_single_ecc_error_hi_r_ns), .dout(ld_single_ecc_error_hi_r_ff), .clk(lsu_free_c2_clk));
-      rvdff #(1) ld_single_ecc_error_lo_rff (.*, .din(ld_single_ecc_error_lo_r_ns), .dout(ld_single_ecc_error_lo_r_ff), .clk(lsu_free_c2_clk));
-      rvdffe #(pt.DCCM_BITS) ld_sec_addr_hi_rff (.*, .din(end_addr_r[pt.DCCM_BITS-1:0]), .dout(ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk));
-      rvdffe #(pt.DCCM_BITS) ld_sec_addr_lo_rff (.*, .din(lsu_addr_r[pt.DCCM_BITS-1:0]), .dout(ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk));
-
-   end else begin: Gen_dccm_disable
-      assign lsu_dccm_rden_m = '0;
-      assign lsu_dccm_rden_r = '0;
-
-      assign lsu_double_ecc_error_r_ff = 1'b0;
-      assign ld_single_ecc_error_hi_r_ff = 1'b0;
-      assign ld_single_ecc_error_lo_r_ff = 1'b0;
-      assign ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0] = '0;
-      assign ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0] = '0;
-   end
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DCCM for LSU pipe
-// Comments: Single ported memory
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-
-`define eb1_LOCAL_DCCM_RAM_TEST_PORTS    .TEST1(dccm_ext_in_pkt[i].TEST1),                      \
-                                     .RME(dccm_ext_in_pkt[i].RME),                      \
-                                     .RM(dccm_ext_in_pkt[i].RM),                        \
-                                     .LS(dccm_ext_in_pkt[i].LS),                        \
-                                     .DS(dccm_ext_in_pkt[i].DS),                        \
-                                     .SD(dccm_ext_in_pkt[i].SD),                        \
-                                     .TEST_RNM(dccm_ext_in_pkt[i].TEST_RNM),            \
-                                     .BC1(dccm_ext_in_pkt[i].BC1),                      \
-                                     .BC2(dccm_ext_in_pkt[i].BC2),                      \
-
-
-
-module eb1_lsu_dccm_mem
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-`ifdef USE_POWER_PINS
-   input logic 	vccd1,
-   input logic		vssd1,
- `endif
-   input logic         clk,                                             // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic         active_clk,                                      // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic         rst_l,                                           // reset, active low
-   input logic         clk_override,                                    // Override non-functional clock gating
-
-   input logic         dccm_wren,                                       // write enable
-   input logic         dccm_rden,                                       // read enable
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_lo,                     // write address
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_hi,                     // write address
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_lo,                     // read address
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_hi,                     // read address for the upper bank in case of a misaligned access
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,              // write data
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,              // write data
-   input eb1_dccm_ext_in_pkt_t  [pt.DCCM_NUM_BANKS-1:0] dccm_ext_in_pkt,    // the dccm packet from the soc
-
-   output logic [pt.DCCM_FDATA_WIDTH-1:0] dccm_rd_data_lo,              // read data from the lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0] dccm_rd_data_hi,              // read data from the hi bank
-
-   input  logic         scan_mode
-);
-
-
-   localparam DCCM_WIDTH_BITS = $clog2(pt.DCCM_BYTE_WIDTH);
-   localparam DCCM_INDEX_BITS = (pt.DCCM_BITS - pt.DCCM_BANK_BITS - pt.DCCM_WIDTH_BITS);
-   localparam DCCM_INDEX_DEPTH = ((pt.DCCM_SIZE)*1024)/((pt.DCCM_BYTE_WIDTH)*(pt.DCCM_NUM_BANKS));  // Depth of memory bank
-
-   logic [pt.DCCM_NUM_BANKS-1:0]                                        wren_bank;
-   logic [pt.DCCM_NUM_BANKS-1:0]                                        rden_bank;
-   logic [pt.DCCM_NUM_BANKS-1:0] [pt.DCCM_BITS-1:(pt.DCCM_BANK_BITS+2)] addr_bank;
-   logic [pt.DCCM_BITS-1:(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)]           rd_addr_even, rd_addr_odd;
-   logic                                                                rd_unaligned, wr_unaligned;
-   logic [pt.DCCM_NUM_BANKS-1:0] [pt.DCCM_FDATA_WIDTH-1:0]              dccm_bank_dout;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]                                      wrdata;
-
-   logic [pt.DCCM_NUM_BANKS-1:0][pt.DCCM_FDATA_WIDTH-1:0]               wr_data_bank;
-
-   logic [(DCCM_WIDTH_BITS+pt.DCCM_BANK_BITS-1):DCCM_WIDTH_BITS]        dccm_rd_addr_lo_q;
-   logic [(DCCM_WIDTH_BITS+pt.DCCM_BANK_BITS-1):DCCM_WIDTH_BITS]        dccm_rd_addr_hi_q;
-
-   logic [pt.DCCM_NUM_BANKS-1:0]            dccm_clken;
-
-   assign rd_unaligned = (dccm_rd_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] != dccm_rd_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]);
-   assign wr_unaligned = (dccm_wr_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] != dccm_wr_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]);
-
-   // Align the read data
-   assign dccm_rd_data_lo[pt.DCCM_FDATA_WIDTH-1:0]  = dccm_bank_dout[dccm_rd_addr_lo_q[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]][pt.DCCM_FDATA_WIDTH-1:0];
-   assign dccm_rd_data_hi[pt.DCCM_FDATA_WIDTH-1:0]  = dccm_bank_dout[dccm_rd_addr_hi_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]][pt.DCCM_FDATA_WIDTH-1:0];
-
-
-   // 8 Banks, 16KB each (2048 x 72)
-   for (genvar i=0; i<pt.DCCM_NUM_BANKS; i++) begin: mem_bank
-      assign  wren_bank[i]        = dccm_wren & ((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) | (dccm_wr_addr_lo[2+:pt.DCCM_BANK_BITS] == i));
-      assign  rden_bank[i]        = dccm_rden & ((dccm_rd_addr_hi[2+:pt.DCCM_BANK_BITS] == i) | (dccm_rd_addr_lo[2+:pt.DCCM_BANK_BITS] == i));
-      assign  addr_bank[i][(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] = wren_bank[i] ? (((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & wr_unaligned) ?
-                                                                                                        dccm_wr_addr_hi[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] :
-                                                                                                        dccm_wr_addr_lo[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS])  :
-                                                                                                  (((dccm_rd_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & rd_unaligned) ?
-                                                                                                        dccm_rd_addr_hi[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] :
-                                                                                                        dccm_rd_addr_lo[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS]);
-
-      assign wr_data_bank[i]     = ((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & wr_unaligned) ? dccm_wr_data_hi[pt.DCCM_FDATA_WIDTH-1:0] : dccm_wr_data_lo[pt.DCCM_FDATA_WIDTH-1:0];
-
-      // clock gating section
-      assign  dccm_clken[i] = (wren_bank[i] | rden_bank[i] | clk_override) ;
-      // end clock gating section
-
-
-
-      if (DCCM_INDEX_DEPTH == 32768) begin : dccm
-         ram_32768x39  dccm_bank (
-                                  // Primary ports
-                                  .ME(dccm_clken[i]),
-                                  .CLK(clk),
-                                  .WE(wren_bank[i]),
-                                  .ADR(addr_bank[i]),
-                                  .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .ROP ( ),
-                                  // These are used by SoC
-                                  `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                  .*
-                                  );
-      end
-      else if (DCCM_INDEX_DEPTH == 16384) begin : dccm
-         ram_16384x39  dccm_bank (
-                                  // Primary ports
-                                  .ME(dccm_clken[i]),
-                                  .CLK(clk),
-                                  .WE(wren_bank[i]),
-                                  .ADR(addr_bank[i]),
-                                  .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .ROP ( ),
-                                  // These are used by SoC
-                                  `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                  .*
-                                  );
-      end
-      else if (DCCM_INDEX_DEPTH == 8192) begin : dccm
-         ram_8192x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 4096) begin : dccm
-         ram_4096x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 3072) begin : dccm
-         ram_3072x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 2048) begin : dccm
-         ram_2048x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 1024) begin : dccm
-         /*ram_1024x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-                                 */
-                                 sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~dccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(wr_data_bank[i]),
-									.dout0(dccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-    				   );
-      end
-      else if (DCCM_INDEX_DEPTH == 512) begin : dccm
-         ram_512x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );
-      end
-      else if (DCCM_INDEX_DEPTH == 256) begin : dccm
-         /*ram_256x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );*/
-                                sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~dccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(wr_data_bank[i][31:0]),
-									.dout0(dccm_bank_dout[i][31:0]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-    				   );
-      end
-      else if (DCCM_INDEX_DEPTH == 128) begin : dccm
-         ram_128x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );
-      end
-
-
-   end : mem_bank
-
-   // Flops
-   rvdff  #(pt.DCCM_BANK_BITS) rd_addr_lo_ff (.*, .din(dccm_rd_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .dout(dccm_rd_addr_lo_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .clk(active_clk));
-   rvdff  #(pt.DCCM_BANK_BITS) rd_addr_hi_ff (.*, .din(dccm_rd_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .dout(dccm_rd_addr_hi_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .clk(active_clk));
-
-`undef eb1_LOCAL_DCCM_RAM_TEST_PORTS
-
-endmodule // eb1_lsu_dccm_mem
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Top level file for load store unit
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-module eb1_lsu_ecc
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-(
-   input logic                           clk,                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                           lsu_c2_r_clk,       // clock
-   input logic                           clk_override,       // Override non-functional clock gating
-   input logic                           rst_l,              // reset, active low
-   input logic                           scan_mode,          // scan mode
-
-   input eb1_lsu_pkt_t                  lsu_pkt_m,          // packet in m
-   input eb1_lsu_pkt_t                  lsu_pkt_r,          // packet in r
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  stbuf_data_any,
-
-   input logic                           dec_tlu_core_ecc_disable,  // disables the ecc computation and error flagging
-
-   input logic                           lsu_dccm_rden_r,          // dccm rden
-   input logic                           addr_in_dccm_r,           // address in dccm
-   input logic  [pt.DCCM_BITS-1:0]       lsu_addr_r,               // start address
-   input logic  [pt.DCCM_BITS-1:0]       end_addr_r,               // end address
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_hi_r,          // data from the dccm
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_lo_r,          // data from the dccm
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_hi_r,       // data from the dccm + ecc
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_lo_r,       // data from the dccm + ecc
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_r,            // corrected dccm data R-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r,            // corrected dccm data R-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_r_ff,         // corrected dccm data R+1 stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r_ff,         // corrected dccm data R+1 stage
-
-   input logic                           ld_single_ecc_error_r,     // ld has a single ecc error
-   input logic                           ld_single_ecc_error_r_ff,  // ld has a single ecc error
-   input logic                           lsu_dccm_rden_m,           // dccm rden
-   input logic                           addr_in_dccm_m,            // address in dccm
-   input logic  [pt.DCCM_BITS-1:0]       lsu_addr_m,                // start address
-   input logic  [pt.DCCM_BITS-1:0]       end_addr_m,                // end address
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_hi_m,           // raw data from mem
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_lo_m,           // raw data from mem
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_hi_m,        // ecc read out from mem
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_lo_m,        // ecc read out from mem
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_m,             // corrected dccm data M-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_m,             // corrected dccm data M-stage
-
-   input logic                           dma_dccm_wen,              // Perform DMA writes only for word/dword
-   input logic  [31:0]                   dma_dccm_wdata_lo,         // Shifted dma data to lower bits to make it consistent to lsu stores
-   input logic  [31:0]                   dma_dccm_wdata_hi,         // Shifted dma data to lower bits to make it consistent to lsu stores
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  dma_dccm_wdata_ecc_hi,     // ECC bits for the DMA wdata
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  dma_dccm_wdata_ecc_lo,     // ECC bits for the DMA wdata
-
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  stbuf_ecc_any,             // Encoded data with ECC bits
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_hi_r_ff,      // Encoded data with ECC bits
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_lo_r_ff,      // Encoded data with ECC bits
-
-   output logic                          single_ecc_error_hi_r,                   // sec detected
-   output logic                          single_ecc_error_lo_r,                   // sec detected on lower dccm bank
-   output logic                          lsu_single_ecc_error_r,                  // or of the 2
-   output logic                          lsu_double_ecc_error_r,                   // double error detected
-
-   output logic                          lsu_single_ecc_error_m,                  // or of the 2
-   output logic                          lsu_double_ecc_error_m                   // double error detected
-
- );
-
-   logic                           is_ldst_r;
-   logic                           is_ldst_hi_any, is_ldst_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  dccm_wdata_hi_any, dccm_wdata_lo_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  dccm_wdata_ecc_hi_any, dccm_wdata_ecc_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  dccm_rdata_hi_any, dccm_rdata_lo_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]   dccm_data_ecc_hi_any, dccm_data_ecc_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  sec_data_hi_any, sec_data_lo_any;
-   logic                           single_ecc_error_hi_any, single_ecc_error_lo_any;
-   logic                           double_ecc_error_hi_any, double_ecc_error_lo_any;
-
-   logic                           double_ecc_error_hi_m, double_ecc_error_lo_m;
-   logic                           double_ecc_error_hi_r, double_ecc_error_lo_r;
-
-   logic [6:0]                     ecc_out_hi_nc, ecc_out_lo_nc;
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic        ldst_dual_m, ldst_dual_r;
-      logic        is_ldst_m;
-      logic        is_ldst_hi_r, is_ldst_lo_r;
-
-      assign ldst_dual_r                                 = (lsu_addr_r[2] != end_addr_r[2]);
-      assign is_ldst_r                                   = lsu_pkt_r.valid & (lsu_pkt_r.load | lsu_pkt_r.store) & addr_in_dccm_r & lsu_dccm_rden_r;
-      assign is_ldst_lo_r                                = is_ldst_r & ~dec_tlu_core_ecc_disable;
-      assign is_ldst_hi_r                                = is_ldst_r & ldst_dual_r & ~dec_tlu_core_ecc_disable;   // Always check the ECC Hi/Lo for DMA since we don't align for DMA
-
-      assign is_ldst_hi_any                              = is_ldst_hi_r;
-      assign dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_hi_r[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_hi_r[pt.DCCM_ECC_WIDTH-1:0];
-      assign is_ldst_lo_any                              = is_ldst_lo_r;
-      assign dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_lo_r[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_lo_r[pt.DCCM_ECC_WIDTH-1:0];
-
-      assign sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign single_ecc_error_hi_r                       = single_ecc_error_hi_any;
-      assign double_ecc_error_hi_r                       = double_ecc_error_hi_any;
-      assign sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign single_ecc_error_lo_r                       = single_ecc_error_lo_any;
-      assign double_ecc_error_lo_r                       = double_ecc_error_lo_any;
-
-      assign lsu_single_ecc_error_r                      = single_ecc_error_hi_r | single_ecc_error_lo_r;
-      assign lsu_double_ecc_error_r                      = double_ecc_error_hi_r | double_ecc_error_lo_r;
-
-   end else begin: L2U_Plus1_0
-
-      logic        ldst_dual_m;
-      logic        is_ldst_m;
-      logic        is_ldst_hi_m, is_ldst_lo_m;
-
-      assign ldst_dual_m                                 = (lsu_addr_m[2] != end_addr_m[2]);
-      assign is_ldst_m                                   = lsu_pkt_m.valid & (lsu_pkt_m.load | lsu_pkt_m.store) & addr_in_dccm_m & lsu_dccm_rden_m;
-      assign is_ldst_lo_m                                = is_ldst_m & ~dec_tlu_core_ecc_disable;
-      assign is_ldst_hi_m                                = is_ldst_m & (ldst_dual_m | lsu_pkt_m.dma) & ~dec_tlu_core_ecc_disable;   // Always check the ECC Hi/Lo for DMA since we don't align for DMA
-
-      assign is_ldst_hi_any                              = is_ldst_hi_m;
-      assign dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0];
-      assign is_ldst_lo_any                              = is_ldst_lo_m;
-      assign dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0];
-
-      assign sec_data_hi_m[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign double_ecc_error_hi_m                       = double_ecc_error_hi_any;
-      assign sec_data_lo_m[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign double_ecc_error_lo_m                       = double_ecc_error_lo_any;
-
-      assign lsu_single_ecc_error_m                      = single_ecc_error_hi_any | single_ecc_error_lo_any;
-      assign lsu_double_ecc_error_m                      = double_ecc_error_hi_m   | double_ecc_error_lo_m;
-
-      // Flops
-      rvdff  #(1) lsu_single_ecc_err_r    (.din(lsu_single_ecc_error_m), .dout(lsu_single_ecc_error_r), .clk(lsu_c2_r_clk), .*);
-      rvdff  #(1) lsu_double_ecc_err_r    (.din(lsu_double_ecc_error_m), .dout(lsu_double_ecc_error_r), .clk(lsu_c2_r_clk), .*);
-      rvdff  #(.WIDTH(1)) ldst_sec_lo_rff (.din(single_ecc_error_lo_any),  .dout(single_ecc_error_lo_r),  .clk(lsu_c2_r_clk), .*);
-      rvdff  #(.WIDTH(1)) ldst_sec_hi_rff (.din(single_ecc_error_hi_any),  .dout(single_ecc_error_hi_r),  .clk(lsu_c2_r_clk), .*);
-      rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_hi_rff (.din(sec_data_hi_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_single_ecc_error_m | clk_override), .*);
-      rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_lo_rff (.din(sec_data_lo_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_single_ecc_error_m | clk_override), .*);
-
-   end
-
-   // Logic for ECC generation during write
-   assign dccm_wdata_lo_any[pt.DCCM_DATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0] : (dma_dccm_wen ? dma_dccm_wdata_lo[pt.DCCM_DATA_WIDTH-1:0] : stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]);
-   assign dccm_wdata_hi_any[pt.DCCM_DATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0] : (dma_dccm_wen ? dma_dccm_wdata_hi[pt.DCCM_DATA_WIDTH-1:0] : 32'h0);
-
-   assign sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0]  = dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0]  = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0]         = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign dma_dccm_wdata_ecc_hi[pt.DCCM_ECC_WIDTH-1:0] = dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign dma_dccm_wdata_ecc_lo[pt.DCCM_ECC_WIDTH-1:0] = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-
-   // Instantiate ECC blocks
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-
-      //Detect/Repair for Hi
-      rvecc_decode lsu_ecc_decode_hi (
-         // Inputs
-         .en(is_ldst_hi_any),
-         .sed_ded (1'b0),    // 1 : means only detection
-         .din(dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_in(dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0]),
-         // Outputs
-         .dout(sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_out (ecc_out_hi_nc[6:0]),
-         .single_ecc_error(single_ecc_error_hi_any),
-         .double_ecc_error(double_ecc_error_hi_any),
-         .*
-      );
-
-      //Detect/Repair for Lo
-      rvecc_decode lsu_ecc_decode_lo (
-         // Inputs
-         .en(is_ldst_lo_any),
-         .sed_ded (1'b0),    // 1 : means only detection
-         .din(dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0] ),
-         .ecc_in(dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0]),
-         // Outputs
-         .dout(sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_out (ecc_out_lo_nc[6:0]),
-         .single_ecc_error(single_ecc_error_lo_any),
-         .double_ecc_error(double_ecc_error_lo_any),
-         .*
-      );
-
-      rvecc_encode lsu_ecc_encode_hi (
-         //Inputs
-         .din(dccm_wdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         //Outputs
-         .ecc_out(dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0]),
-         .*
-      );
-      rvecc_encode lsu_ecc_encode_lo (
-         //Inputs
-         .din(dccm_wdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]),
-         //Outputs
-         .ecc_out(dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0]),
-         .*
-      );
-   end else begin: Gen_dccm_disable // block: Gen_dccm_enable
-      assign sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0] = '0;
-      assign sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0] = '0;
-      assign single_ecc_error_hi_any = '0;
-      assign double_ecc_error_hi_any = '0;
-      assign single_ecc_error_lo_any = '0;
-      assign double_ecc_error_lo_any = '0;
-   end
-
-   rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_hi_rplus1ff (.din(sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk), .*);
-   rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_lo_rplus1ff (.din(sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk), .*);
-
-
-endmodule // eb1_lsu_ecc
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: LSU control
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-module eb1_lsu_lsc_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic                rst_l,                     // reset, active low
-   input logic                clk_override,              // Override non-functional clock gating
-   input logic                clk,                       // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-
-   // clocks per pipe
-   input logic                lsu_c1_m_clk,
-   input logic                lsu_c1_r_clk,
-   input logic                lsu_c2_m_clk,
-   input logic                lsu_c2_r_clk,
-   input logic                lsu_store_c1_m_clk,
-
-   input logic [31:0]         lsu_ld_data_r,             // Load data R-stage
-   input logic [31:0]         lsu_ld_data_corr_r,        // ECC corrected data R-stage
-   input logic                lsu_single_ecc_error_r,    // ECC single bit error R-stage
-   input logic                lsu_double_ecc_error_r,    // ECC double bit error R-stage
-
-   input logic [31:0]         lsu_ld_data_m,             // Load data M-stage
-   input logic                lsu_single_ecc_error_m,    // ECC single bit error M-stage
-   input logic                lsu_double_ecc_error_m,    // ECC double bit error M-stage
-
-   input logic                flush_m_up,                // Flush M and D stage
-   input logic                flush_r,                   // Flush R-stage
-   input logic                ldst_dual_d,               // load/store is unaligned at 32 bit boundary D-stage
-   input logic                ldst_dual_m,               // load/store is unaligned at 32 bit boundary M-stage
-   input logic                ldst_dual_r,               // load/store is unaligned at 32 bit boundary R-stage
-
-   input logic [31:0]         exu_lsu_rs1_d,             // address
-   input logic [31:0]         exu_lsu_rs2_d,             // store data
-
-   input eb1_lsu_pkt_t       lsu_p,                     // lsu control packet
-   input logic                dec_lsu_valid_raw_d,       // Raw valid for address computation
-   input logic [11:0]         dec_lsu_offset_d,          // 12b offset for load/store addresses
-
-   input  logic [31:0]        picm_mask_data_m,          // PIC data M-stage
-   input  logic [31:0]        bus_read_data_m,           // the bus return data
-   output logic [31:0]        lsu_result_m,              // lsu load data
-   output logic [31:0]        lsu_result_corr_r,         // This is the ECC corrected data going to RF
-   // lsu address down the pipe
-   output logic [31:0]        lsu_addr_d,
-   output logic [31:0]        lsu_addr_m,
-   output logic [31:0]        lsu_addr_r,
-   // lsu address down the pipe - needed to check unaligned
-   output logic [31:0]        end_addr_d,
-   output logic [31:0]        end_addr_m,
-   output logic [31:0]        end_addr_r,
-   // store data down the pipe
-   output logic [31:0]        store_data_m,
-
-   input  logic [31:0]         dec_tlu_mrac_ff,          // CSR for memory region control
-   output logic                lsu_exc_m,                // Access or misaligned fault
-   output logic                is_sideeffects_m,         // is sideffects space
-   output logic                lsu_commit_r,             // lsu instruction in r commits
-   output logic                lsu_single_ecc_error_incr,// LSU inc SB error counter
-   output eb1_lsu_error_pkt_t lsu_error_pkt_r,          // lsu exception packet
-
-   output logic [31:1]         lsu_fir_addr,             // fast interrupt address
-   output logic [1:0]          lsu_fir_error,            // Error during fast interrupt lookup
-
-   // address in dccm/pic/external per pipe stage
-   output logic               addr_in_dccm_d,
-   output logic               addr_in_dccm_m,
-   output logic               addr_in_dccm_r,
-
-   output logic               addr_in_pic_d,
-   output logic               addr_in_pic_m,
-   output logic               addr_in_pic_r,
-
-   output logic               addr_external_m,
-
-   // DMA slave
-   input logic                dma_dccm_req,
-   input logic [31:0]         dma_mem_addr,
-   input logic [2:0]          dma_mem_sz,
-   input logic                dma_mem_write,
-   input logic [63:0]         dma_mem_wdata,
-
-   // Store buffer related signals
-   output eb1_lsu_pkt_t      lsu_pkt_d,
-   output eb1_lsu_pkt_t      lsu_pkt_m,
-   output eb1_lsu_pkt_t      lsu_pkt_r,
-
-   input  logic               scan_mode                  // Scan mode
-
-   );
-
-   logic [31:3]        end_addr_pre_m, end_addr_pre_r;
-   logic [31:0]        full_addr_d;
-   logic [31:0]        full_end_addr_d;
-   logic [31:0]        lsu_rs1_d;
-   logic [11:0]        lsu_offset_d;
-   logic [31:0]        rs1_d;
-   logic [11:0]        offset_d;
-   logic [12:0]        end_addr_offset_d;
-   logic [2:0]         addr_offset_d;
-
-   logic [63:0]        dma_mem_wdata_shifted;
-   logic               addr_external_d;
-   logic               addr_external_r;
-   logic               access_fault_d, misaligned_fault_d;
-   logic               access_fault_m, misaligned_fault_m;
-
-   logic               fir_dccm_access_error_d, fir_nondccm_access_error_d;
-   logic               fir_dccm_access_error_m, fir_nondccm_access_error_m;
-
-   logic [3:0]         exc_mscause_d, exc_mscause_m;
-   logic [31:0]        rs1_d_raw;
-   logic [31:0]        store_data_d, store_data_pre_m, store_data_m_in;
-   logic [31:0]        bus_read_data_r;
-
-   eb1_lsu_pkt_t           dma_pkt_d;
-   eb1_lsu_pkt_t           lsu_pkt_m_in, lsu_pkt_r_in;
-   eb1_lsu_error_pkt_t     lsu_error_pkt_m;
-
-
-   // Premux the rs1/offset for dma
-   assign lsu_rs1_d[31:0]    = dec_lsu_valid_raw_d ? exu_lsu_rs1_d[31:0] : dma_mem_addr[31:0];
-   assign lsu_offset_d[11:0] = dec_lsu_offset_d[11:0] & {12{dec_lsu_valid_raw_d}};
-   assign rs1_d_raw[31:0]    = lsu_rs1_d[31:0];
-   assign offset_d[11:0]     = lsu_offset_d[11:0];
-
-   assign rs1_d[31:0] = (lsu_pkt_d.load_ldst_bypass_d) ? lsu_result_m[31:0] : rs1_d_raw[31:0];
-
-   // generate the ls address
-   rvlsadder   lsadder  (.rs1(rs1_d[31:0]),
-                       .offset(offset_d[11:0]),
-                       .dout(full_addr_d[31:0])
-                       );
-
-   // Module to generate the memory map of the address
-   eb1_lsu_addrcheck #(.pt(pt)) addrcheck (
-              .start_addr_d(full_addr_d[31:0]),
-              .end_addr_d(full_end_addr_d[31:0]),
-              .rs1_region_d(rs1_d[31:28]),
-              .*
-  );
-
-   // Calculate start/end address for load/store
-   assign addr_offset_d[2:0]      = ({3{lsu_pkt_d.half}} & 3'b01) | ({3{lsu_pkt_d.word}} & 3'b11) | ({3{lsu_pkt_d.dword}} & 3'b111);
-   assign end_addr_offset_d[12:0] = {offset_d[11],offset_d[11:0]} + {9'b0,addr_offset_d[2:0]};
-   assign full_end_addr_d[31:0]   = rs1_d[31:0] + {{19{end_addr_offset_d[12]}},end_addr_offset_d[12:0]};
-   assign end_addr_d[31:0]        = full_end_addr_d[31:0];
-   assign lsu_exc_m               = access_fault_m | misaligned_fault_m;
-
-   // Goes to TLU to increment the ECC error counter
-   assign lsu_single_ecc_error_incr = (lsu_single_ecc_error_r & ~lsu_double_ecc_error_r) & (lsu_commit_r | lsu_pkt_r.dma) & lsu_pkt_r.valid;
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic               access_fault_r, misaligned_fault_r;
-      logic [3:0]         exc_mscause_r;
-      logic               fir_dccm_access_error_r, fir_nondccm_access_error_r;
-
-      // Generate exception packet
-      assign lsu_error_pkt_r.exc_valid = (access_fault_r | misaligned_fault_r | lsu_double_ecc_error_r) & lsu_pkt_r.valid & ~lsu_pkt_r.dma & ~lsu_pkt_r.fast_int;
-      assign lsu_error_pkt_r.single_ecc_error = lsu_single_ecc_error_r & ~lsu_error_pkt_r.exc_valid & ~lsu_pkt_r.dma;
-      assign lsu_error_pkt_r.inst_type = lsu_pkt_r.store;
-      assign lsu_error_pkt_r.exc_type  = ~misaligned_fault_r;
-      assign lsu_error_pkt_r.mscause[3:0] = (lsu_double_ecc_error_r & ~misaligned_fault_r & ~access_fault_r) ? 4'h1 : exc_mscause_r[3:0];
-      assign lsu_error_pkt_r.addr[31:0] = lsu_addr_r[31:0];
-
-      assign lsu_fir_error[1:0] = fir_nondccm_access_error_r ? 2'b11 : (fir_dccm_access_error_r ? 2'b10 : ((lsu_pkt_r.fast_int & lsu_double_ecc_error_r) ? 2'b01 : 2'b00));
-
-      rvdff #(1) access_fault_rff             (.din(access_fault_m),             .dout(access_fault_r),             .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) misaligned_fault_rff         (.din(misaligned_fault_m),         .dout(misaligned_fault_r),         .clk(lsu_c1_r_clk), .*);
-      rvdff #(4) exc_mscause_rff              (.din(exc_mscause_m[3:0]),         .dout(exc_mscause_r[3:0]),         .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) fir_dccm_access_error_mff    (.din(fir_dccm_access_error_m),    .dout(fir_dccm_access_error_r),    .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) fir_nondccm_access_error_mff (.din(fir_nondccm_access_error_m), .dout(fir_nondccm_access_error_r), .clk(lsu_c1_r_clk), .*);
-
-   end else begin: L2U_Plus1_0
-      logic [1:0] lsu_fir_error_m;
-
-      // Generate exception packet
-      assign lsu_error_pkt_m.exc_valid = (access_fault_m | misaligned_fault_m | lsu_double_ecc_error_m) & lsu_pkt_m.valid & ~lsu_pkt_m.dma & ~lsu_pkt_m.fast_int & ~flush_m_up;
-      assign lsu_error_pkt_m.single_ecc_error = lsu_single_ecc_error_m & ~lsu_error_pkt_m.exc_valid & ~lsu_pkt_m.dma;
-      assign lsu_error_pkt_m.inst_type = lsu_pkt_m.store;
-      assign lsu_error_pkt_m.exc_type  = ~misaligned_fault_m;
-      assign lsu_error_pkt_m.mscause[3:0] = (lsu_double_ecc_error_m & ~misaligned_fault_m & ~access_fault_m) ? 4'h1 : exc_mscause_m[3:0];
-      assign lsu_error_pkt_m.addr[31:0] = lsu_addr_m[31:0];
-
-      assign lsu_fir_error_m[1:0] = fir_nondccm_access_error_m ? 2'b11 : (fir_dccm_access_error_m ? 2'b10 : ((lsu_pkt_m.fast_int & lsu_double_ecc_error_m) ? 2'b01 : 2'b00));
-
-      rvdff  #(1)                             lsu_exc_valid_rff       (.*, .din(lsu_error_pkt_m.exc_valid),                        .dout(lsu_error_pkt_r.exc_valid),                        .clk(lsu_c2_r_clk));
-      rvdff  #(1)                             lsu_single_ecc_error_rff(.*, .din(lsu_error_pkt_m.single_ecc_error),                 .dout(lsu_error_pkt_r.single_ecc_error),                 .clk(lsu_c2_r_clk));
-      rvdffe #($bits(eb1_lsu_error_pkt_t)-2) lsu_error_pkt_rff       (.*, .din(lsu_error_pkt_m[$bits(eb1_lsu_error_pkt_t)-1:2]), .dout(lsu_error_pkt_r[$bits(eb1_lsu_error_pkt_t)-1:2]), .en(lsu_error_pkt_m.exc_valid | lsu_error_pkt_m.single_ecc_error | clk_override));
-      rvdff #(2)                              lsu_fir_error_rff       (.*, .din(lsu_fir_error_m[1:0]),                             .dout(lsu_fir_error[1:0]),                               .clk(lsu_c2_r_clk));
-   end
-
-   //Create DMA packet
-   always_comb begin
-      dma_pkt_d = '0;
-      dma_pkt_d.valid   = dma_dccm_req;
-      dma_pkt_d.dma     = 1'b1;
-      dma_pkt_d.store   = dma_mem_write;
-      dma_pkt_d.load    = ~dma_mem_write;
-      dma_pkt_d.by      = (dma_mem_sz[2:0] == 3'b0);
-      dma_pkt_d.half    = (dma_mem_sz[2:0] == 3'b1);
-      dma_pkt_d.word    = (dma_mem_sz[2:0] == 3'b10);
-      dma_pkt_d.dword   = (dma_mem_sz[2:0] == 3'b11);
-   end
-
-   always_comb begin
-      lsu_pkt_d = dec_lsu_valid_raw_d ? lsu_p : dma_pkt_d;
-      lsu_pkt_m_in = lsu_pkt_d;
-      lsu_pkt_r_in = lsu_pkt_m;
-
-      lsu_pkt_d.valid = (lsu_p.valid & ~(flush_m_up & ~lsu_p.fast_int)) | dma_dccm_req;
-      lsu_pkt_m_in.valid = lsu_pkt_d.valid & ~(flush_m_up & ~lsu_pkt_d.dma);
-      lsu_pkt_r_in.valid = lsu_pkt_m.valid & ~(flush_m_up & ~lsu_pkt_m.dma) ;
-   end
-
-   // C2 clock for valid and C1 for other bits of packet
-   rvdff #(1) lsu_pkt_vldmff (.*, .din(lsu_pkt_m_in.valid), .dout(lsu_pkt_m.valid), .clk(lsu_c2_m_clk));
-   rvdff #(1) lsu_pkt_vldrff (.*, .din(lsu_pkt_r_in.valid), .dout(lsu_pkt_r.valid), .clk(lsu_c2_r_clk));
-
-   rvdff #($bits(eb1_lsu_pkt_t)-1) lsu_pkt_mff (.*, .din(lsu_pkt_m_in[$bits(eb1_lsu_pkt_t)-1:1]), .dout(lsu_pkt_m[$bits(eb1_lsu_pkt_t)-1:1]), .clk(lsu_c1_m_clk));
-   rvdff #($bits(eb1_lsu_pkt_t)-1) lsu_pkt_rff (.*, .din(lsu_pkt_r_in[$bits(eb1_lsu_pkt_t)-1:1]), .dout(lsu_pkt_r[$bits(eb1_lsu_pkt_t)-1:1]), .clk(lsu_c1_r_clk));
-
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U1_Plus1_1
-      logic [31:0] lsu_ld_datafn_r, lsu_ld_datafn_corr_r;
-
-      assign lsu_ld_datafn_r[31:0]  = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_r[31:0];
-      assign lsu_ld_datafn_corr_r[31:0]  = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_corr_r[31:0];
-
-      // this is really R stage signal
-      assign lsu_result_m[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_r[7:0]}) |
-                                  ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_r[15:0]}) |
-                                  ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_r[7]}}, lsu_ld_datafn_r[7:0]}) |
-                                  ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_r[15]}},lsu_ld_datafn_r[15:0]}) |
-                                  ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_r[31:0]);
-
-      // this signal is used for gpr update
-      assign lsu_result_corr_r[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_corr_r[7]}}, lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_corr_r[15]}},lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_corr_r[31:0]);
-
-   end else begin: L2U1_Plus1_0 // block: L2U1_Plus1_1
-      logic [31:0] lsu_ld_datafn_m, lsu_ld_datafn_corr_r;
-
-      assign lsu_ld_datafn_m[31:0] = addr_external_m ? bus_read_data_m[31:0] : lsu_ld_data_m[31:0];
-      assign lsu_ld_datafn_corr_r[31:0] = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_corr_r[31:0];
-
-      // this result must look at prior stores and merge them in
-      assign lsu_result_m[31:0] = ({32{ lsu_pkt_m.unsign & lsu_pkt_m.by  }} & {24'b0,lsu_ld_datafn_m[7:0]}) |
-                                  ({32{ lsu_pkt_m.unsign & lsu_pkt_m.half}} & {16'b0,lsu_ld_datafn_m[15:0]}) |
-                                  ({32{~lsu_pkt_m.unsign & lsu_pkt_m.by  }} & {{24{  lsu_ld_datafn_m[7]}}, lsu_ld_datafn_m[7:0]}) |
-                                  ({32{~lsu_pkt_m.unsign & lsu_pkt_m.half}} & {{16{  lsu_ld_datafn_m[15]}},lsu_ld_datafn_m[15:0]}) |
-                                  ({32{lsu_pkt_m.word}}                     & lsu_ld_datafn_m[31:0]);
-
-      // this signal is used for gpr update
-      assign lsu_result_corr_r[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_corr_r[7]}}, lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_corr_r[15]}},lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_corr_r[31:0]);
-   end
-
-   // Fast interrupt address
-   assign lsu_fir_addr[31:1]    = lsu_ld_data_corr_r[31:1];
-
-   // absence load/store all 0's
-   assign lsu_addr_d[31:0] = full_addr_d[31:0];
-
-   // Interrupt as a flush source allows the WB to occur
-   assign lsu_commit_r = lsu_pkt_r.valid & (lsu_pkt_r.store | lsu_pkt_r.load) & ~flush_r & ~lsu_pkt_r.dma;
-
-   assign dma_mem_wdata_shifted[63:0] = dma_mem_wdata[63:0] >> {dma_mem_addr[2:0], 3'b000};   // Shift the dma data to lower bits to make it consistent to lsu stores
-   assign store_data_d[31:0] = dma_dccm_req ? dma_mem_wdata_shifted[31:0] : exu_lsu_rs2_d[31:0];  // Write to PIC still happens in r stage
-
-   assign store_data_m_in[31:0] = (lsu_pkt_d.store_data_bypass_d) ? lsu_result_m[31:0] : store_data_d[31:0];
-
-   assign store_data_m[31:0] = (picm_mask_data_m[31:0] | {32{~addr_in_pic_m}}) & ((lsu_pkt_m.store_data_bypass_m) ? lsu_result_m[31:0] : store_data_pre_m[31:0]);
-
-
-   rvdff #(32)  sdmff (.*, .din(store_data_m_in[31:0]), .dout(store_data_pre_m[31:0]),                       .clk(lsu_store_c1_m_clk));
-
-   rvdff #(32) samff (.*, .din(lsu_addr_d[31:0]), .dout(lsu_addr_m[31:0]), .clk(lsu_c1_m_clk));
-   rvdff #(32) sarff (.*, .din(lsu_addr_m[31:0]), .dout(lsu_addr_r[31:0]), .clk(lsu_c1_r_clk));
-
-   assign end_addr_m[31:3] = ldst_dual_m ? end_addr_pre_m[31:3] : lsu_addr_m[31:3];       // This is for power saving
-   assign end_addr_r[31:3] = ldst_dual_r ? end_addr_pre_r[31:3] : lsu_addr_r[31:3];       // This is for power saving
-
-   rvdffe #(29) end_addr_hi_mff (.*, .din(end_addr_d[31:3]), .dout(end_addr_pre_m[31:3]), .en((lsu_pkt_d.valid & ldst_dual_d) | clk_override));
-   rvdffe #(29) end_addr_hi_rff (.*, .din(end_addr_m[31:3]), .dout(end_addr_pre_r[31:3]), .en((lsu_pkt_m.valid & ldst_dual_m) | clk_override));
-
-   rvdff #(3)  end_addr_lo_mff (.*, .din(end_addr_d[2:0]), .dout(end_addr_m[2:0]), .clk(lsu_c1_m_clk));
-   rvdff #(3)  end_addr_lo_rff (.*, .din(end_addr_m[2:0]), .dout(end_addr_r[2:0]), .clk(lsu_c1_r_clk));
-
-   rvdff #(1) addr_in_dccm_mff(.din(addr_in_dccm_d), .dout(addr_in_dccm_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_in_dccm_rff(.din(addr_in_dccm_m), .dout(addr_in_dccm_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) addr_in_pic_mff(.din(addr_in_pic_d), .dout(addr_in_pic_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_in_pic_rff(.din(addr_in_pic_m), .dout(addr_in_pic_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) addr_external_mff(.din(addr_external_d), .dout(addr_external_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_external_rff(.din(addr_external_m), .dout(addr_external_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) access_fault_mff     (.din(access_fault_d),     .dout(access_fault_m),     .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) misaligned_fault_mff (.din(misaligned_fault_d), .dout(misaligned_fault_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(4) exc_mscause_mff      (.din(exc_mscause_d[3:0]), .dout(exc_mscause_m[3:0]), .clk(lsu_c1_m_clk), .*);
-
-   rvdff #(1) fir_dccm_access_error_mff    (.din(fir_dccm_access_error_d),    .dout(fir_dccm_access_error_m),    .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) fir_nondccm_access_error_mff (.din(fir_nondccm_access_error_d), .dout(fir_nondccm_access_error_m), .clk(lsu_c1_m_clk), .*);
-
-   rvdffe #(32) bus_read_data_r_ff (.*, .din(bus_read_data_m[31:0]), .dout(bus_read_data_r[31:0]), .en(addr_external_m | clk_override));
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Store Buffer
-// Comments: Dual writes and single drain
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-
-module eb1_lsu_stbuf
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-(
-   input logic                           clk,                         // core clock
-   input logic                           rst_l,                       // reset
-
-   input logic                           lsu_stbuf_c1_clk,            // stbuf clock
-   input logic                           lsu_free_c2_clk,             // free clk
-
-   // Store Buffer input
-   input logic                           store_stbuf_reqvld_r,        // core instruction goes to stbuf
-   input logic                           lsu_commit_r,                // lsu commits
-   input logic                           dec_lsu_valid_raw_d,         // Speculative decode valid
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_hi_r,             // merged data from the dccm for stores. This is used for fwding
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_lo_r,             // merged data from the dccm for stores. This is used for fwding
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_datafn_hi_r,           // merged data from the dccm for stores
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_datafn_lo_r,           // merged data from the dccm for stores
-
-   // Store Buffer output
-   output logic                          stbuf_reqvld_any,            // stbuf is draining
-   output logic                          stbuf_reqvld_flushed_any,    // Top entry is flushed
-   output logic [pt.LSU_SB_BITS-1:0]     stbuf_addr_any,              // address
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_data_any,              // stbuf data
-
-   input  logic                          lsu_stbuf_commit_any,        // pop the stbuf as it commite
-   output logic                          lsu_stbuf_full_any,          // stbuf is full
-   output logic                          lsu_stbuf_empty_any,         // stbuf is empty
-   output logic                          ldst_stbuf_reqvld_r,         // needed for clocking
-
-   input logic [pt.LSU_SB_BITS-1:0]      lsu_addr_d,                  // lsu address D-stage
-   input logic [31:0]                    lsu_addr_m,                  // lsu address M-stage
-   input logic [31:0]                    lsu_addr_r,                  // lsu address R-stage
-
-   input logic [pt.LSU_SB_BITS-1:0]      end_addr_d,                  // lsu end address D-stage - needed to check unaligned
-   input logic [31:0]                    end_addr_m,                  // lsu end address M-stage - needed to check unaligned
-   input logic [31:0]                    end_addr_r,                  // lsu end address R-stage - needed to check unaligned
-
-   input logic                           ldst_dual_d, ldst_dual_m, ldst_dual_r,
-   input logic                           addr_in_dccm_m,              // address is in dccm
-   input logic                           addr_in_dccm_r,              // address is in dccm
-
-   // Forwarding signals
-   input logic                           lsu_cmpen_m,                 // needed for forwarding stbuf - load
-   input eb1_lsu_pkt_t                  lsu_pkt_m,                   // LSU packet M-stage
-   input eb1_lsu_pkt_t                  lsu_pkt_r,                   // LSU packet R-stage
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_hi_m,          // stbuf data
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_lo_m,          // stbuf data
-   output logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_hi_m,        // stbuf data
-   output logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_lo_m,        // stbuf data
-
-   input  logic       scan_mode                                       // Scan mode
-
-);
-
-
-   localparam DEPTH      = pt.LSU_STBUF_DEPTH;
-   localparam DATA_WIDTH = pt.DCCM_DATA_WIDTH;
-   localparam BYTE_WIDTH = pt.DCCM_BYTE_WIDTH;
-   localparam DEPTH_LOG2 = $clog2(DEPTH);
-
-   // These are the fields in the store queue
-   logic [DEPTH-1:0]                     stbuf_vld;
-   logic [DEPTH-1:0]                     stbuf_dma_kill;
-   logic [DEPTH-1:0][pt.LSU_SB_BITS-1:0] stbuf_addr;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0]     stbuf_byteen;
-   logic [DEPTH-1:0][DATA_WIDTH-1:0]     stbuf_data;
-
-   logic [DEPTH-1:0]                     sel_lo;
-   logic [DEPTH-1:0]                     stbuf_wr_en;
-   logic [DEPTH-1:0]                     stbuf_dma_kill_en;
-   logic [DEPTH-1:0]                     stbuf_reset;
-   logic [DEPTH-1:0][pt.LSU_SB_BITS-1:0] stbuf_addrin;
-   logic [DEPTH-1:0][DATA_WIDTH-1:0]     stbuf_datain;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0]     stbuf_byteenin;
-
-   logic [7:0]             store_byteen_ext_r;
-   logic [BYTE_WIDTH-1:0]  store_byteen_hi_r;
-   logic [BYTE_WIDTH-1:0]  store_byteen_lo_r;
-
-   logic                   WrPtrEn, RdPtrEn;
-   logic [DEPTH_LOG2-1:0]  WrPtr, RdPtr;
-   logic [DEPTH_LOG2-1:0]  NxtWrPtr, NxtRdPtr;
-   logic [DEPTH_LOG2-1:0]  WrPtrPlus1, WrPtrPlus2, RdPtrPlus1;
-
-   logic                   dual_stbuf_write_r;
-
-   logic                   isdccmst_m, isdccmst_r;
-   logic [3:0]             stbuf_numvld_any, stbuf_specvld_any;
-   logic [1:0]             stbuf_specvld_m, stbuf_specvld_r;
-
-   logic [pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] cmpaddr_hi_m, cmpaddr_lo_m;
-
-   // variables to detect matching from the store queue
-   logic [DEPTH-1:0]                 stbuf_match_hi, stbuf_match_lo;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0] stbuf_fwdbyteenvec_hi, stbuf_fwdbyteenvec_lo;
-   logic [DATA_WIDTH-1:0]            stbuf_fwddata_hi_pre_m, stbuf_fwddata_lo_pre_m;
-   logic [BYTE_WIDTH-1:0]            stbuf_fwdbyteen_hi_pre_m, stbuf_fwdbyteen_lo_pre_m;
-
-   // logic to detect matching from the pipe - needed for store - load forwarding
-   logic [BYTE_WIDTH-1:0]  ld_byte_rhit_lo_lo, ld_byte_rhit_hi_lo, ld_byte_rhit_lo_hi, ld_byte_rhit_hi_hi;
-   logic                   ld_addr_rhit_lo_lo, ld_addr_rhit_hi_lo, ld_addr_rhit_lo_hi, ld_addr_rhit_hi_hi;
-
-   logic [BYTE_WIDTH-1:0]  ld_byte_hit_lo, ld_byte_rhit_lo;
-   logic [BYTE_WIDTH-1:0]  ld_byte_hit_hi, ld_byte_rhit_hi;
-
-   logic [BYTE_WIDTH-1:0]  ldst_byteen_hi_r;
-   logic [BYTE_WIDTH-1:0]  ldst_byteen_lo_r;
-   // byte_en flowing down
-   logic [7:0]             ldst_byteen_r;
-   logic [7:0]             ldst_byteen_ext_r;
-   // fwd data through the pipe
-   logic [31:0]       ld_fwddata_rpipe_lo;
-   logic [31:0]       ld_fwddata_rpipe_hi;
-
-   // coalescing signals
-   logic [DEPTH-1:0]      store_matchvec_lo_r, store_matchvec_hi_r;
-   logic                  store_coalesce_lo_r, store_coalesce_hi_r;
-
-   //----------------------------------------
-   // Logic starts here
-   //----------------------------------------
-   // Create high/low byte enables
-   assign store_byteen_ext_r[7:0]           = ldst_byteen_r[7:0] << lsu_addr_r[1:0];
-   assign store_byteen_hi_r[BYTE_WIDTH-1:0] = store_byteen_ext_r[7:4] & {4{lsu_pkt_r.store}};
-   assign store_byteen_lo_r[BYTE_WIDTH-1:0] = store_byteen_ext_r[3:0] & {4{lsu_pkt_r.store}};
-
-   assign RdPtrPlus1[DEPTH_LOG2-1:0]     = RdPtr[DEPTH_LOG2-1:0] + 1'b1;
-   assign WrPtrPlus1[DEPTH_LOG2-1:0]     = WrPtr[DEPTH_LOG2-1:0] + 1'b1;
-   assign WrPtrPlus2[DEPTH_LOG2-1:0]     = WrPtr[DEPTH_LOG2-1:0] + 2'b10;
-
-   // ecc error on both hi/lo
-   assign dual_stbuf_write_r   = ldst_dual_r & store_stbuf_reqvld_r;
-   assign ldst_stbuf_reqvld_r  = ((lsu_commit_r | lsu_pkt_r.dma) & store_stbuf_reqvld_r);
-
-  // Store Buffer coalescing
-   for (genvar i=0; i<DEPTH; i++) begin: FindMatchEntry
-       assign store_matchvec_lo_r[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == lsu_addr_r[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & ~stbuf_reset[i];
-       assign store_matchvec_hi_r[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == end_addr_r[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & dual_stbuf_write_r & ~stbuf_reset[i];
-   end: FindMatchEntry
-
-   assign store_coalesce_lo_r = |store_matchvec_lo_r[DEPTH-1:0];
-   assign store_coalesce_hi_r = |store_matchvec_hi_r[DEPTH-1:0];
-
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      // Allocate new in this entry if :
-      // 1. wrptr, single allocate, lo did not coalesce
-      // 2. wrptr, double allocate, lo ^ hi coalesced
-      // 3. wrptr + 1, double alloacte, niether lo or hi coalesced
-      // Also update if there is a hi or a lo coalesce to this entry
-      // Store Buffer instantiation
-      for (genvar i=0; i<DEPTH; i++) begin: GenStBuf
-         assign stbuf_wr_en[i] = ldst_stbuf_reqvld_r & (
-                                   ( (i == WrPtr[DEPTH_LOG2-1:0])      &  ~store_coalesce_lo_r)   |                                                    // Allocate : new Lo
-                                   ( (i == WrPtr[DEPTH_LOG2-1:0])      &  dual_stbuf_write_r & ~store_coalesce_hi_r) |                               // Allocate : only 1 new Write Either
-                                   ( (i == WrPtrPlus1[DEPTH_LOG2-1:0]) &  dual_stbuf_write_r & ~(store_coalesce_lo_r | store_coalesce_hi_r)) |     // Allocate2 : 2 new so Write Hi
-                                   store_matchvec_lo_r[i] | store_matchvec_hi_r[i]);                                                                 // Coalesced Write Lo or Hi
-         assign stbuf_reset[i] = (lsu_stbuf_commit_any | stbuf_reqvld_flushed_any) & (i == RdPtr[DEPTH_LOG2-1:0]);
-
-         // Mux select for start/end address
-         assign sel_lo[i]                         = ((~ldst_dual_r | store_stbuf_reqvld_r) & (i == WrPtr[DEPTH_LOG2-1:0]) & ~store_coalesce_lo_r) |   // lo allocated new entry
-                                                    store_matchvec_lo_r[i];                                                                                                           // lo coalesced in to this entry
-         assign stbuf_addrin[i][pt.LSU_SB_BITS-1:0]  = sel_lo[i] ? lsu_addr_r[pt.LSU_SB_BITS-1:0]       : end_addr_r[pt.LSU_SB_BITS-1:0];
-         assign stbuf_byteenin[i][BYTE_WIDTH-1:0] = sel_lo[i] ? (stbuf_byteen[i][BYTE_WIDTH-1:0] | store_byteen_lo_r[BYTE_WIDTH-1:0])          : (stbuf_byteen[i][BYTE_WIDTH-1:0] | store_byteen_hi_r[BYTE_WIDTH-1:0]);
-         assign stbuf_datain[i][7:0]              = sel_lo[i] ? ((~stbuf_byteen[i][0] | store_byteen_lo_r[0]) ? store_datafn_lo_r[7:0]   : stbuf_data[i][7:0])    :
-                                                                ((~stbuf_byteen[i][0] | store_byteen_hi_r[0]) ? store_datafn_hi_r[7:0]   : stbuf_data[i][7:0]);
-         assign stbuf_datain[i][15:8]             = sel_lo[i] ? ((~stbuf_byteen[i][1] | store_byteen_lo_r[1]) ? store_datafn_lo_r[15:8]  : stbuf_data[i][15:8])    :
-                                                                ((~stbuf_byteen[i][1] | store_byteen_hi_r[1]) ? store_datafn_hi_r[15:8]  : stbuf_data[i][15:8]);
-         assign stbuf_datain[i][23:16]            = sel_lo[i] ? ((~stbuf_byteen[i][2] | store_byteen_lo_r[2]) ? store_datafn_lo_r[23:16] : stbuf_data[i][23:16])    :
-                                                                ((~stbuf_byteen[i][2] | store_byteen_hi_r[2]) ? store_datafn_hi_r[23:16] : stbuf_data[i][23:16]);
-         assign stbuf_datain[i][31:24]            = sel_lo[i] ? ((~stbuf_byteen[i][3] | store_byteen_lo_r[3]) ? store_datafn_lo_r[31:24] : stbuf_data[i][31:24])    :
-                                                                ((~stbuf_byteen[i][3] | store_byteen_hi_r[3]) ? store_datafn_hi_r[31:24] : stbuf_data[i][31:24]);
-
-         rvdffsc #(.WIDTH(1))              stbuf_vldff         (.din(1'b1),                                .dout(stbuf_vld[i]),                      .en(stbuf_wr_en[i]), .clear(stbuf_reset[i]), .clk(lsu_free_c2_clk), .*);
-         rvdffsc #(.WIDTH(1))              stbuf_killff        (.din(1'b1),                                .dout(stbuf_dma_kill[i]),                 .en(stbuf_dma_kill_en[i]), .clear(stbuf_reset[i]), .clk(lsu_free_c2_clk), .*);
-         rvdffe  #(.WIDTH(pt.LSU_SB_BITS)) stbuf_addrff        (.din(stbuf_addrin[i][pt.LSU_SB_BITS-1:0]), .dout(stbuf_addr[i][pt.LSU_SB_BITS-1:0]), .en(stbuf_wr_en[i]), .*);
-         rvdffsc #(.WIDTH(BYTE_WIDTH))     stbuf_byteenff      (.din(stbuf_byteenin[i][BYTE_WIDTH-1:0]),   .dout(stbuf_byteen[i][BYTE_WIDTH-1:0]),   .en(stbuf_wr_en[i]), .clear(stbuf_reset[i]), .clk(lsu_stbuf_c1_clk), .*);
-         rvdffe  #(.WIDTH(DATA_WIDTH))     stbuf_dataff        (.din(stbuf_datain[i][DATA_WIDTH-1:0]),     .dout(stbuf_data[i][DATA_WIDTH-1:0]),     .en(stbuf_wr_en[i]), .*);
-      end
-   end else begin: Gen_dccm_disable
-      assign stbuf_wr_en[DEPTH-1:0] = '0;
-      assign stbuf_reset[DEPTH-1:0] = '0;
-      assign stbuf_vld[DEPTH-1:0]   = '0;
-      assign stbuf_dma_kill[DEPTH-1:0] = '0;
-      assign stbuf_addr[DEPTH-1:0]  = '0;
-      assign stbuf_byteen[DEPTH-1:0] = '0;
-      assign stbuf_data[DEPTH-1:0]   = '0;
-   end
-
-   // Store Buffer drain logic
-   assign stbuf_reqvld_flushed_any            = stbuf_vld[RdPtr] & stbuf_dma_kill[RdPtr];
-   assign stbuf_reqvld_any                    = stbuf_vld[RdPtr] & ~stbuf_dma_kill[RdPtr] & ~(|stbuf_dma_kill_en[DEPTH-1:0]);  // Don't drain if some kill bit is being set this cycle
-   assign stbuf_addr_any[pt.LSU_SB_BITS-1:0]  = stbuf_addr[RdPtr][pt.LSU_SB_BITS-1:0];
-   assign stbuf_data_any[DATA_WIDTH-1:0]      = stbuf_data[RdPtr][DATA_WIDTH-1:0];
-
-   // Update the RdPtr/WrPtr logic
-   // Need to revert the WrPtr for flush cases. Also revert the pipe WrPtrs
-   assign WrPtrEn                  = (ldst_stbuf_reqvld_r  & ~dual_stbuf_write_r & ~(store_coalesce_hi_r | store_coalesce_lo_r))  |  // writing 1 and did not coalesce
-                                     (ldst_stbuf_reqvld_r  &  dual_stbuf_write_r & ~(store_coalesce_hi_r & store_coalesce_lo_r));    // writing 2 and atleast 1 did not coalesce
-   assign NxtWrPtr[DEPTH_LOG2-1:0] = (ldst_stbuf_reqvld_r & dual_stbuf_write_r & ~(store_coalesce_hi_r | store_coalesce_lo_r)) ? WrPtrPlus2[DEPTH_LOG2-1:0] : WrPtrPlus1[DEPTH_LOG2-1:0];
-   assign RdPtrEn                  = lsu_stbuf_commit_any | stbuf_reqvld_flushed_any;
-   assign NxtRdPtr[DEPTH_LOG2-1:0] = RdPtrPlus1[DEPTH_LOG2-1:0];
-
-   always_comb begin
-      stbuf_numvld_any[3:0] = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_numvld_any[3:0] += {3'b0, stbuf_vld[i]};
-      end
-   end
-
-    // These go to store buffer to detect full
-   assign isdccmst_m = lsu_pkt_m.valid & lsu_pkt_m.store & addr_in_dccm_m & ~lsu_pkt_m.dma;
-   assign isdccmst_r = lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_dccm_r & ~lsu_pkt_r.dma;
-
-   assign stbuf_specvld_m[1:0] = {1'b0,isdccmst_m} << (isdccmst_m & ldst_dual_m);
-   assign stbuf_specvld_r[1:0] = {1'b0,isdccmst_r} << (isdccmst_r & ldst_dual_r);
-   assign stbuf_specvld_any[3:0] = stbuf_numvld_any[3:0] +  {2'b0, stbuf_specvld_m[1:0]} + {2'b0, stbuf_specvld_r[1:0]};
-
-   assign lsu_stbuf_full_any  = (~ldst_dual_d & dec_lsu_valid_raw_d) ? (stbuf_specvld_any[3:0] >= DEPTH) : (stbuf_specvld_any[3:0] >= (DEPTH-1));
-   assign lsu_stbuf_empty_any = (stbuf_numvld_any[3:0] == 4'b0);
-
-   // Load forwarding logic from the store queue
-   assign cmpaddr_hi_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] = end_addr_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)];
-
-   assign cmpaddr_lo_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] = lsu_addr_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)];
-
-   always_comb begin: GenLdFwd
-      stbuf_fwdbyteen_hi_pre_m[BYTE_WIDTH-1:0]   = '0;
-      stbuf_fwdbyteen_lo_pre_m[BYTE_WIDTH-1:0]   = '0;
-
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_match_hi[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == cmpaddr_hi_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & addr_in_dccm_m;
-         stbuf_match_lo[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == cmpaddr_lo_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & addr_in_dccm_m;
-
-         // Kill the store buffer entry if there is a dma store since it already updated the dccm
-         stbuf_dma_kill_en[i] = (stbuf_match_hi[i] | stbuf_match_lo[i]) & lsu_pkt_m.valid & lsu_pkt_m.dma & lsu_pkt_m.store;
-
-         for (int j=0; j<BYTE_WIDTH; j++) begin
-            stbuf_fwdbyteenvec_hi[i][j] = stbuf_match_hi[i] & stbuf_byteen[i][j] & stbuf_vld[i];
-            stbuf_fwdbyteen_hi_pre_m[j]  |= stbuf_fwdbyteenvec_hi[i][j];
-
-            stbuf_fwdbyteenvec_lo[i][j] = stbuf_match_lo[i] & stbuf_byteen[i][j] & stbuf_vld[i];
-            stbuf_fwdbyteen_lo_pre_m[j]  |= stbuf_fwdbyteenvec_lo[i][j];
-         end
-      end
-   end // block: GenLdFwd
-
-   always_comb begin: GenLdData
-      stbuf_fwddata_hi_pre_m[31:0]   = '0;
-      stbuf_fwddata_lo_pre_m[31:0]   = '0;
-
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_fwddata_hi_pre_m[31:0] |= {32{stbuf_match_hi[i]}} & stbuf_data[i][31:0];
-         stbuf_fwddata_lo_pre_m[31:0] |= {32{stbuf_match_lo[i]}} & stbuf_data[i][31:0];
-
-      end
-
-   end // block: GenLdData
-
-   // Create Hi/Lo signals - needed for the pipe forwarding
-   assign ldst_byteen_r[7:0] =  ({8{lsu_pkt_r.by}}    & 8'b0000_0001) |
-                                 ({8{lsu_pkt_r.half}}  & 8'b0000_0011) |
-                                 ({8{lsu_pkt_r.word}}  & 8'b0000_1111) |
-                                 ({8{lsu_pkt_r.dword}} & 8'b1111_1111);
-
-   assign ldst_byteen_ext_r[7:0] = ldst_byteen_r[7:0] << lsu_addr_r[1:0];
-
-   assign ldst_byteen_hi_r[3:0]   = ldst_byteen_ext_r[7:4];
-   assign ldst_byteen_lo_r[3:0]   = ldst_byteen_ext_r[3:0];
-
-   assign ld_addr_rhit_lo_lo = (lsu_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma;
-   assign ld_addr_rhit_lo_hi = (end_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma;
-   assign ld_addr_rhit_hi_lo = (lsu_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma & dual_stbuf_write_r;
-   assign ld_addr_rhit_hi_hi = (end_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma & dual_stbuf_write_r;
-
-   for (genvar i=0; i<BYTE_WIDTH; i++) begin
-      assign ld_byte_rhit_lo_lo[i] = ld_addr_rhit_lo_lo & ldst_byteen_lo_r[i];
-      assign ld_byte_rhit_lo_hi[i] = ld_addr_rhit_lo_hi & ldst_byteen_lo_r[i];
-      assign ld_byte_rhit_hi_lo[i] = ld_addr_rhit_hi_lo & ldst_byteen_hi_r[i];
-      assign ld_byte_rhit_hi_hi[i] = ld_addr_rhit_hi_hi & ldst_byteen_hi_r[i];
-
-      assign ld_byte_rhit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_rhit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-       assign ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_lo[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                     ({8{ld_byte_rhit_hi_lo[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-       assign ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_hi[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                     ({8{ld_byte_rhit_hi_hi[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      assign ld_byte_hit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_hit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-      assign stbuf_fwdbyteen_hi_m[i] = ld_byte_hit_hi[i] | stbuf_fwdbyteen_hi_pre_m[i];
-      assign stbuf_fwdbyteen_lo_m[i] = ld_byte_hit_lo[i] | stbuf_fwdbyteen_lo_pre_m[i];
-      // // Pipe vs Store Queue priority
-      assign stbuf_fwddata_lo_m[(8*i)+7:(8*i)] = ld_byte_rhit_lo[i]    ? ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] : stbuf_fwddata_lo_pre_m[(8*i)+7:(8*i)];
-      // // Pipe vs Store Queue priority
-      assign stbuf_fwddata_hi_m[(8*i)+7:(8*i)] = ld_byte_rhit_hi[i]    ? ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] : stbuf_fwddata_hi_pre_m[(8*i)+7:(8*i)];
-   end
-
-   // Flops
-   rvdffs #(.WIDTH(DEPTH_LOG2)) WrPtrff (.din(NxtWrPtr[DEPTH_LOG2-1:0]), .dout(WrPtr[DEPTH_LOG2-1:0]), .en(WrPtrEn), .clk(lsu_stbuf_c1_clk), .*);
-   rvdffs #(.WIDTH(DEPTH_LOG2)) RdPtrff (.din(NxtRdPtr[DEPTH_LOG2-1:0]), .dout(RdPtr[DEPTH_LOG2-1:0]), .en(RdPtrEn), .clk(lsu_stbuf_c1_clk), .*);
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: LSU Trigger logic
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_trigger
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input eb1_trigger_pkt_t [3:0] trigger_pkt_any,            // trigger packet from dec
-   input eb1_lsu_pkt_t           lsu_pkt_m,                  // lsu packet
-   input logic [31:0]             lsu_addr_m,                 // address
-   input logic [31:0]             store_data_m,               // store data
-
-   output logic [3:0]             lsu_trigger_match_m         // match result
-);
-
-   logic               trigger_enable;
-   logic [3:0][31:0]  lsu_match_data;
-   logic [3:0]        lsu_trigger_data_match;
-   logic [31:0]       store_data_trigger_m;
-   logic [31:0]       ldst_addr_trigger_m;
-
-   // Generate the trigger enable (This is for power)
-   always_comb begin
-      trigger_enable = 1'b0;
-      for (int i=0; i<4; i++) begin
-         trigger_enable |= trigger_pkt_any[i].m;
-      end
-   end
-
-   assign store_data_trigger_m[31:0] = {({16{lsu_pkt_m.word}} & store_data_m[31:16]),({8{(lsu_pkt_m.half | lsu_pkt_m.word)}} & store_data_m[15:8]), store_data_m[7:0]} & {32{trigger_enable}};
-   assign ldst_addr_trigger_m[31:0]  = lsu_addr_m[31:0] & {32{trigger_enable}};
-
-
-   for (genvar i=0; i<4; i++) begin
-      assign lsu_match_data[i][31:0] = ({32{~trigger_pkt_any[i].select}} & ldst_addr_trigger_m[31:0]) |
-                                       ({32{trigger_pkt_any[i].select & trigger_pkt_any[i].store}} & store_data_trigger_m[31:0]);
-
-      rvmaskandmatch trigger_match (.mask(trigger_pkt_any[i].tdata2[31:0]), .data(lsu_match_data[i][31:0]), .masken(trigger_pkt_any[i].match), .match(lsu_trigger_data_match[i]));
-
-      assign lsu_trigger_match_m[i] = lsu_pkt_m.valid & ~lsu_pkt_m.dma & trigger_enable &
-                                        ((trigger_pkt_any[i].store & lsu_pkt_m.store) | (trigger_pkt_any[i].load & lsu_pkt_m.load & ~trigger_pkt_any[i].select)) &
-                                        lsu_trigger_data_match[i];
-   end
-
-
-endmodule // eb1_lsu_trigger
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or it's affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License
-
-module rvjtag_tap #(
-parameter AWIDTH = 7
-)
-(
-input               trst,
-input               tck,
-input               tms,
-input               tdi,
-output   reg        tdo,
-output              tdoEnable,
-
-output [31:0]       wr_data,
-output [AWIDTH-1:0] wr_addr,
-output              wr_en,
-output              rd_en,
-
-input   [31:0]      rd_data,
-input   [1:0]       rd_status,
-
-output  reg         dmi_reset,
-output  reg         dmi_hard_reset,
-
-input   [2:0]       idle,
-input   [1:0]       dmi_stat,
-/*
---  revisionCode        : 4'h0;
---  manufacturersIdCode : 11'h45;
---  deviceIdCode        : 16'h0001;
---  order MSB .. LSB -> [4 bit version or revision] [16 bit part number] [11 bit manufacturer id] [value of 1'b1 in LSB]
-*/
-input   [31:1]      jtag_id,
-input   [3:0]       version
-);
-
-localparam USER_DR_LENGTH = AWIDTH + 34;
-
-
-reg [USER_DR_LENGTH-1:0] sr, nsr, dr;
-
-///////////////////////////////////////////////////////
-//                      Tap controller
-///////////////////////////////////////////////////////
-logic[3:0] state, nstate;
-logic [4:0] ir;
-wire jtag_reset;
-wire shift_dr;
-wire pause_dr;
-wire update_dr;
-wire capture_dr;
-wire shift_ir;
-wire pause_ir ;
-wire update_ir ;
-wire capture_ir;
-wire[1:0] dr_en;
-wire devid_sel;
-wire [5:0] abits;
-
-assign abits = AWIDTH[5:0];
-
-
-localparam TEST_LOGIC_RESET_STATE = 0;
-localparam RUN_TEST_IDLE_STATE    = 1;
-localparam SELECT_DR_SCAN_STATE   = 2;
-localparam CAPTURE_DR_STATE       = 3;
-localparam SHIFT_DR_STATE         = 4;
-localparam EXIT1_DR_STATE         = 5;
-localparam PAUSE_DR_STATE         = 6;
-localparam EXIT2_DR_STATE         = 7;
-localparam UPDATE_DR_STATE        = 8;
-localparam SELECT_IR_SCAN_STATE   = 9;
-localparam CAPTURE_IR_STATE       = 10;
-localparam SHIFT_IR_STATE         = 11;
-localparam EXIT1_IR_STATE         = 12;
-localparam PAUSE_IR_STATE         = 13;
-localparam EXIT2_IR_STATE         = 14;
-localparam UPDATE_IR_STATE        = 15;
-
-always_comb  begin
-    nstate = state;
-    case(state)
-    TEST_LOGIC_RESET_STATE: nstate = tms ? TEST_LOGIC_RESET_STATE : RUN_TEST_IDLE_STATE;
-    RUN_TEST_IDLE_STATE:    nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    SELECT_DR_SCAN_STATE:   nstate = tms ? SELECT_IR_SCAN_STATE   : CAPTURE_DR_STATE;
-    CAPTURE_DR_STATE:       nstate = tms ? EXIT1_DR_STATE         : SHIFT_DR_STATE;
-    SHIFT_DR_STATE:         nstate = tms ? EXIT1_DR_STATE         : SHIFT_DR_STATE;
-    EXIT1_DR_STATE:         nstate = tms ? UPDATE_DR_STATE        : PAUSE_DR_STATE;
-    PAUSE_DR_STATE:         nstate = tms ? EXIT2_DR_STATE         : PAUSE_DR_STATE;
-    EXIT2_DR_STATE:         nstate = tms ? UPDATE_DR_STATE        : SHIFT_DR_STATE;
-    UPDATE_DR_STATE:        nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    SELECT_IR_SCAN_STATE:   nstate = tms ? TEST_LOGIC_RESET_STATE : CAPTURE_IR_STATE;
-    CAPTURE_IR_STATE:       nstate = tms ? EXIT1_IR_STATE         : SHIFT_IR_STATE;
-    SHIFT_IR_STATE:         nstate = tms ? EXIT1_IR_STATE         : SHIFT_IR_STATE;
-    EXIT1_IR_STATE:         nstate = tms ? UPDATE_IR_STATE        : PAUSE_IR_STATE;
-    PAUSE_IR_STATE:         nstate = tms ? EXIT2_IR_STATE         : PAUSE_IR_STATE;
-    EXIT2_IR_STATE:         nstate = tms ? UPDATE_IR_STATE        : SHIFT_IR_STATE;
-    UPDATE_IR_STATE:        nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    default:                nstate = TEST_LOGIC_RESET_STATE;
-    endcase
-end
-
-always @ (posedge tck or negedge trst) begin
-    if(!trst) state <= TEST_LOGIC_RESET_STATE;
-    else state <= nstate;
-end
-
-assign jtag_reset = state == TEST_LOGIC_RESET_STATE;
-assign shift_dr   = state == SHIFT_DR_STATE;
-assign pause_dr   = state == PAUSE_DR_STATE;
-assign update_dr  = state == UPDATE_DR_STATE;
-assign capture_dr = state == CAPTURE_DR_STATE;
-assign shift_ir   = state == SHIFT_IR_STATE;
-assign pause_ir   = state == PAUSE_IR_STATE;
-assign update_ir  = state == UPDATE_IR_STATE;
-assign capture_ir = state == CAPTURE_IR_STATE;
-
-assign tdoEnable = shift_dr | shift_ir;
-
-///////////////////////////////////////////////////////
-//                      IR register
-///////////////////////////////////////////////////////
-
-always @ (negedge tck or negedge trst) begin
-   if (!trst) ir <= 5'b1;
-   else begin
-      if (jtag_reset) ir <= 5'b1;
-      else if (update_ir) ir <= (sr[4:0] == '0) ? 5'h1f :sr[4:0];
-   end
-end
-
-
-assign devid_sel  = ir == 5'b00001;
-assign dr_en[0]   = ir == 5'b10000;
-assign dr_en[1]   = ir == 5'b10001;
-
-///////////////////////////////////////////////////////
-//                      Shift register
-///////////////////////////////////////////////////////
-always @ (posedge tck or negedge trst) begin
-    if(!trst)begin
-        sr <= '0;
-    end
-    else begin
-        sr <= nsr;
-    end
-end
-
-// SR next value
-always_comb begin
-    nsr = sr;
-    case(1)
-    shift_dr:   begin
-                    case(1)
-                    dr_en[1]:   nsr = {tdi, sr[USER_DR_LENGTH-1:1]};
-
-                    dr_en[0],
-                    devid_sel:  nsr = {{USER_DR_LENGTH-32{1'b0}},tdi, sr[31:1]};
-                    default:    nsr = {{USER_DR_LENGTH-1{1'b0}},tdi}; // bypass
-                    endcase
-                end
-    capture_dr: begin
-                    nsr[0] = 1'b0;
-                    case(1)
-                    dr_en[0]:   nsr = {{USER_DR_LENGTH-15{1'b0}}, idle, dmi_stat, abits, version};
-                    dr_en[1]:   nsr = {{AWIDTH{1'b0}}, rd_data, rd_status};
-                    devid_sel:  nsr = {{USER_DR_LENGTH-32{1'b0}}, jtag_id, 1'b1};
-                    endcase
-                end
-    shift_ir:   nsr = {{USER_DR_LENGTH-5{1'b0}},tdi, sr[4:1]};
-    capture_ir: nsr = {{USER_DR_LENGTH-1{1'b0}},1'b1};
-    endcase
-end
-
-// TDO retiming
-always @ (negedge tck ) tdo <= sr[0];
-
-// DMI CS register
-always @ (posedge tck or negedge trst) begin
-    if(!trst) begin
-        dmi_hard_reset <= 1'b0;
-        dmi_reset      <= 1'b0;
-    end
-    else if (update_dr & dr_en[0]) begin
-        dmi_hard_reset <= sr[17];
-        dmi_reset      <= sr[16];
-    end
-    else begin
-        dmi_hard_reset <= 1'b0;
-        dmi_reset      <= 1'b0;
-    end
-end
-
-// DR register
-always @ (posedge tck or negedge trst) begin
-    if(!trst)
-        dr <=  '0;
-    else begin
-        if (update_dr & dr_en[1])
-            dr <= sr;
-        else
-            dr <= {dr[USER_DR_LENGTH-1:2],2'b0};
-    end
-end
-
-assign {wr_addr, wr_data, wr_en, rd_en} = dr;
-
-
-
-
-endmodule
-
-module eb1_btb_tag_hash 
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-}) (
-                       input logic [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1] pc,
-                       output logic [pt.BTB_BTAG_SIZE-1:0] hash
-                       );
-
-    assign hash = {(pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1])};
-endmodule
-
-module eb1_btb_tag_hash_fold  
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-                       input logic [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1] pc,
-                       output logic [pt.BTB_BTAG_SIZE-1:0] hash
-                       );
-
-    assign hash = {(
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1])};
-
-endmodule
-
-module eb1_btb_addr_hash  
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-                        input logic [pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO] pc,
-                        output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] hash
-                        );
-
-
-if(pt.BTB_FOLD2_INDEX_HASH) begin : fold2
-   assign hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = pc[pt.BTB_INDEX1_HI:pt.BTB_INDEX1_LO] ^
-                                                pc[pt.BTB_INDEX3_HI:pt.BTB_INDEX3_LO];
-end
-   else begin
-   assign hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = pc[pt.BTB_INDEX1_HI:pt.BTB_INDEX1_LO] ^
-                                                pc[pt.BTB_INDEX2_HI:pt.BTB_INDEX2_LO] ^
-                                                pc[pt.BTB_INDEX3_HI:pt.BTB_INDEX3_LO];
-end
-
-endmodule
-
-module eb1_btb_ghr_hash 
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-                       input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] hashin,
-                       input logic [pt.BHT_GHR_SIZE-1:0] ghr,
-                       output logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] hash
-                       );
-
-   // The hash function is too complex to write in verilog for all cases.
-   // The config script generates the logic string based on the bp config.
-   if(pt.BHT_GHR_HASH_1) begin : ghrhash_cfg1
-     assign hash[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = { ghr[pt.BHT_GHR_SIZE-1:pt.BTB_INDEX1_HI-1], hashin[pt.BTB_INDEX1_HI:2]^ghr[pt.BTB_INDEX1_HI-2:0]};
-   end
-   else begin : ghrhash_cfg2
-     assign hash[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = { hashin[pt.BHT_GHR_SIZE+1:2]^ghr[pt.BHT_GHR_SIZE-1:0]};
-   end
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// all flops call the rvdff flop
-
-//// `include "common_defines.vh"
-module rvdff #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic           clk,
-     input logic                   rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin
-   assign dout = din;
-end
-
-
-   always_ff @(posedge clk or negedge rst_l) begin
-      if (rst_l == 0)
-        dout[WIDTH-1:0] <= 0;
-      else
-        dout[WIDTH-1:0] <= din[WIDTH-1:0];
-   end
-
-endmodule
-
-// rvdff with 2:1 input mux to flop din iff sel==1
-module rvdffs #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic           clk,
-     input logic                   rst_l,
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin : genblock
-   assign dout = din;
-end
-else begin : genblock
-   rvdff #(WIDTH) dffs (.din((en) ? din[WIDTH-1:0] : dout[WIDTH-1:0]), .*);
-end
-
-endmodule
-
-// rvdff with en and clear
-module rvdffsc #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic             clear,
-     input logic           clk,
-     input logic                   rst_l,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:0]          din_new;
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-   assign din_new = {WIDTH{~clear}} & (en ? din[WIDTH-1:0] : dout[WIDTH-1:0]);
-   rvdff #(WIDTH) dffsc (.din(din_new[WIDTH-1:0]), .*);
-end
-endmodule
-
-// _fpga versions
-module rvdff_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic           clk,
-     input logic           clken,
-     input logic           rawclk,
-     input logic           rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-    rvdff #(WIDTH)  dff (.*);
-end
-endmodule
-
-// rvdff with 2:1 input mux to flop din iff sel==1
-module rvdffs_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic           clk,
-     input logic           clken,
-     input logic           rawclk,
-     input logic           rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin : genblock
-   assign dout = din;
-end
-else begin : genblock
-   rvdffs #(WIDTH)   dffs (.*);
-end
-
-endmodule
-
-// rvdff with en and clear
-module rvdffsc_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic             clear,
-     input logic             clk,
-     input logic             clken,
-     input logic             rawclk,
-     input logic             rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:0]          din_new;
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-   rvdffsc #(WIDTH)   dffsc (.*);
-end
-endmodule
-
-
-module rvdffe #( parameter WIDTH=1, SHORT=0, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic           en,
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-
-if (SHORT == 1) begin : genblock
-   if (1) begin : genblock
-      assign dout = din;
-   end
-end
-else begin : genblock
-
-      rvclkhdr clkhdr ( .* );
-      rvdff #(WIDTH) dff (.*, .clk(l1clk));
-
-end // else: !if(SHORT == 1)
-
-endmodule // rvdffe
-
-
-module rvdffpcie #( parameter WIDTH=31 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-
-      rvdfflie #(.WIDTH(WIDTH), .LEFT(19)) dff (.*);
-
-endmodule
-
-// format: { LEFT, EXTRA }
-// LEFT # of bits will be done with rvdffie, all else EXTRA with rvdffe
-module rvdfflie #( parameter WIDTH=16, LEFT=8 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   localparam EXTRA = WIDTH-LEFT;
-   localparam LMSB = WIDTH-1;
-   localparam LLSB = LMSB-LEFT+1;
-   localparam XMSB = LLSB-1;
-   localparam XLSB = LLSB-EXTRA;
-
-
-
-
-      rvdffiee #(LEFT)  dff_left  (.*, .din(din[LMSB:LLSB]), .dout(dout[LMSB:LLSB]));
-
-
-      rvdffe  #(EXTRA)  dff_extra (.*, .din(din[XMSB:XLSB]), .dout(dout[XMSB:XLSB]));
-
-endmodule
-
-
-
-
-// special power flop for predict packet
-// format: { LEFT, RIGHT==31 }
-// LEFT # of bits will be done with rvdffe; RIGHT is enabled by LEFT[LSB] & en
-module rvdffppe #( parameter WIDTH=32 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   localparam RIGHT = 31;
-   localparam LEFT = WIDTH - RIGHT;
-
-   localparam LMSB = WIDTH-1;
-   localparam LLSB = LMSB-LEFT+1;
-   localparam RMSB = LLSB-1;
-   localparam RLSB = LLSB-RIGHT;
-
-
-
-
-
-      rvdffe #(LEFT)     dff_left (.*, .din(din[LMSB:LLSB]), .dout(dout[LMSB:LLSB]));
-
-      rvdffe #(RIGHT)   dff_right (.*, .din(din[RMSB:RLSB]), .dout(dout[RMSB:RLSB]), .en(en & din[LLSB]));  // qualify with pret
-
-endmodule
-
-
-
-
-module rvdffie #( parameter WIDTH=1, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-   logic                      en;
-
-
-
-
-
-
-
-
-
-      assign en = |(din ^ dout);
-
-
-      rvclkhdr clkhdr ( .* );
-      rvdff #(WIDTH) dff (.*, .clk(l1clk));
-
-
-
-
-endmodule
-
-// ie flop but it has an .en input
-module rvdffiee #( parameter WIDTH=1, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic           scan_mode,
-     input  logic           en,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-   logic                      final_en;
-
-
-
-      assign final_en = (|(din ^ dout)) & en;
-
-
-      rvdffe #(WIDTH) dff (.*,  .en(final_en));
-
-
-
-endmodule
-
-
-
-module rvsyncss #(parameter WIDTH = 251)
-   (
-     input  logic                 clk,
-     input  logic                 rst_l,
-     input  logic [WIDTH-1:0]     din,
-     output logic [WIDTH-1:0]     dout
-     );
-
-   logic [WIDTH-1:0]              din_ff1;
-
-   rvdff #(WIDTH) sync_ff1  (.*, .din (din[WIDTH-1:0]),     .dout(din_ff1[WIDTH-1:0]));
-   rvdff #(WIDTH) sync_ff2  (.*, .din (din_ff1[WIDTH-1:0]), .dout(dout[WIDTH-1:0]));
-
-endmodule // rvsyncss
-
-module rvsyncss_fpga #(parameter WIDTH = 251)
-   (
-     input  logic                 gw_clk,
-     input  logic                 rawclk,
-     input  logic                 clken,
-     input  logic                 rst_l,
-     input  logic [WIDTH-1:0]     din,
-     output logic [WIDTH-1:0]     dout
-     );
-
-   logic [WIDTH-1:0]              din_ff1;
-
-   rvdff_fpga #(WIDTH) sync_ff1  (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (din[WIDTH-1:0]),     .dout(din_ff1[WIDTH-1:0]));
-   rvdff_fpga #(WIDTH) sync_ff2  (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (din_ff1[WIDTH-1:0]), .dout(dout[WIDTH-1:0]));
-
-endmodule // rvsyncss
-
-module rvlsadder
-  (
-    input logic [31:0] rs1,
-    input logic [11:0] offset,
-
-    output logic [31:0] dout
-    );
-
-   logic                cout;
-   logic                sign;
-
-   logic [31:12]        rs1_inc;
-   logic [31:12]        rs1_dec;
-
-   assign {cout,dout[11:0]} = {1'b0,rs1[11:0]} + {1'b0,offset[11:0]};
-
-   assign rs1_inc[31:12] = rs1[31:12] + 1;
-
-   assign rs1_dec[31:12] = rs1[31:12] - 1;
-
-   assign sign = offset[11];
-
-   assign dout[31:12] = ({20{  sign ^~  cout}} &     rs1[31:12]) |
-                        ({20{ ~sign &   cout}}  & rs1_inc[31:12]) |
-                        ({20{  sign &  ~cout}}  & rs1_dec[31:12]);
-
-endmodule // rvlsadder
-
-// assume we only maintain pc[31:1] in the pipe
-
-module rvbradder
-  (
-    input [31:1] pc,
-    input [12:1] offset,
-
-    output [31:1] dout
-    );
-
-   logic          cout;
-   logic          sign;
-
-   logic [31:13]  pc_inc;
-   logic [31:13]  pc_dec;
-
-   assign {cout,dout[12:1]} = {1'b0,pc[12:1]} + {1'b0,offset[12:1]};
-
-   assign pc_inc[31:13] = pc[31:13] + 1;
-
-   assign pc_dec[31:13] = pc[31:13] - 1;
-
-   assign sign = offset[12];
-
-
-   assign dout[31:13] = ({19{  sign ^~  cout}} &     pc[31:13]) |
-                        ({19{ ~sign &   cout}}  & pc_inc[31:13]) |
-                        ({19{  sign &  ~cout}}  & pc_dec[31:13]);
-
-
-endmodule // rvbradder
-
-
-// 2s complement circuit
-module rvtwoscomp #( parameter WIDTH=32 )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:1]          dout_temp;   // holding for all other bits except for the lsb. LSB is always din
-
-   genvar                     i;
-
-   for ( i = 1; i < WIDTH; i++ )  begin : flip_after_first_one
-      assign dout_temp[i] = (|din[i-1:0]) ? ~din[i] : din[i];
-   end : flip_after_first_one
-
-   assign dout[WIDTH-1:0]  = { dout_temp[WIDTH-1:1], din[0] };
-
-endmodule  // 2'scomp
-
-// find first
-module rvfindfirst1 #( parameter WIDTH=32, SHIFT=$clog2(WIDTH) )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [SHIFT-1:0] dout
-     );
-   logic                      done;
-
-   always_comb begin
-      dout[SHIFT-1:0] = {SHIFT{1'b0}};
-      done    = 1'b0;
-
-      for ( int i = WIDTH-1; i > 0; i-- )  begin : find_first_one
-         done |= din[i];
-         dout[SHIFT-1:0] += done ? 1'b0 : 1'b1;
-      end : find_first_one
-   end
-endmodule // rvfindfirst1
-
-module rvfindfirst1hot #( parameter WIDTH=32 )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [WIDTH-1:0] dout
-     );
-   logic                      done;
-
-   always_comb begin
-      dout[WIDTH-1:0] = {WIDTH{1'b0}};
-      done    = 1'b0;
-      for ( int i = 0; i < WIDTH; i++ )  begin : find_first_one
-         dout[i] = ~done & din[i];
-         done   |= din[i];
-      end : find_first_one
-   end
-endmodule // rvfindfirst1hot
-
-// mask and match function matches bits after finding the first 0 position
-// find first starting from LSB. Skip that location and match the rest of the bits
-module rvmaskandmatch #( parameter WIDTH=32 )
-   (
-     input  logic [WIDTH-1:0] mask,     // this will have the mask in the lower bit positions
-     input  logic [WIDTH-1:0] data,     // this is what needs to be matched on the upper bits with the mask's upper bits
-     input  logic             masken,   // when 1 : do mask. 0 : full match
-     output logic             match
-     );
-
-   logic [WIDTH-1:0]          matchvec;
-   logic                      masken_or_fullmask;
-
-   assign masken_or_fullmask = masken &  ~(&mask[WIDTH-1:0]);
-
-   assign matchvec[0]        = masken_or_fullmask | (mask[0] == data[0]);
-   genvar                     i;
-
-   for ( i = 1; i < WIDTH; i++ )  begin : match_after_first_zero
-      assign matchvec[i] = (&mask[i-1:0] & masken_or_fullmask) ? 1'b1 : (mask[i] == data[i]);
-   end : match_after_first_zero
-
-   assign match  = &matchvec[WIDTH-1:0];    // all bits either matched or were masked off
-
-endmodule // rvmaskandmatch
-
-
-
-
-// Check if the S_ADDR <= addr < E_ADDR
-module rvrangecheck  #(CCM_SADR = 32'h0,
-                       CCM_SIZE  = 128) (
-   input  logic [31:0]   addr,                             // Address to be checked for range
-   output logic          in_range,                            // S_ADDR <= start_addr < E_ADDR
-   output logic          in_region
-);
-
-   localparam REGION_BITS = 4;
-   localparam MASK_BITS = 10 + $clog2(CCM_SIZE);
-
-   logic [31:0]          start_addr;
-   logic [3:0]           region;
-
-   assign start_addr[31:0]        = CCM_SADR;
-   assign region[REGION_BITS-1:0] = start_addr[31:(32-REGION_BITS)];
-
-   assign in_region = (addr[31:(32-REGION_BITS)] == region[REGION_BITS-1:0]);
-   if (CCM_SIZE  == 48)
-    assign in_range  = (addr[31:MASK_BITS] == start_addr[31:MASK_BITS]) & ~(&addr[MASK_BITS-1 : MASK_BITS-2]);
-   else
-    assign in_range  = (addr[31:MASK_BITS] == start_addr[31:MASK_BITS]);
-
-endmodule  // rvrangechecker
-
-// 16 bit even parity generator
-module rveven_paritygen #(WIDTH = 16)  (
-                                         input  logic [WIDTH-1:0]  data_in,         // Data
-                                         output logic              parity_out       // generated even parity
-                                         );
-
-   assign  parity_out =  ^(data_in[WIDTH-1:0]) ;
-
-endmodule  // rveven_paritygen
-
-module rveven_paritycheck #(WIDTH = 16)  (
-                                           input  logic [WIDTH-1:0]  data_in,         // Data
-                                           input  logic              parity_in,
-                                           output logic              parity_err       // Parity error
-                                           );
-
-   assign  parity_err =  ^(data_in[WIDTH-1:0]) ^ parity_in ;
-
-endmodule  // rveven_paritycheck
-
-module rvecc_encode  (
-                      input [31:0] din,
-                      output [6:0] ecc_out
-                      );
-logic [5:0] ecc_out_temp;
-
-   assign ecc_out_temp[0] = din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30];
-   assign ecc_out_temp[1] = din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31];
-   assign ecc_out_temp[2] = din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31];
-   assign ecc_out_temp[3] = din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_out_temp[4] = din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_out_temp[5] = din[26]^din[27]^din[28]^din[29]^din[30]^din[31];
-
-   assign ecc_out[6:0] = {(^din[31:0])^(^ecc_out_temp[5:0]),ecc_out_temp[5:0]};
-
-endmodule // rvecc_encode
-
-module rvecc_decode  (
-                      input         en,
-                      input [31:0]  din,
-                      input [6:0]   ecc_in,
-                      input         sed_ded,    // only do detection and no correction. Used for the I$
-                      output [31:0] dout,
-                      output [6:0]  ecc_out,
-                      output        single_ecc_error,
-                      output        double_ecc_error
-
-                      );
-
-   logic [6:0]                      ecc_check;
-   logic [38:0]                     error_mask;
-   logic [38:0]                     din_plus_parity, dout_plus_parity;
-
-   // Generate the ecc bits
-   assign ecc_check[0] = ecc_in[0]^din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30];
-   assign ecc_check[1] = ecc_in[1]^din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31];
-   assign ecc_check[2] = ecc_in[2]^din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31];
-   assign ecc_check[3] = ecc_in[3]^din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_check[4] = ecc_in[4]^din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_check[5] = ecc_in[5]^din[26]^din[27]^din[28]^din[29]^din[30]^din[31];
-
-   // This is the parity bit
-   assign ecc_check[6] = ((^din[31:0])^(^ecc_in[6:0])) & ~sed_ded;
-
-   assign single_ecc_error = en & (ecc_check[6:0] != 0) & ecc_check[6];   // this will never be on for sed_ded
-   assign double_ecc_error = en & (ecc_check[6:0] != 0) & ~ecc_check[6];  // all errors in the sed_ded case will be recorded as DE
-
-   // Generate the mask for error correctiong
-   for (genvar i=1; i<40; i++) begin
-      assign error_mask[i-1] = (ecc_check[5:0] == i);
-   end
-
-   // Generate the corrected data
-   assign din_plus_parity[38:0] = {ecc_in[6], din[31:26], ecc_in[5], din[25:11], ecc_in[4], din[10:4], ecc_in[3], din[3:1], ecc_in[2], din[0], ecc_in[1:0]};
-
-   assign dout_plus_parity[38:0] = single_ecc_error ? (error_mask[38:0] ^ din_plus_parity[38:0]) : din_plus_parity[38:0];
-   assign dout[31:0]             = {dout_plus_parity[37:32], dout_plus_parity[30:16], dout_plus_parity[14:8], dout_plus_parity[6:4], dout_plus_parity[2]};
-   assign ecc_out[6:0]           = {(dout_plus_parity[38] ^ (ecc_check[6:0] == 7'b1000000)), dout_plus_parity[31], dout_plus_parity[15], dout_plus_parity[7], dout_plus_parity[3], dout_plus_parity[1:0]};
-
-endmodule // rvecc_decode
-
-module rvecc_encode_64  (
-                      input [63:0] din,
-                      output [6:0] ecc_out
-                      );
-  assign ecc_out[0] = din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30]^din[32]^din[34]^din[36]^din[38]^din[40]^din[42]^din[44]^din[46]^din[48]^din[50]^din[52]^din[54]^din[56]^din[57]^din[59]^din[61]^din[63];
-
-   assign ecc_out[1] = din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31]^din[32]^din[35]^din[36]^din[39]^din[40]^din[43]^din[44]^din[47]^din[48]^din[51]^din[52]^din[55]^din[56]^din[58]^din[59]^din[62]^din[63];
-
-   assign ecc_out[2] = din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31]^din[32]^din[37]^din[38]^din[39]^din[40]^din[45]^din[46]^din[47]^din[48]^din[53]^din[54]^din[55]^din[56]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_out[3] = din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[4] = din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[5] = din[26]^din[27]^din[28]^din[29]^din[30]^din[31]^din[32]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[6] = din[57]^din[58]^din[59]^din[60]^din[61]^din[62]^din[63];
-
-endmodule // rvecc_encode_64
-
-
-module rvecc_decode_64  (
-                      input         en,
-                      input [63:0]  din,
-                      input [6:0]   ecc_in,
-                      output        ecc_error
-                      );
-
-   logic [6:0]                      ecc_check;
-
-   // Generate the ecc bits
-   assign ecc_check[0] = ecc_in[0]^din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30]^din[32]^din[34]^din[36]^din[38]^din[40]^din[42]^din[44]^din[46]^din[48]^din[50]^din[52]^din[54]^din[56]^din[57]^din[59]^din[61]^din[63];
-
-   assign ecc_check[1] = ecc_in[1]^din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31]^din[32]^din[35]^din[36]^din[39]^din[40]^din[43]^din[44]^din[47]^din[48]^din[51]^din[52]^din[55]^din[56]^din[58]^din[59]^din[62]^din[63];
-
-   assign ecc_check[2] = ecc_in[2]^din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31]^din[32]^din[37]^din[38]^din[39]^din[40]^din[45]^din[46]^din[47]^din[48]^din[53]^din[54]^din[55]^din[56]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_check[3] = ecc_in[3]^din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[4] = ecc_in[4]^din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[5] = ecc_in[5]^din[26]^din[27]^din[28]^din[29]^din[30]^din[31]^din[32]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[6] = ecc_in[6]^din[57]^din[58]^din[59]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_error = en & (ecc_check[6:0] != 0);  // all errors in the sed_ded case will be recorded as DE
-
- endmodule // rvecc_decode_64
-
-// Skywater cell
-//sky130_fd_sc_hd__dlclkp_1 CG( .CLK(clk), .GCLK(l1clk), .GATE(en_i | test_en_i));
-
-
-/*module `TEC_RV_ICG 
-  (
-   input logic SE, EN, CK,
-   output Q
-   );
-
-   logic  en_ff;
-   logic  enable;
-
-   assign      enable = EN | SE;
-
-`ifdef VERILATOR
-   always @(negedge CK) begin
-      en_ff <= enable;
-   end
-`else
-   always @(CK, enable) begin
-      if(!CK)
-        en_ff = enable;
-   end
-`endif
-   assign Q = CK & en_ff;
-
-endmodule
-*/
-
-
-module rvclkhdr
-  (
-   input  logic en,
-   input  logic clk,
-   input  logic scan_mode,
-   output logic l1clk
-   );
-
-   logic   SE;
-   assign       SE = 0;
-
-   sky130_fd_sc_hd__dlclkp_1 clkhdr( .CLK(clk), .GCLK(l1clk), .GATE(en)); /*clkhdr ( .*, .EN(en), .CK(clk), .Q(l1clk));*/
-
-endmodule // rvclkhdr
-
-
-module rvoclkhdr
-  (
-   input  logic en,
-   input  logic clk,
-   input  logic scan_mode,
-   output logic l1clk
-   );
-
-   logic   SE;
-   assign       SE = 0;
-
-
-   sky130_fd_sc_hd__dlclkp_1 clkhdr( .CLK(clk), .GCLK(l1clk), .GATE(en)); //clkhdr ( .*, .EN(en), .CK(clk), .Q(l1clk));
-
-
-endmodule
-
-
-
-
-
-
-
-
-
diff --git a/verilog/rtl/BrqRV_EB1/design/Defines/common_defines.vh b/verilog/rtl/BrqRV_EB1/design/Defines/common_defines.vh
deleted file mode 100644
index 9e581ff..0000000
--- a/verilog/rtl/BrqRV_EB1/design/Defines/common_defines.vh
+++ /dev/null
@@ -1,247 +0,0 @@
-// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-// This is an automatically generated file by hshabbir on و 08:16:54 PKT ت 08 جون 2021
-//
-// cmd:    brqrv -target=default -set build_axi4 
-//
-`define RV_ROOT "/home/hshabbir/caravel_BrqRV_EB1/verilog/rtl/BrqRV_EB1"
-`define RV_RET_STACK_SIZE 8
-`define RV_EXT_ADDRWIDTH 32
-`define RV_STERR_ROLLBACK 0
-`define SDVT_AHB 0
-`define RV_EXT_DATAWIDTH 64
-`define RV_LDERR_ROLLBACK 1
-`define CLOCK_PERIOD 100
-`define RV_ASSERT_ON 
-`define RV_BUILD_AXI4 1
-`define TOP tb_top
-`define RV_BUILD_AXI_NATIVE 1
-`define CPU_TOP `RV_TOP.brqrv
-`define RV_TOP `TOP.rvtop
-`define RV_UNUSED_REGION2 'h70000000
-`define RV_EXTERNAL_DATA 'hd0580000
-`define RV_SERIALIO 'he0580000
-`define RV_UNUSED_REGION7 'h20000000
-`define RV_UNUSED_REGION5 'h40000000
-`define RV_DEBUG_SB_MEM 'hb0580000
-`define RV_EXTERNAL_DATA_1 'hc0000000
-`define RV_UNUSED_REGION0 'h90000000
-`define RV_UNUSED_REGION3 'h60000000
-`define RV_UNUSED_REGION9 'h00000000
-`define RV_UNUSED_REGION8 'h10000000
-`define RV_UNUSED_REGION6 'h30000000
-`define RV_UNUSED_REGION1 'h80000000
-`define RV_UNUSED_REGION4 'h50000000
-`define RV_BHT_ADDR_LO 2
-`define RV_BHT_SIZE 256
-`define RV_BHT_GHR_HASH_1 
-`define RV_BHT_GHR_SIZE 7
-`define RV_BHT_ADDR_HI 8
-`define RV_BHT_HASH_STRING {hashin[7+1:2]^ghr[7-1:0]}// cf2
-`define RV_BHT_ARRAY_DEPTH 128
-`define RV_BHT_GHR_RANGE 6:0
-`define RV_INST_ACCESS_ADDR5 'h00000000
-`define RV_DATA_ACCESS_MASK3 'hffffffff
-`define RV_INST_ACCESS_MASK7 'hffffffff
-`define RV_DATA_ACCESS_MASK0 'hffffffff
-`define RV_INST_ACCESS_ADDR6 'h00000000
-`define RV_INST_ACCESS_ENABLE3 1'h0
-`define RV_INST_ACCESS_MASK6 'hffffffff
-`define RV_DATA_ACCESS_ENABLE6 1'h0
-`define RV_INST_ACCESS_ENABLE5 1'h0
-`define RV_DATA_ACCESS_ENABLE7 1'h0
-`define RV_INST_ACCESS_ENABLE1 1'h0
-`define RV_DATA_ACCESS_ADDR0 'h00000000
-`define RV_DATA_ACCESS_ADDR3 'h00000000
-`define RV_INST_ACCESS_ADDR7 'h00000000
-`define RV_INST_ACCESS_ENABLE0 1'h0
-`define RV_INST_ACCESS_MASK5 'hffffffff
-`define RV_DATA_ACCESS_MASK4 'hffffffff
-`define RV_INST_ACCESS_MASK2 'hffffffff
-`define RV_INST_ACCESS_MASK1 'hffffffff
-`define RV_INST_ACCESS_ADDR2 'h00000000
-`define RV_INST_ACCESS_ENABLE2 1'h0
-`define RV_INST_ACCESS_ADDR1 'h00000000
-`define RV_INST_ACCESS_ENABLE4 1'h0
-`define RV_DATA_ACCESS_ADDR4 'h00000000
-`define RV_DATA_ACCESS_ADDR6 'h00000000
-`define RV_DATA_ACCESS_ENABLE3 1'h0
-`define RV_INST_ACCESS_MASK0 'hffffffff
-`define RV_DATA_ACCESS_MASK7 'hffffffff
-`define RV_INST_ACCESS_MASK3 'hffffffff
-`define RV_DATA_ACCESS_ADDR5 'h00000000
-`define RV_DATA_ACCESS_MASK5 'hffffffff
-`define RV_DATA_ACCESS_ENABLE0 1'h0
-`define RV_INST_ACCESS_ADDR3 'h00000000
-`define RV_DATA_ACCESS_ADDR7 'h00000000
-`define RV_DATA_ACCESS_ENABLE5 1'h0
-`define RV_INST_ACCESS_ENABLE6 1'h0
-`define RV_DATA_ACCESS_ENABLE1 1'h0
-`define RV_INST_ACCESS_ENABLE7 1'h0
-`define RV_INST_ACCESS_ADDR0 'h00000000
-`define RV_DATA_ACCESS_MASK6 'hffffffff
-`define RV_DATA_ACCESS_MASK2 'hffffffff
-`define RV_DATA_ACCESS_MASK1 'hffffffff
-`define RV_INST_ACCESS_MASK4 'hffffffff
-`define RV_INST_ACCESS_ADDR4 'h00000000
-`define RV_DATA_ACCESS_ENABLE4 1'h0
-`define RV_DATA_ACCESS_ADDR2 'h00000000
-`define RV_DATA_ACCESS_ADDR1 'h00000000
-`define RV_DATA_ACCESS_ENABLE2 1'h0
-`define RV_ICCM_BITS 12
-`define RV_ICCM_OFFSET 10'h0ffff000
-`define RV_ICCM_SIZE_4 
-`define RV_ICCM_BANK_BITS 2
-`define RV_ICCM_ENABLE 1
-`define RV_ICCM_SADR 32'haffff000
-`define RV_ICCM_DATA_CELL ram_256x39
-`define RV_ICCM_EADR 32'hafffffff
-`define RV_ICCM_RESERVED 'h400
-`define RV_ICCM_REGION 4'ha
-`define RV_ICCM_SIZE 4
-`define RV_ICCM_BANK_HI 3
-`define RV_ICCM_BANK_INDEX_LO 4
-`define RV_ICCM_ROWS 256
-`define RV_ICCM_INDEX_BITS 8
-`define RV_ICCM_NUM_BANKS 4
-`define RV_ICCM_NUM_BANKS_4 
-`define TEC_RV_ICG clockhdr
-`define RV_LSU2DMA 0
-`define RV_LSU_NUM_NBLOAD_WIDTH 2
-`define RV_ICCM_ONLY 1
-`define RV_BITMANIP_ZBC 0
-`define RV_BITMANIP_ZBS 0
-`define RV_FPGA_OPTIMIZE 0
-`define RV_LSU_NUM_NBLOAD 4
-`define RV_DIV_BIT 3
-`define RV_DIV_NEW 1
-`define RV_DMA_BUF_DEPTH 5
-`define RV_FAST_INTERRUPT_REDIRECT 1
-`define RV_BITMANIP_ZBP 0
-`define RV_BITMANIP_ZBA 0
-`define RV_LSU_STBUF_DEPTH 4
-`define RV_BITMANIP_ZBB 0
-`define RV_BITMANIP_ZBR 0
-`define RV_BITMANIP_ZBE 0
-`define RV_TIMER_LEGAL_EN 1
-`define RV_BITMANIP_ZBF 0
-`define REGWIDTH 32
-`define RV_CONFIG_KEY 32'hdeadbeef
-`define RV_BTB_INDEX1_HI 8
-`define RV_BTB_SIZE 256
-`define RV_BTB_BTAG_SIZE 6
-`define RV_BTB_FOLD2_INDEX_HASH 0
-`define RV_BTB_INDEX3_LO 16
-`define RV_BTB_INDEX2_HI 15
-`define RV_BTB_ARRAY_DEPTH 128
-`define RV_BTB_INDEX1_LO 2
-`define RV_BTB_ADDR_LO 2
-`define RV_BTB_INDEX3_HI 22
-`define RV_BTB_ADDR_HI 8
-`define RV_BTB_TOFFSET_SIZE 12
-`define RV_BTB_INDEX2_LO 9
-`define RV_BTB_BTAG_FOLD 0
-`define RV_BTB_ENABLE 1
-`define RV_XLEN 32
-`define RV_IFU_BUS_TAG 3
-`define RV_LSU_BUS_ID 1
-`define RV_IFU_BUS_PRTY 2
-`define RV_LSU_BUS_TAG 3
-`define RV_IFU_BUS_ID 1
-`define RV_SB_BUS_PRTY 2
-`define RV_LSU_BUS_PRTY 2
-`define RV_DMA_BUS_ID 1
-`define RV_SB_BUS_ID 1
-`define RV_BUS_PRTY_DEFAULT 2'h3
-`define RV_DMA_BUS_PRTY 2
-`define RV_SB_BUS_TAG 1
-`define RV_DMA_BUS_TAG 1
-`define RV_ICACHE_TAG_NUM_BYPASS 2
-`define RV_ICACHE_STATUS_BITS 1
-`define RV_ICACHE_BEAT_ADDR_HI 5
-`define RV_ICACHE_SCND_LAST 6
-`define RV_ICACHE_TAG_LO 13
-`define RV_ICACHE_BANK_WIDTH 8
-`define RV_ICACHE_DATA_CELL ram_512x71
-`define RV_ICACHE_NUM_BYPASS_WIDTH 2
-`define RV_ICACHE_WAYPACK 1
-`define RV_ICACHE_LN_SZ 64
-`define RV_ICACHE_NUM_BEATS 8
-`define RV_ICACHE_NUM_LINES_WAY 128
-`define RV_ICACHE_NUM_LINES_BANK 64
-`define RV_ICACHE_TAG_DEPTH 128
-`define RV_ICACHE_DATA_DEPTH 512
-`define RV_ICACHE_DATA_WIDTH 64
-`define RV_ICACHE_TAG_CELL ram_128x25
-`define RV_ICACHE_NUM_BYPASS 2
-`define RV_ICACHE_FDATA_WIDTH 71
-`define RV_ICACHE_NUM_LINES 256
-`define RV_ICACHE_DATA_INDEX_LO 4
-`define RV_ICACHE_BANK_BITS 1
-`define RV_ICACHE_TAG_NUM_BYPASS_WIDTH 2
-`define RV_ICACHE_2BANKS 1
-`define RV_ICACHE_BANKS_WAY 2
-`define RV_ICACHE_BANK_LO 3
-`define RV_ICACHE_ECC 1
-`define RV_ICACHE_INDEX_HI 12
-`define RV_ICACHE_TAG_INDEX_LO 6
-`define RV_ICACHE_TAG_BYPASS_ENABLE 1
-`define RV_ICACHE_BANK_HI 3
-`define RV_ICACHE_BEAT_BITS 3
-`define RV_ICACHE_BYPASS_ENABLE 1
-`define RV_ICACHE_NUM_WAYS 2
-`define RV_ICACHE_SIZE 16
-`define RV_NMI_VEC 'h11110000
-`define RV_DCCM_EADR 32'hf0040fff
-`define RV_DCCM_SIZE 4
-`define RV_DCCM_REGION 4'hf
-`define RV_DCCM_RESERVED 'h400
-`define RV_DCCM_INDEX_BITS 8
-`define RV_DCCM_ROWS 256
-`define RV_DCCM_FDATA_WIDTH 39
-`define RV_DCCM_NUM_BANKS_4 
-`define RV_DCCM_NUM_BANKS 4
-`define RV_DCCM_BITS 12
-`define RV_DCCM_DATA_WIDTH 32
-`define RV_DCCM_SIZE_4 
-`define RV_DCCM_OFFSET 28'h40000
-`define RV_DCCM_WIDTH_BITS 2
-`define RV_DCCM_BYTE_WIDTH 4
-`define RV_DCCM_ENABLE 1
-`define RV_DCCM_ECC_WIDTH 7
-`define RV_DCCM_BANK_BITS 2
-`define RV_DCCM_DATA_CELL ram_256x39
-`define RV_DCCM_SADR 32'hf0040000
-`define RV_LSU_SB_BITS 12
-`define RV_RESET_VEC 'haffff000
-`define RV_PIC_BITS 15
-`define RV_PIC_MEIGWCTRL_OFFSET 'h4000
-`define RV_PIC_MEIGWCTRL_MASK 'h3
-`define RV_PIC_MEIGWCLR_OFFSET 'h5000
-`define RV_PIC_MEIE_MASK 'h1
-`define RV_PIC_MEIP_MASK 'h0
-`define RV_PIC_MEIPT_COUNT 31
-`define RV_PIC_MEIPL_COUNT 31
-`define RV_PIC_MEIPT_MASK 'h0
-`define RV_PIC_BASE_ADDR 32'hf00c0000
-`define RV_PIC_MEIPL_MASK 'hf
-`define RV_PIC_INT_WORDS 1
-`define RV_PIC_MPICCFG_MASK 'h1
-`define RV_PIC_MEIPT_OFFSET 'h3004
-`define RV_PIC_TOTAL_INT_PLUS1 32
-`define RV_PIC_MEIPL_OFFSET 'h0000
-`define RV_PIC_MEIE_COUNT 31
-`define RV_PIC_MEIGWCTRL_COUNT 31
-`define RV_PIC_REGION 4'hf
-`define RV_PIC_MEIGWCLR_MASK 'h0
-`define RV_PIC_SIZE 32
-`define RV_PIC_MEIE_OFFSET 'h2000
-`define RV_PIC_MPICCFG_OFFSET 'h3000
-`define RV_PIC_MPICCFG_COUNT 1
-`define RV_PIC_MEIP_OFFSET 'h1000
-`define RV_PIC_TOTAL_INT 31
-`define RV_PIC_OFFSET 10'hc0000
-`define RV_PIC_MEIGWCLR_COUNT 31
-`define RV_PIC_MEIP_COUNT 1
-`define RV_TARGET default
-`define RV_NUMIREGS 32
-`undef RV_ASSERT_ON
diff --git a/verilog/rtl/BrqRV_EB1/design/Defines/eb1_param.vh b/verilog/rtl/BrqRV_EB1/design/Defines/eb1_param.vh
deleted file mode 100644
index 77adbc4..0000000
--- a/verilog/rtl/BrqRV_EB1/design/Defines/eb1_param.vh
+++ /dev/null
@@ -1,175 +0,0 @@
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-}
-// parameter eb1_param_t pt = 2271'h0404020000E0200000000000008081000030400040081E090B040100060210C00000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC103020401C213840103C3C01000000040818428042010840830C2010281840200081002008E0C0801004040800C01002100400606810104100C080C080200810A0AFFFF00000102101800000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF8001080C080818080007806000003C043C04003E02008084021
diff --git a/verilog/rtl/BrqRV_EB1/design/Defines/eb1_pdef.vh b/verilog/rtl/BrqRV_EB1/design/Defines/eb1_pdef.vh
deleted file mode 100644
index af6de1e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/Defines/eb1_pdef.vh
+++ /dev/null
@@ -1,175 +0,0 @@
-typedef struct packed {
-	bit [7:0]      BHT_ADDR_HI;
-	bit [5:0]      BHT_ADDR_LO;
-	bit [14:0]     BHT_ARRAY_DEPTH;
-	bit [4:0]      BHT_GHR_HASH_1;
-	bit [7:0]      BHT_GHR_SIZE;
-	bit [15:0]     BHT_SIZE;
-	bit [4:0]      BITMANIP_ZBA;
-	bit [4:0]      BITMANIP_ZBB;
-	bit [4:0]      BITMANIP_ZBC;
-	bit [4:0]      BITMANIP_ZBE;
-	bit [4:0]      BITMANIP_ZBF;
-	bit [4:0]      BITMANIP_ZBP;
-	bit [4:0]      BITMANIP_ZBR;
-	bit [4:0]      BITMANIP_ZBS;
-	bit [8:0]      BTB_ADDR_HI;
-	bit [5:0]      BTB_ADDR_LO;
-	bit [12:0]     BTB_ARRAY_DEPTH;
-	bit [4:0]      BTB_BTAG_FOLD;
-	bit [8:0]      BTB_BTAG_SIZE;
-	bit [4:0]      BTB_ENABLE;
-	bit [4:0]      BTB_FOLD2_INDEX_HASH;
-	bit [4:0]      BTB_FULLYA;
-	bit [8:0]      BTB_INDEX1_HI;
-	bit [8:0]      BTB_INDEX1_LO;
-	bit [8:0]      BTB_INDEX2_HI;
-	bit [8:0]      BTB_INDEX2_LO;
-	bit [8:0]      BTB_INDEX3_HI;
-	bit [8:0]      BTB_INDEX3_LO;
-	bit [13:0]     BTB_SIZE;
-	bit [8:0]      BTB_TOFFSET_SIZE;
-	bit            BUILD_AHB_LITE;
-	bit [4:0]      BUILD_AXI4;
-	bit [4:0]      BUILD_AXI_NATIVE;
-	bit [5:0]      BUS_PRTY_DEFAULT;
-	bit [35:0]     DATA_ACCESS_ADDR0;
-	bit [35:0]     DATA_ACCESS_ADDR1;
-	bit [35:0]     DATA_ACCESS_ADDR2;
-	bit [35:0]     DATA_ACCESS_ADDR3;
-	bit [35:0]     DATA_ACCESS_ADDR4;
-	bit [35:0]     DATA_ACCESS_ADDR5;
-	bit [35:0]     DATA_ACCESS_ADDR6;
-	bit [35:0]     DATA_ACCESS_ADDR7;
-	bit [4:0]      DATA_ACCESS_ENABLE0;
-	bit [4:0]      DATA_ACCESS_ENABLE1;
-	bit [4:0]      DATA_ACCESS_ENABLE2;
-	bit [4:0]      DATA_ACCESS_ENABLE3;
-	bit [4:0]      DATA_ACCESS_ENABLE4;
-	bit [4:0]      DATA_ACCESS_ENABLE5;
-	bit [4:0]      DATA_ACCESS_ENABLE6;
-	bit [4:0]      DATA_ACCESS_ENABLE7;
-	bit [35:0]     DATA_ACCESS_MASK0;
-	bit [35:0]     DATA_ACCESS_MASK1;
-	bit [35:0]     DATA_ACCESS_MASK2;
-	bit [35:0]     DATA_ACCESS_MASK3;
-	bit [35:0]     DATA_ACCESS_MASK4;
-	bit [35:0]     DATA_ACCESS_MASK5;
-	bit [35:0]     DATA_ACCESS_MASK6;
-	bit [35:0]     DATA_ACCESS_MASK7;
-	bit [6:0]      DCCM_BANK_BITS;
-	bit [8:0]      DCCM_BITS;
-	bit [6:0]      DCCM_BYTE_WIDTH;
-	bit [9:0]      DCCM_DATA_WIDTH;
-	bit [6:0]      DCCM_ECC_WIDTH;
-	bit [4:0]      DCCM_ENABLE;
-	bit [9:0]      DCCM_FDATA_WIDTH;
-	bit [7:0]      DCCM_INDEX_BITS;
-	bit [8:0]      DCCM_NUM_BANKS;
-	bit [7:0]      DCCM_REGION;
-	bit [35:0]     DCCM_SADR;
-	bit [13:0]     DCCM_SIZE;
-	bit [5:0]      DCCM_WIDTH_BITS;
-	bit [6:0]      DIV_BIT;
-	bit [4:0]      DIV_NEW;
-	bit [6:0]      DMA_BUF_DEPTH;
-	bit [8:0]      DMA_BUS_ID;
-	bit [5:0]      DMA_BUS_PRTY;
-	bit [7:0]      DMA_BUS_TAG;
-	bit [4:0]      FAST_INTERRUPT_REDIRECT;
-	bit [4:0]      ICACHE_2BANKS;
-	bit [6:0]      ICACHE_BANK_BITS;
-	bit [6:0]      ICACHE_BANK_HI;
-	bit [5:0]      ICACHE_BANK_LO;
-	bit [7:0]      ICACHE_BANK_WIDTH;
-	bit [6:0]      ICACHE_BANKS_WAY;
-	bit [7:0]      ICACHE_BEAT_ADDR_HI;
-	bit [7:0]      ICACHE_BEAT_BITS;
-	bit [4:0]      ICACHE_BYPASS_ENABLE;
-	bit [17:0]     ICACHE_DATA_DEPTH;
-	bit [6:0]      ICACHE_DATA_INDEX_LO;
-	bit [10:0]     ICACHE_DATA_WIDTH;
-	bit [4:0]      ICACHE_ECC;
-	bit [4:0]      ICACHE_ENABLE;
-	bit [10:0]     ICACHE_FDATA_WIDTH;
-	bit [8:0]      ICACHE_INDEX_HI;
-	bit [10:0]     ICACHE_LN_SZ;
-	bit [7:0]      ICACHE_NUM_BEATS;
-	bit [7:0]      ICACHE_NUM_BYPASS;
-	bit [7:0]      ICACHE_NUM_BYPASS_WIDTH;
-	bit [6:0]      ICACHE_NUM_WAYS;
-	bit [4:0]      ICACHE_ONLY;
-	bit [7:0]      ICACHE_SCND_LAST;
-	bit [12:0]     ICACHE_SIZE;
-	bit [6:0]      ICACHE_STATUS_BITS;
-	bit [4:0]      ICACHE_TAG_BYPASS_ENABLE;
-	bit [16:0]     ICACHE_TAG_DEPTH;
-	bit [6:0]      ICACHE_TAG_INDEX_LO;
-	bit [8:0]      ICACHE_TAG_LO;
-	bit [7:0]      ICACHE_TAG_NUM_BYPASS;
-	bit [7:0]      ICACHE_TAG_NUM_BYPASS_WIDTH;
-	bit [4:0]      ICACHE_WAYPACK;
-	bit [6:0]      ICCM_BANK_BITS;
-	bit [8:0]      ICCM_BANK_HI;
-	bit [8:0]      ICCM_BANK_INDEX_LO;
-	bit [8:0]      ICCM_BITS;
-	bit [4:0]      ICCM_ENABLE;
-	bit [4:0]      ICCM_ICACHE;
-	bit [7:0]      ICCM_INDEX_BITS;
-	bit [8:0]      ICCM_NUM_BANKS;
-	bit [4:0]      ICCM_ONLY;
-	bit [7:0]      ICCM_REGION;
-	bit [35:0]     ICCM_SADR;
-	bit [13:0]     ICCM_SIZE;
-	bit [4:0]      IFU_BUS_ID;
-	bit [5:0]      IFU_BUS_PRTY;
-	bit [7:0]      IFU_BUS_TAG;
-	bit [35:0]     INST_ACCESS_ADDR0;
-	bit [35:0]     INST_ACCESS_ADDR1;
-	bit [35:0]     INST_ACCESS_ADDR2;
-	bit [35:0]     INST_ACCESS_ADDR3;
-	bit [35:0]     INST_ACCESS_ADDR4;
-	bit [35:0]     INST_ACCESS_ADDR5;
-	bit [35:0]     INST_ACCESS_ADDR6;
-	bit [35:0]     INST_ACCESS_ADDR7;
-	bit [4:0]      INST_ACCESS_ENABLE0;
-	bit [4:0]      INST_ACCESS_ENABLE1;
-	bit [4:0]      INST_ACCESS_ENABLE2;
-	bit [4:0]      INST_ACCESS_ENABLE3;
-	bit [4:0]      INST_ACCESS_ENABLE4;
-	bit [4:0]      INST_ACCESS_ENABLE5;
-	bit [4:0]      INST_ACCESS_ENABLE6;
-	bit [4:0]      INST_ACCESS_ENABLE7;
-	bit [35:0]     INST_ACCESS_MASK0;
-	bit [35:0]     INST_ACCESS_MASK1;
-	bit [35:0]     INST_ACCESS_MASK2;
-	bit [35:0]     INST_ACCESS_MASK3;
-	bit [35:0]     INST_ACCESS_MASK4;
-	bit [35:0]     INST_ACCESS_MASK5;
-	bit [35:0]     INST_ACCESS_MASK6;
-	bit [35:0]     INST_ACCESS_MASK7;
-	bit [4:0]      LOAD_TO_USE_PLUS1;
-	bit [4:0]      LSU2DMA;
-	bit [4:0]      LSU_BUS_ID;
-	bit [5:0]      LSU_BUS_PRTY;
-	bit [7:0]      LSU_BUS_TAG;
-	bit [8:0]      LSU_NUM_NBLOAD;
-	bit [6:0]      LSU_NUM_NBLOAD_WIDTH;
-	bit [8:0]      LSU_SB_BITS;
-	bit [7:0]      LSU_STBUF_DEPTH;
-	bit [4:0]      NO_ICCM_NO_ICACHE;
-	bit [4:0]      PIC_2CYCLE;
-	bit [35:0]     PIC_BASE_ADDR;
-	bit [8:0]      PIC_BITS;
-	bit [7:0]      PIC_INT_WORDS;
-	bit [7:0]      PIC_REGION;
-	bit [12:0]     PIC_SIZE;
-	bit [11:0]     PIC_TOTAL_INT;
-	bit [12:0]     PIC_TOTAL_INT_PLUS1;
-	bit [7:0]      RET_STACK_SIZE;
-	bit [4:0]      SB_BUS_ID;
-	bit [5:0]      SB_BUS_PRTY;
-	bit [7:0]      SB_BUS_TAG;
-	bit [4:0]      TIMER_LEGAL_EN;
-} eb1_param_t;
-
diff --git a/verilog/rtl/BrqRV_EB1/design/Defines/pd_defines.vh b/verilog/rtl/BrqRV_EB1/design/Defines/pd_defines.vh
deleted file mode 100644
index 0b9763c..0000000
--- a/verilog/rtl/BrqRV_EB1/design/Defines/pd_defines.vh
+++ /dev/null
@@ -1,11 +0,0 @@
-// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-// This is an automatically generated file by hshabbir on و 08:16:54 PKT ت 08 جون 2021
-//
-// cmd:    brqrv -target=default -set build_axi4 
-//
-
-`include "common_defines.vh"
-`undef RV_ASSERT_ON
-`undef TEC_RV_ICG
-`define TEC_RV_ICG sky130_fd_sc_hd__dlclkp_1
-`define RV_PHYSICAL 1
diff --git a/verilog/rtl/BrqRV_EB1/design/ahb_to_axi4.sv b/verilog/rtl/BrqRV_EB1/design/ahb_to_axi4.sv
deleted file mode 100644
index 190ed8b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/ahb_to_axi4.sv
+++ /dev/null
@@ -1,289 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-// $Id$
-//
-// Owner:
-// Function: AHB to AXI4 Bridge
-// Comments:
-//
-//********************************************************************************
-module ahb_to_axi4
-import eb1_pkg::*;
-#(
-   TAG = 1,
-   `include "eb1_param.vh"
-)
-//   ,TAG  = 1)
-(
-   input                   clk,
-   input                   rst_l,
-   input                   scan_mode,
-   input                   bus_clk_en,
-   input                   clk_override,
-
-   // AXI signals
-   // AXI Write Channels
-   output logic            axi_awvalid,
-   input  logic            axi_awready,
-   output logic [TAG-1:0]  axi_awid,
-   output logic [31:0]     axi_awaddr,
-   output logic [2:0]      axi_awsize,
-   output logic [2:0]      axi_awprot,
-   output logic [7:0]      axi_awlen,
-   output logic [1:0]      axi_awburst,
-
-   output logic            axi_wvalid,
-   input  logic            axi_wready,
-   output logic [63:0]     axi_wdata,
-   output logic [7:0]      axi_wstrb,
-   output logic            axi_wlast,
-
-   input  logic            axi_bvalid,
-   output logic            axi_bready,
-   input  logic [1:0]      axi_bresp,
-   input  logic [TAG-1:0]  axi_bid,
-
-   // AXI Read Channels
-   output logic            axi_arvalid,
-   input  logic            axi_arready,
-   output logic [TAG-1:0]  axi_arid,
-   output logic [31:0]     axi_araddr,
-   output logic [2:0]      axi_arsize,
-   output logic [2:0]      axi_arprot,
-   output logic [7:0]      axi_arlen,
-   output logic [1:0]      axi_arburst,
-
-   input  logic            axi_rvalid,
-   output logic            axi_rready,
-   input  logic [TAG-1:0]  axi_rid,
-   input  logic [63:0]     axi_rdata,
-   input  logic [1:0]      axi_rresp,
-
-   // AHB-Lite signals
-   input logic [31:0]      ahb_haddr,     // ahb bus address
-   input logic [2:0]       ahb_hburst,    // tied to 0
-   input logic             ahb_hmastlock, // tied to 0
-   input logic [3:0]       ahb_hprot,     // tied to 4'b0011
-   input logic [2:0]       ahb_hsize,     // size of bus transaction (possible values 0,1,2,3)
-   input logic [1:0]       ahb_htrans,    // Transaction type (possible values 0,2 only right now)
-   input logic             ahb_hwrite,    // ahb bus write
-   input logic [63:0]      ahb_hwdata,    // ahb bus write data
-   input logic             ahb_hsel,      // this slave was selected
-   input logic             ahb_hreadyin,  // previous hready was accepted or not
-
-   output logic [63:0]      ahb_hrdata,      // ahb bus read data
-   output logic             ahb_hreadyout,   // slave ready to accept transaction
-   output logic             ahb_hresp        // slave response (high indicates erro)
-
-);
-
-   logic [7:0]       master_wstrb;
-
- typedef enum logic [1:0] {   IDLE   = 2'b00,    // Nothing in the buffer. No commands yet recieved
-                              WR     = 2'b01,    // Write Command recieved
-                              RD     = 2'b10,    // Read Command recieved
-                              PEND   = 2'b11     // Waiting on Read Data from core
-                            } state_t;
-   state_t      buf_state, buf_nxtstate;
-   logic        buf_state_en;
-
-   // Buffer signals (one entry buffer)
-   logic                    buf_read_error_in, buf_read_error;
-   logic [63:0]             buf_rdata;
-
-   logic                    ahb_hready;
-   logic                    ahb_hready_q;
-   logic [1:0]              ahb_htrans_in, ahb_htrans_q;
-   logic [2:0]              ahb_hsize_q;
-   logic                    ahb_hwrite_q;
-   logic [31:0]             ahb_haddr_q;
-   logic [63:0]             ahb_hwdata_q;
-   logic                    ahb_hresp_q;
-
-    //Miscellaneous signals
-   logic                    ahb_addr_in_dccm, ahb_addr_in_iccm, ahb_addr_in_pic;
-   logic                    ahb_addr_in_dccm_region_nc, ahb_addr_in_iccm_region_nc, ahb_addr_in_pic_region_nc;
-   // signals needed for the read data coming back from the core and to block any further commands as AHB is a blocking bus
-   logic                    buf_rdata_en;
-
-   logic                    ahb_addr_clk_en, buf_rdata_clk_en;
-   logic                    bus_clk, ahb_addr_clk, buf_rdata_clk;
-   // Command buffer is the holding station where we convert to AXI and send to core
-   logic                    cmdbuf_wr_en, cmdbuf_rst;
-   logic                    cmdbuf_full;
-   logic                    cmdbuf_vld, cmdbuf_write;
-   logic [1:0]              cmdbuf_size;
-   logic [7:0]              cmdbuf_wstrb;
-   logic [31:0]             cmdbuf_addr;
-   logic [63:0]             cmdbuf_wdata;
-
-// FSM to control the bus states and when to block the hready and load the command buffer
-   always_comb begin
-      buf_nxtstate      = IDLE;
-      buf_state_en      = 1'b0;
-      buf_rdata_en      = 1'b0;              // signal to load the buffer when the core sends read data back
-      buf_read_error_in = 1'b0;              // signal indicating that an error came back with the read from the core
-      cmdbuf_wr_en      = 1'b0;              // all clear from the gasket to load the buffer with the command for reads, command/dat for writes
-      case (buf_state)
-         IDLE: begin  // No commands recieved
-                  buf_nxtstate      = ahb_hwrite ? WR : RD;
-                  buf_state_en      = ahb_hready & ahb_htrans[1] & ahb_hsel;                 // only transition on a valid hrtans
-          end
-         WR: begin // Write command recieved last cycle
-                  buf_nxtstate      = (ahb_hresp | (ahb_htrans[1:0] == 2'b0) | ~ahb_hsel) ? IDLE : ahb_hwrite  ? WR : RD;
-                  buf_state_en      = (~cmdbuf_full | ahb_hresp) ;
-                  cmdbuf_wr_en      = ~cmdbuf_full & ~(ahb_hresp | ((ahb_htrans[1:0] == 2'b01) & ahb_hsel));   // Dont send command to the buffer in case of an error or when the master is not ready with the data now.
-         end
-         RD: begin // Read command recieved last cycle.
-                 buf_nxtstate      = ahb_hresp ? IDLE :PEND;                                       // If error go to idle, else wait for read data
-                 buf_state_en      = (~cmdbuf_full | ahb_hresp);                                   // only when command can go, or if its an error
-                 cmdbuf_wr_en      = ~ahb_hresp & ~cmdbuf_full;                                    // send command only when no error
-         end
-         PEND: begin // Read Command has been sent. Waiting on Data.
-                 buf_nxtstate      = IDLE;                                                          // go back for next command and present data next cycle
-                 buf_state_en      = axi_rvalid & ~cmdbuf_write;                                    // read data is back
-                 buf_rdata_en      = buf_state_en;                                                  // buffer the read data coming back from core
-                 buf_read_error_in = buf_state_en & |axi_rresp[1:0];                                // buffer error flag if return has Error ( ECC )
-         end
-     endcase
-   end // always_comb begin
-
-    rvdffs_fpga #($bits(state_t)) state_reg (.*, .din(buf_nxtstate), .dout({buf_state}), .en(buf_state_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk));
-
-   assign master_wstrb[7:0]   = ({8{ahb_hsize_q[2:0] == 3'b0}}  & (8'b1    << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b1}}  & (8'b11   << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b10}} & (8'b1111 << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b11}} & 8'b1111_1111);
-
-   // AHB signals
-   assign ahb_hreadyout       = ahb_hresp ? (ahb_hresp_q & ~ahb_hready_q) :
-                                         ((~cmdbuf_full | (buf_state == IDLE)) & ~(buf_state == RD | buf_state == PEND)  & ~buf_read_error);
-
-   assign ahb_hready          = ahb_hreadyout & ahb_hreadyin;
-   assign ahb_htrans_in[1:0]  = {2{ahb_hsel}} & ahb_htrans[1:0];
-   assign ahb_hrdata[63:0]    = buf_rdata[63:0];
-   assign ahb_hresp        = ((ahb_htrans_q[1:0] != 2'b0) & (buf_state != IDLE)  &
-
-                             ((~(ahb_addr_in_dccm | ahb_addr_in_iccm)) |                                                                                   // request not for ICCM or DCCM
-                             ((ahb_addr_in_iccm | (ahb_addr_in_dccm &  ahb_hwrite_q)) & ~((ahb_hsize_q[1:0] == 2'b10) | (ahb_hsize_q[1:0] == 2'b11))) |    // ICCM Rd/Wr OR DCCM Wr not the right size
-                             ((ahb_hsize_q[2:0] == 3'h1) & ahb_haddr_q[0])   |                                                                             // HW size but unaligned
-                             ((ahb_hsize_q[2:0] == 3'h2) & (|ahb_haddr_q[1:0])) |                                                                          // W size but unaligned
-                             ((ahb_hsize_q[2:0] == 3'h3) & (|ahb_haddr_q[2:0])))) |                                                                        // DW size but unaligned
-                             buf_read_error |                                                                                                              // Read ECC error
-                             (ahb_hresp_q & ~ahb_hready_q);
-
-   // Buffer signals - needed for the read data and ECC error response
-   rvdff_fpga  #(.WIDTH(64)) buf_rdata_ff     (.din(axi_rdata[63:0]),   .dout(buf_rdata[63:0]), .clk(buf_rdata_clk), .clken(buf_rdata_clk_en), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))  buf_read_error_ff(.din(buf_read_error_in), .dout(buf_read_error),  .clk(bus_clk),       .clken(bus_clk_en),       .rawclk(clk), .*);          // buf_read_error will be high only one cycle
-
-   // All the Master signals are captured before presenting it to the command buffer. We check for Hresp before sending it to the cmd buffer.
-   rvdff_fpga #(.WIDTH(1))  hresp_ff  (.din(ahb_hresp),          .dout(ahb_hresp_q),       .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hready_ff (.din(ahb_hready),         .dout(ahb_hready_q),      .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(2))  htrans_ff (.din(ahb_htrans_in[1:0]), .dout(ahb_htrans_q[1:0]), .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(3))  hsize_ff  (.din(ahb_hsize[2:0]),     .dout(ahb_hsize_q[2:0]),  .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hwrite_ff (.din(ahb_hwrite),         .dout(ahb_hwrite_q),      .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(32)) haddr_ff  (.din(ahb_haddr[31:0]),    .dout(ahb_haddr_q[31:0]), .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-
-   // Address check  dccm
-   rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                  .CCM_SIZE(pt.DCCM_SIZE)) addr_dccm_rangecheck (
-      .addr(ahb_haddr_q[31:0]),
-      .in_range(ahb_addr_in_dccm),
-      .in_region(ahb_addr_in_dccm_region_nc)
-   );
-
-   // Address check  iccm
-   if (pt.ICCM_ENABLE == 1) begin: GenICCM
-      rvrangecheck #(.CCM_SADR(pt.ICCM_SADR),
-                     .CCM_SIZE(pt.ICCM_SIZE)) addr_iccm_rangecheck (
-         .addr(ahb_haddr_q[31:0]),
-         .in_range(ahb_addr_in_iccm),
-         .in_region(ahb_addr_in_iccm_region_nc)
-      );
-   end else begin: GenNoICCM
-      assign ahb_addr_in_iccm = '0;
-      assign ahb_addr_in_iccm_region_nc = '0;
-   end
-
-   // PIC memory address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) addr_pic_rangecheck (
-      .addr(ahb_haddr_q[31:0]),
-      .in_range(ahb_addr_in_pic),
-      .in_region(ahb_addr_in_pic_region_nc)
-   );
-
-   // Command Buffer - Holding for the commands to be sent for the AXI. It will be converted to the AXI signals.
-   assign cmdbuf_rst         = (((axi_awvalid & axi_awready) | (axi_arvalid & axi_arready)) & ~cmdbuf_wr_en) | (ahb_hresp & ~cmdbuf_write);
-   assign cmdbuf_full        = (cmdbuf_vld & ~((axi_awvalid & axi_awready) | (axi_arvalid & axi_arready)));
-
-   rvdffsc_fpga #(.WIDTH(1))  cmdbuf_vldff      (.din(1'b1),              .dout(cmdbuf_vld),         .en(cmdbuf_wr_en), .clear(cmdbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(1))  cmdbuf_writeff    (.din(ahb_hwrite_q),      .dout(cmdbuf_write),       .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(2))  cmdbuf_sizeff     (.din(ahb_hsize_q[1:0]),  .dout(cmdbuf_size[1:0]),   .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(8))  cmdbuf_wstrbff    (.din(master_wstrb[7:0]), .dout(cmdbuf_wstrb[7:0]),  .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32)) cmdbuf_addrff     (.din(ahb_haddr_q[31:0]), .dout(cmdbuf_addr[31:0]),  .en(cmdbuf_wr_en & bus_clk_en),        .clk(clk), .*);
-   rvdffe       #(.WIDTH(64)) cmdbuf_wdataff    (.din(ahb_hwdata[63:0]),  .dout(cmdbuf_wdata[63:0]), .en(cmdbuf_wr_en & bus_clk_en),        .clk(clk), .*);
-
-   // AXI Write Command Channel
-   assign axi_awvalid           = cmdbuf_vld & cmdbuf_write;
-   assign axi_awid[TAG-1:0]     = '0;
-   assign axi_awaddr[31:0]      = cmdbuf_addr[31:0];
-   assign axi_awsize[2:0]       = {1'b0, cmdbuf_size[1:0]};
-   assign axi_awprot[2:0]       = 3'b0;
-   assign axi_awlen[7:0]        = '0;
-   assign axi_awburst[1:0]      = 2'b01;
-   // AXI Write Data Channel - This is tied to the command channel as we only write the command buffer once we have the data.
-   assign axi_wvalid            = cmdbuf_vld & cmdbuf_write;
-   assign axi_wdata[63:0]       = cmdbuf_wdata[63:0];
-   assign axi_wstrb[7:0]        = cmdbuf_wstrb[7:0];
-   assign axi_wlast             = 1'b1;
-  // AXI Write Response - Always ready. AHB does not require a write response.
-   assign axi_bready            = 1'b1;
-   // AXI Read Channels
-   assign axi_arvalid           = cmdbuf_vld & ~cmdbuf_write;
-   assign axi_arid[TAG-1:0]     = '0;
-   assign axi_araddr[31:0]      = cmdbuf_addr[31:0];
-   assign axi_arsize[2:0]       = {1'b0, cmdbuf_size[1:0]};
-   assign axi_arprot            = 3'b0;
-   assign axi_arlen[7:0]        = '0;
-   assign axi_arburst[1:0]      = 2'b01;
-   // AXI Read Response Channel - Always ready as AHB reads are blocking and the the buffer is available for the read coming back always.
-   assign axi_rready            = 1'b1;
-
-   // Clock header logic
-   assign ahb_addr_clk_en = bus_clk_en & (ahb_hready & ahb_htrans[1]);
-   assign buf_rdata_clk_en    = bus_clk_en & buf_rdata_en;
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign bus_clk = 1'b0;
-   assign ahb_addr_clk = 1'b0;
-   assign buf_rdata_clk = 1'b0;
-`else
-   rvclkhdr bus_cgc       (.en(bus_clk_en),       .l1clk(bus_clk),       .*);
-   rvclkhdr ahb_addr_cgc  (.en(ahb_addr_clk_en),  .l1clk(ahb_addr_clk),  .*);
-   rvclkhdr buf_rdata_cgc (.en(buf_rdata_clk_en), .l1clk(buf_rdata_clk), .*);
-`endif
-
-`ifdef RV_ASSERT_ON
-   property ahb_error_protocol;
-      @(posedge bus_clk) (ahb_hready & ahb_hresp) |-> (~$past(ahb_hready) & $past(ahb_hresp));
-   endproperty
-   assert_ahb_error_protocol: assert property (ahb_error_protocol) else
-      $display("Bus Error with hReady isn't preceded with Bus Error without hready");
-
-`endif
-
-endmodule // ahb_to_axi4
\ No newline at end of file
diff --git a/verilog/rtl/BrqRV_EB1/design/axi4_to_ahb.sv b/verilog/rtl/BrqRV_EB1/design/axi4_to_ahb.sv
deleted file mode 100644
index 18e5313..0000000
--- a/verilog/rtl/BrqRV_EB1/design/axi4_to_ahb.sv
+++ /dev/null
@@ -1,477 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Owner:
-// Function: AXI4 -> AHB Bridge
-// Comments:
-//
-//********************************************************************************
-module axi4_to_ahb
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
-,parameter TAG  = 1) (
-
-   input                   clk,
-   input                   free_clk,
-   input                   rst_l,
-   input                   scan_mode,
-   input                   bus_clk_en,
-   input                   clk_override,
-   input                   dec_tlu_force_halt,
-
-   // AXI signals
-   // AXI Write Channels
-   input  logic            axi_awvalid,
-   output logic            axi_awready,
-   input  logic [TAG-1:0]  axi_awid,
-   input  logic [31:0]     axi_awaddr,
-   input  logic [2:0]      axi_awsize,
-   input  logic [2:0]      axi_awprot,
-
-   input  logic            axi_wvalid,
-   output logic            axi_wready,
-   input  logic [63:0]     axi_wdata,
-   input  logic [7:0]      axi_wstrb,
-   input  logic            axi_wlast,
-
-   output logic            axi_bvalid,
-   input  logic            axi_bready,
-   output logic [1:0]      axi_bresp,
-   output logic [TAG-1:0]  axi_bid,
-
-   // AXI Read Channels
-   input  logic            axi_arvalid,
-   output logic            axi_arready,
-   input  logic [TAG-1:0]  axi_arid,
-   input  logic [31:0]     axi_araddr,
-   input  logic [2:0]      axi_arsize,
-   input  logic [2:0]      axi_arprot,
-
-   output logic            axi_rvalid,
-   input  logic            axi_rready,
-   output logic [TAG-1:0]  axi_rid,
-   output logic [63:0]     axi_rdata,
-   output logic [1:0]      axi_rresp,
-   output logic            axi_rlast,
-
-   // AHB-Lite signals
-   output logic [31:0]     ahb_haddr,       // ahb bus address
-   output logic [2:0]      ahb_hburst,      // tied to 0
-   output logic            ahb_hmastlock,   // tied to 0
-   output logic [3:0]      ahb_hprot,       // tied to 4'b0011
-   output logic [2:0]      ahb_hsize,       // size of bus transaction (possible values 0,1,2,3)
-   output logic [1:0]      ahb_htrans,      // Transaction type (possible values 0,2 only right now)
-   output logic            ahb_hwrite,      // ahb bus write
-   output logic [63:0]     ahb_hwdata,      // ahb bus write data
-
-   input logic [63:0]      ahb_hrdata,      // ahb bus read data
-   input logic             ahb_hready,      // slave ready to accept transaction
-   input logic             ahb_hresp        // slave response (high indicates erro)
-
-);
-
-   localparam ID   = 1;
-   localparam PRTY = 1;
-   typedef enum logic [2:0] {IDLE=3'b000, CMD_RD=3'b001, CMD_WR=3'b010, DATA_RD=3'b011, DATA_WR=3'b100, DONE=3'b101, STREAM_RD=3'b110, STREAM_ERR_RD=3'b111} state_t;
-   state_t buf_state, buf_nxtstate;
-
-   logic             slave_valid;
-   logic             slave_ready;
-   logic [TAG-1:0]   slave_tag;
-   logic [63:0]      slave_rdata;
-   logic [3:0]       slave_opc;
-
-   logic             wrbuf_en, wrbuf_data_en;
-   logic             wrbuf_cmd_sent, wrbuf_rst;
-   logic             wrbuf_vld;
-   logic             wrbuf_data_vld;
-   logic [TAG-1:0]   wrbuf_tag;
-   logic [2:0]       wrbuf_size;
-   logic [31:0]      wrbuf_addr;
-   logic [63:0]      wrbuf_data;
-   logic [7:0]       wrbuf_byteen;
-
-   logic             master_valid;
-   logic             master_ready;
-   logic [TAG-1:0]   master_tag;
-   logic [31:0]      master_addr;
-   logic [63:0]      master_wdata;
-   logic [2:0]       master_size;
-   logic [2:0]       master_opc;
-   logic [7:0]       master_byteen;
-
-   // Buffer signals (one entry buffer)
-   logic [31:0]                buf_addr;
-   logic [1:0]                 buf_size;
-   logic                       buf_write;
-   logic [7:0]                 buf_byteen;
-   logic                       buf_aligned;
-   logic [63:0]                buf_data;
-   logic [TAG-1:0]             buf_tag;
-
-   //Miscellaneous signals
-   logic                       buf_rst;
-   logic [TAG-1:0]             buf_tag_in;
-   logic [31:0]                buf_addr_in;
-   logic [7:0]                 buf_byteen_in;
-   logic [63:0]                buf_data_in;
-   logic                       buf_write_in;
-   logic                       buf_aligned_in;
-   logic [2:0]                 buf_size_in;
-
-   logic                       buf_state_en;
-   logic                       buf_wr_en;
-   logic                       buf_data_wr_en;
-   logic                       slvbuf_error_en;
-   logic                       wr_cmd_vld;
-
-   logic                       cmd_done_rst, cmd_done, cmd_doneQ;
-   logic                       trxn_done;
-   logic [2:0]                 buf_cmd_byte_ptr, buf_cmd_byte_ptrQ, buf_cmd_nxtbyte_ptr;
-   logic                       buf_cmd_byte_ptr_en;
-   logic                       found;
-
-   logic                       slave_valid_pre;
-   logic                       ahb_hready_q;
-   logic                       ahb_hresp_q;
-   logic [1:0]                 ahb_htrans_q;
-   logic                       ahb_hwrite_q;
-   logic [63:0]                ahb_hrdata_q;
-
-
-   logic                       slvbuf_write;
-   logic                       slvbuf_error;
-   logic [TAG-1:0]             slvbuf_tag;
-
-   logic                       slvbuf_error_in;
-   logic                       slvbuf_wr_en;
-   logic                       bypass_en;
-   logic                       rd_bypass_idle;
-
-   logic                       last_addr_en;
-   logic [31:0]                last_bus_addr;
-
-   // Clocks
-   logic                       buf_clken;
-   logic                       ahbm_data_clken;
-
-   logic                       buf_clk;
-   logic                       bus_clk;
-   logic                       ahbm_data_clk;
-
-   logic                       dec_tlu_force_halt_bus, dec_tlu_force_halt_bus_ns, dec_tlu_force_halt_bus_q;
-
-   // Function to get the length from byte enable
-   function automatic logic [1:0] get_write_size;
-      input logic [7:0] byteen;
-
-      logic [1:0]       size;
-
-      size[1:0] = (2'b11 & {2{(byteen[7:0] == 8'hff)}}) |
-                  (2'b10 & {2{((byteen[7:0] == 8'hf0) | (byteen[7:0] == 8'h0f))}}) |
-                  (2'b01 & {2{((byteen[7:0] == 8'hc0) | (byteen[7:0] == 8'h30) | (byteen[7:0] == 8'h0c) | (byteen[7:0] == 8'h03))}});
-
-      return size[1:0];
-   endfunction // get_write_size
-
-   // Function to get the length from byte enable
-   function automatic logic [2:0] get_write_addr;
-      input logic [7:0] byteen;
-
-      logic [2:0]       addr;
-
-      addr[2:0] = (3'h0 & {3{((byteen[7:0] == 8'hff) | (byteen[7:0] == 8'h0f) | (byteen[7:0] == 8'h03))}}) |
-                  (3'h2 & {3{(byteen[7:0] == 8'h0c)}})                                                     |
-                  (3'h4 & {3{((byteen[7:0] == 8'hf0) | (byteen[7:0] == 8'h03))}})                          |
-                  (3'h6 & {3{(byteen[7:0] == 8'hc0)}});
-
-      return addr[2:0];
-   endfunction // get_write_addr
-
-   // Function to get the next byte pointer
-   function automatic logic [2:0] get_nxtbyte_ptr (logic [2:0] current_byte_ptr, logic [7:0] byteen, logic get_next);
-      logic [2:0] start_ptr;
-      logic       found;
-      found = '0;
-      //get_nxtbyte_ptr[2:0] = current_byte_ptr[2:0];
-      start_ptr[2:0] = get_next ? (current_byte_ptr[2:0] + 3'b1) : current_byte_ptr[2:0];
-      for (int j=0; j<8; j++) begin
-         if (~found) begin
-            get_nxtbyte_ptr[2:0] = 3'(j);
-            found |= (byteen[j] & (3'(j) >= start_ptr[2:0])) ;
-         end
-      end
-   endfunction // get_nextbyte_ptr
-
-   // Create bus synchronized version of force halt
-   assign dec_tlu_force_halt_bus = dec_tlu_force_halt | dec_tlu_force_halt_bus_q;
-   assign dec_tlu_force_halt_bus_ns = ~bus_clk_en & dec_tlu_force_halt_bus;
-   rvdff  #(.WIDTH(1))   force_halt_busff(.din(dec_tlu_force_halt_bus_ns), .dout(dec_tlu_force_halt_bus_q), .clk(free_clk), .*);
-
-   // Write buffer
-   assign wrbuf_en       = axi_awvalid & axi_awready & master_ready;
-   assign wrbuf_data_en  = axi_wvalid & axi_wready & master_ready;
-   assign wrbuf_cmd_sent = master_valid & master_ready & (master_opc[2:1] == 2'b01);
-   assign wrbuf_rst      = (wrbuf_cmd_sent & ~wrbuf_en) | dec_tlu_force_halt_bus;
-
-   assign axi_awready = ~(wrbuf_vld & ~wrbuf_cmd_sent) & master_ready;
-   assign axi_wready  = ~(wrbuf_data_vld & ~wrbuf_cmd_sent) & master_ready;
-   assign axi_arready = ~(wrbuf_vld & wrbuf_data_vld) & master_ready;
-   assign axi_rlast   = 1'b1;
-
-   assign wr_cmd_vld          = (wrbuf_vld & wrbuf_data_vld);
-   assign master_valid        = wr_cmd_vld | axi_arvalid;
-   assign master_tag[TAG-1:0] = wr_cmd_vld ? wrbuf_tag[TAG-1:0] : axi_arid[TAG-1:0];
-   assign master_opc[2:0]     = wr_cmd_vld ? 3'b011 : 3'b0;
-   assign master_addr[31:0]   = wr_cmd_vld ? wrbuf_addr[31:0] : axi_araddr[31:0];
-   assign master_size[2:0]    = wr_cmd_vld ? wrbuf_size[2:0] : axi_arsize[2:0];
-   assign master_byteen[7:0]  = wrbuf_byteen[7:0];
-   assign master_wdata[63:0]  = wrbuf_data[63:0];
-
-   // AXI response channel signals
-   assign axi_bvalid       = slave_valid & slave_ready & slave_opc[3];
-   assign axi_bresp[1:0]   = slave_opc[0] ? 2'b10 : (slave_opc[1] ? 2'b11 : 2'b0);
-   assign axi_bid[TAG-1:0] = slave_tag[TAG-1:0];
-
-   assign axi_rvalid       = slave_valid & slave_ready & (slave_opc[3:2] == 2'b0);
-   assign axi_rresp[1:0]   = slave_opc[0] ? 2'b10 : (slave_opc[1] ? 2'b11 : 2'b0);
-   assign axi_rid[TAG-1:0] = slave_tag[TAG-1:0];
-   assign axi_rdata[63:0]  = slave_rdata[63:0];
-   assign slave_ready        = axi_bready & axi_rready;
-
- // FIFO state machine
-   always_comb begin
-      buf_nxtstate   = IDLE;
-      buf_state_en   = 1'b0;
-      buf_wr_en      = 1'b0;
-      buf_data_wr_en = 1'b0;
-      slvbuf_error_in   = 1'b0;
-      slvbuf_error_en   = 1'b0;
-      buf_write_in   = 1'b0;
-      cmd_done       = 1'b0;
-      trxn_done      = 1'b0;
-      buf_cmd_byte_ptr_en = 1'b0;
-      buf_cmd_byte_ptr[2:0] = '0;
-      slave_valid_pre   = 1'b0;
-      master_ready   = 1'b0;
-      ahb_htrans[1:0]  = 2'b0;
-      slvbuf_wr_en     = 1'b0;
-      bypass_en        = 1'b0;
-      rd_bypass_idle   = 1'b0;
-
-      case (buf_state)
-         IDLE: begin
-                  master_ready   = 1'b1;
-                  buf_write_in = (master_opc[2:1] == 2'b01);
-                  buf_nxtstate = buf_write_in ? CMD_WR : CMD_RD;
-                  buf_state_en = master_valid & master_ready;
-                  buf_wr_en    = buf_state_en;
-                  buf_data_wr_en = buf_state_en & (buf_nxtstate == CMD_WR);
-                  buf_cmd_byte_ptr_en   = buf_state_en;
-                  buf_cmd_byte_ptr[2:0] = buf_write_in ? get_nxtbyte_ptr(3'b0,buf_byteen_in[7:0],1'b0) : master_addr[2:0];
-                  bypass_en       = buf_state_en;
-                  rd_bypass_idle  = bypass_en & (buf_nxtstate == CMD_RD);
-                  ahb_htrans[1:0] = {2{bypass_en}} & 2'b10;
-          end
-         CMD_RD: begin
-                  buf_nxtstate    = (master_valid & (master_opc[2:0] == 3'b000))? STREAM_RD : DATA_RD;
-                  buf_state_en    = ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) & ~ahb_hwrite_q;
-                  cmd_done        = buf_state_en & ~master_valid;
-                  slvbuf_wr_en    = buf_state_en;
-                  master_ready  = buf_state_en & (buf_nxtstate == STREAM_RD);
-                  buf_wr_en       = master_ready;
-                  bypass_en       = master_ready & master_valid;
-                  buf_cmd_byte_ptr[2:0] = bypass_en ? master_addr[2:0] : buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~buf_state_en | bypass_en}};
-         end
-         STREAM_RD: begin
-                  master_ready  =  (ahb_hready_q & ~ahb_hresp_q) & ~(master_valid & master_opc[2:1] == 2'b01);
-                  buf_wr_en       = (master_valid & master_ready & (master_opc[2:0] == 3'b000)); // update the fifo if we are streaming the read commands
-                  buf_nxtstate    = ahb_hresp_q ? STREAM_ERR_RD : (buf_wr_en ? STREAM_RD : DATA_RD);            // assuming that the master accpets the slave response right away.
-                  buf_state_en    = (ahb_hready_q | ahb_hresp_q);
-                  buf_data_wr_en  = buf_state_en;
-                  slvbuf_error_in = ahb_hresp_q;
-                  slvbuf_error_en = buf_state_en;
-                  slave_valid_pre  = buf_state_en & ~ahb_hresp_q;             // send a response right away if we are not going through an error response.
-                  cmd_done        = buf_state_en & ~master_valid;                     // last one of the stream should not send a htrans
-                  bypass_en       = master_ready & master_valid & (buf_nxtstate == STREAM_RD) & buf_state_en;
-                  buf_cmd_byte_ptr[2:0] = bypass_en ? master_addr[2:0] : buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~((buf_nxtstate != STREAM_RD) & buf_state_en)}};
-                  slvbuf_wr_en    = buf_wr_en;                                         // shifting the contents from the buf to slv_buf for streaming cases
-         end // case: STREAM_RD
-         STREAM_ERR_RD: begin
-                  buf_nxtstate = DATA_RD;
-                  buf_state_en = ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) & ~ahb_hwrite_q;
-                  slave_valid_pre = buf_state_en;
-                  slvbuf_wr_en   = buf_state_en;     // Overwrite slvbuf with buffer
-                  buf_cmd_byte_ptr[2:0] = buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~buf_state_en}};
-         end
-         DATA_RD: begin
-                  buf_nxtstate   = DONE;
-                  buf_state_en   = (ahb_hready_q | ahb_hresp_q);
-                  buf_data_wr_en = buf_state_en;
-                  slvbuf_error_in= ahb_hresp_q;
-                  slvbuf_error_en= buf_state_en;
-                  slvbuf_wr_en   = buf_state_en;
-
-         end
-         CMD_WR: begin
-                  buf_nxtstate = DATA_WR;
-                  trxn_done    = ahb_hready_q & ahb_hwrite_q & (ahb_htrans_q[1:0] != 2'b0);
-                  buf_state_en = trxn_done;
-                  buf_cmd_byte_ptr_en = buf_state_en;
-                  slvbuf_wr_en    = buf_state_en;
-                  buf_cmd_byte_ptr    = trxn_done ? get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1) : buf_cmd_byte_ptrQ;
-                  cmd_done            = trxn_done & (buf_aligned | (buf_cmd_byte_ptrQ == 3'b111) |
-                                                     (buf_byteen[get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1)] == 1'b0));
-                  ahb_htrans[1:0] = {2{~(cmd_done | cmd_doneQ)}} & 2'b10;
-         end
-         DATA_WR: begin
-                  buf_state_en = (cmd_doneQ & ahb_hready_q) | ahb_hresp_q;
-                  master_ready = buf_state_en & ~ahb_hresp_q & slave_ready;   // Ready to accept new command if current command done and no error
-                  buf_nxtstate = (ahb_hresp_q | ~slave_ready) ? DONE :
-                                  ((master_valid & master_ready) ? ((master_opc[2:1] == 2'b01) ? CMD_WR : CMD_RD) : IDLE);
-                  slvbuf_error_in = ahb_hresp_q;
-                  slvbuf_error_en = buf_state_en;
-
-                  buf_write_in = (master_opc[2:1] == 2'b01);
-                  buf_wr_en = buf_state_en & ((buf_nxtstate == CMD_WR) | (buf_nxtstate == CMD_RD));
-                  buf_data_wr_en = buf_wr_en;
-
-                  cmd_done     = (ahb_hresp_q | (ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) &
-                                 ((buf_cmd_byte_ptrQ == 3'b111) | (buf_byteen[get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1)] == 1'b0))));
-                  bypass_en       = buf_state_en & buf_write_in & (buf_nxtstate == CMD_WR);   // Only bypass for writes for the time being
-                  ahb_htrans[1:0] = {2{(~(cmd_done | cmd_doneQ) | bypass_en)}} & 2'b10;
-                  slave_valid_pre  = buf_state_en & (buf_nxtstate != DONE);
-
-                  trxn_done = ahb_hready_q & ahb_hwrite_q & (ahb_htrans_q[1:0] != 2'b0);
-                  buf_cmd_byte_ptr_en = trxn_done | bypass_en;
-                  buf_cmd_byte_ptr = bypass_en ? get_nxtbyte_ptr(3'b0,buf_byteen_in[7:0],1'b0) :
-                                                 trxn_done ? get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1) : buf_cmd_byte_ptrQ;
-            end
-         DONE: begin
-                  buf_nxtstate = IDLE;
-                  buf_state_en = slave_ready;
-                  slvbuf_error_en = 1'b1;
-                  slave_valid_pre = 1'b1;
-         end
-      endcase
-   end
-
-   assign buf_rst              = dec_tlu_force_halt_bus;
-   assign cmd_done_rst         = slave_valid_pre;
-   assign buf_addr_in[31:3]    = master_addr[31:3];
-   assign buf_addr_in[2:0]     = (buf_aligned_in & (master_opc[2:1] == 2'b01)) ? get_write_addr(master_byteen[7:0]) : master_addr[2:0];
-   assign buf_tag_in[TAG-1:0]  = master_tag[TAG-1:0];
-   assign buf_byteen_in[7:0]   = wrbuf_byteen[7:0];
-   assign buf_data_in[63:0]    = (buf_state == DATA_RD) ? ahb_hrdata_q[63:0] : master_wdata[63:0];
-   assign buf_size_in[1:0]     = (buf_aligned_in & (master_size[1:0] == 2'b11) & (master_opc[2:1] == 2'b01)) ? get_write_size(master_byteen[7:0]) : master_size[1:0];
-   assign buf_aligned_in       = (master_opc[2:0] == 3'b0)    |   // reads are always aligned since they are either DW or sideeffects
-                                 (master_size[1:0] == 2'b0) |  (master_size[1:0] == 2'b01) | (master_size[1:0] == 2'b10) | // Always aligned for Byte/HW/Word since they can be only for non-idempotent. IFU/SB are always aligned
-                                 ((master_size[1:0] == 2'b11) &
-                                  ((master_byteen[7:0] == 8'h3)  | (master_byteen[7:0] == 8'hc)   | (master_byteen[7:0] == 8'h30) | (master_byteen[7:0] == 8'hc0) |
-                                   (master_byteen[7:0] == 8'hf)  | (master_byteen[7:0] == 8'hf0)  | (master_byteen[7:0] == 8'hff)));
-
-   // Generate the ahb signals
-   assign ahb_haddr[31:3] = bypass_en ? master_addr[31:3]  : buf_addr[31:3];
-   assign ahb_haddr[2:0]  = {3{(ahb_htrans == 2'b10)}} & buf_cmd_byte_ptr[2:0];    // Trxn should be aligned during IDLE
-   assign ahb_hsize[2:0]  = bypass_en ? {1'b0, ({2{buf_aligned_in}} & buf_size_in[1:0])} :
-                                        {1'b0, ({2{buf_aligned}} & buf_size[1:0])};   // Send the full size for aligned trxn
-   assign ahb_hburst[2:0] = 3'b0;
-   assign ahb_hmastlock   = 1'b0;
-   assign ahb_hprot[3:0]  = {3'b001,~axi_arprot[2]};
-   assign ahb_hwrite      = bypass_en ? (master_opc[2:1] == 2'b01) : buf_write;
-   assign ahb_hwdata[63:0] = buf_data[63:0];
-
-   assign slave_valid          = slave_valid_pre;// & (~slvbuf_posted_write | slvbuf_error);
-   assign slave_opc[3:2]       = slvbuf_write ? 2'b11 : 2'b00;
-   assign slave_opc[1:0]       = {2{slvbuf_error}} & 2'b10;
-   assign slave_rdata[63:0]    = slvbuf_error ? {2{last_bus_addr[31:0]}} : ((buf_state == DONE) ? buf_data[63:0] : ahb_hrdata_q[63:0]);
-   assign slave_tag[TAG-1:0]   = slvbuf_tag[TAG-1:0];
-
-   assign last_addr_en = (ahb_htrans[1:0] != 2'b0) & ahb_hready & ahb_hwrite ;
-
-
-   rvdffsc_fpga #(.WIDTH(1))   wrbuf_vldff     (.din(1'b1),              .dout(wrbuf_vld),          .en(wrbuf_en),      .clear(wrbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffsc_fpga #(.WIDTH(1))   wrbuf_data_vldff(.din(1'b1),              .dout(wrbuf_data_vld),     .en(wrbuf_data_en), .clear(wrbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(TAG)) wrbuf_tagff     (.din(axi_awid[TAG-1:0]), .dout(wrbuf_tag[TAG-1:0]), .en(wrbuf_en),                         .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(3))   wrbuf_sizeff    (.din(axi_awsize[2:0]),   .dout(wrbuf_size[2:0]),    .en(wrbuf_en),                         .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32))  wrbuf_addrff    (.din(axi_awaddr[31:0]),  .dout(wrbuf_addr[31:0]),   .en(wrbuf_en & bus_clk_en),            .clk(clk), .*);
-   rvdffe       #(.WIDTH(64))  wrbuf_dataff    (.din(axi_wdata[63:0]),   .dout(wrbuf_data[63:0]),   .en(wrbuf_data_en & bus_clk_en),       .clk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(8))   wrbuf_byteenff  (.din(axi_wstrb[7:0]),    .dout(wrbuf_byteen[7:0]),  .en(wrbuf_data_en),                    .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffs_fpga #(.WIDTH(32))   last_bus_addrff (.din(ahb_haddr[31:0]),   .dout(last_bus_addr[31:0]), .en(last_addr_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffsc_fpga #(.WIDTH($bits(state_t))) buf_state_ff  (.din(buf_nxtstate),        .dout({buf_state}),      .en(buf_state_en), .clear(buf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))               buf_writeff   (.din(buf_write_in),        .dout(buf_write),        .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(TAG))             buf_tagff     (.din(buf_tag_in[TAG-1:0]), .dout(buf_tag[TAG-1:0]), .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(32))              buf_addrff    (.din(buf_addr_in[31:0]),   .dout(buf_addr[31:0]),   .en(buf_wr_en & bus_clk_en),        .clk(clk), .*);
-   rvdffs_fpga #(.WIDTH(2))               buf_sizeff    (.din(buf_size_in[1:0]),    .dout(buf_size[1:0]),    .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))               buf_alignedff (.din(buf_aligned_in),      .dout(buf_aligned),      .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(8))               buf_byteenff  (.din(buf_byteen_in[7:0]),  .dout(buf_byteen[7:0]),  .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(64))              buf_dataff    (.din(buf_data_in[63:0]),   .dout(buf_data[63:0]),   .en(buf_data_wr_en & bus_clk_en),   .clk(clk), .*);
-
-
-   rvdffs_fpga #(.WIDTH(1))   slvbuf_writeff  (.din(buf_write),        .dout(slvbuf_write),        .en(slvbuf_wr_en),    .clk(buf_clk), .clken(buf_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(TAG)) slvbuf_tagff    (.din(buf_tag[TAG-1:0]), .dout(slvbuf_tag[TAG-1:0]), .en(slvbuf_wr_en),    .clk(buf_clk), .clken(buf_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))   slvbuf_errorff  (.din(slvbuf_error_in),  .dout(slvbuf_error),        .en(slvbuf_error_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffsc_fpga #(.WIDTH(1)) buf_cmd_doneff     (.din(1'b1),                  .dout(cmd_doneQ),              .en(cmd_done),            .clear(cmd_done_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(3))  buf_cmd_byte_ptrff (.din(buf_cmd_byte_ptr[2:0]), .dout(buf_cmd_byte_ptrQ[2:0]), .en(buf_cmd_byte_ptr_en),                       .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdff_fpga #(.WIDTH(1))  hready_ff (.din(ahb_hready),       .dout(ahb_hready_q),       .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(2))  htrans_ff (.din(ahb_htrans[1:0]),  .dout(ahb_htrans_q[1:0]),  .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hwrite_ff (.din(ahb_hwrite),       .dout(ahb_hwrite_q),       .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hresp_ff  (.din(ahb_hresp),        .dout(ahb_hresp_q),        .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(64)) hrdata_ff (.din(ahb_hrdata[63:0]), .dout(ahb_hrdata_q[63:0]), .clk(ahbm_data_clk), .clken(ahbm_data_clken), .rawclk(clk), .*);
-
-   // Clock headers
-   // clock enables for ahbm addr/data
-   assign buf_clken       = bus_clk_en & (buf_wr_en | slvbuf_wr_en | clk_override);
-   assign ahbm_data_clken = bus_clk_en & ((buf_state != IDLE) | clk_override);
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign bus_clk = 1'b0;
-   assign buf_clk = 1'b0;
-   assign ahbm_data_clk = 1'b0;
-`else
-   rvclkhdr bus_cgc       (.en(bus_clk_en),      .l1clk(bus_clk),       .*);
-   rvclkhdr buf_cgc       (.en(buf_clken),       .l1clk(buf_clk), .*);
-   rvclkhdr ahbm_data_cgc (.en(ahbm_data_clken), .l1clk(ahbm_data_clk), .*);
-`endif
-
-`ifdef RV_ASSERT_ON
-   property ahb_trxn_aligned;
-     @(posedge bus_clk) ahb_htrans[1]  |-> ((ahb_hsize[2:0] == 3'h0)                              |
-                                        ((ahb_hsize[2:0] == 3'h1) & (ahb_haddr[0] == 1'b0))   |
-                                        ((ahb_hsize[2:0] == 3'h2) & (ahb_haddr[1:0] == 2'b0)) |
-                                        ((ahb_hsize[2:0] == 3'h3) & (ahb_haddr[2:0] == 3'b0)));
-   endproperty
-   assert_ahb_trxn_aligned: assert property (ahb_trxn_aligned) else
-     $display("Assertion ahb_trxn_aligned failed: ahb_htrans=2'h%h, ahb_hsize=3'h%h, ahb_haddr=32'h%h",ahb_htrans[1:0], ahb_hsize[2:0], ahb_haddr[31:0]);
-
-   property ahb_error_protocol;
-      @(posedge bus_clk) (ahb_hready & ahb_hresp) |-> (~$past(ahb_hready) & $past(ahb_hresp));
-   endproperty
-   assert_ahb_error_protocol: assert property (ahb_error_protocol) else
-      $display("Bus Error with hReady isn't preceded with Bus Error without hready");
-`endif
-
-endmodule // axi4_to_ahb
diff --git a/verilog/rtl/BrqRV_EB1/design/beh_lib.sv b/verilog/rtl/BrqRV_EB1/design/beh_lib.sv
deleted file mode 100644
index 1cffe5b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/beh_lib.sv
+++ /dev/null
@@ -1,819 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// all flops call the rvdff flop
-
-`include "common_defines.vh"
-
-module rvdff #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic           clk,
-     input logic                   rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-`ifdef RV_CLOCKGATE
-   always @(posedge tb_top.clk) begin
-      #0 $strobe("CG: %0t %m din %x dout %x clk %b width %d",$time,din,dout,clk,WIDTH);
-   end
-`endif
-
-   always_ff @(posedge clk or negedge rst_l) begin
-      if (rst_l == 0)
-        dout[WIDTH-1:0] <= 0;
-      else
-        dout[WIDTH-1:0] <= din[WIDTH-1:0];
-   end
-
-end
-endmodule
-
-// rvdff with 2:1 input mux to flop din iff sel==1
-module rvdffs #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic           clk,
-     input logic                   rst_l,
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin : genblock
-   assign dout = din;
-end
-else begin : genblock
-   rvdff #(WIDTH) dffs (.din((en) ? din[WIDTH-1:0] : dout[WIDTH-1:0]), .*);
-end
-
-endmodule
-
-// rvdff with en and clear
-module rvdffsc #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic             clear,
-     input logic           clk,
-     input logic                   rst_l,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:0]          din_new;
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-   assign din_new = {WIDTH{~clear}} & (en ? din[WIDTH-1:0] : dout[WIDTH-1:0]);
-   rvdff #(WIDTH) dffsc (.din(din_new[WIDTH-1:0]), .*);
-end
-endmodule
-
-// _fpga versions
-module rvdff_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic           clk,
-     input logic           clken,
-     input logic           rawclk,
-     input logic           rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-   `ifdef RV_FPGA_OPTIMIZE
-    rvdffs #(WIDTH) dffs (.clk(rawclk), .en(clken), .*);
-`else
-    rvdff #(WIDTH)  dff (.*);
-`endif
-end
-endmodule
-
-// rvdff with 2:1 input mux to flop din iff sel==1
-module rvdffs_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic           clk,
-     input logic           clken,
-     input logic           rawclk,
-     input logic           rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin : genblock
-   assign dout = din;
-end
-else begin : genblock
-`ifdef RV_FPGA_OPTIMIZE
-   rvdffs #(WIDTH)   dffs (.clk(rawclk), .en(clken & en), .*);
-`else
-   rvdffs #(WIDTH)   dffs (.*);
-`endif
-end
-
-endmodule
-
-// rvdff with en and clear
-module rvdffsc_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic             clear,
-     input logic             clk,
-     input logic             clken,
-     input logic             rawclk,
-     input logic             rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:0]          din_new;
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-`ifdef RV_FPGA_OPTIMIZE
-   rvdffs  #(WIDTH)   dffs  (.clk(rawclk), .din(din[WIDTH-1:0] & {WIDTH{~clear}}),.en((en | clear) & clken), .*);
-`else
-   rvdffsc #(WIDTH)   dffsc (.*);
-`endif
-end
-endmodule
-
-
-module rvdffe #( parameter WIDTH=1, SHORT=0, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic           en,
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-
-if (SHORT == 1) begin : genblock
-   if (1) begin : genblock
-      assign dout = din;
-   end
-end
-else begin : genblock
-
-`ifndef RV_PHYSICAL
-   if (WIDTH >= 8 || OVERRIDE==1) begin: genblock
-`endif
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .* );
-`else
-      rvclkhdr clkhdr ( .* );
-      rvdff #(WIDTH) dff (.*, .clk(l1clk));
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-      $error("%m: rvdffe must be WIDTH >= 8");
-`endif
-end // else: !if(SHORT == 1)
-
-endmodule // rvdffe
-
-
-module rvdffpcie #( parameter WIDTH=31 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-
-
-`ifndef RV_PHYSICAL
-   if (WIDTH == 31) begin: genblock
-`endif
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .* );
-`else
-
-      rvdfflie #(.WIDTH(WIDTH), .LEFT(19)) dff (.*);
-
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-      $error("%m: rvdffpcie width must be 31");
-`endif
-endmodule
-
-// format: { LEFT, EXTRA }
-// LEFT # of bits will be done with rvdffie, all else EXTRA with rvdffe
-module rvdfflie #( parameter WIDTH=16, LEFT=8 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   localparam EXTRA = WIDTH-LEFT;
-
-
-
-
-
-
-
-   localparam LMSB = WIDTH-1;
-   localparam LLSB = LMSB-LEFT+1;
-   localparam XMSB = LLSB-1;
-   localparam XLSB = LLSB-EXTRA;
-
-
-`ifndef RV_PHYSICAL
-   if (WIDTH >= 16 && LEFT >= 8 && EXTRA >= 8) begin: genblock
-`endif
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .* );
-`else
-
-      rvdffiee #(LEFT)  dff_left  (.*, .din(din[LMSB:LLSB]), .dout(dout[LMSB:LLSB]));
-
-
-      rvdffe  #(EXTRA)  dff_extra (.*, .din(din[XMSB:XLSB]), .dout(dout[XMSB:XLSB]));
-
-
-
-
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-      $error("%m: rvdfflie musb be WIDTH >= 16 && LEFT >= 8 && EXTRA >= 8");
-`endif
-endmodule
-
-
-
-
-// special power flop for predict packet
-// format: { LEFT, RIGHT==31 }
-// LEFT # of bits will be done with rvdffe; RIGHT is enabled by LEFT[LSB] & en
-module rvdffppe #( parameter WIDTH=32 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   localparam RIGHT = 31;
-   localparam LEFT = WIDTH - RIGHT;
-
-   localparam LMSB = WIDTH-1;
-   localparam LLSB = LMSB-LEFT+1;
-   localparam RMSB = LLSB-1;
-   localparam RLSB = LLSB-RIGHT;
-
-
-`ifndef RV_PHYSICAL
-   if (WIDTH>=32 && LEFT>=8 && RIGHT>=8) begin: genblock
-`endif
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .* );
-`else
-      rvdffe #(LEFT)     dff_left (.*, .din(din[LMSB:LLSB]), .dout(dout[LMSB:LLSB]));
-
-      rvdffe #(RIGHT)   dff_right (.*, .din(din[RMSB:RLSB]), .dout(dout[RMSB:RLSB]), .en(en & din[LLSB]));  // qualify with pret
-
-
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-      $error("%m: must be WIDTH>=32 && LEFT>=8 && RIGHT>=8");
-`endif
-endmodule
-
-
-
-
-module rvdffie #( parameter WIDTH=1, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-   logic                      en;
-
-
-
-
-
-
-
-
-`ifndef RV_PHYSICAL
-   if (WIDTH >= 8 || OVERRIDE==1) begin: genblock
-`endif
-
-      assign en = |(din ^ dout);
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .* );
-`else
-      rvclkhdr clkhdr ( .* );
-      rvdff #(WIDTH) dff (.*, .clk(l1clk));
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-     $error("%m: rvdffie must be WIDTH >= 8");
-`endif
-
-
-endmodule
-
-// ie flop but it has an .en input
-module rvdffiee #( parameter WIDTH=1, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic           scan_mode,
-     input  logic           en,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-   logic                      final_en;
-
-`ifndef RV_PHYSICAL
-   if (WIDTH >= 8 || OVERRIDE==1) begin: genblock
-`endif
-
-      assign final_en = (|(din ^ dout)) & en;
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .*, .en(final_en) );
-`else
-      rvdffe #(WIDTH) dff (.*,  .en(final_en));
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-      $error("%m: rvdffie width must be >= 8");
-`endif
-
-endmodule
-
-
-
-module rvsyncss #(parameter WIDTH = 251)
-   (
-     input  logic                 clk,
-     input  logic                 rst_l,
-     input  logic [WIDTH-1:0]     din,
-     output logic [WIDTH-1:0]     dout
-     );
-
-   logic [WIDTH-1:0]              din_ff1;
-
-   rvdff #(WIDTH) sync_ff1  (.*, .din (din[WIDTH-1:0]),     .dout(din_ff1[WIDTH-1:0]));
-   rvdff #(WIDTH) sync_ff2  (.*, .din (din_ff1[WIDTH-1:0]), .dout(dout[WIDTH-1:0]));
-
-endmodule // rvsyncss
-
-module rvsyncss_fpga #(parameter WIDTH = 251)
-   (
-     input  logic                 gw_clk,
-     input  logic                 rawclk,
-     input  logic                 clken,
-     input  logic                 rst_l,
-     input  logic [WIDTH-1:0]     din,
-     output logic [WIDTH-1:0]     dout
-     );
-
-   logic [WIDTH-1:0]              din_ff1;
-
-   rvdff_fpga #(WIDTH) sync_ff1  (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (din[WIDTH-1:0]),     .dout(din_ff1[WIDTH-1:0]));
-   rvdff_fpga #(WIDTH) sync_ff2  (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (din_ff1[WIDTH-1:0]), .dout(dout[WIDTH-1:0]));
-
-endmodule // rvsyncss
-
-module rvlsadder
-  (
-    input logic [31:0] rs1,
-    input logic [11:0] offset,
-
-    output logic [31:0] dout
-    );
-
-   logic                cout;
-   logic                sign;
-
-   logic [31:12]        rs1_inc;
-   logic [31:12]        rs1_dec;
-
-   assign {cout,dout[11:0]} = {1'b0,rs1[11:0]} + {1'b0,offset[11:0]};
-
-   assign rs1_inc[31:12] = rs1[31:12] + 1;
-
-   assign rs1_dec[31:12] = rs1[31:12] - 1;
-
-   assign sign = offset[11];
-
-   assign dout[31:12] = ({20{  sign ^~  cout}} &     rs1[31:12]) |
-                        ({20{ ~sign &   cout}}  & rs1_inc[31:12]) |
-                        ({20{  sign &  ~cout}}  & rs1_dec[31:12]);
-
-endmodule // rvlsadder
-
-// assume we only maintain pc[31:1] in the pipe
-
-module rvbradder
-  (
-    input [31:1] pc,
-    input [12:1] offset,
-
-    output [31:1] dout
-    );
-
-   logic          cout;
-   logic          sign;
-
-   logic [31:13]  pc_inc;
-   logic [31:13]  pc_dec;
-
-   assign {cout,dout[12:1]} = {1'b0,pc[12:1]} + {1'b0,offset[12:1]};
-
-   assign pc_inc[31:13] = pc[31:13] + 1;
-
-   assign pc_dec[31:13] = pc[31:13] - 1;
-
-   assign sign = offset[12];
-
-
-   assign dout[31:13] = ({19{  sign ^~  cout}} &     pc[31:13]) |
-                        ({19{ ~sign &   cout}}  & pc_inc[31:13]) |
-                        ({19{  sign &  ~cout}}  & pc_dec[31:13]);
-
-
-endmodule // rvbradder
-
-
-// 2s complement circuit
-module rvtwoscomp #( parameter WIDTH=32 )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:1]          dout_temp;   // holding for all other bits except for the lsb. LSB is always din
-
-   genvar                     i;
-
-   for ( i = 1; i < WIDTH; i++ )  begin : flip_after_first_one
-      assign dout_temp[i] = (|din[i-1:0]) ? ~din[i] : din[i];
-   end : flip_after_first_one
-
-   assign dout[WIDTH-1:0]  = { dout_temp[WIDTH-1:1], din[0] };
-
-endmodule  // 2'scomp
-
-// find first
-module rvfindfirst1 #( parameter WIDTH=32, SHIFT=$clog2(WIDTH) )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [SHIFT-1:0] dout
-     );
-   logic                      done;
-
-   always_comb begin
-      dout[SHIFT-1:0] = {SHIFT{1'b0}};
-      done    = 1'b0;
-
-      for ( int i = WIDTH-1; i > 0; i-- )  begin : find_first_one
-         done |= din[i];
-         dout[SHIFT-1:0] += done ? 1'b0 : 1'b1;
-      end : find_first_one
-   end
-endmodule // rvfindfirst1
-
-module rvfindfirst1hot #( parameter WIDTH=32 )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [WIDTH-1:0] dout
-     );
-   logic                      done;
-
-   always_comb begin
-      dout[WIDTH-1:0] = {WIDTH{1'b0}};
-      done    = 1'b0;
-      for ( int i = 0; i < WIDTH; i++ )  begin : find_first_one
-         dout[i] = ~done & din[i];
-         done   |= din[i];
-      end : find_first_one
-   end
-endmodule // rvfindfirst1hot
-
-// mask and match function matches bits after finding the first 0 position
-// find first starting from LSB. Skip that location and match the rest of the bits
-module rvmaskandmatch #( parameter WIDTH=32 )
-   (
-     input  logic [WIDTH-1:0] mask,     // this will have the mask in the lower bit positions
-     input  logic [WIDTH-1:0] data,     // this is what needs to be matched on the upper bits with the mask's upper bits
-     input  logic             masken,   // when 1 : do mask. 0 : full match
-     output logic             match
-     );
-
-   logic [WIDTH-1:0]          matchvec;
-   logic                      masken_or_fullmask;
-
-   assign masken_or_fullmask = masken &  ~(&mask[WIDTH-1:0]);
-
-   assign matchvec[0]        = masken_or_fullmask | (mask[0] == data[0]);
-   genvar                     i;
-
-   for ( i = 1; i < WIDTH; i++ )  begin : match_after_first_zero
-      assign matchvec[i] = (&mask[i-1:0] & masken_or_fullmask) ? 1'b1 : (mask[i] == data[i]);
-   end : match_after_first_zero
-
-   assign match  = &matchvec[WIDTH-1:0];    // all bits either matched or were masked off
-
-endmodule // rvmaskandmatch
-
-
-
-
-// Check if the S_ADDR <= addr < E_ADDR
-module rvrangecheck  #(CCM_SADR = 32'h0,
-                       CCM_SIZE  = 128) (
-   input  logic [31:0]   addr,                             // Address to be checked for range
-   output logic          in_range,                            // S_ADDR <= start_addr < E_ADDR
-   output logic          in_region
-);
-
-   localparam REGION_BITS = 4;
-   localparam MASK_BITS = 10 + $clog2(CCM_SIZE);
-
-   logic [31:0]          start_addr;
-   logic [3:0]           region;
-
-   assign start_addr[31:0]        = CCM_SADR;
-   assign region[REGION_BITS-1:0] = start_addr[31:(32-REGION_BITS)];
-
-   assign in_region = (addr[31:(32-REGION_BITS)] == region[REGION_BITS-1:0]);
-   if (CCM_SIZE  == 48)
-    assign in_range  = (addr[31:MASK_BITS] == start_addr[31:MASK_BITS]) & ~(&addr[MASK_BITS-1 : MASK_BITS-2]);
-   else
-    assign in_range  = (addr[31:MASK_BITS] == start_addr[31:MASK_BITS]);
-
-endmodule  // rvrangechecker
-
-// 16 bit even parity generator
-module rveven_paritygen #(WIDTH = 16)  (
-                                         input  logic [WIDTH-1:0]  data_in,         // Data
-                                         output logic              parity_out       // generated even parity
-                                         );
-
-   assign  parity_out =  ^(data_in[WIDTH-1:0]) ;
-
-endmodule  // rveven_paritygen
-
-module rveven_paritycheck #(WIDTH = 16)  (
-                                           input  logic [WIDTH-1:0]  data_in,         // Data
-                                           input  logic              parity_in,
-                                           output logic              parity_err       // Parity error
-                                           );
-
-   assign  parity_err =  ^(data_in[WIDTH-1:0]) ^ parity_in ;
-
-endmodule  // rveven_paritycheck
-
-module rvecc_encode  (
-                      input [31:0] din,
-                      output [6:0] ecc_out
-                      );
-logic [5:0] ecc_out_temp;
-
-   assign ecc_out_temp[0] = din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30];
-   assign ecc_out_temp[1] = din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31];
-   assign ecc_out_temp[2] = din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31];
-   assign ecc_out_temp[3] = din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_out_temp[4] = din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_out_temp[5] = din[26]^din[27]^din[28]^din[29]^din[30]^din[31];
-
-   assign ecc_out[6:0] = {(^din[31:0])^(^ecc_out_temp[5:0]),ecc_out_temp[5:0]};
-
-endmodule // rvecc_encode
-
-module rvecc_decode  (
-                      input         en,
-                      input [31:0]  din,
-                      input [6:0]   ecc_in,
-                      input         sed_ded,    // only do detection and no correction. Used for the I$
-                      output [31:0] dout,
-                      output [6:0]  ecc_out,
-                      output        single_ecc_error,
-                      output        double_ecc_error
-
-                      );
-
-   logic [6:0]                      ecc_check;
-   logic [38:0]                     error_mask;
-   logic [38:0]                     din_plus_parity, dout_plus_parity;
-
-   // Generate the ecc bits
-   assign ecc_check[0] = ecc_in[0]^din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30];
-   assign ecc_check[1] = ecc_in[1]^din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31];
-   assign ecc_check[2] = ecc_in[2]^din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31];
-   assign ecc_check[3] = ecc_in[3]^din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_check[4] = ecc_in[4]^din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_check[5] = ecc_in[5]^din[26]^din[27]^din[28]^din[29]^din[30]^din[31];
-
-   // This is the parity bit
-   assign ecc_check[6] = ((^din[31:0])^(^ecc_in[6:0])) & ~sed_ded;
-
-   assign single_ecc_error = en & (ecc_check[6:0] != 0) & ecc_check[6];   // this will never be on for sed_ded
-   assign double_ecc_error = en & (ecc_check[6:0] != 0) & ~ecc_check[6];  // all errors in the sed_ded case will be recorded as DE
-
-   // Generate the mask for error correctiong
-   for (genvar i=1; i<40; i++) begin
-      assign error_mask[i-1] = (ecc_check[5:0] == i);
-   end
-
-   // Generate the corrected data
-   assign din_plus_parity[38:0] = {ecc_in[6], din[31:26], ecc_in[5], din[25:11], ecc_in[4], din[10:4], ecc_in[3], din[3:1], ecc_in[2], din[0], ecc_in[1:0]};
-
-   assign dout_plus_parity[38:0] = single_ecc_error ? (error_mask[38:0] ^ din_plus_parity[38:0]) : din_plus_parity[38:0];
-   assign dout[31:0]             = {dout_plus_parity[37:32], dout_plus_parity[30:16], dout_plus_parity[14:8], dout_plus_parity[6:4], dout_plus_parity[2]};
-   assign ecc_out[6:0]           = {(dout_plus_parity[38] ^ (ecc_check[6:0] == 7'b1000000)), dout_plus_parity[31], dout_plus_parity[15], dout_plus_parity[7], dout_plus_parity[3], dout_plus_parity[1:0]};
-
-endmodule // rvecc_decode
-
-module rvecc_encode_64  (
-                      input [63:0] din,
-                      output [6:0] ecc_out
-                      );
-  assign ecc_out[0] = din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30]^din[32]^din[34]^din[36]^din[38]^din[40]^din[42]^din[44]^din[46]^din[48]^din[50]^din[52]^din[54]^din[56]^din[57]^din[59]^din[61]^din[63];
-
-   assign ecc_out[1] = din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31]^din[32]^din[35]^din[36]^din[39]^din[40]^din[43]^din[44]^din[47]^din[48]^din[51]^din[52]^din[55]^din[56]^din[58]^din[59]^din[62]^din[63];
-
-   assign ecc_out[2] = din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31]^din[32]^din[37]^din[38]^din[39]^din[40]^din[45]^din[46]^din[47]^din[48]^din[53]^din[54]^din[55]^din[56]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_out[3] = din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[4] = din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[5] = din[26]^din[27]^din[28]^din[29]^din[30]^din[31]^din[32]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[6] = din[57]^din[58]^din[59]^din[60]^din[61]^din[62]^din[63];
-
-endmodule // rvecc_encode_64
-
-
-module rvecc_decode_64  (
-                      input         en,
-                      input [63:0]  din,
-                      input [6:0]   ecc_in,
-                      output        ecc_error
-                      );
-
-   logic [6:0]                      ecc_check;
-
-   // Generate the ecc bits
-   assign ecc_check[0] = ecc_in[0]^din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30]^din[32]^din[34]^din[36]^din[38]^din[40]^din[42]^din[44]^din[46]^din[48]^din[50]^din[52]^din[54]^din[56]^din[57]^din[59]^din[61]^din[63];
-
-   assign ecc_check[1] = ecc_in[1]^din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31]^din[32]^din[35]^din[36]^din[39]^din[40]^din[43]^din[44]^din[47]^din[48]^din[51]^din[52]^din[55]^din[56]^din[58]^din[59]^din[62]^din[63];
-
-   assign ecc_check[2] = ecc_in[2]^din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31]^din[32]^din[37]^din[38]^din[39]^din[40]^din[45]^din[46]^din[47]^din[48]^din[53]^din[54]^din[55]^din[56]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_check[3] = ecc_in[3]^din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[4] = ecc_in[4]^din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[5] = ecc_in[5]^din[26]^din[27]^din[28]^din[29]^din[30]^din[31]^din[32]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[6] = ecc_in[6]^din[57]^din[58]^din[59]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_error = en & (ecc_check[6:0] != 0);  // all errors in the sed_ded case will be recorded as DE
-
- endmodule // rvecc_decode_64
-
-// Skywater cell
-//sky130_fd_sc_hd__dlclkp_1 CG( .CLK(clk), .GCLK(l1clk), .GATE(en_i | test_en_i));
-
-
-/*module `TEC_RV_ICG 
-  (
-   input logic SE, EN, CK,
-   output Q
-   );
-
-   logic  en_ff;
-   logic  enable;
-
-   assign      enable = EN | SE;
-
-`ifdef VERILATOR
-   always @(negedge CK) begin
-      en_ff <= enable;
-   end
-`else
-   always @(CK, enable) begin
-      if(!CK)
-        en_ff = enable;
-   end
-`endif
-   assign Q = CK & en_ff;
-
-endmodule
-*/
-
-`ifndef RV_FPGA_OPTIMIZE
-module rvclkhdr
-  (
-   input  logic en,
-   input  logic clk,
-   input  logic scan_mode,
-   output logic l1clk
-   );
-
-   logic   SE;
-   assign       SE = 0;
-
-   sky130_fd_sc_hd__dlclkp_1 clkhdr( .CLK(clk), .GCLK(l1clk), .GATE(en)); /*clkhdr ( .*, .EN(en), .CK(clk), .Q(l1clk));*/
-
-endmodule // rvclkhdr
-`endif
-
-module rvoclkhdr
-  (
-   input  logic en,
-   input  logic clk,
-   input  logic scan_mode,
-   output logic l1clk
-   );
-
-   logic   SE;
-   assign       SE = 0;
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign l1clk = clk;
-`else
-   sky130_fd_sc_hd__dlclkp_1 clkhdr( .CLK(clk), .GCLK(l1clk), .GATE(en)); //clkhdr ( .*, .EN(en), .CK(clk), .Q(l1clk));
-`endif
-
-endmodule
-
-
-
diff --git a/verilog/rtl/BrqRV_EB1/design/common_defines.vh b/verilog/rtl/BrqRV_EB1/design/common_defines.vh
deleted file mode 100644
index 9e581ff..0000000
--- a/verilog/rtl/BrqRV_EB1/design/common_defines.vh
+++ /dev/null
@@ -1,247 +0,0 @@
-// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-// This is an automatically generated file by hshabbir on و 08:16:54 PKT ت 08 جون 2021
-//
-// cmd:    brqrv -target=default -set build_axi4 
-//
-`define RV_ROOT "/home/hshabbir/caravel_BrqRV_EB1/verilog/rtl/BrqRV_EB1"
-`define RV_RET_STACK_SIZE 8
-`define RV_EXT_ADDRWIDTH 32
-`define RV_STERR_ROLLBACK 0
-`define SDVT_AHB 0
-`define RV_EXT_DATAWIDTH 64
-`define RV_LDERR_ROLLBACK 1
-`define CLOCK_PERIOD 100
-`define RV_ASSERT_ON 
-`define RV_BUILD_AXI4 1
-`define TOP tb_top
-`define RV_BUILD_AXI_NATIVE 1
-`define CPU_TOP `RV_TOP.brqrv
-`define RV_TOP `TOP.rvtop
-`define RV_UNUSED_REGION2 'h70000000
-`define RV_EXTERNAL_DATA 'hd0580000
-`define RV_SERIALIO 'he0580000
-`define RV_UNUSED_REGION7 'h20000000
-`define RV_UNUSED_REGION5 'h40000000
-`define RV_DEBUG_SB_MEM 'hb0580000
-`define RV_EXTERNAL_DATA_1 'hc0000000
-`define RV_UNUSED_REGION0 'h90000000
-`define RV_UNUSED_REGION3 'h60000000
-`define RV_UNUSED_REGION9 'h00000000
-`define RV_UNUSED_REGION8 'h10000000
-`define RV_UNUSED_REGION6 'h30000000
-`define RV_UNUSED_REGION1 'h80000000
-`define RV_UNUSED_REGION4 'h50000000
-`define RV_BHT_ADDR_LO 2
-`define RV_BHT_SIZE 256
-`define RV_BHT_GHR_HASH_1 
-`define RV_BHT_GHR_SIZE 7
-`define RV_BHT_ADDR_HI 8
-`define RV_BHT_HASH_STRING {hashin[7+1:2]^ghr[7-1:0]}// cf2
-`define RV_BHT_ARRAY_DEPTH 128
-`define RV_BHT_GHR_RANGE 6:0
-`define RV_INST_ACCESS_ADDR5 'h00000000
-`define RV_DATA_ACCESS_MASK3 'hffffffff
-`define RV_INST_ACCESS_MASK7 'hffffffff
-`define RV_DATA_ACCESS_MASK0 'hffffffff
-`define RV_INST_ACCESS_ADDR6 'h00000000
-`define RV_INST_ACCESS_ENABLE3 1'h0
-`define RV_INST_ACCESS_MASK6 'hffffffff
-`define RV_DATA_ACCESS_ENABLE6 1'h0
-`define RV_INST_ACCESS_ENABLE5 1'h0
-`define RV_DATA_ACCESS_ENABLE7 1'h0
-`define RV_INST_ACCESS_ENABLE1 1'h0
-`define RV_DATA_ACCESS_ADDR0 'h00000000
-`define RV_DATA_ACCESS_ADDR3 'h00000000
-`define RV_INST_ACCESS_ADDR7 'h00000000
-`define RV_INST_ACCESS_ENABLE0 1'h0
-`define RV_INST_ACCESS_MASK5 'hffffffff
-`define RV_DATA_ACCESS_MASK4 'hffffffff
-`define RV_INST_ACCESS_MASK2 'hffffffff
-`define RV_INST_ACCESS_MASK1 'hffffffff
-`define RV_INST_ACCESS_ADDR2 'h00000000
-`define RV_INST_ACCESS_ENABLE2 1'h0
-`define RV_INST_ACCESS_ADDR1 'h00000000
-`define RV_INST_ACCESS_ENABLE4 1'h0
-`define RV_DATA_ACCESS_ADDR4 'h00000000
-`define RV_DATA_ACCESS_ADDR6 'h00000000
-`define RV_DATA_ACCESS_ENABLE3 1'h0
-`define RV_INST_ACCESS_MASK0 'hffffffff
-`define RV_DATA_ACCESS_MASK7 'hffffffff
-`define RV_INST_ACCESS_MASK3 'hffffffff
-`define RV_DATA_ACCESS_ADDR5 'h00000000
-`define RV_DATA_ACCESS_MASK5 'hffffffff
-`define RV_DATA_ACCESS_ENABLE0 1'h0
-`define RV_INST_ACCESS_ADDR3 'h00000000
-`define RV_DATA_ACCESS_ADDR7 'h00000000
-`define RV_DATA_ACCESS_ENABLE5 1'h0
-`define RV_INST_ACCESS_ENABLE6 1'h0
-`define RV_DATA_ACCESS_ENABLE1 1'h0
-`define RV_INST_ACCESS_ENABLE7 1'h0
-`define RV_INST_ACCESS_ADDR0 'h00000000
-`define RV_DATA_ACCESS_MASK6 'hffffffff
-`define RV_DATA_ACCESS_MASK2 'hffffffff
-`define RV_DATA_ACCESS_MASK1 'hffffffff
-`define RV_INST_ACCESS_MASK4 'hffffffff
-`define RV_INST_ACCESS_ADDR4 'h00000000
-`define RV_DATA_ACCESS_ENABLE4 1'h0
-`define RV_DATA_ACCESS_ADDR2 'h00000000
-`define RV_DATA_ACCESS_ADDR1 'h00000000
-`define RV_DATA_ACCESS_ENABLE2 1'h0
-`define RV_ICCM_BITS 12
-`define RV_ICCM_OFFSET 10'h0ffff000
-`define RV_ICCM_SIZE_4 
-`define RV_ICCM_BANK_BITS 2
-`define RV_ICCM_ENABLE 1
-`define RV_ICCM_SADR 32'haffff000
-`define RV_ICCM_DATA_CELL ram_256x39
-`define RV_ICCM_EADR 32'hafffffff
-`define RV_ICCM_RESERVED 'h400
-`define RV_ICCM_REGION 4'ha
-`define RV_ICCM_SIZE 4
-`define RV_ICCM_BANK_HI 3
-`define RV_ICCM_BANK_INDEX_LO 4
-`define RV_ICCM_ROWS 256
-`define RV_ICCM_INDEX_BITS 8
-`define RV_ICCM_NUM_BANKS 4
-`define RV_ICCM_NUM_BANKS_4 
-`define TEC_RV_ICG clockhdr
-`define RV_LSU2DMA 0
-`define RV_LSU_NUM_NBLOAD_WIDTH 2
-`define RV_ICCM_ONLY 1
-`define RV_BITMANIP_ZBC 0
-`define RV_BITMANIP_ZBS 0
-`define RV_FPGA_OPTIMIZE 0
-`define RV_LSU_NUM_NBLOAD 4
-`define RV_DIV_BIT 3
-`define RV_DIV_NEW 1
-`define RV_DMA_BUF_DEPTH 5
-`define RV_FAST_INTERRUPT_REDIRECT 1
-`define RV_BITMANIP_ZBP 0
-`define RV_BITMANIP_ZBA 0
-`define RV_LSU_STBUF_DEPTH 4
-`define RV_BITMANIP_ZBB 0
-`define RV_BITMANIP_ZBR 0
-`define RV_BITMANIP_ZBE 0
-`define RV_TIMER_LEGAL_EN 1
-`define RV_BITMANIP_ZBF 0
-`define REGWIDTH 32
-`define RV_CONFIG_KEY 32'hdeadbeef
-`define RV_BTB_INDEX1_HI 8
-`define RV_BTB_SIZE 256
-`define RV_BTB_BTAG_SIZE 6
-`define RV_BTB_FOLD2_INDEX_HASH 0
-`define RV_BTB_INDEX3_LO 16
-`define RV_BTB_INDEX2_HI 15
-`define RV_BTB_ARRAY_DEPTH 128
-`define RV_BTB_INDEX1_LO 2
-`define RV_BTB_ADDR_LO 2
-`define RV_BTB_INDEX3_HI 22
-`define RV_BTB_ADDR_HI 8
-`define RV_BTB_TOFFSET_SIZE 12
-`define RV_BTB_INDEX2_LO 9
-`define RV_BTB_BTAG_FOLD 0
-`define RV_BTB_ENABLE 1
-`define RV_XLEN 32
-`define RV_IFU_BUS_TAG 3
-`define RV_LSU_BUS_ID 1
-`define RV_IFU_BUS_PRTY 2
-`define RV_LSU_BUS_TAG 3
-`define RV_IFU_BUS_ID 1
-`define RV_SB_BUS_PRTY 2
-`define RV_LSU_BUS_PRTY 2
-`define RV_DMA_BUS_ID 1
-`define RV_SB_BUS_ID 1
-`define RV_BUS_PRTY_DEFAULT 2'h3
-`define RV_DMA_BUS_PRTY 2
-`define RV_SB_BUS_TAG 1
-`define RV_DMA_BUS_TAG 1
-`define RV_ICACHE_TAG_NUM_BYPASS 2
-`define RV_ICACHE_STATUS_BITS 1
-`define RV_ICACHE_BEAT_ADDR_HI 5
-`define RV_ICACHE_SCND_LAST 6
-`define RV_ICACHE_TAG_LO 13
-`define RV_ICACHE_BANK_WIDTH 8
-`define RV_ICACHE_DATA_CELL ram_512x71
-`define RV_ICACHE_NUM_BYPASS_WIDTH 2
-`define RV_ICACHE_WAYPACK 1
-`define RV_ICACHE_LN_SZ 64
-`define RV_ICACHE_NUM_BEATS 8
-`define RV_ICACHE_NUM_LINES_WAY 128
-`define RV_ICACHE_NUM_LINES_BANK 64
-`define RV_ICACHE_TAG_DEPTH 128
-`define RV_ICACHE_DATA_DEPTH 512
-`define RV_ICACHE_DATA_WIDTH 64
-`define RV_ICACHE_TAG_CELL ram_128x25
-`define RV_ICACHE_NUM_BYPASS 2
-`define RV_ICACHE_FDATA_WIDTH 71
-`define RV_ICACHE_NUM_LINES 256
-`define RV_ICACHE_DATA_INDEX_LO 4
-`define RV_ICACHE_BANK_BITS 1
-`define RV_ICACHE_TAG_NUM_BYPASS_WIDTH 2
-`define RV_ICACHE_2BANKS 1
-`define RV_ICACHE_BANKS_WAY 2
-`define RV_ICACHE_BANK_LO 3
-`define RV_ICACHE_ECC 1
-`define RV_ICACHE_INDEX_HI 12
-`define RV_ICACHE_TAG_INDEX_LO 6
-`define RV_ICACHE_TAG_BYPASS_ENABLE 1
-`define RV_ICACHE_BANK_HI 3
-`define RV_ICACHE_BEAT_BITS 3
-`define RV_ICACHE_BYPASS_ENABLE 1
-`define RV_ICACHE_NUM_WAYS 2
-`define RV_ICACHE_SIZE 16
-`define RV_NMI_VEC 'h11110000
-`define RV_DCCM_EADR 32'hf0040fff
-`define RV_DCCM_SIZE 4
-`define RV_DCCM_REGION 4'hf
-`define RV_DCCM_RESERVED 'h400
-`define RV_DCCM_INDEX_BITS 8
-`define RV_DCCM_ROWS 256
-`define RV_DCCM_FDATA_WIDTH 39
-`define RV_DCCM_NUM_BANKS_4 
-`define RV_DCCM_NUM_BANKS 4
-`define RV_DCCM_BITS 12
-`define RV_DCCM_DATA_WIDTH 32
-`define RV_DCCM_SIZE_4 
-`define RV_DCCM_OFFSET 28'h40000
-`define RV_DCCM_WIDTH_BITS 2
-`define RV_DCCM_BYTE_WIDTH 4
-`define RV_DCCM_ENABLE 1
-`define RV_DCCM_ECC_WIDTH 7
-`define RV_DCCM_BANK_BITS 2
-`define RV_DCCM_DATA_CELL ram_256x39
-`define RV_DCCM_SADR 32'hf0040000
-`define RV_LSU_SB_BITS 12
-`define RV_RESET_VEC 'haffff000
-`define RV_PIC_BITS 15
-`define RV_PIC_MEIGWCTRL_OFFSET 'h4000
-`define RV_PIC_MEIGWCTRL_MASK 'h3
-`define RV_PIC_MEIGWCLR_OFFSET 'h5000
-`define RV_PIC_MEIE_MASK 'h1
-`define RV_PIC_MEIP_MASK 'h0
-`define RV_PIC_MEIPT_COUNT 31
-`define RV_PIC_MEIPL_COUNT 31
-`define RV_PIC_MEIPT_MASK 'h0
-`define RV_PIC_BASE_ADDR 32'hf00c0000
-`define RV_PIC_MEIPL_MASK 'hf
-`define RV_PIC_INT_WORDS 1
-`define RV_PIC_MPICCFG_MASK 'h1
-`define RV_PIC_MEIPT_OFFSET 'h3004
-`define RV_PIC_TOTAL_INT_PLUS1 32
-`define RV_PIC_MEIPL_OFFSET 'h0000
-`define RV_PIC_MEIE_COUNT 31
-`define RV_PIC_MEIGWCTRL_COUNT 31
-`define RV_PIC_REGION 4'hf
-`define RV_PIC_MEIGWCLR_MASK 'h0
-`define RV_PIC_SIZE 32
-`define RV_PIC_MEIE_OFFSET 'h2000
-`define RV_PIC_MPICCFG_OFFSET 'h3000
-`define RV_PIC_MPICCFG_COUNT 1
-`define RV_PIC_MEIP_OFFSET 'h1000
-`define RV_PIC_TOTAL_INT 31
-`define RV_PIC_OFFSET 10'hc0000
-`define RV_PIC_MEIGWCLR_COUNT 31
-`define RV_PIC_MEIP_COUNT 1
-`define RV_TARGET default
-`define RV_NUMIREGS 32
-`undef RV_ASSERT_ON
diff --git a/verilog/rtl/BrqRV_EB1/design/dbg/eb1_dbg.sv b/verilog/rtl/BrqRV_EB1/design/dbg/eb1_dbg.sv
deleted file mode 100644
index 72a03f6..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dbg/eb1_dbg.sv
+++ /dev/null
@@ -1,753 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-// $Id$
-//
-// Function: Top level brqrv core file to control the debug mode
-// Comments: Responsible to put the rest of the core in quiesce mode,
-//           Send the commands/address. sends WrData and Recieve read Data.
-//           And then Resume the core to do the normal mode
-// Author  :
-//********************************************************************************
-module eb1_dbg
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   // outputs to the core for command and data interface
-   output logic [31:0]                 dbg_cmd_addr,
-   output logic [31:0]                 dbg_cmd_wrdata,
-   output logic                        dbg_cmd_valid,
-   output logic                        dbg_cmd_write,             // 1: write command, 0: read_command
-   output logic [1:0]                  dbg_cmd_type,              // 0:gpr 1:csr 2: memory
-   output logic [1:0]                  dbg_cmd_size,              // size of the abstract mem access debug command
-   output logic                        dbg_core_rst_l,            // core reset from dm
-
-   // inputs back from the core/dec
-   input logic [31:0]                  core_dbg_rddata,
-   input logic                         core_dbg_cmd_done,         // This will be treated like a valid signal
-   input logic                         core_dbg_cmd_fail,         // Exception during command run
-
-   // Signals to dma to get a bubble
-   output logic                        dbg_dma_bubble,            // Debug needs a bubble to send a valid
-   input  logic                        dma_dbg_ready,             // DMA is ready to accept debug request
-
-   // interface with the rest of the core to halt/resume handshaking
-   output logic                        dbg_halt_req,              // This is a pulse
-   output logic                        dbg_resume_req,            // Debug sends a resume requests. Pulse
-   input  logic                        dec_tlu_debug_mode,        // Core is in debug mode
-   input  logic                        dec_tlu_dbg_halted,        // The core has finished the queiscing sequence. Core is halted now
-   input  logic                        dec_tlu_mpc_halted_only,   // Only halted due to MPC
-   input  logic                        dec_tlu_resume_ack,        // core sends back an ack for the resume (pulse)
-
-   // inputs from the JTAG
-   input logic                         dmi_reg_en,                // read or write
-   input logic [6:0]                   dmi_reg_addr,              // address of DM register
-   input logic                         dmi_reg_wr_en,             // write instruction
-   input logic [31:0]                  dmi_reg_wdata,             // write data
-
-   // output
-   output logic [31:0]                 dmi_reg_rdata,             // read data
-
-   // AXI Write Channels
-   output logic                        sb_axi_awvalid,
-   input  logic                        sb_axi_awready,
-   output logic [pt.SB_BUS_TAG-1:0]    sb_axi_awid,
-   output logic [31:0]                 sb_axi_awaddr,
-   output logic [3:0]                  sb_axi_awregion,
-   output logic [7:0]                  sb_axi_awlen,
-   output logic [2:0]                  sb_axi_awsize,
-   output logic [1:0]                  sb_axi_awburst,
-   output logic                        sb_axi_awlock,
-   output logic [3:0]                  sb_axi_awcache,
-   output logic [2:0]                  sb_axi_awprot,
-   output logic [3:0]                  sb_axi_awqos,
-
-   output logic                        sb_axi_wvalid,
-   input  logic                        sb_axi_wready,
-   output logic [63:0]                 sb_axi_wdata,
-   output logic [7:0]                  sb_axi_wstrb,
-   output logic                        sb_axi_wlast,
-
-   input  logic                        sb_axi_bvalid,
-   output logic                        sb_axi_bready,
-   input  logic [1:0]                  sb_axi_bresp,
-
-   // AXI Read Channels
-   output logic                        sb_axi_arvalid,
-   input  logic                        sb_axi_arready,
-   output logic [pt.SB_BUS_TAG-1:0]    sb_axi_arid,
-   output logic [31:0]                 sb_axi_araddr,
-   output logic [3:0]                  sb_axi_arregion,
-   output logic [7:0]                  sb_axi_arlen,
-   output logic [2:0]                  sb_axi_arsize,
-   output logic [1:0]                  sb_axi_arburst,
-   output logic                        sb_axi_arlock,
-   output logic [3:0]                  sb_axi_arcache,
-   output logic [2:0]                  sb_axi_arprot,
-   output logic [3:0]                  sb_axi_arqos,
-
-   input  logic                        sb_axi_rvalid,
-   output logic                        sb_axi_rready,
-   input  logic [63:0]                 sb_axi_rdata,
-   input  logic [1:0]                  sb_axi_rresp,
-
-   input logic                         dbg_bus_clk_en,
-
-   // general inputs
-   input logic                         clk,
-   input logic                         rst_l,        // This includes both top rst and debug rst
-   input logic                         dbg_rst_l,
-   input logic                         clk_override,
-   input logic                         scan_mode
-);
-
-
-   typedef enum logic [3:0] {IDLE=4'h0, HALTING=4'h1, HALTED=4'h2, CORE_CMD_START=4'h3, CORE_CMD_WAIT=4'h4, SB_CMD_START=4'h5, SB_CMD_SEND=4'h6, SB_CMD_RESP=4'h7, CMD_DONE=4'h8, RESUMING=4'h9} state_t;
-   typedef enum logic [3:0] {SBIDLE=4'h0, WAIT_RD=4'h1, WAIT_WR=4'h2, CMD_RD=4'h3, CMD_WR=4'h4, CMD_WR_ADDR=4'h5, CMD_WR_DATA=4'h6, RSP_RD=4'h7, RSP_WR=4'h8, DONE=4'h9} sb_state_t;
-
-   state_t       dbg_state;
-   state_t       dbg_nxtstate;
-   logic         dbg_state_en;
-   // these are the registers that the debug module implements
-   logic [31:0]  dmstatus_reg;        // [26:24]-dmerr, [17:16]-resume ack, [9:8]-halted, [3:0]-version
-   logic [31:0]  dmcontrol_reg;       // dmcontrol register has only 6 bits implemented. 31: haltreq, 30: resumereq, 29: haltreset, 28: ackhavereset, 1: ndmreset, 0: dmactive.
-   logic [31:0]  command_reg;
-   logic [31:0]  abstractcs_reg;      // bits implemted are [12] - busy and [10:8]= command error
-   logic [31:0]  haltsum0_reg;
-   logic [31:0]  data0_reg;
-   logic [31:0]  data1_reg;
-
-   // data 0
-   logic [31:0]  data0_din;
-   logic         data0_reg_wren, data0_reg_wren0, data0_reg_wren1, data0_reg_wren2;
-   // data 1
-   logic [31:0]  data1_din;
-   logic         data1_reg_wren, data1_reg_wren0, data1_reg_wren1;
-   // abstractcs
-   logic         abstractcs_busy_wren;
-   logic         abstractcs_busy_din;
-   logic [2:0]   abstractcs_error_din;
-   logic         abstractcs_error_sel0, abstractcs_error_sel1, abstractcs_error_seb1, abstractcs_error_sel3, abstractcs_error_sel4, abstractcs_error_sel5, abstractcs_error_sel6;
-   logic         dbg_sb_bus_error;
-   // abstractauto
-   logic         abstractauto_reg_wren;
-   logic [1:0]   abstractauto_reg;
-
-   // dmstatus
-   logic         dmstatus_resumeack_wren;
-   logic         dmstatus_resumeack_din;
-   logic         dmstatus_haveresetn_wren;
-   logic         dmstatus_resumeack;
-   logic         dmstatus_unavail;
-   logic         dmstatus_running;
-   logic         dmstatus_halted;
-   logic         dmstatus_havereset, dmstatus_haveresetn;
-
-   // dmcontrol
-   logic         resumereq;
-   logic         dmcontrol_wren, dmcontrol_wren_Q;
-   // command
-   logic         execute_command_ns, execute_command;
-   logic         command_wren, command_regno_wren;
-   logic         command_transfer_din;
-   logic         command_postexec_din;
-   logic [31:0]  command_din;
-   logic [3:0]   dbg_cmd_addr_incr;
-   logic [31:0]  dbg_cmd_curr_addr;
-   logic [31:0]  dbg_cmd_next_addr;
-
-   // needed to send the read data back for dmi reads
-   logic  [31:0] dmi_reg_rdata_din;
-
-   sb_state_t    sb_state;
-   sb_state_t    sb_nxtstate;
-   logic         sb_state_en;
-
-   //System bus section
-   logic              sbcs_wren;
-   logic              sbcs_sbbusy_wren;
-   logic              sbcs_sbbusy_din;
-   logic              sbcs_sbbusyerror_wren;
-   logic              sbcs_sbbusyerror_din;
-
-   logic              sbcs_sberror_wren;
-   logic [2:0]        sbcs_sberror_din;
-   logic              sbcs_unaligned;
-   logic              sbcs_illegal_size;
-   logic [19:15]      sbcs_reg_int;
-
-   // data
-   logic              sbdata0_reg_wren0;
-   logic              sbdata0_reg_wren1;
-   logic              sbdata0_reg_wren;
-   logic [31:0]       sbdata0_din;
-
-   logic              sbdata1_reg_wren0;
-   logic              sbdata1_reg_wren1;
-   logic              sbdata1_reg_wren;
-   logic [31:0]       sbdata1_din;
-
-   logic              sbaddress0_reg_wren0;
-   logic              sbaddress0_reg_wren1;
-   logic              sbaddress0_reg_wren;
-   logic [31:0]       sbaddress0_reg_din;
-   logic [3:0]        sbaddress0_incr;
-   logic              sbreadonaddr_access;
-   logic              sbreadondata_access;
-   logic              sbdata0wr_access;
-
-   logic              sb_abmem_cmd_done_in, sb_abmem_data_done_in;
-   logic              sb_abmem_cmd_done_en, sb_abmem_data_done_en;
-   logic              sb_abmem_cmd_done, sb_abmem_data_done;
-   logic [31:0]       abmem_addr;
-   logic              abmem_addr_in_dccm_region, abmem_addr_in_iccm_region, abmem_addr_in_pic_region;
-   logic              abmem_addr_core_local;
-   logic              abmem_addr_external;
-
-   logic              sb_cmd_pending, sb_abmem_cmd_pending;
-   logic              sb_abmem_cmd_write;
-   logic [2:0]        sb_abmem_cmd_size;
-   logic [31:0]       sb_abmem_cmd_addr;
-   logic [31:0]       sb_abmem_cmd_wdata;
-
-   logic [2:0]        sb_cmd_size;
-   logic [31:0]       sb_cmd_addr;
-   logic [63:0]       sb_cmd_wdata;
-
-   logic              sb_bus_cmd_read, sb_bus_cmd_write_addr, sb_bus_cmd_write_data;
-   logic              sb_bus_rsp_read, sb_bus_rsp_write;
-   logic              sb_bus_rsp_error;
-   logic [63:0]       sb_bus_rdata;
-
-   //registers
-   logic [31:0]       sbcs_reg;
-   logic [31:0]       sbaddress0_reg;
-   logic [31:0]       sbdata0_reg;
-   logic [31:0]       sbdata1_reg;
-
-   logic              sb_abmem_cmd_arvalid, sb_abmem_cmd_awvalid, sb_abmem_cmd_wvalid;
-   logic              sb_abmem_read_pend;
-   logic              sb_cmd_awvalid, sb_cmd_wvalid, sb_cmd_arvalid;
-   logic              sb_read_pend;
-   logic [31:0]       sb_axi_addr;
-   logic [63:0]       sb_axi_wrdata;
-   logic [2:0]        sb_axi_size;
-
-   logic              dbg_dm_rst_l;
-
-   //clken
-   logic              dbg_free_clken;
-   logic              dbg_free_clk;
-
-   logic              sb_free_clken;
-   logic              sb_free_clk;
-
-   // clocking
-   // used for the abstract commands.
-   assign dbg_free_clken  = dmi_reg_en | execute_command | (dbg_state != IDLE) | dbg_state_en | dec_tlu_dbg_halted | dec_tlu_mpc_halted_only | dec_tlu_debug_mode | dbg_halt_req | clk_override;
-
-   // used for the system bus
-   assign sb_free_clken = dmi_reg_en | execute_command | sb_state_en | (sb_state != SBIDLE) | clk_override;
-
-   rvoclkhdr dbg_free_cgc    (.en(dbg_free_clken), .l1clk(dbg_free_clk), .*);
-   rvoclkhdr sb_free_cgc     (.en(sb_free_clken), .l1clk(sb_free_clk), .*);
-
-   // end clocking section
-
-   // Reset logic
-   assign dbg_dm_rst_l = dbg_rst_l & (dmcontrol_reg[0] | scan_mode);
-   assign dbg_core_rst_l = ~dmcontrol_reg[1] | scan_mode;
-
-   // system bus register
-   // sbcs[31:29], sbcs - [22]:sbbusyerror, [21]: sbbusy, [20]:sbreadonaddr, [19:17]:sbaccess, [16]:sbautoincrement, [15]:sbreadondata, [14:12]:sberror, sbsize=32, 128=0, 64/32/16/8 are legal
-   assign        sbcs_reg[31:29] = 3'b1;
-   assign        sbcs_reg[28:23] = '0;
-   assign        sbcs_reg[19:15] = {sbcs_reg_int[19], ~sbcs_reg_int[18], sbcs_reg_int[17:15]};
-   assign        sbcs_reg[11:5]  = 7'h20;
-   assign        sbcs_reg[4:0]   = 5'b01111;
-   assign        sbcs_wren = (dmi_reg_addr ==  7'h38) & dmi_reg_en & dmi_reg_wr_en & (sb_state == SBIDLE);
-   assign        sbcs_sbbusyerror_wren = (sbcs_wren & dmi_reg_wdata[22]) |
-                                         (sbcs_reg[21] & dmi_reg_en & ((dmi_reg_wr_en & (dmi_reg_addr == 7'h39)) | (dmi_reg_addr == 7'h3c) | (dmi_reg_addr == 7'h3d)));
-   assign        sbcs_sbbusyerror_din = ~(sbcs_wren & dmi_reg_wdata[22]);   // Clear when writing one
-
-   rvdffs #(1) sbcs_sbbusyerror_reg  (.din(sbcs_sbbusyerror_din),  .dout(sbcs_reg[22]),    .en(sbcs_sbbusyerror_wren), .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(1) sbcs_sbbusy_reg       (.din(sbcs_sbbusy_din),       .dout(sbcs_reg[21]),    .en(sbcs_sbbusy_wren),      .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(1) sbcs_sbreadonaddr_reg (.din(dmi_reg_wdata[20]),     .dout(sbcs_reg[20]),    .en(sbcs_wren),             .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(5) sbcs_misc_reg         (.din({dmi_reg_wdata[19],~dmi_reg_wdata[18],dmi_reg_wdata[17:15]}),
-                                      .dout(sbcs_reg_int[19:15]), .en(sbcs_wren),             .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(3) sbcs_error_reg        (.din(sbcs_sberror_din[2:0]), .dout(sbcs_reg[14:12]), .en(sbcs_sberror_wren),     .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-
-   assign sbcs_unaligned =    ((sbcs_reg[19:17] == 3'b001) &  sbaddress0_reg[0]) |
-                              ((sbcs_reg[19:17] == 3'b010) &  (|sbaddress0_reg[1:0])) |
-                              ((sbcs_reg[19:17] == 3'b011) &  (|sbaddress0_reg[2:0]));
-
-   assign sbcs_illegal_size = sbcs_reg[19];    // Anything bigger than 64 bits is illegal
-
-   assign sbaddress0_incr[3:0] = ({4{(sbcs_reg[19:17] == 3'h0)}} &  4'b0001) |
-                                 ({4{(sbcs_reg[19:17] == 3'h1)}} &  4'b0010) |
-                                 ({4{(sbcs_reg[19:17] == 3'h2)}} &  4'b0100) |
-                                 ({4{(sbcs_reg[19:17] == 3'h3)}} &  4'b1000);
-
-   // sbdata
-   assign        sbdata0_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h3c);   // write data only when single read is 0
-   assign        sbdata0_reg_wren1   = (sb_state == RSP_RD) & sb_state_en & ~sbcs_sberror_wren;
-   assign        sbdata0_reg_wren    = sbdata0_reg_wren0 | sbdata0_reg_wren1;
-
-   assign        sbdata1_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h3d);   // write data only when single read is 0;
-   assign        sbdata1_reg_wren1   = (sb_state == RSP_RD) & sb_state_en & ~sbcs_sberror_wren;
-   assign        sbdata1_reg_wren    = sbdata1_reg_wren0 | sbdata1_reg_wren1;
-
-   assign        sbdata0_din[31:0]   = ({32{sbdata0_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                       ({32{sbdata0_reg_wren1}} & sb_bus_rdata[31:0]);
-   assign        sbdata1_din[31:0]   = ({32{sbdata1_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                       ({32{sbdata1_reg_wren1}} & sb_bus_rdata[63:32]);
-
-   rvdffe #(32)    dbg_sbdata0_reg    (.*, .din(sbdata0_din[31:0]), .dout(sbdata0_reg[31:0]), .en(sbdata0_reg_wren), .rst_l(dbg_dm_rst_l));
-   rvdffe #(32)    dbg_sbdata1_reg    (.*, .din(sbdata1_din[31:0]), .dout(sbdata1_reg[31:0]), .en(sbdata1_reg_wren), .rst_l(dbg_dm_rst_l));
-
-    // sbaddress
-   assign        sbaddress0_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h39);
-   assign        sbaddress0_reg_wren    = sbaddress0_reg_wren0 | sbaddress0_reg_wren1;
-   assign        sbaddress0_reg_din[31:0]= ({32{sbaddress0_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                           ({32{sbaddress0_reg_wren1}} & (sbaddress0_reg[31:0] + {28'b0,sbaddress0_incr[3:0]}));
-   rvdffe #(32)    dbg_sbaddress0_reg    (.*, .din(sbaddress0_reg_din[31:0]), .dout(sbaddress0_reg[31:0]), .en(sbaddress0_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   assign sbreadonaddr_access = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h39) & sbcs_reg[20];   // if readonaddr is set the next command will start upon writing of addr0
-   assign sbreadondata_access = dmi_reg_en & ~dmi_reg_wr_en & (dmi_reg_addr == 7'h3c) & sbcs_reg[15];  // if readondata is set the next command will start upon reading of data0
-   assign sbdata0wr_access  = dmi_reg_en &  dmi_reg_wr_en & (dmi_reg_addr == 7'h3c);                   // write to sbdata0 will start write command to system bus
-
-   // memory mapped registers
-   // dmcontrol register has only 5 bits implemented. 31: haltreq, 30: resumereq, 28: ackhavereset, 1: ndmreset, 0: dmactive.
-   // rest all the bits are zeroed out
-   // dmactive flop is reset based on core rst_l, all other flops use dm_rst_l
-   assign dmcontrol_wren      = (dmi_reg_addr ==  7'h10) & dmi_reg_en & dmi_reg_wr_en;
-   assign dmcontrol_reg[29]   = '0;
-   assign dmcontrol_reg[27:2] = '0;
-   assign resumereq           = dmcontrol_reg[30] & ~dmcontrol_reg[31] & dmcontrol_wren_Q;
-   rvdffs #(4) dmcontrolff (.din({dmi_reg_wdata[31:30],dmi_reg_wdata[28],dmi_reg_wdata[1]}), .dout({dmcontrol_reg[31:30], dmcontrol_reg[28], dmcontrol_reg[1]}), .en(dmcontrol_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdffs #(1) dmcontrol_dmactive_ff (.din(dmi_reg_wdata[0]), .dout(dmcontrol_reg[0]), .en(dmcontrol_wren), .rst_l(dbg_rst_l), .clk(dbg_free_clk));
-   rvdff  #(1) dmcontrol_wrenff(.din(dmcontrol_wren), .dout(dmcontrol_wren_Q), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-   // dmstatus register bits that are implemented
-   // [19:18]-havereset,[17:16]-resume ack, [9:8]-halted, [3:0]-version
-   // rest all the bits are zeroed out
-   //assign dmstatus_wren       = (dmi_reg_addr[31:0] ==  32'h11) & dmi_reg_en;
-   assign dmstatus_reg[31:20] = '0;
-   assign dmstatus_reg[19:18] = {2{dmstatus_havereset}};
-   assign dmstatus_reg[15:14] = '0;
-   assign dmstatus_reg[7]     = '1;
-   assign dmstatus_reg[6:4]   = '0;
-   assign dmstatus_reg[17:16] = {2{dmstatus_resumeack}};
-   assign dmstatus_reg[13:12] = {2{dmstatus_unavail}};
-   assign dmstatus_reg[11:10] = {2{dmstatus_running}};
-   assign dmstatus_reg[9:8]   = {2{dmstatus_halted}};
-   assign dmstatus_reg[3:0]   = 4'h2;
-
-   assign dmstatus_resumeack_wren = ((dbg_state == RESUMING) & dec_tlu_resume_ack) | (dmstatus_resumeack & resumereq & dmstatus_halted);
-   assign dmstatus_resumeack_din  = (dbg_state == RESUMING) & dec_tlu_resume_ack;
-
-   assign dmstatus_haveresetn_wren  = (dmi_reg_addr == 7'h10) & dmi_reg_wdata[28] & dmi_reg_en & dmi_reg_wr_en & dmcontrol_reg[0];   // clear the havereset
-   assign dmstatus_havereset        = ~dmstatus_haveresetn;
-
-   assign dmstatus_unavail = dmcontrol_reg[1] | ~rst_l;
-   assign dmstatus_running = ~(dmstatus_unavail | dmstatus_halted);
-
-   rvdffs  #(1) dmstatus_resumeack_reg  (.din(dmstatus_resumeack_din), .dout(dmstatus_resumeack), .en(dmstatus_resumeack_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdff   #(1) dmstatus_halted_reg     (.din(dec_tlu_dbg_halted & ~dec_tlu_mpc_halted_only),     .dout(dmstatus_halted), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdffs  #(1) dmstatus_haveresetn_reg (.din(1'b1), .dout(dmstatus_haveresetn), .en(dmstatus_haveresetn_wren), .rst_l(rst_l), .clk(dbg_free_clk));
-
-   // haltsum0 register
-   assign haltsum0_reg[31:1] = '0;
-   assign haltsum0_reg[0]    = dmstatus_halted;
-
-   // abstractcs register
-   // bits implemted are [12] - busy and [10:8]= command error
-   assign        abstractcs_reg[31:13] = '0;
-   assign        abstractcs_reg[11]    = '0;
-   assign        abstractcs_reg[7:4]   = '0;
-   assign        abstractcs_reg[3:0]   = 4'h2;    // One data register
-
-   assign        abstractcs_error_sel0 = abstractcs_reg[12] & ~(|abstractcs_reg[10:8]) & dmi_reg_en & ((dmi_reg_wr_en & ((dmi_reg_addr == 7'h16) | (dmi_reg_addr == 7'h17)) | (dmi_reg_addr == 7'h18)) |
-                                                                                                       (dmi_reg_addr == 7'h4) | (dmi_reg_addr == 7'h5));
-   assign        abstractcs_error_sel1 = execute_command & ~(|abstractcs_reg[10:8]) &
-                                         ((~((command_reg[31:24] == 8'b0) | (command_reg[31:24] == 8'h2)))                      |   // Illegal command
-                                          (((command_reg[22:20] == 3'b011) | (command_reg[22])) & (command_reg[31:24] == 8'h2)) |   // Illegal abstract memory size (can't be DW or higher)
-                                          ((command_reg[22:20] != 3'b010) & ((command_reg[31:24] == 8'h0) & command_reg[17]))   |   // Illegal abstract reg size
-                                          ((command_reg[31:24] == 8'h0) & command_reg[18]));                                          //postexec for abstract register access
-   assign        abstractcs_error_seb1 = ((core_dbg_cmd_done & core_dbg_cmd_fail) |                   // exception from core
-                                          (execute_command & (command_reg[31:24] == 8'h0) &           // unimplemented regs
-                                                (((command_reg[15:12] == 4'h1) & (command_reg[11:5] != 0)) | (command_reg[15:13] != 0)))) & ~(|abstractcs_reg[10:8]);
-   assign        abstractcs_error_sel3 = execute_command & (dbg_state != HALTED) & ~(|abstractcs_reg[10:8]);
-   assign        abstractcs_error_sel4 = dbg_sb_bus_error & dbg_bus_clk_en & ~(|abstractcs_reg[10:8]);// sb bus error for abstract memory command
-   assign        abstractcs_error_sel5 = execute_command & (command_reg[31:24] == 8'h2) & ~(|abstractcs_reg[10:8]) &
-                                         (((command_reg[22:20] == 3'b001) & data1_reg[0]) | ((command_reg[22:20] == 3'b010) & (|data1_reg[1:0])));  //Unaligned address for abstract memory
-   assign        abstractcs_error_sel6 = (dmi_reg_addr ==  7'h16) & dmi_reg_en & dmi_reg_wr_en;
-
-   assign        abstractcs_error_din[2:0]  = abstractcs_error_sel0 ? 3'b001 :                  // writing command or abstractcs while a command was executing. Or accessing data0
-                                                 abstractcs_error_sel1 ? 3'b010 :               // writing a illegal command type to cmd field of command
-                                                    abstractcs_error_seb1 ? 3'b011 :            // exception while running command
-                                                       abstractcs_error_sel3 ? 3'b100 :         // writing a comnand when not in the halted state
-                                                          abstractcs_error_sel4 ? 3'b101 :      // Bus error
-                                                             abstractcs_error_sel5 ? 3'b111 :   // unaligned or illegal size abstract memory command
-                                                                abstractcs_error_sel6 ? (~dmi_reg_wdata[10:8] & abstractcs_reg[10:8]) :   //W1C
-                                                                                        abstractcs_reg[10:8];                             //hold
-
-   rvdffs #(1) dmabstractcs_busy_reg  (.din(abstractcs_busy_din), .dout(abstractcs_reg[12]), .en(abstractcs_busy_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdff  #(3) dmabstractcs_error_reg (.din(abstractcs_error_din[2:0]), .dout(abstractcs_reg[10:8]), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-    // abstract auto reg
-   assign abstractauto_reg_wren  = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h18) & ~abstractcs_reg[12];
-   rvdffs #(2) dbg_abstractauto_reg (.*, .din(dmi_reg_wdata[1:0]), .dout(abstractauto_reg[1:0]), .en(abstractauto_reg_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-   // command register - implemented all the bits in this register
-   // command[16] = 1: write, 0: read
-   assign execute_command_ns = command_wren |
-                               (dmi_reg_en & ~abstractcs_reg[12] & (((dmi_reg_addr == 7'h4) & abstractauto_reg[0]) | ((dmi_reg_addr == 7'h5) & abstractauto_reg[1])));
-   assign command_wren = (dmi_reg_addr ==  7'h17) & dmi_reg_en & dmi_reg_wr_en;
-   assign command_regno_wren = command_wren | ((command_reg[31:24] == 8'h0) & command_reg[19] & (dbg_state == CMD_DONE) & ~(|abstractcs_reg[10:8]));  // aarpostincrement
-   assign command_postexec_din = (dmi_reg_wdata[31:24] == 8'h0) & dmi_reg_wdata[18];
-   assign command_transfer_din = (dmi_reg_wdata[31:24] == 8'h0) & dmi_reg_wdata[17];
-   assign command_din[31:16] = {dmi_reg_wdata[31:24],1'b0,dmi_reg_wdata[22:19],command_postexec_din,command_transfer_din, dmi_reg_wdata[16]};
-   assign command_din[15:0] =  command_wren ? dmi_reg_wdata[15:0] : dbg_cmd_next_addr[15:0];
-   rvdff  #(1)  execute_commandff   (.*, .din(execute_command_ns), .dout(execute_command), .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l));
-   rvdffe #(16) dmcommand_reg       (.*, .din(command_din[31:16]), .dout(command_reg[31:16]), .en(command_wren), .rst_l(dbg_dm_rst_l));
-   rvdffe #(16) dmcommand_regno_reg (.*, .din(command_din[15:0]),  .dout(command_reg[15:0]),  .en(command_regno_wren), .rst_l(dbg_dm_rst_l));
-
-  // data0 reg
-   assign data0_reg_wren0   = (dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h4) & (dbg_state == HALTED) & ~abstractcs_reg[12]);
-   assign data0_reg_wren1   = core_dbg_cmd_done & (dbg_state == CORE_CMD_WAIT) & ~command_reg[16];
-   assign data0_reg_wren    = data0_reg_wren0 | data0_reg_wren1 | data0_reg_wren2;
-
-   assign data0_din[31:0]   = ({32{data0_reg_wren0}} & dmi_reg_wdata[31:0])   |
-                              ({32{data0_reg_wren1}} & core_dbg_rddata[31:0]) |
-                              ({32{data0_reg_wren2}} & sb_bus_rdata[31:0]);
-
-   rvdffe #(32) dbg_data0_reg (.*, .din(data0_din[31:0]), .dout(data0_reg[31:0]), .en(data0_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   // data 1
-   assign data1_reg_wren0   = (dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h5) & (dbg_state == HALTED) & ~abstractcs_reg[12]);
-   assign data1_reg_wren1   = (dbg_state == CMD_DONE) & (command_reg[31:24] == 8'h2) & command_reg[19] & ~(|abstractcs_reg[10:8]);   // aampostincrement
-   assign data1_reg_wren    = data1_reg_wren0 | data1_reg_wren1;
-
-   assign data1_din[31:0]   = ({32{data1_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                              ({32{data1_reg_wren1}} & dbg_cmd_next_addr[31:0]);
-
-   rvdffe #(32)    dbg_data1_reg    (.*, .din(data1_din[31:0]), .dout(data1_reg[31:0]), .en(data1_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   rvdffs #(1) sb_abmem_cmd_doneff  (.din(sb_abmem_cmd_done_in),  .dout(sb_abmem_cmd_done),  .en(sb_abmem_cmd_done_en),  .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l), .*);
-   rvdffs #(1) sb_abmem_data_doneff (.din(sb_abmem_data_done_in), .dout(sb_abmem_data_done), .en(sb_abmem_data_done_en), .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l), .*);
-
-   // FSM to control the debug mode entry, command send/recieve, and Resume flow.
-   always_comb begin
-      dbg_nxtstate            = IDLE;
-      dbg_state_en            = 1'b0;
-      abstractcs_busy_wren    = 1'b0;
-      abstractcs_busy_din     = 1'b0;
-      dbg_halt_req            = dmcontrol_wren_Q & dmcontrol_reg[31];      // single pulse output to the core. Need to drive every time this register is written since core might be halted due to MPC
-      dbg_resume_req          = 1'b0;                                      // single pulse output to the core
-      dbg_sb_bus_error        = 1'b0;
-      data0_reg_wren2         = 1'b0;
-      sb_abmem_cmd_done_in    = 1'b0;
-      sb_abmem_data_done_in   = 1'b0;
-      sb_abmem_cmd_done_en    = 1'b0;
-      sb_abmem_data_done_en   = 1'b0;
-
-       case (dbg_state)
-            IDLE: begin
-                     dbg_nxtstate         = (dmstatus_reg[9] | dec_tlu_mpc_halted_only) ? HALTED : HALTING;         // initiate the halt command to the core
-                     dbg_state_en         = dmcontrol_reg[31] | dmstatus_reg[9] | dec_tlu_mpc_halted_only;      // when the jtag writes the halt bit in the DM register, OR when the status indicates H
-                     dbg_halt_req         = dmcontrol_reg[31];               // only when jtag has written the halt_req bit in the control. Removed debug mode qualification during MPC changes
-            end
-            HALTING : begin
-                     dbg_nxtstate         = HALTED;                                 // Goto HALTED once the core sends an ACK
-                     dbg_state_en         = dmstatus_reg[9] | dec_tlu_mpc_halted_only;     // core indicates halted
-            end
-            HALTED: begin
-                     // wait for halted to go away before send to resume. Else start of new command
-                     dbg_nxtstate         = dmstatus_reg[9] ? (resumereq ? RESUMING : (((command_reg[31:24] == 8'h2) & abmem_addr_external) ? SB_CMD_START : CORE_CMD_START)) :
-                                                                                    (dmcontrol_reg[31] ? HALTING : IDLE);       // This is MPC halted case
-                     dbg_state_en         = (dmstatus_reg[9] & resumereq) | execute_command | ~(dmstatus_reg[9] | dec_tlu_mpc_halted_only);
-                     abstractcs_busy_wren = dbg_state_en & ((dbg_nxtstate == CORE_CMD_START) | (dbg_nxtstate == SB_CMD_START));                 // write busy when a new command was written by jtag
-                     abstractcs_busy_din  = 1'b1;
-                     dbg_resume_req       = dbg_state_en & (dbg_nxtstate == RESUMING);                       // single cycle pulse to core if resuming
-            end
-            CORE_CMD_START: begin
-                     // Don't execute the command if cmderror or transfer=0 for abstract register access
-                     dbg_nxtstate         = ((|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17])) ? CMD_DONE : CORE_CMD_WAIT;     // new command sent to the core
-                     dbg_state_en         = dbg_cmd_valid | (|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17]);
-            end
-            CORE_CMD_WAIT: begin
-                     dbg_nxtstate         = CMD_DONE;
-                     dbg_state_en         = core_dbg_cmd_done;                   // go to done state for one cycle after completing current command
-            end
-            SB_CMD_START: begin
-                     dbg_nxtstate         = (|abstractcs_reg[10:8]) ? CMD_DONE : SB_CMD_SEND;
-                     dbg_state_en         = (dbg_bus_clk_en & ~sb_cmd_pending) | (|abstractcs_reg[10:8]);
-            end
-            SB_CMD_SEND: begin
-                     sb_abmem_cmd_done_in = 1'b1;
-                     sb_abmem_data_done_in= 1'b1;
-                     sb_abmem_cmd_done_en = (sb_bus_cmd_read | sb_bus_cmd_write_addr) & dbg_bus_clk_en;
-                     sb_abmem_data_done_en= (sb_bus_cmd_read | sb_bus_cmd_write_data) & dbg_bus_clk_en;
-                     dbg_nxtstate         = SB_CMD_RESP;
-                     dbg_state_en         = (sb_abmem_cmd_done | sb_abmem_cmd_done_en) & (sb_abmem_data_done | sb_abmem_data_done_en) & dbg_bus_clk_en;
-            end
-            SB_CMD_RESP: begin
-                     dbg_nxtstate         = CMD_DONE;
-                     dbg_state_en         = (sb_bus_rsp_read | sb_bus_rsp_write) & dbg_bus_clk_en;
-                     dbg_sb_bus_error     = (sb_bus_rsp_read | sb_bus_rsp_write) & sb_bus_rsp_error & dbg_bus_clk_en;
-                     data0_reg_wren2      = dbg_state_en & ~sb_abmem_cmd_write & ~dbg_sb_bus_error;
-            end
-            CMD_DONE: begin
-                     dbg_nxtstate         = HALTED;
-                     dbg_state_en         = 1'b1;
-                     abstractcs_busy_wren = dbg_state_en;                    // remove the busy bit from the abstracts ( bit 12 )
-                     abstractcs_busy_din  = 1'b0;
-                     sb_abmem_cmd_done_in = 1'b0;
-                     sb_abmem_data_done_in= 1'b0;
-                     sb_abmem_cmd_done_en = 1'b1;
-                     sb_abmem_data_done_en= 1'b1;
-            end
-            RESUMING : begin
-                     dbg_nxtstate            = IDLE;
-                     dbg_state_en            = dmstatus_reg[17];             // resume ack has been updated in the dmstatus register
-           end
-           default : begin
-                     dbg_nxtstate            = IDLE;
-                     dbg_state_en            = 1'b0;
-                     abstractcs_busy_wren    = 1'b0;
-                     abstractcs_busy_din     = 1'b0;
-                     dbg_halt_req            = 1'b0;         // single pulse output to the core
-                     dbg_resume_req          = 1'b0;         // single pulse output to the core
-                     dbg_sb_bus_error        = 1'b0;
-                     data0_reg_wren2         = 1'b0;
-                     sb_abmem_cmd_done_in    = 1'b0;
-                     sb_abmem_data_done_in   = 1'b0;
-                     sb_abmem_cmd_done_en    = 1'b0;
-                     sb_abmem_data_done_en   = 1'b0;
-          end
-         endcase
-   end // always_comb begin
-
-   assign dmi_reg_rdata_din[31:0] = ({32{dmi_reg_addr == 7'h4}}  & data0_reg[31:0])      |
-                                    ({32{dmi_reg_addr == 7'h5}}  & data1_reg[31:0])      |
-                                    ({32{dmi_reg_addr == 7'h10}} & {2'b0,dmcontrol_reg[29],1'b0,dmcontrol_reg[27:0]})  |  // Read0 to Write only bits
-                                    ({32{dmi_reg_addr == 7'h11}} & dmstatus_reg[31:0])   |
-                                    ({32{dmi_reg_addr == 7'h16}} & abstractcs_reg[31:0]) |
-                                    ({32{dmi_reg_addr == 7'h17}} & command_reg[31:0])    |
-                                    ({32{dmi_reg_addr == 7'h18}} & {30'h0,abstractauto_reg[1:0]})    |
-                                    ({32{dmi_reg_addr == 7'h40}} & haltsum0_reg[31:0])   |
-                                    ({32{dmi_reg_addr == 7'h38}} & sbcs_reg[31:0])       |
-                                    ({32{dmi_reg_addr == 7'h39}} & sbaddress0_reg[31:0]) |
-                                    ({32{dmi_reg_addr == 7'h3c}} & sbdata0_reg[31:0])    |
-                                    ({32{dmi_reg_addr == 7'h3d}} & sbdata1_reg[31:0]);
-
-
-   rvdffs #($bits(state_t)) dbg_state_reg    (.din(dbg_nxtstate), .dout({dbg_state}), .en(dbg_state_en), .rst_l(dbg_dm_rst_l & rst_l), .clk(dbg_free_clk));
-   rvdffe #(32)             dmi_rddata_reg   (.din(dmi_reg_rdata_din[31:0]), .dout(dmi_reg_rdata[31:0]), .en(dmi_reg_en), .rst_l(dbg_dm_rst_l), .clk(clk), .*);
-
-   assign abmem_addr[31:0]      = data1_reg[31:0];
-   assign abmem_addr_core_local = (abmem_addr_in_dccm_region | abmem_addr_in_iccm_region | abmem_addr_in_pic_region);
-   assign abmem_addr_external   = ~abmem_addr_core_local;
-
-   assign abmem_addr_in_dccm_region = (abmem_addr[31:28] == pt.DCCM_REGION) & pt.DCCM_ENABLE;
-   assign abmem_addr_in_iccm_region = (abmem_addr[31:28] == pt.ICCM_REGION) & pt.ICCM_ENABLE;
-   assign abmem_addr_in_pic_region  = (abmem_addr[31:28] == pt.PIC_REGION);
-
-   // interface for the core
-   assign dbg_cmd_addr[31:0]    = (command_reg[31:24] == 8'h2) ? data1_reg[31:0]  : {20'b0, command_reg[11:0]};
-   assign dbg_cmd_wrdata[31:0]  = data0_reg[31:0];
-   assign dbg_cmd_valid         = (dbg_state == CORE_CMD_START) & ~((|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17]) | ((command_reg[31:24] == 8'h2) & abmem_addr_external)) & dma_dbg_ready;
-   assign dbg_cmd_write         = command_reg[16];
-   assign dbg_cmd_type[1:0]     = (command_reg[31:24] == 8'h2) ? 2'b10 : {1'b0, (command_reg[15:12] == 4'b0)};
-   assign dbg_cmd_size[1:0]     = command_reg[21:20];
-
-   assign dbg_cmd_addr_incr[3:0]  = (command_reg[31:24] == 8'h2) ? (4'h1 << sb_abmem_cmd_size[1:0]) : 4'h1;
-   assign dbg_cmd_curr_addr[31:0] = (command_reg[31:24] == 8'h2) ? data1_reg[31:0]  : {16'b0, command_reg[15:0]};
-   assign dbg_cmd_next_addr[31:0] = dbg_cmd_curr_addr[31:0] + {28'h0,dbg_cmd_addr_incr[3:0]};
-
-   // Ask DMA to stop taking bus trxns since debug request is done
-   assign dbg_dma_bubble = ((dbg_state == CORE_CMD_START) & ~(|abstractcs_reg[10:8])) | (dbg_state == CORE_CMD_WAIT);
-
-   assign sb_cmd_pending       = (sb_state == CMD_RD) | (sb_state == CMD_WR) | (sb_state == CMD_WR_ADDR) | (sb_state == CMD_WR_DATA) | (sb_state == RSP_RD) | (sb_state == RSP_WR);
-   assign sb_abmem_cmd_pending = (dbg_state == SB_CMD_START) | (dbg_state == SB_CMD_SEND) | (dbg_state== SB_CMD_RESP);
-
-
-  // system bus FSM
-  always_comb begin
-      sb_nxtstate            = SBIDLE;
-      sb_state_en            = 1'b0;
-      sbcs_sbbusy_wren       = 1'b0;
-      sbcs_sbbusy_din        = 1'b0;
-      sbcs_sberror_wren      = 1'b0;
-      sbcs_sberror_din[2:0]  = 3'b0;
-      sbaddress0_reg_wren1   = 1'b0;
-      case (sb_state)
-            SBIDLE: begin
-                     sb_nxtstate            = sbdata0wr_access ? WAIT_WR : WAIT_RD;
-                     sb_state_en            = (sbdata0wr_access | sbreadondata_access | sbreadonaddr_access) & ~(|sbcs_reg[14:12]) & ~sbcs_reg[22];
-                     sbcs_sbbusy_wren       = sb_state_en;                                                 // set the single read bit if it is a singlread command
-                     sbcs_sbbusy_din        = 1'b1;
-                     sbcs_sberror_wren      = sbcs_wren & (|dmi_reg_wdata[14:12]);                                            // write to clear the error bits
-                     sbcs_sberror_din[2:0]  = ~dmi_reg_wdata[14:12] & sbcs_reg[14:12];
-            end
-            WAIT_RD: begin
-                     sb_nxtstate           = (sbcs_unaligned | sbcs_illegal_size) ? DONE : CMD_RD;
-                     sb_state_en           = (dbg_bus_clk_en & ~sb_abmem_cmd_pending) | sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_wren     = sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_din[2:0] = sbcs_unaligned ? 3'b011 : 3'b100;
-            end
-            WAIT_WR: begin
-                     sb_nxtstate           = (sbcs_unaligned | sbcs_illegal_size) ? DONE : CMD_WR;
-                     sb_state_en           = (dbg_bus_clk_en & ~sb_abmem_cmd_pending) | sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_wren     = sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_din[2:0] = sbcs_unaligned ? 3'b011 : 3'b100;
-            end
-            CMD_RD : begin
-                     sb_nxtstate           = RSP_RD;
-                     sb_state_en           = sb_bus_cmd_read & dbg_bus_clk_en;
-            end
-            CMD_WR : begin
-                     sb_nxtstate           = (sb_bus_cmd_write_addr & sb_bus_cmd_write_data) ? RSP_WR : (sb_bus_cmd_write_data ? CMD_WR_ADDR : CMD_WR_DATA);
-                     sb_state_en           = (sb_bus_cmd_write_addr | sb_bus_cmd_write_data) & dbg_bus_clk_en;
-            end
-            CMD_WR_ADDR : begin
-                     sb_nxtstate           = RSP_WR;
-                     sb_state_en           = sb_bus_cmd_write_addr & dbg_bus_clk_en;
-            end
-            CMD_WR_DATA : begin
-                     sb_nxtstate           = RSP_WR;
-                     sb_state_en           = sb_bus_cmd_write_data & dbg_bus_clk_en;
-            end
-            RSP_RD: begin
-                     sb_nxtstate           = DONE;
-                     sb_state_en           = sb_bus_rsp_read & dbg_bus_clk_en;
-                     sbcs_sberror_wren     = sb_state_en & sb_bus_rsp_error;
-                     sbcs_sberror_din[2:0] = 3'b010;
-            end
-            RSP_WR: begin
-                     sb_nxtstate           = DONE;
-                     sb_state_en           = sb_bus_rsp_write & dbg_bus_clk_en;
-                     sbcs_sberror_wren     = sb_state_en & sb_bus_rsp_error;
-                     sbcs_sberror_din[2:0] = 3'b010;
-            end
-            DONE: begin
-                     sb_nxtstate            = SBIDLE;
-                     sb_state_en            = 1'b1;
-                     sbcs_sbbusy_wren       = 1'b1;                           // reset the single read
-                     sbcs_sbbusy_din        = 1'b0;
-                     sbaddress0_reg_wren1   = sbcs_reg[16] & (sbcs_reg[14:12] == 3'b0);    // auto increment was set and no error. Update to new address after completing the current command
-            end
-            default : begin
-                     sb_nxtstate            = SBIDLE;
-                     sb_state_en            = 1'b0;
-                     sbcs_sbbusy_wren       = 1'b0;
-                     sbcs_sbbusy_din        = 1'b0;
-                     sbcs_sberror_wren      = 1'b0;
-                     sbcs_sberror_din[2:0]  = 3'b0;
-                     sbaddress0_reg_wren1   = 1'b0;
-           end
-         endcase
-   end // always_comb begin
-
-   rvdffs #($bits(sb_state_t)) sb_state_reg (.din(sb_nxtstate), .dout({sb_state}), .en(sb_state_en), .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-
-   assign sb_abmem_cmd_write      = command_reg[16];
-   assign sb_abmem_cmd_size[2:0]  = {1'b0, command_reg[21:20]};
-   assign sb_abmem_cmd_addr[31:0] = abmem_addr[31:0];
-   assign sb_abmem_cmd_wdata[31:0] = data0_reg[31:0];
-
-   assign sb_cmd_size[2:0]   = sbcs_reg[19:17];
-   assign sb_cmd_wdata[63:0] = {sbdata1_reg[31:0], sbdata0_reg[31:0]};
-   assign sb_cmd_addr[31:0]  = sbaddress0_reg[31:0];
-
-   assign sb_abmem_cmd_awvalid    = (dbg_state == SB_CMD_SEND) & sb_abmem_cmd_write & ~sb_abmem_cmd_done;
-   assign sb_abmem_cmd_wvalid     = (dbg_state == SB_CMD_SEND) & sb_abmem_cmd_write & ~sb_abmem_data_done;
-   assign sb_abmem_cmd_arvalid    = (dbg_state == SB_CMD_SEND) & ~sb_abmem_cmd_write & ~sb_abmem_cmd_done & ~sb_abmem_data_done;
-   assign sb_abmem_read_pend      = (dbg_state == SB_CMD_RESP) & ~sb_abmem_cmd_write;
-
-   assign sb_cmd_awvalid     = ((sb_state == CMD_WR) | (sb_state == CMD_WR_ADDR));
-   assign sb_cmd_wvalid      = ((sb_state == CMD_WR) | (sb_state == CMD_WR_DATA));
-   assign sb_cmd_arvalid     = (sb_state == CMD_RD);
-   assign sb_read_pend       = (sb_state == RSP_RD);
-
-   assign sb_axi_size[2:0]    = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid | sb_abmem_cmd_arvalid | sb_abmem_read_pend) ? sb_abmem_cmd_size[2:0] : sb_cmd_size[2:0];
-   assign sb_axi_addr[31:0]   = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid | sb_abmem_cmd_arvalid | sb_abmem_read_pend) ? sb_abmem_cmd_addr[31:0] : sb_cmd_addr[31:0];
-   assign sb_axi_wrdata[63:0] = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid) ? {2{sb_abmem_cmd_wdata[31:0]}} : sb_cmd_wdata[63:0];
-
-   // Generic bus response signals
-   assign sb_bus_cmd_read       = sb_axi_arvalid & sb_axi_arready;
-   assign sb_bus_cmd_write_addr = sb_axi_awvalid & sb_axi_awready;
-   assign sb_bus_cmd_write_data = sb_axi_wvalid  & sb_axi_wready;
-
-   assign sb_bus_rsp_read  = sb_axi_rvalid & sb_axi_rready;
-   assign sb_bus_rsp_write = sb_axi_bvalid & sb_axi_bready;
-   assign sb_bus_rsp_error = (sb_bus_rsp_read & (|(sb_axi_rresp[1:0]))) | (sb_bus_rsp_write & (|(sb_axi_bresp[1:0])));
-
-   // AXI Request signals
-   assign sb_axi_awvalid              = sb_abmem_cmd_awvalid | sb_cmd_awvalid;
-   assign sb_axi_awaddr[31:0]         = sb_axi_addr[31:0];
-   assign sb_axi_awid[pt.SB_BUS_TAG-1:0] = '0;
-   assign sb_axi_awsize[2:0]          = sb_axi_size[2:0];
-   assign sb_axi_awprot[2:0]          = 3'b001;
-   assign sb_axi_awcache[3:0]         = 4'b1111;
-   assign sb_axi_awregion[3:0]        = sb_axi_addr[31:28];
-   assign sb_axi_awlen[7:0]           = '0;
-   assign sb_axi_awburst[1:0]         = 2'b01;
-   assign sb_axi_awqos[3:0]           = '0;
-   assign sb_axi_awlock               = '0;
-
-   assign sb_axi_wvalid       = sb_abmem_cmd_wvalid | sb_cmd_wvalid;
-   assign sb_axi_wdata[63:0]  = ({64{(sb_axi_size[2:0] == 3'h0)}} & {8{sb_axi_wrdata[7:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h1)}} & {4{sb_axi_wrdata[15:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h2)}} & {2{sb_axi_wrdata[31:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h3)}} & {sb_axi_wrdata[63:0]});
-   assign sb_axi_wstrb[7:0]   = ({8{(sb_axi_size[2:0] == 3'h0)}} & (8'h1 << sb_axi_addr[2:0])) |
-                                ({8{(sb_axi_size[2:0] == 3'h1)}} & (8'h3 << {sb_axi_addr[2:1],1'b0})) |
-                                ({8{(sb_axi_size[2:0] == 3'h2)}} & (8'hf << {sb_axi_addr[2],2'b0})) |
-                                ({8{(sb_axi_size[2:0] == 3'h3)}} & 8'hff);
-   assign sb_axi_wlast        = '1;
-
-   assign sb_axi_arvalid              = sb_abmem_cmd_arvalid | sb_cmd_arvalid;
-   assign sb_axi_araddr[31:0]         = sb_axi_addr[31:0];
-   assign sb_axi_arid[pt.SB_BUS_TAG-1:0] = '0;
-   assign sb_axi_arsize[2:0]          = sb_axi_size[2:0];
-   assign sb_axi_arprot[2:0]          = 3'b001;
-   assign sb_axi_arcache[3:0]         = 4'b0;
-   assign sb_axi_arregion[3:0]        = sb_axi_addr[31:28];
-   assign sb_axi_arlen[7:0]           = '0;
-   assign sb_axi_arburst[1:0]         = 2'b01;
-   assign sb_axi_arqos[3:0]           = '0;
-   assign sb_axi_arlock               = '0;
-
-   // AXI Response signals
-   assign sb_axi_bready = 1'b1;
-
-   assign sb_axi_rready = 1'b1;
-   assign sb_bus_rdata[63:0] = ({64{sb_axi_size == 3'h0}} & ((sb_axi_rdata[63:0] >>  8*sb_axi_addr[2:0]) & 64'hff))       |
-                               ({64{sb_axi_size == 3'h1}} & ((sb_axi_rdata[63:0] >> 16*sb_axi_addr[2:1]) & 64'hffff))    |
-                               ({64{sb_axi_size == 3'h2}} & ((sb_axi_rdata[63:0] >> 32*sb_axi_addr[2]) & 64'hffff_ffff)) |
-                               ({64{sb_axi_size == 3'h3}} & sb_axi_rdata[63:0]);
-
-`ifdef RV_ASSERT_ON
-// assertion.
-//  when the resume_ack is asserted then the dec_tlu_dbg_halted should be 0
-   dm_check_resume_and_halted: assert property (@(posedge clk)  disable iff(~rst_l) (~dec_tlu_resume_ack | ~dec_tlu_dbg_halted));
-
-   assert_b2b_haltreq: assert property (@(posedge clk) disable iff (~(rst_l)) (##1 dbg_halt_req |=> ~dbg_halt_req));  // One cycle delay to fix weird issue around reset
-   assert_halt_resume_onehot: assert #0 ($onehot0({dbg_halt_req, dbg_resume_req}));
-`endif
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/dec/cdecode b/verilog/rtl/BrqRV_EB1/design/dec/cdecode
deleted file mode 100644
index d98b523..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dec/cdecode
+++ /dev/null
@@ -1,254 +0,0 @@
-
-.definition
-
-
-
-# invalid rs2=0
-c.add0 =        [1001.....1....10]
-c.add1 =        [1001......1...10]
-c.add2 =        [1001.......1..10]
-c.add3 =        [1001........1.10]
-c.add4 =        [1001.........110]
-
-# invalid rs2=0
-c.mv0 =        [1000.....1....10]
-c.mv1 =        [1000......1...10]
-c.mv2 =        [1000.......1..10]
-c.mv3 =        [1000........1.10]
-c.mv4 =        [1000.........110]
-
-
-# invalid if rs1=0
-c.jalr0 =       [10011....0000010]
-c.jalr1 =       [1001.1...0000010]
-c.jalr2 =       [1001..1..0000010]
-c.jalr3 =       [1001...1.0000010]
-c.jalr4 =       [1001....10000010]
-
-c.addi  =        [000...........01]
-
-# invalid imm=0
-c.addi16sp0 =   [011100010.....01]
-c.addi16sp1 =   [011.000101....01]
-c.addi16sp2 =   [011.00010.1...01]
-c.addi16sp3 =   [011.00010..1..01]
-c.addi16sp4 =   [011.00010...1.01]
-c.addi16sp5 =   [011.00010....101]
-
-# invalid uimm=0
-c.addi4spn0 =   [0001..........00]
-c.addi4spn1 =   [000.1.........00]
-c.addi4spn2 =   [000..1........00]
-c.addi4spn3 =   [000...1.......00]
-c.addi4spn4 =   [000....1......00]
-c.addi4spn5 =   [000.....1.....00]
-c.addi4spn6 =   [000......1....00]
-c.addi4spn7 =   [000.......1...00]
-
-
-c.and =         [100011...11...01]
-c.andi =        [100.10........01]
-c.beqz =        [110...........01]
-c.bnez =        [111...........01]
-c.ebreak =      [1001000000000010]
-c.j =           [101...........01]
-c.jal =         [001...........01]
-
-
-c.jr0 =                 [10001....0000010]
-c.jr1 =                 [1000.1...0000010]
-c.jr2 =                 [1000..1..0000010]
-c.jr3 =                 [1000...1.0000010]
-c.jr4 =                 [1000....10000010]
-
-c.li =           [010...........01]
-
-# invalid rd=x2 or imm=0
-c.lui0 =                [01111.........01]
-c.lui1 =                [0111.1........01]
-c.lui2 =                [0111..1.......01]
-c.lui3 =                [0111...0......01]
-c.lui4 =                [0111....1.....01]
-c.lui5 =                [011.1....1....01]
-c.lui6 =                [011..1...1....01]
-c.lui7 =                [011...1..1....01]
-c.lui8 =                [011....0.1....01]
-c.lui9 =                [011.....11....01]
-c.lui10=                [011.1.....1...01]
-c.lui11=                [011..1....1...01]
-c.lui12 =               [011...1...1...01]
-c.lui13 =               [011....0..1...01]
-c.lui14 =               [011.....1.1...01]
-c.lui15 =               [011.1......1..01]
-c.lui16 =               [011..1.....1..01]
-c.lui17 =               [011...1....1..01]
-c.lui18 =               [011....0...1..01]
-c.lui19 =               [011.....1..1..01]
-c.lui20 =               [011.1.......1.01]
-c.lui21 =               [011..1......1.01]
-c.lui22 =               [011...1.....1.01]
-c.lui23 =               [011....0....1.01]
-c.lui24 =               [011.....1...1.01]
-c.lui25 =               [011.1........101]
-c.lui26 =               [011..1.......101]
-c.lui27 =               [011...1......101]
-c.lui28 =               [011....0.....101]
-c.lui29 =               [011.....1....101]
-
-
-c.lw =          [010...........00]
-
-
-c.lwsp =        [010...........10]
-
-c.or =          [100011...10...01]
-
-# bit 5 of the shift must be 0 to be legal
-c.slli =        [0000..........10]
-
-c.srai =        [100001........01]
-
-c.srli =        [100000........01]
-
-c.sub =         [100011...00...01]
-c.sw =          [110...........00]
-c.swsp =        [110...........10]
-c.xor =         [100011...01...01]
-
-
-.input
-rv32c = {
-        i[15]
-        i[14]
-        i[13]
-        i[12]
-        i[11]
-        i[10]
-        i[9]
-        i[8]
-        i[7]
-        i[6]
-        i[5]
-        i[4]
-        i[3]
-        i[2]
-        i[1]
-        i[0]
-}
-
-.output
-rv32c = {
-        rdrd
-        rdrs1
-        rs2rs2
-        rdprd
-        rdprs1
-        rs2prs2
-        rs2prd
-        uimm9_2
-        ulwimm6_2
-        ulwspimm7_2
-        rdeq2
-        rdeq1
-        rs1eq2
-        sbroffset8_1
-        simm9_4
-        simm5_0
-        sjaloffset11_1
-        sluimm17_12
-        uimm5_0
-        uswimm6_2
-        uswspimm7_2
-        o[31]
-        o[30]
-        o[29]
-        o[28]
-        o[27]
-        o[26]
-        o[25]
-        o[24]
-        o[23]
-        o[22]
-        o[21]
-        o[20]
-        o[19]
-        o[18]
-        o[17]
-        o[16]
-        o[15]
-        o[14]
-        o[13]
-        o[12]
-        o[11]
-        o[10]
-        o[9]
-        o[8]
-        o[7]
-        o[6]
-        o[5]
-        o[4]
-        o[3]
-        o[2]
-        o[1]
-        o[0]
-      }
-
-#  assign rs2d[4:0] = i[6:2];
-#
-#   assign rdd[4:0] = i[11:7];
-#
-#   assign rdpd[4:0] = {2'b01, i[9:7]};
-#
-#   assign rs2pd[4:0] = {2'b01, i[4:2]};
-
-.decode
-
-
-
-
-rv32c[c.add{0-4}] =             { rdrd rdrs1 rs2rs2                                    o[5] o[4] o[1] o[0] }
-
-rv32c[c.mv{0-4}] =              { rdrd rs2rs2                                          o[5] o[4] o[1] o[0] }
-
-rv32c[c.addi] =                 { rdrd rdrs1 simm5_0                                          o[4] o[1] o[0] }
-
-rv32c[c.addi16sp{0-5}] =        { rdeq2 rs1eq2 simm9_4                                        o[4] o[1] o[0] }
-rv32c[c.addi4spn{0-7}] =        { rs2prd rs1eq2 uimm9_2                                         o[4] o[1] o[0] }
-
-
-rv32c[c.and] =                  { rdprd rdprs1 rs2prs2          o[14] o[13] o[12]      o[5] o[4] o[1] o[0] }
-rv32c[c.andi] =                 { rdprd rdprs1 simm5_0            o[14] o[13] o[12]           o[4] o[1] o[0] }
-rv32c[c.beqz] =                 { rdprs1 sbroffset8_1                                o[6] o[5]      o[1] o[0] }
-rv32c[c.bnez] =                 { rdprs1 sbroffset8_1                          o[12] o[6] o[5]      o[1] o[0] }
-
-
-rv32c[c.ebreak] =               {                            o[20]                o[6] o[5] o[4] o[1] o[0] }
-
-rv32c[c.j] =                    { sjaloffset11_1                                            o[6] o[5]      o[3] o[2] o[1] o[0] }
-rv32c[c.jal] =                  { sjaloffset11_1 rdeq1                                      o[6] o[5]      o[3] o[2] o[1] o[0] }
-
-
-rv32c[c.jalr{0-4}] =            { rdeq1 rdrs1                                           o[6] o[5]           o[2] o[1] o[0] }
-rv32c[c.jr{0-4}] =              {       rdrs1                                           o[6] o[5]           o[2] o[1] o[0] }
-rv32c[c.li] =                   { rdrd simm5_0                                               o[4]           o[1] o[0] }
-
-rv32c[c.lui{0-29}] =            { rdrd sluimm17_12                                                o[5] o[4]      o[2] o[1] o[0] }
-rv32c[c.lw] =                   { rs2prd rdprs1 ulwimm6_2                    o[13]                                 o[1] o[0] }
-rv32c[c.lwsp] =                 { rdrd rs1eq2 ulwspimm7_2                    o[13]                                 o[1] o[0] }
-
-
-rv32c[c.or] =                   { rdprd rdprs1 rs2prs2               o[14] o[13]             o[5] o[4] o[1] o[0] }
-
-rv32c[c.slli] =            { rdrd rdrs1 uimm5_0                               o[12]            o[4] o[1] o[0] }
-rv32c[c.srai] =           { rdprd rdprs1 uimm5_0          o[30] o[14]        o[12]            o[4] o[1] o[0] }
-rv32c[c.srli] =            { rdprd rdprs1 uimm5_0                o[14]        o[12]            o[4] o[1] o[0] }
-
-
-rv32c[c.sub] =                  { rdprd rdprs1 rs2prs2        o[30]                          o[5] o[4] o[1] o[0] }
-rv32c[c.sw] =                   { rdprs1 rs2prs2 uswimm6_2                   o[13]             o[5]      o[1] o[0] }
-rv32c[c.swsp] =                 { rs2rs2 rs1eq2  uswspimm7_2                 o[13]             o[5]      o[1] o[0] }
-rv32c[c.xor] =                  { rdprd rdprs1 rs2prs2              o[14]                    o[5] o[4] o[1] o[0] }
-
-
-
-.end
\ No newline at end of file
diff --git a/verilog/rtl/BrqRV_EB1/design/dec/csrdecode b/verilog/rtl/BrqRV_EB1/design/dec/csrdecode
deleted file mode 100644
index b43c79b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dec/csrdecode
+++ /dev/null
@@ -1,259 +0,0 @@
-.definition
-
-csr_misa =          [001100000001]
-csr_mvendorid =     [111100010001]
-csr_marchid =       [111100010010]
-csr_mimpid =        [111100010011]
-csr_mhartid =       [111100010100]
-csr_mstatus =       [001100000000]
-csr_mtvec =         [001100000101]
-csr_mip =           [001101000100]
-csr_mie =           [001100000100]
-csr_mcyclel =       [101100000000]
-csr_mcycleh =       [101110000000]
-csr_minstretl =     [101100000010]
-csr_minstreth =     [101110000010]
-csr_mscratch =      [001101000000]
-csr_mepc =          [001101000001]
-csr_mcause =        [001101000010]
-csr_mscause =       [011111111111]
-csr_mtval =         [001101000011]
-csr_mrac =          [011111000000]
-csr_dmst =          [011111000100]
-csr_mdeau =         [101111000000]
-csr_mdseac =        [111111000000]
-csr_meivt =         [101111001000]
-csr_meihap =        [111111001000]
-csr_meipt =         [101111001001]
-csr_meicpct =       [101111001010]
-csr_meicurpl =      [101111001100]
-csr_meicidpl =      [101111001011]
-csr_dcsr =          [011110110000]
-csr_dpc =           [011110110001]
-csr_dicawics =      [011111001000]
-csr_dicad0h =       [011111001100]
-csr_dicad0 =        [011111001001]
-csr_dicad1 =        [011111001010]
-csr_dicago =        [011111001011]
-csr_mtsel =         [011110100000]
-csr_mtdata1 =       [011110100001]
-csr_mtdata2 =       [011110100010]
-csr_mhpmc3 =        [101100000011]
-csr_mhpmc4 =        [101100000100]
-csr_mhpmc5 =        [101100000101]
-csr_mhpmc6 =        [101100000110]
-csr_mhpmc3h =       [101110000011]
-csr_mhpmc4h =       [101110000100]
-csr_mhpmc5h =       [101110000101]
-csr_mhpmc6h =       [101110000110]
-csr_mhpme3 =        [001100100011]
-csr_mhpme4 =        [001100100100]
-csr_mhpme5 =        [001100100101]
-csr_mhpme6 =        [001100100110]
-csr_micect =        [011111110000]
-csr_miccmect =      [011111110001]
-csr_mdccmect =      [011111110010]
-csr_mpmc =          [011111000110]
-csr_mcgc =          [011111111000]
-csr_mcpc =          [011111000010]
-csr_mfdc =          [011111111001]
-csr_mitctl0 =       [011111010100]
-csr_mitctl1 =       [011111010111]
-csr_mitb0 =         [011111010011]
-csr_mitb1 =         [011111010110]
-csr_mitcnt0 =       [011111010010]
-csr_mitcnt1 =       [011111010101]
-csr_perfva =        [101100000111]
-csr_perfvb =        [101100001...]
-csr_perfvc =        [10110001....]
-csr_perfvd =        [101110000111]
-csr_perfve =        [101110001...]
-csr_perfvf =        [10111001....]
-csr_perfvg =        [001100100111]
-csr_perfvh =        [001100101...]
-csr_perfvi =        [00110011....]
-csr_mcountinhibit = [001100100000]
-csr_mfdht =         [011111001110]
-csr_mfdhs =         [011111001111]
-
-.input
-
-csr = {
-        dec_csr_rdaddr_d[11]
-        dec_csr_rdaddr_d[10]
-        dec_csr_rdaddr_d[9]
-        dec_csr_rdaddr_d[8]
-        dec_csr_rdaddr_d[7]
-        dec_csr_rdaddr_d[6]
-        dec_csr_rdaddr_d[5]
-        dec_csr_rdaddr_d[4]
-        dec_csr_rdaddr_d[3]
-        dec_csr_rdaddr_d[2]
-        dec_csr_rdaddr_d[1]
-        dec_csr_rdaddr_d[0]
-}
-
-.output
-
-csr = {
-     csr_misa
-     csr_mvendorid
-     csr_marchid
-     csr_mimpid
-     csr_mhartid
-     csr_mstatus
-     csr_mtvec
-     csr_mip
-     csr_mie
-     csr_mcyclel
-     csr_mcycleh
-     csr_minstretl
-     csr_minstreth
-     csr_mscratch
-     csr_mepc
-     csr_mcause
-     csr_mscause
-     csr_mtval
-     csr_mrac
-     csr_dmst
-     csr_mdseac
-     csr_meihap
-     csr_meivt
-     csr_meipt
-     csr_meicurpl
-     csr_meicidpl
-     csr_dcsr
-     csr_mcgc
-     csr_mfdc
-     csr_dpc
-     csr_mtsel
-     csr_mtdata1
-     csr_mtdata2
-     csr_mhpmc3
-     csr_mhpmc4
-     csr_mhpmc5
-     csr_mhpmc6
-     csr_mhpmc3h
-     csr_mhpmc4h
-     csr_mhpmc5h
-     csr_mhpmc6h
-     csr_mhpme3
-     csr_mhpme4
-     csr_mhpme5
-     csr_mhpme6
-     csr_mcountinhibit
-     csr_mitctl0
-     csr_mitctl1
-     csr_mitb0
-     csr_mitb1
-     csr_mitcnt0
-     csr_mitcnt1
-csr_perfva
-csr_perfvb
-csr_perfvc
-csr_perfvd
-csr_perfve
-csr_perfvf
-csr_perfvg
-csr_perfvh
-csr_perfvi
-     csr_mpmc
-     csr_mcpc
-     csr_meicpct
-     csr_mdeau
-     csr_micect
-     csr_miccmect
-     csr_mdccmect
-csr_mfdht
-csr_mfdhs
-csr_dicawics
-csr_dicad0h
-csr_dicad0
-csr_dicad1
-csr_dicago
-     valid_only
-     presync
-     postsync
-}
-
-.decode
-
-csr[ csr_misa      ] = {  csr_misa      }
-csr[ csr_mvendorid ] = {  csr_mvendorid }
-csr[ csr_marchid   ] = {  csr_marchid   }
-csr[ csr_mimpid    ] = {  csr_mimpid    }
-csr[ csr_mhartid   ] = {  csr_mhartid   }
-csr[ csr_mstatus   ] = {  csr_mstatus postsync   }
-csr[ csr_mtvec     ] = {  csr_mtvec postsync}
-csr[ csr_mip       ] = {  csr_mip       }
-csr[ csr_mie       ] = {  csr_mie       }
-csr[ csr_mcyclel   ] = {  csr_mcyclel   }
-csr[ csr_mcycleh   ] = {  csr_mcycleh   }
-csr[ csr_minstretl ] = {  csr_minstretl presync }
-csr[ csr_minstreth ] = {  csr_minstreth presync }
-csr[ csr_mscratch  ] = {  csr_mscratch  }
-csr[ csr_mepc      ] = {  csr_mepc postsync}
-csr[ csr_mcause    ] = {  csr_mcause    }
-csr[ csr_mscause   ] = {  csr_mscause   }
-csr[ csr_mtval     ] = {  csr_mtval     }
-csr[ csr_mrac      ] = {  csr_mrac postsync     }
-csr[ csr_dmst      ] = {  csr_dmst postsync}
-csr[ csr_mdseac    ] = {  csr_mdseac    }
-csr[ csr_meipt     ] = {  csr_meipt     }
-csr[ csr_meihap    ] = {  csr_meihap    }
-csr[ csr_meivt     ] = {  csr_meivt     }
-csr[ csr_meicurpl  ] = {  csr_meicurpl  }
-csr[ csr_mdeau     ] = {  csr_mdeau    }
-csr[ csr_meicpct   ] = {  csr_meicpct   }
-csr[ csr_mpmc      ] = {  csr_mpmc      }
-csr[ csr_mcpc      ] = {  csr_mcpc presync postsync }
-csr[ csr_meicidpl  ] = {  csr_meicidpl  }
-csr[ csr_mcgc      ] = {  csr_mcgc      }
-csr[ csr_mcountinhibit] = {  csr_mcountinhibit presync postsync }
-csr[ csr_mfdc      ] = {  csr_mfdc presync postsync }
-csr[ csr_dcsr      ] = {  csr_dcsr      }
-csr[ csr_dpc       ] = {  csr_dpc       }
-csr[ csr_mtsel     ] = {  csr_mtsel     }
-csr[ csr_mtdata1   ] = {  csr_mtdata1  postsync }
-csr[ csr_mtdata2   ] = {  csr_mtdata2  postsync }
-csr[ csr_mhpmc3    ] = {  csr_mhpmc3  presync }
-csr[ csr_mhpmc4    ] = {  csr_mhpmc4  presync }
-csr[ csr_mhpmc5    ] = {  csr_mhpmc5  presync }
-csr[ csr_mhpmc6    ] = {  csr_mhpmc6  presync }
-csr[ csr_mhpmc3h   ] = {  csr_mhpmc3h presync  }
-csr[ csr_mhpmc4h   ] = {  csr_mhpmc4h presync  }
-csr[ csr_mhpmc5h   ] = {  csr_mhpmc5h presync  }
-csr[ csr_mhpmc6h   ] = {  csr_mhpmc6h presync  }
-csr[ csr_mhpme3    ] = {  csr_mhpme3    }
-csr[ csr_mhpme4    ] = {  csr_mhpme4    }
-csr[ csr_mhpme5    ] = {  csr_mhpme5    }
-csr[ csr_mhpme6    ] = {  csr_mhpme6    }
-csr[ csr_micect    ] = {  csr_micect    }
-csr[ csr_miccmect  ] = {  csr_miccmect  }
-csr[ csr_mdccmect  ] = {  csr_mdccmect  }
-csr[ csr_dicawics  ] = {  csr_dicawics  }
-csr[ csr_dicad0h   ] = {  csr_dicad0h   }
-csr[ csr_dicad0    ] = {  csr_dicad0    }
-csr[ csr_dicad1    ] = {  csr_dicad1    }
-csr[ csr_dicago    ] = {  csr_dicago    }
-csr[ csr_mitctl0   ] = {  csr_mitctl0   }
-csr[ csr_mitctl1   ] = {  csr_mitctl1   }
-csr[ csr_mitb0     ] = {  csr_mitb0     }
-csr[ csr_mitb1     ] = {  csr_mitb1     }
-csr[ csr_mitcnt0   ] = {  csr_mitcnt0   }
-csr[ csr_mitcnt1   ] = {  csr_mitcnt1   }
-csr[ csr_mfdht     ] = {  csr_mfdht }
-csr[ csr_mfdhs     ] = {  csr_mfdhs }
-csr[ csr_mcountinhibit] = {  csr_mcountinhibit presync postsync }
-
-csr[ csr_perfva    ] = { valid_only }
-csr[ csr_perfvb    ] = { valid_only }
-csr[ csr_perfvc    ] = { valid_only }
-csr[ csr_perfvd    ] = { valid_only }
-csr[ csr_perfve    ] = { valid_only }
-csr[ csr_perfvf    ] = { valid_only }
-csr[ csr_perfvg    ] = { valid_only }
-csr[ csr_perfvh    ] = { valid_only }
-csr[ csr_perfvi    ] = { valid_only }
-
-.end
diff --git a/verilog/rtl/BrqRV_EB1/design/dec/decode b/verilog/rtl/BrqRV_EB1/design/dec/decode
deleted file mode 100644
index b9e98c8..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dec/decode
+++ /dev/null
@@ -1,582 +0,0 @@
-
-.definition
-
-clz       =  [011000000000.....001.....0010011]
-ctz       =  [011000000001.....001.....0010011]
-pcnt      =  [011000000010.....001.....0010011]
-sext_b    =  [011000000100.....001.....0010011]
-sext_h    =  [011000000101.....001.....0010011]
-slo       =  [0010000..........001.....0110011]
-sro       =  [0010000..........101.....0110011]
-sloi      =  [0010000..........001.....0010011]
-sroi      =  [0010000..........101.....0010011]
-
-min       =  [0000101..........100.....0110011]
-max       =  [0000101..........101.....0110011]
-minu      =  [0000101..........110.....0110011]
-maxu      =  [0000101..........111.....0110011]
-
-andn      =  [0100000..........111.....0110011]
-orn       =  [0100000..........110.....0110011]
-xnor      =  [0100000..........100.....0110011]
-pack      =  [0000100..........100.....0110011]
-packu     =  [0100100..........100.....0110011]
-packh     =  [0000100..........111.....0110011]
-rol       =  [0110000..........001.....0110011]
-ror       =  [0110000..........101.....0110011]
-rori      =  [0110000..........101.....0010011]
-
-sh1add    =  [0010000..........010.....0110011]
-sh2add    =  [0010000..........100.....0110011]
-sh3add    =  [0010000..........110.....0110011]
-
-sbset     =  [0010100..........001.....0110011]
-sbclr     =  [0100100..........001.....0110011]
-sbinv     =  [0110100..........001.....0110011]
-sbext     =  [0100100..........101.....0110011]
-
-sbseti    =  [0010100..........001.....0010011]
-sbclri    =  [0100100..........001.....0010011]
-sbinvi    =  [0110100..........001.....0010011]
-sbexti    =  [0100100..........101.....0010011]
-
-grev      =  [0110100..........101.....0110011]
-#grevi    =  [01101............101.....0010011]
-grevi0   =   [011010000000.....101.....0010011]
-grevi1   =   [011010000001.....101.....0010011]
-grevi2   =   [011010000010.....101.....0010011]
-grevi3   =   [011010000011.....101.....0010011]
-grevi4   =   [011010000100.....101.....0010011]
-grevi5   =   [011010000101.....101.....0010011]
-grevi6   =   [011010000110.....101.....0010011]
-grevi7   =   [011010000111.....101.....0010011]
-grevi8   =   [011010001000.....101.....0010011]
-grevi9   =   [011010001001.....101.....0010011]
-grevi10   =  [011010001010.....101.....0010011]
-grevi11   =  [011010001011.....101.....0010011]
-grevi12   =  [011010001100.....101.....0010011]
-grevi13   =  [011010001101.....101.....0010011]
-grevi14   =  [011010001110.....101.....0010011]
-grevi15   =  [011010001111.....101.....0010011]
-grevi16   =  [011010010000.....101.....0010011]
-grevi17   =  [011010010001.....101.....0010011]
-grevi18   =  [011010010010.....101.....0010011]
-grevi19   =  [011010010011.....101.....0010011]
-grevi20   =  [011010010100.....101.....0010011]
-grevi21   =  [011010010101.....101.....0010011]
-grevi22   =  [011010010110.....101.....0010011]
-grevi23   =  [011010010111.....101.....0010011]
-#grevi24  =  [011010011000.....101.....0010011]    # REV8
-rev8      =  [011010011000.....101.....0010011]
-grevi25   =  [011010011001.....101.....0010011]
-grevi26   =  [011010011010.....101.....0010011]
-grevi27   =  [011010011011.....101.....0010011]
-grevi28   =  [011010011100.....101.....0010011]
-grevi29   =  [011010011101.....101.....0010011]
-grevi30   =  [011010011110.....101.....0010011]
-#grevi31  =  [011010011111.....101.....0010011]    # REV
-rev       =  [011010011111.....101.....0010011]
-
-gorc      =  [0010100..........101.....0110011]
-#gorci    =  [00101............101.....0010011]
-gorci0    =  [001010000000.....101.....0010011]
-gorci1    =  [001010000001.....101.....0010011]
-gorci2    =  [001010000010.....101.....0010011]
-gorci3    =  [001010000011.....101.....0010011]
-gorci4    =  [001010000100.....101.....0010011]
-gorci5    =  [001010000101.....101.....0010011]
-gorci6    =  [001010000110.....101.....0010011]
-#gorci7   =  [001010000111.....101.....0010011]    # ORC_B
-orc_b     =  [001010000111.....101.....0010011]
-gorci8    =  [001010001000.....101.....0010011]
-gorci9    =  [001010001001.....101.....0010011]
-gorci10   =  [001010001010.....101.....0010011]
-gorci11   =  [001010001011.....101.....0010011]
-gorci12   =  [001010001100.....101.....0010011]
-gorci13   =  [001010001101.....101.....0010011]
-gorci14   =  [001010001110.....101.....0010011]
-gorci15   =  [001010001111.....101.....0010011]
-#gorci16  =  [001010010000.....101.....0010011]    # ORC16
-orc16     =  [001010010000.....101.....0010011]
-gorci17   =  [001010010001.....101.....0010011]
-gorci18   =  [001010010010.....101.....0010011]
-gorci19   =  [001010010011.....101.....0010011]
-gorci20   =  [001010010100.....101.....0010011]
-gorci21   =  [001010010101.....101.....0010011]
-gorci22   =  [001010010110.....101.....0010011]
-gorci23   =  [001010010111.....101.....0010011]
-gorci24   =  [001010011000.....101.....0010011]
-gorci25   =  [001010011001.....101.....0010011]
-gorci26   =  [001010011010.....101.....0010011]
-gorci27   =  [001010011011.....101.....0010011]
-gorci28   =  [001010011100.....101.....0010011]
-gorci29   =  [001010011101.....101.....0010011]
-gorci30   =  [001010011110.....101.....0010011]
-gorci31   =  [001010011111.....101.....0010011]
-
-
-shfl      =  [0000100..........001.....0110011]
-shfli     =  [00001000.........001.....0010011]
-
-unshfl    =  [0000100..........101.....0110011]
-unshfli   =  [00001000.........101.....0010011]
-
-bdep      =  [0100100..........110.....0110011]
-bext      =  [0000100..........110.....0110011]
-
-clmul     =  [0000101..........001.....0110011]
-clmulr    =  [0000101..........010.....0110011]
-clmulh    =  [0000101..........011.....0110011]
-
-crc32_b   =  [011000010000.....001.....0010011]
-crc32_h   =  [011000010001.....001.....0010011]
-crc32_w   =  [011000010010.....001.....0010011]
-crc32c_b  =  [011000011000.....001.....0010011]
-crc32c_h  =  [011000011001.....001.....0010011]
-crc32c_w  =  [011000011010.....001.....0010011]
-
-bfp       =  [0100100..........111.....0110011]
-
-
-
-
-
-add       =  [0000000..........000.....0110011]
-addi      =  [.................000.....0010011]
-
-sub       =  [0100000..........000.....0110011]
-
-and       =  [0000000..........111.....0110011]
-andi      =  [.................111.....0010011]
-
-or        =  [0000000..........110.....0110011]
-ori       =  [.................110.....0010011]
-
-xor       =  [0000000..........100.....0110011]
-xori      =  [.................100.....0010011]
-
-sll       =  [0000000..........001.....0110011]
-slli      =  [0000000..........001.....0010011]
-
-sra       =  [0100000..........101.....0110011]
-srai      =  [0100000..........101.....0010011]
-
-srl       =  [0000000..........101.....0110011]
-srli      =  [0000000..........101.....0010011]
-
-lui       =  [.........................0110111]
-auipc     =  [.........................0010111]
-
-slt       =  [0000000..........010.....0110011]
-sltu      =  [0000000..........011.....0110011]
-slti      =  [.................010.....0010011]
-sltiu     =  [.................011.....0010011]
-
-beq       =  [.................000.....1100011]
-bne       =  [.................001.....1100011]
-bge       =  [.................101.....1100011]
-blt       =  [.................100.....1100011]
-bgeu      =  [.................111.....1100011]
-bltu      =  [.................110.....1100011]
-
-jal       =  [.........................1101111]
-jalr      =  [.................000.....1100111]
-
-lb        =  [.................000.....0000011]
-lh        =  [.................001.....0000011]
-lw        =  [.................010.....0000011]
-
-sb        =  [.................000.....0100011]
-sh        =  [.................001.....0100011]
-sw        =  [.................010.....0100011]
-
-lbu       =  [.................100.....0000011]
-lhu       =  [.................101.....0000011]
-
-fence     =  [0000........00000000000000001111]
-fence.i   =  [00000000000000000001000000001111]
-
-ebreak    =  [00000000000100000000000001110011]
-ecall     =  [00000000000000000000000001110011]
-
-mret      =  [00110000001000000000000001110011]
-
-wfi       =  [00010000010100000000000001110011]
-
-csrrc_ro  =  [............00000011.....1110011]
-csrrc_rw0 =  [............1....011.....1110011]
-csrrc_rw1 =  [.............1...011.....1110011]
-csrrc_rw2 =  [..............1..011.....1110011]
-csrrc_rw3 =  [...............1.011.....1110011]
-csrrc_rw4 =  [................1011.....1110011]
-
-csrrci_ro  = [............00000111.....1110011]
-csrrci_rw0 = [............1....111.....1110011]
-csrrci_rw1 = [.............1...111.....1110011]
-csrrci_rw2 = [..............1..111.....1110011]
-csrrci_rw3 = [...............1.111.....1110011]
-csrrci_rw4 = [................1111.....1110011]
-
-csrrs_ro  =  [............00000010.....1110011]
-csrrs_rw0 =  [............1....010.....1110011]
-csrrs_rw1 =  [.............1...010.....1110011]
-csrrs_rw2 =  [..............1..010.....1110011]
-csrrs_rw3 =  [...............1.010.....1110011]
-csrrs_rw4 =  [................1010.....1110011]
-
-csrrsi_ro  = [............00000110.....1110011]
-csrrsi_rw0 = [............1....110.....1110011]
-csrrsi_rw1 = [.............1...110.....1110011]
-csrrsi_rw2 = [..............1..110.....1110011]
-csrrsi_rw3 = [...............1.110.....1110011]
-csrrsi_rw4 = [................1110.....1110011]
-
-
-csrw  =       [.................001000001110011]
-csrrw0 =      [.................001....11110011]
-csrrw1 =      [.................001...1.1110011]
-csrrw2 =      [.................001..1..1110011]
-csrrw3 =      [.................001.1...1110011]
-csrrw4 =      [.................0011....1110011]
-
-csrwi   =     [.................101000001110011]
-csrrwi0 =     [.................101....11110011]
-csrrwi1 =     [.................101...1.1110011]
-csrrwi2 =     [.................101..1..1110011]
-csrrwi3 =     [.................101.1...1110011]
-csrrwi4 =     [.................1011....1110011]
-
-mul =        [0000001..........000.....0110011]
-mulh =       [0000001..........001.....0110011]
-mulhsu =     [0000001..........010.....0110011]
-mulhu =      [0000001..........011.....0110011]
-
-div =        [0000001..........100.....0110011]
-divu =       [0000001..........101.....0110011]
-rem =        [0000001..........110.....0110011]
-remu =       [0000001..........111.....0110011]
-
-
-.input
-
-rv32i = {
-        i[31]
-        i[30]
-        i[29]
-        i[28]
-        i[27]
-        i[26]
-        i[25]
-        i[24]
-        i[23]
-        i[22]
-        i[21]
-        i[20]
-        i[19]
-        i[18]
-        i[17]
-        i[16]
-        i[15]
-        i[14]
-        i[13]
-        i[12]
-        i[11]
-        i[10]
-        i[9]
-        i[8]
-        i[7]
-        i[6]
-        i[5]
-        i[4]
-        i[3]
-        i[2]
-        i[1]
-        i[0]
-}
-
-
-.output
-
-rv32i = {
-      alu
-      rs1
-      rs2
-      imm12
-      rd
-      shimm5
-      imm20
-      pc
-      load
-      store
-      lsu
-      add
-      sub
-      land
-      lor
-      lxor
-      sll
-      sra
-      srl
-      slt
-      unsign
-      condbr
-      beq
-      bne
-      bge
-      blt
-      jal
-      by
-      half
-      word
-      csr_read
-      csr_clr
-      csr_set
-      csr_write
-      csr_imm
-      presync
-      postsync
-      ebreak
-      ecall
-      mret
-      mul
-      rs1_sign
-      rs2_sign
-      low
-      div
-      rem
-      fence
-      fence_i
-      clz
-      ctz
-      pcnt
-      sext_b
-      sext_h
-      slo
-      sro
-      min
-      max
-      pack
-      packu
-      packh
-      rol
-      ror
-      zbb
-      sbset
-      sbclr
-      sbinv
-      sbext
-      zbs
-      bext
-      bdep
-      zbe
-      clmul
-      clmulh
-      clmulr
-      zbc
-      grev
-      gorc
-      shfl
-      unshfl
-      zbp
-      crc32_b
-      crc32_h
-      crc32_w
-      crc32c_b
-      crc32c_h
-      crc32c_w
-      zbr
-      bfp
-      zbf
-      sh1add
-      sh2add
-      sh3add
-      zba
-      pm_alu
-}
-
-.decode
-
-rv32i[clz]       =  { alu zbb     rs1     rd                       clz   }
-rv32i[ctz]       =  { alu zbb     rs1     rd                       ctz   }
-rv32i[pcnt]      =  { alu zbb     rs1     rd                       pcnt  }
-rv32i[sext_b]    =  { alu zbb     rs1     rd                       sext_b}
-rv32i[sext_h]    =  { alu zbb     rs1     rd                       sext_h}
-rv32i[slo]       =  { alu     zbp rs1 rs2 rd                       slo   }
-rv32i[sro]       =  { alu     zbp rs1 rs2 rd                       sro   }
-rv32i[sloi]      =  { alu     zbp rs1     rd         shimm5        slo   }
-rv32i[sroi]      =  { alu     zbp rs1     rd         shimm5        sro   }
-rv32i[min]       =  { alu zbb     rs1 rs2 rd                sub    min   }
-rv32i[max]       =  { alu zbb     rs1 rs2 rd                sub    max   }
-rv32i[minu]      =  { alu zbb     rs1 rs2 rd  unsign        sub    min   }
-rv32i[maxu]      =  { alu zbb     rs1 rs2 rd  unsign        sub    max   }
-rv32i[andn]      =  { alu zbb zbp rs1 rs2 rd                       land  }
-rv32i[orn]       =  { alu zbb zbp rs1 rs2 rd                       lor   }
-rv32i[xnor]      =  { alu zbb zbp rs1 rs2 rd                       lxor  }
-rv32i[pack]      =  { alu zbb zbp rs1 rs2 rd                       pack  }
-rv32i[packu]     =  { alu zbb zbp rs1 rs2 rd                       packu }
-rv32i[packh]     =  { alu zbb zbp rs1 rs2 rd                       packh }
-rv32i[rol]       =  { alu zbb zbp rs1 rs2 rd                       rol   }
-rv32i[ror]       =  { alu zbb zbp rs1 rs2 rd                       ror   }
-rv32i[rori]      =  { alu zbb zbp rs1     rd         shimm5        ror   }
-rv32i[sbset]     =  { alu zbs     rs1 rs2 rd                       sbset }
-rv32i[sbclr]     =  { alu zbs     rs1 rs2 rd                       sbclr }
-rv32i[sbinv]     =  { alu zbs     rs1 rs2 rd                       sbinv }
-rv32i[sbext]     =  { alu zbs     rs1 rs2 rd                       sbext }
-rv32i[sbseti]    =  { alu zbs     rs1     rd         shimm5        sbset }
-rv32i[sbclri]    =  { alu zbs     rs1     rd         shimm5        sbclr }
-rv32i[sbinvi]    =  { alu zbs     rs1     rd         shimm5        sbinv }
-rv32i[sbexti]    =  { alu zbs     rs1     rd         shimm5        sbext }
-rv32i[sh1add]    =  { alu zba     rs1 rs2 rd                       sh1add}
-rv32i[sh2add]    =  { alu zba     rs1 rs2 rd                       sh2add}
-rv32i[sh3add]    =  { alu zba     rs1 rs2 rd                       sh3add}
-
-rv32i[mul]       =  { mul         rs1 rs2 rd low                         }
-rv32i[mulh]      =  { mul         rs1 rs2 rd rs1_sign rs2_sign           }
-rv32i[mulhu]     =  { mul         rs1 rs2 rd                             }
-rv32i[mulhsu]    =  { mul         rs1 rs2 rd rs1_sign                    }
-rv32i[bext]      =  { mul zbe     rs1 rs2 rd                       bext  }
-rv32i[bdep]      =  { mul zbe     rs1 rs2 rd                       bdep  }
-rv32i[clmul]     =  { mul zbc     rs1 rs2 rd                       clmul }
-rv32i[clmulh]    =  { mul zbc     rs1 rs2 rd                       clmulh}
-rv32i[clmulr]    =  { mul zbc     rs1 rs2 rd                       clmulr}
-
-rv32i[crc32_b]   =  { mul zbr     rs1     rd                       crc32_b}
-rv32i[crc32_h]   =  { mul zbr     rs1     rd                       crc32_h}
-rv32i[crc32_w]   =  { mul zbr     rs1     rd                       crc32_w}
-rv32i[crc32c_b]  =  { mul zbr     rs1     rd                       crc32c_b}
-rv32i[crc32c_h]  =  { mul zbr     rs1     rd                       crc32c_h}
-rv32i[crc32c_w]  =  { mul zbr     rs1     rd                       crc32c_w}
-
-rv32i[bfp]       =  { mul zbf     rs1 rs2 rd                       bfp   }
-
-rv32i[grev]          =  { mul     zbp rs1 rs2 rd                       grev  }
-
-rv32i[grevi{0-23}]   =  { mul     zbp rs1     rd         shimm5        grev  }
-rv32i[grevi{25-30}]  =  { mul     zbp rs1     rd         shimm5        grev  }
-
-rv32i[rev8]          =  { alu zbb zbp rs1     rd         shimm5        grev  } # grevi24
-rv32i[rev]           =  { alu zbb zbp rs1     rd         shimm5        grev  } # grevi31
-
-rv32i[gorc]          =  { mul     zbp rs1 rs2 rd                       gorc  }
-
-rv32i[gorci{0-6}]    =  { mul     zbp rs1     rd         shimm5        gorc  }
-rv32i[gorci{8-15}]   =  { mul     zbp rs1     rd         shimm5        gorc  }
-rv32i[gorci{17-31}]  =  { mul     zbp rs1     rd         shimm5        gorc  }
-
-rv32i[orc_b]         =  { alu zbb zbp rs1     rd         shimm5        gorc  }  # gorci7
-rv32i[orc16]         =  { alu zbb zbp rs1     rd         shimm5        gorc  }  # gorci16
-
-
-rv32i[shfl]      =  { mul     zbp rs1 rs2 rd                       shfl  }
-rv32i[shfli]     =  { mul     zbp rs1     rd         shimm5        shfl  }
-
-rv32i[unshfl]    =  { mul     zbp rs1 rs2 rd                       unshfl}
-rv32i[unshfli]   =  { mul     zbp rs1     rd         shimm5        unshfl}
-
-
-rv32i[div]       =  { div rs1 rs2 rd           }
-rv32i[divu]      =  { div rs1 rs2 rd unsign    }
-rv32i[rem]       =  { div rs1 rs2 rd        rem}
-rv32i[remu]      =  { div rs1 rs2 rd unsign rem}
-
-rv32i[add]       =  { alu rs1 rs2   rd add pm_alu }
-rv32i[addi]      =  { alu rs1 imm12 rd add pm_alu }
-
-rv32i[sub]       =  { alu rs1 rs2   rd sub pm_alu }
-
-rv32i[and]       =  { alu rs1 rs2   rd land pm_alu }
-rv32i[andi]      =  { alu rs1 imm12 rd land pm_alu }
-
-rv32i[or]        =  { alu rs1 rs2   rd lor pm_alu }
-rv32i[ori]       =  { alu rs1 imm12 rd lor pm_alu }
-
-rv32i[xor]       =  { alu rs1 rs2   rd lxor pm_alu }
-rv32i[xori]      =  { alu rs1 imm12 rd lxor pm_alu }
-
-rv32i[sll]       =  { alu rs1 rs2    rd sll pm_alu }
-rv32i[slli]      =  { alu rs1 shimm5 rd sll pm_alu }
-
-rv32i[sra]       =  { alu rs1 rs2    rd sra pm_alu }
-rv32i[srai]      =  { alu rs1 shimm5 rd sra pm_alu }
-
-rv32i[srl]       =  { alu rs1 rs2    rd srl pm_alu }
-rv32i[srli]      =  { alu rs1 shimm5 rd srl pm_alu }
-
-rv32i[lui]       =  { alu imm20    rd lor pm_alu }
-rv32i[auipc]     =  { alu imm20 pc rd add pm_alu }
-
-
-rv32i[slt]    =     { alu rs1 rs2    rd sub slt        pm_alu }
-rv32i[sltu]    =    { alu rs1 rs2    rd sub slt unsign pm_alu }
-rv32i[slti]    =    { alu rs1 imm12  rd sub slt        pm_alu }
-rv32i[sltiu]    =   { alu rs1 imm12  rd sub slt unsign pm_alu }
-
-rv32i[beq]    =     { alu rs1 rs2 sub condbr beq }
-rv32i[bne]    =     { alu rs1 rs2 sub condbr bne }
-rv32i[bge]    =     { alu rs1 rs2 sub condbr bge }
-rv32i[blt]    =     { alu rs1 rs2 sub condbr blt }
-rv32i[bgeu]    =    { alu rs1 rs2 sub condbr bge unsign }
-rv32i[bltu]    =    { alu rs1 rs2 sub condbr blt unsign }
-
-rv32i[jal]    =     { alu imm20 rd pc    jal }
-rv32i[jalr]    =    { alu rs1   rd imm12 jal }
-
-
-
-rv32i[lb] =      { lsu load rs1 rd by    }
-rv32i[lh] =      { lsu load rs1 rd half  }
-rv32i[lw] =      { lsu load rs1 rd word  }
-rv32i[lbu] =     { lsu load rs1 rd by   unsign  }
-rv32i[lhu] =     { lsu load rs1 rd half unsign  }
-
-rv32i[sb] =      { lsu store rs1 rs2 by   }
-rv32i[sh] =      { lsu store rs1 rs2 half }
-rv32i[sw] =      { lsu store rs1 rs2 word }
-
-
-rv32i[fence] =   { alu lor fence presync}
-
-# fence.i has fence effect in addtion to flush I$ and redirect
-rv32i[fence.i] = { alu lor fence fence_i presync postsync}
-
-# nops for now
-
-rv32i[ebreak] = {  alu rs1 imm12 rd lor ebreak postsync}
-rv32i[ecall] =  {  alu rs1 imm12 rd lor ecall  postsync}
-rv32i[mret] =   {  alu rs1 imm12 rd lor mret   postsync}
-
-rv32i[wfi] =    {  alu rs1 imm12 rd lor pm_alu }
-
-# csr means read
-
-# csr_read - put csr on rs2 and rs1 0's
-rv32i[csrrc_ro] =        { alu rd csr_read }
-
-# put csr on rs2 and make rs1 0's into alu.  Save rs1 for csr_clr later
-rv32i[csrrc_rw{0-4}] =   { alu rd csr_read rs1 csr_clr            presync postsync }
-
-rv32i[csrrci_ro] =       { alu rd csr_read }
-
-rv32i[csrrci_rw{0-4}] =  { alu rd csr_read rs1 csr_clr   csr_imm  presync postsync }
-
-rv32i[csrrs_ro] =        { alu rd csr_read }
-
-rv32i[csrrs_rw{0-4}] =   { alu rd csr_read rs1 csr_set            presync postsync }
-
-rv32i[csrrsi_ro] =       { alu rd csr_read }
-
-rv32i[csrrsi_rw{0-4}] =  { alu rd csr_read rs1 csr_set   csr_imm presync postsync }
-
-rv32i[csrrw{0-4}] =     { alu rd csr_read rs1 csr_write         presync postsync }
-
-
-rv32i[csrrwi{0-4}] =         { alu rd csr_read rs1 csr_write csr_imm presync postsync }
-
-# optimize csr write only - pipelined
-rv32i[csrw] =                { alu rd rs1 csr_write           }
-
-rv32i[csrwi]       =         { alu rd     csr_write csr_imm   }
-
-
-.end
-
diff --git a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec.sv b/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec.sv
deleted file mode 100644
index 3c08145..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec.sv
+++ /dev/null
@@ -1,454 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// dec: decode unit - decode, bypassing, ARF, interrupts
-//
-//********************************************************************************
-// $Id$
-//
-//
-// Function: Decode
-// Comments: Decode, dependency scoreboard, ARF
-//
-//
-// A -> D -> EX1 ... WB
-//
-//********************************************************************************
-
-module eb1_dec
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic clk,                          // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic active_clk,                   // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic free_clk,                     // Clock always.                  Through two clock headers. For flops without second clock header built in.
-   input logic free_l2clk,                   // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic lsu_fastint_stall_any,        // needed by lsu for 2nd pass of dma with ecc correction, stall next cycle
-
-   output logic dec_extint_stall,            // Stall on external interrupt
-
-   output logic dec_i0_decode_d,             // Valid instruction at D-stage and not blocked
-   output logic dec_pause_state_cg,          // to top for active state clock gating
-
-   output logic dec_tlu_core_empty,
-
-   input logic rst_l,                        // reset, active low
-   input logic [31:1] rst_vec,               // reset vector, from core pins
-
-   input logic        nmi_int,               // NMI pin
-   input logic [31:1] nmi_vec,               // NMI vector, from pins
-
-   input logic  i_cpu_halt_req,              // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,               // Asynchronous Restart request to CPU
-
-   output logic o_cpu_halt_status,           // Halt status of core (pmu/fw)
-   output logic o_cpu_halt_ack,              // Halt request ack
-   output logic o_cpu_run_ack,               // Run request ack
-   output logic o_debug_mode_status,         // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id,               // CORE ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req,           // Async halt request
-   input logic mpc_debug_run_req,            // Async run request
-   input logic mpc_reset_run_req,            // Run/halt after reset
-   output logic mpc_debug_halt_ack,          // Halt ack
-   output logic mpc_debug_run_ack,           // Run ack
-   output logic debug_brkpt_status,          // debug breakpoint
-
-    input logic       exu_pmu_i0_br_misp,    // slot 0 branch misp
-   input logic       exu_pmu_i0_br_ataken,   // slot 0 branch actual taken
-   input logic       exu_pmu_i0_pc4,         // slot 0 4 byte branch
-
-
-   input logic                                lsu_nonblock_load_valid_m,      // valid nonblock load at m
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_tag_m,        // -> corresponding tag
-   input logic                                lsu_nonblock_load_inv_r,        // invalidate request for nonblock load r
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_inv_tag_r,    // -> corresponding tag
-   input logic                                lsu_nonblock_load_data_valid,   // valid nonblock load data back
-   input logic                                lsu_nonblock_load_data_error,   // nonblock load bus error
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_data_tag,     // -> corresponding tag
-   input logic [31:0]                         lsu_nonblock_load_data,         // nonblock load data
-
-   input logic       lsu_pmu_bus_trxn,           // D side bus transaction
-   input logic       lsu_pmu_bus_misaligned,     // D side bus misaligned
-   input logic       lsu_pmu_bus_error,          // D side bus error
-   input logic       lsu_pmu_bus_busy,           // D side bus busy
-   input logic       lsu_pmu_misaligned_m,       // D side load or store misaligned
-   input logic       lsu_pmu_load_external_m,    // D side bus load
-   input logic       lsu_pmu_store_external_m,   // D side bus store
-   input logic       dma_pmu_dccm_read,          // DMA DCCM read
-   input logic       dma_pmu_dccm_write,         // DMA DCCM write
-   input logic       dma_pmu_any_read,           // DMA read
-   input logic       dma_pmu_any_write,          // DMA write
-
-   input logic [31:1] lsu_fir_addr,          // Fast int address
-   input logic [1:0] lsu_fir_error,          // Fast int lookup error
-
-   input logic       ifu_pmu_instr_aligned,  // aligned instructions
-   input logic       ifu_pmu_fetch_stall,    // fetch unit stalled
-   input logic       ifu_pmu_ic_miss,        // icache miss
-   input logic       ifu_pmu_ic_hit,         // icache hit
-   input logic       ifu_pmu_bus_error,      // Instruction side bus error
-   input logic       ifu_pmu_bus_busy,       // Instruction side bus busy
-   input logic       ifu_pmu_bus_trxn,       // Instruction side bus transaction
-
-   input logic       ifu_ic_error_start,     // IC single bit error
-   input logic       ifu_iccm_rd_ecc_single_err, // ICCM single bit error
-
-   input logic [3:0]  lsu_trigger_match_m,
-   input logic        dbg_cmd_valid,         // debugger abstract command valid
-   input logic        dbg_cmd_write,         // command is a write
-   input logic  [1:0] dbg_cmd_type,          // command type
-   input logic [31:0] dbg_cmd_addr,          // command address
-   input logic  [1:0] dbg_cmd_wrdata,        // command write data, for fence/fence_i
-
-
-   input logic        ifu_i0_icaf,           // icache access fault
-   input logic [1:0]  ifu_i0_icaf_type,      // icache access fault type
-
-   input logic   ifu_i0_icaf_second,         // i0 has access fault on second 2B of 4B inst
-   input logic   ifu_i0_dbecc,               // icache/iccm double-bit error
-
-   input logic lsu_idle_any,                 // lsu idle for halting
-
-   input eb1_br_pkt_t i0_brp,                                  // branch packet
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index, // BP index
-   input logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr,            // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag,           // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index,          // Fully associt btb index
-
-   input eb1_lsu_error_pkt_t lsu_error_pkt_r,         // LSU exception/error packet
-   input logic         lsu_single_ecc_error_incr,      // LSU inc SB error counter
-
-   input logic         lsu_imprecise_error_load_any,   // LSU imprecise load bus error
-   input logic         lsu_imprecise_error_store_any,  // LSU imprecise store bus error
-   input logic [31:0]  lsu_imprecise_error_addr_any,   // LSU imprecise bus error address
-
-   input logic [31:0]  exu_div_result,      // final div result
-   input logic         exu_div_wren,        // Divide write enable to GPR
-
-   input logic [31:0] exu_csr_rs1_x,        // rs1 for csr instruction
-
-   input logic [31:0] lsu_result_m,         // load result
-   input logic [31:0] lsu_result_corr_r,    // load result - corrected load data
-
-   input logic        lsu_load_stall_any,   // This is for blocking loads
-   input logic        lsu_store_stall_any,  // This is for blocking stores
-   input logic        dma_dccm_stall_any,   // stall any load/store at decode, pmu event
-   input logic        dma_iccm_stall_any,   // iccm stalled, pmu event
-
-   input logic       iccm_dma_sb_error,     // ICCM DMA single bit error
-
-   input logic exu_flush_final,             // slot0 flush
-
-   input logic [31:1] exu_npc_r,            // next PC
-
-   input logic [31:0] exu_i0_result_x,      // alu result x
-
-
-   input logic         ifu_i0_valid,                  // fetch valids to instruction buffer
-   input logic [31:0]  ifu_i0_instr,                  // fetch inst's to instruction buffer
-   input logic [31:1]  ifu_i0_pc,                     // pc's for instruction buffer
-   input logic         ifu_i0_pc4,                    // indication of 4B or 2B for corresponding inst
-   input logic  [31:1] exu_i0_pc_x,                   // pc's for e1 from the alu's
-
-   input logic mexintpend,                            // External interrupt pending
-   input logic timer_int,                             // Timer interrupt pending (from pin)
-   input logic soft_int,                              // Software interrupt pending (from pin)
-
-   input logic [7:0] pic_claimid,                     // PIC claimid
-   input logic [3:0] pic_pl,                          // PIC priv level
-   input logic       mhwakeup,                        // High priority wakeup
-
-   output logic [3:0] dec_tlu_meicurpl,               // to PIC, Current priv level
-   output logic [3:0] dec_tlu_meipt,                  // to PIC
-
-   input logic [70:0] ifu_ic_debug_rd_data,           // diagnostic icache read data
-   input logic ifu_ic_debug_rd_data_valid,            // diagnostic icache read data valid
-   output eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt, // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-
-
-// Debug start
-   input logic dbg_halt_req,                 // DM requests a halt
-   input logic dbg_resume_req,               // DM requests a resume
-   input logic ifu_miss_state_idle,          // I-side miss buffer empty
-
-   output logic dec_tlu_dbg_halted,          // Core is halted and ready for debug command
-   output logic dec_tlu_debug_mode,          // Core is in debug mode
-   output logic dec_tlu_resume_ack,          // Resume acknowledge
-   output logic dec_tlu_flush_noredir_r,     // Tell fetch to idle on this flush
-   output logic dec_tlu_mpc_halted_only,     // Core is halted only due to MPC
-   output logic dec_tlu_flush_leak_one_r,    // single step
-   output logic dec_tlu_flush_err_r,         // iside perr/ecc rfpc
-   output logic [31:2] dec_tlu_meihap,       // Fast ext int base
-
-   output logic dec_debug_wdata_rs1_d,       // insert debug write data into rs1 at decode
-
-   output logic [31:0] dec_dbg_rddata,       // debug command read data
-
-   output logic dec_dbg_cmd_done,            // abstract command is done
-   output logic dec_dbg_cmd_fail,            // abstract command failed (illegal reg address)
-
-   output eb1_trigger_pkt_t  [3:0] trigger_pkt_any, // info needed by debug trigger blocks
-
-   output logic dec_tlu_force_halt,          // halt has been forced
-// Debug end
-   // branch info from pipe0 for errors or counter updates
-   input logic [1:0]  exu_i0_br_hist_r,             // history
-   input logic        exu_i0_br_error_r,            // error
-   input logic        exu_i0_br_start_error_r,      // start error
-   input logic        exu_i0_br_valid_r,            // valid
-   input logic        exu_i0_br_mp_r,               // mispredict
-   input logic        exu_i0_br_middle_r,           // middle of bank
-
-   // branch info from pipe1 for errors or counter updates
-
-   input logic             exu_i0_br_way_r,         // way hit or repl
-
-   output logic         dec_i0_rs1_en_d,            // Qualify GPR RS1 data
-   output logic         dec_i0_rs2_en_d,            // Qualify GPR RS2 data
-   output logic  [31:0] gpr_i0_rs1_d,               // gpr rs1 data
-   output logic  [31:0] gpr_i0_rs2_d,               // gpr rs2 data
-
-   output logic [31:0] dec_i0_immed_d,              // immediate data
-   output logic [12:1] dec_i0_br_immed_d,           // br immediate data
-
-   output        eb1_alu_pkt_t i0_ap,              // alu packet
-
-   output logic          dec_i0_alu_decode_d,       // schedule on D-stage alu
-   output logic          dec_i0_branch_d,           // Branch in D-stage
-
-   output logic          dec_i0_select_pc_d,        // select pc onto rs1 for jal's
-
-   output logic [31:1]  dec_i0_pc_d,                // pc's at decode
-   output logic [3:0]   dec_i0_rs1_bypass_en_d,     // rs1 bypass enable
-   output logic [3:0]   dec_i0_rs2_bypass_en_d,     // rs2 bypass enable
-
-   output logic [31:0]  dec_i0_result_r,            // Result R-stage
-
-   output eb1_lsu_pkt_t    lsu_p,                  // lsu packet
-   output logic             dec_qual_lsu_d,         // LSU instruction at D.  Use to quiet LSU operands
-   output eb1_mul_pkt_t    mul_p,                  // mul packet
-   output eb1_div_pkt_t    div_p,                  // div packet
-   output logic             dec_div_cancel,         // cancel divide operation
-
-   output logic [11:0] dec_lsu_offset_d,            // 12b offset for load/store addresses
-
-   output logic        dec_csr_ren_d,               // CSR read enable
-   output logic [31:0] dec_csr_rddata_d,            // CSR read data
-
-   output logic        dec_tlu_flush_lower_r,       // tlu flush due to late mp, exception, rfpc, or int
-   output logic        dec_tlu_flush_lower_wb,
-   output logic [31:1] dec_tlu_flush_path_r,        // tlu flush target
-   output logic        dec_tlu_i0_kill_writeb_r,    // I0 is flushed, don't writeback any results to arch state
-   output logic        dec_tlu_fence_i_r,           // flush is a fence_i rfnpc, flush icache
-
-   output logic [31:1] pred_correct_npc_x,          // npc if prediction is correct at e2 stage
-
-   output eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt,      // slot 0 branch predictor update packet
-
-   output logic dec_tlu_perfcnt0,                   // toggles when slot0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1,                   // toggles when slot0 perf counter 1 has an event inc
-   output logic dec_tlu_perfcnt2,                   // toggles when slot0 perf counter 2 has an event inc
-   output logic dec_tlu_perfcnt3,                   // toggles when slot0 perf counter 3 has an event inc
-
-   output eb1_predict_pkt_t dec_i0_predict_p_d,                        // prediction packet to alus
-   output logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d,                // DEC predict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d,     // DEC predict index
-   output logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d,               // DEC predict branch tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   output logic dec_lsu_valid_raw_d,
-
-   output logic [31:0] dec_tlu_mrac_ff,              // CSR for memory region control
-
-   output logic [1:0] dec_data_en,                   // clock-gate control logic
-   output logic [1:0] dec_ctl_en,
-
-   input logic [15:0] ifu_i0_cinst,                  // 16b compressed instruction
-
-   output eb1_trace_pkt_t  trace_rv_trace_pkt,      // trace packet
-
-   // feature disable from mfdc
-   output logic  dec_tlu_external_ldfwd_disable,     // disable external load forwarding
-   output logic  dec_tlu_sideeffect_posted_disable,  // disable posted stores to side-effect address
-   output logic  dec_tlu_core_ecc_disable,           // disable core ECC
-   output logic  dec_tlu_bpred_disable,              // disable branch prediction
-   output logic  dec_tlu_wb_coalescing_disable,      // disable writebuffer coalescing
-   output logic [2:0]  dec_tlu_dma_qos_prty,         // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   output logic  dec_tlu_misc_clk_override,          // override misc clock domain gating
-   output logic  dec_tlu_ifu_clk_override,           // override fetch clock domain gating
-   output logic  dec_tlu_lsu_clk_override,           // override load/store clock domain gating
-   output logic  dec_tlu_bus_clk_override,           // override bus clock domain gating
-   output logic  dec_tlu_pic_clk_override,           // override PIC clock domain gating
-   output logic  dec_tlu_picio_clk_override,         // override PICIO clock domain gating
-   output logic  dec_tlu_dccm_clk_override,          // override DCCM clock domain gating
-   output logic  dec_tlu_icm_clk_override,           // override ICCM clock domain gating
-
-   output logic  dec_tlu_i0_commit_cmt,              // committed i0 instruction
-   input  logic  scan_mode                           // Flop scan mode control
- 
-
-   );
-
-
-   logic  dec_tlu_dec_clk_override;      // to and from dec blocks
-   logic  clk_override;
-
-   logic               dec_ib0_valid_d;
-
-   logic               dec_pmu_instr_decoded;
-   logic               dec_pmu_decode_stall;
-   logic               dec_pmu_presync_stall;
-   logic               dec_pmu_postsync_stall;
-
-   logic dec_tlu_wr_pause_r;             // CSR write to pause reg is at R.
-
-   logic [4:0]  dec_i0_rs1_d;
-   logic [4:0]  dec_i0_rs2_d;
-
-   logic [31:0] dec_i0_instr_d;
-
-   logic  dec_tlu_trace_disable;
-   logic  dec_tlu_pipelining_disable;
-
-
-   logic [4:0]  dec_i0_waddr_r;
-   logic        dec_i0_wen_r;
-   logic [31:0] dec_i0_wdata_r;
-   logic        dec_csr_wen_r;           // csr write enable at wb
-   logic [11:0] dec_csr_wraddr_r;        // write address for csryes
-   logic [31:0] dec_csr_wrdata_r;        // csr write data at wb
-
-   logic [11:0] dec_csr_rdaddr_d;        // read address for csr
-   logic        dec_csr_legal_d;         // csr indicates legal operation
-
-   logic        dec_csr_wen_unq_d;       // valid csr with write - for csr legal
-   logic        dec_csr_any_unq_d;       // valid csr - for csr legal
-   logic        dec_csr_stall_int_ff;    // csr is mie/mstatus
-
-   eb1_trap_pkt_t dec_tlu_packet_r;
-
-   logic        dec_i0_pc4_d;
-   logic        dec_tlu_presync_d;
-   logic        dec_tlu_postsync_d;
-   logic        dec_tlu_debug_stall;
-
-   logic [31:0] dec_illegal_inst;
-
-   logic                      dec_i0_icaf_d;
-
-   logic                      dec_i0_dbecc_d;
-   logic                      dec_i0_icaf_second_d;
-   logic [3:0]                dec_i0_trigger_match_d;
-   logic                      dec_debug_fence_d;
-   logic                      dec_nonblock_load_wen;
-   logic [4:0]                dec_nonblock_load_waddr;
-   logic                      dec_tlu_flush_pause_r;
-   eb1_br_pkt_t                   dec_i0_brp;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index;
-   logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr;
-   logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag;
-   logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index;          // Fully associt btb index
-
-   logic [31:1]               dec_tlu_i0_pc_r;
-   logic                      dec_tlu_i0_kill_writeb_wb;
-   logic                      dec_tlu_i0_valid_r;
-
-   logic                      dec_pause_state;
-
-   logic [1:0]                dec_i0_icaf_type_d;   // i0 instruction access fault type
-
-   logic                      dec_tlu_flush_extint; // Fast ext int started
-
-   logic [31:0]               dec_i0_inst_wb;
-   logic [31:1]               dec_i0_pc_wb;
-   logic                      dec_tlu_i0_valid_wb1,  dec_tlu_int_valid_wb1;
-   logic [4:0]                dec_tlu_exc_cause_wb1;
-   logic [31:0]               dec_tlu_mtval_wb1;
-   logic                      dec_tlu_i0_exc_valid_wb1;
-
-   logic [4:0]                div_waddr_wb;
-   logic                      dec_div_active;
-
-   logic                      dec_debug_valid_d;
-
-
-// Adding signals for vector
-   
-   //logic stall_scalar;
-   
-   
-   
-   assign clk_override = dec_tlu_dec_clk_override;
-
-
-   assign dec_dbg_rddata[31:0] = dec_i0_wdata_r[31:0];
-
-
-   eb1_dec_ib_ctl #(.pt(pt)) instbuff (.*);
-
-
-   eb1_dec_decode_ctl #(.pt(pt)) decode (.*);
-
-
-   eb1_dec_tlu_ctl #(.pt(pt)) tlu (.*);
-
-
-   eb1_dec_gpr_ctl #(.pt(pt)) arf (.*,
-                    // inputs
-                    .raddr0(dec_i0_rs1_d[4:0]),
-                    .raddr1(dec_i0_rs2_d[4:0]),
-
-                    .wen0(dec_i0_wen_r),          .waddr0(dec_i0_waddr_r[4:0]),          .wd0(dec_i0_wdata_r[31:0]),
-                    .wen1(dec_nonblock_load_wen), .waddr1(dec_nonblock_load_waddr[4:0]), .wd1(lsu_nonblock_load_data[31:0]),
-                    .wen2(exu_div_wren),          .waddr2(div_waddr_wb),                 .wd2(exu_div_result[31:0]),
-
-                    // outputs
-                    .rd0(gpr_i0_rs1_d[31:0]), .rd1(gpr_i0_rs2_d[31:0])
-                    );
-
-
-// Trigger
-
-   eb1_dec_trigger #(.pt(pt)) dec_trigger (.*);
-
-
-
-
-// trace
-   assign trace_rv_trace_pkt.trace_rv_i_insn_ip      =   dec_i0_inst_wb[31:0];
-   assign trace_rv_trace_pkt.trace_rv_i_address_ip   = { dec_i0_pc_wb[31:1], 1'b0};
-
-   assign trace_rv_trace_pkt.trace_rv_i_valid_ip     = dec_tlu_int_valid_wb1 | dec_tlu_i0_valid_wb1 | dec_tlu_i0_exc_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_exception_ip = dec_tlu_int_valid_wb1 |  dec_tlu_i0_exc_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_ecause_ip    = dec_tlu_exc_cause_wb1[4:0];     // replicate across ports
-   assign trace_rv_trace_pkt.trace_rv_i_interrupt_ip = dec_tlu_int_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_tval_ip      = dec_tlu_mtval_wb1[31:0];        // replicate across ports
-
-
-
-// end trace
-
-
-endmodule // eb1_dec
-
diff --git a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_decode_ctl.sv b/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_decode_ctl.sv
deleted file mode 100644
index b663545..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_decode_ctl.sv
+++ /dev/null
@@ -1,1825 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_dec_decode_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic dec_tlu_trace_disable,
-   input logic dec_debug_valid_d,
-
-   input logic dec_tlu_flush_extint,         // Flush external interrupt
-
-   input logic dec_tlu_force_halt,           // invalidate nonblock load cam on a force halt event
-
-   output logic dec_extint_stall,            // Stall from external interrupt
-
-   input  logic [15:0] ifu_i0_cinst,         // 16b compressed instruction
-   output logic [31:0] dec_i0_inst_wb,       // 32b instruction at wb+1 for trace encoder
-   output logic [31:1] dec_i0_pc_wb,         // 31b pc at wb+1 for trace encoder
-
-
-   input logic                                lsu_nonblock_load_valid_m,       // valid nonblock load at m
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_tag_m,         // -> corresponding tag
-   input logic                                lsu_nonblock_load_inv_r,         // invalidate request for nonblock load r
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_inv_tag_r,     // -> corresponding tag
-   input logic                                lsu_nonblock_load_data_valid,    // valid nonblock load data back
-   input logic                                lsu_nonblock_load_data_error,    // nonblock load bus error
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_data_tag,      // -> corresponding tag
-
-
-   input logic [3:0] dec_i0_trigger_match_d,          // i0 decode trigger matches
-
-   input logic dec_tlu_wr_pause_r,                    // pause instruction at r
-   input logic dec_tlu_pipelining_disable,            // pipeline disable - presync, i0 decode only
-
-   input logic [3:0]  lsu_trigger_match_m,            // lsu trigger matches
-
-   input logic lsu_pmu_misaligned_m,                  // perf mon: load/store misalign
-   input logic dec_tlu_debug_stall,                   // debug stall decode
-   input logic dec_tlu_flush_leak_one_r,              // leak1 instruction
-
-   input logic dec_debug_fence_d,                     // debug fence instruction
-
-   input logic [1:0] dbg_cmd_wrdata,                  // disambiguate fence, fence_i
-
-   input logic dec_i0_icaf_d,                         // icache access fault
-   input logic dec_i0_icaf_second_d,                  // i0 instruction access fault on second 2B of 4B inst
-   input logic [1:0] dec_i0_icaf_type_d,              // i0 instruction access fault type
-
-   input logic dec_i0_dbecc_d,                        // icache/iccm double-bit error
-
-   input eb1_br_pkt_t dec_i0_brp,                    // branch packet
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index,   // i0 branch index
-   input logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr,  // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag, // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index,          // Fully associt btb index
-
-   input logic lsu_idle_any,                          // lsu idle: if fence instr & ~lsu_idle then stall decode
-
-   input logic lsu_load_stall_any,                    // stall any load at decode
-   input logic lsu_store_stall_any,                   // stall any store at decode
-   input logic dma_dccm_stall_any,                    // stall any load/store at decode
-
-   input logic exu_div_wren,                          // nonblocking divide write enable to GPR.
-
-   input logic dec_tlu_i0_kill_writeb_wb,             // I0 is flushed, don't writeback any results to arch state
-   input logic dec_tlu_flush_lower_wb,                // trap lower flush
-   input logic dec_tlu_i0_kill_writeb_r,              // I0 is flushed, don't writeback any results to arch state
-   input logic dec_tlu_flush_lower_r,                 // trap lower flush
-   input logic dec_tlu_flush_pause_r,                 // don't clear pause state on initial lower flush
-   input logic dec_tlu_presync_d,                     // CSR read needs to be presync'd
-   input logic dec_tlu_postsync_d,                    // CSR ops that need to be postsync'd
-
-   input logic dec_i0_pc4_d,                          // inst is 4B inst else 2B
-
-   input logic [31:0] dec_csr_rddata_d,               // csr read data at wb
-   input logic dec_csr_legal_d,                       // csr indicates legal operation
-
-   input logic [31:0] exu_csr_rs1_x,                  // rs1 for csr instr
-
-   input logic [31:0] lsu_result_m,                   // load result
-   input logic [31:0] lsu_result_corr_r,              // load result - corrected data for writing gpr's, not for bypassing
-
-   input logic exu_flush_final,                       // lower flush or i0 flush at X or D
-
-   input logic [31:1] exu_i0_pc_x,                    // pcs at e1
-
-   input logic [31:0] dec_i0_instr_d,                 // inst at decode
-
-   input logic  dec_ib0_valid_d,                      // inst valid at decode
-
-   input logic [31:0] exu_i0_result_x,                // from primary alu's
-
-   input logic  clk,                                  // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic  active_clk,                           // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic  free_l2clk,                           // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic  clk_override,                         // Override non-functional clock gating
-   input logic  rst_l,                                // Flop reset
-
-
-
-   output logic        dec_i0_rs1_en_d,               // rs1 enable at decode
-   output logic        dec_i0_rs2_en_d,               // rs2 enable at decode
-
-   output logic [4:0]  dec_i0_rs1_d,                  // rs1 logical source
-   output logic [4:0]  dec_i0_rs2_d,                  // rs2 logical source
-
-   output logic [31:0] dec_i0_immed_d,                // 32b immediate data decode
-
-
-   output logic [12:1] dec_i0_br_immed_d,             // 12b branch immediate
-
-   output eb1_alu_pkt_t i0_ap,                       // alu packets
-
-   output logic        dec_i0_decode_d,               // i0 decode
-
-   output logic        dec_i0_alu_decode_d,           // decode to D-stage alu
-   output logic        dec_i0_branch_d,               // Branch in D-stage
-
-   output logic [4:0]  dec_i0_waddr_r,                // i0 logical source to write to gpr's
-   output logic        dec_i0_wen_r,                  // i0 write enable
-   output logic [31:0] dec_i0_wdata_r,                // i0 write data
-
-   output logic        dec_i0_select_pc_d,            // i0 select pc for rs1 - branches
-
-   output logic [3:0]    dec_i0_rs1_bypass_en_d,      // i0 rs1 bypass enable
-   output logic [3:0]    dec_i0_rs2_bypass_en_d,      // i0 rs2 bypass enable
-   output logic [31:0]   dec_i0_result_r,             // Result R-stage
-
-   output eb1_lsu_pkt_t    lsu_p,                    // load/store packet
-   output logic             dec_qual_lsu_d,           // LSU instruction at D.  Use to quiet LSU operands
-
-   output eb1_mul_pkt_t    mul_p,                    // multiply packet
-
-   output eb1_div_pkt_t    div_p,                    // divide packet
-   output logic [4:0]       div_waddr_wb,             // DIV write address to GPR
-   output logic             dec_div_cancel,           // cancel the divide operation
-
-   output logic        dec_lsu_valid_raw_d,
-   output logic [11:0] dec_lsu_offset_d,
-
-   output logic        dec_csr_ren_d,                 // valid csr decode
-   output logic        dec_csr_wen_unq_d,             // valid csr with write - for csr legal
-   output logic        dec_csr_any_unq_d,             // valid csr - for csr legal
-   output logic [11:0] dec_csr_rdaddr_d,              // read address for csr
-   output logic        dec_csr_wen_r,                 // csr write enable at r
-   output logic [11:0] dec_csr_wraddr_r,              // write address for csr
-   output logic [31:0] dec_csr_wrdata_r,              // csr write data at r
-   output logic        dec_csr_stall_int_ff,          // csr is mie/mstatus
-
-   output              dec_tlu_i0_valid_r,            // i0 valid inst at c
-
-   output eb1_trap_pkt_t   dec_tlu_packet_r,              // trap packet
-
-   output logic [31:1] dec_tlu_i0_pc_r,               // i0 trap pc
-
-   output logic [31:0] dec_illegal_inst,              // illegal inst
-   output logic [31:1] pred_correct_npc_x,            // npc e2 if the prediction is correct
-
-   output eb1_predict_pkt_t dec_i0_predict_p_d,      // i0 predict packet decode
-   output logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d, // i0 predict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d, // i0 predict index
-   output logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d, // i0_predict branch tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   output logic [1:0] dec_data_en,                    // clock-gating logic
-   output logic [1:0] dec_ctl_en,
-
-   output logic       dec_pmu_instr_decoded,          // number of instructions decode this cycle encoded
-   output logic       dec_pmu_decode_stall,           // decode is stalled
-   output logic       dec_pmu_presync_stall,          // decode has presync stall
-   output logic       dec_pmu_postsync_stall,         // decode has postsync stall
-
-   output logic       dec_nonblock_load_wen,          // write enable for nonblock load
-   output logic [4:0] dec_nonblock_load_waddr,        // logical write addr for nonblock load
-   output logic       dec_pause_state,                // core in pause state
-   output logic       dec_pause_state_cg,             // pause state for clock-gating
-
-   output logic       dec_div_active,                 // non-block divide is active
-
-   input  logic       scan_mode
-   
-   );
-
-
-
-
-   eb1_dec_pkt_t           i0_dp_raw, i0_dp;
-
-   logic [31:0]        i0;
-   logic               i0_valid_d;
-
-   logic [31:0]        i0_result_r;
-
-   logic [2:0]         i0_rs1bypass, i0_rs2bypass;
-
-   logic               i0_jalimm20;
-   logic               i0_uiimm20;
-
-   logic               lsu_decode_d;
-   logic [31:0]        i0_immed_d;
-   logic               i0_presync;
-   logic               i0_postsync;
-
-   logic               postsync_stall;
-   logic               ps_stall;
-
-   logic               prior_inflight, prior_inflight_wb;
-
-   logic               csr_clr_d, csr_set_d, csr_write_d;
-
-   logic               csr_clr_x,csr_set_x,csr_write_x,csr_imm_x;
-   logic [31:0]        csr_mask_x;
-   logic [31:0]        write_csr_data_x;
-   logic [31:0]        write_csr_data_in;
-   logic [31:0]        write_csr_data;
-   logic               csr_data_wen;
-
-   logic [4:0]         csrimm_x;
-
-   logic [31:0]        csr_rddata_x;
-
-   logic               mul_decode_d;
-   logic               div_decode_d;
-   logic               div_e1_to_r;
-   logic               div_flush;
-   logic               div_active_in;
-   logic               div_active;
-   logic               i0_nonblock_div_stall;
-   logic               i0_div_prior_div_stall;
-   logic               nonblock_div_cancel;
-
-   logic               i0_legal;
-   logic               shift_illegal;
-   logic               illegal_inst_en;
-   logic               illegal_lockout_in, illegal_lockout;
-   logic               i0_legal_decode_d;
-   logic               i0_exulegal_decode_d, i0_exudecode_d, i0_exublock_d;
-
-   logic [12:1]        last_br_immed_d;
-   logic               i0_rs1_depend_i0_x, i0_rs1_depend_i0_r;
-   logic               i0_rs2_depend_i0_x, i0_rs2_depend_i0_r;
-
-   logic               i0_div_decode_d;
-   logic               i0_load_block_d;
-   logic [1:0]         i0_rs1_depth_d, i0_rs2_depth_d;
-
-   logic               i0_load_stall_d;
-   logic               i0_store_stall_d;
-
-   logic               i0_predict_nt, i0_predict_t;
-
-   logic               i0_notbr_error, i0_br_toffset_error;
-   logic               i0_ret_error;
-   logic               i0_br_error;
-   logic               i0_br_error_all;
-   logic [11:0]        i0_br_offset;
-
-   logic [20:1]        i0_pcall_imm;                          // predicted jal's
-   logic               i0_pcall_12b_offset;
-   logic               i0_pcall_raw;
-   logic               i0_pcall_case;
-   logic               i0_pcall;
-
-   logic               i0_pja_raw;
-   logic               i0_pja_case;
-   logic               i0_pja;
-
-   logic               i0_pret_case;
-   logic               i0_pret_raw, i0_pret;
-
-   logic               i0_jal;                                // jal's that are not predicted
-
-
-   logic               i0_predict_br;
-
-   logic               store_data_bypass_d, store_data_bypass_m;
-
-   eb1_class_pkt_t         i0_rs1_class_d, i0_rs2_class_d;
-
-   eb1_class_pkt_t         i0_d_c, i0_x_c, i0_r_c;
-
-
-   logic               i0_ap_pc2, i0_ap_pc4;
-
-   logic               i0_rd_en_d;
-
-   logic               load_ldst_bypass_d;
-
-   logic               leak1_i0_stall_in, leak1_i0_stall;
-   logic               leak1_i1_stall_in, leak1_i1_stall;
-   logic               leak1_mode;
-
-   logic               i0_csr_write_only_d;
-
-   logic               prior_inflight_x, prior_inflight_eff;
-   logic               any_csr_d;
-
-   logic               prior_csr_write;
-
-   logic [3:0]        i0_pipe_en;
-   logic              i0_r_ctl_en,  i0_x_ctl_en,  i0_wb_ctl_en;
-   logic              i0_x_data_en, i0_r_data_en, i0_wb_data_en;
-
-   logic              debug_fence_i;
-   logic              debug_fence;
-
-   logic              i0_csr_write;
-   logic              presync_stall;
-
-   logic              i0_instr_error;
-   logic              i0_icaf_d;
-
-   logic              clear_pause;
-   logic              pause_state_in, pause_state;
-   logic              pause_stall;
-
-   logic              i0_brp_valid;
-   logic              nonblock_load_cancel;
-   logic              lsu_idle;
-   logic              lsu_pmu_misaligned_r;
-   logic              csr_ren_qual_d;
-   logic              csr_read_x;
-   logic              i0_block_d;
-   logic              i0_block_raw_d;  // This is use to create the raw valid
-   logic              ps_stall_in;
-   logic [31:0]       i0_result_x;
-
-   eb1_dest_pkt_t         d_d, x_d, r_d, wbd;
-   eb1_dest_pkt_t         x_d_in, r_d_in;
-
-   eb1_trap_pkt_t         d_t, x_t, x_t_in, r_t_in, r_t;
-
-   logic [3:0]        lsu_trigger_match_r;
-
-   logic [31:1]       dec_i0_pc_r;
-
-   logic csr_read, csr_write;
-   logic i0_br_unpred;
-
-   logic nonblock_load_valid_m_delay;
-   logic i0_wen_r;
-
-   logic tlu_wr_pause_r1;
-   logic tlu_wr_pause_r2;
-
-   logic flush_final_r;
-
-   logic bitmanip_zbb_legal;
-   logic bitmanip_zbs_legal;
-   logic bitmanip_zbe_legal;
-   logic bitmanip_zbc_legal;
-   logic bitmanip_zbp_legal;
-   logic bitmanip_zbr_legal;
-   logic bitmanip_zbf_legal;
-   logic bitmanip_zba_legal;
-   logic bitmanip_zbb_zbp_legal;
-   logic bitmanip_legal;
-
-   logic              data_gate_en;
-   logic              data_gate_clk;
-
-
-   localparam NBLOAD_SIZE     = pt.LSU_NUM_NBLOAD;
-   localparam NBLOAD_SIZE_MSB = int'(pt.LSU_NUM_NBLOAD)-1;
-   localparam NBLOAD_TAG_MSB  = pt.LSU_NUM_NBLOAD_WIDTH-1;
-
-
-   logic                     cam_write, cam_inv_reset, cam_data_reset;
-   logic [NBLOAD_TAG_MSB:0]  cam_write_tag, cam_inv_reset_tag, cam_data_reset_tag;
-   logic [NBLOAD_SIZE_MSB:0] cam_wen;
-
-   logic [NBLOAD_TAG_MSB:0]  load_data_tag;
-   logic [NBLOAD_SIZE_MSB:0] nonblock_load_write;
-
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam;
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam_in;
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam_raw;
-
-   logic [4:0] nonblock_load_rd;
-   logic i0_nonblock_load_stall;
-   logic i0_nonblock_boundary_stall;
-
-   logic i0_rs1_nonblock_load_bypass_en_d, i0_rs2_nonblock_load_bypass_en_d;
-
-   logic i0_load_kill_wen_r;
-
-   logic found;
-
-   logic [NBLOAD_SIZE_MSB:0] cam_inv_reset_val, cam_data_reset_val;
-
-   logic debug_fence_raw;
-
-   logic [31:0] i0_result_r_raw;
-   logic [31:0] i0_result_corr_r;
-
-   logic [12:1] last_br_immed_x;
-
-   logic [31:0]        i0_inst_d;
-   logic [31:0]        i0_inst_x;
-   logic [31:0]        i0_inst_r;
-   logic [31:0]        i0_inst_wb_in;
-   logic [31:0]        i0_inst_wb;
-
-   logic [31:1]        i0_pc_wb;
-
-   logic               i0_wb_en;
-
-   logic               trace_enable;
-
-   logic               debug_valid_x;
-
-   eb1_inst_pkt_t i0_itype;
-   eb1_reg_pkt_t i0r;
-   
-
-
-   rvdffie  #(8) misc1ff (.*,
-                          .clk(free_l2clk),
-                          .din( {leak1_i1_stall_in,leak1_i0_stall_in,dec_tlu_flush_extint,pause_state_in ,dec_tlu_wr_pause_r, tlu_wr_pause_r1,illegal_lockout_in,ps_stall_in}),
-                          .dout({leak1_i1_stall,   leak1_i0_stall,   dec_extint_stall,    pause_state,       tlu_wr_pause_r1,tlu_wr_pause_r2,illegal_lockout,   ps_stall   })
-                          );
-
-   rvdffie  #(8) misc2ff (.*,
-                          .clk(free_l2clk),
-                          .din( {lsu_trigger_match_m[3:0],lsu_pmu_misaligned_m,div_active_in,exu_flush_final,  dec_debug_valid_d}),
-                          .dout({lsu_trigger_match_r[3:0],lsu_pmu_misaligned_r,div_active,       flush_final_r,    debug_valid_x})
-                          );
-
-if(pt.BTB_ENABLE==1) begin
-// branch prediction
-
-
-   // in leak1_mode, ignore any predictions for i0, treat branch as if we haven't seen it before
-   // in leak1 mode, also ignore branch errors for i0
-   assign i0_brp_valid                        =  dec_i0_brp.valid & ~leak1_mode & ~i0_icaf_d;
-
-   assign dec_i0_predict_p_d.misp        =  '0;
-   assign dec_i0_predict_p_d.ataken      =  '0;
-   assign dec_i0_predict_p_d.boffset     =  '0;
-
-   assign dec_i0_predict_p_d.pcall       =  i0_pcall;  // don't mark as pcall if branch error
-   assign dec_i0_predict_p_d.pja         =  i0_pja;
-   assign dec_i0_predict_p_d.pret        =  i0_pret;
-   assign dec_i0_predict_p_d.prett[31:1] =  dec_i0_brp.prett[31:1];
-   assign dec_i0_predict_p_d.pc4         =  dec_i0_pc4_d;
-   assign dec_i0_predict_p_d.hist[1:0]   =  dec_i0_brp.hist[1:0];
-   assign dec_i0_predict_p_d.valid       =  i0_brp_valid & i0_legal_decode_d;
-   assign i0_notbr_error                 =  i0_brp_valid & ~(i0_dp_raw.condbr | i0_pcall_raw | i0_pja_raw | i0_pret_raw);
-
-   // no toffset error for a pret
-   assign i0_br_toffset_error                               =  i0_brp_valid & dec_i0_brp.hist[1] & (dec_i0_brp.toffset[11:0] != i0_br_offset[11:0]) & ~i0_pret_raw;
-   assign i0_ret_error                                      =  i0_brp_valid & (dec_i0_brp.ret ^ i0_pret_raw);
-   assign i0_br_error                                       =  dec_i0_brp.br_error | i0_notbr_error | i0_br_toffset_error | i0_ret_error;
-   assign dec_i0_predict_p_d.br_error                       =  i0_br_error & i0_legal_decode_d & ~leak1_mode;
-   assign dec_i0_predict_p_d.br_start_error                 =  dec_i0_brp.br_start_error & i0_legal_decode_d & ~leak1_mode;
-   assign i0_predict_index_d[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] =  dec_i0_bp_index;
-
-   assign i0_predict_btag_d[pt.BTB_BTAG_SIZE-1:0]           =  dec_i0_bp_btag[pt.BTB_BTAG_SIZE-1:0];
-   assign i0_br_error_all                                   = (i0_br_error | dec_i0_brp.br_start_error) & ~leak1_mode;
-   assign dec_i0_predict_p_d.toffset[11:0]                  =  i0_br_offset[11:0];
-   assign i0_predict_fghr_d[pt.BHT_GHR_SIZE-1:0]            =  dec_i0_bp_fghr[pt.BHT_GHR_SIZE-1:0];
-   assign dec_i0_predict_p_d.way                            =  dec_i0_brp.way;
-
-
-   if(pt.BTB_FULLYA) begin
-      logic btb_error_found, btb_error_found_f;
-      logic [$clog2(pt.BTB_SIZE)-1:0] fa_error_index_ns;
-
-      assign btb_error_found = (i0_br_error_all | btb_error_found_f) & ~dec_tlu_flush_lower_r;
-      assign fa_error_index_ns = (i0_br_error_all & ~btb_error_found_f) ? dec_i0_bp_fa_index : dec_fa_error_index;
-
-      rvdff #($clog2(pt.BTB_SIZE)+1) btberrorfa_f   (.*, .clk(active_clk),
-                                                         .din({btb_error_found,    fa_error_index_ns}),
-                                                         .dout({btb_error_found_f, dec_fa_error_index}));
-
-
-   end
-   else
-     assign dec_fa_error_index = 'b0;
-
-
-   //   end
-end // if (pt.BTB_ENABLE==1)
-else begin
-
-   always_comb begin
-      dec_i0_predict_p_d = '0;
-      dec_i0_predict_p_d.pcall       =  i0_pcall;  // don't mark as pcall if branch error
-      dec_i0_predict_p_d.pja         =  i0_pja;
-      dec_i0_predict_p_d.pret        =  i0_pret;
-      dec_i0_predict_p_d.pc4         =  dec_i0_pc4_d;
-   end
-
-   assign i0_br_error_all = '0;
-   assign i0_predict_index_d = '0;
-   assign i0_predict_btag_d = '0;
-   assign i0_predict_fghr_d = '0;
-   assign i0_brp_valid = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   // on br error turn anything into a nop
-   // on i0 instruction fetch access fault turn anything into a nop
-   // nop =>   alu rs1 imm12 rd lor
-
-   assign i0_icaf_d = dec_i0_icaf_d | dec_i0_dbecc_d;
-
-   assign i0_instr_error = i0_icaf_d;
-
-   always_comb begin
-      i0_dp = i0_dp_raw;
-      if (i0_br_error_all | i0_instr_error) begin
-         i0_dp          =   '0;
-         i0_dp.alu      = 1'b1;
-         i0_dp.rs1      = 1'b1;
-         i0_dp.rs2      = 1'b1;
-         i0_dp.lor      = 1'b1;
-         i0_dp.legal    = 1'b1;
-         i0_dp.postsync = 1'b1;
-      end
-   end
-
-   assign i0[31:0] = dec_i0_instr_d[31:0];
-
-   assign dec_i0_select_pc_d = i0_dp.pc;
-
-   // branches that can be predicted
-
-   assign i0_predict_br =  i0_dp.condbr | i0_pcall | i0_pja | i0_pret;
-
-   assign i0_predict_nt = ~(dec_i0_brp.hist[1] & i0_brp_valid) & i0_predict_br;
-   assign i0_predict_t  =  (dec_i0_brp.hist[1] & i0_brp_valid) & i0_predict_br;
-
-   assign i0_ap.add     =  i0_dp.add;
-   assign i0_ap.sub     =  i0_dp.sub;
-   assign i0_ap.land    =  i0_dp.land;
-   assign i0_ap.lor     =  i0_dp.lor;
-   assign i0_ap.lxor    =  i0_dp.lxor;
-   assign i0_ap.sll     =  i0_dp.sll;
-   assign i0_ap.srl     =  i0_dp.srl;
-   assign i0_ap.sra     =  i0_dp.sra;
-   assign i0_ap.slt     =  i0_dp.slt;
-   assign i0_ap.unsign  =  i0_dp.unsign;
-   assign i0_ap.beq     =  i0_dp.beq;
-   assign i0_ap.bne     =  i0_dp.bne;
-   assign i0_ap.blt     =  i0_dp.blt;
-   assign i0_ap.bge     =  i0_dp.bge;
-
-   assign i0_ap.clz     =  i0_dp.clz;
-   assign i0_ap.ctz     =  i0_dp.ctz;
-   assign i0_ap.pcnt    =  i0_dp.pcnt;
-   assign i0_ap.sext_b  =  i0_dp.sext_b;
-   assign i0_ap.sext_h  =  i0_dp.sext_h;
-   assign i0_ap.sh1add  =  i0_dp.sh1add;
-   assign i0_ap.sh2add  =  i0_dp.sh2add;
-   assign i0_ap.sh3add  =  i0_dp.sh3add;
-   assign i0_ap.zba     =  i0_dp.zba;
-   assign i0_ap.slo     =  i0_dp.slo;
-   assign i0_ap.sro     =  i0_dp.sro;
-   assign i0_ap.min     =  i0_dp.min;
-   assign i0_ap.max     =  i0_dp.max;
-   assign i0_ap.pack    =  i0_dp.pack;
-   assign i0_ap.packu   =  i0_dp.packu;
-   assign i0_ap.packh   =  i0_dp.packh;
-   assign i0_ap.rol     =  i0_dp.rol;
-   assign i0_ap.ror     =  i0_dp.ror;
-   assign i0_ap.grev    =  i0_dp.grev;
-   assign i0_ap.gorc    =  i0_dp.gorc;
-   assign i0_ap.zbb     =  i0_dp.zbb;
-   assign i0_ap.sbset   =  i0_dp.sbset;
-   assign i0_ap.sbclr   =  i0_dp.sbclr;
-   assign i0_ap.sbinv   =  i0_dp.sbinv;
-   assign i0_ap.sbext   =  i0_dp.sbext;
-
-   assign i0_ap.csr_write =  i0_csr_write_only_d;
-   assign i0_ap.csr_imm   =  i0_dp.csr_imm;
-   assign i0_ap.jal       =  i0_jal;
-
-   assign i0_ap_pc2 = ~dec_i0_pc4_d;
-   assign i0_ap_pc4 =  dec_i0_pc4_d;
-
-   assign i0_ap.predict_nt = i0_predict_nt;
-   assign i0_ap.predict_t  = i0_predict_t;
-
-
-// non block load cam logic
-
-   always_comb begin
-      found = 0;
-      cam_wen[NBLOAD_SIZE_MSB:0] = '0;
-      for (int i=0; i<NBLOAD_SIZE; i++) begin
-         if (~found) begin
-            if (~cam[i].valid) begin
-               cam_wen[i] = cam_write;
-               found = 1'b1;
-            end
-            else begin
-               cam_wen[i] = 0;
-            end
-         end
-         else
-            cam_wen[i] = 0;
-      end
-   end
-
-
-   assign cam_write          = lsu_nonblock_load_valid_m;
-   assign cam_write_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_tag_m[NBLOAD_TAG_MSB:0];
-
-   assign cam_inv_reset          = lsu_nonblock_load_inv_r;
-   assign cam_inv_reset_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_inv_tag_r[NBLOAD_TAG_MSB:0];
-
-   assign cam_data_reset          = lsu_nonblock_load_data_valid | lsu_nonblock_load_data_error;
-   assign cam_data_reset_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_data_tag[NBLOAD_TAG_MSB:0];
-
-   assign nonblock_load_rd[4:0] = (x_d.i0load) ? x_d.i0rd[4:0] : 5'b0;  // rd data
-
-
-   // checks
-
-`ifdef RV_ASSERT_ON
-   assert_dec_data_valid_data_error_onehot:    assert #0 ($onehot0({lsu_nonblock_load_data_valid,lsu_nonblock_load_data_error}));
-   assert_dec_cam_inv_reset_onehot:            assert #0 ($onehot0(cam_inv_reset_val[NBLOAD_SIZE_MSB:0]));
-   assert_dec_cam_data_reset_onehot:           assert #0 ($onehot0(cam_data_reset_val[NBLOAD_SIZE_MSB:0]));
-`endif
-
-
-
-    // case of multiple loads to same dest ie. x1 ... you have to invalidate the older one
-
-   for (genvar i=0; i<NBLOAD_SIZE; i++) begin : cam_array
-
-      assign cam_inv_reset_val[i] = cam_inv_reset   & (cam_inv_reset_tag[NBLOAD_TAG_MSB:0]  == cam[i].tag[NBLOAD_TAG_MSB:0]) & cam[i].valid;
-
-      assign cam_data_reset_val[i] = cam_data_reset & (cam_data_reset_tag[NBLOAD_TAG_MSB:0] == cam_raw[i].tag[NBLOAD_TAG_MSB:0]) & cam_raw[i].valid;
-
-      always_comb begin
-
-         cam[i] = cam_raw[i];
-
-         if (cam_data_reset_val[i])
-           cam[i].valid = 1'b0;
-
-         cam_in[i] = '0;
-
-         if (cam_wen[i]) begin
-            cam_in[i].valid    = 1'b1;
-            cam_in[i].wb       = 1'b0;
-            cam_in[i].tag[NBLOAD_TAG_MSB:0] = cam_write_tag[NBLOAD_TAG_MSB:0];
-            cam_in[i].rd[4:0]  = nonblock_load_rd[4:0];
-         end
-         else if ( (cam_inv_reset_val[i]) |
-                   (i0_wen_r & (r_d_in.i0rd[4:0] == cam[i].rd[4:0]) & cam[i].wb) )
-           cam_in[i].valid = 1'b0;
-         else
-           cam_in[i] = cam[i];
-
-         if (nonblock_load_valid_m_delay & (lsu_nonblock_load_inv_tag_r[NBLOAD_TAG_MSB:0]==cam[i].tag[NBLOAD_TAG_MSB:0]) & cam[i].valid)
-           cam_in[i].wb = 1'b1;
-
-         // force debug halt forces cam valids to 0; highest priority
-         if (dec_tlu_force_halt)
-           cam_in[i].valid = 1'b0;
-      end
-
-
-   rvdffie #( $bits(eb1_load_cam_pkt_t) ) cam_ff (.*, .din(cam_in[i]), .dout(cam_raw[i]));
-
-
-   assign nonblock_load_write[i] = (load_data_tag[NBLOAD_TAG_MSB:0] == cam_raw[i].tag[NBLOAD_TAG_MSB:0]) & cam_raw[i].valid;
-
-
-end : cam_array
-
-
-
-   assign load_data_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_data_tag[NBLOAD_TAG_MSB:0];
-
-`ifdef RV_ASSERT_ON
-   assert_dec_cam_nonblock_load_write_onehot:   assert #0 ($onehot0(nonblock_load_write[NBLOAD_SIZE_MSB:0]));
-`endif
-
-
-   assign nonblock_load_cancel = ((r_d_in.i0rd[4:0] == dec_nonblock_load_waddr[4:0]) & i0_wen_r);     // cancel if any younger inst (including another nonblock) committing this cycle
-
-
-   assign dec_nonblock_load_wen = lsu_nonblock_load_data_valid & |nonblock_load_write[NBLOAD_SIZE_MSB:0] & ~nonblock_load_cancel;
-
-   always_comb begin
-
-      dec_nonblock_load_waddr[4:0] = '0;
-      i0_nonblock_load_stall = i0_nonblock_boundary_stall;
-
-      for (int i=0; i<NBLOAD_SIZE; i++) begin
-         dec_nonblock_load_waddr[4:0] |= ({5{nonblock_load_write[i]}} & cam[i].rd[4:0]);
-         i0_nonblock_load_stall |= dec_i0_rs1_en_d & cam[i].valid & (cam[i].rd[4:0] == i0r.rs1[4:0]);
-         i0_nonblock_load_stall |= dec_i0_rs2_en_d & cam[i].valid & (cam[i].rd[4:0] == i0r.rs2[4:0]);
-      end
-
-   end
-
-   assign i0_nonblock_boundary_stall = ((nonblock_load_rd[4:0]==i0r.rs1[4:0]) & lsu_nonblock_load_valid_m & dec_i0_rs1_en_d) |
-                                       ((nonblock_load_rd[4:0]==i0r.rs2[4:0]) & lsu_nonblock_load_valid_m & dec_i0_rs2_en_d);
-
-
-
-// don't writeback a nonblock load
-
-   rvdffs #(1) wbnbloaddelayff (.*, .clk(active_clk), .en(i0_r_ctl_en ), .din(lsu_nonblock_load_valid_m),        .dout(nonblock_load_valid_m_delay) );
-
-   assign i0_load_kill_wen_r = nonblock_load_valid_m_delay &  r_d.i0load;
-
-
-
-// end non block load cam logic
-
-// pmu start
-
-
-
-
-   assign csr_read = csr_ren_qual_d;
-   assign csr_write = dec_csr_wen_unq_d;
-
-   assign i0_br_unpred = i0_dp.jal & ~i0_predict_br;
-
-   // the classes must be mutually exclusive with one another
-
-   always_comb begin
-      i0_itype = NULL;
-
-      if (i0_legal_decode_d) begin
-         if (i0_dp.mul)                  i0_itype = MUL;
-         if (i0_dp.load)                 i0_itype = LOAD;
-         if (i0_dp.store)                i0_itype = STORE;
-         if (i0_dp.pm_alu)               i0_itype = ALU;
-         if (i0_dp.zbb | i0_dp.zbs |
-             i0_dp.zbe | i0_dp.zbc |
-             i0_dp.zbp | i0_dp.zbr |
-             i0_dp.zbf | i0_dp.zba)
-                                         i0_itype = BITMANIPU;
-         if ( csr_read & ~csr_write)     i0_itype = CSRREAD;
-         if (~csr_read &  csr_write)     i0_itype = CSRWRITE;
-         if ( csr_read &  csr_write)     i0_itype = CSRRW;
-         if (i0_dp.ebreak)               i0_itype = EBREAK;
-         if (i0_dp.ecall)                i0_itype = ECALL;
-         if (i0_dp.fence)                i0_itype = FENCE;
-         if (i0_dp.fence_i)              i0_itype = FENCEI;  // fencei will set this even with fence attribute
-         if (i0_dp.mret)                 i0_itype = MRET;
-         if (i0_dp.condbr)               i0_itype = CONDBR;
-         if (i0_dp.jal)                  i0_itype = JAL;
-      end
-   end
-
-
-
-
-
-// end pmu
-
-
-   eb1_dec_dec_ctl i0_dec (.inst(i0[31:0]),.out(i0_dp_raw));
-   
-
-
-   rvdff #(1) lsu_idle_ff (.*, .clk(active_clk), .din(lsu_idle_any), .dout(lsu_idle));
-
-
-
-   assign leak1_i1_stall_in = (dec_tlu_flush_leak_one_r | (leak1_i1_stall & ~dec_tlu_flush_lower_r));
-
-
-   assign leak1_mode = leak1_i1_stall;
-
-   assign leak1_i0_stall_in = ((dec_i0_decode_d & leak1_i1_stall) | (leak1_i0_stall & ~dec_tlu_flush_lower_r));
-
-
-
-
-   // 12b jal's can be predicted - these are calls
-
-   assign i0_pcall_imm[20:1] = {i0[31],i0[19:12],i0[20],i0[30:21]};
-
-   assign i0_pcall_12b_offset = (i0_pcall_imm[12]) ? (i0_pcall_imm[20:13] == 8'hff) : (i0_pcall_imm[20:13] == 8'h0);
-
-   assign i0_pcall_case  = i0_pcall_12b_offset & i0_dp_raw.imm20 &  (i0r.rd[4:0] == 5'd1 | i0r.rd[4:0] == 5'd5);
-   assign i0_pja_case    = i0_pcall_12b_offset & i0_dp_raw.imm20 & ~(i0r.rd[4:0] == 5'd1 | i0r.rd[4:0] == 5'd5);
-
-   assign i0_pcall_raw   = i0_dp_raw.jal &   i0_pcall_case;   // this includes ja
-   assign i0_pcall       = i0_dp.jal     &   i0_pcall_case;
-
-   assign i0_pja_raw     = i0_dp_raw.jal &   i0_pja_case;
-   assign i0_pja         = i0_dp.jal     &   i0_pja_case;
-
-
-   assign i0_br_offset[11:0] = (i0_pcall_raw | i0_pja_raw) ? i0_pcall_imm[12:1] : {i0[31],i0[7],i0[30:25],i0[11:8]};
-
-   assign i0_pret_case = (i0_dp_raw.jal & i0_dp_raw.imm12 & (i0r.rd[4:0] == 5'b0) & (i0r.rs1[4:0] == 5'd1 | i0r.rs1[4:0] == 5'd5));  // jalr with rd==0, rs1==1 or rs1==5 is a ret
-
-   assign i0_pret_raw = i0_dp_raw.jal &   i0_pret_case;
-   assign i0_pret     = i0_dp.jal     &   i0_pret_case;
-
-   assign i0_jal      = i0_dp.jal     &  ~i0_pcall_case & ~i0_pja_case & ~i0_pret_case;
-
-   // lsu stuff
-   // load/store mutually exclusive
-   assign dec_lsu_offset_d[11:0] = ({12{ ~dec_extint_stall & i0_dp.lsu & i0_dp.load}} &               i0[31:20]) |
-                                   ({12{ ~dec_extint_stall & i0_dp.lsu & i0_dp.store}} &             {i0[31:25],i0[11:7]});
-
-
-
-   assign div_p.valid    =  div_decode_d;
-
-   assign div_p.unsign   =  i0_dp.unsign;
-   assign div_p.rem      =  i0_dp.rem;
-
-
-   assign mul_p.valid    =  mul_decode_d;
-
-   assign mul_p.rs1_sign =  i0_dp.rs1_sign;
-   assign mul_p.rs2_sign =  i0_dp.rs2_sign;
-   assign mul_p.low      =  i0_dp.low;
-   assign mul_p.bext     =  i0_dp.bext;
-   assign mul_p.bdep     =  i0_dp.bdep;
-   assign mul_p.clmul    =  i0_dp.clmul;
-   assign mul_p.clmulh   =  i0_dp.clmulh;
-   assign mul_p.clmulr   =  i0_dp.clmulr;
-   assign mul_p.grev     =  i0_dp.grev;
-   assign mul_p.gorc     =  i0_dp.gorc;
-   assign mul_p.shfl     =  i0_dp.shfl;
-   assign mul_p.unshfl   =  i0_dp.unshfl;
-   assign mul_p.crc32_b  =  i0_dp.crc32_b;
-   assign mul_p.crc32_h  =  i0_dp.crc32_h;
-   assign mul_p.crc32_w  =  i0_dp.crc32_w;
-   assign mul_p.crc32c_b =  i0_dp.crc32c_b;
-   assign mul_p.crc32c_h =  i0_dp.crc32c_h;
-   assign mul_p.crc32c_w =  i0_dp.crc32c_w;
-   assign mul_p.bfp      =  i0_dp.bfp;
-
-   always_comb  begin
-      lsu_p = '0;
-
-      if (dec_extint_stall) begin
-         lsu_p.load = 1'b1;
-         lsu_p.word = 1'b1;
-         lsu_p.fast_int = 1'b1;
-         lsu_p.valid = 1'b1;
-      end
-      else begin
-         lsu_p.valid = lsu_decode_d;
-
-         lsu_p.load                         =  i0_dp.load ;
-         lsu_p.store                        =  i0_dp.store;
-         lsu_p.by                           =  i0_dp.by   ;
-         lsu_p.half                         =  i0_dp.half ;
-         lsu_p.word                         =  i0_dp.word ;
-         lsu_p.stack                        = (i0r.rs1[4:0]==5'd2);   // stack reference
-
-         lsu_p.load_ldst_bypass_d          =  load_ldst_bypass_d ;
-         lsu_p.store_data_bypass_d         =  store_data_bypass_d;
-         lsu_p.store_data_bypass_m         =  store_data_bypass_m;
-
-         lsu_p.unsign  =  i0_dp.unsign;
-      end
-   end
-
-
-   assign  dec_lsu_valid_raw_d    = (i0_valid_d & (i0_dp_raw.load | i0_dp_raw.store) & ~dma_dccm_stall_any & ~i0_block_raw_d) | dec_extint_stall;
-
-
-
-   assign i0r.rs1[4:0] = i0[19:15];
-   assign i0r.rs2[4:0] = i0[24:20];
-   assign i0r.rd[4:0]  = i0[11:7];
-
-
-   assign dec_i0_rs1_en_d   =  (i0_dp.rs1 & (i0r.rs1[4:0] != 5'd0));  // if rs1_en=0 then read will be all 0's
-   assign dec_i0_rs2_en_d   =  (i0_dp.rs2 & (i0r.rs2[4:0] != 5'd0));
-   assign i0_rd_en_d        =  (i0_dp.rd  & (i0r.rd[4:0]  != 5'd0));
-
-   assign dec_i0_rs1_d[4:0] =  i0r.rs1[4:0];
-   assign dec_i0_rs2_d[4:0] =  i0r.rs2[4:0];
-
-
-   assign i0_jalimm20       =  i0_dp.jal & i0_dp.imm20;   // jal
-   assign i0_uiimm20        = ~i0_dp.jal & i0_dp.imm20;
-
-
-   // csr logic
-
-   assign dec_csr_ren_d  = i0_dp.csr_read & i0_valid_d;
-   assign csr_ren_qual_d = i0_dp.csr_read & i0_legal_decode_d;
-
-   assign csr_clr_d =   i0_dp.csr_clr   & i0_legal_decode_d;
-   assign csr_set_d   = i0_dp.csr_set   & i0_legal_decode_d;
-   assign csr_write_d = i0_csr_write    & i0_legal_decode_d;
-
-   assign i0_csr_write_only_d = i0_csr_write & ~i0_dp.csr_read;
-
-   assign dec_csr_wen_unq_d = (i0_dp.csr_clr | i0_dp.csr_set | i0_csr_write) & i0_valid_d;   // for csr legal, can't write read-only csr
-
-   assign dec_csr_any_unq_d = any_csr_d & i0_valid_d;
-
-
-   assign dec_csr_rdaddr_d[11:0] =  {12{dec_csr_any_unq_d}} & i0[31:20];
-   assign dec_csr_wraddr_r[11:0] =  {12{r_d.csrwen & r_d.i0valid}} & r_d.csrwaddr[11:0];
-
-
-   // make sure csr doesn't write same cycle as dec_tlu_flush_lower_wb
-   // also use valid so it's flushable
-   assign dec_csr_wen_r = r_d.csrwen & r_d.i0valid & ~dec_tlu_i0_kill_writeb_r;
-
-   // If we are writing MIE or MSTATUS, hold off the external interrupt for a cycle on the write.
-   assign dec_csr_stall_int_ff = ((r_d.csrwaddr[11:0] == 12'h300) | (r_d.csrwaddr[11:0] == 12'h304)) & r_d.csrwen & r_d.i0valid & ~dec_tlu_i0_kill_writeb_wb;
-
-
-   rvdff #(5) csrmiscff (.*,
-                        .clk (active_clk),
-                        .din ({csr_ren_qual_d, csr_clr_d, csr_set_d, csr_write_d, i0_dp.csr_imm}),
-                        .dout({csr_read_x,     csr_clr_x, csr_set_x, csr_write_x, csr_imm_x})
-                       );
-
-
-
-
-   // perform the update operation if any
-
-   rvdffe #(37) csr_rddata_x_ff (.*, .en(i0_x_data_en & any_csr_d), .din( {i0[19:15],dec_csr_rddata_d[31:0]}), .dout({csrimm_x[4:0],csr_rddata_x[31:0]}));
-
-
-   assign csr_mask_x[31:0]       = ({32{ csr_imm_x}} & {27'b0,csrimm_x[4:0]}) |
-                                   ({32{~csr_imm_x}} &  exu_csr_rs1_x[31:0] );
-
-
-   assign write_csr_data_x[31:0] = ({32{csr_clr_x}}   & (csr_rddata_x[31:0] & ~csr_mask_x[31:0])) |
-                                   ({32{csr_set_x}}   & (csr_rddata_x[31:0] |  csr_mask_x[31:0])) |
-                                   ({32{csr_write_x}} & (                      csr_mask_x[31:0]));
-
-
-// pause instruction
-
-
-
-
-   assign clear_pause = (dec_tlu_flush_lower_r & ~dec_tlu_flush_pause_r) |
-                        (pause_state & (write_csr_data[31:1] == 31'b0));        // if 0 or 1 then exit pause state - 1 cycle pause
-
-   assign pause_state_in = (dec_tlu_wr_pause_r | pause_state) & ~clear_pause;
-
-
-
-   assign dec_pause_state = pause_state;
-
-
-
-      assign dec_pause_state_cg = pause_state & ~tlu_wr_pause_r1 & ~tlu_wr_pause_r2;
-
-// end pause
-
-
-   assign csr_data_wen = ((csr_clr_x | csr_set_x | csr_write_x) & csr_read_x) | dec_tlu_wr_pause_r | pause_state;
-
-   assign write_csr_data_in[31:0] = (pause_state)         ? (write_csr_data[31:0] - 32'b1) :
-                                    (dec_tlu_wr_pause_r) ? dec_csr_wrdata_r[31:0] : write_csr_data_x[31:0];
-
-   // will hold until write-back at which time the CSR will be updated while GPR is possibly written with prior CSR
-   rvdffe #(32) write_csr_ff (.*, .clk(free_l2clk), .en(csr_data_wen), .din(write_csr_data_in[31:0]), .dout(write_csr_data[31:0]));
-
-   assign pause_stall = pause_state;
-
-   // for csr write only data is produced by the alu
-   assign dec_csr_wrdata_r[31:0]  = (r_d.csrwonly & r_d.i0valid) ? i0_result_corr_r[31:0] : write_csr_data[31:0];
-
-
-
-   assign dec_i0_immed_d[31:0] =  i0_immed_d[31:0];
-
-   assign     i0_immed_d[31:0] = ({32{i0_dp.imm12}}                         & { {20{i0[31]}},i0[31:20] }) |  // jalr
-                                 ({32{i0_dp.shimm5}}                        & {  27'b0,      i0[24:20] }) |
-                                 ({32{i0_jalimm20}}                         & { {12{i0[31]}},i0[19:12],i0[20],i0[30:21],1'b0}) |
-                                 ({32{i0_uiimm20}}                          & { i0[31:12],12'b0 }) |
-                                 ({32{i0_csr_write_only_d & i0_dp.csr_imm}} & {  27'b0,      i0[19:15]});  // for csr's that only write csr, dont read csr
-
-
-   // all conditional branches are currently predict_nt
-   // change this to generate the sequential address for all other cases for NPC requirements at commit
-   assign dec_i0_br_immed_d[12:1] = (i0_ap.predict_nt & ~i0_dp.jal) ? i0_br_offset[11:0] : {10'b0,i0_ap_pc4,i0_ap_pc2};
-
-
-   assign last_br_immed_d[12:1] = ((i0_ap.predict_nt) ? {10'b0,i0_ap_pc4,i0_ap_pc2} : i0_br_offset[11:0] );
-
-   assign i0_valid_d = dec_ib0_valid_d;
-
-   // load_stall includes bus_barrier
-
-   assign i0_load_stall_d = (i0_dp.load ) & (lsu_load_stall_any | dma_dccm_stall_any);
-
-   assign i0_store_stall_d =  i0_dp.store & (lsu_store_stall_any | dma_dccm_stall_any);
-
-
-
-// some CSR reads need to be presync'd
-   assign i0_presync = i0_dp.presync | dec_tlu_presync_d | debug_fence_i | debug_fence_raw | dec_tlu_pipelining_disable;  // both fence's presync
-
-// some CSR writes need to be postsync'd
-   assign i0_postsync = i0_dp.postsync | dec_tlu_postsync_d | debug_fence_i | // only fence_i postsync
-                        (i0_csr_write_only_d & (i0[31:20] == 12'h7c2));   // wr_pause must postsync
-
-
-// debug fence csr
-   assign debug_fence_i     = dec_debug_fence_d & dbg_cmd_wrdata[0];
-   assign debug_fence_raw   = dec_debug_fence_d & dbg_cmd_wrdata[1];
-
-   assign debug_fence       = debug_fence_raw | debug_fence_i;    // fence_i causes a fence
-
-   assign i0_csr_write = i0_dp.csr_write & ~dec_debug_fence_d;
-// end debug
-
-
-   // lets make ebreak, ecall, mret postsync, so break sync into pre and post
-
-   assign presync_stall      = (i0_presync & prior_inflight_eff);
-
-   assign prior_inflight_eff = (i0_dp.div)  ?  prior_inflight_x  :  prior_inflight;
-
-   assign i0_div_prior_div_stall = i0_dp.div & div_active;
-
-   // Raw block has everything excepts the stalls coming from the lsu
-   assign i0_block_raw_d = (i0_dp.csr_read & prior_csr_write) |
-                            dec_extint_stall |
-                            pause_stall |
-                            leak1_i0_stall |
-                            dec_tlu_debug_stall |
-                            postsync_stall |
-                            presync_stall  |
-                            ((i0_dp.fence | debug_fence) & ~lsu_idle) |
-                            i0_nonblock_load_stall |
-                            i0_load_block_d |
-                            i0_nonblock_div_stall |
-                            i0_div_prior_div_stall;
-
-   assign i0_block_d    = i0_block_raw_d | i0_store_stall_d | i0_load_stall_d;
-   assign i0_exublock_d = i0_block_raw_d;
-
-
-   // block reads if there is a prior csr write in the pipeline
-   assign prior_csr_write = x_d.csrwonly |
-                            r_d.csrwonly |
-                            wbd.csrwonly;
-
-
-
-   if       (pt.BITMANIP_ZBB == 1)
-     assign bitmanip_zbb_legal      =  1'b1;
-   else
-     assign bitmanip_zbb_legal      = ~(i0_dp.zbb & ~i0_dp.zbp);
-
-   if       (pt.BITMANIP_ZBS == 1)
-     assign bitmanip_zbs_legal      =  1'b1;
-   else
-     assign bitmanip_zbs_legal      = ~i0_dp.zbs;
-
-   if       (pt.BITMANIP_ZBE == 1)
-     assign bitmanip_zbe_legal      =  1'b1;
-   else
-     assign bitmanip_zbe_legal      = ~i0_dp.zbe;
-
-   if       (pt.BITMANIP_ZBC == 1)
-     assign bitmanip_zbc_legal      =  1'b1;
-   else
-     assign bitmanip_zbc_legal      = ~i0_dp.zbc;
-
-   if       (pt.BITMANIP_ZBP == 1)
-     assign bitmanip_zbp_legal      =  1'b1;
-   else
-     assign bitmanip_zbp_legal      = ~(i0_dp.zbp & ~i0_dp.zbb);
-
-   if       (pt.BITMANIP_ZBR == 1)
-     assign bitmanip_zbr_legal      =  1'b1;
-   else
-     assign bitmanip_zbr_legal      = ~i0_dp.zbr;
-
-   if       (pt.BITMANIP_ZBF == 1)
-     assign bitmanip_zbf_legal      =  1'b1;
-   else
-     assign bitmanip_zbf_legal      = ~i0_dp.zbf;
-
-   if (pt.BITMANIP_ZBA == 1)
-     assign bitmanip_zba_legal      =  1'b1;
-   else
-     assign bitmanip_zba_legal      = ~i0_dp.zba;
-
-   if     ( (pt.BITMANIP_ZBB == 1) | (pt.BITMANIP_ZBP == 1) )
-     assign bitmanip_zbb_zbp_legal  =  1'b1;
-   else
-     assign bitmanip_zbb_zbp_legal  = ~(i0_dp.zbb & i0_dp.zbp);
-
-
-   assign any_csr_d      =  i0_dp.csr_read | i0_csr_write;
-   assign bitmanip_legal =  bitmanip_zbb_legal & bitmanip_zbs_legal & bitmanip_zbe_legal & bitmanip_zbc_legal & bitmanip_zbp_legal & bitmanip_zbr_legal & bitmanip_zbf_legal & bitmanip_zba_legal & bitmanip_zbb_zbp_legal;
-
-   assign i0_legal       =  (i0_dp.legal) & (~any_csr_d | dec_csr_legal_d) & bitmanip_legal;
-
-
-
-   // illegal inst handling
-
-
-   assign shift_illegal      = dec_i0_decode_d & ~i0_legal;
-
-   assign illegal_inst_en    = shift_illegal & ~illegal_lockout;
-
-   rvdffe #(32) illegal_any_ff (.*, .en(illegal_inst_en), .din(i0_inst_d[31:0]), .dout(dec_illegal_inst[31:0]));
-
-   assign illegal_lockout_in = (shift_illegal | illegal_lockout) & ~flush_final_r;
-
-
-
-   // allow illegals to flow down the pipe
-   assign dec_i0_decode_d = i0_valid_d & ~i0_block_d    & ~dec_tlu_flush_lower_r & ~flush_final_r;
-   assign i0_exudecode_d  = i0_valid_d & ~i0_exublock_d & ~dec_tlu_flush_lower_r & ~flush_final_r;
-
-   // define i0 legal decode
-   assign i0_legal_decode_d    = dec_i0_decode_d & i0_legal;
-   assign i0_exulegal_decode_d = i0_exudecode_d  & i0_legal;
-
-
-   // performance monitor signals
-   assign dec_pmu_instr_decoded = dec_i0_decode_d;
-
-   assign dec_pmu_decode_stall = i0_valid_d & ~dec_i0_decode_d;
-
-   assign dec_pmu_postsync_stall = postsync_stall & i0_valid_d;
-   assign dec_pmu_presync_stall  = presync_stall & i0_valid_d;
-
-
-
-   // illegals will postsync
-   assign ps_stall_in =  ( dec_i0_decode_d & (i0_postsync | ~i0_legal) ) |
-                         ( ps_stall & prior_inflight_x                 );
-
-
-
-   assign postsync_stall =  ps_stall;
-
-
-   assign prior_inflight_x    =  x_d.i0valid;
-   assign prior_inflight_wb   =  r_d.i0valid;
-
-   assign prior_inflight = prior_inflight_x | prior_inflight_wb;
-
-   assign dec_i0_alu_decode_d = i0_exulegal_decode_d & i0_dp.alu;
-   assign dec_i0_branch_d     = i0_dp.condbr | i0_dp.jal | i0_br_error_all;
-
-   assign lsu_decode_d = i0_legal_decode_d    & i0_dp.lsu;
-   assign mul_decode_d = i0_exulegal_decode_d & i0_dp.mul;
-   assign div_decode_d = i0_exulegal_decode_d & i0_dp.div;
-
-   assign dec_qual_lsu_d = i0_dp.lsu;
-
-
-
-
-
-// scheduling logic for alu
-
-   assign i0_rs1_depend_i0_x  = dec_i0_rs1_en_d & x_d.i0v & (x_d.i0rd[4:0] == i0r.rs1[4:0]);
-   assign i0_rs1_depend_i0_r  = dec_i0_rs1_en_d & r_d.i0v & (r_d.i0rd[4:0] == i0r.rs1[4:0]);
-
-   assign i0_rs2_depend_i0_x  = dec_i0_rs2_en_d & x_d.i0v & (x_d.i0rd[4:0] == i0r.rs2[4:0]);
-   assign i0_rs2_depend_i0_r  = dec_i0_rs2_en_d & r_d.i0v & (r_d.i0rd[4:0] == i0r.rs2[4:0]);
-
-
-// order the producers as follows:  , i0_x, i0_r, i0_wb
-
-   assign {i0_rs1_class_d, i0_rs1_depth_d[1:0]} = (i0_rs1_depend_i0_x ) ? { i0_x_c,  2'd1  } :
-                                                  (i0_rs1_depend_i0_r ) ? { i0_r_c,  2'd2  } : '0;
-
-   assign {i0_rs2_class_d, i0_rs2_depth_d[1:0]} = (i0_rs2_depend_i0_x ) ? { i0_x_c,  2'd1  } :
-                                                  (i0_rs2_depend_i0_r ) ? { i0_r_c,  2'd2  } : '0;
-
-
-// stores will bypass load data in the lsu pipe
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin : genblock
-      assign i0_load_block_d = (i0_rs1_class_d.load & i0_rs1_depth_d[0]) |
-                               (i0_rs2_class_d.load & i0_rs2_depth_d[0] & ~i0_dp.store);
-
-      assign load_ldst_bypass_d    =  (i0_dp.load | i0_dp.store) & i0_rs1_depth_d[1] & i0_rs1_class_d.load;
-
-      assign store_data_bypass_d =                  i0_dp.store  & i0_rs2_depth_d[1] & i0_rs2_class_d.load;
-
-      assign store_data_bypass_m =                  i0_dp.store  & i0_rs2_depth_d[0] & i0_rs2_class_d.load;
-   end
-   else begin : genblock
-
-      assign i0_load_block_d = 1'b0;
-
-      assign load_ldst_bypass_d    =  (i0_dp.load | i0_dp.store) & i0_rs1_depth_d[0] & i0_rs1_class_d.load;
-
-      assign store_data_bypass_d =                  i0_dp.store  & i0_rs2_depth_d[0] & i0_rs2_class_d.load;
-
-      assign store_data_bypass_m = 1'b0;
-   end
-
-
-
-
-
-
-   assign dec_tlu_i0_valid_r     =  r_d.i0valid & ~dec_tlu_flush_lower_wb;
-
-
-   assign d_t.legal              =  i0_legal_decode_d;
-   assign d_t.icaf               =  i0_icaf_d & i0_legal_decode_d;                // dbecc is icaf exception
-   assign d_t.icaf_second        =  dec_i0_icaf_second_d & i0_legal_decode_d;     // this includes icaf and dbecc
-   assign d_t.icaf_type[1:0]     =  dec_i0_icaf_type_d[1:0];
-
-   assign d_t.fence_i            = (i0_dp.fence_i | debug_fence_i) & i0_legal_decode_d;
-
-// put pmu info into the trap packet
-   assign d_t.pmu_i0_itype       =  i0_itype;
-   assign d_t.pmu_i0_br_unpred   =  i0_br_unpred;
-   assign d_t.pmu_divide         =  1'b0;
-   assign d_t.pmu_lsu_misaligned =  1'b0;
-
-   assign d_t.i0trigger[3:0]     =  dec_i0_trigger_match_d[3:0] & {4{dec_i0_decode_d}};
-
-
-
-   rvdfflie #( .WIDTH($bits(eb1_trap_pkt_t)),.LEFT(9) ) trap_xff (.*, .en(i0_x_ctl_en), .din(d_t),  .dout(x_t));
-
-   always_comb begin
-      x_t_in = x_t;
-      x_t_in.i0trigger[3:0] = x_t.i0trigger & ~{4{dec_tlu_flush_lower_wb}};
-   end
-
-
-   rvdfflie  #( .WIDTH($bits(eb1_trap_pkt_t)),.LEFT(9) ) trap_r_ff (.*, .en(i0_x_ctl_en), .din(x_t_in),  .dout(r_t));
-
-
-    always_comb begin
-
-      r_t_in                             =  r_t;
-
-      r_t_in.i0trigger[3:0]              = ({4{(r_d.i0load | r_d.i0store)}} & lsu_trigger_match_r[3:0]) | r_t.i0trigger[3:0];
-      r_t_in.pmu_lsu_misaligned          = lsu_pmu_misaligned_r;   // only valid if a load/store is valid in DC3 stage
-
-      if (dec_tlu_flush_lower_wb) r_t_in = '0 ;
-
-   end
-
-
-   always_comb begin
-
-      dec_tlu_packet_r                 =  r_t_in;
-      dec_tlu_packet_r.pmu_divide      =  r_d.i0div & r_d.i0valid;
-
-   end
-
-
-// end tlu stuff
-
-
-   assign i0_d_c.mul                =  i0_dp.mul  & i0_legal_decode_d;
-   assign i0_d_c.load               =  i0_dp.load & i0_legal_decode_d;
-   assign i0_d_c.alu                =  i0_dp.alu  & i0_legal_decode_d;
-
-   rvdffs #( $bits(eb1_class_pkt_t) ) i0_x_c_ff   (.*, .en(i0_x_ctl_en),  .clk(active_clk), .din(i0_d_c),  .dout(i0_x_c));
-   rvdffs #( $bits(eb1_class_pkt_t) ) i0_r_c_ff   (.*, .en(i0_r_ctl_en),  .clk(active_clk), .din(i0_x_c),  .dout(i0_r_c));
-
-
-   assign d_d.i0rd[4:0]             =  i0r.rd[4:0];
-   assign d_d.i0v                   =  i0_rd_en_d  & i0_legal_decode_d;
-   assign d_d.i0valid               =  dec_i0_decode_d;  // has flush_final_r
-
-   assign d_d.i0load                =  i0_dp.load  & i0_legal_decode_d;
-   assign d_d.i0store               =  i0_dp.store & i0_legal_decode_d;
-   assign d_d.i0div                 =  i0_dp.div   & i0_legal_decode_d;
-
-
-   assign d_d.csrwen                =  dec_csr_wen_unq_d   & i0_legal_decode_d;
-   assign d_d.csrwonly              =  i0_csr_write_only_d & dec_i0_decode_d;
-   assign d_d.csrwaddr[11:0]        =  (d_d.csrwen) ? i0[31:20] : '0;    // csr write address for rd==0 case
-
-
-   rvdff  #(3) i0cgff               (.*, .clk(active_clk),            .din(i0_pipe_en[3:1]), .dout(i0_pipe_en[2:0]));
-
-   assign i0_pipe_en[3]             =  dec_i0_decode_d;
-
-   assign i0_x_ctl_en               = (|i0_pipe_en[3:2] | clk_override);
-   assign i0_r_ctl_en               = (|i0_pipe_en[2:1] | clk_override);
-   assign i0_wb_ctl_en              = (|i0_pipe_en[1:0] | clk_override);
-   assign i0_x_data_en              = ( i0_pipe_en[3]   | clk_override);
-   assign i0_r_data_en              = ( i0_pipe_en[2]   | clk_override);
-   assign i0_wb_data_en             = ( i0_pipe_en[1]   | clk_override);
-
-   assign dec_data_en[1:0]          = {i0_x_data_en, i0_r_data_en};
-   assign dec_ctl_en[1:0]           = {i0_x_ctl_en,  i0_r_ctl_en};
-
-
-
-   rvdfflie #( .WIDTH($bits(eb1_dest_pkt_t)),.LEFT(15) ) e1ff (.*, .en(i0_x_ctl_en), .din(d_d),  .dout(x_d));
-
-   always_comb begin
-      x_d_in = x_d;
-
-      x_d_in.i0v         = x_d.i0v     & ~dec_tlu_flush_lower_wb & ~dec_tlu_flush_lower_r;
-      x_d_in.i0valid     = x_d.i0valid & ~dec_tlu_flush_lower_wb & ~dec_tlu_flush_lower_r;
-   end
-
-   rvdfflie #( .WIDTH($bits(eb1_dest_pkt_t)), .LEFT(15) ) r_d_ff (.*, .en(i0_r_ctl_en), .din(x_d_in), .dout(r_d));
-
-
-   always_comb begin
-
-        r_d_in = r_d;
-
-
-      // for the bench
-      r_d_in.i0rd[4:0]   =  r_d.i0rd[4:0];
-
-      r_d_in.i0v         = (r_d.i0v      & ~dec_tlu_flush_lower_wb);
-      r_d_in.i0valid     = (r_d.i0valid  & ~dec_tlu_flush_lower_wb);
-
-      r_d_in.i0load      =  r_d.i0load   & ~dec_tlu_flush_lower_wb;
-      r_d_in.i0store     =  r_d.i0store  & ~dec_tlu_flush_lower_wb;
-
-   end
-
-
-   rvdfflie #(.WIDTH($bits(eb1_dest_pkt_t)), .LEFT(15)) wbff (.*, .en(i0_wb_ctl_en), .din(r_d_in), .dout(wbd));
-
-   assign dec_i0_waddr_r[4:0]       =  r_d_in.i0rd[4:0];
-
-   assign     i0_wen_r              =  r_d_in.i0v & ~dec_tlu_i0_kill_writeb_r;
-   assign dec_i0_wen_r              =  i0_wen_r   & ~r_d_in.i0div & ~i0_load_kill_wen_r;  // don't write a nonblock load 1st time down the pipe
-   assign dec_i0_wdata_r[31:0]      =  i0_result_corr_r[31:0];
-
-
-   // divide stuff
-   assign div_e1_to_r         = (x_d.i0div & x_d.i0valid) |
-                                (r_d.i0div & r_d.i0valid);
-
-   assign div_active_in = i0_div_decode_d | (div_active & ~exu_div_wren & ~nonblock_div_cancel);
-
-
-   assign dec_div_active = div_active;
-
-   // nonblocking div scheme
-
-   assign i0_nonblock_div_stall  = (dec_i0_rs1_en_d & div_active & (div_waddr_wb[4:0] == i0r.rs1[4:0])) |
-                                   (dec_i0_rs2_en_d & div_active & (div_waddr_wb[4:0] == i0r.rs2[4:0]));
-
-
-   assign div_flush              = (x_d.i0div & x_d.i0valid & (x_d.i0rd[4:0]==5'b0)                           ) |
-                                   (x_d.i0div & x_d.i0valid & dec_tlu_flush_lower_r                           ) |
-                                   (r_d.i0div & r_d.i0valid & dec_tlu_flush_lower_r & dec_tlu_i0_kill_writeb_r);
-
-
-   // cancel if any younger inst committing this cycle to same dest as nonblock divide
-   assign nonblock_div_cancel    = (div_active &  div_flush) |
-                                   (div_active & ~div_e1_to_r & (r_d.i0rd[4:0] == div_waddr_wb[4:0]) & i0_wen_r);
-
-   assign dec_div_cancel         =  nonblock_div_cancel;
-
-
-
-   assign i0_div_decode_d            =  i0_legal_decode_d & i0_dp.div;
-
-// for load_to_use_plus1, the load result data is merged in R stage instead of D
-
-   if ( pt.LOAD_TO_USE_PLUS1 == 1 ) begin : genblock1
-      assign i0_result_x[31:0]          = exu_i0_result_x[31:0];
-      assign i0_result_r[31:0]          = (r_d.i0v & r_d.i0load) ? lsu_result_m[31:0] : i0_result_r_raw[31:0];
-   end
-   else begin : genblock1
-      assign i0_result_x[31:0]          = (x_d.i0v & x_d.i0load) ? lsu_result_m[31:0] : exu_i0_result_x[31:0];
-      assign i0_result_r[31:0]          = i0_result_r_raw[31:0];
-   end
-
-
-   rvdffe #(32) i0_result_r_ff       (.*, .en(i0_r_data_en & (x_d.i0v | x_d.csrwen | debug_valid_x)),  .din(i0_result_x[31:0]),       .dout(i0_result_r_raw[31:0]));
-
-   // correct lsu load data - don't use for bypass, do pass down the pipe
-   assign i0_result_corr_r[31:0]     = (r_d.i0v & r_d.i0load) ? lsu_result_corr_r[31:0] : i0_result_r_raw[31:0];
-
-
-   rvdffe #(12) e1brpcff             (.*, .en(i0_x_data_en), .din(last_br_immed_d[12:1] ), .dout(last_br_immed_x[12:1]));
-
-
-
-   assign i0_wb_en                   =  i0_wb_data_en;
-
-   assign i0_inst_wb_in[31:0]        =  i0_inst_r[31:0];
-   assign i0_inst_d[31:0]            = (dec_i0_pc4_d)    ?  i0[31:0]                                  :  {16'b0, ifu_i0_cinst[15:0]};
-
-
-   assign trace_enable = ~dec_tlu_trace_disable;
-
-
-   rvdffe #(.WIDTH(5),.OVERRIDE(1))  i0rdff  (.*, .en(i0_div_decode_d),        .din(i0r.rd[4:0]),             .dout(div_waddr_wb[4:0]));
-
-   rvdffe #(32) i0xinstff            (.*, .en(i0_x_data_en & trace_enable),    .din(i0_inst_d[31:0]),         .dout(i0_inst_x[31:0]));
-   rvdffe #(32) i0cinstff            (.*, .en(i0_r_data_en & trace_enable),    .din(i0_inst_x[31:0]),         .dout(i0_inst_r[31:0]));
-
-   rvdffe #(32) i0wbinstff           (.*, .en(i0_wb_en & trace_enable),        .din(i0_inst_wb_in[31:0]),     .dout(i0_inst_wb[31:0]));
-   rvdffe #(31) i0wbpcff             (.*, .en(i0_wb_en & trace_enable),        .din(dec_tlu_i0_pc_r[31:1]),   .dout(  i0_pc_wb[31:1]));
-
-   assign dec_i0_inst_wb[31:0] = i0_inst_wb[31:0];
-   assign dec_i0_pc_wb[31:1] = i0_pc_wb[31:1];
-
-
-
-   rvdffpcie #(31) i0_pc_r_ff           (.*, .en(i0_r_data_en), .din(exu_i0_pc_x[31:1]), .dout(dec_i0_pc_r[31:1]));
-
-   assign dec_tlu_i0_pc_r[31:1]      = dec_i0_pc_r[31:1];
-
-
-   rvbradder ibradder_correct (
-                     .pc(exu_i0_pc_x[31:1]),
-                     .offset(last_br_immed_x[12:1]),
-                     .dout(pred_correct_npc_x[31:1]));
-
-
-
-   // add nonblock load rs1/rs2 bypass cases
-
-   assign i0_rs1_nonblock_load_bypass_en_d  = dec_i0_rs1_en_d & dec_nonblock_load_wen & (dec_nonblock_load_waddr[4:0] == i0r.rs1[4:0]);
-
-   assign i0_rs2_nonblock_load_bypass_en_d  = dec_i0_rs2_en_d & dec_nonblock_load_wen & (dec_nonblock_load_waddr[4:0] == i0r.rs2[4:0]);
-
-
-
-   // bit 2 is priority match, bit 0 lowest priority, i0_x, i0_r
-
-   assign i0_rs1bypass[2]                =  i0_rs1_depth_d[0] & (i0_rs1_class_d.alu | i0_rs1_class_d.mul                      );
-   assign i0_rs1bypass[1]                =  i0_rs1_depth_d[0] & (                                          i0_rs1_class_d.load);
-   assign i0_rs1bypass[0]                =  i0_rs1_depth_d[1] & (i0_rs1_class_d.alu | i0_rs1_class_d.mul | i0_rs1_class_d.load);
-
-   assign i0_rs2bypass[2]                =  i0_rs2_depth_d[0] & (i0_rs2_class_d.alu | i0_rs2_class_d.mul                      );
-   assign i0_rs2bypass[1]                =  i0_rs2_depth_d[0] & (                                          i0_rs2_class_d.load);
-   assign i0_rs2bypass[0]                =  i0_rs2_depth_d[1] & (i0_rs2_class_d.alu | i0_rs2_class_d.mul | i0_rs2_class_d.load);
-
-
-   assign dec_i0_rs1_bypass_en_d[3]      =  i0_rs1_nonblock_load_bypass_en_d & ~i0_rs1bypass[0] & ~i0_rs1bypass[1] & ~i0_rs1bypass[2];
-   assign dec_i0_rs1_bypass_en_d[2]      =  i0_rs1bypass[2];
-   assign dec_i0_rs1_bypass_en_d[1]      =  i0_rs1bypass[1];
-   assign dec_i0_rs1_bypass_en_d[0]      =  i0_rs1bypass[0];
-
-   assign dec_i0_rs2_bypass_en_d[3]      =  i0_rs2_nonblock_load_bypass_en_d & ~i0_rs2bypass[0] & ~i0_rs2bypass[1] & ~i0_rs2bypass[2];
-   assign dec_i0_rs2_bypass_en_d[2]      =  i0_rs2bypass[2];
-   assign dec_i0_rs2_bypass_en_d[1]      =  i0_rs2bypass[1];
-   assign dec_i0_rs2_bypass_en_d[0]      =  i0_rs2bypass[0];
-
-
-   assign dec_i0_result_r[31:0]          =  i0_result_r[31:0];
-
-
-endmodule // eb1_dec_decode_ctl
-
-
-
-
-
-// file "decode" is human readable file that has all of the instruction decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "decode" except legal equation:
-
-// 1) coredecode -in decode > coredecode.e
-
-// 2) espresso -Dso -oeqntott coredecode.e | addassign -pre out.  > equations
-
-// to generate the legal (32b instruction is legal) equation below:
-
-// 1) coredecode -in decode -legal > legal.e
-
-// 2) espresso -Dso -oeqntott legal.e | addassign -pre out. > legal_equation
-
-module eb1_dec_dec_ctl
-import eb1_pkg::*;
-  (
-   input logic [31:0] inst,
-
-   output eb1_dec_pkt_t out
-   );
-
-   logic [31:0] i;
-
-
-   assign i[31:0] = inst[31:0];
-
-
-assign out.alu = (i[30]&i[24]&i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[5]&i[4]) | (i[29]
-    &!i[27]&!i[24]&i[4]) | (!i[25]&!i[13]&!i[12]&i[4]) | (!i[30]&!i[25]
-    &i[13]&i[12]) | (i[27]&i[25]&i[14]&i[4]) | (i[29]&i[27]&!i[14]&i[4]) | (
-    i[29]&!i[14]&i[5]&i[4]) | (!i[27]&!i[25]&i[14]&i[4]) | (i[30]&!i[29]
-    &!i[13]&i[4]) | (!i[30]&!i[27]&!i[25]&i[4]) | (i[13]&!i[5]&i[4]) | (
-    !i[12]&!i[5]&i[4]) | (i[2]) | (i[6]) | (i[30]&i[24]&i[23]&i[22]&i[21]
-    &i[20]&!i[5]&i[4]) | (!i[30]&i[29]&!i[24]&!i[23]&i[22]&i[21]&i[20]
-    &!i[5]&i[4]) | (!i[30]&i[24]&!i[23]&!i[22]&!i[21]&!i[20]&!i[5]&i[4]);
-
-assign out.rs1 = (!i[14]&!i[13]&!i[2]) | (!i[13]&i[11]&!i[2]) | (i[19]&i[13]&!i[2]) | (
-    !i[13]&i[10]&!i[2]) | (i[18]&i[13]&!i[2]) | (!i[13]&i[9]&!i[2]) | (
-    i[17]&i[13]&!i[2]) | (!i[13]&i[8]&!i[2]) | (i[16]&i[13]&!i[2]) | (
-    !i[13]&i[7]&!i[2]) | (i[15]&i[13]&!i[2]) | (!i[4]&!i[3]) | (!i[6]
-    &!i[2]);
-
-assign out.rs2 = (i[5]&!i[4]&!i[2]) | (!i[6]&i[5]&!i[2]);
-
-assign out.imm12 = (!i[4]&!i[3]&i[2]) | (i[13]&!i[5]&i[4]&!i[2]) | (!i[13]&!i[12]
-    &i[6]&i[4]) | (!i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.rd = (!i[5]&!i[2]) | (i[5]&i[2]) | (i[4]);
-
-assign out.shimm5 = (i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]) | (i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.imm20 = (i[5]&i[3]) | (i[4]&i[2]);
-
-assign out.pc = (!i[5]&!i[3]&i[2]) | (i[5]&i[3]);
-
-assign out.load = (!i[5]&!i[4]&!i[2]);
-
-assign out.store = (!i[6]&i[5]&!i[4]);
-
-assign out.lsu = (!i[6]&!i[4]&!i[2]);
-
-assign out.add = (!i[14]&!i[13]&!i[12]&!i[5]&i[4]) | (!i[5]&!i[3]&i[2]) | (!i[30]
-    &!i[25]&!i[14]&!i[13]&!i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sub = (i[30]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (!i[29]&!i[25]&!i[14]
-    &i[13]&!i[6]&i[4]&!i[2]) | (i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]) | (
-    !i[14]&i[13]&!i[5]&i[4]&!i[2]) | (i[6]&!i[4]&!i[2]);
-
-assign out.land = (!i[27]&!i[25]&i[14]&i[13]&i[12]&!i[6]&!i[2]) | (i[14]&i[13]&i[12]
-    &!i[5]&!i[2]);
-
-assign out.lor = (!i[6]&i[3]) | (!i[29]&!i[27]&!i[25]&i[14]&i[13]&!i[12]&!i[6]&!i[2]) | (
-    i[5]&i[4]&i[2]) | (!i[13]&!i[12]&i[6]&i[4]) | (i[14]&i[13]&!i[12]
-    &!i[5]&!i[2]);
-
-assign out.lxor = (!i[29]&!i[27]&!i[25]&i[14]&!i[13]&!i[12]&i[4]&!i[2]) | (i[14]
-    &!i[13]&!i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sll = (!i[29]&!i[27]&!i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sra = (i[30]&!i[29]&!i[27]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.srl = (!i[30]&!i[29]&!i[27]&!i[25]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.slt = (!i[29]&!i[25]&!i[14]&i[13]&!i[6]&i[4]&!i[2]) | (!i[14]&i[13]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.unsign = (!i[27]&i[25]&i[14]&i[12]&!i[6]&i[5]&!i[2]) | (!i[14]&i[13]
-    &i[12]&!i[5]&!i[2]) | (i[13]&i[6]&!i[4]&!i[2]) | (i[14]&!i[5]&!i[4]) | (
-    !i[25]&!i[14]&i[13]&i[12]&!i[6]&!i[2]) | (i[27]&i[25]&i[14]&i[13]
-    &!i[6]&i[5]&!i[2]);
-
-assign out.condbr = (i[6]&!i[4]&!i[2]);
-
-assign out.beq = (!i[14]&!i[12]&i[6]&!i[4]&!i[2]);
-
-assign out.bne = (!i[14]&i[12]&i[6]&!i[4]&!i[2]);
-
-assign out.bge = (i[14]&i[12]&i[5]&!i[4]&!i[2]);
-
-assign out.blt = (i[14]&!i[12]&i[5]&!i[4]&!i[2]);
-
-assign out.jal = (i[6]&i[2]);
-
-assign out.by = (!i[13]&!i[12]&!i[6]&!i[4]&!i[2]);
-
-assign out.half = (i[12]&!i[6]&!i[4]&!i[2]);
-
-assign out.word = (i[13]&!i[6]&!i[4]);
-
-assign out.csr_read = (i[13]&i[6]&i[4]) | (i[7]&i[6]&i[4]) | (i[8]&i[6]&i[4]) | (
-    i[9]&i[6]&i[4]) | (i[10]&i[6]&i[4]) | (i[11]&i[6]&i[4]);
-
-assign out.csr_clr = (i[15]&i[13]&i[12]&i[6]&i[4]) | (i[16]&i[13]&i[12]&i[6]&i[4]) | (
-    i[17]&i[13]&i[12]&i[6]&i[4]) | (i[18]&i[13]&i[12]&i[6]&i[4]) | (
-    i[19]&i[13]&i[12]&i[6]&i[4]);
-
-assign out.csr_set = (i[15]&!i[12]&i[6]&i[4]) | (i[16]&!i[12]&i[6]&i[4]) | (i[17]
-    &!i[12]&i[6]&i[4]) | (i[18]&!i[12]&i[6]&i[4]) | (i[19]&!i[12]&i[6]
-    &i[4]);
-
-assign out.csr_write = (!i[13]&i[12]&i[6]&i[4]);
-
-assign out.csr_imm = (i[14]&!i[13]&i[6]&i[4]) | (i[15]&i[14]&i[6]&i[4]) | (i[16]
-    &i[14]&i[6]&i[4]) | (i[17]&i[14]&i[6]&i[4]) | (i[18]&i[14]&i[6]&i[4]) | (
-    i[19]&i[14]&i[6]&i[4]);
-
-assign out.presync = (!i[5]&i[3]) | (!i[13]&i[7]&i[6]&i[4]) | (!i[13]&i[8]&i[6]&i[4]) | (
-    !i[13]&i[9]&i[6]&i[4]) | (!i[13]&i[10]&i[6]&i[4]) | (!i[13]&i[11]
-    &i[6]&i[4]) | (i[15]&i[13]&i[6]&i[4]) | (i[16]&i[13]&i[6]&i[4]) | (
-    i[17]&i[13]&i[6]&i[4]) | (i[18]&i[13]&i[6]&i[4]) | (i[19]&i[13]&i[6]
-    &i[4]);
-
-assign out.postsync = (i[12]&!i[5]&i[3]) | (!i[22]&!i[13]&!i[12]&i[6]&i[4]) | (
-    !i[13]&i[7]&i[6]&i[4]) | (!i[13]&i[8]&i[6]&i[4]) | (!i[13]&i[9]&i[6]
-    &i[4]) | (!i[13]&i[10]&i[6]&i[4]) | (!i[13]&i[11]&i[6]&i[4]) | (
-    i[15]&i[13]&i[6]&i[4]) | (i[16]&i[13]&i[6]&i[4]) | (i[17]&i[13]&i[6]
-    &i[4]) | (i[18]&i[13]&i[6]&i[4]) | (i[19]&i[13]&i[6]&i[4]);
-
-assign out.ebreak = (!i[22]&i[20]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.ecall = (!i[21]&!i[20]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.mret = (i[29]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.mul = (!i[30]&i[27]&i[24]&i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[29]&i[27]&!i[24]&i[23]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[29]&i[27]&!i[24]&!i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&i[27]&i[13]
-    &!i[6]&i[5]&i[4]&!i[2]) | (i[29]&i[27]&i[22]&!i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&!i[21]&i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&!i[22]&i[21]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[30]&i[29]&i[27]&!i[23]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[27]&i[23]&i[14]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]) | (!i[30]&!i[29]&i[27]&!i[25]&!i[13]&i[12]&!i[6]
-    &i[4]&!i[2]) | (i[25]&!i[14]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&!i[27]
-    &i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&i[14]
-    &!i[6]&i[5]&!i[2]);
-
-assign out.rs1_sign = (!i[27]&i[25]&!i[14]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (
-    !i[27]&i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.rs2_sign = (!i[27]&i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.low = (i[25]&!i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.div = (!i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]);
-
-assign out.rem = (!i[27]&i[25]&i[14]&i[13]&!i[6]&i[5]&!i[2]);
-
-assign out.fence = (!i[5]&i[3]);
-
-assign out.fence_i = (i[12]&!i[5]&i[3]);
-
-assign out.clz = (i[30]&!i[27]&!i[24]&!i[22]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.ctz = (i[30]&!i[27]&!i[24]&!i[22]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.pcnt = (i[30]&!i[27]&!i[24]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sext_b = (i[30]&!i[27]&i[22]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sext_h = (i[30]&!i[27]&i[22]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.slo = (!i[30]&i[29]&!i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sro = (!i[30]&i[29]&!i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.min = (i[27]&i[25]&i[14]&!i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.max = (i[27]&i[25]&i[14]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.pack = (!i[30]&i[27]&!i[25]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.packu = (i[30]&i[27]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.packh = (!i[30]&i[27]&!i[25]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.rol = (i[30]&!i[27]&!i[14]&i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.ror = (i[30]&i[29]&!i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbb = (i[30]&!i[27]&!i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    !i[30]&i[27]&i[14]&i[13]&i[12]&!i[6]&i[5]&!i[2]) | (i[30]&i[29]&!i[27]
-    &i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[27]&!i[13]&!i[12]&i[5]
-    &i[4]&!i[2]) | (i[30]&i[14]&!i[13]&!i[12]&!i[6]&i[5]&!i[2]) | (i[30]
-    &!i[27]&i[13]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&i[29]&!i[27]&!i[6]&i[5]
-    &i[4]&!i[2]) | (i[30]&i[29]&i[24]&i[23]&i[22]&i[21]&i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[29]&i[27]&!i[24]&!i[23]&i[22]
-    &i[21]&i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[27]
-    &i[24]&!i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[30]&i[29]&i[24]&i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]) | (i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]);
-
-assign out.sbset = (!i[30]&i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbclr = (i[30]&!i[29]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbinv = (i[30]&i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbext = (i[30]&!i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbs = (i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]) | (i[30]&!i[29]
-    &i[27]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.bext = (!i[30]&i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.bdep = (i[30]&i[27]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.zbe = (i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.clmul = (i[27]&i[25]&!i[14]&!i[13]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.clmulh = (i[27]&!i[14]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.clmulr = (i[27]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.zbc = (i[27]&i[25]&!i[14]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.grev = (i[30]&i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.gorc = (!i[30]&i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.shfl = (!i[30]&!i[29]&i[27]&!i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.unshfl = (!i[30]&!i[29]&i[27]&!i[25]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbp = (!i[30]&i[29]&!i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&!i[29]
-    &i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[30]&!i[27]&i[13]&!i[6]
-    &i[5]&i[4]&!i[2]) | (i[27]&!i[25]&!i[13]&!i[12]&i[5]&i[4]&!i[2]) | (
-    i[30]&i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]) | (i[29]&!i[27]&i[12]&!i[6]
-    &i[5]&i[4]&!i[2]) | (!i[30]&!i[29]&i[27]&!i[25]&i[12]&!i[6]&i[5]&i[4]
-    &!i[2]) | (i[29]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.crc32_b = (i[30]&!i[27]&i[24]&!i[23]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]);
-
-assign out.crc32_h = (i[30]&!i[27]&i[24]&!i[23]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.crc32_w = (i[30]&!i[27]&i[24]&!i[23]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.crc32c_b = (i[30]&!i[27]&i[23]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.crc32c_h = (i[30]&!i[27]&i[23]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.crc32c_w = (i[30]&!i[27]&i[23]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.zbr = (i[30]&!i[27]&i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.bfp = (i[30]&i[27]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.zbf = (i[30]&i[27]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.sh1add = (i[29]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.sh2add = (i[29]&i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.sh3add = (i[29]&i[14]&i[13]&!i[6]&i[5]&!i[2]);
-
-assign out.zba = (i[29]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.pm_alu = (i[28]&i[22]&!i[13]&!i[12]&i[4]) | (!i[30]&!i[29]&!i[27]&!i[25]
-    &!i[6]&i[4]) | (!i[29]&!i[27]&!i[25]&!i[13]&i[12]&!i[6]&i[4]) | (
-    !i[29]&!i[27]&!i[25]&!i[14]&!i[6]&i[4]) | (i[13]&!i[5]&i[4]) | (i[4]
-    &i[2]) | (!i[12]&!i[5]&i[4]);
-
-
-assign out.legal = (!i[31]&!i[30]&!i[29]&i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]
-    &i[22]&!i[21]&i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]
-    &!i[10]&!i[9]&!i[8]&!i[7]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&i[29]&i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]
-    &i[21]&!i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]&!i[10]
-    &!i[9]&!i[8]&!i[7]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[31]
-    &!i[30]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]&!i[21]
-    &!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]&!i[10]&!i[9]&!i[8]
-    &!i[7]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&!i[26]
-    &!i[25]&i[24]&!i[22]&!i[20]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[31]&i[29]&!i[28]&!i[26]&!i[25]&i[24]&!i[22]&!i[21]&!i[6]&!i[5]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&!i[26]&!i[25]&!i[23]
-    &!i[22]&!i[20]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]
-    &!i[28]&!i[26]&!i[25]&!i[24]&!i[23]&!i[21]&!i[6]&!i[5]&i[4]&!i[3]
-    &i[1]&i[0]) | (!i[31]&!i[30]&!i[29]&!i[28]&!i[26]&i[25]&i[13]&!i[6]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[26]&!i[25]&!i[24]
-    &!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[27]
-    &!i[26]&!i[25]&i[14]&!i[12]&!i[6]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]
-    &!i[30]&!i[28]&!i[27]&!i[26]&!i[25]&i[13]&!i[12]&!i[6]&i[4]&!i[3]
-    &i[1]&i[0]) | (!i[31]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[13]&!i[12]
-    &!i[6]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[28]&!i[27]&!i[26]&!i[25]
-    &i[14]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[29]
-    &!i[28]&!i[26]&!i[13]&i[12]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[26]&i[14]&!i[6]&i[5]&i[4]&!i[3]&i[1]
-    &i[0]) | (!i[31]&i[30]&!i[28]&i[27]&!i[26]&!i[25]&!i[13]&i[12]&!i[6]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&i[27]&!i[26]&!i[25]
-    &!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[27]
-    &!i[26]&!i[25]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]
-    &!i[29]&!i[28]&!i[27]&!i[26]&!i[6]&i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[14]&!i[13]&!i[12]&i[6]&i[5]&!i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[29]
-    &!i[28]&!i[26]&!i[25]&i[14]&!i[6]&i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[31]&i[29]&!i[28]&!i[26]&!i[25]&!i[13]&i[12]&i[5]&i[4]&!i[3]&!i[2]
-    &i[1]&i[0]) | (i[14]&i[6]&i[5]&!i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[14]
-    &!i[13]&i[5]&!i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[12]&!i[6]&!i[5]&i[4]
-    &!i[3]&i[1]&i[0]) | (!i[13]&i[12]&i[6]&i[5]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]
-    &!i[21]&!i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[13]&!i[11]
-    &!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]&i[3]&i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]
-    &!i[13]&!i[12]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]&i[3]
-    &i[2]&i[1]&i[0]) | (i[13]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    i[6]&i[5]&!i[4]&i[3]&i[2]&i[1]&i[0]) | (!i[14]&!i[12]&!i[6]&!i[4]
-    &!i[3]&!i[2]&i[1]&i[0]) | (!i[13]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]
-    &i[0]) | (i[13]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[6]&i[4]&!i[3]
-    &i[2]&i[1]&i[0]);
-
-
-endmodule // eb1_dec_dec_ctl
diff --git a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_gpr_ctl.sv b/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_gpr_ctl.sv
deleted file mode 100644
index 62ddf2e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_gpr_ctl.sv
+++ /dev/null
@@ -1,95 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-module eb1_dec_gpr_ctl
-import eb1_pkg::*;
-#(
-   `include "eb1_param.vh"
- )  (
-    input logic [4:0]  raddr0,       // logical read addresses
-    input logic [4:0]  raddr1,
-
-    input logic        wen0,         // write enable
-    input logic [4:0]  waddr0,       // write address
-    input logic [31:0] wd0,          // write data
-
-    input logic        wen1,         // write enable
-    input logic [4:0]  waddr1,       // write address
-    input logic [31:0] wd1,          // write data
-
-    input logic        wen2,         // write enable
-    input logic [4:0]  waddr2,       // write address
-    input logic [31:0] wd2,          // write data
-
-    input logic        clk,
-    input logic        rst_l,
-
-    output logic [31:0] rd0,         // read data
-    output logic [31:0] rd1,
-
-    input  logic        scan_mode
-);
-
-   logic [31:1] [31:0] gpr_out;      // 31 x 32 bit GPRs
-   logic [31:1] [31:0] gpr_in;
-   logic [31:1] w0v,w1v,w2v;
-   logic [31:1] gpr_wr_en;
-
-   // GPR Write Enables
-   assign gpr_wr_en[31:1] = (w0v[31:1] | w1v[31:1] | w2v[31:1]);
-   for ( genvar j=1; j<32; j++ )  begin : gpr
-      rvdffe #(32) gprff (.*, .en(gpr_wr_en[j]), .din(gpr_in[j][31:0]), .dout(gpr_out[j][31:0]));
-   end : gpr
-
-   // the read out
-   always_comb begin
-      rd0[31:0] = 32'b0;
-      rd1[31:0] = 32'b0;
-      w0v[31:1] = 31'b0;
-      w1v[31:1] = 31'b0;
-      w2v[31:1] = 31'b0;
-      gpr_in[31:1] = '0;
-
-      // GPR Read logic
-      for (int j=1; j<32; j++ )  begin
-         rd0[31:0] |= ({32{(raddr0[4:0]== 5'(j))}} & gpr_out[j][31:0]);
-         rd1[31:0] |= ({32{(raddr1[4:0]== 5'(j))}} & gpr_out[j][31:0]);
-      end
-
-     // GPR Write logic
-     for (int j=1; j<32; j++ )  begin
-         w0v[j]     = wen0  & (waddr0[4:0]== 5'(j) );
-         w1v[j]     = wen1  & (waddr1[4:0]== 5'(j) );
-         w2v[j]     = wen2  & (waddr2[4:0]== 5'(j) );
-         gpr_in[j]  =    ({32{w0v[j]}} & wd0[31:0]) |
-                         ({32{w1v[j]}} & wd1[31:0]) |
-                         ({32{w2v[j]}} & wd2[31:0]);
-     end
-   end // always_comb begin
-
-`ifdef RV_ASSERT_ON
-
-   logic  write_collision_unused;
-   assign write_collision_unused = ( (w0v[31:1] == w1v[31:1]) & wen0 & wen1 ) |
-                                   ( (w0v[31:1] == w2v[31:1]) & wen0 & wen2 ) |
-                                   ( (w1v[31:1] == w2v[31:1]) & wen1 & wen2 );
-
-
-   // asserting that no 2 ports will write to the same gpr simultaneously
-   assert_multiple_wen_to_same_gpr: assert #0 (~( write_collision_unused ) );
-
-`endif
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_ib_ctl.sv b/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_ib_ctl.sv
deleted file mode 100644
index 0eb95df..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_ib_ctl.sv
+++ /dev/null
@@ -1,164 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-module eb1_dec_ib_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic                 dbg_cmd_valid,                      // valid dbg cmd
-
-   input logic                 dbg_cmd_write,                      // dbg cmd is write
-   input logic [1:0]           dbg_cmd_type,                       // dbg type
-   input logic [31:0]          dbg_cmd_addr,                       // expand to 31:0
-
-   input eb1_br_pkt_t i0_brp,                                     // i0 branch packet from aligner
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index,    // BP index
-   input logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr,               // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag,              // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index,          // Fully associt btb index
-
-   input logic       ifu_i0_pc4,                                   // i0 is 4B inst else 2B
-   input logic       ifu_i0_valid,                                 // i0 valid from ifu
-   input logic       ifu_i0_icaf,                                  // i0 instruction access fault
-   input logic [1:0] ifu_i0_icaf_type,                             // i0 instruction access fault type
-
-   input logic   ifu_i0_icaf_second,                               // i0 has access fault on second 2B of 4B inst
-   input logic   ifu_i0_dbecc,                                     // i0 double-bit error
-   input logic [31:0]  ifu_i0_instr,                               // i0 instruction from the aligner
-   input logic [31:1]  ifu_i0_pc,                                  // i0 pc from the aligner
-
-
-   output logic dec_ib0_valid_d,                                   // ib0 valid
-   output logic dec_debug_valid_d,                                 // Debug read or write at D-stage
-
-
-   output logic [31:0] dec_i0_instr_d,                             // i0 inst at decode
-
-   output logic [31:1] dec_i0_pc_d,                                // i0 pc at decode
-
-   output logic dec_i0_pc4_d,                                      // i0 is 4B inst else 2B
-
-   output eb1_br_pkt_t dec_i0_brp,                                // i0 branch packet at decode
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index,   // i0 branch index
-   output logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr,              // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag,             // BP tag
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index,          // Fully associt btb index
-
-   output logic dec_i0_icaf_d,                                     // i0 instruction access fault at decode
-   output logic dec_i0_icaf_second_d,                              // i0 instruction access fault on second 2B of 4B inst
-   output logic [1:0] dec_i0_icaf_type_d,                          // i0 instruction access fault type
-   output logic dec_i0_dbecc_d,                                    // i0 double-bit error at decode
-   output logic dec_debug_wdata_rs1_d,                             // put debug write data onto rs1 source: machine is halted
-
-   output logic dec_debug_fence_d                                  // debug fence inst
-
-   );
-
-
-   logic         debug_valid;
-   logic [4:0]   dreg;
-   logic [11:0]  dcsr;
-   logic [31:0]  ib0, ib0_debug_in;
-
-   logic         debug_read;
-   logic         debug_write;
-   logic         debug_read_gpr;
-   logic         debug_write_gpr;
-   logic         debug_read_csr;
-   logic         debug_write_csr;
-
-   logic [34:0]  ifu_i0_pcdata, pc0;
-
-   assign ifu_i0_pcdata[34:0] = { ifu_i0_icaf_second, ifu_i0_dbecc, ifu_i0_icaf,
-                                  ifu_i0_pc[31:1], ifu_i0_pc4 };
-
-   assign pc0[34:0] = ifu_i0_pcdata[34:0];
-
-   assign dec_i0_icaf_second_d = pc0[34];   // icaf's can only decode as i0
-
-   assign dec_i0_dbecc_d = pc0[33];
-
-   assign dec_i0_icaf_d = pc0[32];
-   assign dec_i0_pc_d[31:1] = pc0[31:1];
-   assign dec_i0_pc4_d = pc0[0];
-
-   assign dec_i0_icaf_type_d[1:0] = ifu_i0_icaf_type[1:0];
-
-// GPR accesses
-
-// put reg to read on rs1
-// read ->   or %x0,  %reg,%x0      {000000000000,reg[4:0],110000000110011}
-
-// put write date on rs1
-// write ->  or %reg, %x0, %x0      {00000000000000000110,reg[4:0],0110011}
-
-
-// CSR accesses
-// csr is of form rd, csr, rs1
-
-// read  -> csrrs %x0, %csr, %x0     {csr[11:0],00000010000001110011}
-
-// put write data on rs1
-// write -> csrrw %x0, %csr, %x0     {csr[11:0],00000001000001110011}
-
-// abstract memory command not done here
-   assign debug_valid = dbg_cmd_valid & (dbg_cmd_type[1:0] != 2'h2);
-
-
-   assign debug_read  = debug_valid & ~dbg_cmd_write;
-   assign debug_write = debug_valid &  dbg_cmd_write;
-
-   assign debug_read_gpr  = debug_read  & (dbg_cmd_type[1:0]==2'h0);
-   assign debug_write_gpr = debug_write & (dbg_cmd_type[1:0]==2'h0);
-   assign debug_read_csr  = debug_read  & (dbg_cmd_type[1:0]==2'h1);
-   assign debug_write_csr = debug_write & (dbg_cmd_type[1:0]==2'h1);
-
-   assign dreg[4:0]  = dbg_cmd_addr[4:0];
-   assign dcsr[11:0] = dbg_cmd_addr[11:0];
-
-
-   assign ib0_debug_in[31:0] = ({32{debug_read_gpr}}  & {12'b000000000000,dreg[4:0],15'b110000000110011}) |
-                               ({32{debug_write_gpr}} & {20'b00000000000000000110,dreg[4:0],7'b0110011}) |
-                               ({32{debug_read_csr}}  & {dcsr[11:0],20'b00000010000001110011}) |
-                               ({32{debug_write_csr}} & {dcsr[11:0],20'b00000001000001110011});
-
-
-
-   // machine is in halted state, pipe empty, write will always happen next cycle
-
-   assign dec_debug_wdata_rs1_d = debug_write_gpr | debug_write_csr;
-
-
-   // special fence csr for use only in debug mode
-
-   assign dec_debug_fence_d = debug_write_csr & (dcsr[11:0] == 12'h7c4);
-
-   assign ib0[31:0] = (debug_valid) ? ib0_debug_in[31:0] : ifu_i0_instr[31:0];
-
-   assign dec_ib0_valid_d = ifu_i0_valid | debug_valid;
-
-   assign dec_debug_valid_d = debug_valid;
-
-   assign dec_i0_instr_d[31:0] = ib0[31:0];
-
-   assign dec_i0_brp = i0_brp;
-   assign dec_i0_bp_index = ifu_i0_bp_index;
-   assign dec_i0_bp_fghr = ifu_i0_bp_fghr;
-   assign dec_i0_bp_btag = ifu_i0_bp_btag;
-   assign dec_i0_bp_fa_index = ifu_i0_fa_index;
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_tlu_ctl.sv b/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_tlu_ctl.sv
deleted file mode 100644
index 83f0a9d..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_tlu_ctl.sv
+++ /dev/null
@@ -1,2947 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or it's affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-//********************************************************************************
-// eb1_dec_tlu_ctl.sv
-//
-//
-// Function: CSRs, Commit/WB, flushing, exceptions, interrupts
-// Comments:
-//
-//********************************************************************************
-
-module eb1_dec_tlu_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic clk,
-   input logic free_clk,
-   input logic free_l2clk,
-   input logic rst_l,
-   input logic scan_mode,
-
-   input logic [31:1] rst_vec, // reset vector, from core pins
-   input logic        nmi_int, // nmi pin
-   input logic [31:1] nmi_vec, // nmi vector
-   input logic  i_cpu_halt_req,    // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,     // Asynchronous Restart request to CPU
-
-   input logic lsu_fastint_stall_any,   // needed by lsu for 2nd pass of dma with ecc correction, stall next cycle
-
-
-   // perf counter inputs
-   input logic       ifu_pmu_instr_aligned,   // aligned instructions
-   input logic       ifu_pmu_fetch_stall, // fetch unit stalled
-   input logic       ifu_pmu_ic_miss, // icache miss
-   input logic       ifu_pmu_ic_hit, // icache hit
-   input logic       ifu_pmu_bus_error, // Instruction side bus error
-   input logic       ifu_pmu_bus_busy, // Instruction side bus busy
-   input logic       ifu_pmu_bus_trxn, // Instruction side bus transaction
-   input logic       dec_pmu_instr_decoded, // decoded instructions
-   input logic       dec_pmu_decode_stall, // decode stall
-   input logic       dec_pmu_presync_stall, // decode stall due to presync'd inst
-   input logic       dec_pmu_postsync_stall,// decode stall due to postsync'd inst
-   input logic       lsu_store_stall_any,    // SB or WB is full, stall decode
-   input logic       dma_dccm_stall_any,     // DMA stall of lsu
-   input logic       dma_iccm_stall_any,     // DMA stall of ifu
-   input logic       exu_pmu_i0_br_misp,     // pipe 0 branch misp
-   input logic       exu_pmu_i0_br_ataken,   // pipe 0 branch actual taken
-   input logic       exu_pmu_i0_pc4,         // pipe 0 4 byte branch
-   input logic       lsu_pmu_bus_trxn,       // D side bus transaction
-   input logic       lsu_pmu_bus_misaligned, // D side bus misaligned
-   input logic       lsu_pmu_bus_error,      // D side bus error
-   input logic       lsu_pmu_bus_busy,       // D side bus busy
-   input logic       lsu_pmu_load_external_m, // D side bus load
-   input logic       lsu_pmu_store_external_m, // D side bus store
-   input logic       dma_pmu_dccm_read,          // DMA DCCM read
-   input logic       dma_pmu_dccm_write,         // DMA DCCM write
-   input logic       dma_pmu_any_read,           // DMA read
-   input logic       dma_pmu_any_write,          // DMA write
-
-   input logic [31:1] lsu_fir_addr, // Fast int address
-   input logic [1:0] lsu_fir_error, // Fast int lookup error
-
-   input logic       iccm_dma_sb_error,      // I side dma single bit error
-
-   input    eb1_lsu_error_pkt_t lsu_error_pkt_r, // lsu precise exception/error packet
-   input logic         lsu_single_ecc_error_incr, // LSU inc SB error counter
-
-   input logic dec_pause_state, // Pause counter not zero
-   input logic         lsu_imprecise_error_store_any,      // store bus error
-   input logic         lsu_imprecise_error_load_any,      // store bus error
-   input logic [31:0]  lsu_imprecise_error_addr_any, // store bus error address
-
-   input logic        dec_csr_wen_unq_d,       // valid csr with write - for csr legal
-   input logic        dec_csr_any_unq_d,       // valid csr - for csr legal
-   input logic [11:0] dec_csr_rdaddr_d,      // read address for csr
-
-   input logic        dec_csr_wen_r,      // csr write enable at wb
-   input logic [11:0] dec_csr_wraddr_r,      // write address for csr
-   input logic [31:0] dec_csr_wrdata_r,   // csr write data at wb
-
-   input logic        dec_csr_stall_int_ff, // csr is mie/mstatus
-
-   input logic dec_tlu_i0_valid_r, // pipe 0 op at e4 is valid
-
-   input logic [31:1] exu_npc_r, // for NPC tracking
-
-   input logic [31:1] dec_tlu_i0_pc_r, // for PC/NPC tracking
-
-   input eb1_trap_pkt_t dec_tlu_packet_r, // exceptions known at decode
-
-   input logic [31:0] dec_illegal_inst, // For mtval
-   input logic        dec_i0_decode_d,  // decode valid, used for clean icache diagnostics
-
-   // branch info from pipe0 for errors or counter updates
-   input logic [1:0]  exu_i0_br_hist_r, // history
-   input logic        exu_i0_br_error_r, // error
-   input logic        exu_i0_br_start_error_r, // start error
-   input logic        exu_i0_br_valid_r, // valid
-   input logic        exu_i0_br_mp_r, // mispredict
-   input logic        exu_i0_br_middle_r, // middle of bank
-
-   // branch info from pipe1 for errors or counter updates
-
-   input logic             exu_i0_br_way_r, // way hit or repl
-
-   output logic dec_tlu_core_empty,  // core is empty
-   // Debug start
-   output logic dec_dbg_cmd_done, // abstract command done
-   output logic dec_dbg_cmd_fail, // abstract command failed
-   output logic dec_tlu_dbg_halted, // Core is halted and ready for debug command
-   output logic dec_tlu_debug_mode, // Core is in debug mode
-   output logic dec_tlu_resume_ack, // Resume acknowledge
-   output logic dec_tlu_debug_stall, // stall decode while waiting on core to empty
-
-   output logic dec_tlu_flush_noredir_r , // Tell fetch to idle on this flush
-   output logic dec_tlu_mpc_halted_only, // Core is halted only due to MPC
-   output logic dec_tlu_flush_leak_one_r, // single step
-   output logic dec_tlu_flush_err_r, // iside perr/ecc rfpc. This is the D stage of the error
-
-   output logic dec_tlu_flush_extint, // fast ext int started
-   output logic [31:2] dec_tlu_meihap, // meihap for fast int
-
-   input  logic dbg_halt_req, // DM requests a halt
-   input  logic dbg_resume_req, // DM requests a resume
-   input  logic ifu_miss_state_idle, // I-side miss buffer empty
-   input  logic lsu_idle_any, // lsu is idle
-   input  logic dec_div_active, // oop div is active
-   output eb1_trigger_pkt_t  [3:0] trigger_pkt_any, // trigger info for trigger blocks
-
-   input logic  ifu_ic_error_start,     // IC single bit error
-   input logic  ifu_iccm_rd_ecc_single_err, // ICCM single bit error
-
-
-   input logic [70:0] ifu_ic_debug_rd_data, // diagnostic icache read data
-   input logic ifu_ic_debug_rd_data_valid, // diagnostic icache read data valid
-   output eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt, // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-   // Debug end
-
-   input logic [7:0] pic_claimid, // pic claimid for csr
-   input logic [3:0] pic_pl, // pic priv level for csr
-   input logic       mhwakeup, // high priority external int, wakeup if halted
-
-   input logic mexintpend, // external interrupt pending
-   input logic timer_int, // timer interrupt pending
-   input logic soft_int, // software interrupt pending
-
-   output logic o_cpu_halt_status, // PMU interface, halted
-   output logic o_cpu_halt_ack, // halt req ack
-   output logic o_cpu_run_ack, // run req ack
-   output logic o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id, // Core ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req, // Async halt request
-   input logic mpc_debug_run_req, // Async run request
-   input logic mpc_reset_run_req, // Run/halt after reset
-   output logic mpc_debug_halt_ack, // Halt ack
-   output logic mpc_debug_run_ack, // Run ack
-   output logic debug_brkpt_status, // debug breakpoint
-
-   output logic [3:0] dec_tlu_meicurpl, // to PIC
-   output logic [3:0] dec_tlu_meipt, // to PIC
-
-
-   output logic [31:0] dec_csr_rddata_d,      // csr read data at wb
-   output logic dec_csr_legal_d,              // csr indicates legal operation
-
-   output eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // branch pkt to bp
-
-   output logic dec_tlu_i0_kill_writeb_wb,    // I0 is flushed, don't writeback any results to arch state
-   output logic dec_tlu_flush_lower_wb,       // commit has a flush (exception, int, mispredict at e4)
-   output logic dec_tlu_i0_commit_cmt,        // committed an instruction
-
-   output logic dec_tlu_i0_kill_writeb_r,    // I0 is flushed, don't writeback any results to arch state
-   output logic dec_tlu_flush_lower_r,       // commit has a flush (exception, int)
-   output logic [31:1] dec_tlu_flush_path_r, // flush pc
-   output logic dec_tlu_fence_i_r,           // flush is a fence_i rfnpc, flush icache
-   output logic dec_tlu_wr_pause_r,           // CSR write to pause reg is at R.
-   output logic dec_tlu_flush_pause_r,        // Flush is due to pause
-
-   output logic dec_tlu_presync_d,            // CSR read needs to be presync'd
-   output logic dec_tlu_postsync_d,           // CSR needs to be presync'd
-
-
-   output logic [31:0] dec_tlu_mrac_ff,        // CSR for memory region control
-
-   output logic dec_tlu_force_halt, // halt has been forced
-
-   output logic dec_tlu_perfcnt0, // toggles when pipe0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1, // toggles when pipe0 perf counter 1 has an event inc
-   output logic dec_tlu_perfcnt2, // toggles when pipe0 perf counter 2 has an event inc
-   output logic dec_tlu_perfcnt3, // toggles when pipe0 perf counter 3 has an event inc
-
-   output logic dec_tlu_i0_exc_valid_wb1, // pipe 0 exception valid
-   output logic dec_tlu_i0_valid_wb1,  // pipe 0 valid
-   output logic dec_tlu_int_valid_wb1, // pipe 2 int valid
-   output logic [4:0] dec_tlu_exc_cause_wb1, // exception or int cause
-   output logic [31:0] dec_tlu_mtval_wb1, // MTVAL value
-
-   // feature disable from mfdc
-   output logic  dec_tlu_external_ldfwd_disable, // disable external load forwarding
-   output logic  dec_tlu_sideeffect_posted_disable,  // disable posted stores to side-effect address
-   output logic  dec_tlu_core_ecc_disable, // disable core ECC
-   output logic  dec_tlu_bpred_disable,           // disable branch prediction
-   output logic  dec_tlu_wb_coalescing_disable,   // disable writebuffer coalescing
-   output logic  dec_tlu_pipelining_disable,      // disable pipelining
-   output logic  dec_tlu_trace_disable,           // disable trace
-   output logic [2:0]  dec_tlu_dma_qos_prty,    // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   output logic  dec_tlu_misc_clk_override, // override misc clock domain gating
-   output logic  dec_tlu_dec_clk_override,  // override decode clock domain gating
-   output logic  dec_tlu_ifu_clk_override,  // override fetch clock domain gating
-   output logic  dec_tlu_lsu_clk_override,  // override load/store clock domain gating
-   output logic  dec_tlu_bus_clk_override,  // override bus clock domain gating
-   output logic  dec_tlu_pic_clk_override,  // override PIC clock domain gating
-   output logic  dec_tlu_picio_clk_override,// override PICIO clock domain gating
-   output logic  dec_tlu_dccm_clk_override, // override DCCM clock domain gating
-   output logic  dec_tlu_icm_clk_override   // override ICCM clock domain gating
-   );
-
-   logic         clk_override, e4e5_int_clk, nmi_fir_type, nmi_lsu_load_type, nmi_lsu_store_type, nmi_int_detected_f, nmi_lsu_load_type_f,
-                 nmi_lsu_store_type_f, allow_dbg_halt_csr_write, dbg_cmd_done_ns, i_cpu_run_req_d1_raw, debug_mode_status, lsu_single_ecc_error_r_d1,
-                 sel_npc_r, sel_npc_resume, ce_int,
-                 nmi_in_debug_mode, dpc_capture_npc, dpc_capture_pc, tdata_load, tdata_opcode, tdata_action, perfcnt_halted, tdata_chain,
-                 tdata_kill_write;
-
-
-   logic reset_delayed, reset_detect, reset_detected;
-   logic wr_mstatus_r, wr_mtvec_r, wr_mcyclel_r, wr_mcycleh_r,
-         wr_minstretl_r, wr_minstreth_r, wr_mscratch_r, wr_mepc_r, wr_mcause_r, wr_mscause_r, wr_mtval_r,
-         wr_mrac_r, wr_meihap_r, wr_meicurpl_r, wr_meipt_r, wr_dcsr_r,
-         wr_dpc_r, wr_meicidpl_r, wr_meivt_r, wr_meicpct_r, wr_micect_r, wr_miccmect_r, wr_mfdht_r, wr_mfdhs_r,
-         wr_mdccmect_r,wr_mhpme3_r, wr_mhpme4_r, wr_mhpme5_r, wr_mhpme6_r;
-   logic wr_mpmc_r;
-   logic [1:1] mpmc_b_ns, mpmc, mpmc_b;
-   logic set_mie_pmu_fw_halt, fw_halted_ns, fw_halted;
-   logic wr_mcountinhibit_r;
-   logic [6:0] mcountinhibit;
-   logic wr_mtsel_r, wr_mtdata1_t0_r, wr_mtdata1_t1_r, wr_mtdata1_t2_r, wr_mtdata1_t3_r, wr_mtdata2_t0_r, wr_mtdata2_t1_r, wr_mtdata2_t2_r, wr_mtdata2_t3_r;
-   logic [31:0] mtdata2_t0, mtdata2_t1, mtdata2_t2, mtdata2_t3, mtdata2_tsel_out, mtdata1_tsel_out;
-   logic [9:0]  mtdata1_t0_ns, mtdata1_t0, mtdata1_t1_ns, mtdata1_t1, mtdata1_t2_ns, mtdata1_t2, mtdata1_t3_ns, mtdata1_t3;
-   logic [9:0] tdata_wrdata_r;
-   logic [1:0] mtsel_ns, mtsel;
-   logic tlu_i0_kill_writeb_r;
-   logic [1:0]  mstatus_ns, mstatus;
-   logic [1:0] mfdhs_ns, mfdhs;
-   logic [31:0] force_halt_ctr, force_halt_ctr_f;
-   logic        force_halt;
-   logic [5:0]  mfdht, mfdht_ns;
-   logic mstatus_mie_ns;
-   logic [30:0] mtvec_ns, mtvec;
-   logic [15:2] dcsr_ns, dcsr;
-   logic [5:0] mip_ns, mip;
-   logic [5:0] mie_ns, mie;
-   logic [31:0] mcyclel_ns, mcyclel;
-   logic [31:0] mcycleh_ns, mcycleh;
-   logic [31:0] minstretl_ns, minstretl;
-   logic [31:0] minstreth_ns, minstreth;
-   logic [31:0] micect_ns, micect, miccmect_ns, miccmect, mdccmect_ns, mdccmect;
-   logic [26:0] micect_inc, miccmect_inc, mdccmect_inc;
-   logic [31:0] mscratch;
-   logic [31:0] mhpmc3, mhpmc3_ns, mhpmc4, mhpmc4_ns, mhpmc5, mhpmc5_ns, mhpmc6, mhpmc6_ns;
-   logic [31:0] mhpmc3h, mhpmc3h_ns, mhpmc4h, mhpmc4h_ns, mhpmc5h, mhpmc5h_ns, mhpmc6h, mhpmc6h_ns;
-   logic [9:0]  mhpme3, mhpme4, mhpme5, mhpme6;
-   logic [31:0] mrac;
-   logic [9:2] meihap;
-   logic [31:10] meivt;
-   logic [3:0] meicurpl_ns, meicurpl;
-   logic [3:0] meicidpl_ns, meicidpl;
-   logic [3:0] meipt_ns, meipt;
-   logic [31:0] mdseac;
-   logic mdseac_locked_ns, mdseac_locked_f, mdseac_en, nmi_lsu_detected;
-   logic [31:1] mepc_ns, mepc;
-   logic [31:1] dpc_ns, dpc;
-   logic [31:0] mcause_ns, mcause;
-   logic [3:0] mscause_ns, mscause, mscause_type;
-   logic [31:0] mtval_ns, mtval;
-   logic dec_pause_state_f, dec_tlu_wr_pause_r_d1, pause_expired_r, pause_expired_wb;
-   logic        tlu_flush_lower_r, tlu_flush_lower_r_d1;
-   logic [31:1] tlu_flush_path_r,  tlu_flush_path_r_d1;
-   logic i0_valid_wb;
-   logic tlu_i0_commit_cmt;
-   logic [31:1] vectored_path, interrupt_path;
-   logic [16:0] dicawics_ns, dicawics;
-   logic        wr_dicawics_r, wr_dicad0_r, wr_dicad1_r, wr_dicad0h_r;
-   logic [31:0] dicad0_ns, dicad0, dicad0h_ns, dicad0h;
-
-   logic [6:0]  dicad1_ns, dicad1_raw;
-   logic [31:0] dicad1;
-   logic        ebreak_r, ebreak_to_debug_mode_r, ecall_r, illegal_r, mret_r, inst_acc_r, fence_i_r,
-                ic_perr_r, iccm_sbecc_r, ebreak_to_debug_mode_r_d1, kill_ebreak_count_r, inst_acc_second_r;
-   logic ce_int_ready, ext_int_ready, timer_int_ready, soft_int_ready, int_timer0_int_ready, int_timer1_int_ready, mhwakeup_ready,
-         take_ext_int, take_ce_int, take_timer_int, take_soft_int, take_int_timer0_int, take_int_timer1_int, take_nmi, take_nmi_r_d1, int_timer0_int_possible, int_timer1_int_possible;
-   logic i0_exception_valid_r, interrupt_valid_r, i0_exception_valid_r_d1, interrupt_valid_r_d1, exc_or_int_valid_r, exc_or_int_valid_r_d1, mdccme_ce_req, miccme_ce_req, mice_ce_req;
-   logic synchronous_flush_r;
-   logic [4:0]  exc_cause_r, exc_cause_wb;
-   logic        mcyclel_cout, mcyclel_cout_f, mcyclela_cout;
-   logic [31:0] mcyclel_inc;
-   logic [31:0] mcycleh_inc;
-
-   logic        minstretl_cout, minstretl_cout_f, minstret_enable, minstretl_cout_ns, minstretl_couta;
-
-   logic [31:0] minstretl_inc, minstretl_read;
-   logic [31:0] minstreth_inc, minstreth_read;
-   logic [31:1] pc_r, pc_r_d1, npc_r, npc_r_d1;
-   logic valid_csr;
-   logic rfpc_i0_r;
-   logic lsu_i0_rfnpc_r;
-   logic dec_tlu_br0_error_r, dec_tlu_br0_start_error_r, dec_tlu_br0_v_r;
-   logic lsu_i0_exc_r, lsu_i0_exc_r_raw, lsu_exc_ma_r, lsu_exc_acc_r, lsu_exc_st_r,
-         lsu_exc_valid_r, lsu_exc_valid_r_raw, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1, block_interrupts;
-   logic i0_trigger_eval_r;
-
-   logic request_debug_mode_r, request_debug_mode_r_d1, request_debug_mode_done, request_debug_mode_done_f;
-   logic take_halt, halt_taken, halt_taken_f, internal_dbg_halt_mode, dbg_tlu_halted_f, take_reset,
-         dbg_tlu_halted, core_empty, lsu_idle_any_f, ifu_miss_state_idle_f, resume_ack_ns,
-         debug_halt_req_f, debug_resume_req_f_raw, debug_resume_req_f, enter_debug_halt_req, dcsr_single_step_done, dcsr_single_step_done_f,
-         debug_halt_req_d1, debug_halt_req_ns, dcsr_single_step_running, dcsr_single_step_running_f, internal_dbg_halt_timers;
-
-   logic [3:0] i0_trigger_r, trigger_action, trigger_enabled,
-               i0_trigger_chain_masked_r;
-   logic       i0_trigger_hit_r, i0_trigger_hit_raw_r, i0_trigger_action_r,
-               trigger_hit_r_d1,
-               mepc_trigger_hit_sel_pc_r;
-   logic [3:0] update_hit_bit_r, i0_iside_trigger_has_pri_r,i0trigger_qual_r, i0_lsu_trigger_has_pri_r;
-   logic cpu_halt_status, cpu_halt_ack, cpu_run_ack, ext_halt_pulse, i_cpu_halt_req_d1, i_cpu_run_req_d1;
-
-   logic inst_acc_r_raw, trigger_hit_dmode_r, trigger_hit_dmode_r_d1;
-   logic [9:0] mcgc, mcgc_ns, mcgc_int;
-   logic [18:0] mfdc;
-   logic i_cpu_halt_req_sync_qual, i_cpu_run_req_sync_qual, pmu_fw_halt_req_ns, pmu_fw_halt_req_f, int_timer_stalled,
-         fw_halt_req, enter_pmu_fw_halt_req, pmu_fw_tlu_halted, pmu_fw_tlu_halted_f, internal_pmu_fw_halt_mode,
-         internal_pmu_fw_halt_mode_f, int_timer0_int_hold, int_timer1_int_hold, int_timer0_int_hold_f, int_timer1_int_hold_f;
-   logic nmi_int_delayed, nmi_int_detected;
-   logic [3:0] trigger_execute, trigger_data, trigger_store;
-   logic dec_tlu_pmu_fw_halted;
-
-   logic mpc_run_state_ns, debug_brkpt_status_ns, mpc_debug_halt_ack_ns, mpc_debug_run_ack_ns, dbg_halt_state_ns, dbg_run_state_ns,
-         dbg_halt_state_f, mpc_debug_halt_req_sync_f, mpc_debug_run_req_sync_f, mpc_halt_state_f, mpc_halt_state_ns, mpc_run_state_f, debug_brkpt_status_f,
-         mpc_debug_halt_ack_f, mpc_debug_run_ack_f, dbg_run_state_f, mpc_debug_halt_req_sync_pulse,
-         mpc_debug_run_req_sync_pulse, debug_brkpt_valid, debug_halt_req, debug_resume_req, dec_tlu_mpc_halted_only_ns;
-   logic take_ext_int_start, ext_int_freeze, take_ext_int_start_d1, take_ext_int_start_d2,
-         take_ext_int_start_d3, ext_int_freeze_d1, csr_meicpct, ignore_ext_int_due_to_lsu_stall;
-   logic mcause_sel_nmi_store, mcause_sel_nmi_load, mcause_sel_nmi_ext, fast_int_meicpct;
-   logic [1:0] mcause_fir_error_type;
-   logic dbg_halt_req_held_ns, dbg_halt_req_held, dbg_halt_req_final;
-   logic iccm_repair_state_ns, iccm_repair_state_d1, iccm_repair_state_rfnpc;
-
-
-   // internal timer, isolated for size reasons
-   logic [31:0] dec_timer_rddata_d;
-   logic dec_timer_read_d, dec_timer_t0_pulse, dec_timer_t1_pulse;
-   logic csr_mitctl0;
-   logic csr_mitctl1;
-   logic csr_mitb0;
-   logic csr_mitb1;
-   logic csr_mitcnt0;
-   logic csr_mitcnt1;
-
-   logic nmi_int_sync, timer_int_sync, soft_int_sync, i_cpu_halt_req_sync, i_cpu_run_req_sync, mpc_debug_halt_req_sync, mpc_debug_run_req_sync, mpc_debug_halt_req_sync_raw;
-   logic csr_wr_clk;
-   logic e4e5_clk, e4_valid, e5_valid, e4e5_valid, internal_dbg_halt_mode_f, internal_dbg_halt_mode_f2;
-   logic lsu_pmu_load_external_r, lsu_pmu_store_external_r;
-   logic dec_tlu_flush_noredir_r_d1, dec_tlu_flush_pause_r_d1;
-   logic lsu_single_ecc_error_r;
-   logic [31:0] lsu_error_pkt_addr_r;
-   logic mcyclel_cout_in;
-   logic i0_valid_no_ebreak_ecall_r;
-   logic minstret_enable_f;
-   logic sel_exu_npc_r, sel_flush_npc_r, sel_hold_npc_r;
-   logic pc0_valid_r;
-   logic [15:0] mfdc_int, mfdc_ns;
-   logic [31:0] mrac_in;
-   logic [31:27] csr_sat;
-   logic [8:6] dcsr_cause;
-   logic enter_debug_halt_req_le, dcsr_cause_upgradeable;
-   logic icache_rd_valid, icache_wr_valid, icache_rd_valid_f, icache_wr_valid_f;
-   logic [3:0]      mhpmc_inc_r, mhpmc_inc_r_d1;
-
-   logic [3:0][9:0] mhpme_vec;
-   logic            mhpmc3_wr_en0, mhpmc3_wr_en1, mhpmc3_wr_en;
-   logic            mhpmc4_wr_en0, mhpmc4_wr_en1, mhpmc4_wr_en;
-   logic            mhpmc5_wr_en0, mhpmc5_wr_en1, mhpmc5_wr_en;
-   logic            mhpmc6_wr_en0, mhpmc6_wr_en1, mhpmc6_wr_en;
-   logic            mhpmc3h_wr_en0, mhpmc3h_wr_en;
-   logic            mhpmc4h_wr_en0, mhpmc4h_wr_en;
-   logic            mhpmc5h_wr_en0, mhpmc5h_wr_en;
-   logic            mhpmc6h_wr_en0, mhpmc6h_wr_en;
-   logic [63:0]     mhpmc3_incr, mhpmc4_incr, mhpmc5_incr, mhpmc6_incr;
-   logic perfcnt_halted_d1, zero_event_r;
-   logic [3:0] perfcnt_during_sleep;
-   logic [9:0] event_r;
-
-   eb1_inst_pkt_t pmu_i0_itype_qual;
-
-   logic csr_mfdht;
-   logic csr_mfdhs;
-   logic csr_misa;
-   logic csr_mvendorid;
-   logic csr_marchid;
-   logic csr_mimpid;
-   logic csr_mhartid;
-   logic csr_mstatus;
-   logic csr_mtvec;
-   logic csr_mip;
-   logic csr_mie;
-   logic csr_mcyclel;
-   logic csr_mcycleh;
-   logic csr_minstretl;
-   logic csr_minstreth;
-   logic csr_mscratch;
-   logic csr_mepc;
-   logic csr_mcause;
-   logic csr_mscause;
-   logic csr_mtval;
-   logic csr_mrac;
-   logic csr_dmst;
-   logic csr_mdseac;
-   logic csr_meihap;
-   logic csr_meivt;
-   logic csr_meipt;
-   logic csr_meicurpl;
-   logic csr_meicidpl;
-   logic csr_dcsr;
-   logic csr_mcgc;
-   logic csr_mfdc;
-   logic csr_dpc;
-   logic csr_mtsel;
-   logic csr_mtdata1;
-   logic csr_mtdata2;
-   logic csr_mhpmc3;
-   logic csr_mhpmc4;
-   logic csr_mhpmc5;
-   logic csr_mhpmc6;
-   logic csr_mhpmc3h;
-   logic csr_mhpmc4h;
-   logic csr_mhpmc5h;
-   logic csr_mhpmc6h;
-   logic csr_mhpme3;
-   logic csr_mhpme4;
-   logic csr_mhpme5;
-   logic csr_mhpme6;
-   logic csr_mcountinhibit;
-   logic csr_mpmc;
-   logic csr_micect;
-   logic csr_miccmect;
-   logic csr_mdccmect;
-   logic csr_dicawics;
-   logic csr_dicad0h;
-   logic csr_dicad0;
-   logic csr_dicad1;
-   logic csr_dicago;
-   logic presync;
-   logic postsync;
-   logic legal;
-   logic dec_csr_wen_r_mod;
-
-   logic flush_clkvalid;
-   logic sel_fir_addr;
-   logic wr_mie_r;
-   logic mtval_capture_pc_r;
-   logic mtval_capture_pc_plus2_r;
-   logic mtval_capture_inst_r;
-   logic mtval_capture_lsu_r;
-   logic mtval_clear_r;
-   logic wr_mcgc_r;
-   logic wr_mfdc_r;
-   logic wr_mdeau_r;
-   logic trigger_hit_for_dscr_cause_r_d1;
-   logic conditionally_illegal;
-
-   logic  [3:0] ifu_mscause ;
-   logic        ifu_ic_error_start_f, ifu_iccm_rd_ecc_single_err_f;
-
-   eb1_dec_timer_ctl  #(.pt(pt)) int_timers(.*);
-   // end of internal timers
-
-   assign clk_override = dec_tlu_dec_clk_override;
-
-   // Async inputs to the core have to be sync'd to the core clock.
-   rvsyncss #(7) syncro_ff(.*,
-                           .clk(free_clk),
-                           .din ({nmi_int,      timer_int,      soft_int,      i_cpu_halt_req,      i_cpu_run_req,      mpc_debug_halt_req,          mpc_debug_run_req}),
-                           .dout({nmi_int_sync, timer_int_sync, soft_int_sync, i_cpu_halt_req_sync, i_cpu_run_req_sync, mpc_debug_halt_req_sync_raw, mpc_debug_run_req_sync}));
-
-   // for CSRs that have inpipe writes only
-
-   rvoclkhdr csrwr_r_cgc   ( .en(dec_csr_wen_r_mod | clk_override), .l1clk(csr_wr_clk), .* );
-
-   assign e4_valid = dec_tlu_i0_valid_r;
-   assign e4e5_valid = e4_valid | e5_valid;
-   assign flush_clkvalid = internal_dbg_halt_mode_f | i_cpu_run_req_d1 | interrupt_valid_r | interrupt_valid_r_d1 |
-                           reset_delayed | pause_expired_r | pause_expired_wb | ic_perr_r | iccm_sbecc_r |
-                           clk_override;
-   rvoclkhdr e4e5_cgc     ( .en(e4e5_valid | clk_override), .l1clk(e4e5_clk), .* );
-   rvoclkhdr e4e5_int_cgc ( .en(e4e5_valid | flush_clkvalid), .l1clk(e4e5_int_clk), .* );
-
-   rvdffie #(11)  freeff (.*, .clk(free_l2clk),
-                          .din ({ifu_ic_error_start, ifu_iccm_rd_ecc_single_err, iccm_repair_state_ns, e4_valid, internal_dbg_halt_mode,
-                                 lsu_pmu_load_external_m, lsu_pmu_store_external_m, tlu_flush_lower_r,  tlu_i0_kill_writeb_r,
-                                 internal_dbg_halt_mode_f, force_halt}),
-                          .dout({ifu_ic_error_start_f, ifu_iccm_rd_ecc_single_err_f, iccm_repair_state_d1, e5_valid, internal_dbg_halt_mode_f,
-                                 lsu_pmu_load_external_r, lsu_pmu_store_external_r, tlu_flush_lower_r_d1, dec_tlu_i0_kill_writeb_wb,
-                                 internal_dbg_halt_mode_f2, dec_tlu_force_halt}));
-
-   assign dec_tlu_i0_kill_writeb_r = tlu_i0_kill_writeb_r;
-
-   assign nmi_int_detected = (nmi_int_sync & ~nmi_int_delayed) | nmi_lsu_detected | (nmi_int_detected_f & ~take_nmi_r_d1) | nmi_fir_type;
-   // if the first nmi is a lsu type, note it. If there's already an nmi pending, ignore. Simultaneous with FIR, drop.
-   assign nmi_lsu_load_type  = (nmi_lsu_detected & lsu_imprecise_error_load_any &  ~(nmi_int_detected_f & ~take_nmi_r_d1)) |
-                               (nmi_lsu_load_type_f  & ~take_nmi_r_d1);
-   assign nmi_lsu_store_type = (nmi_lsu_detected & lsu_imprecise_error_store_any & ~(nmi_int_detected_f & ~take_nmi_r_d1)) |
-                               (nmi_lsu_store_type_f & ~take_nmi_r_d1);
-
-   assign nmi_fir_type = ~nmi_int_detected_f & take_ext_int_start_d3 & |lsu_fir_error[1:0];
-
-   // Filter subsequent bus errors after the first, until the lock on MDSEAC is cleared
-   assign nmi_lsu_detected = ~mdseac_locked_f & (lsu_imprecise_error_load_any | lsu_imprecise_error_store_any) & ~nmi_fir_type;
-
-
-localparam MSTATUS_MIE   = 0;
-localparam MIP_MCEIP     = 5;
-localparam MIP_MITIP0    = 4;
-localparam MIP_MITIP1    = 3;
-localparam MIP_MEIP      = 2;
-localparam MIP_MTIP      = 1;
-localparam MIP_MSIP      = 0;
-
-localparam MIE_MCEIE     = 5;
-localparam MIE_MITIE0    = 4;
-localparam MIE_MITIE1    = 3;
-localparam MIE_MEIE      = 2;
-localparam MIE_MTIE      = 1;
-localparam MIE_MSIE      = 0;
-
-localparam DCSR_EBREAKM  = 15;
-localparam DCSR_STEPIE   = 11;
-localparam DCSR_STOPC    = 10;
-localparam DCSR_STEP     = 2;
-
-
-   assign reset_delayed = reset_detect ^ reset_detected;
-
-   // ----------------------------------------------------------------------
-   // MPC halt
-   // - can interact with debugger halt and v-v
-
-   // fast ints in progress have priority
-   assign mpc_debug_halt_req_sync = mpc_debug_halt_req_sync_raw & ~ext_int_freeze_d1;
-
-    rvdffie #(16)  mpvhalt_ff (.*, .clk(free_l2clk),
-                                 .din({1'b1, reset_detect,
-                                       nmi_int_sync, nmi_int_detected, nmi_lsu_load_type, nmi_lsu_store_type,
-                                       mpc_debug_halt_req_sync, mpc_debug_run_req_sync,
-                                       mpc_halt_state_ns, mpc_run_state_ns, debug_brkpt_status_ns,
-                                       mpc_debug_halt_ack_ns, mpc_debug_run_ack_ns,
-                                       dbg_halt_state_ns, dbg_run_state_ns,
-                                       dec_tlu_mpc_halted_only_ns}),
-                                .dout({reset_detect, reset_detected,
-                                       nmi_int_delayed, nmi_int_detected_f, nmi_lsu_load_type_f, nmi_lsu_store_type_f,
-                                       mpc_debug_halt_req_sync_f, mpc_debug_run_req_sync_f,
-                                       mpc_halt_state_f, mpc_run_state_f, debug_brkpt_status_f,
-                                       mpc_debug_halt_ack_f, mpc_debug_run_ack_f,
-                                       dbg_halt_state_f, dbg_run_state_f,
-                                       dec_tlu_mpc_halted_only}));
-
-   // turn level sensitive requests into pulses
-   assign mpc_debug_halt_req_sync_pulse = mpc_debug_halt_req_sync & ~mpc_debug_halt_req_sync_f;
-   assign mpc_debug_run_req_sync_pulse = mpc_debug_run_req_sync & ~mpc_debug_run_req_sync_f;
-
-   // states
-   assign mpc_halt_state_ns = (mpc_halt_state_f | mpc_debug_halt_req_sync_pulse | (reset_delayed & ~mpc_reset_run_req)) & ~mpc_debug_run_req_sync;
-   assign mpc_run_state_ns = (mpc_run_state_f | (mpc_debug_run_req_sync_pulse & ~mpc_debug_run_ack_f)) & (internal_dbg_halt_mode_f & ~dcsr_single_step_running_f);
-
-   // note, MPC halt can allow the jtag debugger to just start sending commands. When that happens, set the interal debugger halt state to prevent
-   // MPC run from starting the core.
-   assign dbg_halt_state_ns = (dbg_halt_state_f | (dbg_halt_req_final | dcsr_single_step_done_f | trigger_hit_dmode_r_d1 | ebreak_to_debug_mode_r_d1)) & ~dbg_resume_req;
-   assign dbg_run_state_ns = (dbg_run_state_f | dbg_resume_req) & (internal_dbg_halt_mode_f & ~dcsr_single_step_running_f);
-
-   // tell dbg we are only MPC halted
-   assign dec_tlu_mpc_halted_only_ns = ~dbg_halt_state_f & mpc_halt_state_f;
-
-   // this asserts from detection of bkpt until after we leave debug mode
-   assign debug_brkpt_valid = ebreak_to_debug_mode_r_d1 | trigger_hit_dmode_r_d1;
-   assign debug_brkpt_status_ns = (debug_brkpt_valid | debug_brkpt_status_f) & (internal_dbg_halt_mode & ~dcsr_single_step_running_f);
-
-   // acks back to interface
-   assign mpc_debug_halt_ack_ns = mpc_halt_state_f & internal_dbg_halt_mode_f & mpc_debug_halt_req_sync & core_empty;
-   assign mpc_debug_run_ack_ns = (mpc_debug_run_req_sync & ~dbg_halt_state_ns & ~mpc_debug_halt_req_sync) | (mpc_debug_run_ack_f & mpc_debug_run_req_sync) ;
-
-   // Pins
-   assign mpc_debug_halt_ack = mpc_debug_halt_ack_f;
-   assign mpc_debug_run_ack = mpc_debug_run_ack_f;
-   assign debug_brkpt_status = debug_brkpt_status_f;
-
-   // DBG halt req is a pulse, fast ext int in progress has priority
-   assign dbg_halt_req_held_ns = (dbg_halt_req | dbg_halt_req_held) & ext_int_freeze_d1;
-   assign dbg_halt_req_final = (dbg_halt_req | dbg_halt_req_held) & ~ext_int_freeze_d1;
-
-   // combine MPC and DBG halt requests
-   assign debug_halt_req = (dbg_halt_req_final | mpc_debug_halt_req_sync | (reset_delayed & ~mpc_reset_run_req)) & ~internal_dbg_halt_mode_f & ~ext_int_freeze_d1;
-
-   assign debug_resume_req = ~debug_resume_req_f &  // squash back to back resumes
-                             ((mpc_run_state_ns & ~dbg_halt_state_ns) |  // MPC run req
-                              (dbg_run_state_ns & ~mpc_halt_state_ns)); // dbg request is a pulse
-
-
-   // HALT
-   // dbg/pmu/fw requests halt, service as soon as lsu is not blocking interrupts
-   assign take_halt = (debug_halt_req_f | pmu_fw_halt_req_f) & ~synchronous_flush_r & ~mret_r & ~halt_taken_f & ~dec_tlu_flush_noredir_r_d1 & ~take_reset;
-
-   // hold after we take a halt, so we don't keep taking halts
-   assign halt_taken = (dec_tlu_flush_noredir_r_d1 & ~dec_tlu_flush_pause_r_d1 & ~take_ext_int_start_d1) | (halt_taken_f & ~dbg_tlu_halted_f & ~pmu_fw_tlu_halted_f & ~interrupt_valid_r_d1);
-
-   // After doing halt flush (RFNPC) wait until core is idle before asserting a particular halt mode
-   // It takes a cycle for mb_empty to assert after a fetch, take_halt covers that cycle
-   assign core_empty = force_halt |
-                       (lsu_idle_any & lsu_idle_any_f & ifu_miss_state_idle & ifu_miss_state_idle_f & ~debug_halt_req & ~debug_halt_req_d1 & ~dec_div_active);
-
-   assign dec_tlu_core_empty = core_empty;
-
-//--------------------------------------------------------------------------------
-// Debug start
-//
-
-   assign enter_debug_halt_req = (~internal_dbg_halt_mode_f & debug_halt_req) | dcsr_single_step_done_f | trigger_hit_dmode_r_d1 | ebreak_to_debug_mode_r_d1;
-
-   // dbg halt state active from request until non-step resume
-   assign internal_dbg_halt_mode = debug_halt_req_ns | (internal_dbg_halt_mode_f & ~(debug_resume_req_f & ~dcsr[DCSR_STEP]));
-   // dbg halt can access csrs as long as we are not stepping
-   assign allow_dbg_halt_csr_write = internal_dbg_halt_mode_f & ~dcsr_single_step_running_f;
-
-
-   // hold debug_halt_req_ns high until we enter debug halt
-   assign debug_halt_req_ns = enter_debug_halt_req | (debug_halt_req_f & ~dbg_tlu_halted);
-
-   assign dbg_tlu_halted = (debug_halt_req_f & core_empty & halt_taken) | (dbg_tlu_halted_f & ~debug_resume_req_f);
-
-   assign resume_ack_ns = (debug_resume_req_f & dbg_tlu_halted_f & dbg_run_state_ns);
-
-   assign dcsr_single_step_done = dec_tlu_i0_valid_r & ~dec_tlu_dbg_halted & dcsr[DCSR_STEP] & ~rfpc_i0_r;
-
-   assign dcsr_single_step_running = (debug_resume_req_f & dcsr[DCSR_STEP]) | (dcsr_single_step_running_f & ~dcsr_single_step_done_f);
-
-   assign dbg_cmd_done_ns = dec_tlu_i0_valid_r & dec_tlu_dbg_halted;
-
-   // used to hold off commits after an in-pipe debug mode request (triggers, DCSR)
-   assign request_debug_mode_r = (trigger_hit_dmode_r | ebreak_to_debug_mode_r) | (request_debug_mode_r_d1 & ~dec_tlu_flush_lower_wb);
-
-   assign request_debug_mode_done = (request_debug_mode_r_d1 | request_debug_mode_done_f) & ~dbg_tlu_halted_f;
-
-    rvdffie #(18)  halt_ff (.*, .clk(free_l2clk),
-                          .din({dec_tlu_flush_noredir_r, halt_taken, lsu_idle_any, ifu_miss_state_idle, dbg_tlu_halted,
-                                resume_ack_ns, debug_halt_req_ns, debug_resume_req, trigger_hit_dmode_r,
-                                dcsr_single_step_done, debug_halt_req, dec_tlu_wr_pause_r, dec_pause_state,
-                                request_debug_mode_r, request_debug_mode_done, dcsr_single_step_running, dec_tlu_flush_pause_r,
-                                dbg_halt_req_held_ns}),
-                          .dout({dec_tlu_flush_noredir_r_d1, halt_taken_f, lsu_idle_any_f, ifu_miss_state_idle_f, dbg_tlu_halted_f,
-                                 dec_tlu_resume_ack , debug_halt_req_f, debug_resume_req_f_raw, trigger_hit_dmode_r_d1,
-                                 dcsr_single_step_done_f, debug_halt_req_d1, dec_tlu_wr_pause_r_d1, dec_pause_state_f,
-                                 request_debug_mode_r_d1, request_debug_mode_done_f, dcsr_single_step_running_f, dec_tlu_flush_pause_r_d1,
-                                 dbg_halt_req_held}));
-
-   // MPC run collides with DBG halt, fix it here
-   assign debug_resume_req_f = debug_resume_req_f_raw & ~dbg_halt_req;
-
-   assign dec_tlu_debug_stall = debug_halt_req_f;
-   assign dec_tlu_dbg_halted = dbg_tlu_halted_f;
-   assign dec_tlu_debug_mode = internal_dbg_halt_mode_f;
-   assign dec_tlu_pmu_fw_halted = pmu_fw_tlu_halted_f;
-
-   // kill fetch redirection on flush if going to halt, or if there's a fence during db-halt
-   assign dec_tlu_flush_noredir_r = take_halt | (fence_i_r & internal_dbg_halt_mode) | dec_tlu_flush_pause_r | (i0_trigger_hit_r & trigger_hit_dmode_r) | take_ext_int_start;
-
-   assign dec_tlu_flush_extint = take_ext_int_start;
-
-   // 1 cycle after writing the PAUSE counter, flush with noredir to idle F1-D.
-   assign dec_tlu_flush_pause_r = dec_tlu_wr_pause_r_d1 & ~interrupt_valid_r & ~take_ext_int_start;
-
-   // detect end of pause counter and rfpc
-   assign pause_expired_r = ~dec_pause_state & dec_pause_state_f & ~(ext_int_ready | ce_int_ready | timer_int_ready | soft_int_ready | int_timer0_int_hold_f | int_timer1_int_hold_f | nmi_int_detected | ext_int_freeze_d1) & ~interrupt_valid_r_d1 & ~debug_halt_req_f & ~pmu_fw_halt_req_f & ~halt_taken_f;
-
-   assign dec_tlu_flush_leak_one_r = dec_tlu_flush_lower_r  & dcsr[DCSR_STEP] & (dec_tlu_resume_ack | dcsr_single_step_running) & ~dec_tlu_flush_noredir_r;
-   assign dec_tlu_flush_err_r = dec_tlu_flush_lower_r & (ic_perr_r | iccm_sbecc_r);
-
-   // If DM attempts to access an illegal CSR, send cmd_fail back
-   assign dec_dbg_cmd_done = dbg_cmd_done_ns;
-   assign dec_dbg_cmd_fail = illegal_r & dec_dbg_cmd_done;
-
-
-   //--------------------------------------------------------------------------------
-   //--------------------------------------------------------------------------------
-   // Triggers
-   //
-localparam MTDATA1_DMODE             = 9;
-localparam MTDATA1_SEL   = 7;
-localparam MTDATA1_ACTION            = 6;
-localparam MTDATA1_CHAIN             = 5;
-localparam MTDATA1_MATCH             = 4;
-localparam MTDATA1_M_ENABLED         = 3;
-localparam MTDATA1_EXE   = 2;
-localparam MTDATA1_ST    = 1;
-localparam MTDATA1_LD    = 0;
-
-   // Prioritize trigger hits with other exceptions.
-   //
-   // Trigger should have highest priority except:
-   // - trigger is an execute-data and there is an inst_access exception (lsu triggers won't fire, inst. is nop'd by decode)
-   // - trigger is a store-data and there is a lsu_acc_exc or lsu_ma_exc.
-   assign trigger_execute[3:0] = {mtdata1_t3[MTDATA1_EXE], mtdata1_t2[MTDATA1_EXE], mtdata1_t1[MTDATA1_EXE], mtdata1_t0[MTDATA1_EXE]};
-   assign trigger_data[3:0] = {mtdata1_t3[MTDATA1_SEL], mtdata1_t2[MTDATA1_SEL], mtdata1_t1[MTDATA1_SEL], mtdata1_t0[MTDATA1_SEL]};
-   assign trigger_store[3:0] = {mtdata1_t3[MTDATA1_ST], mtdata1_t2[MTDATA1_ST], mtdata1_t1[MTDATA1_ST], mtdata1_t0[MTDATA1_ST]};
-
-   // MSTATUS[MIE] needs to be on to take triggers unless the action is trigger to debug mode.
-   assign trigger_enabled[3:0] = {(mtdata1_t3[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t3[MTDATA1_M_ENABLED],
-                                  (mtdata1_t2[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t2[MTDATA1_M_ENABLED],
-                                  (mtdata1_t1[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t1[MTDATA1_M_ENABLED],
-                                  (mtdata1_t0[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t0[MTDATA1_M_ENABLED]};
-
-   // iside exceptions are always in i0
-   assign i0_iside_trigger_has_pri_r[3:0]  = ~( (trigger_execute[3:0] & trigger_data[3:0] & {4{inst_acc_r_raw}}) | // exe-data with inst_acc
-                                                ({4{exu_i0_br_error_r | exu_i0_br_start_error_r}}));               // branch error in i0
-
-   // lsu excs have to line up with their respective triggers since the lsu op can be i0
-   assign i0_lsu_trigger_has_pri_r[3:0] = ~(trigger_store[3:0] & trigger_data[3:0] & {4{lsu_i0_exc_r_raw}});
-
-   // trigger hits have to be eval'd to cancel side effect lsu ops even though the pipe is already frozen
-   assign i0_trigger_eval_r = dec_tlu_i0_valid_r;
-
-   assign i0trigger_qual_r[3:0] = {4{i0_trigger_eval_r}} & dec_tlu_packet_r.i0trigger[3:0] & i0_iside_trigger_has_pri_r[3:0] & i0_lsu_trigger_has_pri_r[3:0] & trigger_enabled[3:0];
-
-   // Qual trigger hits
-   assign i0_trigger_r[3:0] = ~{4{dec_tlu_flush_lower_wb | dec_tlu_dbg_halted}} & i0trigger_qual_r[3:0];
-
-   // chaining can mask raw trigger info
-   assign i0_trigger_chain_masked_r[3:0]  = {i0_trigger_r[3] & (~mtdata1_t2[MTDATA1_CHAIN] | i0_trigger_r[2]),
-                                             i0_trigger_r[2] & (~mtdata1_t2[MTDATA1_CHAIN] | i0_trigger_r[3]),
-                                             i0_trigger_r[1] & (~mtdata1_t0[MTDATA1_CHAIN] | i0_trigger_r[0]),
-                                             i0_trigger_r[0] & (~mtdata1_t0[MTDATA1_CHAIN] | i0_trigger_r[1])};
-
-   // This is the highest priority by this point.
-   assign i0_trigger_hit_raw_r = |i0_trigger_chain_masked_r[3:0];
-
-   assign i0_trigger_hit_r = i0_trigger_hit_raw_r;
-
-   // Actions include breakpoint, or dmode. Dmode is only possible if the DMODE bit is set.
-   // Otherwise, take a breakpoint.
-   assign trigger_action[3:0] = {mtdata1_t3[MTDATA1_ACTION] & mtdata1_t3[MTDATA1_DMODE],
-                                 mtdata1_t2[MTDATA1_ACTION] & mtdata1_t2[MTDATA1_DMODE] & ~mtdata1_t2[MTDATA1_CHAIN],
-                                 mtdata1_t1[MTDATA1_ACTION] & mtdata1_t1[MTDATA1_DMODE],
-                                 mtdata1_t0[MTDATA1_ACTION] & mtdata1_t0[MTDATA1_DMODE] & ~mtdata1_t0[MTDATA1_CHAIN]};
-
-   // this is needed to set the HIT bit in the triggers
-   assign update_hit_bit_r[3:0] = ({4{|i0_trigger_r[3:0] & ~rfpc_i0_r}} & {i0_trigger_chain_masked_r[3], i0_trigger_r[2], i0_trigger_chain_masked_r[1], i0_trigger_r[0]});
-
-   // action, 1 means dmode. Simultaneous triggers with at least 1 set for dmode force entire action to dmode.
-   assign i0_trigger_action_r = |(i0_trigger_chain_masked_r[3:0] & trigger_action[3:0]);
-
-   assign trigger_hit_dmode_r = (i0_trigger_hit_r & i0_trigger_action_r);
-
-   assign mepc_trigger_hit_sel_pc_r = i0_trigger_hit_r & ~trigger_hit_dmode_r;
-
-
-//
-// Debug end
-//--------------------------------------------------------------------------------
-
-   //----------------------------------------------------------------------
-   //
-   // Commit
-   //
-   //----------------------------------------------------------------------
-
-
-
-   //--------------------------------------------------------------------------------
-   // External halt (not debug halt)
-   // - Fully interlocked handshake
-   // i_cpu_halt_req  ____|--------------|_______________
-   // core_empty      ---------------|___________
-   // o_cpu_halt_ack  _________________|----|__________
-   // o_cpu_halt_status _______________|---------------------|_________
-   // i_cpu_run_req                              ______|----------|____
-   // o_cpu_run_ack                              ____________|------|________
-   //
-
-
-   // debug mode has priority, ignore PMU/FW halt/run while in debug mode
-   assign i_cpu_halt_req_sync_qual = i_cpu_halt_req_sync & ~dec_tlu_debug_mode & ~ext_int_freeze_d1;
-   assign i_cpu_run_req_sync_qual = i_cpu_run_req_sync & ~dec_tlu_debug_mode & pmu_fw_tlu_halted_f & ~ext_int_freeze_d1;
-
-   rvdffie #(10) exthaltff (.*, .clk(free_l2clk), .din({i_cpu_halt_req_sync_qual, i_cpu_run_req_sync_qual,   cpu_halt_status,
-                                                   cpu_halt_ack,   cpu_run_ack, internal_pmu_fw_halt_mode,
-                                                   pmu_fw_halt_req_ns, pmu_fw_tlu_halted,
-                                                   int_timer0_int_hold, int_timer1_int_hold}),
-                                            .dout({i_cpu_halt_req_d1,        i_cpu_run_req_d1_raw,      o_cpu_halt_status,
-                                                   o_cpu_halt_ack, o_cpu_run_ack, internal_pmu_fw_halt_mode_f,
-                                                   pmu_fw_halt_req_f, pmu_fw_tlu_halted_f,
-                                                   int_timer0_int_hold_f, int_timer1_int_hold_f}));
-
-   // only happens if we aren't in dgb_halt
-   assign ext_halt_pulse = i_cpu_halt_req_sync_qual & ~i_cpu_halt_req_d1;
-
-   assign enter_pmu_fw_halt_req =  ext_halt_pulse | fw_halt_req;
-
-   assign pmu_fw_halt_req_ns = (enter_pmu_fw_halt_req | (pmu_fw_halt_req_f & ~pmu_fw_tlu_halted)) & ~debug_halt_req_f;
-
-   assign internal_pmu_fw_halt_mode = pmu_fw_halt_req_ns | (internal_pmu_fw_halt_mode_f & ~i_cpu_run_req_d1 & ~debug_halt_req_f);
-
-   // debug halt has priority
-   assign pmu_fw_tlu_halted = ((pmu_fw_halt_req_f & core_empty & halt_taken & ~enter_debug_halt_req) | (pmu_fw_tlu_halted_f & ~i_cpu_run_req_d1)) & ~debug_halt_req_f;
-
-   assign cpu_halt_ack = (i_cpu_halt_req_d1 & pmu_fw_tlu_halted_f) | (o_cpu_halt_ack & i_cpu_halt_req_sync);
-   assign cpu_halt_status = (pmu_fw_tlu_halted_f & ~i_cpu_run_req_d1) | (o_cpu_halt_status & ~i_cpu_run_req_d1 & ~internal_dbg_halt_mode_f);
-   assign cpu_run_ack = (~pmu_fw_tlu_halted_f & i_cpu_run_req_sync) | (o_cpu_halt_status & i_cpu_run_req_d1_raw) | (o_cpu_run_ack & i_cpu_run_req_sync);
-   assign debug_mode_status = internal_dbg_halt_mode_f;
-   assign o_debug_mode_status = debug_mode_status;
-
-`ifdef RV_ASSERT_ON
-  assert_commit_while_halted: assert #0 (~(tlu_i0_commit_cmt  & o_cpu_halt_status)) else $display("ERROR: Commiting while cpu_halt_status asserted!");
-  assert_flush_while_fastint: assert #0 (~((take_ext_int_start_d1 | take_ext_int_start_d2) & dec_tlu_flush_lower_r)) else $display("ERROR: TLU Flushing inside fast interrupt procedure!");
-`endif
-
-   // high priority interrupts can wakeup from external halt, so can unmasked timer interrupts
-   assign i_cpu_run_req_d1 = i_cpu_run_req_d1_raw | ((nmi_int_detected | timer_int_ready | soft_int_ready | int_timer0_int_hold_f | int_timer1_int_hold_f | (mhwakeup & mhwakeup_ready)) & o_cpu_halt_status & ~i_cpu_halt_req_d1);
-
-   //--------------------------------------------------------------------------------
-   //--------------------------------------------------------------------------------
-
-   assign lsu_single_ecc_error_r = lsu_single_ecc_error_incr;
-
-   assign lsu_error_pkt_addr_r[31:0] = lsu_error_pkt_r.addr[31:0];
-
-
-   assign lsu_exc_valid_r_raw = lsu_error_pkt_r.exc_valid & ~dec_tlu_flush_lower_wb;
-
-   assign lsu_i0_exc_r_raw =  lsu_error_pkt_r.exc_valid;
-
-   assign lsu_i0_exc_r = lsu_i0_exc_r_raw & lsu_exc_valid_r_raw & ~i0_trigger_hit_r & ~rfpc_i0_r;
-
-   assign lsu_exc_valid_r = lsu_i0_exc_r;
-
-   assign lsu_exc_ma_r  =  lsu_i0_exc_r & ~lsu_error_pkt_r.exc_type;
-   assign lsu_exc_acc_r =  lsu_i0_exc_r & lsu_error_pkt_r.exc_type;
-   assign lsu_exc_st_r  =  lsu_i0_exc_r & lsu_error_pkt_r.inst_type;
-
-   // Single bit ECC errors on loads are RFNPC corrected, with the corrected data written to the GPR.
-   // LSU turns the load into a store and patches the data in the DCCM
-   assign lsu_i0_rfnpc_r = dec_tlu_i0_valid_r & ~i0_trigger_hit_r &
-                           (~lsu_error_pkt_r.inst_type & lsu_error_pkt_r.single_ecc_error);
-
-   //  Final commit valids
-   assign tlu_i0_commit_cmt = dec_tlu_i0_valid_r &
-                              ~rfpc_i0_r &
-                              ~lsu_i0_exc_r &
-                              ~inst_acc_r &
-                              ~dec_tlu_dbg_halted &
-                              ~request_debug_mode_r_d1 &
-                              ~i0_trigger_hit_r;
-
-   // unified place to manage the killing of arch state writebacks
-   assign tlu_i0_kill_writeb_r = rfpc_i0_r | lsu_i0_exc_r | inst_acc_r | (illegal_r & dec_tlu_dbg_halted) | i0_trigger_hit_r;
-   assign dec_tlu_i0_commit_cmt = tlu_i0_commit_cmt;
-
-
-   // refetch PC, microarch flush
-   // ic errors only in pipe0
-   assign rfpc_i0_r =  ((dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1 & (exu_i0_br_error_r | exu_i0_br_start_error_r)) | // inst commit with rfpc
-                        ((ic_perr_r | iccm_sbecc_r) & ~ext_int_freeze_d1)) & // ic/iccm without inst commit
-                       ~i0_trigger_hit_r & // unless there's a trigger. Err signal to ic/iccm will assert anyway to clear the error.
-                       ~lsu_i0_rfnpc_r;
-
-   // From the indication of a iccm single bit error until the first commit or flush, maintain a repair state. In the repair state, rfnpc i0 commits.
-   assign iccm_repair_state_ns = iccm_sbecc_r | (iccm_repair_state_d1 & ~dec_tlu_flush_lower_r);
-
-
-   localparam MCPC          = 12'h7c2;
-
-   // this is a flush of last resort, meaning only assert it if there is no other flush happening.
-   assign iccm_repair_state_rfnpc = tlu_i0_commit_cmt & iccm_repair_state_d1 &
-                                    ~(ebreak_r | ecall_r | mret_r | take_reset | illegal_r | (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCPC)));
-
-if(pt.BTB_ENABLE==1) begin
-   // go ahead and repair the branch error on other flushes, doesn't have to be the rfpc flush
-   assign dec_tlu_br0_error_r = exu_i0_br_error_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1;
-   assign dec_tlu_br0_start_error_r = exu_i0_br_start_error_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1;
-   assign dec_tlu_br0_v_r = exu_i0_br_valid_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1 & (~exu_i0_br_mp_r | ~exu_pmu_i0_br_ataken);
-
-
-   assign dec_tlu_br0_r_pkt.hist[1:0] = exu_i0_br_hist_r[1:0];
-   assign dec_tlu_br0_r_pkt.br_error = dec_tlu_br0_error_r;
-   assign dec_tlu_br0_r_pkt.br_start_error = dec_tlu_br0_start_error_r;
-   assign dec_tlu_br0_r_pkt.valid = dec_tlu_br0_v_r;
-   assign dec_tlu_br0_r_pkt.way = exu_i0_br_way_r;
-   assign dec_tlu_br0_r_pkt.middle = exu_i0_br_middle_r;
-end // if (pt.BTB_ENABLE==1)
-else begin
-   assign dec_tlu_br0_error_r = '0;
-   assign dec_tlu_br0_start_error_r = '0;
-   assign dec_tlu_br0_v_r = '0;
-   assign dec_tlu_br0_r_pkt  = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-
-   // only expect these in pipe 0
-   assign       ebreak_r     =  (dec_tlu_packet_r.pmu_i0_itype == EBREAK)  & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~dcsr[DCSR_EBREAKM] & ~rfpc_i0_r;
-   assign       ecall_r      =  (dec_tlu_packet_r.pmu_i0_itype == ECALL)   & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign       illegal_r    =  ~dec_tlu_packet_r.legal   & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign       mret_r       =  (dec_tlu_packet_r.pmu_i0_itype == MRET)    & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   // fence_i includes debug only fence_i's
-   assign       fence_i_r    =  (dec_tlu_packet_r.fence_i & dec_tlu_i0_valid_r & ~i0_trigger_hit_r) & ~rfpc_i0_r;
-   assign       ic_perr_r    =  ifu_ic_error_start_f & ~ext_int_freeze_d1 & (~internal_dbg_halt_mode_f | dcsr_single_step_running) & ~internal_pmu_fw_halt_mode_f;
-   assign       iccm_sbecc_r =  ifu_iccm_rd_ecc_single_err_f & ~ext_int_freeze_d1 & (~internal_dbg_halt_mode_f | dcsr_single_step_running) & ~internal_pmu_fw_halt_mode_f;
-   assign       inst_acc_r_raw  =  dec_tlu_packet_r.icaf & dec_tlu_i0_valid_r;
-   assign       inst_acc_r = inst_acc_r_raw & ~rfpc_i0_r & ~i0_trigger_hit_r;
-   assign       inst_acc_second_r = dec_tlu_packet_r.icaf_second;
-
-   assign       ebreak_to_debug_mode_r = (dec_tlu_packet_r.pmu_i0_itype == EBREAK)  & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & dcsr[DCSR_EBREAKM] & ~rfpc_i0_r;
-
-   rvdff #(1)  exctype_wb_ff (.*, .clk(e4e5_clk),
-                                .din (ebreak_to_debug_mode_r   ),
-                                .dout(ebreak_to_debug_mode_r_d1));
-
-   assign dec_tlu_fence_i_r = fence_i_r;
-   //
-   // Exceptions
-   //
-   // - MEPC <- PC
-   // - PC <- MTVEC, assert flush_lower
-   // - MCAUSE <- cause
-   // - MSCAUSE <- secondary cause
-   // - MTVAL <-
-   // - MPIE <- MIE
-   // - MIE <- 0
-   //
-   assign i0_exception_valid_r = (ebreak_r | ecall_r | illegal_r | inst_acc_r) & ~rfpc_i0_r & ~dec_tlu_dbg_halted;
-
-   // Cause:
-   //
-   // 0x2 : illegal
-   // 0x3 : breakpoint
-   // 0xb : Environment call M-mode
-
-
-   assign exc_cause_r[4:0] =  ( ({5{take_ext_int}}        & 5'h0b) |
-                                ({5{take_timer_int}}      & 5'h07) |
-                                ({5{take_soft_int}}       & 5'h03) |
-                                ({5{take_int_timer0_int}} & 5'h1d) |
-                                ({5{take_int_timer1_int}} & 5'h1c) |
-                                ({5{take_ce_int}}         & 5'h1e) |
-                                ({5{illegal_r}}           & 5'h02) |
-                                ({5{ecall_r}}             & 5'h0b) |
-                                ({5{inst_acc_r}}          & 5'h01) |
-                                ({5{ebreak_r | i0_trigger_hit_r}}   & 5'h03) |
-                                ({5{lsu_exc_ma_r & ~lsu_exc_st_r}}  & 5'h04) |
-                                ({5{lsu_exc_acc_r & ~lsu_exc_st_r}} & 5'h05) |
-                                ({5{lsu_exc_ma_r & lsu_exc_st_r}}   & 5'h06) |
-                                ({5{lsu_exc_acc_r & lsu_exc_st_r}}  & 5'h07)
-                                ) & ~{5{take_nmi}};
-
-   //
-   // Interrupts
-   //
-   // exceptions that are committed have already happened and will cause an int at E4 to wait a cycle
-   // or more if MSTATUS[MIE] is cleared.
-   //
-   // -in priority order, highest to lowest
-   // -single cycle window where a csr write to MIE/MSTATUS is at E4 when the other conditions for externals are met.
-   //  Hold off externals for a cycle to make sure we are consistent with what was just written
-   assign mhwakeup_ready =  ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MEIP]   & mie_ns[MIE_MEIE];
-   assign ext_int_ready   = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MEIP]   & mie_ns[MIE_MEIE] & ~ignore_ext_int_due_to_lsu_stall;
-   assign ce_int_ready    = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MCEIP]  & mie_ns[MIE_MCEIE];
-   assign soft_int_ready  = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MSIP]   & mie_ns[MIE_MSIE];
-   assign timer_int_ready = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MTIP]   & mie_ns[MIE_MTIE];
-
-   // MIP for internal timers pulses for 1 clock, resets the timer counter. Mip won't hold past the various stall conditions.
-   assign int_timer0_int_possible = mstatus_mie_ns & mie_ns[MIE_MITIE0];
-   assign int_timer0_int_ready = mip[MIP_MITIP0] & int_timer0_int_possible;
-   assign int_timer1_int_possible = mstatus_mie_ns & mie_ns[MIE_MITIE1];
-   assign int_timer1_int_ready = mip[MIP_MITIP1] & int_timer1_int_possible;
-
-   // Internal timers pulse and reset. If core is PMU/FW halted, the pulse will cause an exit from halt, but won't stick around
-   // Make it sticky, also for 1 cycle stall conditions.
-   assign int_timer_stalled = dec_csr_stall_int_ff | synchronous_flush_r | exc_or_int_valid_r_d1 | mret_r;
-
-   assign int_timer0_int_hold = (int_timer0_int_ready & (pmu_fw_tlu_halted_f | int_timer_stalled)) | (int_timer0_int_possible & int_timer0_int_hold_f & ~interrupt_valid_r & ~take_ext_int_start & ~internal_dbg_halt_mode_f);
-   assign int_timer1_int_hold = (int_timer1_int_ready & (pmu_fw_tlu_halted_f | int_timer_stalled)) | (int_timer1_int_possible & int_timer1_int_hold_f & ~interrupt_valid_r & ~take_ext_int_start & ~internal_dbg_halt_mode_f);
-
-
-   assign internal_dbg_halt_timers = internal_dbg_halt_mode_f & ~dcsr_single_step_running;
-
-
-   assign block_interrupts = ( (internal_dbg_halt_mode & (~dcsr_single_step_running | dec_tlu_i0_valid_r)) | // No ints in db-halt unless we are single stepping
-                               internal_pmu_fw_halt_mode | i_cpu_halt_req_d1 |// No ints in PMU/FW halt. First we exit halt
-                               take_nmi | // NMI is top priority
-                               ebreak_to_debug_mode_r | // Heading to debug mode, hold off ints
-                               synchronous_flush_r | // exception flush this cycle
-                               exc_or_int_valid_r_d1 | // ext/int past cycle (need time for MIE to update)
-                               mret_r |    // mret in progress, for cases were ISR enables ints before mret
-                               ext_int_freeze_d1 // Fast interrupt in progress (optional)
-                               );
-
-
-if (pt.FAST_INTERRUPT_REDIRECT) begin
-
-
-   assign take_ext_int_start = ext_int_ready & ~block_interrupts;
-
-   assign ext_int_freeze = take_ext_int_start | take_ext_int_start_d1 | take_ext_int_start_d2 | take_ext_int_start_d3;
-   assign take_ext_int = take_ext_int_start_d3 & ~|lsu_fir_error[1:0];
-   assign fast_int_meicpct = csr_meicpct & dec_csr_any_unq_d;  // MEICPCT becomes illegal if fast ints are enabled
-
-   assign ignore_ext_int_due_to_lsu_stall = lsu_fastint_stall_any;
-end
-else begin
-   assign take_ext_int_start = 1'b0;
-   assign ext_int_freeze = 1'b0;
-   assign ext_int_freeze_d1 = 1'b0;
-   assign take_ext_int_start_d1 = 1'b0;
-   assign take_ext_int_start_d2 = 1'b0;
-   assign take_ext_int_start_d3 = 1'b0;
-   assign fast_int_meicpct = 1'b0;
-   assign ignore_ext_int_due_to_lsu_stall = 1'b0;
-
-   assign take_ext_int = ext_int_ready & ~block_interrupts;
-end
-
-   assign take_ce_int  = ce_int_ready & ~ext_int_ready & ~block_interrupts;
-   assign take_soft_int = soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_timer_int = timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_int_timer0_int = (int_timer0_int_ready | int_timer0_int_hold_f) & int_timer0_int_possible & ~dec_csr_stall_int_ff &
-                                ~timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_int_timer1_int = (int_timer1_int_ready | int_timer1_int_hold_f) & int_timer1_int_possible & ~dec_csr_stall_int_ff &
-                                ~(int_timer0_int_ready | int_timer0_int_hold_f) & ~timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-
-   assign take_reset = reset_delayed & mpc_reset_run_req;
-   assign take_nmi = nmi_int_detected & ~internal_pmu_fw_halt_mode & (~internal_dbg_halt_mode | (dcsr_single_step_running_f & dcsr[DCSR_STEPIE] & ~dec_tlu_i0_valid_r & ~dcsr_single_step_done_f)) &
-                     ~synchronous_flush_r & ~mret_r & ~take_reset & ~ebreak_to_debug_mode_r & (~ext_int_freeze_d1 | (take_ext_int_start_d3 & |lsu_fir_error[1:0]));
-
-   assign interrupt_valid_r = take_ext_int | take_timer_int | take_soft_int | take_nmi | take_ce_int | take_int_timer0_int | take_int_timer1_int;
-
-
-   // Compute interrupt path:
-   // If vectored async is set in mtvec, flush path for interrupts is MTVEC + (4 * CAUSE);
-   assign vectored_path[31:1]  = {mtvec[30:1], 1'b0} + {25'b0, exc_cause_r[4:0], 1'b0};
-   assign interrupt_path[31:1] = take_nmi ? nmi_vec[31:1] : ((mtvec[0] == 1'b1) ? vectored_path[31:1] : {mtvec[30:1], 1'b0});
-
-   assign sel_npc_r  = lsu_i0_rfnpc_r | fence_i_r | iccm_repair_state_rfnpc | (i_cpu_run_req_d1 & ~interrupt_valid_r) | (rfpc_i0_r & ~dec_tlu_i0_valid_r);
-   assign sel_npc_resume = (i_cpu_run_req_d1 & pmu_fw_tlu_halted_f) | pause_expired_r;
-
-   assign sel_fir_addr = take_ext_int_start_d3 & ~|lsu_fir_error[1:0];
-
-   assign synchronous_flush_r  = i0_exception_valid_r | // exception
-                                 rfpc_i0_r | // rfpc
-                                 lsu_exc_valid_r |  // lsu exception in either pipe 0 or pipe 1
-                                 fence_i_r |  // fence, a rfnpc
-                                 lsu_i0_rfnpc_r | // lsu dccm sb ecc
-                                 iccm_repair_state_rfnpc | // Iccm sb ecc
-                                 debug_resume_req_f | // resume from debug halt, fetch the dpc
-                                 sel_npc_resume |  // resume from pmu/fw halt, or from pause and fetch the NPC
-                                 dec_tlu_wr_pause_r_d1 | // flush at start of pause
-                                 i0_trigger_hit_r; // trigger hit, ebreak or goto debug mode
-
-   assign tlu_flush_lower_r = interrupt_valid_r | mret_r | synchronous_flush_r | take_halt | take_reset | take_ext_int_start;
-
-   assign tlu_flush_path_r[31:1] = take_reset ? rst_vec[31:1] :
-
-                                    ( ({31{sel_fir_addr}} & lsu_fir_addr[31:1]) |
-                                      ({31{~take_nmi & sel_npc_r}} & npc_r[31:1]) |
-                                      ({31{~take_nmi & rfpc_i0_r & dec_tlu_i0_valid_r & ~sel_npc_r}} & dec_tlu_i0_pc_r[31:1]) |
-                                      ({31{interrupt_valid_r & ~sel_fir_addr}} & interrupt_path[31:1]) |
-                                      ({31{(i0_exception_valid_r | lsu_exc_valid_r |
-                                            (i0_trigger_hit_r & ~trigger_hit_dmode_r)) & ~interrupt_valid_r & ~sel_fir_addr}} & {mtvec[30:1],1'b0}) |
-                                      ({31{~take_nmi & mret_r}} & mepc[31:1]) |
-                                      ({31{~take_nmi & debug_resume_req_f}} & dpc[31:1]) |
-                                      ({31{~take_nmi & sel_npc_resume}} & npc_r_d1[31:1]) );
-
-   rvdffpcie #(31)  flush_lower_ff (.*, .en(tlu_flush_lower_r),
-                                 .din({tlu_flush_path_r[31:1]}),
-                                 .dout({tlu_flush_path_r_d1[31:1]}));
-
-   assign dec_tlu_flush_lower_wb = tlu_flush_lower_r_d1;
-   assign dec_tlu_flush_lower_r = tlu_flush_lower_r;
-   assign dec_tlu_flush_path_r[31:1] = tlu_flush_path_r[31:1];
-
-
-   // this is used to capture mepc, etc.
-   assign exc_or_int_valid_r = lsu_exc_valid_r | i0_exception_valid_r | interrupt_valid_r | (i0_trigger_hit_r & ~trigger_hit_dmode_r);
-
-
-   rvdffie #(12)  excinfo_wb_ff (.*,
-                                 .din({interrupt_valid_r, i0_exception_valid_r, exc_or_int_valid_r,
-                                       exc_cause_r[4:0], tlu_i0_commit_cmt & ~illegal_r, i0_trigger_hit_r,
-                                       take_nmi, pause_expired_r }),
-                                 .dout({interrupt_valid_r_d1, i0_exception_valid_r_d1, exc_or_int_valid_r_d1,
-                                        exc_cause_wb[4:0], i0_valid_wb, trigger_hit_r_d1,
-                                        take_nmi_r_d1, pause_expired_wb}));
-
-   //----------------------------------------------------------------------
-   //
-   // CSRs
-   //
-   //----------------------------------------------------------------------
-
-
-   // ----------------------------------------------------------------------
-   // MISA (RO)
-   //  [31:30] XLEN - implementation width, 2'b01 - 32 bits
-   //  [12]    M    - integer mul/div
-   //  [8]     I    - RV32I
-   //  [2]     C    - Compressed extension
-   localparam MISA          = 12'h301;
-
-   // MVENDORID, MARCHID, MIMPID, MHARTID
-   localparam MVENDORID     = 12'hf11;
-   localparam MARCHID       = 12'hf12;
-   localparam MIMPID        = 12'hf13;
-   localparam MHARTID       = 12'hf14;
-
-
-   // ----------------------------------------------------------------------
-   // MSTATUS (RW)
-   // [12:11] MPP  : Prior priv level, always 2'b11, not flopped
-   // [7]     MPIE : Int enable previous [1]
-   // [3]     MIE  : Int enable          [0]
-   localparam MSTATUS       = 12'h300;
-
-
-   //When executing a MRET instruction, supposing MPP holds the value 3, MIE
-   //is set to MPIE; the privilege mode is changed to 3; MPIE is set to 1; and MPP is set to 3
-
-   assign dec_csr_wen_r_mod = dec_csr_wen_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign wr_mstatus_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSTATUS);
-
-   // set this even if we don't go to fwhalt due to debug halt. We committed the inst, so ...
-   assign set_mie_pmu_fw_halt = ~mpmc_b_ns[1] & fw_halt_req;
-
-   assign mstatus_ns[1:0] = ( ({2{~wr_mstatus_r & exc_or_int_valid_r}} & {mstatus[MSTATUS_MIE], 1'b0}) |
-                              ({2{ wr_mstatus_r & exc_or_int_valid_r}} & {dec_csr_wrdata_r[3], 1'b0}) |
-                              ({2{mret_r & ~exc_or_int_valid_r}} & {1'b1, mstatus[1]}) |
-                              ({2{set_mie_pmu_fw_halt}} & {mstatus[1], 1'b1}) |
-                              ({2{wr_mstatus_r & ~exc_or_int_valid_r}} & {dec_csr_wrdata_r[7], dec_csr_wrdata_r[3]}) |
-                              ({2{~wr_mstatus_r & ~exc_or_int_valid_r & ~mret_r & ~set_mie_pmu_fw_halt}} & mstatus[1:0]) );
-
-   // gate MIE if we are single stepping and DCSR[STEPIE] is off
-   assign mstatus_mie_ns = mstatus[MSTATUS_MIE] & (~dcsr_single_step_running_f | dcsr[DCSR_STEPIE]);
-
-   // ----------------------------------------------------------------------
-   // MTVEC (RW)
-   // [31:2] BASE : Trap vector base address
-   // [1] - Reserved, not implemented, reads zero
-   // [0]  MODE : 0 = Direct, 1 = Asyncs are vectored to BASE + (4 * CAUSE)
-   localparam MTVEC         = 12'h305;
-
-   assign wr_mtvec_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTVEC);
-   assign mtvec_ns[30:0] = {dec_csr_wrdata_r[31:2], dec_csr_wrdata_r[0]} ;
-   rvdffe #(31)  mtvec_ff (.*, .en(wr_mtvec_r), .din(mtvec_ns[30:0]), .dout(mtvec[30:0]));
-
-   // ----------------------------------------------------------------------
-   // MIP (RW)
-   //
-   // [30] MCEIP  : (RO) M-Mode Correctable Error interrupt pending
-   // [29] MITIP0 : (RO) M-Mode Internal Timer0 interrupt pending
-   // [28] MITIP1 : (RO) M-Mode Internal Timer1 interrupt pending
-   // [11] MEIP   : (RO) M-Mode external interrupt pending
-   // [7]  MTIP   : (RO) M-Mode timer interrupt pending
-   // [3]  MSIP   : (RO) M-Mode software interrupt pending
-   localparam MIP           = 12'h344;
-
-   assign ce_int = (mdccme_ce_req | miccme_ce_req | mice_ce_req);
-
-   assign mip_ns[5:0] = {ce_int, dec_timer_t0_pulse, dec_timer_t1_pulse, mexintpend, timer_int_sync, soft_int_sync};
-
-   // ----------------------------------------------------------------------
-   // MIE (RW)
-   // [30] MCEIE  : (RO) M-Mode Correctable Error interrupt enable
-   // [29] MITIE0 : (RO) M-Mode Internal Timer0 interrupt enable
-   // [28] MITIE1 : (RO) M-Mode Internal Timer1 interrupt enable
-   // [11] MEIE   : (RW) M-Mode external interrupt enable
-   // [7]  MTIE   : (RW) M-Mode timer interrupt enable
-   // [3]  MSIE   : (RW) M-Mode software interrupt enable
-   localparam MIE           = 12'h304;
-
-   assign wr_mie_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MIE);
-   assign mie_ns[5:0] = wr_mie_r ? {dec_csr_wrdata_r[30:28], dec_csr_wrdata_r[11], dec_csr_wrdata_r[7], dec_csr_wrdata_r[3]} : mie[5:0];
-   rvdff #(6)  mie_ff (.*, .clk(csr_wr_clk), .din(mie_ns[5:0]), .dout(mie[5:0]));
-
-
-   // ----------------------------------------------------------------------
-   // MCYCLEL (RW)
-   // [31:0] : Lower Cycle count
-
-   localparam MCYCLEL       = 12'hb00;
-
-   assign kill_ebreak_count_r = ebreak_to_debug_mode_r & dcsr[DCSR_STOPC];
-
-   assign wr_mcyclel_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCYCLEL);
-
-   assign mcyclel_cout_in = ~(kill_ebreak_count_r | (dec_tlu_dbg_halted & dcsr[DCSR_STOPC]) | dec_tlu_pmu_fw_halted | mcountinhibit[0]);
-
-   // split for power
-   assign {mcyclela_cout, mcyclel_inc[7:0]}  = mcyclel[7:0] +  {7'b0, 1'b1};
-   assign {mcyclel_cout,  mcyclel_inc[31:8]} = mcyclel[31:8] + {23'b0, mcyclela_cout};
-
-   assign mcyclel_ns[31:0] = wr_mcyclel_r ? dec_csr_wrdata_r[31:0] : mcyclel_inc[31:0];
-
-   rvdffe #(24) mcyclel_bff      (.*, .clk(free_l2clk), .en(wr_mcyclel_r | (mcyclela_cout & mcyclel_cout_in)),    .din(mcyclel_ns[31:8]), .dout(mcyclel[31:8]));
-   rvdffe #(8)  mcyclel_aff      (.*, .clk(free_l2clk), .en(wr_mcyclel_r | mcyclel_cout_in),  .din(mcyclel_ns[7:0]),  .dout(mcyclel[7:0]));
-
-   // ----------------------------------------------------------------------
-   // MCYCLEH (RW)
-   // [63:32] : Higher Cycle count
-   // Chained with mcyclel. Note: mcyclel overflow due to a mcycleh write gets ignored.
-
-   localparam MCYCLEH       = 12'hb80;
-
-   assign wr_mcycleh_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCYCLEH);
-
-   assign mcycleh_inc[31:0] = mcycleh[31:0] + {31'b0, mcyclel_cout_f};
-   assign mcycleh_ns[31:0]  = wr_mcycleh_r ? dec_csr_wrdata_r[31:0] : mcycleh_inc[31:0];
-
-   rvdffe #(32)  mcycleh_ff (.*, .clk(free_l2clk), .en(wr_mcycleh_r | mcyclel_cout_f), .din(mcycleh_ns[31:0]), .dout(mcycleh[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MINSTRETL (RW)
-   // [31:0] : Lower Instruction retired count
-   // From the spec "Some CSRs, such as the instructions retired counter, instret, may be modified as side effects
-   // of instruction execution. In these cases, if a CSR access instruction reads a CSR, it reads the
-   // value prior to the execution of the instruction. If a CSR access instruction writes a CSR, the
-   // update occurs after the execution of the instruction. In particular, a value written to instret by
-   // one instruction will be the value read by the following instruction (i.e., the increment of instret
-   // caused by the first instruction retiring happens before the write of the new value)."
-   localparam MINSTRETL     = 12'hb02;
-
-   assign i0_valid_no_ebreak_ecall_r = dec_tlu_i0_valid_r & ~(ebreak_r | ecall_r | ebreak_to_debug_mode_r | illegal_r | mcountinhibit[2]);
-
-   assign wr_minstretl_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MINSTRETL);
-
-   assign {minstretl_couta, minstretl_inc[7:0]} = minstretl[7:0] + {7'b0,1'b1};
-   assign {minstretl_cout, minstretl_inc[31:8]} = minstretl[31:8] + {23'b0, minstretl_couta};
-
-   assign minstret_enable = (i0_valid_no_ebreak_ecall_r & tlu_i0_commit_cmt) | wr_minstretl_r;
-
-   assign minstretl_cout_ns = minstretl_cout & ~wr_minstreth_r & i0_valid_no_ebreak_ecall_r & ~dec_tlu_dbg_halted;
-
-   assign minstretl_ns[31:0] = wr_minstretl_r ? dec_csr_wrdata_r[31:0] : minstretl_inc[31:0];
-   rvdffe #(24)  minstretl_bff (.*, .en(wr_minstretl_r | (minstretl_couta & minstret_enable)),
-                                .din(minstretl_ns[31:8]), .dout(minstretl[31:8]));
-   rvdffe #(8)   minstretl_aff (.*, .en(minstret_enable),
-                                .din(minstretl_ns[7:0]),  .dout(minstretl[7:0]));
-
-
-   assign minstretl_read[31:0] = minstretl[31:0];
-   // ----------------------------------------------------------------------
-   // MINSTRETH (RW)
-   // [63:32] : Higher Instret count
-   // Chained with minstretl. Note: minstretl overflow due to a minstreth write gets ignored.
-
-   localparam MINSTRETH     = 12'hb82;
-
-   assign wr_minstreth_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MINSTRETH);
-
-   assign minstreth_inc[31:0] = minstreth[31:0] + {31'b0, minstretl_cout_f};
-   assign minstreth_ns[31:0]  = wr_minstreth_r ? dec_csr_wrdata_r[31:0] : minstreth_inc[31:0];
-   rvdffe #(32)  minstreth_ff (.*, .en((minstret_enable_f & minstretl_cout_f) | wr_minstreth_r), .din(minstreth_ns[31:0]), .dout(minstreth[31:0]));
-
-   assign minstreth_read[31:0] = minstreth_inc[31:0];
-
-   // ----------------------------------------------------------------------
-   // MSCRATCH (RW)
-   // [31:0] : Scratch register
-   localparam MSCRATCH      = 12'h340;
-
-   assign wr_mscratch_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSCRATCH);
-
-   rvdffe #(32)  mscratch_ff (.*, .en(wr_mscratch_r), .din(dec_csr_wrdata_r[31:0]), .dout(mscratch[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MEPC (RW)
-   // [31:1] : Exception PC
-   localparam MEPC          = 12'h341;
-
-   // NPC
-
-   assign sel_exu_npc_r = ~dec_tlu_dbg_halted & ~tlu_flush_lower_r_d1 & dec_tlu_i0_valid_r;
-   assign sel_flush_npc_r = ~dec_tlu_dbg_halted & tlu_flush_lower_r_d1 & ~dec_tlu_flush_noredir_r_d1;
-   assign sel_hold_npc_r = ~sel_exu_npc_r & ~sel_flush_npc_r;
-
-   assign npc_r[31:1] =  ( ({31{sel_exu_npc_r}} & exu_npc_r[31:1]) |
-                           ({31{~mpc_reset_run_req & reset_delayed}} & rst_vec[31:1]) | // init to reset vector for mpc halt on reset case
-                           ({31{(sel_flush_npc_r)}} & tlu_flush_path_r_d1[31:1]) |
-                           ({31{(sel_hold_npc_r)}} & npc_r_d1[31:1]) );
-
-   rvdffpcie #(31)  npwbc_ff (.*, .en(sel_exu_npc_r | sel_flush_npc_r | reset_delayed), .din(npc_r[31:1]), .dout(npc_r_d1[31:1]));
-
-   // PC has to be captured for exceptions and interrupts. For MRET, we could execute it and then take an
-   // interrupt before the next instruction.
-   assign pc0_valid_r = ~dec_tlu_dbg_halted & dec_tlu_i0_valid_r;
-
-   assign pc_r[31:1]  = ( ({31{ pc0_valid_r}} & dec_tlu_i0_pc_r[31:1]) |
-                          ({31{~pc0_valid_r}} & pc_r_d1[31:1]));
-
-   rvdffpcie #(31)  pwbc_ff (.*, .en(pc0_valid_r), .din(pc_r[31:1]), .dout(pc_r_d1[31:1]));
-
-   assign wr_mepc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEPC);
-
-   assign mepc_ns[31:1] = ( ({31{i0_exception_valid_r | lsu_exc_valid_r | mepc_trigger_hit_sel_pc_r}} & pc_r[31:1]) |
-                            ({31{interrupt_valid_r}} & npc_r[31:1]) |
-                            ({31{wr_mepc_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[31:1]) |
-                            ({31{~wr_mepc_r & ~exc_or_int_valid_r}} & mepc[31:1]) );
-
-
-   rvdffe #(31)  mepc_ff (.*, .en(i0_exception_valid_r | lsu_exc_valid_r | mepc_trigger_hit_sel_pc_r | interrupt_valid_r | wr_mepc_r), .din(mepc_ns[31:1]), .dout(mepc[31:1]));
-
-   // ----------------------------------------------------------------------
-   // MCAUSE (RW)
-   // [31:0] : Exception Cause
-   localparam MCAUSE        = 12'h342;
-
-   assign wr_mcause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCAUSE);
-   assign mcause_sel_nmi_store = exc_or_int_valid_r & take_nmi & nmi_lsu_store_type;
-   assign mcause_sel_nmi_load = exc_or_int_valid_r & take_nmi & nmi_lsu_load_type;
-   assign mcause_sel_nmi_ext = exc_or_int_valid_r & take_nmi & take_ext_int_start_d3 & |lsu_fir_error[1:0] & ~nmi_int_detected_f;
-   // FIR value decoder
-   // 0 –no error
-   // 1 –uncorrectable ecc  => f000_1000
-   // 2 –dccm region access error => f000_1001
-   // 3 –non dccm region access error => f000_1002
-   assign mcause_fir_error_type[1:0] = {&lsu_fir_error[1:0], lsu_fir_error[1] & ~lsu_fir_error[0]};
-
-   assign mcause_ns[31:0] = ( ({32{mcause_sel_nmi_store}} & {32'hf000_0000}) |
-                              ({32{mcause_sel_nmi_load}} & {32'hf000_0001}) |
-                              ({32{mcause_sel_nmi_ext}} & {28'hf000_100, 2'b0, mcause_fir_error_type[1:0]}) |
-                              ({32{exc_or_int_valid_r & ~take_nmi}} & {interrupt_valid_r, 26'b0, exc_cause_r[4:0]}) |
-                              ({32{wr_mcause_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[31:0]) |
-                              ({32{~wr_mcause_r & ~exc_or_int_valid_r}} & mcause[31:0]) );
-
-   rvdffe #(32)  mcause_ff (.*, .en(exc_or_int_valid_r | wr_mcause_r), .din(mcause_ns[31:0]), .dout(mcause[31:0]));
-   // ----------------------------------------------------------------------
-   // MSCAUSE (RW)
-   // [2:0] : Secondary exception Cause
-   localparam MSCAUSE       = 12'h7ff;
-
-   assign wr_mscause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSCAUSE);
-
-   assign ifu_mscause[3:0]  =  (dec_tlu_packet_r.icaf_type[1:0] == 2'b00) ? 4'b1001 :
-                               {2'b00 , dec_tlu_packet_r.icaf_type[1:0]} ;
-
-   assign mscause_type[3:0] = ( ({4{lsu_i0_exc_r}} & lsu_error_pkt_r.mscause[3:0]) |
-                                ({4{i0_trigger_hit_r}} & 4'b0001) |
-                                ({4{ebreak_r}} & 4'b0010) |
-                                ({4{inst_acc_r}} & ifu_mscause[3:0])
-                                );
-
-   assign mscause_ns[3:0] = ( ({4{exc_or_int_valid_r}} & mscause_type[3:0]) |
-                              ({4{ wr_mscause_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[3:0]) |
-                              ({4{~wr_mscause_r & ~exc_or_int_valid_r}} & mscause[3:0])
-                             );
-
-   rvdff #(4)  mscause_ff (.*, .clk(e4e5_int_clk), .din(mscause_ns[3:0]), .dout(mscause[3:0]));
-   // ----------------------------------------------------------------------
-   // MTVAL (RW)
-   // [31:0] : Exception address if relevant
-   localparam MTVAL         = 12'h343;
-
-   assign wr_mtval_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTVAL);
-   assign mtval_capture_pc_r = exc_or_int_valid_r & (ebreak_r | (inst_acc_r & ~inst_acc_second_r) | mepc_trigger_hit_sel_pc_r) & ~take_nmi;
-   assign mtval_capture_pc_plus2_r = exc_or_int_valid_r & (inst_acc_r & inst_acc_second_r) & ~take_nmi;
-   assign mtval_capture_inst_r = exc_or_int_valid_r & illegal_r & ~take_nmi;
-   assign mtval_capture_lsu_r = exc_or_int_valid_r & lsu_exc_valid_r & ~take_nmi;
-   assign mtval_clear_r = exc_or_int_valid_r & ~mtval_capture_pc_r & ~mtval_capture_inst_r & ~mtval_capture_lsu_r & ~mepc_trigger_hit_sel_pc_r;
-
-
-   assign mtval_ns[31:0] = (({32{mtval_capture_pc_r}} & {pc_r[31:1], 1'b0}) |
-                            ({32{mtval_capture_pc_plus2_r}} & {pc_r[31:1] + 31'b1, 1'b0}) |
-                            ({32{mtval_capture_inst_r}} & dec_illegal_inst[31:0]) |
-                            ({32{mtval_capture_lsu_r}} & lsu_error_pkt_addr_r[31:0]) |
-                            ({32{wr_mtval_r & ~interrupt_valid_r}} & dec_csr_wrdata_r[31:0]) |
-                            ({32{~take_nmi & ~wr_mtval_r & ~mtval_capture_pc_r & ~mtval_capture_inst_r & ~mtval_clear_r & ~mtval_capture_lsu_r}} & mtval[31:0]) );
-
-
-   rvdffe #(32)  mtval_ff (.*, .en(tlu_flush_lower_r | wr_mtval_r), .din(mtval_ns[31:0]), .dout(mtval[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MCGC (RW) Clock gating control
-   // [31:10]: Reserved, reads 0x0
-   // [9]    : picio_clk_override
-   // [7]    : dec_clk_override
-   // [6]    : Unused
-   // [5]    : ifu_clk_override
-   // [4]    : lsu_clk_override
-   // [3]    : bus_clk_override
-   // [2]    : pic_clk_override
-   // [1]    : dccm_clk_override
-   // [0]    : icm_clk_override
-   //
-   localparam MCGC          = 12'h7f8;
-   assign wr_mcgc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCGC);
-
-   assign mcgc_ns[9:0] = wr_mcgc_r ? {~dec_csr_wrdata_r[9], dec_csr_wrdata_r[8:0]} : mcgc_int[9:0];
-   rvdffe #(10)  mcgc_ff (.*, .en(wr_mcgc_r), .din(mcgc_ns[9:0]), .dout(mcgc_int[9:0]));
-
-   assign mcgc[9:0] = {~mcgc_int[9], mcgc_int[8:0]};
-
-   assign dec_tlu_picio_clk_override= mcgc[9];
-   assign dec_tlu_misc_clk_override = mcgc[8];
-   assign dec_tlu_dec_clk_override  = mcgc[7];
-   //sign dec_tlu_exu_clk_override  = mcgc[6];
-   assign dec_tlu_ifu_clk_override  = mcgc[5];
-   assign dec_tlu_lsu_clk_override  = mcgc[4];
-   assign dec_tlu_bus_clk_override  = mcgc[3];
-   assign dec_tlu_pic_clk_override  = mcgc[2];
-   assign dec_tlu_dccm_clk_override = mcgc[1];
-   assign dec_tlu_icm_clk_override  = mcgc[0];
-
-   // ----------------------------------------------------------------------
-   // MFDC (RW) Feature Disable Control
-   // [31:19] : Reserved, reads 0x0
-   // [18:16] : DMA QoS Prty
-   // [15:13] : Reserved, reads 0x0
-   // [12]   : Disable trace
-   // [11]   : Disable external load forwarding
-   // [10]   : Disable dual issue
-   // [9]    : Disable pic multiple ints
-   // [8]    : Disable core ecc
-   // [7]    : Disable secondary alu?s
-   // [6]    : Unused, 0x0
-   // [5]    : Disable non-blocking loads/divides
-   // [4]    : Disable fast divide
-   // [3]    : Disable branch prediction and return stack
-   // [2]    : Disable write buffer coalescing
-   // [1]    : Disable load misses that bypass the write buffer
-   // [0]    : Disable pipelining - Enable single instruction execution
-   //
-   localparam MFDC          = 12'h7f9;
-
-   assign wr_mfdc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDC);
-
-   rvdffe #(16)  mfdc_ff (.*, .en(wr_mfdc_r), .din({mfdc_ns[15:0]}), .dout(mfdc_int[15:0]));
-
-   // flip poweron value of bit 6 for AXI build
-   if(pt.BUILD_AXI4==1) begin : axi4
-      // flip poweron valid of bit 12
-         assign mfdc_ns[15:0] = {~dec_csr_wrdata_r[18:16], dec_csr_wrdata_r[12], dec_csr_wrdata_r[11:7], ~dec_csr_wrdata_r[6], dec_csr_wrdata_r[5:0]};
-         assign mfdc[18:0] = {~mfdc_int[15:13], 3'b0, mfdc_int[12], mfdc_int[11:7], ~mfdc_int[6], mfdc_int[5:0]};
-   end
-   else begin
-      // flip poweron valid of bit 12
-         assign mfdc_ns[15:0] = {~dec_csr_wrdata_r[18:16],dec_csr_wrdata_r[12:0]};
-         assign mfdc[18:0] = {~mfdc_int[15:13], 3'b0, mfdc_int[12:0]};
-   end
-
-
-   assign dec_tlu_dma_qos_prty[2:0] = mfdc[18:16];
-   assign dec_tlu_trace_disable = mfdc[12];
-   assign dec_tlu_external_ldfwd_disable = mfdc[11];
-   assign dec_tlu_core_ecc_disable = 1'b1;//mfdc[8];
-   assign dec_tlu_sideeffect_posted_disable = mfdc[6];
-   assign dec_tlu_bpred_disable = mfdc[3];
-   assign dec_tlu_wb_coalescing_disable = mfdc[2];
-   assign dec_tlu_pipelining_disable = mfdc[0];
-
-   // ----------------------------------------------------------------------
-   // MCPC (RW) Pause counter
-   // [31:0] : Reads 0x0, decs in the wb register in decode_ctl
-
-   assign dec_tlu_wr_pause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCPC) & ~interrupt_valid_r & ~take_ext_int_start;
-
-   // ----------------------------------------------------------------------
-   // MRAC (RW)
-   // [31:0] : Region Access Control Register, 16 regions, {side_effect, cachable} pairs
-   localparam MRAC          = 12'h7c0;
-
-   assign wr_mrac_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MRAC);
-
-   // prevent pairs of 0x11, side_effect and cacheable
-   assign mrac_in[31:0] = {dec_csr_wrdata_r[31], dec_csr_wrdata_r[30] & ~dec_csr_wrdata_r[31],
-                           dec_csr_wrdata_r[29], dec_csr_wrdata_r[28] & ~dec_csr_wrdata_r[29],
-                           dec_csr_wrdata_r[27], dec_csr_wrdata_r[26] & ~dec_csr_wrdata_r[27],
-                           dec_csr_wrdata_r[25], dec_csr_wrdata_r[24] & ~dec_csr_wrdata_r[25],
-                           dec_csr_wrdata_r[23], dec_csr_wrdata_r[22] & ~dec_csr_wrdata_r[23],
-                           dec_csr_wrdata_r[21], dec_csr_wrdata_r[20] & ~dec_csr_wrdata_r[21],
-                           dec_csr_wrdata_r[19], dec_csr_wrdata_r[18] & ~dec_csr_wrdata_r[19],
-                           dec_csr_wrdata_r[17], dec_csr_wrdata_r[16] & ~dec_csr_wrdata_r[17],
-                           dec_csr_wrdata_r[15], dec_csr_wrdata_r[14] & ~dec_csr_wrdata_r[15],
-                           dec_csr_wrdata_r[13], dec_csr_wrdata_r[12] & ~dec_csr_wrdata_r[13],
-                           dec_csr_wrdata_r[11], dec_csr_wrdata_r[10] & ~dec_csr_wrdata_r[11],
-                           dec_csr_wrdata_r[9], dec_csr_wrdata_r[8] & ~dec_csr_wrdata_r[9],
-                           dec_csr_wrdata_r[7], dec_csr_wrdata_r[6] & ~dec_csr_wrdata_r[7],
-                           dec_csr_wrdata_r[5], dec_csr_wrdata_r[4] & ~dec_csr_wrdata_r[5],
-                           dec_csr_wrdata_r[3], dec_csr_wrdata_r[2] & ~dec_csr_wrdata_r[3],
-                           dec_csr_wrdata_r[1], dec_csr_wrdata_r[0] & ~dec_csr_wrdata_r[1]};
-
-   rvdffe #(32)  mrac_ff (.*, .en(wr_mrac_r), .din(mrac_in[31:0]), .dout(mrac[31:0]));
-
-   // drive to LSU/IFU
-   assign dec_tlu_mrac_ff[31:0] = mrac[31:0];
-
-   // ----------------------------------------------------------------------
-   // MDEAU (WAR0)
-   // [31:0] : Dbus Error Address Unlock register
-   //
-   localparam MDEAU         = 12'hbc0;
-
-   assign wr_mdeau_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MDEAU);
-
-
-   // ----------------------------------------------------------------------
-   // MDSEAC (R)
-   // [31:0] : Dbus Store Error Address Capture register
-   //
-   localparam MDSEAC        = 12'hfc0;
-
-   // only capture error bus if the MDSEAC reg is not locked
-   assign mdseac_locked_ns = mdseac_en | (mdseac_locked_f & ~wr_mdeau_r);
-
-   assign mdseac_en = (lsu_imprecise_error_store_any | lsu_imprecise_error_load_any) & ~nmi_int_detected_f & ~mdseac_locked_f;
-
-   rvdffe #(32)  mdseac_ff (.*, .en(mdseac_en), .din(lsu_imprecise_error_addr_any[31:0]), .dout(mdseac[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MPMC (R0W1)
-   // [0] : FW halt
-   // [1] : Set MSTATUS[MIE] on halt
-
-   localparam MPMC          = 12'h7c6;
-
-   assign wr_mpmc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MPMC);
-
-   // allow the cycle of the dbg halt flush that contains the wr_mpmc_r to
-   // set the mstatus bit potentially, use delayed version of internal dbg halt.
-   assign fw_halt_req = wr_mpmc_r & dec_csr_wrdata_r[0] & ~internal_dbg_halt_mode_f2 & ~ext_int_freeze_d1;
-
-   assign fw_halted_ns = (fw_halt_req | fw_halted) & ~set_mie_pmu_fw_halt;
-   assign mpmc_b_ns[1] = wr_mpmc_r ? ~dec_csr_wrdata_r[1] : ~mpmc[1];
-   rvdff #(1)  mpmc_ff (.*, .clk(csr_wr_clk), .din(mpmc_b_ns[1]), .dout(mpmc_b[1]));
-   assign mpmc[1] = ~mpmc_b[1];
-
-   // ----------------------------------------------------------------------
-   // MICECT (I-Cache error counter/threshold)
-   // [31:27] : Icache parity error threshold
-   // [26:0]  : Icache parity error count
-   localparam MICECT        = 12'h7f0;
-
-   assign csr_sat[31:27] = (dec_csr_wrdata_r[31:27] > 5'd26) ? 5'd26 : dec_csr_wrdata_r[31:27];
-
-   assign wr_micect_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MICECT);
-   assign micect_inc[26:0] = micect[26:0] + {26'b0, ic_perr_r};
-   assign micect_ns =  wr_micect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {micect[31:27], micect_inc[26:0]};
-
-   rvdffe #(32)  micect_ff (.*, .en(wr_micect_r | ic_perr_r), .din(micect_ns[31:0]), .dout(micect[31:0]));
-
-   assign mice_ce_req = |({32'hffffffff << micect[31:27]} & {5'b0, micect[26:0]});
-
-   // ----------------------------------------------------------------------
-   // MICCMECT (ICCM error counter/threshold)
-   // [31:27] : ICCM parity error threshold
-   // [26:0]  : ICCM parity error count
-   localparam MICCMECT      = 12'h7f1;
-
-   assign wr_miccmect_r     = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MICCMECT);
-   assign miccmect_inc[26:0] = miccmect[26:0] + {26'b0, iccm_sbecc_r | iccm_dma_sb_error};
-   assign miccmect_ns        = wr_miccmect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {miccmect[31:27], miccmect_inc[26:0]};
-
-   rvdffe #(32)  miccmect_ff (.*, .clk(free_l2clk), .en(wr_miccmect_r | iccm_sbecc_r | iccm_dma_sb_error), .din(miccmect_ns[31:0]), .dout(miccmect[31:0]));
-
-   assign miccme_ce_req = |({32'hffffffff << miccmect[31:27]} & {5'b0, miccmect[26:0]});
-
-   // ----------------------------------------------------------------------
-   // MDCCMECT (DCCM error counter/threshold)
-   // [31:27] : DCCM parity error threshold
-   // [26:0]  : DCCM parity error count
-   localparam MDCCMECT      = 12'h7f2;
-
-   assign wr_mdccmect_r     = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MDCCMECT);
-   assign mdccmect_inc[26:0] = mdccmect[26:0] + {26'b0, lsu_single_ecc_error_r_d1};
-   assign mdccmect_ns        = wr_mdccmect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {mdccmect[31:27], mdccmect_inc[26:0]};
-
-   rvdffe #(32)  mdccmect_ff (.*, .clk(free_l2clk), .en(wr_mdccmect_r | lsu_single_ecc_error_r_d1), .din(mdccmect_ns[31:0]), .dout(mdccmect[31:0]));
-
-   assign mdccme_ce_req = |({32'hffffffff << mdccmect[31:27]} & {5'b0, mdccmect[26:0]});
-
-
-   // ----------------------------------------------------------------------
-   // MFDHT (Force Debug Halt Threshold)
-   // [5:1] : Halt timeout threshold (power of 2)
-   //   [0] : Halt timeout enabled
-   localparam MFDHT         = 12'h7ce;
-
-   assign wr_mfdht_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDHT);
-
-   assign mfdht_ns[5:0] = wr_mfdht_r ? dec_csr_wrdata_r[5:0] : mfdht[5:0];
-
-   rvdffs #(6)  mfdht_ff (.*, .clk(csr_wr_clk), .en(wr_mfdht_r), .din(mfdht_ns[5:0]), .dout(mfdht[5:0]));
-
-    // ----------------------------------------------------------------------
-   // MFDHS(RW)
-   // [1] : LSU operation pending when debug halt threshold reached
-   // [0] : IFU operation pending when debug halt threshold reached
-
-   localparam MFDHS         = 12'h7cf;
-
-   assign wr_mfdhs_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDHS);
-
-   assign mfdhs_ns[1:0] = wr_mfdhs_r ? dec_csr_wrdata_r[1:0] : ((dbg_tlu_halted & ~dbg_tlu_halted_f) ? {~lsu_idle_any_f, ~ifu_miss_state_idle_f} : mfdhs[1:0]);
-
-   rvdffs #(2)  mfdhs_ff (.*, .clk(free_clk), .en(wr_mfdhs_r | dbg_tlu_halted), .din(mfdhs_ns[1:0]), .dout(mfdhs[1:0]));
-
-   assign force_halt_ctr[31:0] = debug_halt_req_f ? (force_halt_ctr_f[31:0] + 32'b1) : (dbg_tlu_halted_f ? 32'b0 : force_halt_ctr_f[31:0]);
-
-   rvdffe #(32)  forcehaltctr_ff (.*, .en(mfdht[0]), .din(force_halt_ctr[31:0]), .dout(force_halt_ctr_f[31:0]));
-
-   assign force_halt = mfdht[0] & |(force_halt_ctr_f[31:0] & (32'hffffffff << mfdht[5:1]));
-
-
-   // ----------------------------------------------------------------------
-   // MEIVT (External Interrupt Vector Table (R/W))
-   // [31:10]: Base address (R/W)
-   // [9:0]  : Reserved, reads 0x0
-   localparam MEIVT         = 12'hbc8;
-
-   assign wr_meivt_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEIVT);
-
-   rvdffe #(22)  meivt_ff (.*, .en(wr_meivt_r), .din(dec_csr_wrdata_r[31:10]), .dout(meivt[31:10]));
-
-
-   // ----------------------------------------------------------------------
-   // MEIHAP (External Interrupt Handler Access Pointer (R))
-   // [31:10]: Base address (R/W)
-   // [9:2]  : ClaimID (R)
-   // [1:0]  : Reserved, 0x0
-   localparam MEIHAP        = 12'hfc8;
-
-   assign wr_meihap_r = wr_meicpct_r;
-
-   rvdffe #(8)  meihap_ff (.*, .en(wr_meihap_r), .din(pic_claimid[7:0]), .dout(meihap[9:2]));
-
-   assign dec_tlu_meihap[31:2] = {meivt[31:10], meihap[9:2]};
-   // ----------------------------------------------------------------------
-   // MEICURPL (R/W)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : CURRPRI - Priority level of current interrupt service routine (R/W)
-   localparam MEICURPL      = 12'hbcc;
-
-   assign wr_meicurpl_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICURPL);
-   assign meicurpl_ns[3:0] = wr_meicurpl_r ? dec_csr_wrdata_r[3:0] : meicurpl[3:0];
-
-   rvdff #(4)  meicurpl_ff (.*, .clk(csr_wr_clk), .din(meicurpl_ns[3:0]), .dout(meicurpl[3:0]));
-
-   // PIC needs this reg
-   assign dec_tlu_meicurpl[3:0] = meicurpl[3:0];
-
-
-   // ----------------------------------------------------------------------
-   // MEICIDPL (R/W)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : External Interrupt Claim ID's Priority Level Register
-   localparam MEICIDPL      = 12'hbcb;
-
-   assign wr_meicidpl_r = (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICIDPL)) | take_ext_int_start;
-
-   assign meicidpl_ns[3:0] = wr_meicpct_r ? pic_pl[3:0] : (wr_meicidpl_r ? dec_csr_wrdata_r[3:0] : meicidpl[3:0]);
-
-
-   // ----------------------------------------------------------------------
-   // MEICPCT (Capture CLAIMID in MEIHAP and PL in MEICIDPL
-   // [31:1] : Reserved (read 0x0)
-   // [0]    : Capture (W1, Read 0)
-   localparam MEICPCT       = 12'hbca;
-
-   assign wr_meicpct_r = (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICPCT)) | take_ext_int_start;
-
-   // ----------------------------------------------------------------------
-   // MEIPT (External Interrupt Priority Threshold)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : PRITHRESH
-   localparam MEIPT         = 12'hbc9;
-
-   assign wr_meipt_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEIPT);
-   assign meipt_ns[3:0] = wr_meipt_r ? dec_csr_wrdata_r[3:0] : meipt[3:0];
-
-   rvdff #(4)  meipt_ff (.*, .clk(csr_wr_clk), .din(meipt_ns[3:0]), .dout(meipt[3:0]));
-
-   // to PIC
-   assign dec_tlu_meipt[3:0] = meipt[3:0];
-   // ----------------------------------------------------------------------
-   // DCSR (R/W) (Only accessible in debug mode)
-   // [31:28] : xdebugver (hard coded to 0x4) RO
-   // [27:16] : 0x0, reserved
-   // [15]    : ebreakm
-   // [14]    : 0x0, reserved
-   // [13]    : ebreaks (0x0 for this core)
-   // [12]    : ebreaku (0x0 for this core)
-   // [11]    : stepie
-   // [10]    : stopcount
-   // [9]     : 0x0 //stoptime
-   // [8:6]   : cause (RO)
-   // [5:4]   : 0x0, reserved
-   // [3]     : nmip
-   // [2]     : step
-   // [1:0]   : prv (0x3 for this core)
-   //
-   localparam DCSR          = 12'h7b0;
-
-   // RV has clarified that 'priority 4' in the spec means top priority.
-   // 4. single step. 3. Debugger request. 2. Ebreak. 1. Trigger.
-
-   // RV debug spec indicates a cause priority change for trigger hits during single step.
-   assign trigger_hit_for_dscr_cause_r_d1 = trigger_hit_dmode_r_d1 | (trigger_hit_r_d1 & dcsr_single_step_done_f);
-
-   assign dcsr_cause[8:6] = ( ({3{dcsr_single_step_done_f & ~ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1 & ~debug_halt_req}} & 3'b100) |
-                              ({3{debug_halt_req & ~ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1}} &  3'b011) |
-                              ({3{ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1}} &  3'b001) |
-                              ({3{trigger_hit_for_dscr_cause_r_d1}} & 3'b010));
-
-   assign wr_dcsr_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DCSR);
-
-
-
-  // Multiple halt enter requests can happen before we are halted.
-  // We have to continue to upgrade based on dcsr_cause priority but we can't downgrade.
-   assign dcsr_cause_upgradeable = internal_dbg_halt_mode_f & (dcsr[8:6] == 3'b011);
-   assign enter_debug_halt_req_le = enter_debug_halt_req & (~dbg_tlu_halted | dcsr_cause_upgradeable);
-
-   assign nmi_in_debug_mode = nmi_int_detected_f & internal_dbg_halt_mode_f;
-   assign dcsr_ns[15:2] = enter_debug_halt_req_le ? {dcsr[15:9], dcsr_cause[8:6], dcsr[5:2]} :
-                          (wr_dcsr_r ? {dec_csr_wrdata_r[15], 3'b0, dec_csr_wrdata_r[11:10], 1'b0, dcsr[8:6], 2'b00, nmi_in_debug_mode | dcsr[3], dec_csr_wrdata_r[2]} :
-                           {dcsr[15:4], nmi_in_debug_mode, dcsr[2]});
-
-   rvdffe #(14)  dcsr_ff (.*, .clk(free_l2clk), .en(enter_debug_halt_req_le | wr_dcsr_r | internal_dbg_halt_mode | take_nmi), .din(dcsr_ns[15:2]), .dout(dcsr[15:2]));
-
-   // ----------------------------------------------------------------------
-   // DPC (R/W) (Only accessible in debug mode)
-   // [31:0] : Debug PC
-   localparam DPC           = 12'h7b1;
-
-   assign wr_dpc_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DPC);
-   assign dpc_capture_npc = dbg_tlu_halted & ~dbg_tlu_halted_f & ~request_debug_mode_done;
-   assign dpc_capture_pc = request_debug_mode_r;
-
-   assign dpc_ns[31:1] = ( ({31{~dpc_capture_pc & ~dpc_capture_npc & wr_dpc_r}} & dec_csr_wrdata_r[31:1]) |
-                           ({31{dpc_capture_pc}} & pc_r[31:1]) |
-                           ({31{~dpc_capture_pc & dpc_capture_npc}} & npc_r[31:1]) );
-
-   rvdffe #(31)  dpc_ff (.*, .en(wr_dpc_r | dpc_capture_pc | dpc_capture_npc), .din(dpc_ns[31:1]), .dout(dpc[31:1]));
-
-   // ----------------------------------------------------------------------
-   // DICAWICS (R/W) (Only accessible in debug mode)
-   // [31:25] : Reserved
-   // [24]    : Array select, 0 is data, 1 is tag
-   // [23:22] : Reserved
-   // [21:20] : Way select
-   // [19:17] : Reserved
-   // [16:3]  : Index
-   // [2:0]   : Reserved
-   localparam DICAWICS      = 12'h7c8;
-
-   assign dicawics_ns[16:0] = {dec_csr_wrdata_r[24], dec_csr_wrdata_r[21:20], dec_csr_wrdata_r[16:3]};
-   assign wr_dicawics_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAWICS);
-
-   rvdffe #(17)  dicawics_ff (.*, .en(wr_dicawics_r), .din(dicawics_ns[16:0]), .dout(dicawics[16:0]));
-
-   // ----------------------------------------------------------------------
-   // DICAD0 (R/W) (Only accessible in debug mode)
-   //
-   // If dicawics[array] is 0
-   // [31:0]  : inst data
-   //
-   // If dicawics[array] is 1
-   // [31:16] : Tag
-   // [15:7]  : Reserved
-   // [6:4]   : LRU
-   // [3:1]   : Reserved
-   // [0]     : Valid
-   localparam DICAD0        = 12'h7c9;
-
-   assign dicad0_ns[31:0] = wr_dicad0_r ? dec_csr_wrdata_r[31:0] : ifu_ic_debug_rd_data[31:0];
-
-   assign wr_dicad0_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD0);
-
-   rvdffe #(32)  dicad0_ff (.*, .en(wr_dicad0_r | ifu_ic_debug_rd_data_valid), .din(dicad0_ns[31:0]), .dout(dicad0[31:0]));
-
-   // ----------------------------------------------------------------------
-   // DICAD0H (R/W) (Only accessible in debug mode)
-   //
-   // If dicawics[array] is 0
-   // [63:32]  : inst data
-   //
-   localparam DICAD0H       = 12'h7cc;
-
-   assign dicad0h_ns[31:0] = wr_dicad0h_r ? dec_csr_wrdata_r[31:0] : ifu_ic_debug_rd_data[63:32];
-
-   assign wr_dicad0h_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD0H);
-
-   rvdffe #(32)  dicad0h_ff (.*, .en(wr_dicad0h_r | ifu_ic_debug_rd_data_valid), .din(dicad0h_ns[31:0]), .dout(dicad0h[31:0]));
-
-
-if (pt.ICACHE_ECC == 1) begin
-   // ----------------------------------------------------------------------
-   // DICAD1 (R/W) (Only accessible in debug mode)
-   // [6:0]     : ECC
-   localparam DICAD1        = 12'h7ca;
-
-   assign dicad1_ns[6:0] = wr_dicad1_r ? dec_csr_wrdata_r[6:0] : ifu_ic_debug_rd_data[70:64];
-
-   assign wr_dicad1_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD1);
-
-   rvdffe #(.WIDTH(7), .OVERRIDE(1))  dicad1_ff (.*, .en(wr_dicad1_r | ifu_ic_debug_rd_data_valid), .din(dicad1_ns[6:0]), .dout(dicad1_raw[6:0]));
-
-   assign dicad1[31:0] = {25'b0, dicad1_raw[6:0]};
-
-end
-else begin
-   // ----------------------------------------------------------------------
-   // DICAD1 (R/W) (Only accessible in debug mode)
-   // [3:0]     : Parity
-   localparam DICAD1        = 12'h7ca;
-
-   assign dicad1_ns[3:0] = wr_dicad1_r ? dec_csr_wrdata_r[3:0] : ifu_ic_debug_rd_data[67:64];
-
-   assign wr_dicad1_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD1);
-
-   rvdffs #(4)  dicad1_ff (.*, .clk(free_clk), .en(wr_dicad1_r | ifu_ic_debug_rd_data_valid), .din(dicad1_ns[3:0]), .dout(dicad1_raw[3:0]));
-
-   assign dicad1[31:0] = {28'b0, dicad1_raw[3:0]};
-end
-   // ----------------------------------------------------------------------
-   // DICAGO (R/W) (Only accessible in debug mode)
-   // [0]     : Go
-   localparam DICAGO        = 12'h7cb;
-
-if (pt.ICACHE_ECC == 1)
-   assign dec_tlu_ic_diag_pkt.icache_wrdata[70:0] = {      dicad1[6:0], dicad0h[31:0], dicad0[31:0]};
-else
-   assign dec_tlu_ic_diag_pkt.icache_wrdata[70:0] = {3'b0, dicad1[3:0], dicad0h[31:0], dicad0[31:0]};
-
-
-   assign dec_tlu_ic_diag_pkt.icache_dicawics[16:0] = dicawics[16:0];
-
-   assign icache_rd_valid = allow_dbg_halt_csr_write & dec_csr_any_unq_d & dec_i0_decode_d & ~dec_csr_wen_unq_d & (dec_csr_rdaddr_d[11:0] == DICAGO);
-   assign icache_wr_valid = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAGO);
-
-
-   assign dec_tlu_ic_diag_pkt.icache_rd_valid = icache_rd_valid_f;
-   assign dec_tlu_ic_diag_pkt.icache_wr_valid = icache_wr_valid_f;
-
-   // ----------------------------------------------------------------------
-   // MTSEL (R/W)
-   // [1:0] : Trigger select : 00, 01, 10 are data/address triggers. 11 is inst count
-   localparam MTSEL         = 12'h7a0;
-
-   assign wr_mtsel_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTSEL);
-   assign mtsel_ns[1:0] = wr_mtsel_r ? {dec_csr_wrdata_r[1:0]} : mtsel[1:0];
-
-   rvdff #(2)  mtsel_ff (.*, .clk(csr_wr_clk), .din(mtsel_ns[1:0]), .dout(mtsel[1:0]));
-
-   // ----------------------------------------------------------------------
-   // MTDATA1 (R/W)
-   // [31:0] : Trigger Data 1
-   localparam MTDATA1       = 12'h7a1;
-
-   // for triggers 0, 1, 2 and 3 aka Match Control
-   // [31:28] : type, hard coded to 0x2
-   // [27]    : dmode
-   // [26:21] : hard coded to 0x1f
-   // [20]    : hit
-   // [19]    : select (0 - address, 1 - data)
-   // [18]    : timing, always 'before', reads 0x0
-   // [17:12] : action, bits  [17:13] not implemented and reads 0x0
-   // [11]    : chain
-   // [10:7]  : match, bits [10:8] not implemented and reads 0x0
-   // [6]     : M
-   // [5:3]   : not implemented, reads 0x0
-   // [2]     : execute
-   // [1]     : store
-   // [0]     : load
-   //
-   // decoder ring
-   // [27]    : => 9
-   // [20]    : => 8
-   // [19]    : => 7
-   // [12]    : => 6
-   // [11]    : => 5
-   // [7]     : => 4
-   // [6]     : => 3
-   // [2]     : => 2
-   // [1]     : => 1
-   // [0]     : => 0
-
-
-   // don't allow setting load-data.
-   assign tdata_load = dec_csr_wrdata_r[0] & ~dec_csr_wrdata_r[19];
-   // don't allow setting execute-data.
-   assign tdata_opcode = dec_csr_wrdata_r[2] & ~dec_csr_wrdata_r[19];
-   // don't allow clearing DMODE and action=1
-   assign tdata_action = (dec_csr_wrdata_r[27] & dbg_tlu_halted_f) & dec_csr_wrdata_r[12];
-
-   // Chain bit has conditions: WARL for triggers without chains. Force to zero if dmode is 0 but next trigger dmode is 1.
-   assign tdata_chain = mtsel[0] ? 1'b0 : // triggers 1 and 3 chain bit is always zero
-                        mtsel[1] ?  dec_csr_wrdata_r[11] & ~(mtdata1_t3[MTDATA1_DMODE] & ~dec_csr_wrdata_r[27]) : // trigger 2
-                                    dec_csr_wrdata_r[11] & ~(mtdata1_t1[MTDATA1_DMODE] & ~dec_csr_wrdata_r[27]);  // trigger 0
-
-   // Kill mtdata1 write if dmode=1 but prior trigger has dmode=0/chain=1. Only applies to T1 and T3
-   assign tdata_kill_write = mtsel[1] ? dec_csr_wrdata_r[27] & (~mtdata1_t2[MTDATA1_DMODE] & mtdata1_t2[MTDATA1_CHAIN]) : // trigger 3
-                                        dec_csr_wrdata_r[27] & (~mtdata1_t0[MTDATA1_DMODE] & mtdata1_t0[MTDATA1_CHAIN]) ; // trigger 1
-
-
-   assign tdata_wrdata_r[9:0]  = {dec_csr_wrdata_r[27] & dbg_tlu_halted_f,
-                                   dec_csr_wrdata_r[20:19],
-                                   tdata_action,
-                                   tdata_chain,
-                                   dec_csr_wrdata_r[7:6],
-                                   tdata_opcode,
-                                   dec_csr_wrdata_r[1],
-                                   tdata_load};
-
-   // If the DMODE bit is set, tdata1 can only be updated in debug_mode
-   assign wr_mtdata1_t0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b0) & (~mtdata1_t0[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign mtdata1_t0_ns[9:0] = wr_mtdata1_t0_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t0[9], update_hit_bit_r[0] | mtdata1_t0[8], mtdata1_t0[7:0]};
-
-   assign wr_mtdata1_t1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b01) & (~mtdata1_t1[MTDATA1_DMODE] | dbg_tlu_halted_f) & ~tdata_kill_write;
-   assign mtdata1_t1_ns[9:0] = wr_mtdata1_t1_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t1[9], update_hit_bit_r[1] | mtdata1_t1[8], mtdata1_t1[7:0]};
-
-   assign wr_mtdata1_t2_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b10) & (~mtdata1_t2[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign mtdata1_t2_ns[9:0] = wr_mtdata1_t2_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t2[9], update_hit_bit_r[2] | mtdata1_t2[8], mtdata1_t2[7:0]};
-
-   assign wr_mtdata1_t3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b11) & (~mtdata1_t3[MTDATA1_DMODE] | dbg_tlu_halted_f) & ~tdata_kill_write;
-   assign mtdata1_t3_ns[9:0] = wr_mtdata1_t3_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t3[9], update_hit_bit_r[3] | mtdata1_t3[8], mtdata1_t3[7:0]};
-
-
-   rvdffe #(10)  mtdata1_t0_ff (.*, .en(trigger_enabled[0] | wr_mtdata1_t0_r), .din(mtdata1_t0_ns[9:0]), .dout(mtdata1_t0[9:0]));
-   rvdffe #(10)  mtdata1_t1_ff (.*, .en(trigger_enabled[1] | wr_mtdata1_t1_r), .din(mtdata1_t1_ns[9:0]), .dout(mtdata1_t1[9:0]));
-   rvdffe #(10)  mtdata1_t2_ff (.*, .en(trigger_enabled[2] | wr_mtdata1_t2_r), .din(mtdata1_t2_ns[9:0]), .dout(mtdata1_t2[9:0]));
-   rvdffe #(10)  mtdata1_t3_ff (.*, .en(trigger_enabled[3] | wr_mtdata1_t3_r), .din(mtdata1_t3_ns[9:0]), .dout(mtdata1_t3[9:0]));
-
-   assign mtdata1_tsel_out[31:0] = ( ({32{(mtsel[1:0] == 2'b00)}} & {4'h2, mtdata1_t0[9], 6'b011111, mtdata1_t0[8:7], 6'b0, mtdata1_t0[6:5], 3'b0, mtdata1_t0[4:3], 3'b0, mtdata1_t0[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b01)}} & {4'h2, mtdata1_t1[9], 6'b011111, mtdata1_t1[8:7], 6'b0, mtdata1_t1[6:5], 3'b0, mtdata1_t1[4:3], 3'b0, mtdata1_t1[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b10)}} & {4'h2, mtdata1_t2[9], 6'b011111, mtdata1_t2[8:7], 6'b0, mtdata1_t2[6:5], 3'b0, mtdata1_t2[4:3], 3'b0, mtdata1_t2[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b11)}} & {4'h2, mtdata1_t3[9], 6'b011111, mtdata1_t3[8:7], 6'b0, mtdata1_t3[6:5], 3'b0, mtdata1_t3[4:3], 3'b0, mtdata1_t3[2:0]}));
-
-   assign trigger_pkt_any[0].select = mtdata1_t0[MTDATA1_SEL];
-   assign trigger_pkt_any[0].match = mtdata1_t0[MTDATA1_MATCH];
-   assign trigger_pkt_any[0].store = mtdata1_t0[MTDATA1_ST];
-   assign trigger_pkt_any[0].load = mtdata1_t0[MTDATA1_LD];
-   assign trigger_pkt_any[0].execute = mtdata1_t0[MTDATA1_EXE];
-   assign trigger_pkt_any[0].m = mtdata1_t0[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[1].select = mtdata1_t1[MTDATA1_SEL];
-   assign trigger_pkt_any[1].match = mtdata1_t1[MTDATA1_MATCH];
-   assign trigger_pkt_any[1].store = mtdata1_t1[MTDATA1_ST];
-   assign trigger_pkt_any[1].load = mtdata1_t1[MTDATA1_LD];
-   assign trigger_pkt_any[1].execute = mtdata1_t1[MTDATA1_EXE];
-   assign trigger_pkt_any[1].m = mtdata1_t1[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[2].select = mtdata1_t2[MTDATA1_SEL];
-   assign trigger_pkt_any[2].match = mtdata1_t2[MTDATA1_MATCH];
-   assign trigger_pkt_any[2].store = mtdata1_t2[MTDATA1_ST];
-   assign trigger_pkt_any[2].load = mtdata1_t2[MTDATA1_LD];
-   assign trigger_pkt_any[2].execute = mtdata1_t2[MTDATA1_EXE];
-   assign trigger_pkt_any[2].m = mtdata1_t2[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[3].select = mtdata1_t3[MTDATA1_SEL];
-   assign trigger_pkt_any[3].match = mtdata1_t3[MTDATA1_MATCH];
-   assign trigger_pkt_any[3].store = mtdata1_t3[MTDATA1_ST];
-   assign trigger_pkt_any[3].load = mtdata1_t3[MTDATA1_LD];
-   assign trigger_pkt_any[3].execute = mtdata1_t3[MTDATA1_EXE];
-   assign trigger_pkt_any[3].m = mtdata1_t3[MTDATA1_M_ENABLED];
-
-
-
-
-
-   // ----------------------------------------------------------------------
-   // MTDATA2 (R/W)
-   // [31:0] : Trigger Data 2
-   localparam MTDATA2       = 12'h7a2;
-
-   // If the DMODE bit is set, tdata2 can only be updated in debug_mode
-   assign wr_mtdata2_t0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b0)  & (~mtdata1_t0[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b01) & (~mtdata1_t1[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t2_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b10) & (~mtdata1_t2[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b11) & (~mtdata1_t3[MTDATA1_DMODE] | dbg_tlu_halted_f);
-
-   rvdffe #(32)  mtdata2_t0_ff (.*, .en(wr_mtdata2_t0_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t0[31:0]));
-   rvdffe #(32)  mtdata2_t1_ff (.*, .en(wr_mtdata2_t1_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t1[31:0]));
-   rvdffe #(32)  mtdata2_t2_ff (.*, .en(wr_mtdata2_t2_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t2[31:0]));
-   rvdffe #(32)  mtdata2_t3_ff (.*, .en(wr_mtdata2_t3_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t3[31:0]));
-
-   assign mtdata2_tsel_out[31:0] = ( ({32{(mtsel[1:0] == 2'b00)}} & mtdata2_t0[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b01)}} & mtdata2_t1[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b10)}} & mtdata2_t2[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b11)}} & mtdata2_t3[31:0]));
-
-   assign trigger_pkt_any[0].tdata2[31:0] = mtdata2_t0[31:0];
-   assign trigger_pkt_any[1].tdata2[31:0] = mtdata2_t1[31:0];
-   assign trigger_pkt_any[2].tdata2[31:0] = mtdata2_t2[31:0];
-   assign trigger_pkt_any[3].tdata2[31:0] = mtdata2_t3[31:0];
-
-
-   //----------------------------------------------------------------------
-   // Performance Monitor Counters section starts
-   //----------------------------------------------------------------------
-   localparam MHPME_NOEVENT             = 10'd0;
-   localparam MHPME_CLK_ACTIVE          = 10'd1; // OOP - out of pipe
-   localparam MHPME_ICACHE_HIT          = 10'd2; // OOP
-   localparam MHPME_ICACHE_MISS         = 10'd3; // OOP
-   localparam MHPME_INST_COMMIT         = 10'd4;
-   localparam MHPME_INST_COMMIT_16B     = 10'd5;
-   localparam MHPME_INST_COMMIT_32B     = 10'd6;
-   localparam MHPME_INST_ALIGNED        = 10'd7; // OOP
-   localparam MHPME_INST_DECODED        = 10'd8; // OOP
-   localparam MHPME_INST_MUL            = 10'd9;
-   localparam MHPME_INST_DIV            = 10'd10;
-   localparam MHPME_INST_LOAD           = 10'd11;
-   localparam MHPME_INST_STORE          = 10'd12;
-   localparam MHPME_INST_MALOAD         = 10'd13;
-   localparam MHPME_INST_MASTORE        = 10'd14;
-   localparam MHPME_INST_ALU            = 10'd15;
-   localparam MHPME_INST_CSRREAD        = 10'd16;
-   localparam MHPME_INST_CSRRW          = 10'd17;
-   localparam MHPME_INST_CSRWRITE       = 10'd18;
-   localparam MHPME_INST_EBREAK         = 10'd19;
-   localparam MHPME_INST_ECALL          = 10'd20;
-   localparam MHPME_INST_FENCE          = 10'd21;
-   localparam MHPME_INST_FENCEI         = 10'd22;
-   localparam MHPME_INST_MRET           = 10'd23;
-   localparam MHPME_INST_BRANCH         = 10'd24;
-   localparam MHPME_BRANCH_MP           = 10'd25;
-   localparam MHPME_BRANCH_TAKEN        = 10'd26;
-   localparam MHPME_BRANCH_NOTP         = 10'd27;
-   localparam MHPME_FETCH_STALL         = 10'd28; // OOP
-   localparam MHPME_DECODE_STALL        = 10'd30; // OOP
-   localparam MHPME_POSTSYNC_STALL      = 10'd31; // OOP
-   localparam MHPME_PRESYNC_STALL       = 10'd32; // OOP
-   localparam MHPME_LSU_SB_WB_STALL     = 10'd34; // OOP
-   localparam MHPME_DMA_DCCM_STALL      = 10'd35; // OOP
-   localparam MHPME_DMA_ICCM_STALL      = 10'd36; // OOP
-   localparam MHPME_EXC_TAKEN           = 10'd37;
-   localparam MHPME_TIMER_INT_TAKEN     = 10'd38;
-   localparam MHPME_EXT_INT_TAKEN       = 10'd39;
-   localparam MHPME_FLUSH_LOWER         = 10'd40;
-   localparam MHPME_BR_ERROR            = 10'd41;
-   localparam MHPME_IBUS_TRANS          = 10'd42; // OOP
-   localparam MHPME_DBUS_TRANS          = 10'd43; // OOP
-   localparam MHPME_DBUS_MA_TRANS       = 10'd44; // OOP
-   localparam MHPME_IBUS_ERROR          = 10'd45; // OOP
-   localparam MHPME_DBUS_ERROR          = 10'd46; // OOP
-   localparam MHPME_IBUS_STALL          = 10'd47; // OOP
-   localparam MHPME_DBUS_STALL          = 10'd48; // OOP
-   localparam MHPME_INT_DISABLED        = 10'd49; // OOP
-   localparam MHPME_INT_STALLED         = 10'd50; // OOP
-   localparam MHPME_INST_BITMANIP       = 10'd54;
-   localparam MHPME_DBUS_LOAD           = 10'd55;
-   localparam MHPME_DBUS_STORE          = 10'd56;
-   // Counts even during sleep state
-   localparam MHPME_SLEEP_CYC           = 10'd512; // OOP
-   localparam MHPME_DMA_READ_ALL        = 10'd513; // OOP
-   localparam MHPME_DMA_WRITE_ALL       = 10'd514; // OOP
-   localparam MHPME_DMA_READ_DCCM       = 10'd515; // OOP
-   localparam MHPME_DMA_WRITE_DCCM      = 10'd516; // OOP
-
-   // Pack the event selects into a vector for genvar
-   assign mhpme_vec[0][9:0] = mhpme3[9:0];
-   assign mhpme_vec[1][9:0] = mhpme4[9:0];
-   assign mhpme_vec[2][9:0] = mhpme5[9:0];
-   assign mhpme_vec[3][9:0] = mhpme6[9:0];
-
-   // only consider committed itypes
-   //logic [3:0] pmu_i0_itype_qual;
-   assign pmu_i0_itype_qual[3:0] = dec_tlu_packet_r.pmu_i0_itype[3:0] & {4{tlu_i0_commit_cmt}};
-
-   // Generate the muxed incs for all counters based on event type
-   for (genvar i=0 ; i < 4; i++) begin
-      assign mhpmc_inc_r[i] =  {{~mcountinhibit[i+3]}} &
-           (
-             ({1{(mhpme_vec[i][9:0] == MHPME_CLK_ACTIVE      )}} & 1'b1) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_ICACHE_HIT      )}} & {ifu_pmu_ic_hit}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_ICACHE_MISS     )}} & {ifu_pmu_ic_miss}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT     )}} & {tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT_16B )}} & {tlu_i0_commit_cmt & ~exu_pmu_i0_pc4 & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT_32B )}} & {tlu_i0_commit_cmt &  exu_pmu_i0_pc4 & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ALIGNED    )}} & ifu_pmu_instr_aligned)  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_DECODED    )}} & dec_pmu_instr_decoded)  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DECODE_STALL    )}} & {dec_pmu_decode_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MUL        )}} & {(pmu_i0_itype_qual == MUL)})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_DIV        )}} & {dec_tlu_packet_r.pmu_divide  & tlu_i0_commit_cmt & ~illegal_r})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_LOAD       )}} & {(pmu_i0_itype_qual == LOAD)})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_STORE      )}} & {(pmu_i0_itype_qual == STORE)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MALOAD     )}} & {(pmu_i0_itype_qual == LOAD)} &
-                                                                      {1{dec_tlu_packet_r.pmu_lsu_misaligned}})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MASTORE    )}} & {(pmu_i0_itype_qual == STORE)} &
-                                                                      {1{dec_tlu_packet_r.pmu_lsu_misaligned}})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ALU        )}} & {(pmu_i0_itype_qual == ALU)})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRREAD    )}} & {(pmu_i0_itype_qual == CSRREAD)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRWRITE   )}} & {(pmu_i0_itype_qual == CSRWRITE)})|
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRRW      )}} & {(pmu_i0_itype_qual == CSRRW)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_EBREAK     )}} & {(pmu_i0_itype_qual == EBREAK)})  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ECALL      )}} & {(pmu_i0_itype_qual == ECALL)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_FENCE      )}} & {(pmu_i0_itype_qual == FENCE)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_FENCEI     )}} & {(pmu_i0_itype_qual == FENCEI)})  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MRET       )}} & {(pmu_i0_itype_qual == MRET)})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_BRANCH     )}} & {
-                                                                     ((pmu_i0_itype_qual == CONDBR) | (pmu_i0_itype_qual == JAL))})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_MP       )}} & {exu_pmu_i0_br_misp & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_TAKEN    )}} & {exu_pmu_i0_br_ataken & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_NOTP     )}} & {dec_tlu_packet_r.pmu_i0_br_unpred & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_FETCH_STALL     )}} & { ifu_pmu_fetch_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DECODE_STALL    )}} & { dec_pmu_decode_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_POSTSYNC_STALL  )}} & {dec_pmu_postsync_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_PRESYNC_STALL   )}} & {dec_pmu_presync_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_LSU_SB_WB_STALL )}} & { lsu_store_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_DCCM_STALL  )}} & { dma_dccm_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_ICCM_STALL  )}} & { dma_iccm_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_EXC_TAKEN       )}} & { (i0_exception_valid_r | i0_trigger_hit_r | lsu_exc_valid_r)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_TIMER_INT_TAKEN )}} & { take_timer_int | take_int_timer0_int | take_int_timer1_int}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_EXT_INT_TAKEN   )}} & { take_ext_int}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_FLUSH_LOWER     )}} & { tlu_flush_lower_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BR_ERROR        )}} & {(dec_tlu_br0_error_r | dec_tlu_br0_start_error_r) & rfpc_i0_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_TRANS      )}} & {ifu_pmu_bus_trxn}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_TRANS      )}} & {lsu_pmu_bus_trxn}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_MA_TRANS   )}} & {lsu_pmu_bus_misaligned}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_ERROR      )}} & {ifu_pmu_bus_error}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_ERROR      )}} & {lsu_pmu_bus_error}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_STALL      )}} & {ifu_pmu_bus_busy}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_STALL      )}} & {lsu_pmu_bus_busy}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INT_DISABLED    )}} & {~mstatus[MSTATUS_MIE]}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INT_STALLED     )}} & {~mstatus[MSTATUS_MIE] & |(mip[5:0] & mie[5:0])}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_BITMANIP     )}} & {(pmu_i0_itype_qual == BITMANIPU)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_LOAD       )}} & {tlu_i0_commit_cmt & lsu_pmu_load_external_r & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_STORE      )}} & {tlu_i0_commit_cmt & lsu_pmu_store_external_r & ~illegal_r}) |
-             // These count even during sleep
-             ({1{(mhpme_vec[i][9:0] == MHPME_SLEEP_CYC       )}} & {dec_tlu_pmu_fw_halted}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_READ_ALL    )}} & {dma_pmu_any_read}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_WRITE_ALL   )}} & {dma_pmu_any_write}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_READ_DCCM   )}} & {dma_pmu_dccm_read}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_WRITE_DCCM  )}} & {dma_pmu_dccm_write})
-             );
-   end
-
-
-   if(pt.FAST_INTERRUPT_REDIRECT)
-   rvdffie #(31)  mstatus_ff (.*, .clk(free_l2clk),
-                             .din({mdseac_locked_ns, lsu_single_ecc_error_r, lsu_exc_valid_r, lsu_i0_exc_r,
-                                   take_ext_int_start,    take_ext_int_start_d1, take_ext_int_start_d2, ext_int_freeze,
-                                   mip_ns[5:0], mcyclel_cout & ~wr_mcycleh_r & mcyclel_cout_in,
-                                   minstret_enable, minstretl_cout_ns, fw_halted_ns,
-                                   meicidpl_ns[3:0], icache_rd_valid, icache_wr_valid, mhpmc_inc_r[3:0], perfcnt_halted,
-                                   mstatus_ns[1:0]}),
-                             .dout({mdseac_locked_f, lsu_single_ecc_error_r_d1, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1,
-                                    take_ext_int_start_d1, take_ext_int_start_d2, take_ext_int_start_d3, ext_int_freeze_d1,
-                                    mip[5:0], mcyclel_cout_f, minstret_enable_f, minstretl_cout_f,
-                                    fw_halted, meicidpl[3:0], icache_rd_valid_f, icache_wr_valid_f,
-                                    mhpmc_inc_r_d1[3:0], perfcnt_halted_d1,
-                                    mstatus[1:0]}));
-
-   else
-   rvdffie #(27)  mstatus_ff (.*, .clk(free_l2clk),
-                             .din({mdseac_locked_ns, lsu_single_ecc_error_r, lsu_exc_valid_r, lsu_i0_exc_r,
-                                   mip_ns[5:0], mcyclel_cout & ~wr_mcycleh_r & mcyclel_cout_in,
-                                   minstret_enable, minstretl_cout_ns, fw_halted_ns,
-                                   meicidpl_ns[3:0], icache_rd_valid, icache_wr_valid, mhpmc_inc_r[3:0], perfcnt_halted,
-                                   mstatus_ns[1:0]}),
-                             .dout({mdseac_locked_f, lsu_single_ecc_error_r_d1, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1,
-                                    mip[5:0], mcyclel_cout_f, minstret_enable_f, minstretl_cout_f,
-                                    fw_halted, meicidpl[3:0], icache_rd_valid_f, icache_wr_valid_f,
-                                    mhpmc_inc_r_d1[3:0], perfcnt_halted_d1,
-                                    mstatus[1:0]}));
-
-   assign perfcnt_halted = ((dec_tlu_dbg_halted & dcsr[DCSR_STOPC]) | dec_tlu_pmu_fw_halted);
-   assign perfcnt_during_sleep[3:0] = {4{~(dec_tlu_dbg_halted & dcsr[DCSR_STOPC])}} & {mhpme_vec[3][9],mhpme_vec[2][9],mhpme_vec[1][9],mhpme_vec[0][9]};
-
-   assign dec_tlu_perfcnt0 = mhpmc_inc_r_d1[0] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[0]);
-   assign dec_tlu_perfcnt1 = mhpmc_inc_r_d1[1] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[1]);
-   assign dec_tlu_perfcnt2 = mhpmc_inc_r_d1[2] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[2]);
-   assign dec_tlu_perfcnt3 = mhpmc_inc_r_d1[3] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[3]);
-
-   // ----------------------------------------------------------------------
-   // MHPMC3H(RW), MHPMC3(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 3
-   localparam MHPMC3        = 12'hB03;
-   localparam MHPMC3H       = 12'hB83;
-
-   assign mhpmc3_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC3);
-   assign mhpmc3_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[0]) & (|(mhpmc_inc_r[0]));
-   assign mhpmc3_wr_en  = mhpmc3_wr_en0 | mhpmc3_wr_en1;
-   assign mhpmc3_incr[63:0] = {mhpmc3h[31:0],mhpmc3[31:0]} + {63'b0, 1'b1};
-   assign mhpmc3_ns[31:0] = mhpmc3_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc3_incr[31:0];
-   rvdffe #(32)  mhpmc3_ff (.*, .clk(free_l2clk), .en(mhpmc3_wr_en), .din(mhpmc3_ns[31:0]), .dout(mhpmc3[31:0]));
-
-   assign mhpmc3h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC3H);
-   assign mhpmc3h_wr_en  = mhpmc3h_wr_en0 | mhpmc3_wr_en1;
-   assign mhpmc3h_ns[31:0] = mhpmc3h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc3_incr[63:32];
-   rvdffe #(32)  mhpmc3h_ff (.*, .clk(free_l2clk), .en(mhpmc3h_wr_en), .din(mhpmc3h_ns[31:0]), .dout(mhpmc3h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC4H(RW), MHPMC4(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 4
-   localparam MHPMC4        = 12'hB04;
-   localparam MHPMC4H       = 12'hB84;
-
-   assign mhpmc4_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC4);
-   assign mhpmc4_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[1]) & (|(mhpmc_inc_r[1]));
-   assign mhpmc4_wr_en  = mhpmc4_wr_en0 | mhpmc4_wr_en1;
-   assign mhpmc4_incr[63:0] = {mhpmc4h[31:0],mhpmc4[31:0]} + {63'b0,1'b1};
-   assign mhpmc4_ns[31:0] = mhpmc4_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc4_incr[31:0];
-   rvdffe #(32)  mhpmc4_ff (.*, .clk(free_l2clk), .en(mhpmc4_wr_en), .din(mhpmc4_ns[31:0]), .dout(mhpmc4[31:0]));
-
-   assign mhpmc4h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC4H);
-   assign mhpmc4h_wr_en  = mhpmc4h_wr_en0 | mhpmc4_wr_en1;
-   assign mhpmc4h_ns[31:0] = mhpmc4h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc4_incr[63:32];
-   rvdffe #(32)  mhpmc4h_ff (.*, .clk(free_l2clk), .en(mhpmc4h_wr_en), .din(mhpmc4h_ns[31:0]), .dout(mhpmc4h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC5H(RW), MHPMC5(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 5
-   localparam MHPMC5        = 12'hB05;
-   localparam MHPMC5H       = 12'hB85;
-
-   assign mhpmc5_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC5);
-   assign mhpmc5_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[2]) & (|(mhpmc_inc_r[2]));
-   assign mhpmc5_wr_en  = mhpmc5_wr_en0 | mhpmc5_wr_en1;
-   assign mhpmc5_incr[63:0] = {mhpmc5h[31:0],mhpmc5[31:0]} + {63'b0,1'b1};
-   assign mhpmc5_ns[31:0] = mhpmc5_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc5_incr[31:0];
-   rvdffe #(32)  mhpmc5_ff (.*, .clk(free_l2clk), .en(mhpmc5_wr_en), .din(mhpmc5_ns[31:0]), .dout(mhpmc5[31:0]));
-
-   assign mhpmc5h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC5H);
-   assign mhpmc5h_wr_en  = mhpmc5h_wr_en0 | mhpmc5_wr_en1;
-   assign mhpmc5h_ns[31:0] = mhpmc5h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc5_incr[63:32];
-   rvdffe #(32)  mhpmc5h_ff (.*, .clk(free_l2clk), .en(mhpmc5h_wr_en), .din(mhpmc5h_ns[31:0]), .dout(mhpmc5h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC6H(RW), MHPMC6(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 6
-   localparam MHPMC6        = 12'hB06;
-   localparam MHPMC6H       = 12'hB86;
-
-   assign mhpmc6_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC6);
-   assign mhpmc6_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[3]) & (|(mhpmc_inc_r[3]));
-   assign mhpmc6_wr_en  = mhpmc6_wr_en0 | mhpmc6_wr_en1;
-   assign mhpmc6_incr[63:0] = {mhpmc6h[31:0],mhpmc6[31:0]} + {63'b0,1'b1};
-   assign mhpmc6_ns[31:0] = mhpmc6_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc6_incr[31:0];
-   rvdffe #(32)  mhpmc6_ff (.*, .clk(free_l2clk), .en(mhpmc6_wr_en), .din(mhpmc6_ns[31:0]), .dout(mhpmc6[31:0]));
-
-   assign mhpmc6h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC6H);
-   assign mhpmc6h_wr_en  = mhpmc6h_wr_en0 | mhpmc6_wr_en1;
-   assign mhpmc6h_ns[31:0] = mhpmc6h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc6_incr[63:32];
-   rvdffe #(32)  mhpmc6h_ff (.*, .clk(free_l2clk), .en(mhpmc6h_wr_en), .din(mhpmc6h_ns[31:0]), .dout(mhpmc6h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPME3(RW)
-   // [9:0] : Hardware Performance Monitor Event 3
-   localparam MHPME3        = 12'h323;
-
-   // we only have events 0-56 with holes, 512-516, HPME* are WARL so zero otherwise.
-   assign zero_event_r = ( (dec_csr_wrdata_r[9:0] > 10'd516) |
-                           (|dec_csr_wrdata_r[31:10]) |
-                           ((dec_csr_wrdata_r[9:0] < 10'd512) & (dec_csr_wrdata_r[9:0] > 10'd56)) |
-                           ((dec_csr_wrdata_r[9:0] < 10'd54) & (dec_csr_wrdata_r[9:0] > 10'd50)) |
-                           (dec_csr_wrdata_r[9:0] == 10'd29) |
-                           (dec_csr_wrdata_r[9:0] == 10'd33)
-                           );
-
-   assign event_r[9:0] = zero_event_r ? '0 : dec_csr_wrdata_r[9:0];
-
-   assign wr_mhpme3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME3);
-   rvdffe #(10)  mhpme3_ff (.*, .en(wr_mhpme3_r), .din(event_r[9:0]), .dout(mhpme3[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME4(RW)
-   // [9:0] : Hardware Performance Monitor Event 4
-   localparam MHPME4        = 12'h324;
-
-   assign wr_mhpme4_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME4);
-   rvdffe #(10)  mhpme4_ff (.*, .en(wr_mhpme4_r), .din(event_r[9:0]), .dout(mhpme4[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME5(RW)
-   // [9:0] : Hardware Performance Monitor Event 5
-   localparam MHPME5        = 12'h325;
-
-   assign wr_mhpme5_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME5);
-   rvdffe #(10)  mhpme5_ff (.*, .en(wr_mhpme5_r), .din(event_r[9:0]), .dout(mhpme5[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME6(RW)
-   // [9:0] : Hardware Performance Monitor Event 6
-   localparam MHPME6        = 12'h326;
-
-   assign wr_mhpme6_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME6);
-   rvdffe #(10)  mhpme6_ff (.*, .en(wr_mhpme6_r), .din(event_r[9:0]), .dout(mhpme6[9:0]));
-
-   //----------------------------------------------------------------------
-   // Performance Monitor Counters section ends
-   //----------------------------------------------------------------------
-   // ----------------------------------------------------------------------
-
-   // MCOUNTINHIBIT(RW)
-   // [31:7] : Reserved, read 0x0
-   // [6]    : HPM6 disable
-   // [5]    : HPM5 disable
-   // [4]    : HPM4 disable
-   // [3]    : HPM3 disable
-   // [2]    : MINSTRET disable
-   // [1]    : reserved, read 0x0
-   // [0]    : MCYCLE disable
-
-   localparam MCOUNTINHIBIT             = 12'h320;
-
-   assign wr_mcountinhibit_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCOUNTINHIBIT);
-   rvdffs #(6)  mcountinhibit_ff (.*, .clk(csr_wr_clk), .en(wr_mcountinhibit_r), .din({dec_csr_wrdata_r[6:2], dec_csr_wrdata_r[0]}), .dout({mcountinhibit[6:2], mcountinhibit[0]}));
-   assign mcountinhibit[1] = 1'b0;
-
-   //--------------------------------------------------------------------------------
-   // trace
-   //--------------------------------------------------------------------------------
-   logic [4:0] dec_tlu_exc_cause_wb1_raw, dec_tlu_exc_cause_wb2;
-   logic       dec_tlu_int_valid_wb1_raw, dec_tlu_int_valid_wb2;
-
-   assign {dec_tlu_i0_valid_wb1,
-           dec_tlu_i0_exc_valid_wb1,
-           dec_tlu_exc_cause_wb1_raw[4:0],
-           dec_tlu_int_valid_wb1_raw}  =   {8{~dec_tlu_trace_disable}} & {i0_valid_wb,
-                                                                          i0_exception_valid_r_d1 | lsu_i0_exc_r_d1 | (trigger_hit_r_d1 & ~trigger_hit_dmode_r_d1),
-                                                                          exc_cause_wb[4:0],
-                                                                          interrupt_valid_r_d1};
-
-
-
-  // skid buffer for ints, reduces trace port count by 1
-   rvdffie #(.WIDTH(6), .OVERRIDE(1))  traceskidff (.*,  .clk(clk),
-                        .din ({dec_tlu_exc_cause_wb1_raw[4:0],
-                               dec_tlu_int_valid_wb1_raw}),
-                        .dout({dec_tlu_exc_cause_wb2[4:0],
-                               dec_tlu_int_valid_wb2}));
-   //skid for ints
-   assign dec_tlu_exc_cause_wb1[4:0] =  dec_tlu_int_valid_wb2 ? dec_tlu_exc_cause_wb2[4:0] : dec_tlu_exc_cause_wb1_raw[4:0];
-   assign dec_tlu_int_valid_wb1 = dec_tlu_int_valid_wb2;
-
-   assign dec_tlu_mtval_wb1  = mtval[31:0];
-
-   // end trace
-   //--------------------------------------------------------------------------------
-
-
-   // ----------------------------------------------------------------------
-   // CSR read mux
-   // ----------------------------------------------------------------------
-
-// file "csrdecode" is human readable file that has all of the CSR decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "csrdecode" except legal equation:
-
-// 1) coredecode -in csrdecode > corecsrdecode.e
-
-// 2) espresso -Dso -oeqntott corecsrdecode.e | addassign  > csrequations
-
-// to generate the legal CSR equation below:
-
-// 1) coredecode -in csrdecode -legal > csrlegal.e
-
-// 2) espresso -Dso -oeqntott csrlegal.e | addassign  > csrlegal_equation
-// coredecode -in csrdecode > corecsrdecode.e; espresso -Dso -oeqntott corecsrdecode.e | addassign  > csrequations; coredecode -in csrdecode -legal > csrlegal.e; espresso -Dso -oeqntott csrlegal.e | addassign  > csrlegal_equation
-
-assign csr_misa = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mvendorid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_marchid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mimpid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mhartid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_mstatus = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mtvec = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mip = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[2]);
-
-assign csr_mie = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mcyclel = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]);
-
-assign csr_mcycleh = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_minstretl = (!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_minstreth = (!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mscratch = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mepc = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mcause = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mscause = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_mtval = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mrac = (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_dmst = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_mdseac = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]);
-
-assign csr_meihap = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[3]);
-
-assign csr_meivt = (!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_meipt = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_meicurpl = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_meicidpl = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dcsr = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mcgc = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdc = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dpc = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[0]);
-
-assign csr_mtsel = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mtdata1 = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]);
-
-assign csr_mtdata2 = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[1]);
-
-assign csr_mhpmc3 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc4 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc5 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc6 = (!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc3h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc4h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc5h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc6h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme3 = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme4 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme5 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme6 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mcountinhibit = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mitctl0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitctl1 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mitb0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mitb1 = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitcnt0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitcnt1 = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mpmc = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign csr_meicpct = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_micect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_miccmect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]);
-
-assign csr_mdccmect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdht = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdhs = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_dicawics = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_dicad0h = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_dicad0 = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dicad1 = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_dicago = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign presync = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign postsync = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[10]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign legal = (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]) | (
-    dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]) | (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]) | (dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[3]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[3]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]);
-
-
-
-assign dec_tlu_presync_d = presync & dec_csr_any_unq_d & ~dec_csr_wen_unq_d;
-assign dec_tlu_postsync_d = postsync & dec_csr_any_unq_d;
-
-   // allow individual configuration of these features
-assign conditionally_illegal = ((csr_mitcnt0 | csr_mitcnt1 | csr_mitb0 | csr_mitb1 | csr_mitctl0 | csr_mitctl1) & !pt.TIMER_LEGAL_EN);
-
-assign valid_csr = ( legal & (~(csr_dcsr | csr_dpc | csr_dmst | csr_dicawics | csr_dicad0 | csr_dicad0h | csr_dicad1 | csr_dicago) | dbg_tlu_halted_f)
-                     & ~fast_int_meicpct & ~conditionally_illegal);
-
-assign dec_csr_legal_d = ( dec_csr_any_unq_d &
-                           valid_csr &          // of a valid CSR
-                           ~(dec_csr_wen_unq_d & (csr_mvendorid | csr_marchid | csr_mimpid | csr_mhartid | csr_mdseac | csr_meihap)) // that's not a write to a RO CSR
-                           );
-   // CSR read mux
-assign dec_csr_rddata_d[31:0] = ( ({32{csr_misa}}      & 32'h40201104) |
-                                  ({32{csr_mvendorid}} & 32'h00000045) |
-                                  ({32{csr_marchid}}   & 32'h00000010) |
-                                  ({32{csr_mimpid}}    & 32'h3) |
-                                  ({32{csr_mhartid}}   & {core_id[31:4], 4'b0}) |
-                                  ({32{csr_mstatus}}   & {{15{1'b0}}, 2'b01, 2'b00, 2'b11, 3'b0, mstatus[1], 3'b0, mstatus[0], 3'b0}) |
-                                  ({32{csr_mtvec}}     & {mtvec[30:1], 1'b0, mtvec[0]}) |
-                                  ({32{csr_mip}}       & {1'b0, mip[5:3], 16'b0, mip[2], 3'b0, mip[1], 3'b0, mip[0], 3'b0}) |
-                                  ({32{csr_mie}}       & {1'b0, mie[5:3], 16'b0, mie[2], 3'b0, mie[1], 3'b0, mie[0], 3'b0}) |
-                                  ({32{csr_mcyclel}}   & mcyclel[31:0]) |
-                                  ({32{csr_mcycleh}}   & mcycleh_inc[31:0]) |
-                                  ({32{csr_minstretl}} & minstretl_read[31:0]) |
-                                  ({32{csr_minstreth}} & minstreth_read[31:0]) |
-                                  ({32{csr_mscratch}}  & mscratch[31:0]) |
-                                  ({32{csr_mepc}}      & {mepc[31:1], 1'b0}) |
-                                  ({32{csr_mcause}}    & mcause[31:0]) |
-                                  ({32{csr_mscause}}   & {28'b0, mscause[3:0]}) |
-                                  ({32{csr_mtval}}     & mtval[31:0]) |
-                                  ({32{csr_mrac}}      & mrac[31:0]) |
-                                  ({32{csr_mdseac}}    & mdseac[31:0]) |
-                                  ({32{csr_meivt}}     & {meivt[31:10], 10'b0}) |
-                                  ({32{csr_meihap}}    & {meivt[31:10], meihap[9:2], 2'b0}) |
-                                  ({32{csr_meicurpl}}  & {28'b0, meicurpl[3:0]}) |
-                                  ({32{csr_meicidpl}}  & {28'b0, meicidpl[3:0]}) |
-                                  ({32{csr_meipt}}     & {28'b0, meipt[3:0]}) |
-                                  ({32{csr_mcgc}}      & {22'b0, mcgc[9:0]}) |
-                                  ({32{csr_mfdc}}      & {13'b0, mfdc[18:0]}) |
-                                  ({32{csr_dcsr}}      & {16'h4000, dcsr[15:2], 2'b11}) |
-                                  ({32{csr_dpc}}       & {dpc[31:1], 1'b0}) |
-                                  ({32{csr_dicad0}}    & dicad0[31:0]) |
-                                  ({32{csr_dicad0h}}   & dicad0h[31:0]) |
-                                  ({32{csr_dicad1}}    & dicad1[31:0]) |
-                                  ({32{csr_dicawics}}  & {7'b0, dicawics[16], 2'b0, dicawics[15:14], 3'b0, dicawics[13:0], 3'b0}) |
-                                  ({32{csr_mtsel}}     & {30'b0, mtsel[1:0]}) |
-                                  ({32{csr_mtdata1}}   & {mtdata1_tsel_out[31:0]}) |
-                                  ({32{csr_mtdata2}}   & {mtdata2_tsel_out[31:0]}) |
-                                  ({32{csr_micect}}    & {micect[31:0]}) |
-                                  ({32{csr_miccmect}}  & {miccmect[31:0]}) |
-                                  ({32{csr_mdccmect}}  & {mdccmect[31:0]}) |
-                                  ({32{csr_mhpmc3}}    & mhpmc3[31:0]) |
-                                  ({32{csr_mhpmc4}}    & mhpmc4[31:0]) |
-                                  ({32{csr_mhpmc5}}    & mhpmc5[31:0]) |
-                                  ({32{csr_mhpmc6}}    & mhpmc6[31:0]) |
-                                  ({32{csr_mhpmc3h}}   & mhpmc3h[31:0]) |
-                                  ({32{csr_mhpmc4h}}   & mhpmc4h[31:0]) |
-                                  ({32{csr_mhpmc5h}}   & mhpmc5h[31:0]) |
-                                  ({32{csr_mhpmc6h}}   & mhpmc6h[31:0]) |
-                                  ({32{csr_mfdht}}     & {26'b0, mfdht[5:0]}) |
-                                  ({32{csr_mfdhs}}     & {30'b0, mfdhs[1:0]}) |
-                                  ({32{csr_mhpme3}}    & {22'b0,mhpme3[9:0]}) |
-                                  ({32{csr_mhpme4}}    & {22'b0,mhpme4[9:0]}) |
-                                  ({32{csr_mhpme5}}    & {22'b0,mhpme5[9:0]}) |
-                                  ({32{csr_mhpme6}}    & {22'b0,mhpme6[9:0]}) |
-                                  ({32{csr_mcountinhibit}} & {25'b0, mcountinhibit[6:0]}) |
-                                  ({32{csr_mpmc}}      & {30'b0, mpmc[1], 1'b0}) |
-                                  ({32{dec_timer_read_d}} & dec_timer_rddata_d[31:0])
-                                  );
-
-
-
-endmodule // eb1_dec_tlu_ctl
-
-module eb1_dec_timer_ctl #(
-`include "eb1_param.vh"
- )
-  (
-   input logic clk,
-   input logic free_l2clk,
-   input logic csr_wr_clk,
-   input logic rst_l,
-   input logic        dec_csr_wen_r_mod,      // csr write enable at wb
-   input logic [11:0] dec_csr_wraddr_r,      // write address for csr
-   input logic [31:0] dec_csr_wrdata_r,   // csr write data at wb
-
-   input logic csr_mitctl0,
-   input logic csr_mitctl1,
-   input logic csr_mitb0,
-   input logic csr_mitb1,
-   input logic csr_mitcnt0,
-   input logic csr_mitcnt1,
-
-
-   input logic dec_pause_state, // Paused
-   input logic dec_tlu_pmu_fw_halted, // pmu/fw halted
-   input logic internal_dbg_halt_timers, // debug halted
-
-   output logic [31:0] dec_timer_rddata_d, // timer CSR read data
-   output logic        dec_timer_read_d, // timer CSR address match
-   output logic        dec_timer_t0_pulse, // timer0 int
-   output logic        dec_timer_t1_pulse, // timer1 int
-
-   input  logic        scan_mode
-   );
-   localparam MITCTL_ENABLE             = 0;
-   localparam MITCTL_ENABLE_HALTED      = 1;
-   localparam MITCTL_ENABLE_PAUSED      = 2;
-
-   logic [31:0] mitcnt0_ns, mitcnt0, mitcnt1_ns, mitcnt1, mitb0, mitb1, mitb0_b, mitb1_b, mitcnt0_inc, mitcnt1_inc;
-   logic [2:0] mitctl0_ns, mitctl0;
-   logic [3:0] mitctl1_ns, mitctl1;
-   logic wr_mitcnt0_r, wr_mitcnt1_r, wr_mitb0_r, wr_mitb1_r, wr_mitctl0_r, wr_mitctl1_r;
-   logic mitcnt0_inc_ok, mitcnt1_inc_ok;
-   logic mitcnt0_inc_cout, mitcnt1_inc_cout;
- logic mit0_match_ns;
- logic mit1_match_ns;
- logic mitctl0_0_b_ns;
- logic mitctl0_0_b;
- logic mitctl1_0_b_ns;
- logic mitctl1_0_b;
-
-   assign mit0_match_ns = (mitcnt0[31:0] >= mitb0[31:0]);
-   assign mit1_match_ns = (mitcnt1[31:0] >= mitb1[31:0]);
-
-   assign dec_timer_t0_pulse = mit0_match_ns;
-   assign dec_timer_t1_pulse = mit1_match_ns;
-   // ----------------------------------------------------------------------
-   // MITCNT0 (RW)
-   // [31:0] : Internal Timer Counter 0
-
-   localparam MITCNT0       = 12'h7d2;
-
-   assign wr_mitcnt0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCNT0);
-
-   assign mitcnt0_inc_ok = mitctl0[MITCTL_ENABLE] & (~dec_pause_state | mitctl0[MITCTL_ENABLE_PAUSED]) & (~dec_tlu_pmu_fw_halted | mitctl0[MITCTL_ENABLE_HALTED]) & ~internal_dbg_halt_timers;
-
-   assign {mitcnt0_inc_cout, mitcnt0_inc[7:0]} = mitcnt0[7:0] + {7'b0, 1'b1};
-   assign mitcnt0_inc[31:8] = mitcnt0[31:8] + {23'b0, mitcnt0_inc_cout};
-
-   assign mitcnt0_ns[31:0]  = wr_mitcnt0_r ? dec_csr_wrdata_r[31:0] : mit0_match_ns ? 'b0 : mitcnt0_inc[31:0];
-
-   rvdffe #(24) mitcnt0_ffb      (.*, .clk(free_l2clk), .en(wr_mitcnt0_r | (mitcnt0_inc_ok & mitcnt0_inc_cout) | mit0_match_ns), .din(mitcnt0_ns[31:8]), .dout(mitcnt0[31:8]));
-   rvdffe #(8)  mitcnt0_ffa      (.*, .clk(free_l2clk), .en(wr_mitcnt0_r | mitcnt0_inc_ok | mit0_match_ns),                       .din(mitcnt0_ns[7:0]), .dout(mitcnt0[7:0]));
-
-   // ----------------------------------------------------------------------
-   // MITCNT1 (RW)
-   // [31:0] : Internal Timer Counter 0
-
-   localparam MITCNT1       = 12'h7d5;
-
-   assign wr_mitcnt1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCNT1);
-
-   assign mitcnt1_inc_ok = mitctl1[MITCTL_ENABLE] &
-                           (~dec_pause_state | mitctl1[MITCTL_ENABLE_PAUSED]) &
-                           (~dec_tlu_pmu_fw_halted | mitctl1[MITCTL_ENABLE_HALTED]) &
-                           ~internal_dbg_halt_timers &
-                           (~mitctl1[3] | mit0_match_ns);
-
-   // only inc MITCNT1 if not cascaded with 0, or if 0 overflows
-   assign {mitcnt1_inc_cout, mitcnt1_inc[7:0]} = mitcnt1[7:0] + {7'b0, 1'b1};
-   assign mitcnt1_inc[31:8] = mitcnt1[31:8] + {23'b0, mitcnt1_inc_cout};
-
-   assign mitcnt1_ns[31:0]  = wr_mitcnt1_r ? dec_csr_wrdata_r[31:0] : mit1_match_ns ? 'b0 : mitcnt1_inc[31:0];
-
-   rvdffe #(24) mitcnt1_ffb      (.*, .clk(free_l2clk), .en(wr_mitcnt1_r | (mitcnt1_inc_ok & mitcnt1_inc_cout) | mit1_match_ns), .din(mitcnt1_ns[31:8]), .dout(mitcnt1[31:8]));
-   rvdffe #(8)  mitcnt1_ffa      (.*, .clk(free_l2clk), .en(wr_mitcnt1_r | mitcnt1_inc_ok | mit1_match_ns),                       .din(mitcnt1_ns[7:0]), .dout(mitcnt1[7:0]));
-
-
-   // ----------------------------------------------------------------------
-   // MITB0 (RW)
-   // [31:0] : Internal Timer Bound 0
-
-   localparam MITB0         = 12'h7d3;
-
-   assign wr_mitb0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITB0);
-
-   rvdffe #(32) mitb0_ff      (.*, .en(wr_mitb0_r), .din(~dec_csr_wrdata_r[31:0]), .dout(mitb0_b[31:0]));
-   assign mitb0[31:0] = ~mitb0_b[31:0];
-
-   // ----------------------------------------------------------------------
-   // MITB1 (RW)
-   // [31:0] : Internal Timer Bound 1
-
-   localparam MITB1         = 12'h7d6;
-
-   assign wr_mitb1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITB1);
-
-   rvdffe #(32) mitb1_ff      (.*, .en(wr_mitb1_r), .din(~dec_csr_wrdata_r[31:0]), .dout(mitb1_b[31:0]));
-   assign mitb1[31:0] = ~mitb1_b[31:0];
-
-   // ----------------------------------------------------------------------
-   // MITCTL0 (RW) Internal Timer Ctl 0
-   // [31:3] : Reserved, reads 0x0
-   // [2]    : Enable while PAUSEd
-   // [1]    : Enable while HALTed
-   // [0]    : Enable (resets to 0x1)
-
-   localparam MITCTL0       = 12'h7d4;
-
-   assign wr_mitctl0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCTL0);
-   assign mitctl0_ns[2:0] = wr_mitctl0_r ? {dec_csr_wrdata_r[2:0]} : {mitctl0[2:0]};
-
-   assign mitctl0_0_b_ns = ~mitctl0_ns[0];
-   rvdffs #(3) mitctl0_ff      (.*, .clk(csr_wr_clk), .en(wr_mitctl0_r), .din({mitctl0_ns[2:1], mitctl0_0_b_ns}), .dout({mitctl0[2:1], mitctl0_0_b}));
-   assign mitctl0[0] = ~mitctl0_0_b;
-
-   // ----------------------------------------------------------------------
-   // MITCTL1 (RW) Internal Timer Ctl 1
-   // [31:4] : Reserved, reads 0x0
-   // [3]    : Cascade
-   // [2]    : Enable while PAUSEd
-   // [1]    : Enable while HALTed
-   // [0]    : Enable (resets to 0x1)
-
-   localparam MITCTL1       = 12'h7d7;
-
-   assign wr_mitctl1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCTL1);
-   assign mitctl1_ns[3:0] = wr_mitctl1_r ? {dec_csr_wrdata_r[3:0]} : {mitctl1[3:0]};
-
-   assign mitctl1_0_b_ns = ~mitctl1_ns[0];
-   rvdffs #(4) mitctl1_ff      (.*, .clk(csr_wr_clk), .en(wr_mitctl1_r), .din({mitctl1_ns[3:1], mitctl1_0_b_ns}), .dout({mitctl1[3:1], mitctl1_0_b}));
-   assign mitctl1[0] = ~mitctl1_0_b;
-   assign dec_timer_read_d = csr_mitcnt1 | csr_mitcnt0 | csr_mitb1 | csr_mitb0 | csr_mitctl0 | csr_mitctl1;
-   assign dec_timer_rddata_d[31:0] = ( ({32{csr_mitcnt0}}      & mitcnt0[31:0]) |
-                                       ({32{csr_mitcnt1}}      & mitcnt1[31:0]) |
-                                       ({32{csr_mitb0}}        & mitb0[31:0]) |
-                                       ({32{csr_mitb1}}        & mitb1[31:0]) |
-                                       ({32{csr_mitctl0}}      & {29'b0, mitctl0[2:0]}) |
-                                       ({32{csr_mitctl1}}      & {28'b0, mitctl1[3:0]})
-                                       );
-
-
-endmodule // dec_timer_ctl
diff --git a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_trigger.sv b/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_trigger.sv
deleted file mode 100644
index 05f9d12..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dec/eb1_dec_trigger.sv
+++ /dev/null
@@ -1,49 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DEC Trigger Logic
-// Comments:
-//
-//********************************************************************************
-module eb1_dec_trigger
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-
-   input eb1_trigger_pkt_t [3:0] trigger_pkt_any,           // Packet from tlu. 'select':0-pc,1-Opcode  'Execute' needs to be set for dec triggers to fire. 'match'-1 do mask, 0: full match
-   input logic [31:1]  dec_i0_pc_d,                          // i0 pc
-
-   output logic [3:0] dec_i0_trigger_match_d                 // Trigger match
-);
-
-   logic [3:0][31:0]  dec_i0_match_data;
-   logic [3:0]        dec_i0_trigger_data_match;
-
-   for (genvar i=0; i<4; i++) begin
-      assign dec_i0_match_data[i][31:0] = ({32{~trigger_pkt_any[i].select & trigger_pkt_any[i].execute}} & {dec_i0_pc_d[31:1], trigger_pkt_any[i].tdata2[0]});      // select=0; do a PC match
-
-      rvmaskandmatch trigger_i0_match (.mask(trigger_pkt_any[i].tdata2[31:0]), .data(dec_i0_match_data[i][31:0]), .masken(trigger_pkt_any[i].match), .match(dec_i0_trigger_data_match[i]));
-
-      assign dec_i0_trigger_match_d[i] = trigger_pkt_any[i].execute & trigger_pkt_any[i].m & dec_i0_trigger_data_match[i];
-   end
-
-endmodule // eb1_dec_trigger
-
diff --git a/verilog/rtl/BrqRV_EB1/design/dmi/dmi_jtag_to_core_sync.v b/verilog/rtl/BrqRV_EB1/design/dmi/dmi_jtag_to_core_sync.v
deleted file mode 100644
index 25328ea..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dmi/dmi_jtag_to_core_sync.v
+++ /dev/null
@@ -1,64 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0

-// Copyright 2018 MERL Corporation or it's affiliates.

-// 

-// Licensed under the Apache License, Version 2.0 (the "License");

-// you may not use this file except in compliance with the License.

-// You may obtain a copy of the License at

-// 

-// http://www.apache.org/licenses/LICENSE-2.0

-// 

-// Unless required by applicable law or agreed to in writing, software

-// distributed under the License is distributed on an "AS IS" BASIS,

-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-// See the License for the specific language governing permissions and

-// limitations under the License.

-//------------------------------------------------------------------------------------

-//

-//  Copyright MERL, 2019

-//  Owner : Alex Grobman

-//  Description:  

-//                This module Synchronizes the signals between JTAG (TCK) and

-//                processor (Core_clk)

-//

-//-------------------------------------------------------------------------------------

-

-module dmi_jtag_to_core_sync (

-// JTAG signals

-input       rd_en,      // 1 bit  Read Enable from JTAG

-input       wr_en,      // 1 bit  Write enable from JTAG

-

-// Processor Signals

-input       rst_n,      // Core reset

-input       clk,        // Core clock

-

-output      reg_en,     // 1 bit  Write interface bit to Processor

-output      reg_wr_en   // 1 bit  Write enable to Processor

-);

-  

-wire        c_rd_en;

-wire        c_wr_en;

-reg [2:0]   rden, wren;

- 

-

-// Outputs

-assign reg_en    = c_wr_en | c_rd_en;

-assign reg_wr_en = c_wr_en;

-

-

-// synchronizers  

-always @ ( posedge clk or negedge rst_n) begin

-    if(!rst_n) begin

-        rden <= '0;

-        wren <= '0;

-    end

-    else begin

-        rden <= {rden[1:0], rd_en};

-        wren <= {wren[1:0], wr_en};

-    end

-end

-

-assign c_rd_en = rden[1] & ~rden[2];

-assign c_wr_en = wren[1] & ~wren[2];

- 

-

-endmodule

diff --git a/verilog/rtl/BrqRV_EB1/design/dmi/dmi_wrapper.v b/verilog/rtl/BrqRV_EB1/design/dmi/dmi_wrapper.v
deleted file mode 100644
index 3f0682f..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dmi/dmi_wrapper.v
+++ /dev/null
@@ -1,90 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0

-// Copyright 2018 MERL Corporation or it's affiliates.

-// 

-// Licensed under the Apache License, Version 2.0 (the "License");

-// you may not use this file except in compliance with the License.

-// You may obtain a copy of the License at

-// 

-// http://www.apache.org/licenses/LICENSE-2.0

-// 

-// Unless required by applicable law or agreed to in writing, software

-// distributed under the License is distributed on an "AS IS" BASIS,

-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-// See the License for the specific language governing permissions and

-// limitations under the License.

-//------------------------------------------------------------------------------------

-//

-//  Copyright MERL, 2018

-//  Owner : Anusha Narayanamoorthy

-//  Description:  

-//                Wrapper module for JTAG_TAP and DMI synchronizer

-//

-//-------------------------------------------------------------------------------------

-

-module dmi_wrapper(

-

-  // JTAG signals

-  input              trst_n,              // JTAG reset

-  input              tck,                 // JTAG clock

-  input              tms,                 // Test mode select   

-  input              tdi,                 // Test Data Input

-  output             tdo,                 // Test Data Output           

-  output             tdoEnable,           // Test Data Output enable             

-

-  // Processor Signals

-  input              core_rst_n,          // Core reset                  

-  input              core_clk,            // Core clock                  

-  input [31:1]       jtag_id,             // JTAG ID

-  input [31:0]       rd_data,             // 32 bit Read data from  Processor                       

-  output [31:0]      reg_wr_data,         // 32 bit Write data to Processor                      

-  output [6:0]       reg_wr_addr,         // 7 bit reg address to Processor                   

-  output             reg_en,              // 1 bit  Read enable to Processor                                    

-  output             reg_wr_en,           // 1 bit  Write enable to Processor 

-  output             dmi_hard_reset  

-);

-

-

-  

-

-

-  //Wire Declaration

-  wire                     rd_en;

-  wire                     wr_en;

-  wire                     dmireset;

-

- 

-  //jtag_tap instantiation

- rvjtag_tap i_jtag_tap(

-   .trst(trst_n),                      // dedicated JTAG TRST (active low) pad signal or asynchronous active low power on reset

-   .tck(tck),                          // dedicated JTAG TCK pad signal

-   .tms(tms),                          // dedicated JTAG TMS pad signal

-   .tdi(tdi),                          // dedicated JTAG TDI pad signal

-   .tdo(tdo),                          // dedicated JTAG TDO pad signal

-   .tdoEnable(tdoEnable),              // enable for TDO pad

-   .wr_data(reg_wr_data),              // 32 bit Write data

-   .wr_addr(reg_wr_addr),              // 7 bit Write address

-   .rd_en(rd_en),                      // 1 bit  read enable

-   .wr_en(wr_en),                      // 1 bit  Write enable

-   .rd_data(rd_data),                  // 32 bit Read data

-   .rd_status(2'b0),

-   .idle(3'h0),                         // no need to wait to sample data

-   .dmi_stat(2'b0),                     // no need to wait or error possible

-   .version(4'h1),                      // debug spec 0.13 compliant

-   .jtag_id(jtag_id),

-   .dmi_hard_reset(dmi_hard_reset),

-   .dmi_reset(dmireset)

-);

-

-

-  // dmi_jtag_to_core_sync instantiation

-  dmi_jtag_to_core_sync i_dmi_jtag_to_core_sync(

-    .wr_en(wr_en),                          // 1 bit  Write enable

-    .rd_en(rd_en),                          // 1 bit  Read enable

-

-    .rst_n(core_rst_n),

-    .clk(core_clk),

-    .reg_en(reg_en),                          // 1 bit  Write interface bit

-    .reg_wr_en(reg_wr_en)                          // 1 bit  Write enable

-  );

-

-endmodule

diff --git a/verilog/rtl/BrqRV_EB1/design/dmi/rvjtag_tap.v b/verilog/rtl/BrqRV_EB1/design/dmi/rvjtag_tap.v
deleted file mode 100644
index d4969b3..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dmi/rvjtag_tap.v
+++ /dev/null
@@ -1,224 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or it's affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License
-
-module rvjtag_tap #(
-parameter AWIDTH = 7
-)
-(
-input               trst,
-input               tck,
-input               tms,
-input               tdi,
-output   reg        tdo,
-output              tdoEnable,
-
-output [31:0]       wr_data,
-output [AWIDTH-1:0] wr_addr,
-output              wr_en,
-output              rd_en,
-
-input   [31:0]      rd_data,
-input   [1:0]       rd_status,
-
-output  reg         dmi_reset,
-output  reg         dmi_hard_reset,
-
-input   [2:0]       idle,
-input   [1:0]       dmi_stat,
-/*
---  revisionCode        : 4'h0;
---  manufacturersIdCode : 11'h45;
---  deviceIdCode        : 16'h0001;
---  order MSB .. LSB -> [4 bit version or revision] [16 bit part number] [11 bit manufacturer id] [value of 1'b1 in LSB]
-*/
-input   [31:1]      jtag_id,
-input   [3:0]       version
-);
-
-localparam USER_DR_LENGTH = AWIDTH + 34;
-
-
-reg [USER_DR_LENGTH-1:0] sr, nsr, dr;
-
-///////////////////////////////////////////////////////
-//                      Tap controller
-///////////////////////////////////////////////////////
-logic[3:0] state, nstate;
-logic [4:0] ir;
-wire jtag_reset;
-wire shift_dr;
-wire pause_dr;
-wire update_dr;
-wire capture_dr;
-wire shift_ir;
-wire pause_ir ;
-wire update_ir ;
-wire capture_ir;
-wire[1:0] dr_en;
-wire devid_sel;
-wire [5:0] abits;
-
-assign abits = AWIDTH[5:0];
-
-
-localparam TEST_LOGIC_RESET_STATE = 0;
-localparam RUN_TEST_IDLE_STATE    = 1;
-localparam SELECT_DR_SCAN_STATE   = 2;
-localparam CAPTURE_DR_STATE       = 3;
-localparam SHIFT_DR_STATE         = 4;
-localparam EXIT1_DR_STATE         = 5;
-localparam PAUSE_DR_STATE         = 6;
-localparam EXIT2_DR_STATE         = 7;
-localparam UPDATE_DR_STATE        = 8;
-localparam SELECT_IR_SCAN_STATE   = 9;
-localparam CAPTURE_IR_STATE       = 10;
-localparam SHIFT_IR_STATE         = 11;
-localparam EXIT1_IR_STATE         = 12;
-localparam PAUSE_IR_STATE         = 13;
-localparam EXIT2_IR_STATE         = 14;
-localparam UPDATE_IR_STATE        = 15;
-
-always_comb  begin
-    nstate = state;
-    case(state)
-    TEST_LOGIC_RESET_STATE: nstate = tms ? TEST_LOGIC_RESET_STATE : RUN_TEST_IDLE_STATE;
-    RUN_TEST_IDLE_STATE:    nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    SELECT_DR_SCAN_STATE:   nstate = tms ? SELECT_IR_SCAN_STATE   : CAPTURE_DR_STATE;
-    CAPTURE_DR_STATE:       nstate = tms ? EXIT1_DR_STATE         : SHIFT_DR_STATE;
-    SHIFT_DR_STATE:         nstate = tms ? EXIT1_DR_STATE         : SHIFT_DR_STATE;
-    EXIT1_DR_STATE:         nstate = tms ? UPDATE_DR_STATE        : PAUSE_DR_STATE;
-    PAUSE_DR_STATE:         nstate = tms ? EXIT2_DR_STATE         : PAUSE_DR_STATE;
-    EXIT2_DR_STATE:         nstate = tms ? UPDATE_DR_STATE        : SHIFT_DR_STATE;
-    UPDATE_DR_STATE:        nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    SELECT_IR_SCAN_STATE:   nstate = tms ? TEST_LOGIC_RESET_STATE : CAPTURE_IR_STATE;
-    CAPTURE_IR_STATE:       nstate = tms ? EXIT1_IR_STATE         : SHIFT_IR_STATE;
-    SHIFT_IR_STATE:         nstate = tms ? EXIT1_IR_STATE         : SHIFT_IR_STATE;
-    EXIT1_IR_STATE:         nstate = tms ? UPDATE_IR_STATE        : PAUSE_IR_STATE;
-    PAUSE_IR_STATE:         nstate = tms ? EXIT2_IR_STATE         : PAUSE_IR_STATE;
-    EXIT2_IR_STATE:         nstate = tms ? UPDATE_IR_STATE        : SHIFT_IR_STATE;
-    UPDATE_IR_STATE:        nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    default:                nstate = TEST_LOGIC_RESET_STATE;
-    endcase
-end
-
-always @ (posedge tck or negedge trst) begin
-    if(!trst) state <= TEST_LOGIC_RESET_STATE;
-    else state <= nstate;
-end
-
-assign jtag_reset = state == TEST_LOGIC_RESET_STATE;
-assign shift_dr   = state == SHIFT_DR_STATE;
-assign pause_dr   = state == PAUSE_DR_STATE;
-assign update_dr  = state == UPDATE_DR_STATE;
-assign capture_dr = state == CAPTURE_DR_STATE;
-assign shift_ir   = state == SHIFT_IR_STATE;
-assign pause_ir   = state == PAUSE_IR_STATE;
-assign update_ir  = state == UPDATE_IR_STATE;
-assign capture_ir = state == CAPTURE_IR_STATE;
-
-assign tdoEnable = shift_dr | shift_ir;
-
-///////////////////////////////////////////////////////
-//                      IR register
-///////////////////////////////////////////////////////
-
-always @ (negedge tck or negedge trst) begin
-   if (!trst) ir <= 5'b1;
-   else begin
-      if (jtag_reset) ir <= 5'b1;
-      else if (update_ir) ir <= (sr[4:0] == '0) ? 5'h1f :sr[4:0];
-   end
-end
-
-
-assign devid_sel  = ir == 5'b00001;
-assign dr_en[0]   = ir == 5'b10000;
-assign dr_en[1]   = ir == 5'b10001;
-
-///////////////////////////////////////////////////////
-//                      Shift register
-///////////////////////////////////////////////////////
-always @ (posedge tck or negedge trst) begin
-    if(!trst)begin
-        sr <= '0;
-    end
-    else begin
-        sr <= nsr;
-    end
-end
-
-// SR next value
-always_comb begin
-    nsr = sr;
-    case(1)
-    shift_dr:   begin
-                    case(1)
-                    dr_en[1]:   nsr = {tdi, sr[USER_DR_LENGTH-1:1]};
-
-                    dr_en[0],
-                    devid_sel:  nsr = {{USER_DR_LENGTH-32{1'b0}},tdi, sr[31:1]};
-                    default:    nsr = {{USER_DR_LENGTH-1{1'b0}},tdi}; // bypass
-                    endcase
-                end
-    capture_dr: begin
-                    nsr[0] = 1'b0;
-                    case(1)
-                    dr_en[0]:   nsr = {{USER_DR_LENGTH-15{1'b0}}, idle, dmi_stat, abits, version};
-                    dr_en[1]:   nsr = {{AWIDTH{1'b0}}, rd_data, rd_status};
-                    devid_sel:  nsr = {{USER_DR_LENGTH-32{1'b0}}, jtag_id, 1'b1};
-                    endcase
-                end
-    shift_ir:   nsr = {{USER_DR_LENGTH-5{1'b0}},tdi, sr[4:1]};
-    capture_ir: nsr = {{USER_DR_LENGTH-1{1'b0}},1'b1};
-    endcase
-end
-
-// TDO retiming
-always @ (negedge tck ) tdo <= sr[0];
-
-// DMI CS register
-always @ (posedge tck or negedge trst) begin
-    if(!trst) begin
-        dmi_hard_reset <= 1'b0;
-        dmi_reset      <= 1'b0;
-    end
-    else if (update_dr & dr_en[0]) begin
-        dmi_hard_reset <= sr[17];
-        dmi_reset      <= sr[16];
-    end
-    else begin
-        dmi_hard_reset <= 1'b0;
-        dmi_reset      <= 1'b0;
-    end
-end
-
-// DR register
-always @ (posedge tck or negedge trst) begin
-    if(!trst)
-        dr <=  '0;
-    else begin
-        if (update_dr & dr_en[1])
-            dr <= sr;
-        else
-            dr <= {dr[USER_DR_LENGTH-1:2],2'b0};
-    end
-end
-
-assign {wr_addr, wr_data, wr_en, rd_en} = dr;
-
-
-
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/dmi_jtag_to_core_sync.v b/verilog/rtl/BrqRV_EB1/design/dmi_jtag_to_core_sync.v
deleted file mode 100644
index 25328ea..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dmi_jtag_to_core_sync.v
+++ /dev/null
@@ -1,64 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0

-// Copyright 2018 MERL Corporation or it's affiliates.

-// 

-// Licensed under the Apache License, Version 2.0 (the "License");

-// you may not use this file except in compliance with the License.

-// You may obtain a copy of the License at

-// 

-// http://www.apache.org/licenses/LICENSE-2.0

-// 

-// Unless required by applicable law or agreed to in writing, software

-// distributed under the License is distributed on an "AS IS" BASIS,

-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-// See the License for the specific language governing permissions and

-// limitations under the License.

-//------------------------------------------------------------------------------------

-//

-//  Copyright MERL, 2019

-//  Owner : Alex Grobman

-//  Description:  

-//                This module Synchronizes the signals between JTAG (TCK) and

-//                processor (Core_clk)

-//

-//-------------------------------------------------------------------------------------

-

-module dmi_jtag_to_core_sync (

-// JTAG signals

-input       rd_en,      // 1 bit  Read Enable from JTAG

-input       wr_en,      // 1 bit  Write enable from JTAG

-

-// Processor Signals

-input       rst_n,      // Core reset

-input       clk,        // Core clock

-

-output      reg_en,     // 1 bit  Write interface bit to Processor

-output      reg_wr_en   // 1 bit  Write enable to Processor

-);

-  

-wire        c_rd_en;

-wire        c_wr_en;

-reg [2:0]   rden, wren;

- 

-

-// Outputs

-assign reg_en    = c_wr_en | c_rd_en;

-assign reg_wr_en = c_wr_en;

-

-

-// synchronizers  

-always @ ( posedge clk or negedge rst_n) begin

-    if(!rst_n) begin

-        rden <= '0;

-        wren <= '0;

-    end

-    else begin

-        rden <= {rden[1:0], rd_en};

-        wren <= {wren[1:0], wr_en};

-    end

-end

-

-assign c_rd_en = rden[1] & ~rden[2];

-assign c_wr_en = wren[1] & ~wren[2];

- 

-

-endmodule

diff --git a/verilog/rtl/BrqRV_EB1/design/dmi_wrapper.v b/verilog/rtl/BrqRV_EB1/design/dmi_wrapper.v
deleted file mode 100644
index 3f0682f..0000000
--- a/verilog/rtl/BrqRV_EB1/design/dmi_wrapper.v
+++ /dev/null
@@ -1,90 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0

-// Copyright 2018 MERL Corporation or it's affiliates.

-// 

-// Licensed under the Apache License, Version 2.0 (the "License");

-// you may not use this file except in compliance with the License.

-// You may obtain a copy of the License at

-// 

-// http://www.apache.org/licenses/LICENSE-2.0

-// 

-// Unless required by applicable law or agreed to in writing, software

-// distributed under the License is distributed on an "AS IS" BASIS,

-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-// See the License for the specific language governing permissions and

-// limitations under the License.

-//------------------------------------------------------------------------------------

-//

-//  Copyright MERL, 2018

-//  Owner : Anusha Narayanamoorthy

-//  Description:  

-//                Wrapper module for JTAG_TAP and DMI synchronizer

-//

-//-------------------------------------------------------------------------------------

-

-module dmi_wrapper(

-

-  // JTAG signals

-  input              trst_n,              // JTAG reset

-  input              tck,                 // JTAG clock

-  input              tms,                 // Test mode select   

-  input              tdi,                 // Test Data Input

-  output             tdo,                 // Test Data Output           

-  output             tdoEnable,           // Test Data Output enable             

-

-  // Processor Signals

-  input              core_rst_n,          // Core reset                  

-  input              core_clk,            // Core clock                  

-  input [31:1]       jtag_id,             // JTAG ID

-  input [31:0]       rd_data,             // 32 bit Read data from  Processor                       

-  output [31:0]      reg_wr_data,         // 32 bit Write data to Processor                      

-  output [6:0]       reg_wr_addr,         // 7 bit reg address to Processor                   

-  output             reg_en,              // 1 bit  Read enable to Processor                                    

-  output             reg_wr_en,           // 1 bit  Write enable to Processor 

-  output             dmi_hard_reset  

-);

-

-

-  

-

-

-  //Wire Declaration

-  wire                     rd_en;

-  wire                     wr_en;

-  wire                     dmireset;

-

- 

-  //jtag_tap instantiation

- rvjtag_tap i_jtag_tap(

-   .trst(trst_n),                      // dedicated JTAG TRST (active low) pad signal or asynchronous active low power on reset

-   .tck(tck),                          // dedicated JTAG TCK pad signal

-   .tms(tms),                          // dedicated JTAG TMS pad signal

-   .tdi(tdi),                          // dedicated JTAG TDI pad signal

-   .tdo(tdo),                          // dedicated JTAG TDO pad signal

-   .tdoEnable(tdoEnable),              // enable for TDO pad

-   .wr_data(reg_wr_data),              // 32 bit Write data

-   .wr_addr(reg_wr_addr),              // 7 bit Write address

-   .rd_en(rd_en),                      // 1 bit  read enable

-   .wr_en(wr_en),                      // 1 bit  Write enable

-   .rd_data(rd_data),                  // 32 bit Read data

-   .rd_status(2'b0),

-   .idle(3'h0),                         // no need to wait to sample data

-   .dmi_stat(2'b0),                     // no need to wait or error possible

-   .version(4'h1),                      // debug spec 0.13 compliant

-   .jtag_id(jtag_id),

-   .dmi_hard_reset(dmi_hard_reset),

-   .dmi_reset(dmireset)

-);

-

-

-  // dmi_jtag_to_core_sync instantiation

-  dmi_jtag_to_core_sync i_dmi_jtag_to_core_sync(

-    .wr_en(wr_en),                          // 1 bit  Write enable

-    .rd_en(rd_en),                          // 1 bit  Read enable

-

-    .rst_n(core_rst_n),

-    .clk(core_clk),

-    .reg_en(reg_en),                          // 1 bit  Write interface bit

-    .reg_wr_en(reg_wr_en)                          // 1 bit  Write enable

-  );

-

-endmodule

diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_brqrv.sv b/verilog/rtl/BrqRV_EB1/design/eb1_brqrv.sv
deleted file mode 100644
index 68b3f8c..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_brqrv.sv
+++ /dev/null
@@ -1,1311 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Function: Top level brqrv core file
-// Comments:
-//
-//********************************************************************************
-module eb1_brqrv
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic                  clk,
-   input logic                  rst_l,
-   input logic                  dbg_rst_l,
-   input logic [31:1]           rst_vec,
-   input logic                  nmi_int,
-   input logic [31:1]           nmi_vec,
-   output logic                 core_rst_l,   // This is "rst_l | dbg_rst_l"
-
-   output logic                 active_l2clk,
-   output logic                 free_l2clk,
-
-   output logic [31:0] trace_rv_i_insn_ip,
-   output logic [31:0] trace_rv_i_address_ip,
-   output logic   trace_rv_i_valid_ip,
-   output logic   trace_rv_i_exception_ip,
-   output logic [4:0]  trace_rv_i_ecause_ip,
-   output logic   trace_rv_i_interrupt_ip,
-   output logic [31:0] trace_rv_i_tval_ip,
-
-
-   output logic                 dccm_clk_override,
-   output logic                 icm_clk_override,
-   output logic                 dec_tlu_core_ecc_disable,
-
-   // external halt/run interface
-   input logic  i_cpu_halt_req,    // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,     // Asynchronous Restart request to CPU
-   output logic o_cpu_halt_ack,    // Core Acknowledge to Halt request
-   output logic o_cpu_halt_status, // 1'b1 indicates processor is halted
-   output logic o_cpu_run_ack,     // Core Acknowledge to run request
-   output logic o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id, // CORE ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req, // Async halt request
-   input logic mpc_debug_run_req, // Async run request
-   input logic mpc_reset_run_req, // Run/halt after reset
-   output logic mpc_debug_halt_ack, // Halt ack
-   output logic mpc_debug_run_ack, // Run ack
-   output logic debug_brkpt_status, // debug breakpoint
-
-   output logic dec_tlu_perfcnt0, // toggles when slot0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1,
-   output logic dec_tlu_perfcnt2,
-   output logic dec_tlu_perfcnt3,
-
-   // DCCM ports
-   output logic                          dccm_wren,
-   output logic                          dccm_rden,
-   output logic [pt.DCCM_BITS-1:0]          dccm_wr_addr_lo,
-   output logic [pt.DCCM_BITS-1:0]          dccm_wr_addr_hi,
-   output logic [pt.DCCM_BITS-1:0]          dccm_rd_addr_lo,
-   output logic [pt.DCCM_BITS-1:0]          dccm_rd_addr_hi,
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_wr_data_lo,
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_wr_data_hi,
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]    dccm_rd_data_lo,
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]    dccm_rd_data_hi,
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]           iccm_rw_addr,
-   output logic                  iccm_wren,
-   output logic                  iccm_rden,
-   output logic [2:0]            iccm_wr_size,
-   output logic [77:0]           iccm_wr_data,
-   output logic                  iccm_buf_correct_ecc,
-   output logic                  iccm_correction_state,
-
-   input  logic [63:0]          iccm_rd_data,
-   input  logic [77:0]           iccm_rd_data_ecc,
-
-   // ICache , ITAG  ports
-   output logic [31:1]           ic_rw_addr,
-   output logic [pt.ICACHE_NUM_WAYS-1:0]            ic_tag_valid,
-   output logic [pt.ICACHE_NUM_WAYS-1:0]            ic_wr_en,
-   output logic                  ic_rd_en,
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0][70:0]               ic_wr_data,         // Data to fill to the Icache. With ECC
-   input  logic [63:0]               ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]               ic_debug_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]               ictag_debug_rd_data,// Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,   // Debug wr cache.
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-   output logic [63:0]               ic_premux_data,     // Premux data to be muxed with each way of the Icache.
-   output logic                      ic_sel_premux_data, // Select premux data
-
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]            ic_rd_hit,
-   input  logic                  ic_tag_perr,        // Icache Tag parity error
-
-   //-------------------------- LSU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-   input  logic                            lsu_axi_rlast,
-
-   //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   input  logic                            ifu_axi_awready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   input  logic                            ifu_axi_wready,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   input  logic                            ifu_axi_bvalid,
-   output logic                            ifu_axi_bready,
-   input  logic [1:0]                      ifu_axi_bresp,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-   input  logic                            ifu_axi_rlast,
-
-   //-------------------------- SB AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            sb_axi_awvalid,
-   input  logic                            sb_axi_awready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_awid,
-   output logic [31:0]                     sb_axi_awaddr,
-   output logic [3:0]                      sb_axi_awregion,
-   output logic [7:0]                      sb_axi_awlen,
-   output logic [2:0]                      sb_axi_awsize,
-   output logic [1:0]                      sb_axi_awburst,
-   output logic                            sb_axi_awlock,
-   output logic [3:0]                      sb_axi_awcache,
-   output logic [2:0]                      sb_axi_awprot,
-   output logic [3:0]                      sb_axi_awqos,
-
-   output logic                            sb_axi_wvalid,
-   input  logic                            sb_axi_wready,
-   output logic [63:0]                     sb_axi_wdata,
-   output logic [7:0]                      sb_axi_wstrb,
-   output logic                            sb_axi_wlast,
-
-   input  logic                            sb_axi_bvalid,
-   output logic                            sb_axi_bready,
-   input  logic [1:0]                      sb_axi_bresp,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_bid,
-
-   // AXI Read Channels
-   output logic                            sb_axi_arvalid,
-   input  logic                            sb_axi_arready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_arid,
-   output logic [31:0]                     sb_axi_araddr,
-   output logic [3:0]                      sb_axi_arregion,
-   output logic [7:0]                      sb_axi_arlen,
-   output logic [2:0]                      sb_axi_arsize,
-   output logic [1:0]                      sb_axi_arburst,
-   output logic                            sb_axi_arlock,
-   output logic [3:0]                      sb_axi_arcache,
-   output logic [2:0]                      sb_axi_arprot,
-   output logic [3:0]                      sb_axi_arqos,
-
-   input  logic                            sb_axi_rvalid,
-   output logic                            sb_axi_rready,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_rid,
-   input  logic [63:0]                     sb_axi_rdata,
-   input  logic [1:0]                      sb_axi_rresp,
-   input  logic                            sb_axi_rlast,
-
-   //-------------------------- DMA AXI signals--------------------------
-   // AXI Write Channels
-   input  logic                         dma_axi_awvalid,
-   output logic                         dma_axi_awready,
-   input  logic [pt.DMA_BUS_TAG-1:0]    dma_axi_awid,
-   input  logic [31:0]                  dma_axi_awaddr,
-   input  logic [2:0]                   dma_axi_awsize,
-   input  logic [2:0]                   dma_axi_awprot,
-   input  logic [7:0]                   dma_axi_awlen,
-   input  logic [1:0]                   dma_axi_awburst,
-
-
-   input  logic                         dma_axi_wvalid,
-   output logic                         dma_axi_wready,
-   input  logic [63:0]                  dma_axi_wdata,
-   input  logic [7:0]                   dma_axi_wstrb,
-   input  logic                         dma_axi_wlast,
-
-   output logic                         dma_axi_bvalid,
-   input  logic                         dma_axi_bready,
-   output logic [1:0]                   dma_axi_bresp,
-   output logic [pt.DMA_BUS_TAG-1:0]    dma_axi_bid,
-
-   // AXI Read Channels
-   input  logic                         dma_axi_arvalid,
-   output logic                         dma_axi_arready,
-   input  logic [pt.DMA_BUS_TAG-1:0]    dma_axi_arid,
-   input  logic [31:0]                  dma_axi_araddr,
-   input  logic [2:0]                   dma_axi_arsize,
-   input  logic [2:0]                   dma_axi_arprot,
-   input  logic [7:0]                   dma_axi_arlen,
-   input  logic [1:0]                   dma_axi_arburst,
-
-   output logic                         dma_axi_rvalid,
-   input  logic                         dma_axi_rready,
-   output logic [pt.DMA_BUS_TAG-1:0]    dma_axi_rid,
-   output logic [63:0]                  dma_axi_rdata,
-   output logic [1:0]                   dma_axi_rresp,
-   output logic                         dma_axi_rlast,
-
-
- //// AHB LITE BUS
-   output logic [31:0]           haddr,
-   output logic [2:0]            hburst,
-   output logic                  hmastlock,
-   output logic [3:0]            hprot,
-   output logic [2:0]            hsize,
-   output logic [1:0]            htrans,
-   output logic                  hwrite,
-
-   input  logic [63:0]           hrdata,
-   input  logic                  hready,
-   input  logic                  hresp,
-
-   // LSU AHB Master
-   output logic [31:0]          lsu_haddr,
-   output logic [2:0]           lsu_hburst,
-   output logic                 lsu_hmastlock,
-   output logic [3:0]           lsu_hprot,
-   output logic [2:0]           lsu_hsize,
-   output logic [1:0]           lsu_htrans,
-   output logic                 lsu_hwrite,
-   output logic [63:0]          lsu_hwdata,
-
-   input  logic [63:0]          lsu_hrdata,
-   input  logic                 lsu_hready,
-   input  logic                 lsu_hresp,
-
-   //System Bus Debug Master
-   output logic [31:0]          sb_haddr,
-   output logic [2:0]           sb_hburst,
-   output logic                 sb_hmastlock,
-   output logic [3:0]           sb_hprot,
-   output logic [2:0]           sb_hsize,
-   output logic [1:0]           sb_htrans,
-   output logic                 sb_hwrite,
-   output logic [63:0]          sb_hwdata,
-
-   input  logic [63:0]          sb_hrdata,
-   input  logic                 sb_hready,
-   input  logic                 sb_hresp,
-
-   // DMA Slave
-   input logic                   dma_hsel,
-   input logic [31:0]            dma_haddr,
-   input logic [2:0]             dma_hburst,
-   input logic                   dma_hmastlock,
-   input logic [3:0]             dma_hprot,
-   input logic [2:0]             dma_hsize,
-   input logic [1:0]             dma_htrans,
-   input logic                   dma_hwrite,
-   input logic [63:0]            dma_hwdata,
-   input logic                   dma_hreadyin,
-
-   output  logic [63:0]          dma_hrdata,
-   output  logic                 dma_hreadyout,
-   output  logic                 dma_hresp,
-
-   input   logic                 lsu_bus_clk_en,
-   input   logic                 ifu_bus_clk_en,
-   input   logic                 dbg_bus_clk_en,
-   input   logic                 dma_bus_clk_en,
-
-   input logic                  dmi_reg_en,                // read or write
-   input logic [6:0]            dmi_reg_addr,              // address of DM register
-   input logic                  dmi_reg_wr_en,             // write instruction
-   input logic [31:0]           dmi_reg_wdata,             // write data
-   output logic [31:0]          dmi_reg_rdata,
-
-   input logic [pt.PIC_TOTAL_INT:1]           extintsrc_req,
-   input logic                   timer_int,
-   input logic                   soft_int,
-   input logic                   scan_mode
-);
-
-
-
-
-   logic [63:0]                  hwdata_nc;
-   //----------------------------------------------------------------------
-   //
-   //----------------------------------------------------------------------
-
-   logic                         ifu_pmu_instr_aligned;
-   logic                         ifu_ic_error_start;
-   logic                         ifu_iccm_rd_ecc_single_err;
-
-   logic                         lsu_axi_awready_ahb;
-   logic                         lsu_axi_wready_ahb;
-   logic                         lsu_axi_bvalid_ahb;
-   logic                         lsu_axi_bready_ahb;
-   logic [1:0]                   lsu_axi_bresp_ahb;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_bid_ahb;
-   logic                         lsu_axi_arready_ahb;
-   logic                         lsu_axi_rvalid_ahb;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_rid_ahb;
-   logic [63:0]                  lsu_axi_rdata_ahb;
-   logic [1:0]                   lsu_axi_rresp_ahb;
-   logic                         lsu_axi_rlast_ahb;
-
-   logic                         lsu_axi_awready_int;
-   logic                         lsu_axi_wready_int;
-   logic                         lsu_axi_bvalid_int;
-   logic                         lsu_axi_bready_int;
-   logic [1:0]                   lsu_axi_bresp_int;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_bid_int;
-   logic                         lsu_axi_arready_int;
-   logic                         lsu_axi_rvalid_int;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_rid_int;
-   logic [63:0]                  lsu_axi_rdata_int;
-   logic [1:0]                   lsu_axi_rresp_int;
-   logic                         lsu_axi_rlast_int;
-   
-   logic                         ifu_axi_awready_ahb;
-   logic                         ifu_axi_wready_ahb;
-   logic                         ifu_axi_bvalid_ahb;
-   logic                         ifu_axi_bready_ahb;
-   logic [1:0]                   ifu_axi_bresp_ahb;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_bid_ahb;
-   logic                         ifu_axi_arready_ahb;
-   logic                         ifu_axi_rvalid_ahb;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_rid_ahb;
-   logic [63:0]                  ifu_axi_rdata_ahb;
-   logic [1:0]                   ifu_axi_rresp_ahb;
-   logic                         ifu_axi_rlast_ahb;
-
-   logic                         ifu_axi_awready_int;
-   logic                         ifu_axi_wready_int;
-   logic                         ifu_axi_bvalid_int;
-   logic                         ifu_axi_bready_int;
-   logic [1:0]                   ifu_axi_bresp_int;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_bid_int;
-   logic                         ifu_axi_arready_int;
-   logic                         ifu_axi_rvalid_int;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_rid_int;
-   logic [63:0]                  ifu_axi_rdata_int;
-   logic [1:0]                   ifu_axi_rresp_int;
-   logic                         ifu_axi_rlast_int;
-
-   logic                         sb_axi_awready_ahb;
-   logic                         sb_axi_wready_ahb;
-   logic                         sb_axi_bvalid_ahb;
-   logic                         sb_axi_bready_ahb;
-   logic [1:0]                   sb_axi_bresp_ahb;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_bid_ahb;
-   logic                         sb_axi_arready_ahb;
-   logic                         sb_axi_rvalid_ahb;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_rid_ahb;
-   logic [63:0]                  sb_axi_rdata_ahb;
-   logic [1:0]                   sb_axi_rresp_ahb;
-   logic                         sb_axi_rlast_ahb;
-
-   logic                         sb_axi_awready_int;
-   logic                         sb_axi_wready_int;
-   logic                         sb_axi_bvalid_int;
-   logic                         sb_axi_bready_int;
-   logic [1:0]                   sb_axi_bresp_int;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_bid_int;
-   logic                         sb_axi_arready_int;
-   logic                         sb_axi_rvalid_int;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_rid_int;
-   logic [63:0]                  sb_axi_rdata_int;
-   logic [1:0]                   sb_axi_rresp_int;
-   logic                         sb_axi_rlast_int;
-
-   logic                         dma_axi_awvalid_ahb;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_awid_ahb;
-   logic [31:0]                  dma_axi_awaddr_ahb;
-   logic [2:0]                   dma_axi_awsize_ahb;
-   logic [2:0]                   dma_axi_awprot_ahb;
-   logic [7:0]                   dma_axi_awlen_ahb;
-   logic [1:0]                   dma_axi_awburst_ahb;
-   logic                         dma_axi_wvalid_ahb;
-   logic [63:0]                  dma_axi_wdata_ahb;
-   logic [7:0]                   dma_axi_wstrb_ahb;
-   logic                         dma_axi_wlast_ahb;
-   logic                         dma_axi_bready_ahb;
-   logic                         dma_axi_arvalid_ahb;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_arid_ahb;
-   logic [31:0]                  dma_axi_araddr_ahb;
-   logic [2:0]                   dma_axi_arsize_ahb;
-   logic [2:0]                   dma_axi_arprot_ahb;
-   logic [7:0]                   dma_axi_arlen_ahb;
-   logic [1:0]                   dma_axi_arburst_ahb;
-   logic                         dma_axi_rready_ahb;
-
-   logic                         dma_axi_awvalid_int;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_awid_int;
-   logic [31:0]                  dma_axi_awaddr_int;
-   logic [2:0]                   dma_axi_awsize_int;
-   logic [2:0]                   dma_axi_awprot_int;
-   logic [7:0]                   dma_axi_awlen_int;
-   logic [1:0]                   dma_axi_awburst_int;
-   logic                         dma_axi_wvalid_int;
-   logic [63:0]                  dma_axi_wdata_int;
-   logic [7:0]                   dma_axi_wstrb_int;
-   logic                         dma_axi_wlast_int;
-   logic                         dma_axi_bready_int;
-   logic                         dma_axi_arvalid_int;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_arid_int;
-   logic [31:0]                  dma_axi_araddr_int;
-   logic [2:0]                   dma_axi_arsize_int;
-   logic [2:0]                   dma_axi_arprot_int;
-   logic [7:0]                   dma_axi_arlen_int;
-   logic [1:0]                   dma_axi_arburst_int;
-   logic                         dma_axi_rready_int;
-
-
-// Icache debug
-   logic [70:0] ifu_ic_debug_rd_data; // diagnostic icache read data
-   logic ifu_ic_debug_rd_data_valid; // diagnostic icache read data valid
-   eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt; // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-
-
-   logic         dec_i0_rs1_en_d;
-   logic         dec_i0_rs2_en_d;
-   logic  [31:0] gpr_i0_rs1_d;
-   logic  [31:0] gpr_i0_rs2_d;
-
-   logic [31:0] dec_i0_result_r;
-   logic [31:0] exu_i0_result_x;
-   logic [31:1] exu_i0_pc_x;
-   logic [31:1] exu_npc_r;
-
-   eb1_alu_pkt_t  i0_ap;
-
-   // Trigger signals
-   eb1_trigger_pkt_t [3:0]     trigger_pkt_any;
-   logic [3:0]             lsu_trigger_match_m;
-
-
-   logic [31:0] dec_i0_immed_d;
-   logic [12:1] dec_i0_br_immed_d;
-   logic         dec_i0_select_pc_d;
-
-   logic [31:1] dec_i0_pc_d;
-   logic [3:0]  dec_i0_rs1_bypass_en_d;
-   logic [3:0]  dec_i0_rs2_bypass_en_d;
-
-   logic         dec_i0_alu_decode_d;
-   logic         dec_i0_branch_d;
-
-   logic         ifu_miss_state_idle;
-   logic         dec_tlu_flush_noredir_r;
-   logic         dec_tlu_flush_leak_one_r;
-   logic         dec_tlu_flush_err_r;
-   logic         ifu_i0_valid;
-   logic [31:0]  ifu_i0_instr;
-   logic [31:1]  ifu_i0_pc;
-
-   logic        exu_flush_final;
-
-   logic [31:1] exu_flush_path_final;
-
-   logic [31:0] exu_lsu_rs1_d;
-   logic [31:0] exu_lsu_rs2_d;
-
-
-   eb1_lsu_pkt_t    lsu_p;
-   logic             dec_qual_lsu_d;
-
-   logic        dec_lsu_valid_raw_d;
-   logic [11:0] dec_lsu_offset_d;
-
-   logic [31:0]  lsu_result_m;
-   logic [31:0]  lsu_result_corr_r;     // This is the ECC corrected data going to RF
-   logic         lsu_single_ecc_error_incr;     // Increment the ecc counter
-   eb1_lsu_error_pkt_t lsu_error_pkt_r;
-   logic         lsu_imprecise_error_load_any;
-   logic         lsu_imprecise_error_store_any;
-   logic [31:0]  lsu_imprecise_error_addr_any;
-   logic         lsu_load_stall_any;       // This is for blocking loads
-   logic         lsu_store_stall_any;      // This is for blocking stores
-   logic         lsu_idle_any;             // doesn't include DMA
-   logic         lsu_active;               // lsu is active. used for clock
-
-
-   logic [31:1]  lsu_fir_addr;        // fast interrupt address
-   logic [1:0]   lsu_fir_error;       // Error during fast interrupt lookup
-
-   // Non-blocking loads
-   logic                                 lsu_nonblock_load_valid_m;
-   logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]   lsu_nonblock_load_tag_m;
-   logic                                 lsu_nonblock_load_inv_r;
-   logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]   lsu_nonblock_load_inv_tag_r;
-   logic                                 lsu_nonblock_load_data_valid;
-   logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]   lsu_nonblock_load_data_tag;
-   logic [31:0]                          lsu_nonblock_load_data;
-
-   logic        dec_csr_ren_d;
-   logic [31:0] dec_csr_rddata_d;
-
-   logic [31:0] exu_csr_rs1_x;
-
-   logic        dec_tlu_i0_commit_cmt;
-   logic        dec_tlu_flush_lower_r;
-   logic        dec_tlu_flush_lower_wb;
-   logic        dec_tlu_i0_kill_writeb_r;     // I0 is flushed, don't writeback any results to arch state
-   logic        dec_tlu_fence_i_r;            // flush is a fence_i rfnpc, flush icache
-
-   logic [31:1] dec_tlu_flush_path_r;
-   logic [31:0] dec_tlu_mrac_ff;        // CSR for memory region control
-
-   logic        ifu_i0_pc4;
-
-   eb1_mul_pkt_t  mul_p;
-
-   eb1_div_pkt_t  div_p;
-   logic           dec_div_cancel;
-
-   logic [31:0] exu_div_result;
-   logic exu_div_wren;
-
-   logic dec_i0_decode_d;
-
-
-   logic [31:1] pred_correct_npc_x;
-
-   eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt;
-
-   eb1_predict_pkt_t  exu_mp_pkt;
-   logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_eghr;
-   logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_index;
-   logic [pt.BTB_BTAG_SIZE-1:0]          exu_mp_btag;
-
-   logic [pt.BHT_GHR_SIZE-1:0]  exu_i0_br_fghr_r;
-   logic [1:0]  exu_i0_br_hist_r;
-   logic        exu_i0_br_error_r;
-   logic        exu_i0_br_start_error_r;
-   logic        exu_i0_br_valid_r;
-   logic        exu_i0_br_mp_r;
-   logic        exu_i0_br_middle_r;
-
-   logic        exu_i0_br_way_r;
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r;
-
-   logic        dma_dccm_req;
-   logic        dma_iccm_req;
-   logic [2:0]  dma_mem_tag;
-   logic [31:0] dma_mem_addr;
-   logic [2:0]  dma_mem_sz;
-   logic        dma_mem_write;
-   logic [63:0] dma_mem_wdata;
-
-   logic        dccm_dma_rvalid;
-   logic        dccm_dma_ecc_error;
-   logic [2:0]  dccm_dma_rtag;
-   logic [63:0] dccm_dma_rdata;
-   logic        iccm_dma_rvalid;
-   logic        iccm_dma_ecc_error;
-   logic [2:0]  iccm_dma_rtag;
-   logic [63:0] iccm_dma_rdata;
-
-   logic        dma_dccm_stall_any;       // Stall the ld/st in decode if asserted
-   logic        dma_iccm_stall_any;       // Stall the fetch
-   logic        dccm_ready;
-   logic        iccm_ready;
-
-   logic        dma_pmu_dccm_read;
-   logic        dma_pmu_dccm_write;
-   logic        dma_pmu_any_read;
-   logic        dma_pmu_any_write;
-
-   logic        ifu_i0_icaf;
-   logic [1:0]  ifu_i0_icaf_type;
-
-
-   logic        ifu_i0_icaf_second;
-   logic        ifu_i0_dbecc;
-   logic        iccm_dma_sb_error;
-
-   eb1_br_pkt_t i0_brp;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index;
-   logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr;
-   logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag;
-
-   logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index;
-   logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index; // Fully associative btb error index
-
-
-   eb1_predict_pkt_t dec_i0_predict_p_d;
-
-   logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d;                // DEC predict fghr
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d;     // DEC predict index
-   logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d;               // DEC predict branch tag
-
-   // PIC ports
-   logic                  picm_wren;
-   logic                  picm_rden;
-   logic                  picm_mken;
-   logic [31:0]           picm_rdaddr;
-   logic [31:0]           picm_wraddr;
-   logic [31:0]           picm_wr_data;
-   logic [31:0]           picm_rd_data;
-
-   // feature disable from mfdc
-   logic  dec_tlu_external_ldfwd_disable; // disable external load forwarding
-   logic  dec_tlu_bpred_disable;
-   logic  dec_tlu_wb_coalescing_disable;
-   logic  dec_tlu_sideeffect_posted_disable;
-   logic [2:0] dec_tlu_dma_qos_prty;         // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   logic  dec_tlu_misc_clk_override;
-   logic  dec_tlu_ifu_clk_override;
-   logic  dec_tlu_lsu_clk_override;
-   logic  dec_tlu_bus_clk_override;
-   logic  dec_tlu_pic_clk_override;
-   logic  dec_tlu_dccm_clk_override;
-   logic  dec_tlu_icm_clk_override;
-
-   logic  dec_tlu_picio_clk_override;
-
-   assign        dccm_clk_override = dec_tlu_dccm_clk_override;   // dccm memory
-   assign        icm_clk_override = dec_tlu_icm_clk_override;    // icache/iccm memory
-
-   // -----------------------DEBUG  START -------------------------------
-
-   logic [31:0]            dbg_cmd_addr;              // the address of the debug command to used by the core
-   logic [31:0]            dbg_cmd_wrdata;            // If the debug command is a write command, this has the data to be written to the CSR/GPR
-   logic                   dbg_cmd_valid;             // commad is being driven by the dbg module. One pulse. Only dirven when core_halted has been seen
-   logic                   dbg_cmd_write;             // 1: write command; 0: read_command
-   logic [1:0]             dbg_cmd_type;              // 0:gpr 1:csr 2: memory
-   logic [1:0]             dbg_cmd_size;              // size of the abstract mem access debug command
-   logic                   dbg_halt_req;              // Sticky signal indicating that the debug module wants to start the entering of debug mode ( start the halting sequence )
-   logic                   dbg_resume_req;            // Sticky signal indicating that the debug module wants to resume from debug mode
-   logic                   dbg_core_rst_l;            // Core reset from DM
-
-   logic                   core_dbg_cmd_done;         // Final muxed cmd done to debug
-   logic                   core_dbg_cmd_fail;         // Final muxed cmd done to debug
-   logic [31:0]            core_dbg_rddata;           // Final muxed cmd done to debug
-
-   logic                   dma_dbg_cmd_done;          // Abstarct memory command sent to dma is done
-   logic                   dma_dbg_cmd_fail;          // Abstarct memory command sent to dma failed
-   logic [31:0]            dma_dbg_rddata;            // Read data for abstract memory access
-
-   logic                   dbg_dma_bubble;            // Debug needs a bubble to send a valid
-   logic                   dma_dbg_ready;             // DMA is ready to accept debug request
-
-   logic [31:0]            dec_dbg_rddata;            // The core drives this data ( intercepts the pipe and sends it here )
-   logic                   dec_dbg_cmd_done;          // This will be treated like a valid signal
-   logic                   dec_dbg_cmd_fail;          // Abstract command failed
-   logic                   dec_tlu_mpc_halted_only;   // Only halted due to MPC
-   logic                   dec_tlu_dbg_halted;        // The core has finished the queiscing sequence. Sticks this signal high
-   logic                   dec_tlu_resume_ack;
-   logic                   dec_tlu_debug_mode;        // Core is in debug mode
-   logic                   dec_debug_wdata_rs1_d;
-   logic                   dec_tlu_force_halt;        // halt has been forced
-
-   logic [1:0]             dec_data_en;
-   logic [1:0]             dec_ctl_en;
-
-   // PMU Signals
-   logic                   exu_pmu_i0_br_misp;
-   logic                   exu_pmu_i0_br_ataken;
-   logic                   exu_pmu_i0_pc4;
-
-   logic                   lsu_pmu_load_external_m;
-   logic                   lsu_pmu_store_external_m;
-   logic                   lsu_pmu_misaligned_m;
-   logic                   lsu_pmu_bus_trxn;
-   logic                   lsu_pmu_bus_misaligned;
-   logic                   lsu_pmu_bus_error;
-   logic                   lsu_pmu_bus_busy;
-
-   logic                   ifu_pmu_fetch_stall;
-   logic                   ifu_pmu_ic_miss;
-   logic                   ifu_pmu_ic_hit;
-   logic                   ifu_pmu_bus_error;
-   logic                   ifu_pmu_bus_busy;
-   logic                   ifu_pmu_bus_trxn;
-
-   logic                   active_state;
-   logic                   free_clk;
-   logic                   active_clk;
-   logic                   dec_pause_state_cg;
-
-   logic                   lsu_nonblock_load_data_error;
-
-   logic [15:0]            ifu_i0_cinst;
-
-// fast interrupt
-   logic [31:2]            dec_tlu_meihap;
-   logic                   dec_extint_stall;
-
-   eb1_trace_pkt_t  trace_rv_trace_pkt;
-
-
-   logic                   lsu_fastint_stall_any;
-
-   logic [7:0]  pic_claimid;
-   logic [3:0]  pic_pl, dec_tlu_meicurpl, dec_tlu_meipt;
-   logic        mexintpend;
-   logic        mhwakeup;
-
-   logic        dma_active;
-
-
-   logic        pause_state;
-   logic        halt_state;
-
-   logic        dec_tlu_core_empty;
-   
-
-   assign pause_state = dec_pause_state_cg & ~(dma_active | lsu_active) & dec_tlu_core_empty;
-
-   assign halt_state = o_cpu_halt_status & ~(dma_active | lsu_active);
-
-
-   assign active_state = (~(halt_state | pause_state) | dec_tlu_flush_lower_r | dec_tlu_flush_lower_wb)  | dec_tlu_misc_clk_override;
-
-   rvoclkhdr free_cg2   ( .clk(clk), .en(1'b1),         .l1clk(free_l2clk), .* );
-   rvoclkhdr active_cg2 ( .clk(clk), .en(active_state), .l1clk(active_l2clk), .* );
-
-// all other clock headers are 1st level
-   rvoclkhdr free_cg1   ( .clk(free_l2clk),     .en(1'b1), .l1clk(free_clk), .* );
-   rvoclkhdr active_cg1 ( .clk(active_l2clk),   .en(1'b1), .l1clk(active_clk), .* );
-
-
-   assign core_dbg_cmd_done = dma_dbg_cmd_done | dec_dbg_cmd_done;
-   assign core_dbg_cmd_fail = dma_dbg_cmd_fail | dec_dbg_cmd_fail;
-   assign core_dbg_rddata[31:0] = dma_dbg_cmd_done ? dma_dbg_rddata[31:0] : dec_dbg_rddata[31:0];
-
-   eb1_dbg #(.pt(pt)) dbg (
-      .rst_l(core_rst_l),
-      .clk(free_l2clk),
-      .clk_override(dec_tlu_misc_clk_override),
-
-      // AXI signals
-      .sb_axi_awready(sb_axi_awready_int),
-      .sb_axi_wready(sb_axi_wready_int),
-      .sb_axi_bvalid(sb_axi_bvalid_int),
-      .sb_axi_bresp(sb_axi_bresp_int[1:0]),
-
-      .sb_axi_arready(sb_axi_arready_int),
-      .sb_axi_rvalid(sb_axi_rvalid_int),
-      .sb_axi_rdata(sb_axi_rdata_int[63:0]),
-      .sb_axi_rresp(sb_axi_rresp_int[1:0]),
-      .*
-   );
-
-`ifdef RV_ASSERT_ON
-      assert_fetch_indbghalt: assert #0 (~(ifu.ifc_fetch_req_f & dec.tlu.dbg_tlu_halted_f & ~dec.tlu.dcsr_single_step_running)) else $display("ERROR: Fetching in dBG halt!");
-`endif
-
-   // -----------------   DEBUG END -----------------------------
-
-   assign core_rst_l = rst_l & (dbg_core_rst_l | scan_mode);
-   // fetch
-   eb1_ifu #(.pt(pt)) ifu (
-                            .clk(active_l2clk),
-                            .rst_l(core_rst_l),
-                            .dec_tlu_flush_err_wb       (dec_tlu_flush_err_r      ),
-                            .dec_tlu_flush_noredir_wb   (dec_tlu_flush_noredir_r  ),
-                            .dec_tlu_fence_i_wb         (dec_tlu_fence_i_r        ),
-                            .dec_tlu_flush_leak_one_wb  (dec_tlu_flush_leak_one_r ),
-                            .dec_tlu_flush_lower_wb     (dec_tlu_flush_lower_r    ),
-
-                            // AXI signals
-                            .ifu_axi_arready(ifu_axi_arready_int),
-                            .ifu_axi_rvalid(ifu_axi_rvalid_int),
-                            .ifu_axi_rid(ifu_axi_rid_int[pt.IFU_BUS_TAG-1:0]),
-                            .ifu_axi_rdata(ifu_axi_rdata_int[63:0]),
-                            .ifu_axi_rresp(ifu_axi_rresp_int[1:0]),
-                            .exu_flush_final(exu_flush_final),
-
-                            .*
-                            );
-
-
-   eb1_dec #(.pt(pt)) dec (
-                            .clk(active_l2clk),
-                            .dbg_cmd_wrdata(dbg_cmd_wrdata[1:0]),
-                            .rst_l(core_rst_l),
-                            .i_cpu_halt_req(i_cpu_halt_req),
-                            .i_cpu_run_req(i_cpu_run_req),  
-                            .*
-                            );
-
-   eb1_exu #(.pt(pt)) exu (
-                            .clk(active_l2clk),
-                            .rst_l(core_rst_l),
-                            .*
-                            );
-
-   eb1_lsu #(.pt(pt)) lsu (
-                            .clk(active_l2clk),
-                            .rst_l(core_rst_l),
-                            .clk_override(dec_tlu_lsu_clk_override),
-                            .dec_tlu_i0_kill_writeb_r(dec_tlu_i0_kill_writeb_r),
-
-                            // AXI signals
-                            .lsu_axi_awready(lsu_axi_awready_int),
-                            .lsu_axi_wready(lsu_axi_wready_int),
-                            .lsu_axi_bvalid(lsu_axi_bvalid_int),
-                            .lsu_axi_bid(lsu_axi_bid_int[pt.LSU_BUS_TAG-1:0]),
-                            .lsu_axi_bresp(lsu_axi_bresp_int[1:0]),
-
-                            .lsu_axi_arready(lsu_axi_arready_int),
-                            .lsu_axi_rvalid(lsu_axi_rvalid_int),
-                            .lsu_axi_rid(lsu_axi_rid_int[pt.LSU_BUS_TAG-1:0]),
-                            .lsu_axi_rdata(lsu_axi_rdata_int[63:0]),
-                            .lsu_axi_rresp(lsu_axi_rresp_int[1:0]),
-                            .lsu_axi_rlast(lsu_axi_rlast_int),
-
-                            .*
-
-                            );
-
-
-   eb1_pic_ctrl  #(.pt(pt)) pic_ctrl_inst (
-                                            .clk(free_l2clk),
-                                            .clk_override(dec_tlu_pic_clk_override),
-                                            .io_clk_override(dec_tlu_picio_clk_override),
-                                            .picm_mken (picm_mken),
-                                            .extintsrc_req({extintsrc_req[pt.PIC_TOTAL_INT:1],1'b0}),
-                                            .pl(pic_pl[3:0]),
-                                            .claimid(pic_claimid[7:0]),
-                                            .meicurpl(dec_tlu_meicurpl[3:0]),
-                                            .meipt(dec_tlu_meipt[3:0]),
-                                            .rst_l(core_rst_l),
-                                            .*);
-
-   eb1_dma_ctrl #(.pt(pt)) dma_ctrl (
-                                      .clk(free_l2clk),
-                                      .rst_l(core_rst_l),
-                                      .clk_override(dec_tlu_misc_clk_override),
-
-                                      // AXI signals
-                                      .dma_axi_awvalid(dma_axi_awvalid_int),
-                                      .dma_axi_awid(dma_axi_awid_int[pt.DMA_BUS_TAG-1:0]),
-                                      .dma_axi_awaddr(dma_axi_awaddr_int[31:0]),
-                                      .dma_axi_awsize(dma_axi_awsize_int[2:0]),
-                                      .dma_axi_wvalid(dma_axi_wvalid_int),
-                                      .dma_axi_wdata(dma_axi_wdata_int[63:0]),
-                                      .dma_axi_wstrb(dma_axi_wstrb_int[7:0]),
-                                      .dma_axi_bready(dma_axi_bready_int),
-
-                                      .dma_axi_arvalid(dma_axi_arvalid_int),
-                                      .dma_axi_arid(dma_axi_arid_int[pt.DMA_BUS_TAG-1:0]),
-                                      .dma_axi_araddr(dma_axi_araddr_int[31:0]),
-                                      .dma_axi_arsize(dma_axi_arsize_int[2:0]),
-                                      .dma_axi_rready(dma_axi_rready_int),
-
-                                      .*
-                                      );
-
-   if (pt.BUILD_AHB_LITE == 1) begin: Gen_AXI_To_AHB
-
-      // AXI4 -> AHB Gasket for LSU
-      axi4_to_ahb #(.pt(pt),
-                    .TAG(pt.LSU_BUS_TAG)) lsu_axi4_to_ahb (
-
-         .clk(free_l2clk),
-         .free_clk(free_clk),
-         .rst_l(core_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(lsu_bus_clk_en),
-         .dec_tlu_force_halt(dec_tlu_force_halt),
-
-         // AXI Write Channels
-         .axi_awvalid(lsu_axi_awvalid),
-         .axi_awready(lsu_axi_awready_ahb),
-         .axi_awid(lsu_axi_awid[pt.LSU_BUS_TAG-1:0]),
-         .axi_awaddr(lsu_axi_awaddr[31:0]),
-         .axi_awsize(lsu_axi_awsize[2:0]),
-         .axi_awprot(lsu_axi_awprot[2:0]),
-
-         .axi_wvalid(lsu_axi_wvalid),
-         .axi_wready(lsu_axi_wready_ahb),
-         .axi_wdata(lsu_axi_wdata[63:0]),
-         .axi_wstrb(lsu_axi_wstrb[7:0]),
-         .axi_wlast(lsu_axi_wlast),
-
-         .axi_bvalid(lsu_axi_bvalid_ahb),
-         .axi_bready(lsu_axi_bready),
-         .axi_bresp(lsu_axi_bresp_ahb[1:0]),
-         .axi_bid(lsu_axi_bid_ahb[pt.LSU_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(lsu_axi_arvalid),
-         .axi_arready(lsu_axi_arready_ahb),
-         .axi_arid(lsu_axi_arid[pt.LSU_BUS_TAG-1:0]),
-         .axi_araddr(lsu_axi_araddr[31:0]),
-         .axi_arsize(lsu_axi_arsize[2:0]),
-         .axi_arprot(lsu_axi_arprot[2:0]),
-
-         .axi_rvalid(lsu_axi_rvalid_ahb),
-         .axi_rready(lsu_axi_rready),
-         .axi_rid(lsu_axi_rid_ahb[pt.LSU_BUS_TAG-1:0]),
-         .axi_rdata(lsu_axi_rdata_ahb[63:0]),
-         .axi_rresp(lsu_axi_rresp_ahb[1:0]),
-         .axi_rlast(lsu_axi_rlast_ahb),
-
-         // AHB-LITE signals
-         .ahb_haddr(lsu_haddr[31:0]),
-         .ahb_hburst(lsu_hburst),
-         .ahb_hmastlock(lsu_hmastlock),
-         .ahb_hprot(lsu_hprot[3:0]),
-         .ahb_hsize(lsu_hsize[2:0]),
-         .ahb_htrans(lsu_htrans[1:0]),
-         .ahb_hwrite(lsu_hwrite),
-         .ahb_hwdata(lsu_hwdata[63:0]),
-
-         .ahb_hrdata(lsu_hrdata[63:0]),
-         .ahb_hready(lsu_hready),
-         .ahb_hresp(lsu_hresp),
-
-         .*
-      );
-
-      axi4_to_ahb #(.pt(pt),
-                    .TAG(pt.IFU_BUS_TAG)) ifu_axi4_to_ahb (
-         .clk(free_l2clk),
-         .free_clk(free_clk),
-         .rst_l(core_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(ifu_bus_clk_en),
-         .dec_tlu_force_halt(dec_tlu_force_halt),
-
-          // AHB-Lite signals
-         .ahb_haddr(haddr[31:0]),
-         .ahb_hburst(hburst),
-         .ahb_hmastlock(hmastlock),
-         .ahb_hprot(hprot[3:0]),
-         .ahb_hsize(hsize[2:0]),
-         .ahb_htrans(htrans[1:0]),
-         .ahb_hwrite(hwrite),
-         .ahb_hwdata(hwdata_nc[63:0]),
-
-         .ahb_hrdata(hrdata[63:0]),
-         .ahb_hready(hready),
-         .ahb_hresp(hresp),
-
-         // AXI Write Channels
-         .axi_awvalid(ifu_axi_awvalid),
-         .axi_awready(ifu_axi_awready_ahb),
-         .axi_awid(ifu_axi_awid[pt.IFU_BUS_TAG-1:0]),
-         .axi_awaddr(ifu_axi_awaddr[31:0]),
-         .axi_awsize(ifu_axi_awsize[2:0]),
-         .axi_awprot(ifu_axi_awprot[2:0]),
-
-         .axi_wvalid(ifu_axi_wvalid),
-         .axi_wready(ifu_axi_wready_ahb),
-         .axi_wdata(ifu_axi_wdata[63:0]),
-         .axi_wstrb(ifu_axi_wstrb[7:0]),
-         .axi_wlast(ifu_axi_wlast),
-
-         .axi_bvalid(ifu_axi_bvalid_ahb),
-         .axi_bready(1'b1),
-         .axi_bresp(ifu_axi_bresp_ahb[1:0]),
-         .axi_bid(ifu_axi_bid_ahb[pt.IFU_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(ifu_axi_arvalid),
-         .axi_arready(ifu_axi_arready_ahb),
-         .axi_arid(ifu_axi_arid[pt.IFU_BUS_TAG-1:0]),
-         .axi_araddr(ifu_axi_araddr[31:0]),
-         .axi_arsize(ifu_axi_arsize[2:0]),
-         .axi_arprot(ifu_axi_arprot[2:0]),
-
-         .axi_rvalid(ifu_axi_rvalid_ahb),
-         .axi_rready(ifu_axi_rready),
-         .axi_rid(ifu_axi_rid_ahb[pt.IFU_BUS_TAG-1:0]),
-         .axi_rdata(ifu_axi_rdata_ahb[63:0]),
-         .axi_rresp(ifu_axi_rresp_ahb[1:0]),
-         .axi_rlast(ifu_axi_rlast_ahb),
-         .*
-      );
-
-      // AXI4 -> AHB Gasket for System Bus
-      axi4_to_ahb #(.pt(pt),
-                    .TAG(pt.SB_BUS_TAG)) sb_axi4_to_ahb (
-         .clk(free_l2clk),
-         .free_clk(free_clk),
-         .rst_l(dbg_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(dbg_bus_clk_en),
-         .dec_tlu_force_halt(1'b0),
-
-         // AXI Write Channels
-         .axi_awvalid(sb_axi_awvalid),
-         .axi_awready(sb_axi_awready_ahb),
-         .axi_awid(sb_axi_awid[pt.SB_BUS_TAG-1:0]),
-         .axi_awaddr(sb_axi_awaddr[31:0]),
-         .axi_awsize(sb_axi_awsize[2:0]),
-         .axi_awprot(sb_axi_awprot[2:0]),
-
-         .axi_wvalid(sb_axi_wvalid),
-         .axi_wready(sb_axi_wready_ahb),
-         .axi_wdata(sb_axi_wdata[63:0]),
-         .axi_wstrb(sb_axi_wstrb[7:0]),
-         .axi_wlast(sb_axi_wlast),
-
-         .axi_bvalid(sb_axi_bvalid_ahb),
-         .axi_bready(sb_axi_bready),
-         .axi_bresp(sb_axi_bresp_ahb[1:0]),
-         .axi_bid(sb_axi_bid_ahb[pt.SB_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(sb_axi_arvalid),
-         .axi_arready(sb_axi_arready_ahb),
-         .axi_arid(sb_axi_arid[pt.SB_BUS_TAG-1:0]),
-         .axi_araddr(sb_axi_araddr[31:0]),
-         .axi_arsize(sb_axi_arsize[2:0]),
-         .axi_arprot(sb_axi_arprot[2:0]),
-
-         .axi_rvalid(sb_axi_rvalid_ahb),
-         .axi_rready(sb_axi_rready),
-         .axi_rid(sb_axi_rid_ahb[pt.SB_BUS_TAG-1:0]),
-         .axi_rdata(sb_axi_rdata_ahb[63:0]),
-         .axi_rresp(sb_axi_rresp_ahb[1:0]),
-         .axi_rlast(sb_axi_rlast_ahb),
-         // AHB-LITE signals
-         .ahb_haddr(sb_haddr[31:0]),
-         .ahb_hburst(sb_hburst),
-         .ahb_hmastlock(sb_hmastlock),
-         .ahb_hprot(sb_hprot[3:0]),
-         .ahb_hsize(sb_hsize[2:0]),
-         .ahb_htrans(sb_htrans[1:0]),
-         .ahb_hwrite(sb_hwrite),
-         .ahb_hwdata(sb_hwdata[63:0]),
-
-         .ahb_hrdata(sb_hrdata[63:0]),
-         .ahb_hready(sb_hready),
-         .ahb_hresp(sb_hresp),
-
-         .*
-      );
-
-      //AHB -> AXI4 Gasket for DMA
-      ahb_to_axi4 #(.pt(pt),
-                    .TAG(pt.DMA_BUS_TAG)) dma_ahb_to_axi4 (
-         .clk(free_l2clk),
-         .rst_l(core_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(dma_bus_clk_en),
-
-         // AXI Write Channels
-         .axi_awvalid(dma_axi_awvalid_ahb),
-         .axi_awready(dma_axi_awready),
-         .axi_awid(dma_axi_awid_ahb[pt.DMA_BUS_TAG-1:0]),
-         .axi_awaddr(dma_axi_awaddr_ahb[31:0]),
-         .axi_awsize(dma_axi_awsize_ahb[2:0]),
-         .axi_awprot(dma_axi_awprot_ahb[2:0]),
-         .axi_awlen(dma_axi_awlen_ahb[7:0]),
-         .axi_awburst(dma_axi_awburst_ahb[1:0]),
-
-         .axi_wvalid(dma_axi_wvalid_ahb),
-         .axi_wready(dma_axi_wready),
-         .axi_wdata(dma_axi_wdata_ahb[63:0]),
-         .axi_wstrb(dma_axi_wstrb_ahb[7:0]),
-         .axi_wlast(dma_axi_wlast_ahb),
-
-         .axi_bvalid(dma_axi_bvalid),
-         .axi_bready(dma_axi_bready_ahb),
-         .axi_bresp(dma_axi_bresp[1:0]),
-         .axi_bid(dma_axi_bid[pt.DMA_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(dma_axi_arvalid_ahb),
-         .axi_arready(dma_axi_arready),
-         .axi_arid(dma_axi_arid_ahb[pt.DMA_BUS_TAG-1:0]),
-         .axi_araddr(dma_axi_araddr_ahb[31:0]),
-         .axi_arsize(dma_axi_arsize_ahb[2:0]),
-         .axi_arprot(dma_axi_arprot_ahb[2:0]),
-         .axi_arlen(dma_axi_arlen_ahb[7:0]),
-         .axi_arburst(dma_axi_arburst_ahb[1:0]),
-
-         .axi_rvalid(dma_axi_rvalid),
-         .axi_rready(dma_axi_rready_ahb),
-         .axi_rid(dma_axi_rid[pt.DMA_BUS_TAG-1:0]),
-         .axi_rdata(dma_axi_rdata[63:0]),
-         .axi_rresp(dma_axi_rresp[1:0]),
-
-          // AHB signals
-         .ahb_haddr(dma_haddr[31:0]),
-         .ahb_hburst(dma_hburst),
-         .ahb_hmastlock(dma_hmastlock),
-         .ahb_hprot(dma_hprot[3:0]),
-         .ahb_hsize(dma_hsize[2:0]),
-         .ahb_htrans(dma_htrans[1:0]),
-         .ahb_hwrite(dma_hwrite),
-         .ahb_hwdata(dma_hwdata[63:0]),
-
-         .ahb_hrdata(dma_hrdata[63:0]),
-         .ahb_hreadyout(dma_hreadyout),
-         .ahb_hresp(dma_hresp),
-         .ahb_hreadyin(dma_hreadyin),
-         .ahb_hsel(dma_hsel),
-         .*
-      );
-
-   end
-
-   // Drive the final AXI inputs
-   assign lsu_axi_awready_int                 = pt.BUILD_AHB_LITE ? lsu_axi_awready_ahb : lsu_axi_awready;
-   assign lsu_axi_wready_int                  = pt.BUILD_AHB_LITE ? lsu_axi_wready_ahb : lsu_axi_wready;
-   assign lsu_axi_bvalid_int                  = pt.BUILD_AHB_LITE ? lsu_axi_bvalid_ahb : lsu_axi_bvalid;
-   assign lsu_axi_bready_int                  = pt.BUILD_AHB_LITE ? lsu_axi_bready_ahb : lsu_axi_bready;
-   assign lsu_axi_bresp_int[1:0]              = pt.BUILD_AHB_LITE ? lsu_axi_bresp_ahb[1:0] : lsu_axi_bresp[1:0];
-   assign lsu_axi_bid_int[pt.LSU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? lsu_axi_bid_ahb[pt.LSU_BUS_TAG-1:0] : lsu_axi_bid[pt.LSU_BUS_TAG-1:0];
-   assign lsu_axi_arready_int                 = pt.BUILD_AHB_LITE ? lsu_axi_arready_ahb : lsu_axi_arready;
-   assign lsu_axi_rvalid_int                  = pt.BUILD_AHB_LITE ? lsu_axi_rvalid_ahb : lsu_axi_rvalid;
-   assign lsu_axi_rid_int[pt.LSU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? lsu_axi_rid_ahb[pt.LSU_BUS_TAG-1:0] : lsu_axi_rid[pt.LSU_BUS_TAG-1:0];
-   assign lsu_axi_rdata_int[63:0]             = pt.BUILD_AHB_LITE ? lsu_axi_rdata_ahb[63:0] : lsu_axi_rdata[63:0];
-   assign lsu_axi_rresp_int[1:0]              = pt.BUILD_AHB_LITE ? lsu_axi_rresp_ahb[1:0] : lsu_axi_rresp[1:0];
-   assign lsu_axi_rlast_int                   = pt.BUILD_AHB_LITE ? lsu_axi_rlast_ahb : lsu_axi_rlast;
-
-   assign ifu_axi_awready_int                 = pt.BUILD_AHB_LITE ? ifu_axi_awready_ahb : ifu_axi_awready;
-   assign ifu_axi_wready_int                  = pt.BUILD_AHB_LITE ? ifu_axi_wready_ahb : ifu_axi_wready;
-   assign ifu_axi_bvalid_int                  = pt.BUILD_AHB_LITE ? ifu_axi_bvalid_ahb : ifu_axi_bvalid;
-   assign ifu_axi_bready_int                  = pt.BUILD_AHB_LITE ? ifu_axi_bready_ahb : ifu_axi_bready;
-   assign ifu_axi_bresp_int[1:0]              = pt.BUILD_AHB_LITE ? ifu_axi_bresp_ahb[1:0] : ifu_axi_bresp[1:0];
-   assign ifu_axi_bid_int[pt.IFU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? ifu_axi_bid_ahb[pt.IFU_BUS_TAG-1:0] : ifu_axi_bid[pt.IFU_BUS_TAG-1:0];
-   assign ifu_axi_arready_int                 = pt.BUILD_AHB_LITE ? ifu_axi_arready_ahb : ifu_axi_arready;
-   assign ifu_axi_rvalid_int                  = pt.BUILD_AHB_LITE ? ifu_axi_rvalid_ahb : ifu_axi_rvalid;
-   assign ifu_axi_rid_int[pt.IFU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? ifu_axi_rid_ahb[pt.IFU_BUS_TAG-1:0] : ifu_axi_rid[pt.IFU_BUS_TAG-1:0];
-   assign ifu_axi_rdata_int[63:0]             = pt.BUILD_AHB_LITE ? ifu_axi_rdata_ahb[63:0] : ifu_axi_rdata[63:0];
-   assign ifu_axi_rresp_int[1:0]              = pt.BUILD_AHB_LITE ? ifu_axi_rresp_ahb[1:0] : ifu_axi_rresp[1:0];
-   assign ifu_axi_rlast_int                   = pt.BUILD_AHB_LITE ? ifu_axi_rlast_ahb : ifu_axi_rlast;
-
-   assign sb_axi_awready_int                  = pt.BUILD_AHB_LITE ? sb_axi_awready_ahb : sb_axi_awready;
-   assign sb_axi_wready_int                   = pt.BUILD_AHB_LITE ? sb_axi_wready_ahb : sb_axi_wready;
-   assign sb_axi_bvalid_int                   = pt.BUILD_AHB_LITE ? sb_axi_bvalid_ahb : sb_axi_bvalid;
-   assign sb_axi_bready_int                   = pt.BUILD_AHB_LITE ? sb_axi_bready_ahb : sb_axi_bready;
-   assign sb_axi_bresp_int[1:0]               = pt.BUILD_AHB_LITE ? sb_axi_bresp_ahb[1:0] : sb_axi_bresp[1:0];
-   assign sb_axi_bid_int[pt.SB_BUS_TAG-1:0]   = pt.BUILD_AHB_LITE ? sb_axi_bid_ahb[pt.SB_BUS_TAG-1:0] : sb_axi_bid[pt.SB_BUS_TAG-1:0];
-   assign sb_axi_arready_int                  = pt.BUILD_AHB_LITE ? sb_axi_arready_ahb : sb_axi_arready;
-   assign sb_axi_rvalid_int                   = pt.BUILD_AHB_LITE ? sb_axi_rvalid_ahb : sb_axi_rvalid;
-   assign sb_axi_rid_int[pt.SB_BUS_TAG-1:0]   = pt.BUILD_AHB_LITE ? sb_axi_rid_ahb[pt.SB_BUS_TAG-1:0] : sb_axi_rid[pt.SB_BUS_TAG-1:0];
-   assign sb_axi_rdata_int[63:0]              = pt.BUILD_AHB_LITE ? sb_axi_rdata_ahb[63:0] : sb_axi_rdata[63:0];
-   assign sb_axi_rresp_int[1:0]               = pt.BUILD_AHB_LITE ? sb_axi_rresp_ahb[1:0] : sb_axi_rresp[1:0];
-   assign sb_axi_rlast_int                    = pt.BUILD_AHB_LITE ? sb_axi_rlast_ahb : sb_axi_rlast;
-
-   assign dma_axi_awvalid_int                  = pt.BUILD_AHB_LITE ? dma_axi_awvalid_ahb : dma_axi_awvalid;
-   assign dma_axi_awid_int[pt.DMA_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? dma_axi_awid_ahb[pt.DMA_BUS_TAG-1:0] : dma_axi_awid[pt.DMA_BUS_TAG-1:0];
-   assign dma_axi_awaddr_int[31:0]             = pt.BUILD_AHB_LITE ? dma_axi_awaddr_ahb[31:0] : dma_axi_awaddr[31:0];
-   assign dma_axi_awsize_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_awsize_ahb[2:0] : dma_axi_awsize[2:0];
-   assign dma_axi_awprot_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_awprot_ahb[2:0] : dma_axi_awprot[2:0];
-   assign dma_axi_awlen_int[7:0]               = pt.BUILD_AHB_LITE ? dma_axi_awlen_ahb[7:0] : dma_axi_awlen[7:0];
-   assign dma_axi_awburst_int[1:0]             = pt.BUILD_AHB_LITE ? dma_axi_awburst_ahb[1:0] : dma_axi_awburst[1:0];
-   assign dma_axi_wvalid_int                   = pt.BUILD_AHB_LITE ? dma_axi_wvalid_ahb : dma_axi_wvalid;
-   assign dma_axi_wdata_int[63:0]              = pt.BUILD_AHB_LITE ? dma_axi_wdata_ahb[63:0] : dma_axi_wdata;
-   assign dma_axi_wstrb_int[7:0]               = pt.BUILD_AHB_LITE ? dma_axi_wstrb_ahb[7:0] : dma_axi_wstrb[7:0];
-   assign dma_axi_wlast_int                    = pt.BUILD_AHB_LITE ? dma_axi_wlast_ahb : dma_axi_wlast;
-   assign dma_axi_bready_int                   = pt.BUILD_AHB_LITE ? dma_axi_bready_ahb : dma_axi_bready;
-   assign dma_axi_arvalid_int                  = pt.BUILD_AHB_LITE ? dma_axi_arvalid_ahb : dma_axi_arvalid;
-   assign dma_axi_arid_int[pt.DMA_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? dma_axi_arid_ahb[pt.DMA_BUS_TAG-1:0] : dma_axi_arid[pt.DMA_BUS_TAG-1:0];
-   assign dma_axi_araddr_int[31:0]             = pt.BUILD_AHB_LITE ? dma_axi_araddr_ahb[31:0] : dma_axi_araddr[31:0];
-   assign dma_axi_arsize_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_arsize_ahb[2:0] : dma_axi_arsize[2:0];
-   assign dma_axi_arprot_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_arprot_ahb[2:0] : dma_axi_arprot[2:0];
-   assign dma_axi_arlen_int[7:0]               = pt.BUILD_AHB_LITE ? dma_axi_arlen_ahb[7:0] : dma_axi_arlen[7:0];
-   assign dma_axi_arburst_int[1:0]             = pt.BUILD_AHB_LITE ? dma_axi_arburst_ahb[1:0] : dma_axi_arburst[1:0];
-   assign dma_axi_rready_int                   = pt.BUILD_AHB_LITE ? dma_axi_rready_ahb : dma_axi_rready;
-
- 
-if  (pt.BUILD_AHB_LITE == 1) begin
-`ifdef RV_ASSERT_ON
-   property ahb_trxn_aligned;
-     @(posedge clk) disable iff(~rst_l) (lsu_htrans[1:0] != 2'b0)  |-> ((lsu_hsize[2:0] == 3'h0)                              |
-                                                                        ((lsu_hsize[2:0] == 3'h1) & (lsu_haddr[0] == 1'b0))   |
-                                                                        ((lsu_hsize[2:0] == 3'h2) & (lsu_haddr[1:0] == 2'b0)) |
-                                                                        ((lsu_hsize[2:0] == 3'h3) & (lsu_haddr[2:0] == 3'b0)));
-   endproperty
-   assert_ahb_trxn_aligned: assert property (ahb_trxn_aligned) else
-     $display("Assertion ahb_trxn_aligned failed: lsu_htrans=2'h%h, lsu_hsize=3'h%h, lsu_haddr=32'h%h",lsu_htrans[1:0], lsu_hsize[2:0], lsu_haddr[31:0]);
-
-   property dma_trxn_aligned;
-     @(posedge clk) disable iff(~rst_l) (dma_htrans[1:0] != 2'b0)  |-> ((dma_hsize[2:0] == 3'h0)                              |
-                                                                        ((dma_hsize[2:0] == 3'h1) & (dma_haddr[0] == 1'b0))   |
-                                                                        ((dma_hsize[2:0] == 3'h2) & (dma_haddr[1:0] == 2'b0)) |
-                                                                        ((dma_hsize[2:0] == 3'h3) & (dma_haddr[2:0] == 3'b0)));
-   endproperty
-
-
-`endif
-   end // if (pt.BUILD_AHB_LITE == 1)
-
-
-      // unpack packet
-      // also need retires_p==3
-
-      assign trace_rv_i_insn_ip[31:0]     = trace_rv_trace_pkt.trace_rv_i_insn_ip[31:0];
-
-      assign trace_rv_i_address_ip[31:0]  = trace_rv_trace_pkt.trace_rv_i_address_ip[31:0];
-
-      assign trace_rv_i_valid_ip     = trace_rv_trace_pkt.trace_rv_i_valid_ip;
-
-      assign trace_rv_i_exception_ip = trace_rv_trace_pkt.trace_rv_i_exception_ip;
-
-      assign trace_rv_i_ecause_ip[4:0]    = trace_rv_trace_pkt.trace_rv_i_ecause_ip[4:0];
-
-      assign trace_rv_i_interrupt_ip = trace_rv_trace_pkt.trace_rv_i_interrupt_ip;
-
-      assign trace_rv_i_tval_ip[31:0]     = trace_rv_trace_pkt.trace_rv_i_tval_ip[31:0];
-			
-endmodule // eb1_brqrv
-
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_brqrv_wrapper.sv b/verilog/rtl/BrqRV_EB1/design/eb1_brqrv_wrapper.sv
deleted file mode 100644
index d5f9a69..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_brqrv_wrapper.sv
+++ /dev/null
@@ -1,766 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Function: Top wrapper file with eb1_brqrv/mem instantiated inside
-// Comments:
-//
-//********************************************************************************
-module eb1_brqrv_wrapper
-import eb1_pkg::*;
- #(
-`include "eb1_param.vh"
-)
-(
-   input logic			             vccd1,
-   input logic				     vssd1,
-   input logic                             clk,
-   input logic                             rst_l,
-   input logic                             dbg_rst_l,
-   input logic [31:1]                      rst_vec,
-   input logic                             nmi_int,
-   input logic [31:1]                      nmi_vec,
-   input logic [31:1]                      jtag_id,
-   input 				     uart_rx,
-
-
-   output logic [31:0]                     trace_rv_i_insn_ip,
-   output logic [31:0]                     trace_rv_i_address_ip,
-   output logic                            trace_rv_i_valid_ip,
-   output logic                            trace_rv_i_exception_ip,
-   output logic [4:0]                      trace_rv_i_ecause_ip,
-   output logic                            trace_rv_i_interrupt_ip,
-   output logic [31:0]                     trace_rv_i_tval_ip,
-
-   // Bus signals
-`ifdef RV_BUILD_AXI4
-   //-------------------------- LSU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-   input  logic                            lsu_axi_rlast,
-
-   //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   input  logic                            ifu_axi_awready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   input  logic                            ifu_axi_wready,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   input  logic                            ifu_axi_bvalid,
-   output logic                            ifu_axi_bready,
-   input  logic [1:0]                      ifu_axi_bresp,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-   input  logic                            ifu_axi_rlast,
-
-   //-------------------------- SB AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            sb_axi_awvalid,
-   input  logic                            sb_axi_awready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_awid,
-   output logic [31:0]                     sb_axi_awaddr,
-   output logic [3:0]                      sb_axi_awregion,
-   output logic [7:0]                      sb_axi_awlen,
-   output logic [2:0]                      sb_axi_awsize,
-   output logic [1:0]                      sb_axi_awburst,
-   output logic                            sb_axi_awlock,
-   output logic [3:0]                      sb_axi_awcache,
-   output logic [2:0]                      sb_axi_awprot,
-   output logic [3:0]                      sb_axi_awqos,
-
-   output logic                            sb_axi_wvalid,
-   input  logic                            sb_axi_wready,
-   output logic [63:0]                     sb_axi_wdata,
-   output logic [7:0]                      sb_axi_wstrb,
-   output logic                            sb_axi_wlast,
-
-   input  logic                            sb_axi_bvalid,
-   output logic                            sb_axi_bready,
-   input  logic [1:0]                      sb_axi_bresp,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_bid,
-
-   // AXI Read Channels
-   output logic                            sb_axi_arvalid,
-   input  logic                            sb_axi_arready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_arid,
-   output logic [31:0]                     sb_axi_araddr,
-   output logic [3:0]                      sb_axi_arregion,
-   output logic [7:0]                      sb_axi_arlen,
-   output logic [2:0]                      sb_axi_arsize,
-   output logic [1:0]                      sb_axi_arburst,
-   output logic                            sb_axi_arlock,
-   output logic [3:0]                      sb_axi_arcache,
-   output logic [2:0]                      sb_axi_arprot,
-   output logic [3:0]                      sb_axi_arqos,
-
-   input  logic                            sb_axi_rvalid,
-   output logic                            sb_axi_rready,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_rid,
-   input  logic [63:0]                     sb_axi_rdata,
-   input  logic [1:0]                      sb_axi_rresp,
-   input  logic                            sb_axi_rlast,
-
-   //-------------------------- DMA AXI signals--------------------------
-   // AXI Write Channels
-   input  logic                            dma_axi_awvalid,
-   output logic                            dma_axi_awready,
-   input  logic [pt.DMA_BUS_TAG-1:0]       dma_axi_awid,
-   input  logic [31:0]                     dma_axi_awaddr,
-   input  logic [2:0]                      dma_axi_awsize,
-   input  logic [2:0]                      dma_axi_awprot,
-   input  logic [7:0]                      dma_axi_awlen,
-   input  logic [1:0]                      dma_axi_awburst,
-
-
-   input  logic                            dma_axi_wvalid,
-   output logic                            dma_axi_wready,
-   input  logic [63:0]                     dma_axi_wdata,
-   input  logic [7:0]                      dma_axi_wstrb,
-   input  logic                            dma_axi_wlast,
-
-   output logic                            dma_axi_bvalid,
-   input  logic                            dma_axi_bready,
-   output logic [1:0]                      dma_axi_bresp,
-   output logic [pt.DMA_BUS_TAG-1:0]       dma_axi_bid,
-
-   // AXI Read Channels
-   input  logic                            dma_axi_arvalid,
-   output logic                            dma_axi_arready,
-   input  logic [pt.DMA_BUS_TAG-1:0]       dma_axi_arid,
-   input  logic [31:0]                     dma_axi_araddr,
-   input  logic [2:0]                      dma_axi_arsize,
-   input  logic [2:0]                      dma_axi_arprot,
-   input  logic [7:0]                      dma_axi_arlen,
-   input  logic [1:0]                      dma_axi_arburst,
-
-   output logic                            dma_axi_rvalid,
-   input  logic                            dma_axi_rready,
-   output logic [pt.DMA_BUS_TAG-1:0]       dma_axi_rid,
-   output logic [63:0]                     dma_axi_rdata,
-   output logic [1:0]                      dma_axi_rresp,
-   output logic                            dma_axi_rlast,
-`endif
-
-`ifdef RV_BUILD_AHB_LITE
- //// AHB LITE BUS
-   output logic [31:0]                     haddr,
-   output logic [2:0]                      hburst,
-   output logic                            hmastlock,
-   output logic [3:0]                      hprot,
-   output logic [2:0]                      hsize,
-   output logic [1:0]                      htrans,
-   output logic                            hwrite,
-
-   input logic [63:0]                      hrdata,
-   input logic                             hready,
-   input logic                             hresp,
-
-   // LSU AHB Master
-   output logic [31:0]                     lsu_haddr,
-   output logic [2:0]                      lsu_hburst,
-   output logic                            lsu_hmastlock,
-   output logic [3:0]                      lsu_hprot,
-   output logic [2:0]                      lsu_hsize,
-   output logic [1:0]                      lsu_htrans,
-   output logic                            lsu_hwrite,
-   output logic [63:0]                     lsu_hwdata,
-
-   input logic [63:0]                      lsu_hrdata,
-   input logic                             lsu_hready,
-   input logic                             lsu_hresp,
-   // Debug Syster Bus AHB
-   output logic [31:0]                     sb_haddr,
-   output logic [2:0]                      sb_hburst,
-   output logic                            sb_hmastlock,
-   output logic [3:0]                      sb_hprot,
-   output logic [2:0]                      sb_hsize,
-   output logic [1:0]                      sb_htrans,
-   output logic                            sb_hwrite,
-   output logic [63:0]                     sb_hwdata,
-
-   input  logic [63:0]                     sb_hrdata,
-   input  logic                            sb_hready,
-   input  logic                            sb_hresp,
-
-   // DMA Slave
-   input logic                             dma_hsel,
-   input logic [31:0]                      dma_haddr,
-   input logic [2:0]                       dma_hburst,
-   input logic                             dma_hmastlock,
-   input logic [3:0]                       dma_hprot,
-   input logic [2:0]                       dma_hsize,
-   input logic [1:0]                       dma_htrans,
-   input logic                             dma_hwrite,
-   input logic [63:0]                      dma_hwdata,
-   input logic                             dma_hreadyin,
-
-   output logic [63:0]                     dma_hrdata,
-   output logic                            dma_hreadyout,
-   output logic                            dma_hresp,
-`endif
-   // clk ratio signals
-   input logic                             lsu_bus_clk_en, // Clock ratio b/w cpu core clk & AHB master interface
-   input logic                             ifu_bus_clk_en, // Clock ratio b/w cpu core clk & AHB master interface
-   input logic                             dbg_bus_clk_en, // Clock ratio b/w cpu core clk & AHB master interface
-   input logic                             dma_bus_clk_en, // Clock ratio b/w cpu core clk & AHB slave interface
-
- // all of these test inputs are brought to top-level; must be tied off based on usage by physical design (ie. icache or not, iccm or not, dccm or not)
-
-   input                                   eb1_dccm_ext_in_pkt_t  [pt.DCCM_NUM_BANKS-1:0] dccm_ext_in_pkt,
-   input                                   eb1_ccm_ext_in_pkt_t  [pt.ICCM_NUM_BANKS-1:0] iccm_ext_in_pkt,
-   input                                   eb1_ic_data_ext_in_pkt_t  [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] ic_data_ext_in_pkt,
-   input                                   eb1_ic_tag_ext_in_pkt_t  [pt.ICACHE_NUM_WAYS-1:0] ic_tag_ext_in_pkt,
-
-   input logic                             timer_int,
-   input logic                             soft_int,
-   input logic [pt.PIC_TOTAL_INT:1]        extintsrc_req,
-
-   output logic                            dec_tlu_perfcnt0, // toggles when slot0 perf counter 0 has an event inc
-   output logic                            dec_tlu_perfcnt1,
-   output logic                            dec_tlu_perfcnt2,
-   output logic                            dec_tlu_perfcnt3,
-
-   // ports added by the soc team
-   input logic                             jtag_tck,    // JTAG clk
-   input logic                             jtag_tms,    // JTAG TMS
-   input logic                             jtag_tdi,    // JTAG tdi
-   input logic                             jtag_trst_n, // JTAG Reset
-   output logic                            jtag_tdo,    // JTAG TDO
-
-   input logic [31:4] core_id,
-
-   // external MPC halt/run interface
-   input logic                             mpc_debug_halt_req, // Async halt request
-   input logic                             mpc_debug_run_req,  // Async run request
-   input logic                             mpc_reset_run_req,  // Run/halt after reset
-   output logic                            mpc_debug_halt_ack, // Halt ack
-   output logic                            mpc_debug_run_ack,  // Run ack
-   output logic                            debug_brkpt_status, // debug breakpoint
-
-   input logic                             i_cpu_halt_req,      // Async halt req to CPU
-   output logic                            o_cpu_halt_ack,      // core response to halt
-   output logic                            o_cpu_halt_status,   // 1'b1 indicates core is halted
-   output logic                            o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-   input logic                             i_cpu_run_req, // Async restart req to CPU
-   output logic                            o_cpu_run_ack, // Core response to run req
-   input logic                             scan_mode,     // To enable scan mode
-   input logic                             mbist_mode,     // to enable mbist
-   input [15:0] 			    CLKS_PER_BIT
-);
-
-   logic                             active_l2clk;
-   logic                             free_l2clk;
-
-   // DCCM ports
-   logic         dccm_wren;
-   logic         dccm_rden;
-   logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo;
-   logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi;
-   logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo;
-   logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi;
-
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_lo;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_hi;
-
-   // PIC ports
-
-   // Icache & Itag ports
-   logic [31:1]  ic_rw_addr;
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_wr_en  ;     // Which way to write
-   logic         ic_rd_en ;
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_tag_valid;   // Valid from the I$ tag valid outside (in flops).
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_rd_hit;      // ic_rd_hit[3:0]
-   logic         ic_tag_perr;                       // Ic tag parity error
-
-   logic [pt.ICACHE_INDEX_HI:3]  ic_debug_addr;     // Read/Write addresss to the Icache.
-   logic         ic_debug_rd_en;                    // Icache debug rd
-   logic         ic_debug_wr_en;                    // Icache debug wr
-   logic         ic_debug_tag_array;                // Debug tag array
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_debug_way;   // Debug way. Rd or Wr.
-
-   logic [25:0]  ictag_debug_rd_data;               // Debug icache tag.
-   logic [pt.ICACHE_BANKS_WAY-1:0][70:0]  ic_wr_data;
-   logic [63:0]  ic_rd_data;
-   logic [70:0]  ic_debug_rd_data;                  // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   logic [70:0]  ic_debug_wr_data;                  // Debug wr cache.
-
-   logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr;       // ecc error per bank
-   logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr;       // parity error per bank
-
-   logic [63:0]  ic_premux_data;
-   logic         ic_sel_premux_data;
-
-   // ICCM ports
-   logic [pt.ICCM_BITS-1:1]    iccm_rw_addr;
-   logic           iccm_wren;
-   logic           iccm_rden;
-   logic [2:0]     iccm_wr_size;
-   logic [77:0]    iccm_wr_data;
-   logic           iccm_buf_correct_ecc;
-   logic           iccm_correction_state;
-
-   logic [63:0]    iccm_rd_data;
-   logic [77:0]    iccm_rd_data_ecc;
- 
-   logic	 core_rst;
-   logic        core_rst_l;                         // Core reset including rst_l and dbg_rst_l
-   logic        jtag_tdoEn;
-
-   logic        dccm_clk_override;
-   logic        icm_clk_override;
-   logic        dec_tlu_core_ecc_disable;
-
-
-   // zero out the signals not presented at the wrapper instantiation level
-`ifdef RV_BUILD_AXI4
-
- //// AHB LITE BUS
-   logic [31:0]              haddr;
-   logic [2:0]               hburst;
-   logic                     hmastlock;
-   logic [3:0]               hprot;
-   logic [2:0]               hsize;
-   logic [1:0]               htrans;
-   logic                     hwrite;
-
-   logic [63:0]              hrdata;
-   logic                     hready;
-   logic                     hresp;
-
-   // LSU AHB Master
-   logic [31:0]              lsu_haddr;
-   logic [2:0]               lsu_hburst;
-   logic                     lsu_hmastlock;
-   logic [3:0]               lsu_hprot;
-   logic [2:0]               lsu_hsize;
-   logic [1:0]               lsu_htrans;
-   logic                     lsu_hwrite;
-   logic [63:0]              lsu_hwdata;
-
-   logic [63:0]              lsu_hrdata;
-   logic                     lsu_hready;
-   logic                     lsu_hresp;
-   // Debug Syster Bus AHB
-   logic [31:0]              sb_haddr;
-   logic [2:0]               sb_hburst;
-   logic                     sb_hmastlock;
-   logic [3:0]               sb_hprot;
-   logic [2:0]               sb_hsize;
-   logic [1:0]               sb_htrans;
-   logic                     sb_hwrite;
-   logic [63:0]              sb_hwdata;
-
-    logic [63:0]             sb_hrdata;
-    logic                    sb_hready;
-    logic                    sb_hresp;
-
-   // DMA Slave
-   logic                     dma_hsel;
-   logic [31:0]              dma_haddr;
-   logic [2:0]               dma_hburst;
-   logic                     dma_hmastlock;
-   logic [3:0]               dma_hprot;
-   logic [2:0]               dma_hsize;
-   logic [1:0]               dma_htrans;
-   logic                     dma_hwrite;
-   logic [63:0]              dma_hwdata;
-   logic                     dma_hreadyin;
-
-   logic [63:0]              dma_hrdata;
-   logic                     dma_hreadyout;
-   logic                     dma_hresp;
-
-
-
-   // AHB
-   assign  hrdata[63:0]                           = '0;
-   assign  hready                                 = '0;
-   assign  hresp                                  = '0;
-   // LSU
-   assign  lsu_hrdata[63:0]                       = '0;
-   assign  lsu_hready                             = '0;
-   assign  lsu_hresp                              = '0;
-   // Debu
-   assign  sb_hrdata[63:0]                        = '0;
-   assign  sb_hready                              = '0;
-   assign  sb_hresp                               = '0;
-
-   // DMA
-   assign  dma_hsel                               = '0;
-   assign  dma_haddr[31:0]                        = '0;
-   assign  dma_hburst[2:0]                        = '0;
-   assign  dma_hmastlock                          = '0;
-   assign  dma_hprot[3:0]                         = '0;
-   assign  dma_hsize[2:0]                         = '0;
-   assign  dma_htrans[1:0]                        = '0;
-   assign  dma_hwrite                             = '0;
-   assign  dma_hwdata[63:0]                       = '0;
-   assign  dma_hreadyin                           = '0;
-
-`endif //  `ifdef RV_BUILD_AXI4
-
-
-`ifdef RV_BUILD_AHB_LITE
-   wire                            lsu_axi_awvalid;
-   wire                            lsu_axi_awready;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid;
-   wire [31:0]                     lsu_axi_awaddr;
-   wire [3:0]                      lsu_axi_awregion;
-   wire [7:0]                      lsu_axi_awlen;
-   wire [2:0]                      lsu_axi_awsize;
-   wire [1:0]                      lsu_axi_awburst;
-   wire                            lsu_axi_awlock;
-   wire [3:0]                      lsu_axi_awcache;
-   wire [2:0]                      lsu_axi_awprot;
-   wire [3:0]                      lsu_axi_awqos;
-
-   wire                            lsu_axi_wvalid;
-   wire                            lsu_axi_wready;
-   wire [63:0]                     lsu_axi_wdata;
-   wire [7:0]                      lsu_axi_wstrb;
-   wire                            lsu_axi_wlast;
-
-   wire                            lsu_axi_bvalid;
-   wire                            lsu_axi_bready;
-   wire [1:0]                      lsu_axi_bresp;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid;
-
-   // AXI Read Channels
-   wire                            lsu_axi_arvalid;
-   wire                            lsu_axi_arready;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid;
-   wire [31:0]                     lsu_axi_araddr;
-   wire [3:0]                      lsu_axi_arregion;
-   wire [7:0]                      lsu_axi_arlen;
-   wire [2:0]                      lsu_axi_arsize;
-   wire [1:0]                      lsu_axi_arburst;
-   wire                            lsu_axi_arlock;
-   wire [3:0]                      lsu_axi_arcache;
-   wire [2:0]                      lsu_axi_arprot;
-   wire [3:0]                      lsu_axi_arqos;
-
-   wire                            lsu_axi_rvalid;
-   wire                            lsu_axi_rready;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid;
-   wire [63:0]                     lsu_axi_rdata;
-   wire [1:0]                      lsu_axi_rresp;
-   wire                            lsu_axi_rlast;
-
-   //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   wire                            ifu_axi_awvalid;
-   wire                            ifu_axi_awready;
-   wire [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid;
-   wire [31:0]                     ifu_axi_awaddr;
-   wire [3:0]                      ifu_axi_awregion;
-   wire [7:0]                      ifu_axi_awlen;
-   wire [2:0]                      ifu_axi_awsize;
-   wire [1:0]                      ifu_axi_awburst;
-   wire                            ifu_axi_awlock;
-   wire [3:0]                      ifu_axi_awcache;
-   wire [2:0]                      ifu_axi_awprot;
-   wire [3:0]                      ifu_axi_awqos;
-
-   wire                            ifu_axi_wvalid;
-   wire                            ifu_axi_wready;
-   wire [63:0]                     ifu_axi_wdata;
-   wire [7:0]                      ifu_axi_wstrb;
-   wire                            ifu_axi_wlast;
-
-   wire                            ifu_axi_bvalid;
-   wire                            ifu_axi_bready;
-   wire [1:0]                      ifu_axi_bresp;
-   wire [pt.IFU_BUS_TAG-1:0]      ifu_axi_bid;
-
-   // AXI Read Channels
-   wire                            ifu_axi_arvalid;
-   wire                            ifu_axi_arready;
-   wire [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid;
-   wire [31:0]                     ifu_axi_araddr;
-   wire [3:0]                      ifu_axi_arregion;
-   wire [7:0]                      ifu_axi_arlen;
-   wire [2:0]                      ifu_axi_arsize;
-   wire [1:0]                      ifu_axi_arburst;
-   wire                            ifu_axi_arlock;
-   wire [3:0]                      ifu_axi_arcache;
-   wire [2:0]                      ifu_axi_arprot;
-   wire [3:0]                      ifu_axi_arqos;
-
-   wire                            ifu_axi_rvalid;
-   wire                            ifu_axi_rready;
-   wire [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid;
-   wire [63:0]                     ifu_axi_rdata;
-   wire [1:0]                      ifu_axi_rresp;
-   wire                            ifu_axi_rlast;
-
-   //-------------------------- SB AXI signals--------------------------
-   // AXI Write Channels
-   wire                            sb_axi_awvalid;
-   wire                            sb_axi_awready;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_awid;
-   wire [31:0]                     sb_axi_awaddr;
-   wire [3:0]                      sb_axi_awregion;
-   wire [7:0]                      sb_axi_awlen;
-   wire [2:0]                      sb_axi_awsize;
-   wire [1:0]                      sb_axi_awburst;
-   wire                            sb_axi_awlock;
-   wire [3:0]                      sb_axi_awcache;
-   wire [2:0]                      sb_axi_awprot;
-   wire [3:0]                      sb_axi_awqos;
-
-   wire                            sb_axi_wvalid;
-   wire                            sb_axi_wready;
-   wire [63:0]                     sb_axi_wdata;
-   wire [7:0]                      sb_axi_wstrb;
-   wire                            sb_axi_wlast;
-
-   wire                            sb_axi_bvalid;
-   wire                            sb_axi_bready;
-   wire [1:0]                      sb_axi_bresp;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_bid;
-
-   // AXI Read Channels
-   wire                            sb_axi_arvalid;
-   wire                            sb_axi_arready;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_arid;
-   wire [31:0]                     sb_axi_araddr;
-   wire [3:0]                      sb_axi_arregion;
-   wire [7:0]                      sb_axi_arlen;
-   wire [2:0]                      sb_axi_arsize;
-   wire [1:0]                      sb_axi_arburst;
-   wire                            sb_axi_arlock;
-   wire [3:0]                      sb_axi_arcache;
-   wire [2:0]                      sb_axi_arprot;
-   wire [3:0]                      sb_axi_arqos;
-
-   wire                            sb_axi_rvalid;
-   wire                            sb_axi_rready;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_rid;
-   wire [63:0]                     sb_axi_rdata;
-   wire [1:0]                      sb_axi_rresp;
-   wire                            sb_axi_rlast;
-
-   //-------------------------- DMA AXI signals--------------------------
-   // AXI Write Channels
-   wire                         dma_axi_awvalid;
-   wire                         dma_axi_awready;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_awid;
-   wire [31:0]                  dma_axi_awaddr;
-   wire [2:0]                   dma_axi_awsize;
-   wire [2:0]                   dma_axi_awprot;
-   wire [7:0]                   dma_axi_awlen;
-   wire [1:0]                   dma_axi_awburst;
-
-
-   wire                         dma_axi_wvalid;
-   wire                         dma_axi_wready;
-   wire [63:0]                  dma_axi_wdata;
-   wire [7:0]                   dma_axi_wstrb;
-   wire                         dma_axi_wlast;
-
-   wire                         dma_axi_bvalid;
-   wire                         dma_axi_bready;
-   wire [1:0]                   dma_axi_bresp;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_bid;
-
-   // AXI Read Channels
-   wire                         dma_axi_arvalid;
-   wire                         dma_axi_arready;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_arid;
-   wire [31:0]                  dma_axi_araddr;
-   wire [2:0]                   dma_axi_arsize;
-   wire [2:0]                   dma_axi_arprot;
-   wire [7:0]                   dma_axi_arlen;
-   wire [1:0]                   dma_axi_arburst;
-
-   wire                         dma_axi_rvalid;
-   wire                         dma_axi_rready;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_rid;
-   wire [63:0]                  dma_axi_rdata;
-   wire [1:0]                   dma_axi_rresp;
-   wire                         dma_axi_rlast;
-
-   // AXI
-   assign ifu_axi_awready = 1'b1;
-   assign ifu_axi_wready = 1'b1;
-   assign ifu_axi_bvalid = '0;
-   assign ifu_axi_bresp[1:0] = '0;
-   assign ifu_axi_bid[pt.IFU_BUS_TAG-1:0] = '0;
-
-`endif //  `ifdef RV_BUILD_AHB_LITE
-
-   logic                   dmi_reg_en;
-   logic [6:0]             dmi_reg_addr;
-   logic                   dmi_reg_wr_en;
-   logic [31:0]            dmi_reg_wdata;
-   logic [31:0]            dmi_reg_rdata;
-   logic rx_dv_i;
-   logic [7:0] rx_byte_i;
-   logic iccm_instr_we;
-   logic [13:0] iccm_instr_addr;
-   logic [31:0] iccm_instr_wdata;
-   // UART Receiver
-
-
-   // Instantiate the eb1_brqrv core
-   eb1_brqrv #(.pt(pt)) brqrv (
-                                .clk(clk),
-                                .rst_l(core_rst),
-                                .*
-                                );
-
-   // Instantiate the mem
-   eb1_mem  #(.pt(pt)) mem (
-                             .clk(active_l2clk),
-                             .rst_l(rst_l),
-                             .iccm_rw_addr((core_rst) ? iccm_rw_addr : iccm_instr_addr[10:0]),
-                             .iccm_wren((core_rst) ? iccm_wren : iccm_instr_we),
-                             .iccm_wr_data((core_rst) ? iccm_wr_data : {7'h0,iccm_instr_wdata,7'h0,iccm_instr_wdata}),
-                             .iccm_wr_size((core_rst) ? iccm_wr_size : 3'b010),
-                             .*
-                             );
-   
-   eb1_iccm_controller iccm_controller(
-		.clk_i(clk),
-		.rst_ni(rst_l),
-		.rx_dv_i(rx_dv_i),
-		.rx_byte_i(rx_byte_i),
-		.we_o(iccm_instr_we),
-		.addr_o(iccm_instr_addr),
-		.wdata_o(iccm_instr_wdata),
-		.reset_o(core_rst)
-	);                          
-   eb1_uart_rx_prog uart_rx_m(
-		.i_Clock(clk),
-		.rst_ni(rst_l),
-		.i_Rx_Serial(uart_rx),
-		.CLKS_PER_BIT(CLKS_PER_BIT),
-		.o_Rx_DV(rx_dv_i),
-		.o_Rx_Byte(rx_byte_i)
-	);
- 
-
-   //  JTAG/DMI instance
-   dmi_wrapper  dmi_wrapper (
-    // JTAG signals
-    .trst_n      (jtag_trst_n),     // JTAG reset
-    .tck         (jtag_tck),        // JTAG clock
-    .tms         (jtag_tms),        // Test mode select
-    .tdi         (jtag_tdi),        // Test Data Input
-    .tdo         (jtag_tdo),        // Test Data Output
-    .tdoEnable   (),
-    // Processor Signals
-    .core_rst_n  (dbg_rst_l),       // Debug reset, active low
-    .core_clk    (clk),             // Core clock
-    .jtag_id     (jtag_id),         // JTAG ID
-    .rd_data     (dmi_reg_rdata),   // Read data from  Processor
-    .reg_wr_data (dmi_reg_wdata),   // Write data to Processor
-    .reg_wr_addr (dmi_reg_addr),    // Write address to Processor
-    .reg_en      (dmi_reg_en),      // Write interface bit to Processor
-    .reg_wr_en   (dmi_reg_wr_en),   // Write enable to Processor
-    .dmi_hard_reset   ()
-   );
-
-`ifdef RV_ASSERT_ON
-// to avoid internal assertions failure at time 0
-initial begin
-    $assertoff(0, brqrv);
-    @ (negedge clk) $asserton(0, brqrv);
-end
-`endif
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_dbg.sv b/verilog/rtl/BrqRV_EB1/design/eb1_dbg.sv
deleted file mode 100644
index 72a03f6..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_dbg.sv
+++ /dev/null
@@ -1,753 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-// $Id$
-//
-// Function: Top level brqrv core file to control the debug mode
-// Comments: Responsible to put the rest of the core in quiesce mode,
-//           Send the commands/address. sends WrData and Recieve read Data.
-//           And then Resume the core to do the normal mode
-// Author  :
-//********************************************************************************
-module eb1_dbg
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   // outputs to the core for command and data interface
-   output logic [31:0]                 dbg_cmd_addr,
-   output logic [31:0]                 dbg_cmd_wrdata,
-   output logic                        dbg_cmd_valid,
-   output logic                        dbg_cmd_write,             // 1: write command, 0: read_command
-   output logic [1:0]                  dbg_cmd_type,              // 0:gpr 1:csr 2: memory
-   output logic [1:0]                  dbg_cmd_size,              // size of the abstract mem access debug command
-   output logic                        dbg_core_rst_l,            // core reset from dm
-
-   // inputs back from the core/dec
-   input logic [31:0]                  core_dbg_rddata,
-   input logic                         core_dbg_cmd_done,         // This will be treated like a valid signal
-   input logic                         core_dbg_cmd_fail,         // Exception during command run
-
-   // Signals to dma to get a bubble
-   output logic                        dbg_dma_bubble,            // Debug needs a bubble to send a valid
-   input  logic                        dma_dbg_ready,             // DMA is ready to accept debug request
-
-   // interface with the rest of the core to halt/resume handshaking
-   output logic                        dbg_halt_req,              // This is a pulse
-   output logic                        dbg_resume_req,            // Debug sends a resume requests. Pulse
-   input  logic                        dec_tlu_debug_mode,        // Core is in debug mode
-   input  logic                        dec_tlu_dbg_halted,        // The core has finished the queiscing sequence. Core is halted now
-   input  logic                        dec_tlu_mpc_halted_only,   // Only halted due to MPC
-   input  logic                        dec_tlu_resume_ack,        // core sends back an ack for the resume (pulse)
-
-   // inputs from the JTAG
-   input logic                         dmi_reg_en,                // read or write
-   input logic [6:0]                   dmi_reg_addr,              // address of DM register
-   input logic                         dmi_reg_wr_en,             // write instruction
-   input logic [31:0]                  dmi_reg_wdata,             // write data
-
-   // output
-   output logic [31:0]                 dmi_reg_rdata,             // read data
-
-   // AXI Write Channels
-   output logic                        sb_axi_awvalid,
-   input  logic                        sb_axi_awready,
-   output logic [pt.SB_BUS_TAG-1:0]    sb_axi_awid,
-   output logic [31:0]                 sb_axi_awaddr,
-   output logic [3:0]                  sb_axi_awregion,
-   output logic [7:0]                  sb_axi_awlen,
-   output logic [2:0]                  sb_axi_awsize,
-   output logic [1:0]                  sb_axi_awburst,
-   output logic                        sb_axi_awlock,
-   output logic [3:0]                  sb_axi_awcache,
-   output logic [2:0]                  sb_axi_awprot,
-   output logic [3:0]                  sb_axi_awqos,
-
-   output logic                        sb_axi_wvalid,
-   input  logic                        sb_axi_wready,
-   output logic [63:0]                 sb_axi_wdata,
-   output logic [7:0]                  sb_axi_wstrb,
-   output logic                        sb_axi_wlast,
-
-   input  logic                        sb_axi_bvalid,
-   output logic                        sb_axi_bready,
-   input  logic [1:0]                  sb_axi_bresp,
-
-   // AXI Read Channels
-   output logic                        sb_axi_arvalid,
-   input  logic                        sb_axi_arready,
-   output logic [pt.SB_BUS_TAG-1:0]    sb_axi_arid,
-   output logic [31:0]                 sb_axi_araddr,
-   output logic [3:0]                  sb_axi_arregion,
-   output logic [7:0]                  sb_axi_arlen,
-   output logic [2:0]                  sb_axi_arsize,
-   output logic [1:0]                  sb_axi_arburst,
-   output logic                        sb_axi_arlock,
-   output logic [3:0]                  sb_axi_arcache,
-   output logic [2:0]                  sb_axi_arprot,
-   output logic [3:0]                  sb_axi_arqos,
-
-   input  logic                        sb_axi_rvalid,
-   output logic                        sb_axi_rready,
-   input  logic [63:0]                 sb_axi_rdata,
-   input  logic [1:0]                  sb_axi_rresp,
-
-   input logic                         dbg_bus_clk_en,
-
-   // general inputs
-   input logic                         clk,
-   input logic                         rst_l,        // This includes both top rst and debug rst
-   input logic                         dbg_rst_l,
-   input logic                         clk_override,
-   input logic                         scan_mode
-);
-
-
-   typedef enum logic [3:0] {IDLE=4'h0, HALTING=4'h1, HALTED=4'h2, CORE_CMD_START=4'h3, CORE_CMD_WAIT=4'h4, SB_CMD_START=4'h5, SB_CMD_SEND=4'h6, SB_CMD_RESP=4'h7, CMD_DONE=4'h8, RESUMING=4'h9} state_t;
-   typedef enum logic [3:0] {SBIDLE=4'h0, WAIT_RD=4'h1, WAIT_WR=4'h2, CMD_RD=4'h3, CMD_WR=4'h4, CMD_WR_ADDR=4'h5, CMD_WR_DATA=4'h6, RSP_RD=4'h7, RSP_WR=4'h8, DONE=4'h9} sb_state_t;
-
-   state_t       dbg_state;
-   state_t       dbg_nxtstate;
-   logic         dbg_state_en;
-   // these are the registers that the debug module implements
-   logic [31:0]  dmstatus_reg;        // [26:24]-dmerr, [17:16]-resume ack, [9:8]-halted, [3:0]-version
-   logic [31:0]  dmcontrol_reg;       // dmcontrol register has only 6 bits implemented. 31: haltreq, 30: resumereq, 29: haltreset, 28: ackhavereset, 1: ndmreset, 0: dmactive.
-   logic [31:0]  command_reg;
-   logic [31:0]  abstractcs_reg;      // bits implemted are [12] - busy and [10:8]= command error
-   logic [31:0]  haltsum0_reg;
-   logic [31:0]  data0_reg;
-   logic [31:0]  data1_reg;
-
-   // data 0
-   logic [31:0]  data0_din;
-   logic         data0_reg_wren, data0_reg_wren0, data0_reg_wren1, data0_reg_wren2;
-   // data 1
-   logic [31:0]  data1_din;
-   logic         data1_reg_wren, data1_reg_wren0, data1_reg_wren1;
-   // abstractcs
-   logic         abstractcs_busy_wren;
-   logic         abstractcs_busy_din;
-   logic [2:0]   abstractcs_error_din;
-   logic         abstractcs_error_sel0, abstractcs_error_sel1, abstractcs_error_seb1, abstractcs_error_sel3, abstractcs_error_sel4, abstractcs_error_sel5, abstractcs_error_sel6;
-   logic         dbg_sb_bus_error;
-   // abstractauto
-   logic         abstractauto_reg_wren;
-   logic [1:0]   abstractauto_reg;
-
-   // dmstatus
-   logic         dmstatus_resumeack_wren;
-   logic         dmstatus_resumeack_din;
-   logic         dmstatus_haveresetn_wren;
-   logic         dmstatus_resumeack;
-   logic         dmstatus_unavail;
-   logic         dmstatus_running;
-   logic         dmstatus_halted;
-   logic         dmstatus_havereset, dmstatus_haveresetn;
-
-   // dmcontrol
-   logic         resumereq;
-   logic         dmcontrol_wren, dmcontrol_wren_Q;
-   // command
-   logic         execute_command_ns, execute_command;
-   logic         command_wren, command_regno_wren;
-   logic         command_transfer_din;
-   logic         command_postexec_din;
-   logic [31:0]  command_din;
-   logic [3:0]   dbg_cmd_addr_incr;
-   logic [31:0]  dbg_cmd_curr_addr;
-   logic [31:0]  dbg_cmd_next_addr;
-
-   // needed to send the read data back for dmi reads
-   logic  [31:0] dmi_reg_rdata_din;
-
-   sb_state_t    sb_state;
-   sb_state_t    sb_nxtstate;
-   logic         sb_state_en;
-
-   //System bus section
-   logic              sbcs_wren;
-   logic              sbcs_sbbusy_wren;
-   logic              sbcs_sbbusy_din;
-   logic              sbcs_sbbusyerror_wren;
-   logic              sbcs_sbbusyerror_din;
-
-   logic              sbcs_sberror_wren;
-   logic [2:0]        sbcs_sberror_din;
-   logic              sbcs_unaligned;
-   logic              sbcs_illegal_size;
-   logic [19:15]      sbcs_reg_int;
-
-   // data
-   logic              sbdata0_reg_wren0;
-   logic              sbdata0_reg_wren1;
-   logic              sbdata0_reg_wren;
-   logic [31:0]       sbdata0_din;
-
-   logic              sbdata1_reg_wren0;
-   logic              sbdata1_reg_wren1;
-   logic              sbdata1_reg_wren;
-   logic [31:0]       sbdata1_din;
-
-   logic              sbaddress0_reg_wren0;
-   logic              sbaddress0_reg_wren1;
-   logic              sbaddress0_reg_wren;
-   logic [31:0]       sbaddress0_reg_din;
-   logic [3:0]        sbaddress0_incr;
-   logic              sbreadonaddr_access;
-   logic              sbreadondata_access;
-   logic              sbdata0wr_access;
-
-   logic              sb_abmem_cmd_done_in, sb_abmem_data_done_in;
-   logic              sb_abmem_cmd_done_en, sb_abmem_data_done_en;
-   logic              sb_abmem_cmd_done, sb_abmem_data_done;
-   logic [31:0]       abmem_addr;
-   logic              abmem_addr_in_dccm_region, abmem_addr_in_iccm_region, abmem_addr_in_pic_region;
-   logic              abmem_addr_core_local;
-   logic              abmem_addr_external;
-
-   logic              sb_cmd_pending, sb_abmem_cmd_pending;
-   logic              sb_abmem_cmd_write;
-   logic [2:0]        sb_abmem_cmd_size;
-   logic [31:0]       sb_abmem_cmd_addr;
-   logic [31:0]       sb_abmem_cmd_wdata;
-
-   logic [2:0]        sb_cmd_size;
-   logic [31:0]       sb_cmd_addr;
-   logic [63:0]       sb_cmd_wdata;
-
-   logic              sb_bus_cmd_read, sb_bus_cmd_write_addr, sb_bus_cmd_write_data;
-   logic              sb_bus_rsp_read, sb_bus_rsp_write;
-   logic              sb_bus_rsp_error;
-   logic [63:0]       sb_bus_rdata;
-
-   //registers
-   logic [31:0]       sbcs_reg;
-   logic [31:0]       sbaddress0_reg;
-   logic [31:0]       sbdata0_reg;
-   logic [31:0]       sbdata1_reg;
-
-   logic              sb_abmem_cmd_arvalid, sb_abmem_cmd_awvalid, sb_abmem_cmd_wvalid;
-   logic              sb_abmem_read_pend;
-   logic              sb_cmd_awvalid, sb_cmd_wvalid, sb_cmd_arvalid;
-   logic              sb_read_pend;
-   logic [31:0]       sb_axi_addr;
-   logic [63:0]       sb_axi_wrdata;
-   logic [2:0]        sb_axi_size;
-
-   logic              dbg_dm_rst_l;
-
-   //clken
-   logic              dbg_free_clken;
-   logic              dbg_free_clk;
-
-   logic              sb_free_clken;
-   logic              sb_free_clk;
-
-   // clocking
-   // used for the abstract commands.
-   assign dbg_free_clken  = dmi_reg_en | execute_command | (dbg_state != IDLE) | dbg_state_en | dec_tlu_dbg_halted | dec_tlu_mpc_halted_only | dec_tlu_debug_mode | dbg_halt_req | clk_override;
-
-   // used for the system bus
-   assign sb_free_clken = dmi_reg_en | execute_command | sb_state_en | (sb_state != SBIDLE) | clk_override;
-
-   rvoclkhdr dbg_free_cgc    (.en(dbg_free_clken), .l1clk(dbg_free_clk), .*);
-   rvoclkhdr sb_free_cgc     (.en(sb_free_clken), .l1clk(sb_free_clk), .*);
-
-   // end clocking section
-
-   // Reset logic
-   assign dbg_dm_rst_l = dbg_rst_l & (dmcontrol_reg[0] | scan_mode);
-   assign dbg_core_rst_l = ~dmcontrol_reg[1] | scan_mode;
-
-   // system bus register
-   // sbcs[31:29], sbcs - [22]:sbbusyerror, [21]: sbbusy, [20]:sbreadonaddr, [19:17]:sbaccess, [16]:sbautoincrement, [15]:sbreadondata, [14:12]:sberror, sbsize=32, 128=0, 64/32/16/8 are legal
-   assign        sbcs_reg[31:29] = 3'b1;
-   assign        sbcs_reg[28:23] = '0;
-   assign        sbcs_reg[19:15] = {sbcs_reg_int[19], ~sbcs_reg_int[18], sbcs_reg_int[17:15]};
-   assign        sbcs_reg[11:5]  = 7'h20;
-   assign        sbcs_reg[4:0]   = 5'b01111;
-   assign        sbcs_wren = (dmi_reg_addr ==  7'h38) & dmi_reg_en & dmi_reg_wr_en & (sb_state == SBIDLE);
-   assign        sbcs_sbbusyerror_wren = (sbcs_wren & dmi_reg_wdata[22]) |
-                                         (sbcs_reg[21] & dmi_reg_en & ((dmi_reg_wr_en & (dmi_reg_addr == 7'h39)) | (dmi_reg_addr == 7'h3c) | (dmi_reg_addr == 7'h3d)));
-   assign        sbcs_sbbusyerror_din = ~(sbcs_wren & dmi_reg_wdata[22]);   // Clear when writing one
-
-   rvdffs #(1) sbcs_sbbusyerror_reg  (.din(sbcs_sbbusyerror_din),  .dout(sbcs_reg[22]),    .en(sbcs_sbbusyerror_wren), .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(1) sbcs_sbbusy_reg       (.din(sbcs_sbbusy_din),       .dout(sbcs_reg[21]),    .en(sbcs_sbbusy_wren),      .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(1) sbcs_sbreadonaddr_reg (.din(dmi_reg_wdata[20]),     .dout(sbcs_reg[20]),    .en(sbcs_wren),             .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(5) sbcs_misc_reg         (.din({dmi_reg_wdata[19],~dmi_reg_wdata[18],dmi_reg_wdata[17:15]}),
-                                      .dout(sbcs_reg_int[19:15]), .en(sbcs_wren),             .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(3) sbcs_error_reg        (.din(sbcs_sberror_din[2:0]), .dout(sbcs_reg[14:12]), .en(sbcs_sberror_wren),     .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-
-   assign sbcs_unaligned =    ((sbcs_reg[19:17] == 3'b001) &  sbaddress0_reg[0]) |
-                              ((sbcs_reg[19:17] == 3'b010) &  (|sbaddress0_reg[1:0])) |
-                              ((sbcs_reg[19:17] == 3'b011) &  (|sbaddress0_reg[2:0]));
-
-   assign sbcs_illegal_size = sbcs_reg[19];    // Anything bigger than 64 bits is illegal
-
-   assign sbaddress0_incr[3:0] = ({4{(sbcs_reg[19:17] == 3'h0)}} &  4'b0001) |
-                                 ({4{(sbcs_reg[19:17] == 3'h1)}} &  4'b0010) |
-                                 ({4{(sbcs_reg[19:17] == 3'h2)}} &  4'b0100) |
-                                 ({4{(sbcs_reg[19:17] == 3'h3)}} &  4'b1000);
-
-   // sbdata
-   assign        sbdata0_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h3c);   // write data only when single read is 0
-   assign        sbdata0_reg_wren1   = (sb_state == RSP_RD) & sb_state_en & ~sbcs_sberror_wren;
-   assign        sbdata0_reg_wren    = sbdata0_reg_wren0 | sbdata0_reg_wren1;
-
-   assign        sbdata1_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h3d);   // write data only when single read is 0;
-   assign        sbdata1_reg_wren1   = (sb_state == RSP_RD) & sb_state_en & ~sbcs_sberror_wren;
-   assign        sbdata1_reg_wren    = sbdata1_reg_wren0 | sbdata1_reg_wren1;
-
-   assign        sbdata0_din[31:0]   = ({32{sbdata0_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                       ({32{sbdata0_reg_wren1}} & sb_bus_rdata[31:0]);
-   assign        sbdata1_din[31:0]   = ({32{sbdata1_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                       ({32{sbdata1_reg_wren1}} & sb_bus_rdata[63:32]);
-
-   rvdffe #(32)    dbg_sbdata0_reg    (.*, .din(sbdata0_din[31:0]), .dout(sbdata0_reg[31:0]), .en(sbdata0_reg_wren), .rst_l(dbg_dm_rst_l));
-   rvdffe #(32)    dbg_sbdata1_reg    (.*, .din(sbdata1_din[31:0]), .dout(sbdata1_reg[31:0]), .en(sbdata1_reg_wren), .rst_l(dbg_dm_rst_l));
-
-    // sbaddress
-   assign        sbaddress0_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h39);
-   assign        sbaddress0_reg_wren    = sbaddress0_reg_wren0 | sbaddress0_reg_wren1;
-   assign        sbaddress0_reg_din[31:0]= ({32{sbaddress0_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                           ({32{sbaddress0_reg_wren1}} & (sbaddress0_reg[31:0] + {28'b0,sbaddress0_incr[3:0]}));
-   rvdffe #(32)    dbg_sbaddress0_reg    (.*, .din(sbaddress0_reg_din[31:0]), .dout(sbaddress0_reg[31:0]), .en(sbaddress0_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   assign sbreadonaddr_access = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h39) & sbcs_reg[20];   // if readonaddr is set the next command will start upon writing of addr0
-   assign sbreadondata_access = dmi_reg_en & ~dmi_reg_wr_en & (dmi_reg_addr == 7'h3c) & sbcs_reg[15];  // if readondata is set the next command will start upon reading of data0
-   assign sbdata0wr_access  = dmi_reg_en &  dmi_reg_wr_en & (dmi_reg_addr == 7'h3c);                   // write to sbdata0 will start write command to system bus
-
-   // memory mapped registers
-   // dmcontrol register has only 5 bits implemented. 31: haltreq, 30: resumereq, 28: ackhavereset, 1: ndmreset, 0: dmactive.
-   // rest all the bits are zeroed out
-   // dmactive flop is reset based on core rst_l, all other flops use dm_rst_l
-   assign dmcontrol_wren      = (dmi_reg_addr ==  7'h10) & dmi_reg_en & dmi_reg_wr_en;
-   assign dmcontrol_reg[29]   = '0;
-   assign dmcontrol_reg[27:2] = '0;
-   assign resumereq           = dmcontrol_reg[30] & ~dmcontrol_reg[31] & dmcontrol_wren_Q;
-   rvdffs #(4) dmcontrolff (.din({dmi_reg_wdata[31:30],dmi_reg_wdata[28],dmi_reg_wdata[1]}), .dout({dmcontrol_reg[31:30], dmcontrol_reg[28], dmcontrol_reg[1]}), .en(dmcontrol_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdffs #(1) dmcontrol_dmactive_ff (.din(dmi_reg_wdata[0]), .dout(dmcontrol_reg[0]), .en(dmcontrol_wren), .rst_l(dbg_rst_l), .clk(dbg_free_clk));
-   rvdff  #(1) dmcontrol_wrenff(.din(dmcontrol_wren), .dout(dmcontrol_wren_Q), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-   // dmstatus register bits that are implemented
-   // [19:18]-havereset,[17:16]-resume ack, [9:8]-halted, [3:0]-version
-   // rest all the bits are zeroed out
-   //assign dmstatus_wren       = (dmi_reg_addr[31:0] ==  32'h11) & dmi_reg_en;
-   assign dmstatus_reg[31:20] = '0;
-   assign dmstatus_reg[19:18] = {2{dmstatus_havereset}};
-   assign dmstatus_reg[15:14] = '0;
-   assign dmstatus_reg[7]     = '1;
-   assign dmstatus_reg[6:4]   = '0;
-   assign dmstatus_reg[17:16] = {2{dmstatus_resumeack}};
-   assign dmstatus_reg[13:12] = {2{dmstatus_unavail}};
-   assign dmstatus_reg[11:10] = {2{dmstatus_running}};
-   assign dmstatus_reg[9:8]   = {2{dmstatus_halted}};
-   assign dmstatus_reg[3:0]   = 4'h2;
-
-   assign dmstatus_resumeack_wren = ((dbg_state == RESUMING) & dec_tlu_resume_ack) | (dmstatus_resumeack & resumereq & dmstatus_halted);
-   assign dmstatus_resumeack_din  = (dbg_state == RESUMING) & dec_tlu_resume_ack;
-
-   assign dmstatus_haveresetn_wren  = (dmi_reg_addr == 7'h10) & dmi_reg_wdata[28] & dmi_reg_en & dmi_reg_wr_en & dmcontrol_reg[0];   // clear the havereset
-   assign dmstatus_havereset        = ~dmstatus_haveresetn;
-
-   assign dmstatus_unavail = dmcontrol_reg[1] | ~rst_l;
-   assign dmstatus_running = ~(dmstatus_unavail | dmstatus_halted);
-
-   rvdffs  #(1) dmstatus_resumeack_reg  (.din(dmstatus_resumeack_din), .dout(dmstatus_resumeack), .en(dmstatus_resumeack_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdff   #(1) dmstatus_halted_reg     (.din(dec_tlu_dbg_halted & ~dec_tlu_mpc_halted_only),     .dout(dmstatus_halted), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdffs  #(1) dmstatus_haveresetn_reg (.din(1'b1), .dout(dmstatus_haveresetn), .en(dmstatus_haveresetn_wren), .rst_l(rst_l), .clk(dbg_free_clk));
-
-   // haltsum0 register
-   assign haltsum0_reg[31:1] = '0;
-   assign haltsum0_reg[0]    = dmstatus_halted;
-
-   // abstractcs register
-   // bits implemted are [12] - busy and [10:8]= command error
-   assign        abstractcs_reg[31:13] = '0;
-   assign        abstractcs_reg[11]    = '0;
-   assign        abstractcs_reg[7:4]   = '0;
-   assign        abstractcs_reg[3:0]   = 4'h2;    // One data register
-
-   assign        abstractcs_error_sel0 = abstractcs_reg[12] & ~(|abstractcs_reg[10:8]) & dmi_reg_en & ((dmi_reg_wr_en & ((dmi_reg_addr == 7'h16) | (dmi_reg_addr == 7'h17)) | (dmi_reg_addr == 7'h18)) |
-                                                                                                       (dmi_reg_addr == 7'h4) | (dmi_reg_addr == 7'h5));
-   assign        abstractcs_error_sel1 = execute_command & ~(|abstractcs_reg[10:8]) &
-                                         ((~((command_reg[31:24] == 8'b0) | (command_reg[31:24] == 8'h2)))                      |   // Illegal command
-                                          (((command_reg[22:20] == 3'b011) | (command_reg[22])) & (command_reg[31:24] == 8'h2)) |   // Illegal abstract memory size (can't be DW or higher)
-                                          ((command_reg[22:20] != 3'b010) & ((command_reg[31:24] == 8'h0) & command_reg[17]))   |   // Illegal abstract reg size
-                                          ((command_reg[31:24] == 8'h0) & command_reg[18]));                                          //postexec for abstract register access
-   assign        abstractcs_error_seb1 = ((core_dbg_cmd_done & core_dbg_cmd_fail) |                   // exception from core
-                                          (execute_command & (command_reg[31:24] == 8'h0) &           // unimplemented regs
-                                                (((command_reg[15:12] == 4'h1) & (command_reg[11:5] != 0)) | (command_reg[15:13] != 0)))) & ~(|abstractcs_reg[10:8]);
-   assign        abstractcs_error_sel3 = execute_command & (dbg_state != HALTED) & ~(|abstractcs_reg[10:8]);
-   assign        abstractcs_error_sel4 = dbg_sb_bus_error & dbg_bus_clk_en & ~(|abstractcs_reg[10:8]);// sb bus error for abstract memory command
-   assign        abstractcs_error_sel5 = execute_command & (command_reg[31:24] == 8'h2) & ~(|abstractcs_reg[10:8]) &
-                                         (((command_reg[22:20] == 3'b001) & data1_reg[0]) | ((command_reg[22:20] == 3'b010) & (|data1_reg[1:0])));  //Unaligned address for abstract memory
-   assign        abstractcs_error_sel6 = (dmi_reg_addr ==  7'h16) & dmi_reg_en & dmi_reg_wr_en;
-
-   assign        abstractcs_error_din[2:0]  = abstractcs_error_sel0 ? 3'b001 :                  // writing command or abstractcs while a command was executing. Or accessing data0
-                                                 abstractcs_error_sel1 ? 3'b010 :               // writing a illegal command type to cmd field of command
-                                                    abstractcs_error_seb1 ? 3'b011 :            // exception while running command
-                                                       abstractcs_error_sel3 ? 3'b100 :         // writing a comnand when not in the halted state
-                                                          abstractcs_error_sel4 ? 3'b101 :      // Bus error
-                                                             abstractcs_error_sel5 ? 3'b111 :   // unaligned or illegal size abstract memory command
-                                                                abstractcs_error_sel6 ? (~dmi_reg_wdata[10:8] & abstractcs_reg[10:8]) :   //W1C
-                                                                                        abstractcs_reg[10:8];                             //hold
-
-   rvdffs #(1) dmabstractcs_busy_reg  (.din(abstractcs_busy_din), .dout(abstractcs_reg[12]), .en(abstractcs_busy_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdff  #(3) dmabstractcs_error_reg (.din(abstractcs_error_din[2:0]), .dout(abstractcs_reg[10:8]), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-    // abstract auto reg
-   assign abstractauto_reg_wren  = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h18) & ~abstractcs_reg[12];
-   rvdffs #(2) dbg_abstractauto_reg (.*, .din(dmi_reg_wdata[1:0]), .dout(abstractauto_reg[1:0]), .en(abstractauto_reg_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-   // command register - implemented all the bits in this register
-   // command[16] = 1: write, 0: read
-   assign execute_command_ns = command_wren |
-                               (dmi_reg_en & ~abstractcs_reg[12] & (((dmi_reg_addr == 7'h4) & abstractauto_reg[0]) | ((dmi_reg_addr == 7'h5) & abstractauto_reg[1])));
-   assign command_wren = (dmi_reg_addr ==  7'h17) & dmi_reg_en & dmi_reg_wr_en;
-   assign command_regno_wren = command_wren | ((command_reg[31:24] == 8'h0) & command_reg[19] & (dbg_state == CMD_DONE) & ~(|abstractcs_reg[10:8]));  // aarpostincrement
-   assign command_postexec_din = (dmi_reg_wdata[31:24] == 8'h0) & dmi_reg_wdata[18];
-   assign command_transfer_din = (dmi_reg_wdata[31:24] == 8'h0) & dmi_reg_wdata[17];
-   assign command_din[31:16] = {dmi_reg_wdata[31:24],1'b0,dmi_reg_wdata[22:19],command_postexec_din,command_transfer_din, dmi_reg_wdata[16]};
-   assign command_din[15:0] =  command_wren ? dmi_reg_wdata[15:0] : dbg_cmd_next_addr[15:0];
-   rvdff  #(1)  execute_commandff   (.*, .din(execute_command_ns), .dout(execute_command), .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l));
-   rvdffe #(16) dmcommand_reg       (.*, .din(command_din[31:16]), .dout(command_reg[31:16]), .en(command_wren), .rst_l(dbg_dm_rst_l));
-   rvdffe #(16) dmcommand_regno_reg (.*, .din(command_din[15:0]),  .dout(command_reg[15:0]),  .en(command_regno_wren), .rst_l(dbg_dm_rst_l));
-
-  // data0 reg
-   assign data0_reg_wren0   = (dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h4) & (dbg_state == HALTED) & ~abstractcs_reg[12]);
-   assign data0_reg_wren1   = core_dbg_cmd_done & (dbg_state == CORE_CMD_WAIT) & ~command_reg[16];
-   assign data0_reg_wren    = data0_reg_wren0 | data0_reg_wren1 | data0_reg_wren2;
-
-   assign data0_din[31:0]   = ({32{data0_reg_wren0}} & dmi_reg_wdata[31:0])   |
-                              ({32{data0_reg_wren1}} & core_dbg_rddata[31:0]) |
-                              ({32{data0_reg_wren2}} & sb_bus_rdata[31:0]);
-
-   rvdffe #(32) dbg_data0_reg (.*, .din(data0_din[31:0]), .dout(data0_reg[31:0]), .en(data0_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   // data 1
-   assign data1_reg_wren0   = (dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h5) & (dbg_state == HALTED) & ~abstractcs_reg[12]);
-   assign data1_reg_wren1   = (dbg_state == CMD_DONE) & (command_reg[31:24] == 8'h2) & command_reg[19] & ~(|abstractcs_reg[10:8]);   // aampostincrement
-   assign data1_reg_wren    = data1_reg_wren0 | data1_reg_wren1;
-
-   assign data1_din[31:0]   = ({32{data1_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                              ({32{data1_reg_wren1}} & dbg_cmd_next_addr[31:0]);
-
-   rvdffe #(32)    dbg_data1_reg    (.*, .din(data1_din[31:0]), .dout(data1_reg[31:0]), .en(data1_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   rvdffs #(1) sb_abmem_cmd_doneff  (.din(sb_abmem_cmd_done_in),  .dout(sb_abmem_cmd_done),  .en(sb_abmem_cmd_done_en),  .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l), .*);
-   rvdffs #(1) sb_abmem_data_doneff (.din(sb_abmem_data_done_in), .dout(sb_abmem_data_done), .en(sb_abmem_data_done_en), .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l), .*);
-
-   // FSM to control the debug mode entry, command send/recieve, and Resume flow.
-   always_comb begin
-      dbg_nxtstate            = IDLE;
-      dbg_state_en            = 1'b0;
-      abstractcs_busy_wren    = 1'b0;
-      abstractcs_busy_din     = 1'b0;
-      dbg_halt_req            = dmcontrol_wren_Q & dmcontrol_reg[31];      // single pulse output to the core. Need to drive every time this register is written since core might be halted due to MPC
-      dbg_resume_req          = 1'b0;                                      // single pulse output to the core
-      dbg_sb_bus_error        = 1'b0;
-      data0_reg_wren2         = 1'b0;
-      sb_abmem_cmd_done_in    = 1'b0;
-      sb_abmem_data_done_in   = 1'b0;
-      sb_abmem_cmd_done_en    = 1'b0;
-      sb_abmem_data_done_en   = 1'b0;
-
-       case (dbg_state)
-            IDLE: begin
-                     dbg_nxtstate         = (dmstatus_reg[9] | dec_tlu_mpc_halted_only) ? HALTED : HALTING;         // initiate the halt command to the core
-                     dbg_state_en         = dmcontrol_reg[31] | dmstatus_reg[9] | dec_tlu_mpc_halted_only;      // when the jtag writes the halt bit in the DM register, OR when the status indicates H
-                     dbg_halt_req         = dmcontrol_reg[31];               // only when jtag has written the halt_req bit in the control. Removed debug mode qualification during MPC changes
-            end
-            HALTING : begin
-                     dbg_nxtstate         = HALTED;                                 // Goto HALTED once the core sends an ACK
-                     dbg_state_en         = dmstatus_reg[9] | dec_tlu_mpc_halted_only;     // core indicates halted
-            end
-            HALTED: begin
-                     // wait for halted to go away before send to resume. Else start of new command
-                     dbg_nxtstate         = dmstatus_reg[9] ? (resumereq ? RESUMING : (((command_reg[31:24] == 8'h2) & abmem_addr_external) ? SB_CMD_START : CORE_CMD_START)) :
-                                                                                    (dmcontrol_reg[31] ? HALTING : IDLE);       // This is MPC halted case
-                     dbg_state_en         = (dmstatus_reg[9] & resumereq) | execute_command | ~(dmstatus_reg[9] | dec_tlu_mpc_halted_only);
-                     abstractcs_busy_wren = dbg_state_en & ((dbg_nxtstate == CORE_CMD_START) | (dbg_nxtstate == SB_CMD_START));                 // write busy when a new command was written by jtag
-                     abstractcs_busy_din  = 1'b1;
-                     dbg_resume_req       = dbg_state_en & (dbg_nxtstate == RESUMING);                       // single cycle pulse to core if resuming
-            end
-            CORE_CMD_START: begin
-                     // Don't execute the command if cmderror or transfer=0 for abstract register access
-                     dbg_nxtstate         = ((|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17])) ? CMD_DONE : CORE_CMD_WAIT;     // new command sent to the core
-                     dbg_state_en         = dbg_cmd_valid | (|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17]);
-            end
-            CORE_CMD_WAIT: begin
-                     dbg_nxtstate         = CMD_DONE;
-                     dbg_state_en         = core_dbg_cmd_done;                   // go to done state for one cycle after completing current command
-            end
-            SB_CMD_START: begin
-                     dbg_nxtstate         = (|abstractcs_reg[10:8]) ? CMD_DONE : SB_CMD_SEND;
-                     dbg_state_en         = (dbg_bus_clk_en & ~sb_cmd_pending) | (|abstractcs_reg[10:8]);
-            end
-            SB_CMD_SEND: begin
-                     sb_abmem_cmd_done_in = 1'b1;
-                     sb_abmem_data_done_in= 1'b1;
-                     sb_abmem_cmd_done_en = (sb_bus_cmd_read | sb_bus_cmd_write_addr) & dbg_bus_clk_en;
-                     sb_abmem_data_done_en= (sb_bus_cmd_read | sb_bus_cmd_write_data) & dbg_bus_clk_en;
-                     dbg_nxtstate         = SB_CMD_RESP;
-                     dbg_state_en         = (sb_abmem_cmd_done | sb_abmem_cmd_done_en) & (sb_abmem_data_done | sb_abmem_data_done_en) & dbg_bus_clk_en;
-            end
-            SB_CMD_RESP: begin
-                     dbg_nxtstate         = CMD_DONE;
-                     dbg_state_en         = (sb_bus_rsp_read | sb_bus_rsp_write) & dbg_bus_clk_en;
-                     dbg_sb_bus_error     = (sb_bus_rsp_read | sb_bus_rsp_write) & sb_bus_rsp_error & dbg_bus_clk_en;
-                     data0_reg_wren2      = dbg_state_en & ~sb_abmem_cmd_write & ~dbg_sb_bus_error;
-            end
-            CMD_DONE: begin
-                     dbg_nxtstate         = HALTED;
-                     dbg_state_en         = 1'b1;
-                     abstractcs_busy_wren = dbg_state_en;                    // remove the busy bit from the abstracts ( bit 12 )
-                     abstractcs_busy_din  = 1'b0;
-                     sb_abmem_cmd_done_in = 1'b0;
-                     sb_abmem_data_done_in= 1'b0;
-                     sb_abmem_cmd_done_en = 1'b1;
-                     sb_abmem_data_done_en= 1'b1;
-            end
-            RESUMING : begin
-                     dbg_nxtstate            = IDLE;
-                     dbg_state_en            = dmstatus_reg[17];             // resume ack has been updated in the dmstatus register
-           end
-           default : begin
-                     dbg_nxtstate            = IDLE;
-                     dbg_state_en            = 1'b0;
-                     abstractcs_busy_wren    = 1'b0;
-                     abstractcs_busy_din     = 1'b0;
-                     dbg_halt_req            = 1'b0;         // single pulse output to the core
-                     dbg_resume_req          = 1'b0;         // single pulse output to the core
-                     dbg_sb_bus_error        = 1'b0;
-                     data0_reg_wren2         = 1'b0;
-                     sb_abmem_cmd_done_in    = 1'b0;
-                     sb_abmem_data_done_in   = 1'b0;
-                     sb_abmem_cmd_done_en    = 1'b0;
-                     sb_abmem_data_done_en   = 1'b0;
-          end
-         endcase
-   end // always_comb begin
-
-   assign dmi_reg_rdata_din[31:0] = ({32{dmi_reg_addr == 7'h4}}  & data0_reg[31:0])      |
-                                    ({32{dmi_reg_addr == 7'h5}}  & data1_reg[31:0])      |
-                                    ({32{dmi_reg_addr == 7'h10}} & {2'b0,dmcontrol_reg[29],1'b0,dmcontrol_reg[27:0]})  |  // Read0 to Write only bits
-                                    ({32{dmi_reg_addr == 7'h11}} & dmstatus_reg[31:0])   |
-                                    ({32{dmi_reg_addr == 7'h16}} & abstractcs_reg[31:0]) |
-                                    ({32{dmi_reg_addr == 7'h17}} & command_reg[31:0])    |
-                                    ({32{dmi_reg_addr == 7'h18}} & {30'h0,abstractauto_reg[1:0]})    |
-                                    ({32{dmi_reg_addr == 7'h40}} & haltsum0_reg[31:0])   |
-                                    ({32{dmi_reg_addr == 7'h38}} & sbcs_reg[31:0])       |
-                                    ({32{dmi_reg_addr == 7'h39}} & sbaddress0_reg[31:0]) |
-                                    ({32{dmi_reg_addr == 7'h3c}} & sbdata0_reg[31:0])    |
-                                    ({32{dmi_reg_addr == 7'h3d}} & sbdata1_reg[31:0]);
-
-
-   rvdffs #($bits(state_t)) dbg_state_reg    (.din(dbg_nxtstate), .dout({dbg_state}), .en(dbg_state_en), .rst_l(dbg_dm_rst_l & rst_l), .clk(dbg_free_clk));
-   rvdffe #(32)             dmi_rddata_reg   (.din(dmi_reg_rdata_din[31:0]), .dout(dmi_reg_rdata[31:0]), .en(dmi_reg_en), .rst_l(dbg_dm_rst_l), .clk(clk), .*);
-
-   assign abmem_addr[31:0]      = data1_reg[31:0];
-   assign abmem_addr_core_local = (abmem_addr_in_dccm_region | abmem_addr_in_iccm_region | abmem_addr_in_pic_region);
-   assign abmem_addr_external   = ~abmem_addr_core_local;
-
-   assign abmem_addr_in_dccm_region = (abmem_addr[31:28] == pt.DCCM_REGION) & pt.DCCM_ENABLE;
-   assign abmem_addr_in_iccm_region = (abmem_addr[31:28] == pt.ICCM_REGION) & pt.ICCM_ENABLE;
-   assign abmem_addr_in_pic_region  = (abmem_addr[31:28] == pt.PIC_REGION);
-
-   // interface for the core
-   assign dbg_cmd_addr[31:0]    = (command_reg[31:24] == 8'h2) ? data1_reg[31:0]  : {20'b0, command_reg[11:0]};
-   assign dbg_cmd_wrdata[31:0]  = data0_reg[31:0];
-   assign dbg_cmd_valid         = (dbg_state == CORE_CMD_START) & ~((|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17]) | ((command_reg[31:24] == 8'h2) & abmem_addr_external)) & dma_dbg_ready;
-   assign dbg_cmd_write         = command_reg[16];
-   assign dbg_cmd_type[1:0]     = (command_reg[31:24] == 8'h2) ? 2'b10 : {1'b0, (command_reg[15:12] == 4'b0)};
-   assign dbg_cmd_size[1:0]     = command_reg[21:20];
-
-   assign dbg_cmd_addr_incr[3:0]  = (command_reg[31:24] == 8'h2) ? (4'h1 << sb_abmem_cmd_size[1:0]) : 4'h1;
-   assign dbg_cmd_curr_addr[31:0] = (command_reg[31:24] == 8'h2) ? data1_reg[31:0]  : {16'b0, command_reg[15:0]};
-   assign dbg_cmd_next_addr[31:0] = dbg_cmd_curr_addr[31:0] + {28'h0,dbg_cmd_addr_incr[3:0]};
-
-   // Ask DMA to stop taking bus trxns since debug request is done
-   assign dbg_dma_bubble = ((dbg_state == CORE_CMD_START) & ~(|abstractcs_reg[10:8])) | (dbg_state == CORE_CMD_WAIT);
-
-   assign sb_cmd_pending       = (sb_state == CMD_RD) | (sb_state == CMD_WR) | (sb_state == CMD_WR_ADDR) | (sb_state == CMD_WR_DATA) | (sb_state == RSP_RD) | (sb_state == RSP_WR);
-   assign sb_abmem_cmd_pending = (dbg_state == SB_CMD_START) | (dbg_state == SB_CMD_SEND) | (dbg_state== SB_CMD_RESP);
-
-
-  // system bus FSM
-  always_comb begin
-      sb_nxtstate            = SBIDLE;
-      sb_state_en            = 1'b0;
-      sbcs_sbbusy_wren       = 1'b0;
-      sbcs_sbbusy_din        = 1'b0;
-      sbcs_sberror_wren      = 1'b0;
-      sbcs_sberror_din[2:0]  = 3'b0;
-      sbaddress0_reg_wren1   = 1'b0;
-      case (sb_state)
-            SBIDLE: begin
-                     sb_nxtstate            = sbdata0wr_access ? WAIT_WR : WAIT_RD;
-                     sb_state_en            = (sbdata0wr_access | sbreadondata_access | sbreadonaddr_access) & ~(|sbcs_reg[14:12]) & ~sbcs_reg[22];
-                     sbcs_sbbusy_wren       = sb_state_en;                                                 // set the single read bit if it is a singlread command
-                     sbcs_sbbusy_din        = 1'b1;
-                     sbcs_sberror_wren      = sbcs_wren & (|dmi_reg_wdata[14:12]);                                            // write to clear the error bits
-                     sbcs_sberror_din[2:0]  = ~dmi_reg_wdata[14:12] & sbcs_reg[14:12];
-            end
-            WAIT_RD: begin
-                     sb_nxtstate           = (sbcs_unaligned | sbcs_illegal_size) ? DONE : CMD_RD;
-                     sb_state_en           = (dbg_bus_clk_en & ~sb_abmem_cmd_pending) | sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_wren     = sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_din[2:0] = sbcs_unaligned ? 3'b011 : 3'b100;
-            end
-            WAIT_WR: begin
-                     sb_nxtstate           = (sbcs_unaligned | sbcs_illegal_size) ? DONE : CMD_WR;
-                     sb_state_en           = (dbg_bus_clk_en & ~sb_abmem_cmd_pending) | sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_wren     = sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_din[2:0] = sbcs_unaligned ? 3'b011 : 3'b100;
-            end
-            CMD_RD : begin
-                     sb_nxtstate           = RSP_RD;
-                     sb_state_en           = sb_bus_cmd_read & dbg_bus_clk_en;
-            end
-            CMD_WR : begin
-                     sb_nxtstate           = (sb_bus_cmd_write_addr & sb_bus_cmd_write_data) ? RSP_WR : (sb_bus_cmd_write_data ? CMD_WR_ADDR : CMD_WR_DATA);
-                     sb_state_en           = (sb_bus_cmd_write_addr | sb_bus_cmd_write_data) & dbg_bus_clk_en;
-            end
-            CMD_WR_ADDR : begin
-                     sb_nxtstate           = RSP_WR;
-                     sb_state_en           = sb_bus_cmd_write_addr & dbg_bus_clk_en;
-            end
-            CMD_WR_DATA : begin
-                     sb_nxtstate           = RSP_WR;
-                     sb_state_en           = sb_bus_cmd_write_data & dbg_bus_clk_en;
-            end
-            RSP_RD: begin
-                     sb_nxtstate           = DONE;
-                     sb_state_en           = sb_bus_rsp_read & dbg_bus_clk_en;
-                     sbcs_sberror_wren     = sb_state_en & sb_bus_rsp_error;
-                     sbcs_sberror_din[2:0] = 3'b010;
-            end
-            RSP_WR: begin
-                     sb_nxtstate           = DONE;
-                     sb_state_en           = sb_bus_rsp_write & dbg_bus_clk_en;
-                     sbcs_sberror_wren     = sb_state_en & sb_bus_rsp_error;
-                     sbcs_sberror_din[2:0] = 3'b010;
-            end
-            DONE: begin
-                     sb_nxtstate            = SBIDLE;
-                     sb_state_en            = 1'b1;
-                     sbcs_sbbusy_wren       = 1'b1;                           // reset the single read
-                     sbcs_sbbusy_din        = 1'b0;
-                     sbaddress0_reg_wren1   = sbcs_reg[16] & (sbcs_reg[14:12] == 3'b0);    // auto increment was set and no error. Update to new address after completing the current command
-            end
-            default : begin
-                     sb_nxtstate            = SBIDLE;
-                     sb_state_en            = 1'b0;
-                     sbcs_sbbusy_wren       = 1'b0;
-                     sbcs_sbbusy_din        = 1'b0;
-                     sbcs_sberror_wren      = 1'b0;
-                     sbcs_sberror_din[2:0]  = 3'b0;
-                     sbaddress0_reg_wren1   = 1'b0;
-           end
-         endcase
-   end // always_comb begin
-
-   rvdffs #($bits(sb_state_t)) sb_state_reg (.din(sb_nxtstate), .dout({sb_state}), .en(sb_state_en), .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-
-   assign sb_abmem_cmd_write      = command_reg[16];
-   assign sb_abmem_cmd_size[2:0]  = {1'b0, command_reg[21:20]};
-   assign sb_abmem_cmd_addr[31:0] = abmem_addr[31:0];
-   assign sb_abmem_cmd_wdata[31:0] = data0_reg[31:0];
-
-   assign sb_cmd_size[2:0]   = sbcs_reg[19:17];
-   assign sb_cmd_wdata[63:0] = {sbdata1_reg[31:0], sbdata0_reg[31:0]};
-   assign sb_cmd_addr[31:0]  = sbaddress0_reg[31:0];
-
-   assign sb_abmem_cmd_awvalid    = (dbg_state == SB_CMD_SEND) & sb_abmem_cmd_write & ~sb_abmem_cmd_done;
-   assign sb_abmem_cmd_wvalid     = (dbg_state == SB_CMD_SEND) & sb_abmem_cmd_write & ~sb_abmem_data_done;
-   assign sb_abmem_cmd_arvalid    = (dbg_state == SB_CMD_SEND) & ~sb_abmem_cmd_write & ~sb_abmem_cmd_done & ~sb_abmem_data_done;
-   assign sb_abmem_read_pend      = (dbg_state == SB_CMD_RESP) & ~sb_abmem_cmd_write;
-
-   assign sb_cmd_awvalid     = ((sb_state == CMD_WR) | (sb_state == CMD_WR_ADDR));
-   assign sb_cmd_wvalid      = ((sb_state == CMD_WR) | (sb_state == CMD_WR_DATA));
-   assign sb_cmd_arvalid     = (sb_state == CMD_RD);
-   assign sb_read_pend       = (sb_state == RSP_RD);
-
-   assign sb_axi_size[2:0]    = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid | sb_abmem_cmd_arvalid | sb_abmem_read_pend) ? sb_abmem_cmd_size[2:0] : sb_cmd_size[2:0];
-   assign sb_axi_addr[31:0]   = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid | sb_abmem_cmd_arvalid | sb_abmem_read_pend) ? sb_abmem_cmd_addr[31:0] : sb_cmd_addr[31:0];
-   assign sb_axi_wrdata[63:0] = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid) ? {2{sb_abmem_cmd_wdata[31:0]}} : sb_cmd_wdata[63:0];
-
-   // Generic bus response signals
-   assign sb_bus_cmd_read       = sb_axi_arvalid & sb_axi_arready;
-   assign sb_bus_cmd_write_addr = sb_axi_awvalid & sb_axi_awready;
-   assign sb_bus_cmd_write_data = sb_axi_wvalid  & sb_axi_wready;
-
-   assign sb_bus_rsp_read  = sb_axi_rvalid & sb_axi_rready;
-   assign sb_bus_rsp_write = sb_axi_bvalid & sb_axi_bready;
-   assign sb_bus_rsp_error = (sb_bus_rsp_read & (|(sb_axi_rresp[1:0]))) | (sb_bus_rsp_write & (|(sb_axi_bresp[1:0])));
-
-   // AXI Request signals
-   assign sb_axi_awvalid              = sb_abmem_cmd_awvalid | sb_cmd_awvalid;
-   assign sb_axi_awaddr[31:0]         = sb_axi_addr[31:0];
-   assign sb_axi_awid[pt.SB_BUS_TAG-1:0] = '0;
-   assign sb_axi_awsize[2:0]          = sb_axi_size[2:0];
-   assign sb_axi_awprot[2:0]          = 3'b001;
-   assign sb_axi_awcache[3:0]         = 4'b1111;
-   assign sb_axi_awregion[3:0]        = sb_axi_addr[31:28];
-   assign sb_axi_awlen[7:0]           = '0;
-   assign sb_axi_awburst[1:0]         = 2'b01;
-   assign sb_axi_awqos[3:0]           = '0;
-   assign sb_axi_awlock               = '0;
-
-   assign sb_axi_wvalid       = sb_abmem_cmd_wvalid | sb_cmd_wvalid;
-   assign sb_axi_wdata[63:0]  = ({64{(sb_axi_size[2:0] == 3'h0)}} & {8{sb_axi_wrdata[7:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h1)}} & {4{sb_axi_wrdata[15:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h2)}} & {2{sb_axi_wrdata[31:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h3)}} & {sb_axi_wrdata[63:0]});
-   assign sb_axi_wstrb[7:0]   = ({8{(sb_axi_size[2:0] == 3'h0)}} & (8'h1 << sb_axi_addr[2:0])) |
-                                ({8{(sb_axi_size[2:0] == 3'h1)}} & (8'h3 << {sb_axi_addr[2:1],1'b0})) |
-                                ({8{(sb_axi_size[2:0] == 3'h2)}} & (8'hf << {sb_axi_addr[2],2'b0})) |
-                                ({8{(sb_axi_size[2:0] == 3'h3)}} & 8'hff);
-   assign sb_axi_wlast        = '1;
-
-   assign sb_axi_arvalid              = sb_abmem_cmd_arvalid | sb_cmd_arvalid;
-   assign sb_axi_araddr[31:0]         = sb_axi_addr[31:0];
-   assign sb_axi_arid[pt.SB_BUS_TAG-1:0] = '0;
-   assign sb_axi_arsize[2:0]          = sb_axi_size[2:0];
-   assign sb_axi_arprot[2:0]          = 3'b001;
-   assign sb_axi_arcache[3:0]         = 4'b0;
-   assign sb_axi_arregion[3:0]        = sb_axi_addr[31:28];
-   assign sb_axi_arlen[7:0]           = '0;
-   assign sb_axi_arburst[1:0]         = 2'b01;
-   assign sb_axi_arqos[3:0]           = '0;
-   assign sb_axi_arlock               = '0;
-
-   // AXI Response signals
-   assign sb_axi_bready = 1'b1;
-
-   assign sb_axi_rready = 1'b1;
-   assign sb_bus_rdata[63:0] = ({64{sb_axi_size == 3'h0}} & ((sb_axi_rdata[63:0] >>  8*sb_axi_addr[2:0]) & 64'hff))       |
-                               ({64{sb_axi_size == 3'h1}} & ((sb_axi_rdata[63:0] >> 16*sb_axi_addr[2:1]) & 64'hffff))    |
-                               ({64{sb_axi_size == 3'h2}} & ((sb_axi_rdata[63:0] >> 32*sb_axi_addr[2]) & 64'hffff_ffff)) |
-                               ({64{sb_axi_size == 3'h3}} & sb_axi_rdata[63:0]);
-
-`ifdef RV_ASSERT_ON
-// assertion.
-//  when the resume_ack is asserted then the dec_tlu_dbg_halted should be 0
-   dm_check_resume_and_halted: assert property (@(posedge clk)  disable iff(~rst_l) (~dec_tlu_resume_ack | ~dec_tlu_dbg_halted));
-
-   assert_b2b_haltreq: assert property (@(posedge clk) disable iff (~(rst_l)) (##1 dbg_halt_req |=> ~dbg_halt_req));  // One cycle delay to fix weird issue around reset
-   assert_halt_resume_onehot: assert #0 ($onehot0({dbg_halt_req, dbg_resume_req}));
-`endif
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_dec.sv b/verilog/rtl/BrqRV_EB1/design/eb1_dec.sv
deleted file mode 100644
index 3c08145..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_dec.sv
+++ /dev/null
@@ -1,454 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// dec: decode unit - decode, bypassing, ARF, interrupts
-//
-//********************************************************************************
-// $Id$
-//
-//
-// Function: Decode
-// Comments: Decode, dependency scoreboard, ARF
-//
-//
-// A -> D -> EX1 ... WB
-//
-//********************************************************************************
-
-module eb1_dec
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic clk,                          // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic active_clk,                   // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic free_clk,                     // Clock always.                  Through two clock headers. For flops without second clock header built in.
-   input logic free_l2clk,                   // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic lsu_fastint_stall_any,        // needed by lsu for 2nd pass of dma with ecc correction, stall next cycle
-
-   output logic dec_extint_stall,            // Stall on external interrupt
-
-   output logic dec_i0_decode_d,             // Valid instruction at D-stage and not blocked
-   output logic dec_pause_state_cg,          // to top for active state clock gating
-
-   output logic dec_tlu_core_empty,
-
-   input logic rst_l,                        // reset, active low
-   input logic [31:1] rst_vec,               // reset vector, from core pins
-
-   input logic        nmi_int,               // NMI pin
-   input logic [31:1] nmi_vec,               // NMI vector, from pins
-
-   input logic  i_cpu_halt_req,              // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,               // Asynchronous Restart request to CPU
-
-   output logic o_cpu_halt_status,           // Halt status of core (pmu/fw)
-   output logic o_cpu_halt_ack,              // Halt request ack
-   output logic o_cpu_run_ack,               // Run request ack
-   output logic o_debug_mode_status,         // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id,               // CORE ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req,           // Async halt request
-   input logic mpc_debug_run_req,            // Async run request
-   input logic mpc_reset_run_req,            // Run/halt after reset
-   output logic mpc_debug_halt_ack,          // Halt ack
-   output logic mpc_debug_run_ack,           // Run ack
-   output logic debug_brkpt_status,          // debug breakpoint
-
-    input logic       exu_pmu_i0_br_misp,    // slot 0 branch misp
-   input logic       exu_pmu_i0_br_ataken,   // slot 0 branch actual taken
-   input logic       exu_pmu_i0_pc4,         // slot 0 4 byte branch
-
-
-   input logic                                lsu_nonblock_load_valid_m,      // valid nonblock load at m
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_tag_m,        // -> corresponding tag
-   input logic                                lsu_nonblock_load_inv_r,        // invalidate request for nonblock load r
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_inv_tag_r,    // -> corresponding tag
-   input logic                                lsu_nonblock_load_data_valid,   // valid nonblock load data back
-   input logic                                lsu_nonblock_load_data_error,   // nonblock load bus error
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_data_tag,     // -> corresponding tag
-   input logic [31:0]                         lsu_nonblock_load_data,         // nonblock load data
-
-   input logic       lsu_pmu_bus_trxn,           // D side bus transaction
-   input logic       lsu_pmu_bus_misaligned,     // D side bus misaligned
-   input logic       lsu_pmu_bus_error,          // D side bus error
-   input logic       lsu_pmu_bus_busy,           // D side bus busy
-   input logic       lsu_pmu_misaligned_m,       // D side load or store misaligned
-   input logic       lsu_pmu_load_external_m,    // D side bus load
-   input logic       lsu_pmu_store_external_m,   // D side bus store
-   input logic       dma_pmu_dccm_read,          // DMA DCCM read
-   input logic       dma_pmu_dccm_write,         // DMA DCCM write
-   input logic       dma_pmu_any_read,           // DMA read
-   input logic       dma_pmu_any_write,          // DMA write
-
-   input logic [31:1] lsu_fir_addr,          // Fast int address
-   input logic [1:0] lsu_fir_error,          // Fast int lookup error
-
-   input logic       ifu_pmu_instr_aligned,  // aligned instructions
-   input logic       ifu_pmu_fetch_stall,    // fetch unit stalled
-   input logic       ifu_pmu_ic_miss,        // icache miss
-   input logic       ifu_pmu_ic_hit,         // icache hit
-   input logic       ifu_pmu_bus_error,      // Instruction side bus error
-   input logic       ifu_pmu_bus_busy,       // Instruction side bus busy
-   input logic       ifu_pmu_bus_trxn,       // Instruction side bus transaction
-
-   input logic       ifu_ic_error_start,     // IC single bit error
-   input logic       ifu_iccm_rd_ecc_single_err, // ICCM single bit error
-
-   input logic [3:0]  lsu_trigger_match_m,
-   input logic        dbg_cmd_valid,         // debugger abstract command valid
-   input logic        dbg_cmd_write,         // command is a write
-   input logic  [1:0] dbg_cmd_type,          // command type
-   input logic [31:0] dbg_cmd_addr,          // command address
-   input logic  [1:0] dbg_cmd_wrdata,        // command write data, for fence/fence_i
-
-
-   input logic        ifu_i0_icaf,           // icache access fault
-   input logic [1:0]  ifu_i0_icaf_type,      // icache access fault type
-
-   input logic   ifu_i0_icaf_second,         // i0 has access fault on second 2B of 4B inst
-   input logic   ifu_i0_dbecc,               // icache/iccm double-bit error
-
-   input logic lsu_idle_any,                 // lsu idle for halting
-
-   input eb1_br_pkt_t i0_brp,                                  // branch packet
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index, // BP index
-   input logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr,            // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag,           // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index,          // Fully associt btb index
-
-   input eb1_lsu_error_pkt_t lsu_error_pkt_r,         // LSU exception/error packet
-   input logic         lsu_single_ecc_error_incr,      // LSU inc SB error counter
-
-   input logic         lsu_imprecise_error_load_any,   // LSU imprecise load bus error
-   input logic         lsu_imprecise_error_store_any,  // LSU imprecise store bus error
-   input logic [31:0]  lsu_imprecise_error_addr_any,   // LSU imprecise bus error address
-
-   input logic [31:0]  exu_div_result,      // final div result
-   input logic         exu_div_wren,        // Divide write enable to GPR
-
-   input logic [31:0] exu_csr_rs1_x,        // rs1 for csr instruction
-
-   input logic [31:0] lsu_result_m,         // load result
-   input logic [31:0] lsu_result_corr_r,    // load result - corrected load data
-
-   input logic        lsu_load_stall_any,   // This is for blocking loads
-   input logic        lsu_store_stall_any,  // This is for blocking stores
-   input logic        dma_dccm_stall_any,   // stall any load/store at decode, pmu event
-   input logic        dma_iccm_stall_any,   // iccm stalled, pmu event
-
-   input logic       iccm_dma_sb_error,     // ICCM DMA single bit error
-
-   input logic exu_flush_final,             // slot0 flush
-
-   input logic [31:1] exu_npc_r,            // next PC
-
-   input logic [31:0] exu_i0_result_x,      // alu result x
-
-
-   input logic         ifu_i0_valid,                  // fetch valids to instruction buffer
-   input logic [31:0]  ifu_i0_instr,                  // fetch inst's to instruction buffer
-   input logic [31:1]  ifu_i0_pc,                     // pc's for instruction buffer
-   input logic         ifu_i0_pc4,                    // indication of 4B or 2B for corresponding inst
-   input logic  [31:1] exu_i0_pc_x,                   // pc's for e1 from the alu's
-
-   input logic mexintpend,                            // External interrupt pending
-   input logic timer_int,                             // Timer interrupt pending (from pin)
-   input logic soft_int,                              // Software interrupt pending (from pin)
-
-   input logic [7:0] pic_claimid,                     // PIC claimid
-   input logic [3:0] pic_pl,                          // PIC priv level
-   input logic       mhwakeup,                        // High priority wakeup
-
-   output logic [3:0] dec_tlu_meicurpl,               // to PIC, Current priv level
-   output logic [3:0] dec_tlu_meipt,                  // to PIC
-
-   input logic [70:0] ifu_ic_debug_rd_data,           // diagnostic icache read data
-   input logic ifu_ic_debug_rd_data_valid,            // diagnostic icache read data valid
-   output eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt, // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-
-
-// Debug start
-   input logic dbg_halt_req,                 // DM requests a halt
-   input logic dbg_resume_req,               // DM requests a resume
-   input logic ifu_miss_state_idle,          // I-side miss buffer empty
-
-   output logic dec_tlu_dbg_halted,          // Core is halted and ready for debug command
-   output logic dec_tlu_debug_mode,          // Core is in debug mode
-   output logic dec_tlu_resume_ack,          // Resume acknowledge
-   output logic dec_tlu_flush_noredir_r,     // Tell fetch to idle on this flush
-   output logic dec_tlu_mpc_halted_only,     // Core is halted only due to MPC
-   output logic dec_tlu_flush_leak_one_r,    // single step
-   output logic dec_tlu_flush_err_r,         // iside perr/ecc rfpc
-   output logic [31:2] dec_tlu_meihap,       // Fast ext int base
-
-   output logic dec_debug_wdata_rs1_d,       // insert debug write data into rs1 at decode
-
-   output logic [31:0] dec_dbg_rddata,       // debug command read data
-
-   output logic dec_dbg_cmd_done,            // abstract command is done
-   output logic dec_dbg_cmd_fail,            // abstract command failed (illegal reg address)
-
-   output eb1_trigger_pkt_t  [3:0] trigger_pkt_any, // info needed by debug trigger blocks
-
-   output logic dec_tlu_force_halt,          // halt has been forced
-// Debug end
-   // branch info from pipe0 for errors or counter updates
-   input logic [1:0]  exu_i0_br_hist_r,             // history
-   input logic        exu_i0_br_error_r,            // error
-   input logic        exu_i0_br_start_error_r,      // start error
-   input logic        exu_i0_br_valid_r,            // valid
-   input logic        exu_i0_br_mp_r,               // mispredict
-   input logic        exu_i0_br_middle_r,           // middle of bank
-
-   // branch info from pipe1 for errors or counter updates
-
-   input logic             exu_i0_br_way_r,         // way hit or repl
-
-   output logic         dec_i0_rs1_en_d,            // Qualify GPR RS1 data
-   output logic         dec_i0_rs2_en_d,            // Qualify GPR RS2 data
-   output logic  [31:0] gpr_i0_rs1_d,               // gpr rs1 data
-   output logic  [31:0] gpr_i0_rs2_d,               // gpr rs2 data
-
-   output logic [31:0] dec_i0_immed_d,              // immediate data
-   output logic [12:1] dec_i0_br_immed_d,           // br immediate data
-
-   output        eb1_alu_pkt_t i0_ap,              // alu packet
-
-   output logic          dec_i0_alu_decode_d,       // schedule on D-stage alu
-   output logic          dec_i0_branch_d,           // Branch in D-stage
-
-   output logic          dec_i0_select_pc_d,        // select pc onto rs1 for jal's
-
-   output logic [31:1]  dec_i0_pc_d,                // pc's at decode
-   output logic [3:0]   dec_i0_rs1_bypass_en_d,     // rs1 bypass enable
-   output logic [3:0]   dec_i0_rs2_bypass_en_d,     // rs2 bypass enable
-
-   output logic [31:0]  dec_i0_result_r,            // Result R-stage
-
-   output eb1_lsu_pkt_t    lsu_p,                  // lsu packet
-   output logic             dec_qual_lsu_d,         // LSU instruction at D.  Use to quiet LSU operands
-   output eb1_mul_pkt_t    mul_p,                  // mul packet
-   output eb1_div_pkt_t    div_p,                  // div packet
-   output logic             dec_div_cancel,         // cancel divide operation
-
-   output logic [11:0] dec_lsu_offset_d,            // 12b offset for load/store addresses
-
-   output logic        dec_csr_ren_d,               // CSR read enable
-   output logic [31:0] dec_csr_rddata_d,            // CSR read data
-
-   output logic        dec_tlu_flush_lower_r,       // tlu flush due to late mp, exception, rfpc, or int
-   output logic        dec_tlu_flush_lower_wb,
-   output logic [31:1] dec_tlu_flush_path_r,        // tlu flush target
-   output logic        dec_tlu_i0_kill_writeb_r,    // I0 is flushed, don't writeback any results to arch state
-   output logic        dec_tlu_fence_i_r,           // flush is a fence_i rfnpc, flush icache
-
-   output logic [31:1] pred_correct_npc_x,          // npc if prediction is correct at e2 stage
-
-   output eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt,      // slot 0 branch predictor update packet
-
-   output logic dec_tlu_perfcnt0,                   // toggles when slot0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1,                   // toggles when slot0 perf counter 1 has an event inc
-   output logic dec_tlu_perfcnt2,                   // toggles when slot0 perf counter 2 has an event inc
-   output logic dec_tlu_perfcnt3,                   // toggles when slot0 perf counter 3 has an event inc
-
-   output eb1_predict_pkt_t dec_i0_predict_p_d,                        // prediction packet to alus
-   output logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d,                // DEC predict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d,     // DEC predict index
-   output logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d,               // DEC predict branch tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   output logic dec_lsu_valid_raw_d,
-
-   output logic [31:0] dec_tlu_mrac_ff,              // CSR for memory region control
-
-   output logic [1:0] dec_data_en,                   // clock-gate control logic
-   output logic [1:0] dec_ctl_en,
-
-   input logic [15:0] ifu_i0_cinst,                  // 16b compressed instruction
-
-   output eb1_trace_pkt_t  trace_rv_trace_pkt,      // trace packet
-
-   // feature disable from mfdc
-   output logic  dec_tlu_external_ldfwd_disable,     // disable external load forwarding
-   output logic  dec_tlu_sideeffect_posted_disable,  // disable posted stores to side-effect address
-   output logic  dec_tlu_core_ecc_disable,           // disable core ECC
-   output logic  dec_tlu_bpred_disable,              // disable branch prediction
-   output logic  dec_tlu_wb_coalescing_disable,      // disable writebuffer coalescing
-   output logic [2:0]  dec_tlu_dma_qos_prty,         // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   output logic  dec_tlu_misc_clk_override,          // override misc clock domain gating
-   output logic  dec_tlu_ifu_clk_override,           // override fetch clock domain gating
-   output logic  dec_tlu_lsu_clk_override,           // override load/store clock domain gating
-   output logic  dec_tlu_bus_clk_override,           // override bus clock domain gating
-   output logic  dec_tlu_pic_clk_override,           // override PIC clock domain gating
-   output logic  dec_tlu_picio_clk_override,         // override PICIO clock domain gating
-   output logic  dec_tlu_dccm_clk_override,          // override DCCM clock domain gating
-   output logic  dec_tlu_icm_clk_override,           // override ICCM clock domain gating
-
-   output logic  dec_tlu_i0_commit_cmt,              // committed i0 instruction
-   input  logic  scan_mode                           // Flop scan mode control
- 
-
-   );
-
-
-   logic  dec_tlu_dec_clk_override;      // to and from dec blocks
-   logic  clk_override;
-
-   logic               dec_ib0_valid_d;
-
-   logic               dec_pmu_instr_decoded;
-   logic               dec_pmu_decode_stall;
-   logic               dec_pmu_presync_stall;
-   logic               dec_pmu_postsync_stall;
-
-   logic dec_tlu_wr_pause_r;             // CSR write to pause reg is at R.
-
-   logic [4:0]  dec_i0_rs1_d;
-   logic [4:0]  dec_i0_rs2_d;
-
-   logic [31:0] dec_i0_instr_d;
-
-   logic  dec_tlu_trace_disable;
-   logic  dec_tlu_pipelining_disable;
-
-
-   logic [4:0]  dec_i0_waddr_r;
-   logic        dec_i0_wen_r;
-   logic [31:0] dec_i0_wdata_r;
-   logic        dec_csr_wen_r;           // csr write enable at wb
-   logic [11:0] dec_csr_wraddr_r;        // write address for csryes
-   logic [31:0] dec_csr_wrdata_r;        // csr write data at wb
-
-   logic [11:0] dec_csr_rdaddr_d;        // read address for csr
-   logic        dec_csr_legal_d;         // csr indicates legal operation
-
-   logic        dec_csr_wen_unq_d;       // valid csr with write - for csr legal
-   logic        dec_csr_any_unq_d;       // valid csr - for csr legal
-   logic        dec_csr_stall_int_ff;    // csr is mie/mstatus
-
-   eb1_trap_pkt_t dec_tlu_packet_r;
-
-   logic        dec_i0_pc4_d;
-   logic        dec_tlu_presync_d;
-   logic        dec_tlu_postsync_d;
-   logic        dec_tlu_debug_stall;
-
-   logic [31:0] dec_illegal_inst;
-
-   logic                      dec_i0_icaf_d;
-
-   logic                      dec_i0_dbecc_d;
-   logic                      dec_i0_icaf_second_d;
-   logic [3:0]                dec_i0_trigger_match_d;
-   logic                      dec_debug_fence_d;
-   logic                      dec_nonblock_load_wen;
-   logic [4:0]                dec_nonblock_load_waddr;
-   logic                      dec_tlu_flush_pause_r;
-   eb1_br_pkt_t                   dec_i0_brp;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index;
-   logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr;
-   logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag;
-   logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index;          // Fully associt btb index
-
-   logic [31:1]               dec_tlu_i0_pc_r;
-   logic                      dec_tlu_i0_kill_writeb_wb;
-   logic                      dec_tlu_i0_valid_r;
-
-   logic                      dec_pause_state;
-
-   logic [1:0]                dec_i0_icaf_type_d;   // i0 instruction access fault type
-
-   logic                      dec_tlu_flush_extint; // Fast ext int started
-
-   logic [31:0]               dec_i0_inst_wb;
-   logic [31:1]               dec_i0_pc_wb;
-   logic                      dec_tlu_i0_valid_wb1,  dec_tlu_int_valid_wb1;
-   logic [4:0]                dec_tlu_exc_cause_wb1;
-   logic [31:0]               dec_tlu_mtval_wb1;
-   logic                      dec_tlu_i0_exc_valid_wb1;
-
-   logic [4:0]                div_waddr_wb;
-   logic                      dec_div_active;
-
-   logic                      dec_debug_valid_d;
-
-
-// Adding signals for vector
-   
-   //logic stall_scalar;
-   
-   
-   
-   assign clk_override = dec_tlu_dec_clk_override;
-
-
-   assign dec_dbg_rddata[31:0] = dec_i0_wdata_r[31:0];
-
-
-   eb1_dec_ib_ctl #(.pt(pt)) instbuff (.*);
-
-
-   eb1_dec_decode_ctl #(.pt(pt)) decode (.*);
-
-
-   eb1_dec_tlu_ctl #(.pt(pt)) tlu (.*);
-
-
-   eb1_dec_gpr_ctl #(.pt(pt)) arf (.*,
-                    // inputs
-                    .raddr0(dec_i0_rs1_d[4:0]),
-                    .raddr1(dec_i0_rs2_d[4:0]),
-
-                    .wen0(dec_i0_wen_r),          .waddr0(dec_i0_waddr_r[4:0]),          .wd0(dec_i0_wdata_r[31:0]),
-                    .wen1(dec_nonblock_load_wen), .waddr1(dec_nonblock_load_waddr[4:0]), .wd1(lsu_nonblock_load_data[31:0]),
-                    .wen2(exu_div_wren),          .waddr2(div_waddr_wb),                 .wd2(exu_div_result[31:0]),
-
-                    // outputs
-                    .rd0(gpr_i0_rs1_d[31:0]), .rd1(gpr_i0_rs2_d[31:0])
-                    );
-
-
-// Trigger
-
-   eb1_dec_trigger #(.pt(pt)) dec_trigger (.*);
-
-
-
-
-// trace
-   assign trace_rv_trace_pkt.trace_rv_i_insn_ip      =   dec_i0_inst_wb[31:0];
-   assign trace_rv_trace_pkt.trace_rv_i_address_ip   = { dec_i0_pc_wb[31:1], 1'b0};
-
-   assign trace_rv_trace_pkt.trace_rv_i_valid_ip     = dec_tlu_int_valid_wb1 | dec_tlu_i0_valid_wb1 | dec_tlu_i0_exc_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_exception_ip = dec_tlu_int_valid_wb1 |  dec_tlu_i0_exc_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_ecause_ip    = dec_tlu_exc_cause_wb1[4:0];     // replicate across ports
-   assign trace_rv_trace_pkt.trace_rv_i_interrupt_ip = dec_tlu_int_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_tval_ip      = dec_tlu_mtval_wb1[31:0];        // replicate across ports
-
-
-
-// end trace
-
-
-endmodule // eb1_dec
-
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_dec_decode_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_dec_decode_ctl.sv
deleted file mode 100644
index b663545..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_dec_decode_ctl.sv
+++ /dev/null
@@ -1,1825 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_dec_decode_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic dec_tlu_trace_disable,
-   input logic dec_debug_valid_d,
-
-   input logic dec_tlu_flush_extint,         // Flush external interrupt
-
-   input logic dec_tlu_force_halt,           // invalidate nonblock load cam on a force halt event
-
-   output logic dec_extint_stall,            // Stall from external interrupt
-
-   input  logic [15:0] ifu_i0_cinst,         // 16b compressed instruction
-   output logic [31:0] dec_i0_inst_wb,       // 32b instruction at wb+1 for trace encoder
-   output logic [31:1] dec_i0_pc_wb,         // 31b pc at wb+1 for trace encoder
-
-
-   input logic                                lsu_nonblock_load_valid_m,       // valid nonblock load at m
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_tag_m,         // -> corresponding tag
-   input logic                                lsu_nonblock_load_inv_r,         // invalidate request for nonblock load r
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_inv_tag_r,     // -> corresponding tag
-   input logic                                lsu_nonblock_load_data_valid,    // valid nonblock load data back
-   input logic                                lsu_nonblock_load_data_error,    // nonblock load bus error
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_data_tag,      // -> corresponding tag
-
-
-   input logic [3:0] dec_i0_trigger_match_d,          // i0 decode trigger matches
-
-   input logic dec_tlu_wr_pause_r,                    // pause instruction at r
-   input logic dec_tlu_pipelining_disable,            // pipeline disable - presync, i0 decode only
-
-   input logic [3:0]  lsu_trigger_match_m,            // lsu trigger matches
-
-   input logic lsu_pmu_misaligned_m,                  // perf mon: load/store misalign
-   input logic dec_tlu_debug_stall,                   // debug stall decode
-   input logic dec_tlu_flush_leak_one_r,              // leak1 instruction
-
-   input logic dec_debug_fence_d,                     // debug fence instruction
-
-   input logic [1:0] dbg_cmd_wrdata,                  // disambiguate fence, fence_i
-
-   input logic dec_i0_icaf_d,                         // icache access fault
-   input logic dec_i0_icaf_second_d,                  // i0 instruction access fault on second 2B of 4B inst
-   input logic [1:0] dec_i0_icaf_type_d,              // i0 instruction access fault type
-
-   input logic dec_i0_dbecc_d,                        // icache/iccm double-bit error
-
-   input eb1_br_pkt_t dec_i0_brp,                    // branch packet
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index,   // i0 branch index
-   input logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr,  // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag, // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index,          // Fully associt btb index
-
-   input logic lsu_idle_any,                          // lsu idle: if fence instr & ~lsu_idle then stall decode
-
-   input logic lsu_load_stall_any,                    // stall any load at decode
-   input logic lsu_store_stall_any,                   // stall any store at decode
-   input logic dma_dccm_stall_any,                    // stall any load/store at decode
-
-   input logic exu_div_wren,                          // nonblocking divide write enable to GPR.
-
-   input logic dec_tlu_i0_kill_writeb_wb,             // I0 is flushed, don't writeback any results to arch state
-   input logic dec_tlu_flush_lower_wb,                // trap lower flush
-   input logic dec_tlu_i0_kill_writeb_r,              // I0 is flushed, don't writeback any results to arch state
-   input logic dec_tlu_flush_lower_r,                 // trap lower flush
-   input logic dec_tlu_flush_pause_r,                 // don't clear pause state on initial lower flush
-   input logic dec_tlu_presync_d,                     // CSR read needs to be presync'd
-   input logic dec_tlu_postsync_d,                    // CSR ops that need to be postsync'd
-
-   input logic dec_i0_pc4_d,                          // inst is 4B inst else 2B
-
-   input logic [31:0] dec_csr_rddata_d,               // csr read data at wb
-   input logic dec_csr_legal_d,                       // csr indicates legal operation
-
-   input logic [31:0] exu_csr_rs1_x,                  // rs1 for csr instr
-
-   input logic [31:0] lsu_result_m,                   // load result
-   input logic [31:0] lsu_result_corr_r,              // load result - corrected data for writing gpr's, not for bypassing
-
-   input logic exu_flush_final,                       // lower flush or i0 flush at X or D
-
-   input logic [31:1] exu_i0_pc_x,                    // pcs at e1
-
-   input logic [31:0] dec_i0_instr_d,                 // inst at decode
-
-   input logic  dec_ib0_valid_d,                      // inst valid at decode
-
-   input logic [31:0] exu_i0_result_x,                // from primary alu's
-
-   input logic  clk,                                  // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic  active_clk,                           // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic  free_l2clk,                           // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic  clk_override,                         // Override non-functional clock gating
-   input logic  rst_l,                                // Flop reset
-
-
-
-   output logic        dec_i0_rs1_en_d,               // rs1 enable at decode
-   output logic        dec_i0_rs2_en_d,               // rs2 enable at decode
-
-   output logic [4:0]  dec_i0_rs1_d,                  // rs1 logical source
-   output logic [4:0]  dec_i0_rs2_d,                  // rs2 logical source
-
-   output logic [31:0] dec_i0_immed_d,                // 32b immediate data decode
-
-
-   output logic [12:1] dec_i0_br_immed_d,             // 12b branch immediate
-
-   output eb1_alu_pkt_t i0_ap,                       // alu packets
-
-   output logic        dec_i0_decode_d,               // i0 decode
-
-   output logic        dec_i0_alu_decode_d,           // decode to D-stage alu
-   output logic        dec_i0_branch_d,               // Branch in D-stage
-
-   output logic [4:0]  dec_i0_waddr_r,                // i0 logical source to write to gpr's
-   output logic        dec_i0_wen_r,                  // i0 write enable
-   output logic [31:0] dec_i0_wdata_r,                // i0 write data
-
-   output logic        dec_i0_select_pc_d,            // i0 select pc for rs1 - branches
-
-   output logic [3:0]    dec_i0_rs1_bypass_en_d,      // i0 rs1 bypass enable
-   output logic [3:0]    dec_i0_rs2_bypass_en_d,      // i0 rs2 bypass enable
-   output logic [31:0]   dec_i0_result_r,             // Result R-stage
-
-   output eb1_lsu_pkt_t    lsu_p,                    // load/store packet
-   output logic             dec_qual_lsu_d,           // LSU instruction at D.  Use to quiet LSU operands
-
-   output eb1_mul_pkt_t    mul_p,                    // multiply packet
-
-   output eb1_div_pkt_t    div_p,                    // divide packet
-   output logic [4:0]       div_waddr_wb,             // DIV write address to GPR
-   output logic             dec_div_cancel,           // cancel the divide operation
-
-   output logic        dec_lsu_valid_raw_d,
-   output logic [11:0] dec_lsu_offset_d,
-
-   output logic        dec_csr_ren_d,                 // valid csr decode
-   output logic        dec_csr_wen_unq_d,             // valid csr with write - for csr legal
-   output logic        dec_csr_any_unq_d,             // valid csr - for csr legal
-   output logic [11:0] dec_csr_rdaddr_d,              // read address for csr
-   output logic        dec_csr_wen_r,                 // csr write enable at r
-   output logic [11:0] dec_csr_wraddr_r,              // write address for csr
-   output logic [31:0] dec_csr_wrdata_r,              // csr write data at r
-   output logic        dec_csr_stall_int_ff,          // csr is mie/mstatus
-
-   output              dec_tlu_i0_valid_r,            // i0 valid inst at c
-
-   output eb1_trap_pkt_t   dec_tlu_packet_r,              // trap packet
-
-   output logic [31:1] dec_tlu_i0_pc_r,               // i0 trap pc
-
-   output logic [31:0] dec_illegal_inst,              // illegal inst
-   output logic [31:1] pred_correct_npc_x,            // npc e2 if the prediction is correct
-
-   output eb1_predict_pkt_t dec_i0_predict_p_d,      // i0 predict packet decode
-   output logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d, // i0 predict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d, // i0 predict index
-   output logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d, // i0_predict branch tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   output logic [1:0] dec_data_en,                    // clock-gating logic
-   output logic [1:0] dec_ctl_en,
-
-   output logic       dec_pmu_instr_decoded,          // number of instructions decode this cycle encoded
-   output logic       dec_pmu_decode_stall,           // decode is stalled
-   output logic       dec_pmu_presync_stall,          // decode has presync stall
-   output logic       dec_pmu_postsync_stall,         // decode has postsync stall
-
-   output logic       dec_nonblock_load_wen,          // write enable for nonblock load
-   output logic [4:0] dec_nonblock_load_waddr,        // logical write addr for nonblock load
-   output logic       dec_pause_state,                // core in pause state
-   output logic       dec_pause_state_cg,             // pause state for clock-gating
-
-   output logic       dec_div_active,                 // non-block divide is active
-
-   input  logic       scan_mode
-   
-   );
-
-
-
-
-   eb1_dec_pkt_t           i0_dp_raw, i0_dp;
-
-   logic [31:0]        i0;
-   logic               i0_valid_d;
-
-   logic [31:0]        i0_result_r;
-
-   logic [2:0]         i0_rs1bypass, i0_rs2bypass;
-
-   logic               i0_jalimm20;
-   logic               i0_uiimm20;
-
-   logic               lsu_decode_d;
-   logic [31:0]        i0_immed_d;
-   logic               i0_presync;
-   logic               i0_postsync;
-
-   logic               postsync_stall;
-   logic               ps_stall;
-
-   logic               prior_inflight, prior_inflight_wb;
-
-   logic               csr_clr_d, csr_set_d, csr_write_d;
-
-   logic               csr_clr_x,csr_set_x,csr_write_x,csr_imm_x;
-   logic [31:0]        csr_mask_x;
-   logic [31:0]        write_csr_data_x;
-   logic [31:0]        write_csr_data_in;
-   logic [31:0]        write_csr_data;
-   logic               csr_data_wen;
-
-   logic [4:0]         csrimm_x;
-
-   logic [31:0]        csr_rddata_x;
-
-   logic               mul_decode_d;
-   logic               div_decode_d;
-   logic               div_e1_to_r;
-   logic               div_flush;
-   logic               div_active_in;
-   logic               div_active;
-   logic               i0_nonblock_div_stall;
-   logic               i0_div_prior_div_stall;
-   logic               nonblock_div_cancel;
-
-   logic               i0_legal;
-   logic               shift_illegal;
-   logic               illegal_inst_en;
-   logic               illegal_lockout_in, illegal_lockout;
-   logic               i0_legal_decode_d;
-   logic               i0_exulegal_decode_d, i0_exudecode_d, i0_exublock_d;
-
-   logic [12:1]        last_br_immed_d;
-   logic               i0_rs1_depend_i0_x, i0_rs1_depend_i0_r;
-   logic               i0_rs2_depend_i0_x, i0_rs2_depend_i0_r;
-
-   logic               i0_div_decode_d;
-   logic               i0_load_block_d;
-   logic [1:0]         i0_rs1_depth_d, i0_rs2_depth_d;
-
-   logic               i0_load_stall_d;
-   logic               i0_store_stall_d;
-
-   logic               i0_predict_nt, i0_predict_t;
-
-   logic               i0_notbr_error, i0_br_toffset_error;
-   logic               i0_ret_error;
-   logic               i0_br_error;
-   logic               i0_br_error_all;
-   logic [11:0]        i0_br_offset;
-
-   logic [20:1]        i0_pcall_imm;                          // predicted jal's
-   logic               i0_pcall_12b_offset;
-   logic               i0_pcall_raw;
-   logic               i0_pcall_case;
-   logic               i0_pcall;
-
-   logic               i0_pja_raw;
-   logic               i0_pja_case;
-   logic               i0_pja;
-
-   logic               i0_pret_case;
-   logic               i0_pret_raw, i0_pret;
-
-   logic               i0_jal;                                // jal's that are not predicted
-
-
-   logic               i0_predict_br;
-
-   logic               store_data_bypass_d, store_data_bypass_m;
-
-   eb1_class_pkt_t         i0_rs1_class_d, i0_rs2_class_d;
-
-   eb1_class_pkt_t         i0_d_c, i0_x_c, i0_r_c;
-
-
-   logic               i0_ap_pc2, i0_ap_pc4;
-
-   logic               i0_rd_en_d;
-
-   logic               load_ldst_bypass_d;
-
-   logic               leak1_i0_stall_in, leak1_i0_stall;
-   logic               leak1_i1_stall_in, leak1_i1_stall;
-   logic               leak1_mode;
-
-   logic               i0_csr_write_only_d;
-
-   logic               prior_inflight_x, prior_inflight_eff;
-   logic               any_csr_d;
-
-   logic               prior_csr_write;
-
-   logic [3:0]        i0_pipe_en;
-   logic              i0_r_ctl_en,  i0_x_ctl_en,  i0_wb_ctl_en;
-   logic              i0_x_data_en, i0_r_data_en, i0_wb_data_en;
-
-   logic              debug_fence_i;
-   logic              debug_fence;
-
-   logic              i0_csr_write;
-   logic              presync_stall;
-
-   logic              i0_instr_error;
-   logic              i0_icaf_d;
-
-   logic              clear_pause;
-   logic              pause_state_in, pause_state;
-   logic              pause_stall;
-
-   logic              i0_brp_valid;
-   logic              nonblock_load_cancel;
-   logic              lsu_idle;
-   logic              lsu_pmu_misaligned_r;
-   logic              csr_ren_qual_d;
-   logic              csr_read_x;
-   logic              i0_block_d;
-   logic              i0_block_raw_d;  // This is use to create the raw valid
-   logic              ps_stall_in;
-   logic [31:0]       i0_result_x;
-
-   eb1_dest_pkt_t         d_d, x_d, r_d, wbd;
-   eb1_dest_pkt_t         x_d_in, r_d_in;
-
-   eb1_trap_pkt_t         d_t, x_t, x_t_in, r_t_in, r_t;
-
-   logic [3:0]        lsu_trigger_match_r;
-
-   logic [31:1]       dec_i0_pc_r;
-
-   logic csr_read, csr_write;
-   logic i0_br_unpred;
-
-   logic nonblock_load_valid_m_delay;
-   logic i0_wen_r;
-
-   logic tlu_wr_pause_r1;
-   logic tlu_wr_pause_r2;
-
-   logic flush_final_r;
-
-   logic bitmanip_zbb_legal;
-   logic bitmanip_zbs_legal;
-   logic bitmanip_zbe_legal;
-   logic bitmanip_zbc_legal;
-   logic bitmanip_zbp_legal;
-   logic bitmanip_zbr_legal;
-   logic bitmanip_zbf_legal;
-   logic bitmanip_zba_legal;
-   logic bitmanip_zbb_zbp_legal;
-   logic bitmanip_legal;
-
-   logic              data_gate_en;
-   logic              data_gate_clk;
-
-
-   localparam NBLOAD_SIZE     = pt.LSU_NUM_NBLOAD;
-   localparam NBLOAD_SIZE_MSB = int'(pt.LSU_NUM_NBLOAD)-1;
-   localparam NBLOAD_TAG_MSB  = pt.LSU_NUM_NBLOAD_WIDTH-1;
-
-
-   logic                     cam_write, cam_inv_reset, cam_data_reset;
-   logic [NBLOAD_TAG_MSB:0]  cam_write_tag, cam_inv_reset_tag, cam_data_reset_tag;
-   logic [NBLOAD_SIZE_MSB:0] cam_wen;
-
-   logic [NBLOAD_TAG_MSB:0]  load_data_tag;
-   logic [NBLOAD_SIZE_MSB:0] nonblock_load_write;
-
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam;
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam_in;
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam_raw;
-
-   logic [4:0] nonblock_load_rd;
-   logic i0_nonblock_load_stall;
-   logic i0_nonblock_boundary_stall;
-
-   logic i0_rs1_nonblock_load_bypass_en_d, i0_rs2_nonblock_load_bypass_en_d;
-
-   logic i0_load_kill_wen_r;
-
-   logic found;
-
-   logic [NBLOAD_SIZE_MSB:0] cam_inv_reset_val, cam_data_reset_val;
-
-   logic debug_fence_raw;
-
-   logic [31:0] i0_result_r_raw;
-   logic [31:0] i0_result_corr_r;
-
-   logic [12:1] last_br_immed_x;
-
-   logic [31:0]        i0_inst_d;
-   logic [31:0]        i0_inst_x;
-   logic [31:0]        i0_inst_r;
-   logic [31:0]        i0_inst_wb_in;
-   logic [31:0]        i0_inst_wb;
-
-   logic [31:1]        i0_pc_wb;
-
-   logic               i0_wb_en;
-
-   logic               trace_enable;
-
-   logic               debug_valid_x;
-
-   eb1_inst_pkt_t i0_itype;
-   eb1_reg_pkt_t i0r;
-   
-
-
-   rvdffie  #(8) misc1ff (.*,
-                          .clk(free_l2clk),
-                          .din( {leak1_i1_stall_in,leak1_i0_stall_in,dec_tlu_flush_extint,pause_state_in ,dec_tlu_wr_pause_r, tlu_wr_pause_r1,illegal_lockout_in,ps_stall_in}),
-                          .dout({leak1_i1_stall,   leak1_i0_stall,   dec_extint_stall,    pause_state,       tlu_wr_pause_r1,tlu_wr_pause_r2,illegal_lockout,   ps_stall   })
-                          );
-
-   rvdffie  #(8) misc2ff (.*,
-                          .clk(free_l2clk),
-                          .din( {lsu_trigger_match_m[3:0],lsu_pmu_misaligned_m,div_active_in,exu_flush_final,  dec_debug_valid_d}),
-                          .dout({lsu_trigger_match_r[3:0],lsu_pmu_misaligned_r,div_active,       flush_final_r,    debug_valid_x})
-                          );
-
-if(pt.BTB_ENABLE==1) begin
-// branch prediction
-
-
-   // in leak1_mode, ignore any predictions for i0, treat branch as if we haven't seen it before
-   // in leak1 mode, also ignore branch errors for i0
-   assign i0_brp_valid                        =  dec_i0_brp.valid & ~leak1_mode & ~i0_icaf_d;
-
-   assign dec_i0_predict_p_d.misp        =  '0;
-   assign dec_i0_predict_p_d.ataken      =  '0;
-   assign dec_i0_predict_p_d.boffset     =  '0;
-
-   assign dec_i0_predict_p_d.pcall       =  i0_pcall;  // don't mark as pcall if branch error
-   assign dec_i0_predict_p_d.pja         =  i0_pja;
-   assign dec_i0_predict_p_d.pret        =  i0_pret;
-   assign dec_i0_predict_p_d.prett[31:1] =  dec_i0_brp.prett[31:1];
-   assign dec_i0_predict_p_d.pc4         =  dec_i0_pc4_d;
-   assign dec_i0_predict_p_d.hist[1:0]   =  dec_i0_brp.hist[1:0];
-   assign dec_i0_predict_p_d.valid       =  i0_brp_valid & i0_legal_decode_d;
-   assign i0_notbr_error                 =  i0_brp_valid & ~(i0_dp_raw.condbr | i0_pcall_raw | i0_pja_raw | i0_pret_raw);
-
-   // no toffset error for a pret
-   assign i0_br_toffset_error                               =  i0_brp_valid & dec_i0_brp.hist[1] & (dec_i0_brp.toffset[11:0] != i0_br_offset[11:0]) & ~i0_pret_raw;
-   assign i0_ret_error                                      =  i0_brp_valid & (dec_i0_brp.ret ^ i0_pret_raw);
-   assign i0_br_error                                       =  dec_i0_brp.br_error | i0_notbr_error | i0_br_toffset_error | i0_ret_error;
-   assign dec_i0_predict_p_d.br_error                       =  i0_br_error & i0_legal_decode_d & ~leak1_mode;
-   assign dec_i0_predict_p_d.br_start_error                 =  dec_i0_brp.br_start_error & i0_legal_decode_d & ~leak1_mode;
-   assign i0_predict_index_d[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] =  dec_i0_bp_index;
-
-   assign i0_predict_btag_d[pt.BTB_BTAG_SIZE-1:0]           =  dec_i0_bp_btag[pt.BTB_BTAG_SIZE-1:0];
-   assign i0_br_error_all                                   = (i0_br_error | dec_i0_brp.br_start_error) & ~leak1_mode;
-   assign dec_i0_predict_p_d.toffset[11:0]                  =  i0_br_offset[11:0];
-   assign i0_predict_fghr_d[pt.BHT_GHR_SIZE-1:0]            =  dec_i0_bp_fghr[pt.BHT_GHR_SIZE-1:0];
-   assign dec_i0_predict_p_d.way                            =  dec_i0_brp.way;
-
-
-   if(pt.BTB_FULLYA) begin
-      logic btb_error_found, btb_error_found_f;
-      logic [$clog2(pt.BTB_SIZE)-1:0] fa_error_index_ns;
-
-      assign btb_error_found = (i0_br_error_all | btb_error_found_f) & ~dec_tlu_flush_lower_r;
-      assign fa_error_index_ns = (i0_br_error_all & ~btb_error_found_f) ? dec_i0_bp_fa_index : dec_fa_error_index;
-
-      rvdff #($clog2(pt.BTB_SIZE)+1) btberrorfa_f   (.*, .clk(active_clk),
-                                                         .din({btb_error_found,    fa_error_index_ns}),
-                                                         .dout({btb_error_found_f, dec_fa_error_index}));
-
-
-   end
-   else
-     assign dec_fa_error_index = 'b0;
-
-
-   //   end
-end // if (pt.BTB_ENABLE==1)
-else begin
-
-   always_comb begin
-      dec_i0_predict_p_d = '0;
-      dec_i0_predict_p_d.pcall       =  i0_pcall;  // don't mark as pcall if branch error
-      dec_i0_predict_p_d.pja         =  i0_pja;
-      dec_i0_predict_p_d.pret        =  i0_pret;
-      dec_i0_predict_p_d.pc4         =  dec_i0_pc4_d;
-   end
-
-   assign i0_br_error_all = '0;
-   assign i0_predict_index_d = '0;
-   assign i0_predict_btag_d = '0;
-   assign i0_predict_fghr_d = '0;
-   assign i0_brp_valid = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   // on br error turn anything into a nop
-   // on i0 instruction fetch access fault turn anything into a nop
-   // nop =>   alu rs1 imm12 rd lor
-
-   assign i0_icaf_d = dec_i0_icaf_d | dec_i0_dbecc_d;
-
-   assign i0_instr_error = i0_icaf_d;
-
-   always_comb begin
-      i0_dp = i0_dp_raw;
-      if (i0_br_error_all | i0_instr_error) begin
-         i0_dp          =   '0;
-         i0_dp.alu      = 1'b1;
-         i0_dp.rs1      = 1'b1;
-         i0_dp.rs2      = 1'b1;
-         i0_dp.lor      = 1'b1;
-         i0_dp.legal    = 1'b1;
-         i0_dp.postsync = 1'b1;
-      end
-   end
-
-   assign i0[31:0] = dec_i0_instr_d[31:0];
-
-   assign dec_i0_select_pc_d = i0_dp.pc;
-
-   // branches that can be predicted
-
-   assign i0_predict_br =  i0_dp.condbr | i0_pcall | i0_pja | i0_pret;
-
-   assign i0_predict_nt = ~(dec_i0_brp.hist[1] & i0_brp_valid) & i0_predict_br;
-   assign i0_predict_t  =  (dec_i0_brp.hist[1] & i0_brp_valid) & i0_predict_br;
-
-   assign i0_ap.add     =  i0_dp.add;
-   assign i0_ap.sub     =  i0_dp.sub;
-   assign i0_ap.land    =  i0_dp.land;
-   assign i0_ap.lor     =  i0_dp.lor;
-   assign i0_ap.lxor    =  i0_dp.lxor;
-   assign i0_ap.sll     =  i0_dp.sll;
-   assign i0_ap.srl     =  i0_dp.srl;
-   assign i0_ap.sra     =  i0_dp.sra;
-   assign i0_ap.slt     =  i0_dp.slt;
-   assign i0_ap.unsign  =  i0_dp.unsign;
-   assign i0_ap.beq     =  i0_dp.beq;
-   assign i0_ap.bne     =  i0_dp.bne;
-   assign i0_ap.blt     =  i0_dp.blt;
-   assign i0_ap.bge     =  i0_dp.bge;
-
-   assign i0_ap.clz     =  i0_dp.clz;
-   assign i0_ap.ctz     =  i0_dp.ctz;
-   assign i0_ap.pcnt    =  i0_dp.pcnt;
-   assign i0_ap.sext_b  =  i0_dp.sext_b;
-   assign i0_ap.sext_h  =  i0_dp.sext_h;
-   assign i0_ap.sh1add  =  i0_dp.sh1add;
-   assign i0_ap.sh2add  =  i0_dp.sh2add;
-   assign i0_ap.sh3add  =  i0_dp.sh3add;
-   assign i0_ap.zba     =  i0_dp.zba;
-   assign i0_ap.slo     =  i0_dp.slo;
-   assign i0_ap.sro     =  i0_dp.sro;
-   assign i0_ap.min     =  i0_dp.min;
-   assign i0_ap.max     =  i0_dp.max;
-   assign i0_ap.pack    =  i0_dp.pack;
-   assign i0_ap.packu   =  i0_dp.packu;
-   assign i0_ap.packh   =  i0_dp.packh;
-   assign i0_ap.rol     =  i0_dp.rol;
-   assign i0_ap.ror     =  i0_dp.ror;
-   assign i0_ap.grev    =  i0_dp.grev;
-   assign i0_ap.gorc    =  i0_dp.gorc;
-   assign i0_ap.zbb     =  i0_dp.zbb;
-   assign i0_ap.sbset   =  i0_dp.sbset;
-   assign i0_ap.sbclr   =  i0_dp.sbclr;
-   assign i0_ap.sbinv   =  i0_dp.sbinv;
-   assign i0_ap.sbext   =  i0_dp.sbext;
-
-   assign i0_ap.csr_write =  i0_csr_write_only_d;
-   assign i0_ap.csr_imm   =  i0_dp.csr_imm;
-   assign i0_ap.jal       =  i0_jal;
-
-   assign i0_ap_pc2 = ~dec_i0_pc4_d;
-   assign i0_ap_pc4 =  dec_i0_pc4_d;
-
-   assign i0_ap.predict_nt = i0_predict_nt;
-   assign i0_ap.predict_t  = i0_predict_t;
-
-
-// non block load cam logic
-
-   always_comb begin
-      found = 0;
-      cam_wen[NBLOAD_SIZE_MSB:0] = '0;
-      for (int i=0; i<NBLOAD_SIZE; i++) begin
-         if (~found) begin
-            if (~cam[i].valid) begin
-               cam_wen[i] = cam_write;
-               found = 1'b1;
-            end
-            else begin
-               cam_wen[i] = 0;
-            end
-         end
-         else
-            cam_wen[i] = 0;
-      end
-   end
-
-
-   assign cam_write          = lsu_nonblock_load_valid_m;
-   assign cam_write_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_tag_m[NBLOAD_TAG_MSB:0];
-
-   assign cam_inv_reset          = lsu_nonblock_load_inv_r;
-   assign cam_inv_reset_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_inv_tag_r[NBLOAD_TAG_MSB:0];
-
-   assign cam_data_reset          = lsu_nonblock_load_data_valid | lsu_nonblock_load_data_error;
-   assign cam_data_reset_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_data_tag[NBLOAD_TAG_MSB:0];
-
-   assign nonblock_load_rd[4:0] = (x_d.i0load) ? x_d.i0rd[4:0] : 5'b0;  // rd data
-
-
-   // checks
-
-`ifdef RV_ASSERT_ON
-   assert_dec_data_valid_data_error_onehot:    assert #0 ($onehot0({lsu_nonblock_load_data_valid,lsu_nonblock_load_data_error}));
-   assert_dec_cam_inv_reset_onehot:            assert #0 ($onehot0(cam_inv_reset_val[NBLOAD_SIZE_MSB:0]));
-   assert_dec_cam_data_reset_onehot:           assert #0 ($onehot0(cam_data_reset_val[NBLOAD_SIZE_MSB:0]));
-`endif
-
-
-
-    // case of multiple loads to same dest ie. x1 ... you have to invalidate the older one
-
-   for (genvar i=0; i<NBLOAD_SIZE; i++) begin : cam_array
-
-      assign cam_inv_reset_val[i] = cam_inv_reset   & (cam_inv_reset_tag[NBLOAD_TAG_MSB:0]  == cam[i].tag[NBLOAD_TAG_MSB:0]) & cam[i].valid;
-
-      assign cam_data_reset_val[i] = cam_data_reset & (cam_data_reset_tag[NBLOAD_TAG_MSB:0] == cam_raw[i].tag[NBLOAD_TAG_MSB:0]) & cam_raw[i].valid;
-
-      always_comb begin
-
-         cam[i] = cam_raw[i];
-
-         if (cam_data_reset_val[i])
-           cam[i].valid = 1'b0;
-
-         cam_in[i] = '0;
-
-         if (cam_wen[i]) begin
-            cam_in[i].valid    = 1'b1;
-            cam_in[i].wb       = 1'b0;
-            cam_in[i].tag[NBLOAD_TAG_MSB:0] = cam_write_tag[NBLOAD_TAG_MSB:0];
-            cam_in[i].rd[4:0]  = nonblock_load_rd[4:0];
-         end
-         else if ( (cam_inv_reset_val[i]) |
-                   (i0_wen_r & (r_d_in.i0rd[4:0] == cam[i].rd[4:0]) & cam[i].wb) )
-           cam_in[i].valid = 1'b0;
-         else
-           cam_in[i] = cam[i];
-
-         if (nonblock_load_valid_m_delay & (lsu_nonblock_load_inv_tag_r[NBLOAD_TAG_MSB:0]==cam[i].tag[NBLOAD_TAG_MSB:0]) & cam[i].valid)
-           cam_in[i].wb = 1'b1;
-
-         // force debug halt forces cam valids to 0; highest priority
-         if (dec_tlu_force_halt)
-           cam_in[i].valid = 1'b0;
-      end
-
-
-   rvdffie #( $bits(eb1_load_cam_pkt_t) ) cam_ff (.*, .din(cam_in[i]), .dout(cam_raw[i]));
-
-
-   assign nonblock_load_write[i] = (load_data_tag[NBLOAD_TAG_MSB:0] == cam_raw[i].tag[NBLOAD_TAG_MSB:0]) & cam_raw[i].valid;
-
-
-end : cam_array
-
-
-
-   assign load_data_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_data_tag[NBLOAD_TAG_MSB:0];
-
-`ifdef RV_ASSERT_ON
-   assert_dec_cam_nonblock_load_write_onehot:   assert #0 ($onehot0(nonblock_load_write[NBLOAD_SIZE_MSB:0]));
-`endif
-
-
-   assign nonblock_load_cancel = ((r_d_in.i0rd[4:0] == dec_nonblock_load_waddr[4:0]) & i0_wen_r);     // cancel if any younger inst (including another nonblock) committing this cycle
-
-
-   assign dec_nonblock_load_wen = lsu_nonblock_load_data_valid & |nonblock_load_write[NBLOAD_SIZE_MSB:0] & ~nonblock_load_cancel;
-
-   always_comb begin
-
-      dec_nonblock_load_waddr[4:0] = '0;
-      i0_nonblock_load_stall = i0_nonblock_boundary_stall;
-
-      for (int i=0; i<NBLOAD_SIZE; i++) begin
-         dec_nonblock_load_waddr[4:0] |= ({5{nonblock_load_write[i]}} & cam[i].rd[4:0]);
-         i0_nonblock_load_stall |= dec_i0_rs1_en_d & cam[i].valid & (cam[i].rd[4:0] == i0r.rs1[4:0]);
-         i0_nonblock_load_stall |= dec_i0_rs2_en_d & cam[i].valid & (cam[i].rd[4:0] == i0r.rs2[4:0]);
-      end
-
-   end
-
-   assign i0_nonblock_boundary_stall = ((nonblock_load_rd[4:0]==i0r.rs1[4:0]) & lsu_nonblock_load_valid_m & dec_i0_rs1_en_d) |
-                                       ((nonblock_load_rd[4:0]==i0r.rs2[4:0]) & lsu_nonblock_load_valid_m & dec_i0_rs2_en_d);
-
-
-
-// don't writeback a nonblock load
-
-   rvdffs #(1) wbnbloaddelayff (.*, .clk(active_clk), .en(i0_r_ctl_en ), .din(lsu_nonblock_load_valid_m),        .dout(nonblock_load_valid_m_delay) );
-
-   assign i0_load_kill_wen_r = nonblock_load_valid_m_delay &  r_d.i0load;
-
-
-
-// end non block load cam logic
-
-// pmu start
-
-
-
-
-   assign csr_read = csr_ren_qual_d;
-   assign csr_write = dec_csr_wen_unq_d;
-
-   assign i0_br_unpred = i0_dp.jal & ~i0_predict_br;
-
-   // the classes must be mutually exclusive with one another
-
-   always_comb begin
-      i0_itype = NULL;
-
-      if (i0_legal_decode_d) begin
-         if (i0_dp.mul)                  i0_itype = MUL;
-         if (i0_dp.load)                 i0_itype = LOAD;
-         if (i0_dp.store)                i0_itype = STORE;
-         if (i0_dp.pm_alu)               i0_itype = ALU;
-         if (i0_dp.zbb | i0_dp.zbs |
-             i0_dp.zbe | i0_dp.zbc |
-             i0_dp.zbp | i0_dp.zbr |
-             i0_dp.zbf | i0_dp.zba)
-                                         i0_itype = BITMANIPU;
-         if ( csr_read & ~csr_write)     i0_itype = CSRREAD;
-         if (~csr_read &  csr_write)     i0_itype = CSRWRITE;
-         if ( csr_read &  csr_write)     i0_itype = CSRRW;
-         if (i0_dp.ebreak)               i0_itype = EBREAK;
-         if (i0_dp.ecall)                i0_itype = ECALL;
-         if (i0_dp.fence)                i0_itype = FENCE;
-         if (i0_dp.fence_i)              i0_itype = FENCEI;  // fencei will set this even with fence attribute
-         if (i0_dp.mret)                 i0_itype = MRET;
-         if (i0_dp.condbr)               i0_itype = CONDBR;
-         if (i0_dp.jal)                  i0_itype = JAL;
-      end
-   end
-
-
-
-
-
-// end pmu
-
-
-   eb1_dec_dec_ctl i0_dec (.inst(i0[31:0]),.out(i0_dp_raw));
-   
-
-
-   rvdff #(1) lsu_idle_ff (.*, .clk(active_clk), .din(lsu_idle_any), .dout(lsu_idle));
-
-
-
-   assign leak1_i1_stall_in = (dec_tlu_flush_leak_one_r | (leak1_i1_stall & ~dec_tlu_flush_lower_r));
-
-
-   assign leak1_mode = leak1_i1_stall;
-
-   assign leak1_i0_stall_in = ((dec_i0_decode_d & leak1_i1_stall) | (leak1_i0_stall & ~dec_tlu_flush_lower_r));
-
-
-
-
-   // 12b jal's can be predicted - these are calls
-
-   assign i0_pcall_imm[20:1] = {i0[31],i0[19:12],i0[20],i0[30:21]};
-
-   assign i0_pcall_12b_offset = (i0_pcall_imm[12]) ? (i0_pcall_imm[20:13] == 8'hff) : (i0_pcall_imm[20:13] == 8'h0);
-
-   assign i0_pcall_case  = i0_pcall_12b_offset & i0_dp_raw.imm20 &  (i0r.rd[4:0] == 5'd1 | i0r.rd[4:0] == 5'd5);
-   assign i0_pja_case    = i0_pcall_12b_offset & i0_dp_raw.imm20 & ~(i0r.rd[4:0] == 5'd1 | i0r.rd[4:0] == 5'd5);
-
-   assign i0_pcall_raw   = i0_dp_raw.jal &   i0_pcall_case;   // this includes ja
-   assign i0_pcall       = i0_dp.jal     &   i0_pcall_case;
-
-   assign i0_pja_raw     = i0_dp_raw.jal &   i0_pja_case;
-   assign i0_pja         = i0_dp.jal     &   i0_pja_case;
-
-
-   assign i0_br_offset[11:0] = (i0_pcall_raw | i0_pja_raw) ? i0_pcall_imm[12:1] : {i0[31],i0[7],i0[30:25],i0[11:8]};
-
-   assign i0_pret_case = (i0_dp_raw.jal & i0_dp_raw.imm12 & (i0r.rd[4:0] == 5'b0) & (i0r.rs1[4:0] == 5'd1 | i0r.rs1[4:0] == 5'd5));  // jalr with rd==0, rs1==1 or rs1==5 is a ret
-
-   assign i0_pret_raw = i0_dp_raw.jal &   i0_pret_case;
-   assign i0_pret     = i0_dp.jal     &   i0_pret_case;
-
-   assign i0_jal      = i0_dp.jal     &  ~i0_pcall_case & ~i0_pja_case & ~i0_pret_case;
-
-   // lsu stuff
-   // load/store mutually exclusive
-   assign dec_lsu_offset_d[11:0] = ({12{ ~dec_extint_stall & i0_dp.lsu & i0_dp.load}} &               i0[31:20]) |
-                                   ({12{ ~dec_extint_stall & i0_dp.lsu & i0_dp.store}} &             {i0[31:25],i0[11:7]});
-
-
-
-   assign div_p.valid    =  div_decode_d;
-
-   assign div_p.unsign   =  i0_dp.unsign;
-   assign div_p.rem      =  i0_dp.rem;
-
-
-   assign mul_p.valid    =  mul_decode_d;
-
-   assign mul_p.rs1_sign =  i0_dp.rs1_sign;
-   assign mul_p.rs2_sign =  i0_dp.rs2_sign;
-   assign mul_p.low      =  i0_dp.low;
-   assign mul_p.bext     =  i0_dp.bext;
-   assign mul_p.bdep     =  i0_dp.bdep;
-   assign mul_p.clmul    =  i0_dp.clmul;
-   assign mul_p.clmulh   =  i0_dp.clmulh;
-   assign mul_p.clmulr   =  i0_dp.clmulr;
-   assign mul_p.grev     =  i0_dp.grev;
-   assign mul_p.gorc     =  i0_dp.gorc;
-   assign mul_p.shfl     =  i0_dp.shfl;
-   assign mul_p.unshfl   =  i0_dp.unshfl;
-   assign mul_p.crc32_b  =  i0_dp.crc32_b;
-   assign mul_p.crc32_h  =  i0_dp.crc32_h;
-   assign mul_p.crc32_w  =  i0_dp.crc32_w;
-   assign mul_p.crc32c_b =  i0_dp.crc32c_b;
-   assign mul_p.crc32c_h =  i0_dp.crc32c_h;
-   assign mul_p.crc32c_w =  i0_dp.crc32c_w;
-   assign mul_p.bfp      =  i0_dp.bfp;
-
-   always_comb  begin
-      lsu_p = '0;
-
-      if (dec_extint_stall) begin
-         lsu_p.load = 1'b1;
-         lsu_p.word = 1'b1;
-         lsu_p.fast_int = 1'b1;
-         lsu_p.valid = 1'b1;
-      end
-      else begin
-         lsu_p.valid = lsu_decode_d;
-
-         lsu_p.load                         =  i0_dp.load ;
-         lsu_p.store                        =  i0_dp.store;
-         lsu_p.by                           =  i0_dp.by   ;
-         lsu_p.half                         =  i0_dp.half ;
-         lsu_p.word                         =  i0_dp.word ;
-         lsu_p.stack                        = (i0r.rs1[4:0]==5'd2);   // stack reference
-
-         lsu_p.load_ldst_bypass_d          =  load_ldst_bypass_d ;
-         lsu_p.store_data_bypass_d         =  store_data_bypass_d;
-         lsu_p.store_data_bypass_m         =  store_data_bypass_m;
-
-         lsu_p.unsign  =  i0_dp.unsign;
-      end
-   end
-
-
-   assign  dec_lsu_valid_raw_d    = (i0_valid_d & (i0_dp_raw.load | i0_dp_raw.store) & ~dma_dccm_stall_any & ~i0_block_raw_d) | dec_extint_stall;
-
-
-
-   assign i0r.rs1[4:0] = i0[19:15];
-   assign i0r.rs2[4:0] = i0[24:20];
-   assign i0r.rd[4:0]  = i0[11:7];
-
-
-   assign dec_i0_rs1_en_d   =  (i0_dp.rs1 & (i0r.rs1[4:0] != 5'd0));  // if rs1_en=0 then read will be all 0's
-   assign dec_i0_rs2_en_d   =  (i0_dp.rs2 & (i0r.rs2[4:0] != 5'd0));
-   assign i0_rd_en_d        =  (i0_dp.rd  & (i0r.rd[4:0]  != 5'd0));
-
-   assign dec_i0_rs1_d[4:0] =  i0r.rs1[4:0];
-   assign dec_i0_rs2_d[4:0] =  i0r.rs2[4:0];
-
-
-   assign i0_jalimm20       =  i0_dp.jal & i0_dp.imm20;   // jal
-   assign i0_uiimm20        = ~i0_dp.jal & i0_dp.imm20;
-
-
-   // csr logic
-
-   assign dec_csr_ren_d  = i0_dp.csr_read & i0_valid_d;
-   assign csr_ren_qual_d = i0_dp.csr_read & i0_legal_decode_d;
-
-   assign csr_clr_d =   i0_dp.csr_clr   & i0_legal_decode_d;
-   assign csr_set_d   = i0_dp.csr_set   & i0_legal_decode_d;
-   assign csr_write_d = i0_csr_write    & i0_legal_decode_d;
-
-   assign i0_csr_write_only_d = i0_csr_write & ~i0_dp.csr_read;
-
-   assign dec_csr_wen_unq_d = (i0_dp.csr_clr | i0_dp.csr_set | i0_csr_write) & i0_valid_d;   // for csr legal, can't write read-only csr
-
-   assign dec_csr_any_unq_d = any_csr_d & i0_valid_d;
-
-
-   assign dec_csr_rdaddr_d[11:0] =  {12{dec_csr_any_unq_d}} & i0[31:20];
-   assign dec_csr_wraddr_r[11:0] =  {12{r_d.csrwen & r_d.i0valid}} & r_d.csrwaddr[11:0];
-
-
-   // make sure csr doesn't write same cycle as dec_tlu_flush_lower_wb
-   // also use valid so it's flushable
-   assign dec_csr_wen_r = r_d.csrwen & r_d.i0valid & ~dec_tlu_i0_kill_writeb_r;
-
-   // If we are writing MIE or MSTATUS, hold off the external interrupt for a cycle on the write.
-   assign dec_csr_stall_int_ff = ((r_d.csrwaddr[11:0] == 12'h300) | (r_d.csrwaddr[11:0] == 12'h304)) & r_d.csrwen & r_d.i0valid & ~dec_tlu_i0_kill_writeb_wb;
-
-
-   rvdff #(5) csrmiscff (.*,
-                        .clk (active_clk),
-                        .din ({csr_ren_qual_d, csr_clr_d, csr_set_d, csr_write_d, i0_dp.csr_imm}),
-                        .dout({csr_read_x,     csr_clr_x, csr_set_x, csr_write_x, csr_imm_x})
-                       );
-
-
-
-
-   // perform the update operation if any
-
-   rvdffe #(37) csr_rddata_x_ff (.*, .en(i0_x_data_en & any_csr_d), .din( {i0[19:15],dec_csr_rddata_d[31:0]}), .dout({csrimm_x[4:0],csr_rddata_x[31:0]}));
-
-
-   assign csr_mask_x[31:0]       = ({32{ csr_imm_x}} & {27'b0,csrimm_x[4:0]}) |
-                                   ({32{~csr_imm_x}} &  exu_csr_rs1_x[31:0] );
-
-
-   assign write_csr_data_x[31:0] = ({32{csr_clr_x}}   & (csr_rddata_x[31:0] & ~csr_mask_x[31:0])) |
-                                   ({32{csr_set_x}}   & (csr_rddata_x[31:0] |  csr_mask_x[31:0])) |
-                                   ({32{csr_write_x}} & (                      csr_mask_x[31:0]));
-
-
-// pause instruction
-
-
-
-
-   assign clear_pause = (dec_tlu_flush_lower_r & ~dec_tlu_flush_pause_r) |
-                        (pause_state & (write_csr_data[31:1] == 31'b0));        // if 0 or 1 then exit pause state - 1 cycle pause
-
-   assign pause_state_in = (dec_tlu_wr_pause_r | pause_state) & ~clear_pause;
-
-
-
-   assign dec_pause_state = pause_state;
-
-
-
-      assign dec_pause_state_cg = pause_state & ~tlu_wr_pause_r1 & ~tlu_wr_pause_r2;
-
-// end pause
-
-
-   assign csr_data_wen = ((csr_clr_x | csr_set_x | csr_write_x) & csr_read_x) | dec_tlu_wr_pause_r | pause_state;
-
-   assign write_csr_data_in[31:0] = (pause_state)         ? (write_csr_data[31:0] - 32'b1) :
-                                    (dec_tlu_wr_pause_r) ? dec_csr_wrdata_r[31:0] : write_csr_data_x[31:0];
-
-   // will hold until write-back at which time the CSR will be updated while GPR is possibly written with prior CSR
-   rvdffe #(32) write_csr_ff (.*, .clk(free_l2clk), .en(csr_data_wen), .din(write_csr_data_in[31:0]), .dout(write_csr_data[31:0]));
-
-   assign pause_stall = pause_state;
-
-   // for csr write only data is produced by the alu
-   assign dec_csr_wrdata_r[31:0]  = (r_d.csrwonly & r_d.i0valid) ? i0_result_corr_r[31:0] : write_csr_data[31:0];
-
-
-
-   assign dec_i0_immed_d[31:0] =  i0_immed_d[31:0];
-
-   assign     i0_immed_d[31:0] = ({32{i0_dp.imm12}}                         & { {20{i0[31]}},i0[31:20] }) |  // jalr
-                                 ({32{i0_dp.shimm5}}                        & {  27'b0,      i0[24:20] }) |
-                                 ({32{i0_jalimm20}}                         & { {12{i0[31]}},i0[19:12],i0[20],i0[30:21],1'b0}) |
-                                 ({32{i0_uiimm20}}                          & { i0[31:12],12'b0 }) |
-                                 ({32{i0_csr_write_only_d & i0_dp.csr_imm}} & {  27'b0,      i0[19:15]});  // for csr's that only write csr, dont read csr
-
-
-   // all conditional branches are currently predict_nt
-   // change this to generate the sequential address for all other cases for NPC requirements at commit
-   assign dec_i0_br_immed_d[12:1] = (i0_ap.predict_nt & ~i0_dp.jal) ? i0_br_offset[11:0] : {10'b0,i0_ap_pc4,i0_ap_pc2};
-
-
-   assign last_br_immed_d[12:1] = ((i0_ap.predict_nt) ? {10'b0,i0_ap_pc4,i0_ap_pc2} : i0_br_offset[11:0] );
-
-   assign i0_valid_d = dec_ib0_valid_d;
-
-   // load_stall includes bus_barrier
-
-   assign i0_load_stall_d = (i0_dp.load ) & (lsu_load_stall_any | dma_dccm_stall_any);
-
-   assign i0_store_stall_d =  i0_dp.store & (lsu_store_stall_any | dma_dccm_stall_any);
-
-
-
-// some CSR reads need to be presync'd
-   assign i0_presync = i0_dp.presync | dec_tlu_presync_d | debug_fence_i | debug_fence_raw | dec_tlu_pipelining_disable;  // both fence's presync
-
-// some CSR writes need to be postsync'd
-   assign i0_postsync = i0_dp.postsync | dec_tlu_postsync_d | debug_fence_i | // only fence_i postsync
-                        (i0_csr_write_only_d & (i0[31:20] == 12'h7c2));   // wr_pause must postsync
-
-
-// debug fence csr
-   assign debug_fence_i     = dec_debug_fence_d & dbg_cmd_wrdata[0];
-   assign debug_fence_raw   = dec_debug_fence_d & dbg_cmd_wrdata[1];
-
-   assign debug_fence       = debug_fence_raw | debug_fence_i;    // fence_i causes a fence
-
-   assign i0_csr_write = i0_dp.csr_write & ~dec_debug_fence_d;
-// end debug
-
-
-   // lets make ebreak, ecall, mret postsync, so break sync into pre and post
-
-   assign presync_stall      = (i0_presync & prior_inflight_eff);
-
-   assign prior_inflight_eff = (i0_dp.div)  ?  prior_inflight_x  :  prior_inflight;
-
-   assign i0_div_prior_div_stall = i0_dp.div & div_active;
-
-   // Raw block has everything excepts the stalls coming from the lsu
-   assign i0_block_raw_d = (i0_dp.csr_read & prior_csr_write) |
-                            dec_extint_stall |
-                            pause_stall |
-                            leak1_i0_stall |
-                            dec_tlu_debug_stall |
-                            postsync_stall |
-                            presync_stall  |
-                            ((i0_dp.fence | debug_fence) & ~lsu_idle) |
-                            i0_nonblock_load_stall |
-                            i0_load_block_d |
-                            i0_nonblock_div_stall |
-                            i0_div_prior_div_stall;
-
-   assign i0_block_d    = i0_block_raw_d | i0_store_stall_d | i0_load_stall_d;
-   assign i0_exublock_d = i0_block_raw_d;
-
-
-   // block reads if there is a prior csr write in the pipeline
-   assign prior_csr_write = x_d.csrwonly |
-                            r_d.csrwonly |
-                            wbd.csrwonly;
-
-
-
-   if       (pt.BITMANIP_ZBB == 1)
-     assign bitmanip_zbb_legal      =  1'b1;
-   else
-     assign bitmanip_zbb_legal      = ~(i0_dp.zbb & ~i0_dp.zbp);
-
-   if       (pt.BITMANIP_ZBS == 1)
-     assign bitmanip_zbs_legal      =  1'b1;
-   else
-     assign bitmanip_zbs_legal      = ~i0_dp.zbs;
-
-   if       (pt.BITMANIP_ZBE == 1)
-     assign bitmanip_zbe_legal      =  1'b1;
-   else
-     assign bitmanip_zbe_legal      = ~i0_dp.zbe;
-
-   if       (pt.BITMANIP_ZBC == 1)
-     assign bitmanip_zbc_legal      =  1'b1;
-   else
-     assign bitmanip_zbc_legal      = ~i0_dp.zbc;
-
-   if       (pt.BITMANIP_ZBP == 1)
-     assign bitmanip_zbp_legal      =  1'b1;
-   else
-     assign bitmanip_zbp_legal      = ~(i0_dp.zbp & ~i0_dp.zbb);
-
-   if       (pt.BITMANIP_ZBR == 1)
-     assign bitmanip_zbr_legal      =  1'b1;
-   else
-     assign bitmanip_zbr_legal      = ~i0_dp.zbr;
-
-   if       (pt.BITMANIP_ZBF == 1)
-     assign bitmanip_zbf_legal      =  1'b1;
-   else
-     assign bitmanip_zbf_legal      = ~i0_dp.zbf;
-
-   if (pt.BITMANIP_ZBA == 1)
-     assign bitmanip_zba_legal      =  1'b1;
-   else
-     assign bitmanip_zba_legal      = ~i0_dp.zba;
-
-   if     ( (pt.BITMANIP_ZBB == 1) | (pt.BITMANIP_ZBP == 1) )
-     assign bitmanip_zbb_zbp_legal  =  1'b1;
-   else
-     assign bitmanip_zbb_zbp_legal  = ~(i0_dp.zbb & i0_dp.zbp);
-
-
-   assign any_csr_d      =  i0_dp.csr_read | i0_csr_write;
-   assign bitmanip_legal =  bitmanip_zbb_legal & bitmanip_zbs_legal & bitmanip_zbe_legal & bitmanip_zbc_legal & bitmanip_zbp_legal & bitmanip_zbr_legal & bitmanip_zbf_legal & bitmanip_zba_legal & bitmanip_zbb_zbp_legal;
-
-   assign i0_legal       =  (i0_dp.legal) & (~any_csr_d | dec_csr_legal_d) & bitmanip_legal;
-
-
-
-   // illegal inst handling
-
-
-   assign shift_illegal      = dec_i0_decode_d & ~i0_legal;
-
-   assign illegal_inst_en    = shift_illegal & ~illegal_lockout;
-
-   rvdffe #(32) illegal_any_ff (.*, .en(illegal_inst_en), .din(i0_inst_d[31:0]), .dout(dec_illegal_inst[31:0]));
-
-   assign illegal_lockout_in = (shift_illegal | illegal_lockout) & ~flush_final_r;
-
-
-
-   // allow illegals to flow down the pipe
-   assign dec_i0_decode_d = i0_valid_d & ~i0_block_d    & ~dec_tlu_flush_lower_r & ~flush_final_r;
-   assign i0_exudecode_d  = i0_valid_d & ~i0_exublock_d & ~dec_tlu_flush_lower_r & ~flush_final_r;
-
-   // define i0 legal decode
-   assign i0_legal_decode_d    = dec_i0_decode_d & i0_legal;
-   assign i0_exulegal_decode_d = i0_exudecode_d  & i0_legal;
-
-
-   // performance monitor signals
-   assign dec_pmu_instr_decoded = dec_i0_decode_d;
-
-   assign dec_pmu_decode_stall = i0_valid_d & ~dec_i0_decode_d;
-
-   assign dec_pmu_postsync_stall = postsync_stall & i0_valid_d;
-   assign dec_pmu_presync_stall  = presync_stall & i0_valid_d;
-
-
-
-   // illegals will postsync
-   assign ps_stall_in =  ( dec_i0_decode_d & (i0_postsync | ~i0_legal) ) |
-                         ( ps_stall & prior_inflight_x                 );
-
-
-
-   assign postsync_stall =  ps_stall;
-
-
-   assign prior_inflight_x    =  x_d.i0valid;
-   assign prior_inflight_wb   =  r_d.i0valid;
-
-   assign prior_inflight = prior_inflight_x | prior_inflight_wb;
-
-   assign dec_i0_alu_decode_d = i0_exulegal_decode_d & i0_dp.alu;
-   assign dec_i0_branch_d     = i0_dp.condbr | i0_dp.jal | i0_br_error_all;
-
-   assign lsu_decode_d = i0_legal_decode_d    & i0_dp.lsu;
-   assign mul_decode_d = i0_exulegal_decode_d & i0_dp.mul;
-   assign div_decode_d = i0_exulegal_decode_d & i0_dp.div;
-
-   assign dec_qual_lsu_d = i0_dp.lsu;
-
-
-
-
-
-// scheduling logic for alu
-
-   assign i0_rs1_depend_i0_x  = dec_i0_rs1_en_d & x_d.i0v & (x_d.i0rd[4:0] == i0r.rs1[4:0]);
-   assign i0_rs1_depend_i0_r  = dec_i0_rs1_en_d & r_d.i0v & (r_d.i0rd[4:0] == i0r.rs1[4:0]);
-
-   assign i0_rs2_depend_i0_x  = dec_i0_rs2_en_d & x_d.i0v & (x_d.i0rd[4:0] == i0r.rs2[4:0]);
-   assign i0_rs2_depend_i0_r  = dec_i0_rs2_en_d & r_d.i0v & (r_d.i0rd[4:0] == i0r.rs2[4:0]);
-
-
-// order the producers as follows:  , i0_x, i0_r, i0_wb
-
-   assign {i0_rs1_class_d, i0_rs1_depth_d[1:0]} = (i0_rs1_depend_i0_x ) ? { i0_x_c,  2'd1  } :
-                                                  (i0_rs1_depend_i0_r ) ? { i0_r_c,  2'd2  } : '0;
-
-   assign {i0_rs2_class_d, i0_rs2_depth_d[1:0]} = (i0_rs2_depend_i0_x ) ? { i0_x_c,  2'd1  } :
-                                                  (i0_rs2_depend_i0_r ) ? { i0_r_c,  2'd2  } : '0;
-
-
-// stores will bypass load data in the lsu pipe
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin : genblock
-      assign i0_load_block_d = (i0_rs1_class_d.load & i0_rs1_depth_d[0]) |
-                               (i0_rs2_class_d.load & i0_rs2_depth_d[0] & ~i0_dp.store);
-
-      assign load_ldst_bypass_d    =  (i0_dp.load | i0_dp.store) & i0_rs1_depth_d[1] & i0_rs1_class_d.load;
-
-      assign store_data_bypass_d =                  i0_dp.store  & i0_rs2_depth_d[1] & i0_rs2_class_d.load;
-
-      assign store_data_bypass_m =                  i0_dp.store  & i0_rs2_depth_d[0] & i0_rs2_class_d.load;
-   end
-   else begin : genblock
-
-      assign i0_load_block_d = 1'b0;
-
-      assign load_ldst_bypass_d    =  (i0_dp.load | i0_dp.store) & i0_rs1_depth_d[0] & i0_rs1_class_d.load;
-
-      assign store_data_bypass_d =                  i0_dp.store  & i0_rs2_depth_d[0] & i0_rs2_class_d.load;
-
-      assign store_data_bypass_m = 1'b0;
-   end
-
-
-
-
-
-
-   assign dec_tlu_i0_valid_r     =  r_d.i0valid & ~dec_tlu_flush_lower_wb;
-
-
-   assign d_t.legal              =  i0_legal_decode_d;
-   assign d_t.icaf               =  i0_icaf_d & i0_legal_decode_d;                // dbecc is icaf exception
-   assign d_t.icaf_second        =  dec_i0_icaf_second_d & i0_legal_decode_d;     // this includes icaf and dbecc
-   assign d_t.icaf_type[1:0]     =  dec_i0_icaf_type_d[1:0];
-
-   assign d_t.fence_i            = (i0_dp.fence_i | debug_fence_i) & i0_legal_decode_d;
-
-// put pmu info into the trap packet
-   assign d_t.pmu_i0_itype       =  i0_itype;
-   assign d_t.pmu_i0_br_unpred   =  i0_br_unpred;
-   assign d_t.pmu_divide         =  1'b0;
-   assign d_t.pmu_lsu_misaligned =  1'b0;
-
-   assign d_t.i0trigger[3:0]     =  dec_i0_trigger_match_d[3:0] & {4{dec_i0_decode_d}};
-
-
-
-   rvdfflie #( .WIDTH($bits(eb1_trap_pkt_t)),.LEFT(9) ) trap_xff (.*, .en(i0_x_ctl_en), .din(d_t),  .dout(x_t));
-
-   always_comb begin
-      x_t_in = x_t;
-      x_t_in.i0trigger[3:0] = x_t.i0trigger & ~{4{dec_tlu_flush_lower_wb}};
-   end
-
-
-   rvdfflie  #( .WIDTH($bits(eb1_trap_pkt_t)),.LEFT(9) ) trap_r_ff (.*, .en(i0_x_ctl_en), .din(x_t_in),  .dout(r_t));
-
-
-    always_comb begin
-
-      r_t_in                             =  r_t;
-
-      r_t_in.i0trigger[3:0]              = ({4{(r_d.i0load | r_d.i0store)}} & lsu_trigger_match_r[3:0]) | r_t.i0trigger[3:0];
-      r_t_in.pmu_lsu_misaligned          = lsu_pmu_misaligned_r;   // only valid if a load/store is valid in DC3 stage
-
-      if (dec_tlu_flush_lower_wb) r_t_in = '0 ;
-
-   end
-
-
-   always_comb begin
-
-      dec_tlu_packet_r                 =  r_t_in;
-      dec_tlu_packet_r.pmu_divide      =  r_d.i0div & r_d.i0valid;
-
-   end
-
-
-// end tlu stuff
-
-
-   assign i0_d_c.mul                =  i0_dp.mul  & i0_legal_decode_d;
-   assign i0_d_c.load               =  i0_dp.load & i0_legal_decode_d;
-   assign i0_d_c.alu                =  i0_dp.alu  & i0_legal_decode_d;
-
-   rvdffs #( $bits(eb1_class_pkt_t) ) i0_x_c_ff   (.*, .en(i0_x_ctl_en),  .clk(active_clk), .din(i0_d_c),  .dout(i0_x_c));
-   rvdffs #( $bits(eb1_class_pkt_t) ) i0_r_c_ff   (.*, .en(i0_r_ctl_en),  .clk(active_clk), .din(i0_x_c),  .dout(i0_r_c));
-
-
-   assign d_d.i0rd[4:0]             =  i0r.rd[4:0];
-   assign d_d.i0v                   =  i0_rd_en_d  & i0_legal_decode_d;
-   assign d_d.i0valid               =  dec_i0_decode_d;  // has flush_final_r
-
-   assign d_d.i0load                =  i0_dp.load  & i0_legal_decode_d;
-   assign d_d.i0store               =  i0_dp.store & i0_legal_decode_d;
-   assign d_d.i0div                 =  i0_dp.div   & i0_legal_decode_d;
-
-
-   assign d_d.csrwen                =  dec_csr_wen_unq_d   & i0_legal_decode_d;
-   assign d_d.csrwonly              =  i0_csr_write_only_d & dec_i0_decode_d;
-   assign d_d.csrwaddr[11:0]        =  (d_d.csrwen) ? i0[31:20] : '0;    // csr write address for rd==0 case
-
-
-   rvdff  #(3) i0cgff               (.*, .clk(active_clk),            .din(i0_pipe_en[3:1]), .dout(i0_pipe_en[2:0]));
-
-   assign i0_pipe_en[3]             =  dec_i0_decode_d;
-
-   assign i0_x_ctl_en               = (|i0_pipe_en[3:2] | clk_override);
-   assign i0_r_ctl_en               = (|i0_pipe_en[2:1] | clk_override);
-   assign i0_wb_ctl_en              = (|i0_pipe_en[1:0] | clk_override);
-   assign i0_x_data_en              = ( i0_pipe_en[3]   | clk_override);
-   assign i0_r_data_en              = ( i0_pipe_en[2]   | clk_override);
-   assign i0_wb_data_en             = ( i0_pipe_en[1]   | clk_override);
-
-   assign dec_data_en[1:0]          = {i0_x_data_en, i0_r_data_en};
-   assign dec_ctl_en[1:0]           = {i0_x_ctl_en,  i0_r_ctl_en};
-
-
-
-   rvdfflie #( .WIDTH($bits(eb1_dest_pkt_t)),.LEFT(15) ) e1ff (.*, .en(i0_x_ctl_en), .din(d_d),  .dout(x_d));
-
-   always_comb begin
-      x_d_in = x_d;
-
-      x_d_in.i0v         = x_d.i0v     & ~dec_tlu_flush_lower_wb & ~dec_tlu_flush_lower_r;
-      x_d_in.i0valid     = x_d.i0valid & ~dec_tlu_flush_lower_wb & ~dec_tlu_flush_lower_r;
-   end
-
-   rvdfflie #( .WIDTH($bits(eb1_dest_pkt_t)), .LEFT(15) ) r_d_ff (.*, .en(i0_r_ctl_en), .din(x_d_in), .dout(r_d));
-
-
-   always_comb begin
-
-        r_d_in = r_d;
-
-
-      // for the bench
-      r_d_in.i0rd[4:0]   =  r_d.i0rd[4:0];
-
-      r_d_in.i0v         = (r_d.i0v      & ~dec_tlu_flush_lower_wb);
-      r_d_in.i0valid     = (r_d.i0valid  & ~dec_tlu_flush_lower_wb);
-
-      r_d_in.i0load      =  r_d.i0load   & ~dec_tlu_flush_lower_wb;
-      r_d_in.i0store     =  r_d.i0store  & ~dec_tlu_flush_lower_wb;
-
-   end
-
-
-   rvdfflie #(.WIDTH($bits(eb1_dest_pkt_t)), .LEFT(15)) wbff (.*, .en(i0_wb_ctl_en), .din(r_d_in), .dout(wbd));
-
-   assign dec_i0_waddr_r[4:0]       =  r_d_in.i0rd[4:0];
-
-   assign     i0_wen_r              =  r_d_in.i0v & ~dec_tlu_i0_kill_writeb_r;
-   assign dec_i0_wen_r              =  i0_wen_r   & ~r_d_in.i0div & ~i0_load_kill_wen_r;  // don't write a nonblock load 1st time down the pipe
-   assign dec_i0_wdata_r[31:0]      =  i0_result_corr_r[31:0];
-
-
-   // divide stuff
-   assign div_e1_to_r         = (x_d.i0div & x_d.i0valid) |
-                                (r_d.i0div & r_d.i0valid);
-
-   assign div_active_in = i0_div_decode_d | (div_active & ~exu_div_wren & ~nonblock_div_cancel);
-
-
-   assign dec_div_active = div_active;
-
-   // nonblocking div scheme
-
-   assign i0_nonblock_div_stall  = (dec_i0_rs1_en_d & div_active & (div_waddr_wb[4:0] == i0r.rs1[4:0])) |
-                                   (dec_i0_rs2_en_d & div_active & (div_waddr_wb[4:0] == i0r.rs2[4:0]));
-
-
-   assign div_flush              = (x_d.i0div & x_d.i0valid & (x_d.i0rd[4:0]==5'b0)                           ) |
-                                   (x_d.i0div & x_d.i0valid & dec_tlu_flush_lower_r                           ) |
-                                   (r_d.i0div & r_d.i0valid & dec_tlu_flush_lower_r & dec_tlu_i0_kill_writeb_r);
-
-
-   // cancel if any younger inst committing this cycle to same dest as nonblock divide
-   assign nonblock_div_cancel    = (div_active &  div_flush) |
-                                   (div_active & ~div_e1_to_r & (r_d.i0rd[4:0] == div_waddr_wb[4:0]) & i0_wen_r);
-
-   assign dec_div_cancel         =  nonblock_div_cancel;
-
-
-
-   assign i0_div_decode_d            =  i0_legal_decode_d & i0_dp.div;
-
-// for load_to_use_plus1, the load result data is merged in R stage instead of D
-
-   if ( pt.LOAD_TO_USE_PLUS1 == 1 ) begin : genblock1
-      assign i0_result_x[31:0]          = exu_i0_result_x[31:0];
-      assign i0_result_r[31:0]          = (r_d.i0v & r_d.i0load) ? lsu_result_m[31:0] : i0_result_r_raw[31:0];
-   end
-   else begin : genblock1
-      assign i0_result_x[31:0]          = (x_d.i0v & x_d.i0load) ? lsu_result_m[31:0] : exu_i0_result_x[31:0];
-      assign i0_result_r[31:0]          = i0_result_r_raw[31:0];
-   end
-
-
-   rvdffe #(32) i0_result_r_ff       (.*, .en(i0_r_data_en & (x_d.i0v | x_d.csrwen | debug_valid_x)),  .din(i0_result_x[31:0]),       .dout(i0_result_r_raw[31:0]));
-
-   // correct lsu load data - don't use for bypass, do pass down the pipe
-   assign i0_result_corr_r[31:0]     = (r_d.i0v & r_d.i0load) ? lsu_result_corr_r[31:0] : i0_result_r_raw[31:0];
-
-
-   rvdffe #(12) e1brpcff             (.*, .en(i0_x_data_en), .din(last_br_immed_d[12:1] ), .dout(last_br_immed_x[12:1]));
-
-
-
-   assign i0_wb_en                   =  i0_wb_data_en;
-
-   assign i0_inst_wb_in[31:0]        =  i0_inst_r[31:0];
-   assign i0_inst_d[31:0]            = (dec_i0_pc4_d)    ?  i0[31:0]                                  :  {16'b0, ifu_i0_cinst[15:0]};
-
-
-   assign trace_enable = ~dec_tlu_trace_disable;
-
-
-   rvdffe #(.WIDTH(5),.OVERRIDE(1))  i0rdff  (.*, .en(i0_div_decode_d),        .din(i0r.rd[4:0]),             .dout(div_waddr_wb[4:0]));
-
-   rvdffe #(32) i0xinstff            (.*, .en(i0_x_data_en & trace_enable),    .din(i0_inst_d[31:0]),         .dout(i0_inst_x[31:0]));
-   rvdffe #(32) i0cinstff            (.*, .en(i0_r_data_en & trace_enable),    .din(i0_inst_x[31:0]),         .dout(i0_inst_r[31:0]));
-
-   rvdffe #(32) i0wbinstff           (.*, .en(i0_wb_en & trace_enable),        .din(i0_inst_wb_in[31:0]),     .dout(i0_inst_wb[31:0]));
-   rvdffe #(31) i0wbpcff             (.*, .en(i0_wb_en & trace_enable),        .din(dec_tlu_i0_pc_r[31:1]),   .dout(  i0_pc_wb[31:1]));
-
-   assign dec_i0_inst_wb[31:0] = i0_inst_wb[31:0];
-   assign dec_i0_pc_wb[31:1] = i0_pc_wb[31:1];
-
-
-
-   rvdffpcie #(31) i0_pc_r_ff           (.*, .en(i0_r_data_en), .din(exu_i0_pc_x[31:1]), .dout(dec_i0_pc_r[31:1]));
-
-   assign dec_tlu_i0_pc_r[31:1]      = dec_i0_pc_r[31:1];
-
-
-   rvbradder ibradder_correct (
-                     .pc(exu_i0_pc_x[31:1]),
-                     .offset(last_br_immed_x[12:1]),
-                     .dout(pred_correct_npc_x[31:1]));
-
-
-
-   // add nonblock load rs1/rs2 bypass cases
-
-   assign i0_rs1_nonblock_load_bypass_en_d  = dec_i0_rs1_en_d & dec_nonblock_load_wen & (dec_nonblock_load_waddr[4:0] == i0r.rs1[4:0]);
-
-   assign i0_rs2_nonblock_load_bypass_en_d  = dec_i0_rs2_en_d & dec_nonblock_load_wen & (dec_nonblock_load_waddr[4:0] == i0r.rs2[4:0]);
-
-
-
-   // bit 2 is priority match, bit 0 lowest priority, i0_x, i0_r
-
-   assign i0_rs1bypass[2]                =  i0_rs1_depth_d[0] & (i0_rs1_class_d.alu | i0_rs1_class_d.mul                      );
-   assign i0_rs1bypass[1]                =  i0_rs1_depth_d[0] & (                                          i0_rs1_class_d.load);
-   assign i0_rs1bypass[0]                =  i0_rs1_depth_d[1] & (i0_rs1_class_d.alu | i0_rs1_class_d.mul | i0_rs1_class_d.load);
-
-   assign i0_rs2bypass[2]                =  i0_rs2_depth_d[0] & (i0_rs2_class_d.alu | i0_rs2_class_d.mul                      );
-   assign i0_rs2bypass[1]                =  i0_rs2_depth_d[0] & (                                          i0_rs2_class_d.load);
-   assign i0_rs2bypass[0]                =  i0_rs2_depth_d[1] & (i0_rs2_class_d.alu | i0_rs2_class_d.mul | i0_rs2_class_d.load);
-
-
-   assign dec_i0_rs1_bypass_en_d[3]      =  i0_rs1_nonblock_load_bypass_en_d & ~i0_rs1bypass[0] & ~i0_rs1bypass[1] & ~i0_rs1bypass[2];
-   assign dec_i0_rs1_bypass_en_d[2]      =  i0_rs1bypass[2];
-   assign dec_i0_rs1_bypass_en_d[1]      =  i0_rs1bypass[1];
-   assign dec_i0_rs1_bypass_en_d[0]      =  i0_rs1bypass[0];
-
-   assign dec_i0_rs2_bypass_en_d[3]      =  i0_rs2_nonblock_load_bypass_en_d & ~i0_rs2bypass[0] & ~i0_rs2bypass[1] & ~i0_rs2bypass[2];
-   assign dec_i0_rs2_bypass_en_d[2]      =  i0_rs2bypass[2];
-   assign dec_i0_rs2_bypass_en_d[1]      =  i0_rs2bypass[1];
-   assign dec_i0_rs2_bypass_en_d[0]      =  i0_rs2bypass[0];
-
-
-   assign dec_i0_result_r[31:0]          =  i0_result_r[31:0];
-
-
-endmodule // eb1_dec_decode_ctl
-
-
-
-
-
-// file "decode" is human readable file that has all of the instruction decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "decode" except legal equation:
-
-// 1) coredecode -in decode > coredecode.e
-
-// 2) espresso -Dso -oeqntott coredecode.e | addassign -pre out.  > equations
-
-// to generate the legal (32b instruction is legal) equation below:
-
-// 1) coredecode -in decode -legal > legal.e
-
-// 2) espresso -Dso -oeqntott legal.e | addassign -pre out. > legal_equation
-
-module eb1_dec_dec_ctl
-import eb1_pkg::*;
-  (
-   input logic [31:0] inst,
-
-   output eb1_dec_pkt_t out
-   );
-
-   logic [31:0] i;
-
-
-   assign i[31:0] = inst[31:0];
-
-
-assign out.alu = (i[30]&i[24]&i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[5]&i[4]) | (i[29]
-    &!i[27]&!i[24]&i[4]) | (!i[25]&!i[13]&!i[12]&i[4]) | (!i[30]&!i[25]
-    &i[13]&i[12]) | (i[27]&i[25]&i[14]&i[4]) | (i[29]&i[27]&!i[14]&i[4]) | (
-    i[29]&!i[14]&i[5]&i[4]) | (!i[27]&!i[25]&i[14]&i[4]) | (i[30]&!i[29]
-    &!i[13]&i[4]) | (!i[30]&!i[27]&!i[25]&i[4]) | (i[13]&!i[5]&i[4]) | (
-    !i[12]&!i[5]&i[4]) | (i[2]) | (i[6]) | (i[30]&i[24]&i[23]&i[22]&i[21]
-    &i[20]&!i[5]&i[4]) | (!i[30]&i[29]&!i[24]&!i[23]&i[22]&i[21]&i[20]
-    &!i[5]&i[4]) | (!i[30]&i[24]&!i[23]&!i[22]&!i[21]&!i[20]&!i[5]&i[4]);
-
-assign out.rs1 = (!i[14]&!i[13]&!i[2]) | (!i[13]&i[11]&!i[2]) | (i[19]&i[13]&!i[2]) | (
-    !i[13]&i[10]&!i[2]) | (i[18]&i[13]&!i[2]) | (!i[13]&i[9]&!i[2]) | (
-    i[17]&i[13]&!i[2]) | (!i[13]&i[8]&!i[2]) | (i[16]&i[13]&!i[2]) | (
-    !i[13]&i[7]&!i[2]) | (i[15]&i[13]&!i[2]) | (!i[4]&!i[3]) | (!i[6]
-    &!i[2]);
-
-assign out.rs2 = (i[5]&!i[4]&!i[2]) | (!i[6]&i[5]&!i[2]);
-
-assign out.imm12 = (!i[4]&!i[3]&i[2]) | (i[13]&!i[5]&i[4]&!i[2]) | (!i[13]&!i[12]
-    &i[6]&i[4]) | (!i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.rd = (!i[5]&!i[2]) | (i[5]&i[2]) | (i[4]);
-
-assign out.shimm5 = (i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]) | (i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.imm20 = (i[5]&i[3]) | (i[4]&i[2]);
-
-assign out.pc = (!i[5]&!i[3]&i[2]) | (i[5]&i[3]);
-
-assign out.load = (!i[5]&!i[4]&!i[2]);
-
-assign out.store = (!i[6]&i[5]&!i[4]);
-
-assign out.lsu = (!i[6]&!i[4]&!i[2]);
-
-assign out.add = (!i[14]&!i[13]&!i[12]&!i[5]&i[4]) | (!i[5]&!i[3]&i[2]) | (!i[30]
-    &!i[25]&!i[14]&!i[13]&!i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sub = (i[30]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (!i[29]&!i[25]&!i[14]
-    &i[13]&!i[6]&i[4]&!i[2]) | (i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]) | (
-    !i[14]&i[13]&!i[5]&i[4]&!i[2]) | (i[6]&!i[4]&!i[2]);
-
-assign out.land = (!i[27]&!i[25]&i[14]&i[13]&i[12]&!i[6]&!i[2]) | (i[14]&i[13]&i[12]
-    &!i[5]&!i[2]);
-
-assign out.lor = (!i[6]&i[3]) | (!i[29]&!i[27]&!i[25]&i[14]&i[13]&!i[12]&!i[6]&!i[2]) | (
-    i[5]&i[4]&i[2]) | (!i[13]&!i[12]&i[6]&i[4]) | (i[14]&i[13]&!i[12]
-    &!i[5]&!i[2]);
-
-assign out.lxor = (!i[29]&!i[27]&!i[25]&i[14]&!i[13]&!i[12]&i[4]&!i[2]) | (i[14]
-    &!i[13]&!i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sll = (!i[29]&!i[27]&!i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sra = (i[30]&!i[29]&!i[27]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.srl = (!i[30]&!i[29]&!i[27]&!i[25]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.slt = (!i[29]&!i[25]&!i[14]&i[13]&!i[6]&i[4]&!i[2]) | (!i[14]&i[13]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.unsign = (!i[27]&i[25]&i[14]&i[12]&!i[6]&i[5]&!i[2]) | (!i[14]&i[13]
-    &i[12]&!i[5]&!i[2]) | (i[13]&i[6]&!i[4]&!i[2]) | (i[14]&!i[5]&!i[4]) | (
-    !i[25]&!i[14]&i[13]&i[12]&!i[6]&!i[2]) | (i[27]&i[25]&i[14]&i[13]
-    &!i[6]&i[5]&!i[2]);
-
-assign out.condbr = (i[6]&!i[4]&!i[2]);
-
-assign out.beq = (!i[14]&!i[12]&i[6]&!i[4]&!i[2]);
-
-assign out.bne = (!i[14]&i[12]&i[6]&!i[4]&!i[2]);
-
-assign out.bge = (i[14]&i[12]&i[5]&!i[4]&!i[2]);
-
-assign out.blt = (i[14]&!i[12]&i[5]&!i[4]&!i[2]);
-
-assign out.jal = (i[6]&i[2]);
-
-assign out.by = (!i[13]&!i[12]&!i[6]&!i[4]&!i[2]);
-
-assign out.half = (i[12]&!i[6]&!i[4]&!i[2]);
-
-assign out.word = (i[13]&!i[6]&!i[4]);
-
-assign out.csr_read = (i[13]&i[6]&i[4]) | (i[7]&i[6]&i[4]) | (i[8]&i[6]&i[4]) | (
-    i[9]&i[6]&i[4]) | (i[10]&i[6]&i[4]) | (i[11]&i[6]&i[4]);
-
-assign out.csr_clr = (i[15]&i[13]&i[12]&i[6]&i[4]) | (i[16]&i[13]&i[12]&i[6]&i[4]) | (
-    i[17]&i[13]&i[12]&i[6]&i[4]) | (i[18]&i[13]&i[12]&i[6]&i[4]) | (
-    i[19]&i[13]&i[12]&i[6]&i[4]);
-
-assign out.csr_set = (i[15]&!i[12]&i[6]&i[4]) | (i[16]&!i[12]&i[6]&i[4]) | (i[17]
-    &!i[12]&i[6]&i[4]) | (i[18]&!i[12]&i[6]&i[4]) | (i[19]&!i[12]&i[6]
-    &i[4]);
-
-assign out.csr_write = (!i[13]&i[12]&i[6]&i[4]);
-
-assign out.csr_imm = (i[14]&!i[13]&i[6]&i[4]) | (i[15]&i[14]&i[6]&i[4]) | (i[16]
-    &i[14]&i[6]&i[4]) | (i[17]&i[14]&i[6]&i[4]) | (i[18]&i[14]&i[6]&i[4]) | (
-    i[19]&i[14]&i[6]&i[4]);
-
-assign out.presync = (!i[5]&i[3]) | (!i[13]&i[7]&i[6]&i[4]) | (!i[13]&i[8]&i[6]&i[4]) | (
-    !i[13]&i[9]&i[6]&i[4]) | (!i[13]&i[10]&i[6]&i[4]) | (!i[13]&i[11]
-    &i[6]&i[4]) | (i[15]&i[13]&i[6]&i[4]) | (i[16]&i[13]&i[6]&i[4]) | (
-    i[17]&i[13]&i[6]&i[4]) | (i[18]&i[13]&i[6]&i[4]) | (i[19]&i[13]&i[6]
-    &i[4]);
-
-assign out.postsync = (i[12]&!i[5]&i[3]) | (!i[22]&!i[13]&!i[12]&i[6]&i[4]) | (
-    !i[13]&i[7]&i[6]&i[4]) | (!i[13]&i[8]&i[6]&i[4]) | (!i[13]&i[9]&i[6]
-    &i[4]) | (!i[13]&i[10]&i[6]&i[4]) | (!i[13]&i[11]&i[6]&i[4]) | (
-    i[15]&i[13]&i[6]&i[4]) | (i[16]&i[13]&i[6]&i[4]) | (i[17]&i[13]&i[6]
-    &i[4]) | (i[18]&i[13]&i[6]&i[4]) | (i[19]&i[13]&i[6]&i[4]);
-
-assign out.ebreak = (!i[22]&i[20]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.ecall = (!i[21]&!i[20]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.mret = (i[29]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.mul = (!i[30]&i[27]&i[24]&i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[29]&i[27]&!i[24]&i[23]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[29]&i[27]&!i[24]&!i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&i[27]&i[13]
-    &!i[6]&i[5]&i[4]&!i[2]) | (i[29]&i[27]&i[22]&!i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&!i[21]&i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&!i[22]&i[21]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[30]&i[29]&i[27]&!i[23]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[27]&i[23]&i[14]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]) | (!i[30]&!i[29]&i[27]&!i[25]&!i[13]&i[12]&!i[6]
-    &i[4]&!i[2]) | (i[25]&!i[14]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&!i[27]
-    &i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&i[14]
-    &!i[6]&i[5]&!i[2]);
-
-assign out.rs1_sign = (!i[27]&i[25]&!i[14]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (
-    !i[27]&i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.rs2_sign = (!i[27]&i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.low = (i[25]&!i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.div = (!i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]);
-
-assign out.rem = (!i[27]&i[25]&i[14]&i[13]&!i[6]&i[5]&!i[2]);
-
-assign out.fence = (!i[5]&i[3]);
-
-assign out.fence_i = (i[12]&!i[5]&i[3]);
-
-assign out.clz = (i[30]&!i[27]&!i[24]&!i[22]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.ctz = (i[30]&!i[27]&!i[24]&!i[22]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.pcnt = (i[30]&!i[27]&!i[24]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sext_b = (i[30]&!i[27]&i[22]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sext_h = (i[30]&!i[27]&i[22]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.slo = (!i[30]&i[29]&!i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sro = (!i[30]&i[29]&!i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.min = (i[27]&i[25]&i[14]&!i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.max = (i[27]&i[25]&i[14]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.pack = (!i[30]&i[27]&!i[25]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.packu = (i[30]&i[27]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.packh = (!i[30]&i[27]&!i[25]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.rol = (i[30]&!i[27]&!i[14]&i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.ror = (i[30]&i[29]&!i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbb = (i[30]&!i[27]&!i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    !i[30]&i[27]&i[14]&i[13]&i[12]&!i[6]&i[5]&!i[2]) | (i[30]&i[29]&!i[27]
-    &i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[27]&!i[13]&!i[12]&i[5]
-    &i[4]&!i[2]) | (i[30]&i[14]&!i[13]&!i[12]&!i[6]&i[5]&!i[2]) | (i[30]
-    &!i[27]&i[13]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&i[29]&!i[27]&!i[6]&i[5]
-    &i[4]&!i[2]) | (i[30]&i[29]&i[24]&i[23]&i[22]&i[21]&i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[29]&i[27]&!i[24]&!i[23]&i[22]
-    &i[21]&i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[27]
-    &i[24]&!i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[30]&i[29]&i[24]&i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]) | (i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]);
-
-assign out.sbset = (!i[30]&i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbclr = (i[30]&!i[29]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbinv = (i[30]&i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbext = (i[30]&!i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbs = (i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]) | (i[30]&!i[29]
-    &i[27]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.bext = (!i[30]&i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.bdep = (i[30]&i[27]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.zbe = (i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.clmul = (i[27]&i[25]&!i[14]&!i[13]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.clmulh = (i[27]&!i[14]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.clmulr = (i[27]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.zbc = (i[27]&i[25]&!i[14]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.grev = (i[30]&i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.gorc = (!i[30]&i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.shfl = (!i[30]&!i[29]&i[27]&!i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.unshfl = (!i[30]&!i[29]&i[27]&!i[25]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbp = (!i[30]&i[29]&!i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&!i[29]
-    &i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[30]&!i[27]&i[13]&!i[6]
-    &i[5]&i[4]&!i[2]) | (i[27]&!i[25]&!i[13]&!i[12]&i[5]&i[4]&!i[2]) | (
-    i[30]&i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]) | (i[29]&!i[27]&i[12]&!i[6]
-    &i[5]&i[4]&!i[2]) | (!i[30]&!i[29]&i[27]&!i[25]&i[12]&!i[6]&i[5]&i[4]
-    &!i[2]) | (i[29]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.crc32_b = (i[30]&!i[27]&i[24]&!i[23]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]);
-
-assign out.crc32_h = (i[30]&!i[27]&i[24]&!i[23]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.crc32_w = (i[30]&!i[27]&i[24]&!i[23]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.crc32c_b = (i[30]&!i[27]&i[23]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.crc32c_h = (i[30]&!i[27]&i[23]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.crc32c_w = (i[30]&!i[27]&i[23]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.zbr = (i[30]&!i[27]&i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.bfp = (i[30]&i[27]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.zbf = (i[30]&i[27]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.sh1add = (i[29]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.sh2add = (i[29]&i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.sh3add = (i[29]&i[14]&i[13]&!i[6]&i[5]&!i[2]);
-
-assign out.zba = (i[29]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.pm_alu = (i[28]&i[22]&!i[13]&!i[12]&i[4]) | (!i[30]&!i[29]&!i[27]&!i[25]
-    &!i[6]&i[4]) | (!i[29]&!i[27]&!i[25]&!i[13]&i[12]&!i[6]&i[4]) | (
-    !i[29]&!i[27]&!i[25]&!i[14]&!i[6]&i[4]) | (i[13]&!i[5]&i[4]) | (i[4]
-    &i[2]) | (!i[12]&!i[5]&i[4]);
-
-
-assign out.legal = (!i[31]&!i[30]&!i[29]&i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]
-    &i[22]&!i[21]&i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]
-    &!i[10]&!i[9]&!i[8]&!i[7]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&i[29]&i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]
-    &i[21]&!i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]&!i[10]
-    &!i[9]&!i[8]&!i[7]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[31]
-    &!i[30]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]&!i[21]
-    &!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]&!i[10]&!i[9]&!i[8]
-    &!i[7]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&!i[26]
-    &!i[25]&i[24]&!i[22]&!i[20]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[31]&i[29]&!i[28]&!i[26]&!i[25]&i[24]&!i[22]&!i[21]&!i[6]&!i[5]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&!i[26]&!i[25]&!i[23]
-    &!i[22]&!i[20]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]
-    &!i[28]&!i[26]&!i[25]&!i[24]&!i[23]&!i[21]&!i[6]&!i[5]&i[4]&!i[3]
-    &i[1]&i[0]) | (!i[31]&!i[30]&!i[29]&!i[28]&!i[26]&i[25]&i[13]&!i[6]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[26]&!i[25]&!i[24]
-    &!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[27]
-    &!i[26]&!i[25]&i[14]&!i[12]&!i[6]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]
-    &!i[30]&!i[28]&!i[27]&!i[26]&!i[25]&i[13]&!i[12]&!i[6]&i[4]&!i[3]
-    &i[1]&i[0]) | (!i[31]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[13]&!i[12]
-    &!i[6]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[28]&!i[27]&!i[26]&!i[25]
-    &i[14]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[29]
-    &!i[28]&!i[26]&!i[13]&i[12]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[26]&i[14]&!i[6]&i[5]&i[4]&!i[3]&i[1]
-    &i[0]) | (!i[31]&i[30]&!i[28]&i[27]&!i[26]&!i[25]&!i[13]&i[12]&!i[6]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&i[27]&!i[26]&!i[25]
-    &!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[27]
-    &!i[26]&!i[25]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]
-    &!i[29]&!i[28]&!i[27]&!i[26]&!i[6]&i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[14]&!i[13]&!i[12]&i[6]&i[5]&!i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[29]
-    &!i[28]&!i[26]&!i[25]&i[14]&!i[6]&i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[31]&i[29]&!i[28]&!i[26]&!i[25]&!i[13]&i[12]&i[5]&i[4]&!i[3]&!i[2]
-    &i[1]&i[0]) | (i[14]&i[6]&i[5]&!i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[14]
-    &!i[13]&i[5]&!i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[12]&!i[6]&!i[5]&i[4]
-    &!i[3]&i[1]&i[0]) | (!i[13]&i[12]&i[6]&i[5]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]
-    &!i[21]&!i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[13]&!i[11]
-    &!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]&i[3]&i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]
-    &!i[13]&!i[12]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]&i[3]
-    &i[2]&i[1]&i[0]) | (i[13]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    i[6]&i[5]&!i[4]&i[3]&i[2]&i[1]&i[0]) | (!i[14]&!i[12]&!i[6]&!i[4]
-    &!i[3]&!i[2]&i[1]&i[0]) | (!i[13]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]
-    &i[0]) | (i[13]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[6]&i[4]&!i[3]
-    &i[2]&i[1]&i[0]);
-
-
-endmodule // eb1_dec_dec_ctl
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_dec_gpr_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_dec_gpr_ctl.sv
deleted file mode 100644
index 62ddf2e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_dec_gpr_ctl.sv
+++ /dev/null
@@ -1,95 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-module eb1_dec_gpr_ctl
-import eb1_pkg::*;
-#(
-   `include "eb1_param.vh"
- )  (
-    input logic [4:0]  raddr0,       // logical read addresses
-    input logic [4:0]  raddr1,
-
-    input logic        wen0,         // write enable
-    input logic [4:0]  waddr0,       // write address
-    input logic [31:0] wd0,          // write data
-
-    input logic        wen1,         // write enable
-    input logic [4:0]  waddr1,       // write address
-    input logic [31:0] wd1,          // write data
-
-    input logic        wen2,         // write enable
-    input logic [4:0]  waddr2,       // write address
-    input logic [31:0] wd2,          // write data
-
-    input logic        clk,
-    input logic        rst_l,
-
-    output logic [31:0] rd0,         // read data
-    output logic [31:0] rd1,
-
-    input  logic        scan_mode
-);
-
-   logic [31:1] [31:0] gpr_out;      // 31 x 32 bit GPRs
-   logic [31:1] [31:0] gpr_in;
-   logic [31:1] w0v,w1v,w2v;
-   logic [31:1] gpr_wr_en;
-
-   // GPR Write Enables
-   assign gpr_wr_en[31:1] = (w0v[31:1] | w1v[31:1] | w2v[31:1]);
-   for ( genvar j=1; j<32; j++ )  begin : gpr
-      rvdffe #(32) gprff (.*, .en(gpr_wr_en[j]), .din(gpr_in[j][31:0]), .dout(gpr_out[j][31:0]));
-   end : gpr
-
-   // the read out
-   always_comb begin
-      rd0[31:0] = 32'b0;
-      rd1[31:0] = 32'b0;
-      w0v[31:1] = 31'b0;
-      w1v[31:1] = 31'b0;
-      w2v[31:1] = 31'b0;
-      gpr_in[31:1] = '0;
-
-      // GPR Read logic
-      for (int j=1; j<32; j++ )  begin
-         rd0[31:0] |= ({32{(raddr0[4:0]== 5'(j))}} & gpr_out[j][31:0]);
-         rd1[31:0] |= ({32{(raddr1[4:0]== 5'(j))}} & gpr_out[j][31:0]);
-      end
-
-     // GPR Write logic
-     for (int j=1; j<32; j++ )  begin
-         w0v[j]     = wen0  & (waddr0[4:0]== 5'(j) );
-         w1v[j]     = wen1  & (waddr1[4:0]== 5'(j) );
-         w2v[j]     = wen2  & (waddr2[4:0]== 5'(j) );
-         gpr_in[j]  =    ({32{w0v[j]}} & wd0[31:0]) |
-                         ({32{w1v[j]}} & wd1[31:0]) |
-                         ({32{w2v[j]}} & wd2[31:0]);
-     end
-   end // always_comb begin
-
-`ifdef RV_ASSERT_ON
-
-   logic  write_collision_unused;
-   assign write_collision_unused = ( (w0v[31:1] == w1v[31:1]) & wen0 & wen1 ) |
-                                   ( (w0v[31:1] == w2v[31:1]) & wen0 & wen2 ) |
-                                   ( (w1v[31:1] == w2v[31:1]) & wen1 & wen2 );
-
-
-   // asserting that no 2 ports will write to the same gpr simultaneously
-   assert_multiple_wen_to_same_gpr: assert #0 (~( write_collision_unused ) );
-
-`endif
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_dec_ib_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_dec_ib_ctl.sv
deleted file mode 100644
index 0eb95df..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_dec_ib_ctl.sv
+++ /dev/null
@@ -1,164 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-module eb1_dec_ib_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic                 dbg_cmd_valid,                      // valid dbg cmd
-
-   input logic                 dbg_cmd_write,                      // dbg cmd is write
-   input logic [1:0]           dbg_cmd_type,                       // dbg type
-   input logic [31:0]          dbg_cmd_addr,                       // expand to 31:0
-
-   input eb1_br_pkt_t i0_brp,                                     // i0 branch packet from aligner
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index,    // BP index
-   input logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr,               // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag,              // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index,          // Fully associt btb index
-
-   input logic       ifu_i0_pc4,                                   // i0 is 4B inst else 2B
-   input logic       ifu_i0_valid,                                 // i0 valid from ifu
-   input logic       ifu_i0_icaf,                                  // i0 instruction access fault
-   input logic [1:0] ifu_i0_icaf_type,                             // i0 instruction access fault type
-
-   input logic   ifu_i0_icaf_second,                               // i0 has access fault on second 2B of 4B inst
-   input logic   ifu_i0_dbecc,                                     // i0 double-bit error
-   input logic [31:0]  ifu_i0_instr,                               // i0 instruction from the aligner
-   input logic [31:1]  ifu_i0_pc,                                  // i0 pc from the aligner
-
-
-   output logic dec_ib0_valid_d,                                   // ib0 valid
-   output logic dec_debug_valid_d,                                 // Debug read or write at D-stage
-
-
-   output logic [31:0] dec_i0_instr_d,                             // i0 inst at decode
-
-   output logic [31:1] dec_i0_pc_d,                                // i0 pc at decode
-
-   output logic dec_i0_pc4_d,                                      // i0 is 4B inst else 2B
-
-   output eb1_br_pkt_t dec_i0_brp,                                // i0 branch packet at decode
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index,   // i0 branch index
-   output logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr,              // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag,             // BP tag
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index,          // Fully associt btb index
-
-   output logic dec_i0_icaf_d,                                     // i0 instruction access fault at decode
-   output logic dec_i0_icaf_second_d,                              // i0 instruction access fault on second 2B of 4B inst
-   output logic [1:0] dec_i0_icaf_type_d,                          // i0 instruction access fault type
-   output logic dec_i0_dbecc_d,                                    // i0 double-bit error at decode
-   output logic dec_debug_wdata_rs1_d,                             // put debug write data onto rs1 source: machine is halted
-
-   output logic dec_debug_fence_d                                  // debug fence inst
-
-   );
-
-
-   logic         debug_valid;
-   logic [4:0]   dreg;
-   logic [11:0]  dcsr;
-   logic [31:0]  ib0, ib0_debug_in;
-
-   logic         debug_read;
-   logic         debug_write;
-   logic         debug_read_gpr;
-   logic         debug_write_gpr;
-   logic         debug_read_csr;
-   logic         debug_write_csr;
-
-   logic [34:0]  ifu_i0_pcdata, pc0;
-
-   assign ifu_i0_pcdata[34:0] = { ifu_i0_icaf_second, ifu_i0_dbecc, ifu_i0_icaf,
-                                  ifu_i0_pc[31:1], ifu_i0_pc4 };
-
-   assign pc0[34:0] = ifu_i0_pcdata[34:0];
-
-   assign dec_i0_icaf_second_d = pc0[34];   // icaf's can only decode as i0
-
-   assign dec_i0_dbecc_d = pc0[33];
-
-   assign dec_i0_icaf_d = pc0[32];
-   assign dec_i0_pc_d[31:1] = pc0[31:1];
-   assign dec_i0_pc4_d = pc0[0];
-
-   assign dec_i0_icaf_type_d[1:0] = ifu_i0_icaf_type[1:0];
-
-// GPR accesses
-
-// put reg to read on rs1
-// read ->   or %x0,  %reg,%x0      {000000000000,reg[4:0],110000000110011}
-
-// put write date on rs1
-// write ->  or %reg, %x0, %x0      {00000000000000000110,reg[4:0],0110011}
-
-
-// CSR accesses
-// csr is of form rd, csr, rs1
-
-// read  -> csrrs %x0, %csr, %x0     {csr[11:0],00000010000001110011}
-
-// put write data on rs1
-// write -> csrrw %x0, %csr, %x0     {csr[11:0],00000001000001110011}
-
-// abstract memory command not done here
-   assign debug_valid = dbg_cmd_valid & (dbg_cmd_type[1:0] != 2'h2);
-
-
-   assign debug_read  = debug_valid & ~dbg_cmd_write;
-   assign debug_write = debug_valid &  dbg_cmd_write;
-
-   assign debug_read_gpr  = debug_read  & (dbg_cmd_type[1:0]==2'h0);
-   assign debug_write_gpr = debug_write & (dbg_cmd_type[1:0]==2'h0);
-   assign debug_read_csr  = debug_read  & (dbg_cmd_type[1:0]==2'h1);
-   assign debug_write_csr = debug_write & (dbg_cmd_type[1:0]==2'h1);
-
-   assign dreg[4:0]  = dbg_cmd_addr[4:0];
-   assign dcsr[11:0] = dbg_cmd_addr[11:0];
-
-
-   assign ib0_debug_in[31:0] = ({32{debug_read_gpr}}  & {12'b000000000000,dreg[4:0],15'b110000000110011}) |
-                               ({32{debug_write_gpr}} & {20'b00000000000000000110,dreg[4:0],7'b0110011}) |
-                               ({32{debug_read_csr}}  & {dcsr[11:0],20'b00000010000001110011}) |
-                               ({32{debug_write_csr}} & {dcsr[11:0],20'b00000001000001110011});
-
-
-
-   // machine is in halted state, pipe empty, write will always happen next cycle
-
-   assign dec_debug_wdata_rs1_d = debug_write_gpr | debug_write_csr;
-
-
-   // special fence csr for use only in debug mode
-
-   assign dec_debug_fence_d = debug_write_csr & (dcsr[11:0] == 12'h7c4);
-
-   assign ib0[31:0] = (debug_valid) ? ib0_debug_in[31:0] : ifu_i0_instr[31:0];
-
-   assign dec_ib0_valid_d = ifu_i0_valid | debug_valid;
-
-   assign dec_debug_valid_d = debug_valid;
-
-   assign dec_i0_instr_d[31:0] = ib0[31:0];
-
-   assign dec_i0_brp = i0_brp;
-   assign dec_i0_bp_index = ifu_i0_bp_index;
-   assign dec_i0_bp_fghr = ifu_i0_bp_fghr;
-   assign dec_i0_bp_btag = ifu_i0_bp_btag;
-   assign dec_i0_bp_fa_index = ifu_i0_fa_index;
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_dec_tlu_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_dec_tlu_ctl.sv
deleted file mode 100644
index 83f0a9d..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_dec_tlu_ctl.sv
+++ /dev/null
@@ -1,2947 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or it's affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-//********************************************************************************
-// eb1_dec_tlu_ctl.sv
-//
-//
-// Function: CSRs, Commit/WB, flushing, exceptions, interrupts
-// Comments:
-//
-//********************************************************************************
-
-module eb1_dec_tlu_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic clk,
-   input logic free_clk,
-   input logic free_l2clk,
-   input logic rst_l,
-   input logic scan_mode,
-
-   input logic [31:1] rst_vec, // reset vector, from core pins
-   input logic        nmi_int, // nmi pin
-   input logic [31:1] nmi_vec, // nmi vector
-   input logic  i_cpu_halt_req,    // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,     // Asynchronous Restart request to CPU
-
-   input logic lsu_fastint_stall_any,   // needed by lsu for 2nd pass of dma with ecc correction, stall next cycle
-
-
-   // perf counter inputs
-   input logic       ifu_pmu_instr_aligned,   // aligned instructions
-   input logic       ifu_pmu_fetch_stall, // fetch unit stalled
-   input logic       ifu_pmu_ic_miss, // icache miss
-   input logic       ifu_pmu_ic_hit, // icache hit
-   input logic       ifu_pmu_bus_error, // Instruction side bus error
-   input logic       ifu_pmu_bus_busy, // Instruction side bus busy
-   input logic       ifu_pmu_bus_trxn, // Instruction side bus transaction
-   input logic       dec_pmu_instr_decoded, // decoded instructions
-   input logic       dec_pmu_decode_stall, // decode stall
-   input logic       dec_pmu_presync_stall, // decode stall due to presync'd inst
-   input logic       dec_pmu_postsync_stall,// decode stall due to postsync'd inst
-   input logic       lsu_store_stall_any,    // SB or WB is full, stall decode
-   input logic       dma_dccm_stall_any,     // DMA stall of lsu
-   input logic       dma_iccm_stall_any,     // DMA stall of ifu
-   input logic       exu_pmu_i0_br_misp,     // pipe 0 branch misp
-   input logic       exu_pmu_i0_br_ataken,   // pipe 0 branch actual taken
-   input logic       exu_pmu_i0_pc4,         // pipe 0 4 byte branch
-   input logic       lsu_pmu_bus_trxn,       // D side bus transaction
-   input logic       lsu_pmu_bus_misaligned, // D side bus misaligned
-   input logic       lsu_pmu_bus_error,      // D side bus error
-   input logic       lsu_pmu_bus_busy,       // D side bus busy
-   input logic       lsu_pmu_load_external_m, // D side bus load
-   input logic       lsu_pmu_store_external_m, // D side bus store
-   input logic       dma_pmu_dccm_read,          // DMA DCCM read
-   input logic       dma_pmu_dccm_write,         // DMA DCCM write
-   input logic       dma_pmu_any_read,           // DMA read
-   input logic       dma_pmu_any_write,          // DMA write
-
-   input logic [31:1] lsu_fir_addr, // Fast int address
-   input logic [1:0] lsu_fir_error, // Fast int lookup error
-
-   input logic       iccm_dma_sb_error,      // I side dma single bit error
-
-   input    eb1_lsu_error_pkt_t lsu_error_pkt_r, // lsu precise exception/error packet
-   input logic         lsu_single_ecc_error_incr, // LSU inc SB error counter
-
-   input logic dec_pause_state, // Pause counter not zero
-   input logic         lsu_imprecise_error_store_any,      // store bus error
-   input logic         lsu_imprecise_error_load_any,      // store bus error
-   input logic [31:0]  lsu_imprecise_error_addr_any, // store bus error address
-
-   input logic        dec_csr_wen_unq_d,       // valid csr with write - for csr legal
-   input logic        dec_csr_any_unq_d,       // valid csr - for csr legal
-   input logic [11:0] dec_csr_rdaddr_d,      // read address for csr
-
-   input logic        dec_csr_wen_r,      // csr write enable at wb
-   input logic [11:0] dec_csr_wraddr_r,      // write address for csr
-   input logic [31:0] dec_csr_wrdata_r,   // csr write data at wb
-
-   input logic        dec_csr_stall_int_ff, // csr is mie/mstatus
-
-   input logic dec_tlu_i0_valid_r, // pipe 0 op at e4 is valid
-
-   input logic [31:1] exu_npc_r, // for NPC tracking
-
-   input logic [31:1] dec_tlu_i0_pc_r, // for PC/NPC tracking
-
-   input eb1_trap_pkt_t dec_tlu_packet_r, // exceptions known at decode
-
-   input logic [31:0] dec_illegal_inst, // For mtval
-   input logic        dec_i0_decode_d,  // decode valid, used for clean icache diagnostics
-
-   // branch info from pipe0 for errors or counter updates
-   input logic [1:0]  exu_i0_br_hist_r, // history
-   input logic        exu_i0_br_error_r, // error
-   input logic        exu_i0_br_start_error_r, // start error
-   input logic        exu_i0_br_valid_r, // valid
-   input logic        exu_i0_br_mp_r, // mispredict
-   input logic        exu_i0_br_middle_r, // middle of bank
-
-   // branch info from pipe1 for errors or counter updates
-
-   input logic             exu_i0_br_way_r, // way hit or repl
-
-   output logic dec_tlu_core_empty,  // core is empty
-   // Debug start
-   output logic dec_dbg_cmd_done, // abstract command done
-   output logic dec_dbg_cmd_fail, // abstract command failed
-   output logic dec_tlu_dbg_halted, // Core is halted and ready for debug command
-   output logic dec_tlu_debug_mode, // Core is in debug mode
-   output logic dec_tlu_resume_ack, // Resume acknowledge
-   output logic dec_tlu_debug_stall, // stall decode while waiting on core to empty
-
-   output logic dec_tlu_flush_noredir_r , // Tell fetch to idle on this flush
-   output logic dec_tlu_mpc_halted_only, // Core is halted only due to MPC
-   output logic dec_tlu_flush_leak_one_r, // single step
-   output logic dec_tlu_flush_err_r, // iside perr/ecc rfpc. This is the D stage of the error
-
-   output logic dec_tlu_flush_extint, // fast ext int started
-   output logic [31:2] dec_tlu_meihap, // meihap for fast int
-
-   input  logic dbg_halt_req, // DM requests a halt
-   input  logic dbg_resume_req, // DM requests a resume
-   input  logic ifu_miss_state_idle, // I-side miss buffer empty
-   input  logic lsu_idle_any, // lsu is idle
-   input  logic dec_div_active, // oop div is active
-   output eb1_trigger_pkt_t  [3:0] trigger_pkt_any, // trigger info for trigger blocks
-
-   input logic  ifu_ic_error_start,     // IC single bit error
-   input logic  ifu_iccm_rd_ecc_single_err, // ICCM single bit error
-
-
-   input logic [70:0] ifu_ic_debug_rd_data, // diagnostic icache read data
-   input logic ifu_ic_debug_rd_data_valid, // diagnostic icache read data valid
-   output eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt, // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-   // Debug end
-
-   input logic [7:0] pic_claimid, // pic claimid for csr
-   input logic [3:0] pic_pl, // pic priv level for csr
-   input logic       mhwakeup, // high priority external int, wakeup if halted
-
-   input logic mexintpend, // external interrupt pending
-   input logic timer_int, // timer interrupt pending
-   input logic soft_int, // software interrupt pending
-
-   output logic o_cpu_halt_status, // PMU interface, halted
-   output logic o_cpu_halt_ack, // halt req ack
-   output logic o_cpu_run_ack, // run req ack
-   output logic o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id, // Core ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req, // Async halt request
-   input logic mpc_debug_run_req, // Async run request
-   input logic mpc_reset_run_req, // Run/halt after reset
-   output logic mpc_debug_halt_ack, // Halt ack
-   output logic mpc_debug_run_ack, // Run ack
-   output logic debug_brkpt_status, // debug breakpoint
-
-   output logic [3:0] dec_tlu_meicurpl, // to PIC
-   output logic [3:0] dec_tlu_meipt, // to PIC
-
-
-   output logic [31:0] dec_csr_rddata_d,      // csr read data at wb
-   output logic dec_csr_legal_d,              // csr indicates legal operation
-
-   output eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // branch pkt to bp
-
-   output logic dec_tlu_i0_kill_writeb_wb,    // I0 is flushed, don't writeback any results to arch state
-   output logic dec_tlu_flush_lower_wb,       // commit has a flush (exception, int, mispredict at e4)
-   output logic dec_tlu_i0_commit_cmt,        // committed an instruction
-
-   output logic dec_tlu_i0_kill_writeb_r,    // I0 is flushed, don't writeback any results to arch state
-   output logic dec_tlu_flush_lower_r,       // commit has a flush (exception, int)
-   output logic [31:1] dec_tlu_flush_path_r, // flush pc
-   output logic dec_tlu_fence_i_r,           // flush is a fence_i rfnpc, flush icache
-   output logic dec_tlu_wr_pause_r,           // CSR write to pause reg is at R.
-   output logic dec_tlu_flush_pause_r,        // Flush is due to pause
-
-   output logic dec_tlu_presync_d,            // CSR read needs to be presync'd
-   output logic dec_tlu_postsync_d,           // CSR needs to be presync'd
-
-
-   output logic [31:0] dec_tlu_mrac_ff,        // CSR for memory region control
-
-   output logic dec_tlu_force_halt, // halt has been forced
-
-   output logic dec_tlu_perfcnt0, // toggles when pipe0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1, // toggles when pipe0 perf counter 1 has an event inc
-   output logic dec_tlu_perfcnt2, // toggles when pipe0 perf counter 2 has an event inc
-   output logic dec_tlu_perfcnt3, // toggles when pipe0 perf counter 3 has an event inc
-
-   output logic dec_tlu_i0_exc_valid_wb1, // pipe 0 exception valid
-   output logic dec_tlu_i0_valid_wb1,  // pipe 0 valid
-   output logic dec_tlu_int_valid_wb1, // pipe 2 int valid
-   output logic [4:0] dec_tlu_exc_cause_wb1, // exception or int cause
-   output logic [31:0] dec_tlu_mtval_wb1, // MTVAL value
-
-   // feature disable from mfdc
-   output logic  dec_tlu_external_ldfwd_disable, // disable external load forwarding
-   output logic  dec_tlu_sideeffect_posted_disable,  // disable posted stores to side-effect address
-   output logic  dec_tlu_core_ecc_disable, // disable core ECC
-   output logic  dec_tlu_bpred_disable,           // disable branch prediction
-   output logic  dec_tlu_wb_coalescing_disable,   // disable writebuffer coalescing
-   output logic  dec_tlu_pipelining_disable,      // disable pipelining
-   output logic  dec_tlu_trace_disable,           // disable trace
-   output logic [2:0]  dec_tlu_dma_qos_prty,    // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   output logic  dec_tlu_misc_clk_override, // override misc clock domain gating
-   output logic  dec_tlu_dec_clk_override,  // override decode clock domain gating
-   output logic  dec_tlu_ifu_clk_override,  // override fetch clock domain gating
-   output logic  dec_tlu_lsu_clk_override,  // override load/store clock domain gating
-   output logic  dec_tlu_bus_clk_override,  // override bus clock domain gating
-   output logic  dec_tlu_pic_clk_override,  // override PIC clock domain gating
-   output logic  dec_tlu_picio_clk_override,// override PICIO clock domain gating
-   output logic  dec_tlu_dccm_clk_override, // override DCCM clock domain gating
-   output logic  dec_tlu_icm_clk_override   // override ICCM clock domain gating
-   );
-
-   logic         clk_override, e4e5_int_clk, nmi_fir_type, nmi_lsu_load_type, nmi_lsu_store_type, nmi_int_detected_f, nmi_lsu_load_type_f,
-                 nmi_lsu_store_type_f, allow_dbg_halt_csr_write, dbg_cmd_done_ns, i_cpu_run_req_d1_raw, debug_mode_status, lsu_single_ecc_error_r_d1,
-                 sel_npc_r, sel_npc_resume, ce_int,
-                 nmi_in_debug_mode, dpc_capture_npc, dpc_capture_pc, tdata_load, tdata_opcode, tdata_action, perfcnt_halted, tdata_chain,
-                 tdata_kill_write;
-
-
-   logic reset_delayed, reset_detect, reset_detected;
-   logic wr_mstatus_r, wr_mtvec_r, wr_mcyclel_r, wr_mcycleh_r,
-         wr_minstretl_r, wr_minstreth_r, wr_mscratch_r, wr_mepc_r, wr_mcause_r, wr_mscause_r, wr_mtval_r,
-         wr_mrac_r, wr_meihap_r, wr_meicurpl_r, wr_meipt_r, wr_dcsr_r,
-         wr_dpc_r, wr_meicidpl_r, wr_meivt_r, wr_meicpct_r, wr_micect_r, wr_miccmect_r, wr_mfdht_r, wr_mfdhs_r,
-         wr_mdccmect_r,wr_mhpme3_r, wr_mhpme4_r, wr_mhpme5_r, wr_mhpme6_r;
-   logic wr_mpmc_r;
-   logic [1:1] mpmc_b_ns, mpmc, mpmc_b;
-   logic set_mie_pmu_fw_halt, fw_halted_ns, fw_halted;
-   logic wr_mcountinhibit_r;
-   logic [6:0] mcountinhibit;
-   logic wr_mtsel_r, wr_mtdata1_t0_r, wr_mtdata1_t1_r, wr_mtdata1_t2_r, wr_mtdata1_t3_r, wr_mtdata2_t0_r, wr_mtdata2_t1_r, wr_mtdata2_t2_r, wr_mtdata2_t3_r;
-   logic [31:0] mtdata2_t0, mtdata2_t1, mtdata2_t2, mtdata2_t3, mtdata2_tsel_out, mtdata1_tsel_out;
-   logic [9:0]  mtdata1_t0_ns, mtdata1_t0, mtdata1_t1_ns, mtdata1_t1, mtdata1_t2_ns, mtdata1_t2, mtdata1_t3_ns, mtdata1_t3;
-   logic [9:0] tdata_wrdata_r;
-   logic [1:0] mtsel_ns, mtsel;
-   logic tlu_i0_kill_writeb_r;
-   logic [1:0]  mstatus_ns, mstatus;
-   logic [1:0] mfdhs_ns, mfdhs;
-   logic [31:0] force_halt_ctr, force_halt_ctr_f;
-   logic        force_halt;
-   logic [5:0]  mfdht, mfdht_ns;
-   logic mstatus_mie_ns;
-   logic [30:0] mtvec_ns, mtvec;
-   logic [15:2] dcsr_ns, dcsr;
-   logic [5:0] mip_ns, mip;
-   logic [5:0] mie_ns, mie;
-   logic [31:0] mcyclel_ns, mcyclel;
-   logic [31:0] mcycleh_ns, mcycleh;
-   logic [31:0] minstretl_ns, minstretl;
-   logic [31:0] minstreth_ns, minstreth;
-   logic [31:0] micect_ns, micect, miccmect_ns, miccmect, mdccmect_ns, mdccmect;
-   logic [26:0] micect_inc, miccmect_inc, mdccmect_inc;
-   logic [31:0] mscratch;
-   logic [31:0] mhpmc3, mhpmc3_ns, mhpmc4, mhpmc4_ns, mhpmc5, mhpmc5_ns, mhpmc6, mhpmc6_ns;
-   logic [31:0] mhpmc3h, mhpmc3h_ns, mhpmc4h, mhpmc4h_ns, mhpmc5h, mhpmc5h_ns, mhpmc6h, mhpmc6h_ns;
-   logic [9:0]  mhpme3, mhpme4, mhpme5, mhpme6;
-   logic [31:0] mrac;
-   logic [9:2] meihap;
-   logic [31:10] meivt;
-   logic [3:0] meicurpl_ns, meicurpl;
-   logic [3:0] meicidpl_ns, meicidpl;
-   logic [3:0] meipt_ns, meipt;
-   logic [31:0] mdseac;
-   logic mdseac_locked_ns, mdseac_locked_f, mdseac_en, nmi_lsu_detected;
-   logic [31:1] mepc_ns, mepc;
-   logic [31:1] dpc_ns, dpc;
-   logic [31:0] mcause_ns, mcause;
-   logic [3:0] mscause_ns, mscause, mscause_type;
-   logic [31:0] mtval_ns, mtval;
-   logic dec_pause_state_f, dec_tlu_wr_pause_r_d1, pause_expired_r, pause_expired_wb;
-   logic        tlu_flush_lower_r, tlu_flush_lower_r_d1;
-   logic [31:1] tlu_flush_path_r,  tlu_flush_path_r_d1;
-   logic i0_valid_wb;
-   logic tlu_i0_commit_cmt;
-   logic [31:1] vectored_path, interrupt_path;
-   logic [16:0] dicawics_ns, dicawics;
-   logic        wr_dicawics_r, wr_dicad0_r, wr_dicad1_r, wr_dicad0h_r;
-   logic [31:0] dicad0_ns, dicad0, dicad0h_ns, dicad0h;
-
-   logic [6:0]  dicad1_ns, dicad1_raw;
-   logic [31:0] dicad1;
-   logic        ebreak_r, ebreak_to_debug_mode_r, ecall_r, illegal_r, mret_r, inst_acc_r, fence_i_r,
-                ic_perr_r, iccm_sbecc_r, ebreak_to_debug_mode_r_d1, kill_ebreak_count_r, inst_acc_second_r;
-   logic ce_int_ready, ext_int_ready, timer_int_ready, soft_int_ready, int_timer0_int_ready, int_timer1_int_ready, mhwakeup_ready,
-         take_ext_int, take_ce_int, take_timer_int, take_soft_int, take_int_timer0_int, take_int_timer1_int, take_nmi, take_nmi_r_d1, int_timer0_int_possible, int_timer1_int_possible;
-   logic i0_exception_valid_r, interrupt_valid_r, i0_exception_valid_r_d1, interrupt_valid_r_d1, exc_or_int_valid_r, exc_or_int_valid_r_d1, mdccme_ce_req, miccme_ce_req, mice_ce_req;
-   logic synchronous_flush_r;
-   logic [4:0]  exc_cause_r, exc_cause_wb;
-   logic        mcyclel_cout, mcyclel_cout_f, mcyclela_cout;
-   logic [31:0] mcyclel_inc;
-   logic [31:0] mcycleh_inc;
-
-   logic        minstretl_cout, minstretl_cout_f, minstret_enable, minstretl_cout_ns, minstretl_couta;
-
-   logic [31:0] minstretl_inc, minstretl_read;
-   logic [31:0] minstreth_inc, minstreth_read;
-   logic [31:1] pc_r, pc_r_d1, npc_r, npc_r_d1;
-   logic valid_csr;
-   logic rfpc_i0_r;
-   logic lsu_i0_rfnpc_r;
-   logic dec_tlu_br0_error_r, dec_tlu_br0_start_error_r, dec_tlu_br0_v_r;
-   logic lsu_i0_exc_r, lsu_i0_exc_r_raw, lsu_exc_ma_r, lsu_exc_acc_r, lsu_exc_st_r,
-         lsu_exc_valid_r, lsu_exc_valid_r_raw, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1, block_interrupts;
-   logic i0_trigger_eval_r;
-
-   logic request_debug_mode_r, request_debug_mode_r_d1, request_debug_mode_done, request_debug_mode_done_f;
-   logic take_halt, halt_taken, halt_taken_f, internal_dbg_halt_mode, dbg_tlu_halted_f, take_reset,
-         dbg_tlu_halted, core_empty, lsu_idle_any_f, ifu_miss_state_idle_f, resume_ack_ns,
-         debug_halt_req_f, debug_resume_req_f_raw, debug_resume_req_f, enter_debug_halt_req, dcsr_single_step_done, dcsr_single_step_done_f,
-         debug_halt_req_d1, debug_halt_req_ns, dcsr_single_step_running, dcsr_single_step_running_f, internal_dbg_halt_timers;
-
-   logic [3:0] i0_trigger_r, trigger_action, trigger_enabled,
-               i0_trigger_chain_masked_r;
-   logic       i0_trigger_hit_r, i0_trigger_hit_raw_r, i0_trigger_action_r,
-               trigger_hit_r_d1,
-               mepc_trigger_hit_sel_pc_r;
-   logic [3:0] update_hit_bit_r, i0_iside_trigger_has_pri_r,i0trigger_qual_r, i0_lsu_trigger_has_pri_r;
-   logic cpu_halt_status, cpu_halt_ack, cpu_run_ack, ext_halt_pulse, i_cpu_halt_req_d1, i_cpu_run_req_d1;
-
-   logic inst_acc_r_raw, trigger_hit_dmode_r, trigger_hit_dmode_r_d1;
-   logic [9:0] mcgc, mcgc_ns, mcgc_int;
-   logic [18:0] mfdc;
-   logic i_cpu_halt_req_sync_qual, i_cpu_run_req_sync_qual, pmu_fw_halt_req_ns, pmu_fw_halt_req_f, int_timer_stalled,
-         fw_halt_req, enter_pmu_fw_halt_req, pmu_fw_tlu_halted, pmu_fw_tlu_halted_f, internal_pmu_fw_halt_mode,
-         internal_pmu_fw_halt_mode_f, int_timer0_int_hold, int_timer1_int_hold, int_timer0_int_hold_f, int_timer1_int_hold_f;
-   logic nmi_int_delayed, nmi_int_detected;
-   logic [3:0] trigger_execute, trigger_data, trigger_store;
-   logic dec_tlu_pmu_fw_halted;
-
-   logic mpc_run_state_ns, debug_brkpt_status_ns, mpc_debug_halt_ack_ns, mpc_debug_run_ack_ns, dbg_halt_state_ns, dbg_run_state_ns,
-         dbg_halt_state_f, mpc_debug_halt_req_sync_f, mpc_debug_run_req_sync_f, mpc_halt_state_f, mpc_halt_state_ns, mpc_run_state_f, debug_brkpt_status_f,
-         mpc_debug_halt_ack_f, mpc_debug_run_ack_f, dbg_run_state_f, mpc_debug_halt_req_sync_pulse,
-         mpc_debug_run_req_sync_pulse, debug_brkpt_valid, debug_halt_req, debug_resume_req, dec_tlu_mpc_halted_only_ns;
-   logic take_ext_int_start, ext_int_freeze, take_ext_int_start_d1, take_ext_int_start_d2,
-         take_ext_int_start_d3, ext_int_freeze_d1, csr_meicpct, ignore_ext_int_due_to_lsu_stall;
-   logic mcause_sel_nmi_store, mcause_sel_nmi_load, mcause_sel_nmi_ext, fast_int_meicpct;
-   logic [1:0] mcause_fir_error_type;
-   logic dbg_halt_req_held_ns, dbg_halt_req_held, dbg_halt_req_final;
-   logic iccm_repair_state_ns, iccm_repair_state_d1, iccm_repair_state_rfnpc;
-
-
-   // internal timer, isolated for size reasons
-   logic [31:0] dec_timer_rddata_d;
-   logic dec_timer_read_d, dec_timer_t0_pulse, dec_timer_t1_pulse;
-   logic csr_mitctl0;
-   logic csr_mitctl1;
-   logic csr_mitb0;
-   logic csr_mitb1;
-   logic csr_mitcnt0;
-   logic csr_mitcnt1;
-
-   logic nmi_int_sync, timer_int_sync, soft_int_sync, i_cpu_halt_req_sync, i_cpu_run_req_sync, mpc_debug_halt_req_sync, mpc_debug_run_req_sync, mpc_debug_halt_req_sync_raw;
-   logic csr_wr_clk;
-   logic e4e5_clk, e4_valid, e5_valid, e4e5_valid, internal_dbg_halt_mode_f, internal_dbg_halt_mode_f2;
-   logic lsu_pmu_load_external_r, lsu_pmu_store_external_r;
-   logic dec_tlu_flush_noredir_r_d1, dec_tlu_flush_pause_r_d1;
-   logic lsu_single_ecc_error_r;
-   logic [31:0] lsu_error_pkt_addr_r;
-   logic mcyclel_cout_in;
-   logic i0_valid_no_ebreak_ecall_r;
-   logic minstret_enable_f;
-   logic sel_exu_npc_r, sel_flush_npc_r, sel_hold_npc_r;
-   logic pc0_valid_r;
-   logic [15:0] mfdc_int, mfdc_ns;
-   logic [31:0] mrac_in;
-   logic [31:27] csr_sat;
-   logic [8:6] dcsr_cause;
-   logic enter_debug_halt_req_le, dcsr_cause_upgradeable;
-   logic icache_rd_valid, icache_wr_valid, icache_rd_valid_f, icache_wr_valid_f;
-   logic [3:0]      mhpmc_inc_r, mhpmc_inc_r_d1;
-
-   logic [3:0][9:0] mhpme_vec;
-   logic            mhpmc3_wr_en0, mhpmc3_wr_en1, mhpmc3_wr_en;
-   logic            mhpmc4_wr_en0, mhpmc4_wr_en1, mhpmc4_wr_en;
-   logic            mhpmc5_wr_en0, mhpmc5_wr_en1, mhpmc5_wr_en;
-   logic            mhpmc6_wr_en0, mhpmc6_wr_en1, mhpmc6_wr_en;
-   logic            mhpmc3h_wr_en0, mhpmc3h_wr_en;
-   logic            mhpmc4h_wr_en0, mhpmc4h_wr_en;
-   logic            mhpmc5h_wr_en0, mhpmc5h_wr_en;
-   logic            mhpmc6h_wr_en0, mhpmc6h_wr_en;
-   logic [63:0]     mhpmc3_incr, mhpmc4_incr, mhpmc5_incr, mhpmc6_incr;
-   logic perfcnt_halted_d1, zero_event_r;
-   logic [3:0] perfcnt_during_sleep;
-   logic [9:0] event_r;
-
-   eb1_inst_pkt_t pmu_i0_itype_qual;
-
-   logic csr_mfdht;
-   logic csr_mfdhs;
-   logic csr_misa;
-   logic csr_mvendorid;
-   logic csr_marchid;
-   logic csr_mimpid;
-   logic csr_mhartid;
-   logic csr_mstatus;
-   logic csr_mtvec;
-   logic csr_mip;
-   logic csr_mie;
-   logic csr_mcyclel;
-   logic csr_mcycleh;
-   logic csr_minstretl;
-   logic csr_minstreth;
-   logic csr_mscratch;
-   logic csr_mepc;
-   logic csr_mcause;
-   logic csr_mscause;
-   logic csr_mtval;
-   logic csr_mrac;
-   logic csr_dmst;
-   logic csr_mdseac;
-   logic csr_meihap;
-   logic csr_meivt;
-   logic csr_meipt;
-   logic csr_meicurpl;
-   logic csr_meicidpl;
-   logic csr_dcsr;
-   logic csr_mcgc;
-   logic csr_mfdc;
-   logic csr_dpc;
-   logic csr_mtsel;
-   logic csr_mtdata1;
-   logic csr_mtdata2;
-   logic csr_mhpmc3;
-   logic csr_mhpmc4;
-   logic csr_mhpmc5;
-   logic csr_mhpmc6;
-   logic csr_mhpmc3h;
-   logic csr_mhpmc4h;
-   logic csr_mhpmc5h;
-   logic csr_mhpmc6h;
-   logic csr_mhpme3;
-   logic csr_mhpme4;
-   logic csr_mhpme5;
-   logic csr_mhpme6;
-   logic csr_mcountinhibit;
-   logic csr_mpmc;
-   logic csr_micect;
-   logic csr_miccmect;
-   logic csr_mdccmect;
-   logic csr_dicawics;
-   logic csr_dicad0h;
-   logic csr_dicad0;
-   logic csr_dicad1;
-   logic csr_dicago;
-   logic presync;
-   logic postsync;
-   logic legal;
-   logic dec_csr_wen_r_mod;
-
-   logic flush_clkvalid;
-   logic sel_fir_addr;
-   logic wr_mie_r;
-   logic mtval_capture_pc_r;
-   logic mtval_capture_pc_plus2_r;
-   logic mtval_capture_inst_r;
-   logic mtval_capture_lsu_r;
-   logic mtval_clear_r;
-   logic wr_mcgc_r;
-   logic wr_mfdc_r;
-   logic wr_mdeau_r;
-   logic trigger_hit_for_dscr_cause_r_d1;
-   logic conditionally_illegal;
-
-   logic  [3:0] ifu_mscause ;
-   logic        ifu_ic_error_start_f, ifu_iccm_rd_ecc_single_err_f;
-
-   eb1_dec_timer_ctl  #(.pt(pt)) int_timers(.*);
-   // end of internal timers
-
-   assign clk_override = dec_tlu_dec_clk_override;
-
-   // Async inputs to the core have to be sync'd to the core clock.
-   rvsyncss #(7) syncro_ff(.*,
-                           .clk(free_clk),
-                           .din ({nmi_int,      timer_int,      soft_int,      i_cpu_halt_req,      i_cpu_run_req,      mpc_debug_halt_req,          mpc_debug_run_req}),
-                           .dout({nmi_int_sync, timer_int_sync, soft_int_sync, i_cpu_halt_req_sync, i_cpu_run_req_sync, mpc_debug_halt_req_sync_raw, mpc_debug_run_req_sync}));
-
-   // for CSRs that have inpipe writes only
-
-   rvoclkhdr csrwr_r_cgc   ( .en(dec_csr_wen_r_mod | clk_override), .l1clk(csr_wr_clk), .* );
-
-   assign e4_valid = dec_tlu_i0_valid_r;
-   assign e4e5_valid = e4_valid | e5_valid;
-   assign flush_clkvalid = internal_dbg_halt_mode_f | i_cpu_run_req_d1 | interrupt_valid_r | interrupt_valid_r_d1 |
-                           reset_delayed | pause_expired_r | pause_expired_wb | ic_perr_r | iccm_sbecc_r |
-                           clk_override;
-   rvoclkhdr e4e5_cgc     ( .en(e4e5_valid | clk_override), .l1clk(e4e5_clk), .* );
-   rvoclkhdr e4e5_int_cgc ( .en(e4e5_valid | flush_clkvalid), .l1clk(e4e5_int_clk), .* );
-
-   rvdffie #(11)  freeff (.*, .clk(free_l2clk),
-                          .din ({ifu_ic_error_start, ifu_iccm_rd_ecc_single_err, iccm_repair_state_ns, e4_valid, internal_dbg_halt_mode,
-                                 lsu_pmu_load_external_m, lsu_pmu_store_external_m, tlu_flush_lower_r,  tlu_i0_kill_writeb_r,
-                                 internal_dbg_halt_mode_f, force_halt}),
-                          .dout({ifu_ic_error_start_f, ifu_iccm_rd_ecc_single_err_f, iccm_repair_state_d1, e5_valid, internal_dbg_halt_mode_f,
-                                 lsu_pmu_load_external_r, lsu_pmu_store_external_r, tlu_flush_lower_r_d1, dec_tlu_i0_kill_writeb_wb,
-                                 internal_dbg_halt_mode_f2, dec_tlu_force_halt}));
-
-   assign dec_tlu_i0_kill_writeb_r = tlu_i0_kill_writeb_r;
-
-   assign nmi_int_detected = (nmi_int_sync & ~nmi_int_delayed) | nmi_lsu_detected | (nmi_int_detected_f & ~take_nmi_r_d1) | nmi_fir_type;
-   // if the first nmi is a lsu type, note it. If there's already an nmi pending, ignore. Simultaneous with FIR, drop.
-   assign nmi_lsu_load_type  = (nmi_lsu_detected & lsu_imprecise_error_load_any &  ~(nmi_int_detected_f & ~take_nmi_r_d1)) |
-                               (nmi_lsu_load_type_f  & ~take_nmi_r_d1);
-   assign nmi_lsu_store_type = (nmi_lsu_detected & lsu_imprecise_error_store_any & ~(nmi_int_detected_f & ~take_nmi_r_d1)) |
-                               (nmi_lsu_store_type_f & ~take_nmi_r_d1);
-
-   assign nmi_fir_type = ~nmi_int_detected_f & take_ext_int_start_d3 & |lsu_fir_error[1:0];
-
-   // Filter subsequent bus errors after the first, until the lock on MDSEAC is cleared
-   assign nmi_lsu_detected = ~mdseac_locked_f & (lsu_imprecise_error_load_any | lsu_imprecise_error_store_any) & ~nmi_fir_type;
-
-
-localparam MSTATUS_MIE   = 0;
-localparam MIP_MCEIP     = 5;
-localparam MIP_MITIP0    = 4;
-localparam MIP_MITIP1    = 3;
-localparam MIP_MEIP      = 2;
-localparam MIP_MTIP      = 1;
-localparam MIP_MSIP      = 0;
-
-localparam MIE_MCEIE     = 5;
-localparam MIE_MITIE0    = 4;
-localparam MIE_MITIE1    = 3;
-localparam MIE_MEIE      = 2;
-localparam MIE_MTIE      = 1;
-localparam MIE_MSIE      = 0;
-
-localparam DCSR_EBREAKM  = 15;
-localparam DCSR_STEPIE   = 11;
-localparam DCSR_STOPC    = 10;
-localparam DCSR_STEP     = 2;
-
-
-   assign reset_delayed = reset_detect ^ reset_detected;
-
-   // ----------------------------------------------------------------------
-   // MPC halt
-   // - can interact with debugger halt and v-v
-
-   // fast ints in progress have priority
-   assign mpc_debug_halt_req_sync = mpc_debug_halt_req_sync_raw & ~ext_int_freeze_d1;
-
-    rvdffie #(16)  mpvhalt_ff (.*, .clk(free_l2clk),
-                                 .din({1'b1, reset_detect,
-                                       nmi_int_sync, nmi_int_detected, nmi_lsu_load_type, nmi_lsu_store_type,
-                                       mpc_debug_halt_req_sync, mpc_debug_run_req_sync,
-                                       mpc_halt_state_ns, mpc_run_state_ns, debug_brkpt_status_ns,
-                                       mpc_debug_halt_ack_ns, mpc_debug_run_ack_ns,
-                                       dbg_halt_state_ns, dbg_run_state_ns,
-                                       dec_tlu_mpc_halted_only_ns}),
-                                .dout({reset_detect, reset_detected,
-                                       nmi_int_delayed, nmi_int_detected_f, nmi_lsu_load_type_f, nmi_lsu_store_type_f,
-                                       mpc_debug_halt_req_sync_f, mpc_debug_run_req_sync_f,
-                                       mpc_halt_state_f, mpc_run_state_f, debug_brkpt_status_f,
-                                       mpc_debug_halt_ack_f, mpc_debug_run_ack_f,
-                                       dbg_halt_state_f, dbg_run_state_f,
-                                       dec_tlu_mpc_halted_only}));
-
-   // turn level sensitive requests into pulses
-   assign mpc_debug_halt_req_sync_pulse = mpc_debug_halt_req_sync & ~mpc_debug_halt_req_sync_f;
-   assign mpc_debug_run_req_sync_pulse = mpc_debug_run_req_sync & ~mpc_debug_run_req_sync_f;
-
-   // states
-   assign mpc_halt_state_ns = (mpc_halt_state_f | mpc_debug_halt_req_sync_pulse | (reset_delayed & ~mpc_reset_run_req)) & ~mpc_debug_run_req_sync;
-   assign mpc_run_state_ns = (mpc_run_state_f | (mpc_debug_run_req_sync_pulse & ~mpc_debug_run_ack_f)) & (internal_dbg_halt_mode_f & ~dcsr_single_step_running_f);
-
-   // note, MPC halt can allow the jtag debugger to just start sending commands. When that happens, set the interal debugger halt state to prevent
-   // MPC run from starting the core.
-   assign dbg_halt_state_ns = (dbg_halt_state_f | (dbg_halt_req_final | dcsr_single_step_done_f | trigger_hit_dmode_r_d1 | ebreak_to_debug_mode_r_d1)) & ~dbg_resume_req;
-   assign dbg_run_state_ns = (dbg_run_state_f | dbg_resume_req) & (internal_dbg_halt_mode_f & ~dcsr_single_step_running_f);
-
-   // tell dbg we are only MPC halted
-   assign dec_tlu_mpc_halted_only_ns = ~dbg_halt_state_f & mpc_halt_state_f;
-
-   // this asserts from detection of bkpt until after we leave debug mode
-   assign debug_brkpt_valid = ebreak_to_debug_mode_r_d1 | trigger_hit_dmode_r_d1;
-   assign debug_brkpt_status_ns = (debug_brkpt_valid | debug_brkpt_status_f) & (internal_dbg_halt_mode & ~dcsr_single_step_running_f);
-
-   // acks back to interface
-   assign mpc_debug_halt_ack_ns = mpc_halt_state_f & internal_dbg_halt_mode_f & mpc_debug_halt_req_sync & core_empty;
-   assign mpc_debug_run_ack_ns = (mpc_debug_run_req_sync & ~dbg_halt_state_ns & ~mpc_debug_halt_req_sync) | (mpc_debug_run_ack_f & mpc_debug_run_req_sync) ;
-
-   // Pins
-   assign mpc_debug_halt_ack = mpc_debug_halt_ack_f;
-   assign mpc_debug_run_ack = mpc_debug_run_ack_f;
-   assign debug_brkpt_status = debug_brkpt_status_f;
-
-   // DBG halt req is a pulse, fast ext int in progress has priority
-   assign dbg_halt_req_held_ns = (dbg_halt_req | dbg_halt_req_held) & ext_int_freeze_d1;
-   assign dbg_halt_req_final = (dbg_halt_req | dbg_halt_req_held) & ~ext_int_freeze_d1;
-
-   // combine MPC and DBG halt requests
-   assign debug_halt_req = (dbg_halt_req_final | mpc_debug_halt_req_sync | (reset_delayed & ~mpc_reset_run_req)) & ~internal_dbg_halt_mode_f & ~ext_int_freeze_d1;
-
-   assign debug_resume_req = ~debug_resume_req_f &  // squash back to back resumes
-                             ((mpc_run_state_ns & ~dbg_halt_state_ns) |  // MPC run req
-                              (dbg_run_state_ns & ~mpc_halt_state_ns)); // dbg request is a pulse
-
-
-   // HALT
-   // dbg/pmu/fw requests halt, service as soon as lsu is not blocking interrupts
-   assign take_halt = (debug_halt_req_f | pmu_fw_halt_req_f) & ~synchronous_flush_r & ~mret_r & ~halt_taken_f & ~dec_tlu_flush_noredir_r_d1 & ~take_reset;
-
-   // hold after we take a halt, so we don't keep taking halts
-   assign halt_taken = (dec_tlu_flush_noredir_r_d1 & ~dec_tlu_flush_pause_r_d1 & ~take_ext_int_start_d1) | (halt_taken_f & ~dbg_tlu_halted_f & ~pmu_fw_tlu_halted_f & ~interrupt_valid_r_d1);
-
-   // After doing halt flush (RFNPC) wait until core is idle before asserting a particular halt mode
-   // It takes a cycle for mb_empty to assert after a fetch, take_halt covers that cycle
-   assign core_empty = force_halt |
-                       (lsu_idle_any & lsu_idle_any_f & ifu_miss_state_idle & ifu_miss_state_idle_f & ~debug_halt_req & ~debug_halt_req_d1 & ~dec_div_active);
-
-   assign dec_tlu_core_empty = core_empty;
-
-//--------------------------------------------------------------------------------
-// Debug start
-//
-
-   assign enter_debug_halt_req = (~internal_dbg_halt_mode_f & debug_halt_req) | dcsr_single_step_done_f | trigger_hit_dmode_r_d1 | ebreak_to_debug_mode_r_d1;
-
-   // dbg halt state active from request until non-step resume
-   assign internal_dbg_halt_mode = debug_halt_req_ns | (internal_dbg_halt_mode_f & ~(debug_resume_req_f & ~dcsr[DCSR_STEP]));
-   // dbg halt can access csrs as long as we are not stepping
-   assign allow_dbg_halt_csr_write = internal_dbg_halt_mode_f & ~dcsr_single_step_running_f;
-
-
-   // hold debug_halt_req_ns high until we enter debug halt
-   assign debug_halt_req_ns = enter_debug_halt_req | (debug_halt_req_f & ~dbg_tlu_halted);
-
-   assign dbg_tlu_halted = (debug_halt_req_f & core_empty & halt_taken) | (dbg_tlu_halted_f & ~debug_resume_req_f);
-
-   assign resume_ack_ns = (debug_resume_req_f & dbg_tlu_halted_f & dbg_run_state_ns);
-
-   assign dcsr_single_step_done = dec_tlu_i0_valid_r & ~dec_tlu_dbg_halted & dcsr[DCSR_STEP] & ~rfpc_i0_r;
-
-   assign dcsr_single_step_running = (debug_resume_req_f & dcsr[DCSR_STEP]) | (dcsr_single_step_running_f & ~dcsr_single_step_done_f);
-
-   assign dbg_cmd_done_ns = dec_tlu_i0_valid_r & dec_tlu_dbg_halted;
-
-   // used to hold off commits after an in-pipe debug mode request (triggers, DCSR)
-   assign request_debug_mode_r = (trigger_hit_dmode_r | ebreak_to_debug_mode_r) | (request_debug_mode_r_d1 & ~dec_tlu_flush_lower_wb);
-
-   assign request_debug_mode_done = (request_debug_mode_r_d1 | request_debug_mode_done_f) & ~dbg_tlu_halted_f;
-
-    rvdffie #(18)  halt_ff (.*, .clk(free_l2clk),
-                          .din({dec_tlu_flush_noredir_r, halt_taken, lsu_idle_any, ifu_miss_state_idle, dbg_tlu_halted,
-                                resume_ack_ns, debug_halt_req_ns, debug_resume_req, trigger_hit_dmode_r,
-                                dcsr_single_step_done, debug_halt_req, dec_tlu_wr_pause_r, dec_pause_state,
-                                request_debug_mode_r, request_debug_mode_done, dcsr_single_step_running, dec_tlu_flush_pause_r,
-                                dbg_halt_req_held_ns}),
-                          .dout({dec_tlu_flush_noredir_r_d1, halt_taken_f, lsu_idle_any_f, ifu_miss_state_idle_f, dbg_tlu_halted_f,
-                                 dec_tlu_resume_ack , debug_halt_req_f, debug_resume_req_f_raw, trigger_hit_dmode_r_d1,
-                                 dcsr_single_step_done_f, debug_halt_req_d1, dec_tlu_wr_pause_r_d1, dec_pause_state_f,
-                                 request_debug_mode_r_d1, request_debug_mode_done_f, dcsr_single_step_running_f, dec_tlu_flush_pause_r_d1,
-                                 dbg_halt_req_held}));
-
-   // MPC run collides with DBG halt, fix it here
-   assign debug_resume_req_f = debug_resume_req_f_raw & ~dbg_halt_req;
-
-   assign dec_tlu_debug_stall = debug_halt_req_f;
-   assign dec_tlu_dbg_halted = dbg_tlu_halted_f;
-   assign dec_tlu_debug_mode = internal_dbg_halt_mode_f;
-   assign dec_tlu_pmu_fw_halted = pmu_fw_tlu_halted_f;
-
-   // kill fetch redirection on flush if going to halt, or if there's a fence during db-halt
-   assign dec_tlu_flush_noredir_r = take_halt | (fence_i_r & internal_dbg_halt_mode) | dec_tlu_flush_pause_r | (i0_trigger_hit_r & trigger_hit_dmode_r) | take_ext_int_start;
-
-   assign dec_tlu_flush_extint = take_ext_int_start;
-
-   // 1 cycle after writing the PAUSE counter, flush with noredir to idle F1-D.
-   assign dec_tlu_flush_pause_r = dec_tlu_wr_pause_r_d1 & ~interrupt_valid_r & ~take_ext_int_start;
-
-   // detect end of pause counter and rfpc
-   assign pause_expired_r = ~dec_pause_state & dec_pause_state_f & ~(ext_int_ready | ce_int_ready | timer_int_ready | soft_int_ready | int_timer0_int_hold_f | int_timer1_int_hold_f | nmi_int_detected | ext_int_freeze_d1) & ~interrupt_valid_r_d1 & ~debug_halt_req_f & ~pmu_fw_halt_req_f & ~halt_taken_f;
-
-   assign dec_tlu_flush_leak_one_r = dec_tlu_flush_lower_r  & dcsr[DCSR_STEP] & (dec_tlu_resume_ack | dcsr_single_step_running) & ~dec_tlu_flush_noredir_r;
-   assign dec_tlu_flush_err_r = dec_tlu_flush_lower_r & (ic_perr_r | iccm_sbecc_r);
-
-   // If DM attempts to access an illegal CSR, send cmd_fail back
-   assign dec_dbg_cmd_done = dbg_cmd_done_ns;
-   assign dec_dbg_cmd_fail = illegal_r & dec_dbg_cmd_done;
-
-
-   //--------------------------------------------------------------------------------
-   //--------------------------------------------------------------------------------
-   // Triggers
-   //
-localparam MTDATA1_DMODE             = 9;
-localparam MTDATA1_SEL   = 7;
-localparam MTDATA1_ACTION            = 6;
-localparam MTDATA1_CHAIN             = 5;
-localparam MTDATA1_MATCH             = 4;
-localparam MTDATA1_M_ENABLED         = 3;
-localparam MTDATA1_EXE   = 2;
-localparam MTDATA1_ST    = 1;
-localparam MTDATA1_LD    = 0;
-
-   // Prioritize trigger hits with other exceptions.
-   //
-   // Trigger should have highest priority except:
-   // - trigger is an execute-data and there is an inst_access exception (lsu triggers won't fire, inst. is nop'd by decode)
-   // - trigger is a store-data and there is a lsu_acc_exc or lsu_ma_exc.
-   assign trigger_execute[3:0] = {mtdata1_t3[MTDATA1_EXE], mtdata1_t2[MTDATA1_EXE], mtdata1_t1[MTDATA1_EXE], mtdata1_t0[MTDATA1_EXE]};
-   assign trigger_data[3:0] = {mtdata1_t3[MTDATA1_SEL], mtdata1_t2[MTDATA1_SEL], mtdata1_t1[MTDATA1_SEL], mtdata1_t0[MTDATA1_SEL]};
-   assign trigger_store[3:0] = {mtdata1_t3[MTDATA1_ST], mtdata1_t2[MTDATA1_ST], mtdata1_t1[MTDATA1_ST], mtdata1_t0[MTDATA1_ST]};
-
-   // MSTATUS[MIE] needs to be on to take triggers unless the action is trigger to debug mode.
-   assign trigger_enabled[3:0] = {(mtdata1_t3[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t3[MTDATA1_M_ENABLED],
-                                  (mtdata1_t2[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t2[MTDATA1_M_ENABLED],
-                                  (mtdata1_t1[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t1[MTDATA1_M_ENABLED],
-                                  (mtdata1_t0[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t0[MTDATA1_M_ENABLED]};
-
-   // iside exceptions are always in i0
-   assign i0_iside_trigger_has_pri_r[3:0]  = ~( (trigger_execute[3:0] & trigger_data[3:0] & {4{inst_acc_r_raw}}) | // exe-data with inst_acc
-                                                ({4{exu_i0_br_error_r | exu_i0_br_start_error_r}}));               // branch error in i0
-
-   // lsu excs have to line up with their respective triggers since the lsu op can be i0
-   assign i0_lsu_trigger_has_pri_r[3:0] = ~(trigger_store[3:0] & trigger_data[3:0] & {4{lsu_i0_exc_r_raw}});
-
-   // trigger hits have to be eval'd to cancel side effect lsu ops even though the pipe is already frozen
-   assign i0_trigger_eval_r = dec_tlu_i0_valid_r;
-
-   assign i0trigger_qual_r[3:0] = {4{i0_trigger_eval_r}} & dec_tlu_packet_r.i0trigger[3:0] & i0_iside_trigger_has_pri_r[3:0] & i0_lsu_trigger_has_pri_r[3:0] & trigger_enabled[3:0];
-
-   // Qual trigger hits
-   assign i0_trigger_r[3:0] = ~{4{dec_tlu_flush_lower_wb | dec_tlu_dbg_halted}} & i0trigger_qual_r[3:0];
-
-   // chaining can mask raw trigger info
-   assign i0_trigger_chain_masked_r[3:0]  = {i0_trigger_r[3] & (~mtdata1_t2[MTDATA1_CHAIN] | i0_trigger_r[2]),
-                                             i0_trigger_r[2] & (~mtdata1_t2[MTDATA1_CHAIN] | i0_trigger_r[3]),
-                                             i0_trigger_r[1] & (~mtdata1_t0[MTDATA1_CHAIN] | i0_trigger_r[0]),
-                                             i0_trigger_r[0] & (~mtdata1_t0[MTDATA1_CHAIN] | i0_trigger_r[1])};
-
-   // This is the highest priority by this point.
-   assign i0_trigger_hit_raw_r = |i0_trigger_chain_masked_r[3:0];
-
-   assign i0_trigger_hit_r = i0_trigger_hit_raw_r;
-
-   // Actions include breakpoint, or dmode. Dmode is only possible if the DMODE bit is set.
-   // Otherwise, take a breakpoint.
-   assign trigger_action[3:0] = {mtdata1_t3[MTDATA1_ACTION] & mtdata1_t3[MTDATA1_DMODE],
-                                 mtdata1_t2[MTDATA1_ACTION] & mtdata1_t2[MTDATA1_DMODE] & ~mtdata1_t2[MTDATA1_CHAIN],
-                                 mtdata1_t1[MTDATA1_ACTION] & mtdata1_t1[MTDATA1_DMODE],
-                                 mtdata1_t0[MTDATA1_ACTION] & mtdata1_t0[MTDATA1_DMODE] & ~mtdata1_t0[MTDATA1_CHAIN]};
-
-   // this is needed to set the HIT bit in the triggers
-   assign update_hit_bit_r[3:0] = ({4{|i0_trigger_r[3:0] & ~rfpc_i0_r}} & {i0_trigger_chain_masked_r[3], i0_trigger_r[2], i0_trigger_chain_masked_r[1], i0_trigger_r[0]});
-
-   // action, 1 means dmode. Simultaneous triggers with at least 1 set for dmode force entire action to dmode.
-   assign i0_trigger_action_r = |(i0_trigger_chain_masked_r[3:0] & trigger_action[3:0]);
-
-   assign trigger_hit_dmode_r = (i0_trigger_hit_r & i0_trigger_action_r);
-
-   assign mepc_trigger_hit_sel_pc_r = i0_trigger_hit_r & ~trigger_hit_dmode_r;
-
-
-//
-// Debug end
-//--------------------------------------------------------------------------------
-
-   //----------------------------------------------------------------------
-   //
-   // Commit
-   //
-   //----------------------------------------------------------------------
-
-
-
-   //--------------------------------------------------------------------------------
-   // External halt (not debug halt)
-   // - Fully interlocked handshake
-   // i_cpu_halt_req  ____|--------------|_______________
-   // core_empty      ---------------|___________
-   // o_cpu_halt_ack  _________________|----|__________
-   // o_cpu_halt_status _______________|---------------------|_________
-   // i_cpu_run_req                              ______|----------|____
-   // o_cpu_run_ack                              ____________|------|________
-   //
-
-
-   // debug mode has priority, ignore PMU/FW halt/run while in debug mode
-   assign i_cpu_halt_req_sync_qual = i_cpu_halt_req_sync & ~dec_tlu_debug_mode & ~ext_int_freeze_d1;
-   assign i_cpu_run_req_sync_qual = i_cpu_run_req_sync & ~dec_tlu_debug_mode & pmu_fw_tlu_halted_f & ~ext_int_freeze_d1;
-
-   rvdffie #(10) exthaltff (.*, .clk(free_l2clk), .din({i_cpu_halt_req_sync_qual, i_cpu_run_req_sync_qual,   cpu_halt_status,
-                                                   cpu_halt_ack,   cpu_run_ack, internal_pmu_fw_halt_mode,
-                                                   pmu_fw_halt_req_ns, pmu_fw_tlu_halted,
-                                                   int_timer0_int_hold, int_timer1_int_hold}),
-                                            .dout({i_cpu_halt_req_d1,        i_cpu_run_req_d1_raw,      o_cpu_halt_status,
-                                                   o_cpu_halt_ack, o_cpu_run_ack, internal_pmu_fw_halt_mode_f,
-                                                   pmu_fw_halt_req_f, pmu_fw_tlu_halted_f,
-                                                   int_timer0_int_hold_f, int_timer1_int_hold_f}));
-
-   // only happens if we aren't in dgb_halt
-   assign ext_halt_pulse = i_cpu_halt_req_sync_qual & ~i_cpu_halt_req_d1;
-
-   assign enter_pmu_fw_halt_req =  ext_halt_pulse | fw_halt_req;
-
-   assign pmu_fw_halt_req_ns = (enter_pmu_fw_halt_req | (pmu_fw_halt_req_f & ~pmu_fw_tlu_halted)) & ~debug_halt_req_f;
-
-   assign internal_pmu_fw_halt_mode = pmu_fw_halt_req_ns | (internal_pmu_fw_halt_mode_f & ~i_cpu_run_req_d1 & ~debug_halt_req_f);
-
-   // debug halt has priority
-   assign pmu_fw_tlu_halted = ((pmu_fw_halt_req_f & core_empty & halt_taken & ~enter_debug_halt_req) | (pmu_fw_tlu_halted_f & ~i_cpu_run_req_d1)) & ~debug_halt_req_f;
-
-   assign cpu_halt_ack = (i_cpu_halt_req_d1 & pmu_fw_tlu_halted_f) | (o_cpu_halt_ack & i_cpu_halt_req_sync);
-   assign cpu_halt_status = (pmu_fw_tlu_halted_f & ~i_cpu_run_req_d1) | (o_cpu_halt_status & ~i_cpu_run_req_d1 & ~internal_dbg_halt_mode_f);
-   assign cpu_run_ack = (~pmu_fw_tlu_halted_f & i_cpu_run_req_sync) | (o_cpu_halt_status & i_cpu_run_req_d1_raw) | (o_cpu_run_ack & i_cpu_run_req_sync);
-   assign debug_mode_status = internal_dbg_halt_mode_f;
-   assign o_debug_mode_status = debug_mode_status;
-
-`ifdef RV_ASSERT_ON
-  assert_commit_while_halted: assert #0 (~(tlu_i0_commit_cmt  & o_cpu_halt_status)) else $display("ERROR: Commiting while cpu_halt_status asserted!");
-  assert_flush_while_fastint: assert #0 (~((take_ext_int_start_d1 | take_ext_int_start_d2) & dec_tlu_flush_lower_r)) else $display("ERROR: TLU Flushing inside fast interrupt procedure!");
-`endif
-
-   // high priority interrupts can wakeup from external halt, so can unmasked timer interrupts
-   assign i_cpu_run_req_d1 = i_cpu_run_req_d1_raw | ((nmi_int_detected | timer_int_ready | soft_int_ready | int_timer0_int_hold_f | int_timer1_int_hold_f | (mhwakeup & mhwakeup_ready)) & o_cpu_halt_status & ~i_cpu_halt_req_d1);
-
-   //--------------------------------------------------------------------------------
-   //--------------------------------------------------------------------------------
-
-   assign lsu_single_ecc_error_r = lsu_single_ecc_error_incr;
-
-   assign lsu_error_pkt_addr_r[31:0] = lsu_error_pkt_r.addr[31:0];
-
-
-   assign lsu_exc_valid_r_raw = lsu_error_pkt_r.exc_valid & ~dec_tlu_flush_lower_wb;
-
-   assign lsu_i0_exc_r_raw =  lsu_error_pkt_r.exc_valid;
-
-   assign lsu_i0_exc_r = lsu_i0_exc_r_raw & lsu_exc_valid_r_raw & ~i0_trigger_hit_r & ~rfpc_i0_r;
-
-   assign lsu_exc_valid_r = lsu_i0_exc_r;
-
-   assign lsu_exc_ma_r  =  lsu_i0_exc_r & ~lsu_error_pkt_r.exc_type;
-   assign lsu_exc_acc_r =  lsu_i0_exc_r & lsu_error_pkt_r.exc_type;
-   assign lsu_exc_st_r  =  lsu_i0_exc_r & lsu_error_pkt_r.inst_type;
-
-   // Single bit ECC errors on loads are RFNPC corrected, with the corrected data written to the GPR.
-   // LSU turns the load into a store and patches the data in the DCCM
-   assign lsu_i0_rfnpc_r = dec_tlu_i0_valid_r & ~i0_trigger_hit_r &
-                           (~lsu_error_pkt_r.inst_type & lsu_error_pkt_r.single_ecc_error);
-
-   //  Final commit valids
-   assign tlu_i0_commit_cmt = dec_tlu_i0_valid_r &
-                              ~rfpc_i0_r &
-                              ~lsu_i0_exc_r &
-                              ~inst_acc_r &
-                              ~dec_tlu_dbg_halted &
-                              ~request_debug_mode_r_d1 &
-                              ~i0_trigger_hit_r;
-
-   // unified place to manage the killing of arch state writebacks
-   assign tlu_i0_kill_writeb_r = rfpc_i0_r | lsu_i0_exc_r | inst_acc_r | (illegal_r & dec_tlu_dbg_halted) | i0_trigger_hit_r;
-   assign dec_tlu_i0_commit_cmt = tlu_i0_commit_cmt;
-
-
-   // refetch PC, microarch flush
-   // ic errors only in pipe0
-   assign rfpc_i0_r =  ((dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1 & (exu_i0_br_error_r | exu_i0_br_start_error_r)) | // inst commit with rfpc
-                        ((ic_perr_r | iccm_sbecc_r) & ~ext_int_freeze_d1)) & // ic/iccm without inst commit
-                       ~i0_trigger_hit_r & // unless there's a trigger. Err signal to ic/iccm will assert anyway to clear the error.
-                       ~lsu_i0_rfnpc_r;
-
-   // From the indication of a iccm single bit error until the first commit or flush, maintain a repair state. In the repair state, rfnpc i0 commits.
-   assign iccm_repair_state_ns = iccm_sbecc_r | (iccm_repair_state_d1 & ~dec_tlu_flush_lower_r);
-
-
-   localparam MCPC          = 12'h7c2;
-
-   // this is a flush of last resort, meaning only assert it if there is no other flush happening.
-   assign iccm_repair_state_rfnpc = tlu_i0_commit_cmt & iccm_repair_state_d1 &
-                                    ~(ebreak_r | ecall_r | mret_r | take_reset | illegal_r | (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCPC)));
-
-if(pt.BTB_ENABLE==1) begin
-   // go ahead and repair the branch error on other flushes, doesn't have to be the rfpc flush
-   assign dec_tlu_br0_error_r = exu_i0_br_error_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1;
-   assign dec_tlu_br0_start_error_r = exu_i0_br_start_error_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1;
-   assign dec_tlu_br0_v_r = exu_i0_br_valid_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1 & (~exu_i0_br_mp_r | ~exu_pmu_i0_br_ataken);
-
-
-   assign dec_tlu_br0_r_pkt.hist[1:0] = exu_i0_br_hist_r[1:0];
-   assign dec_tlu_br0_r_pkt.br_error = dec_tlu_br0_error_r;
-   assign dec_tlu_br0_r_pkt.br_start_error = dec_tlu_br0_start_error_r;
-   assign dec_tlu_br0_r_pkt.valid = dec_tlu_br0_v_r;
-   assign dec_tlu_br0_r_pkt.way = exu_i0_br_way_r;
-   assign dec_tlu_br0_r_pkt.middle = exu_i0_br_middle_r;
-end // if (pt.BTB_ENABLE==1)
-else begin
-   assign dec_tlu_br0_error_r = '0;
-   assign dec_tlu_br0_start_error_r = '0;
-   assign dec_tlu_br0_v_r = '0;
-   assign dec_tlu_br0_r_pkt  = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-
-   // only expect these in pipe 0
-   assign       ebreak_r     =  (dec_tlu_packet_r.pmu_i0_itype == EBREAK)  & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~dcsr[DCSR_EBREAKM] & ~rfpc_i0_r;
-   assign       ecall_r      =  (dec_tlu_packet_r.pmu_i0_itype == ECALL)   & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign       illegal_r    =  ~dec_tlu_packet_r.legal   & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign       mret_r       =  (dec_tlu_packet_r.pmu_i0_itype == MRET)    & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   // fence_i includes debug only fence_i's
-   assign       fence_i_r    =  (dec_tlu_packet_r.fence_i & dec_tlu_i0_valid_r & ~i0_trigger_hit_r) & ~rfpc_i0_r;
-   assign       ic_perr_r    =  ifu_ic_error_start_f & ~ext_int_freeze_d1 & (~internal_dbg_halt_mode_f | dcsr_single_step_running) & ~internal_pmu_fw_halt_mode_f;
-   assign       iccm_sbecc_r =  ifu_iccm_rd_ecc_single_err_f & ~ext_int_freeze_d1 & (~internal_dbg_halt_mode_f | dcsr_single_step_running) & ~internal_pmu_fw_halt_mode_f;
-   assign       inst_acc_r_raw  =  dec_tlu_packet_r.icaf & dec_tlu_i0_valid_r;
-   assign       inst_acc_r = inst_acc_r_raw & ~rfpc_i0_r & ~i0_trigger_hit_r;
-   assign       inst_acc_second_r = dec_tlu_packet_r.icaf_second;
-
-   assign       ebreak_to_debug_mode_r = (dec_tlu_packet_r.pmu_i0_itype == EBREAK)  & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & dcsr[DCSR_EBREAKM] & ~rfpc_i0_r;
-
-   rvdff #(1)  exctype_wb_ff (.*, .clk(e4e5_clk),
-                                .din (ebreak_to_debug_mode_r   ),
-                                .dout(ebreak_to_debug_mode_r_d1));
-
-   assign dec_tlu_fence_i_r = fence_i_r;
-   //
-   // Exceptions
-   //
-   // - MEPC <- PC
-   // - PC <- MTVEC, assert flush_lower
-   // - MCAUSE <- cause
-   // - MSCAUSE <- secondary cause
-   // - MTVAL <-
-   // - MPIE <- MIE
-   // - MIE <- 0
-   //
-   assign i0_exception_valid_r = (ebreak_r | ecall_r | illegal_r | inst_acc_r) & ~rfpc_i0_r & ~dec_tlu_dbg_halted;
-
-   // Cause:
-   //
-   // 0x2 : illegal
-   // 0x3 : breakpoint
-   // 0xb : Environment call M-mode
-
-
-   assign exc_cause_r[4:0] =  ( ({5{take_ext_int}}        & 5'h0b) |
-                                ({5{take_timer_int}}      & 5'h07) |
-                                ({5{take_soft_int}}       & 5'h03) |
-                                ({5{take_int_timer0_int}} & 5'h1d) |
-                                ({5{take_int_timer1_int}} & 5'h1c) |
-                                ({5{take_ce_int}}         & 5'h1e) |
-                                ({5{illegal_r}}           & 5'h02) |
-                                ({5{ecall_r}}             & 5'h0b) |
-                                ({5{inst_acc_r}}          & 5'h01) |
-                                ({5{ebreak_r | i0_trigger_hit_r}}   & 5'h03) |
-                                ({5{lsu_exc_ma_r & ~lsu_exc_st_r}}  & 5'h04) |
-                                ({5{lsu_exc_acc_r & ~lsu_exc_st_r}} & 5'h05) |
-                                ({5{lsu_exc_ma_r & lsu_exc_st_r}}   & 5'h06) |
-                                ({5{lsu_exc_acc_r & lsu_exc_st_r}}  & 5'h07)
-                                ) & ~{5{take_nmi}};
-
-   //
-   // Interrupts
-   //
-   // exceptions that are committed have already happened and will cause an int at E4 to wait a cycle
-   // or more if MSTATUS[MIE] is cleared.
-   //
-   // -in priority order, highest to lowest
-   // -single cycle window where a csr write to MIE/MSTATUS is at E4 when the other conditions for externals are met.
-   //  Hold off externals for a cycle to make sure we are consistent with what was just written
-   assign mhwakeup_ready =  ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MEIP]   & mie_ns[MIE_MEIE];
-   assign ext_int_ready   = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MEIP]   & mie_ns[MIE_MEIE] & ~ignore_ext_int_due_to_lsu_stall;
-   assign ce_int_ready    = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MCEIP]  & mie_ns[MIE_MCEIE];
-   assign soft_int_ready  = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MSIP]   & mie_ns[MIE_MSIE];
-   assign timer_int_ready = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MTIP]   & mie_ns[MIE_MTIE];
-
-   // MIP for internal timers pulses for 1 clock, resets the timer counter. Mip won't hold past the various stall conditions.
-   assign int_timer0_int_possible = mstatus_mie_ns & mie_ns[MIE_MITIE0];
-   assign int_timer0_int_ready = mip[MIP_MITIP0] & int_timer0_int_possible;
-   assign int_timer1_int_possible = mstatus_mie_ns & mie_ns[MIE_MITIE1];
-   assign int_timer1_int_ready = mip[MIP_MITIP1] & int_timer1_int_possible;
-
-   // Internal timers pulse and reset. If core is PMU/FW halted, the pulse will cause an exit from halt, but won't stick around
-   // Make it sticky, also for 1 cycle stall conditions.
-   assign int_timer_stalled = dec_csr_stall_int_ff | synchronous_flush_r | exc_or_int_valid_r_d1 | mret_r;
-
-   assign int_timer0_int_hold = (int_timer0_int_ready & (pmu_fw_tlu_halted_f | int_timer_stalled)) | (int_timer0_int_possible & int_timer0_int_hold_f & ~interrupt_valid_r & ~take_ext_int_start & ~internal_dbg_halt_mode_f);
-   assign int_timer1_int_hold = (int_timer1_int_ready & (pmu_fw_tlu_halted_f | int_timer_stalled)) | (int_timer1_int_possible & int_timer1_int_hold_f & ~interrupt_valid_r & ~take_ext_int_start & ~internal_dbg_halt_mode_f);
-
-
-   assign internal_dbg_halt_timers = internal_dbg_halt_mode_f & ~dcsr_single_step_running;
-
-
-   assign block_interrupts = ( (internal_dbg_halt_mode & (~dcsr_single_step_running | dec_tlu_i0_valid_r)) | // No ints in db-halt unless we are single stepping
-                               internal_pmu_fw_halt_mode | i_cpu_halt_req_d1 |// No ints in PMU/FW halt. First we exit halt
-                               take_nmi | // NMI is top priority
-                               ebreak_to_debug_mode_r | // Heading to debug mode, hold off ints
-                               synchronous_flush_r | // exception flush this cycle
-                               exc_or_int_valid_r_d1 | // ext/int past cycle (need time for MIE to update)
-                               mret_r |    // mret in progress, for cases were ISR enables ints before mret
-                               ext_int_freeze_d1 // Fast interrupt in progress (optional)
-                               );
-
-
-if (pt.FAST_INTERRUPT_REDIRECT) begin
-
-
-   assign take_ext_int_start = ext_int_ready & ~block_interrupts;
-
-   assign ext_int_freeze = take_ext_int_start | take_ext_int_start_d1 | take_ext_int_start_d2 | take_ext_int_start_d3;
-   assign take_ext_int = take_ext_int_start_d3 & ~|lsu_fir_error[1:0];
-   assign fast_int_meicpct = csr_meicpct & dec_csr_any_unq_d;  // MEICPCT becomes illegal if fast ints are enabled
-
-   assign ignore_ext_int_due_to_lsu_stall = lsu_fastint_stall_any;
-end
-else begin
-   assign take_ext_int_start = 1'b0;
-   assign ext_int_freeze = 1'b0;
-   assign ext_int_freeze_d1 = 1'b0;
-   assign take_ext_int_start_d1 = 1'b0;
-   assign take_ext_int_start_d2 = 1'b0;
-   assign take_ext_int_start_d3 = 1'b0;
-   assign fast_int_meicpct = 1'b0;
-   assign ignore_ext_int_due_to_lsu_stall = 1'b0;
-
-   assign take_ext_int = ext_int_ready & ~block_interrupts;
-end
-
-   assign take_ce_int  = ce_int_ready & ~ext_int_ready & ~block_interrupts;
-   assign take_soft_int = soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_timer_int = timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_int_timer0_int = (int_timer0_int_ready | int_timer0_int_hold_f) & int_timer0_int_possible & ~dec_csr_stall_int_ff &
-                                ~timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_int_timer1_int = (int_timer1_int_ready | int_timer1_int_hold_f) & int_timer1_int_possible & ~dec_csr_stall_int_ff &
-                                ~(int_timer0_int_ready | int_timer0_int_hold_f) & ~timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-
-   assign take_reset = reset_delayed & mpc_reset_run_req;
-   assign take_nmi = nmi_int_detected & ~internal_pmu_fw_halt_mode & (~internal_dbg_halt_mode | (dcsr_single_step_running_f & dcsr[DCSR_STEPIE] & ~dec_tlu_i0_valid_r & ~dcsr_single_step_done_f)) &
-                     ~synchronous_flush_r & ~mret_r & ~take_reset & ~ebreak_to_debug_mode_r & (~ext_int_freeze_d1 | (take_ext_int_start_d3 & |lsu_fir_error[1:0]));
-
-   assign interrupt_valid_r = take_ext_int | take_timer_int | take_soft_int | take_nmi | take_ce_int | take_int_timer0_int | take_int_timer1_int;
-
-
-   // Compute interrupt path:
-   // If vectored async is set in mtvec, flush path for interrupts is MTVEC + (4 * CAUSE);
-   assign vectored_path[31:1]  = {mtvec[30:1], 1'b0} + {25'b0, exc_cause_r[4:0], 1'b0};
-   assign interrupt_path[31:1] = take_nmi ? nmi_vec[31:1] : ((mtvec[0] == 1'b1) ? vectored_path[31:1] : {mtvec[30:1], 1'b0});
-
-   assign sel_npc_r  = lsu_i0_rfnpc_r | fence_i_r | iccm_repair_state_rfnpc | (i_cpu_run_req_d1 & ~interrupt_valid_r) | (rfpc_i0_r & ~dec_tlu_i0_valid_r);
-   assign sel_npc_resume = (i_cpu_run_req_d1 & pmu_fw_tlu_halted_f) | pause_expired_r;
-
-   assign sel_fir_addr = take_ext_int_start_d3 & ~|lsu_fir_error[1:0];
-
-   assign synchronous_flush_r  = i0_exception_valid_r | // exception
-                                 rfpc_i0_r | // rfpc
-                                 lsu_exc_valid_r |  // lsu exception in either pipe 0 or pipe 1
-                                 fence_i_r |  // fence, a rfnpc
-                                 lsu_i0_rfnpc_r | // lsu dccm sb ecc
-                                 iccm_repair_state_rfnpc | // Iccm sb ecc
-                                 debug_resume_req_f | // resume from debug halt, fetch the dpc
-                                 sel_npc_resume |  // resume from pmu/fw halt, or from pause and fetch the NPC
-                                 dec_tlu_wr_pause_r_d1 | // flush at start of pause
-                                 i0_trigger_hit_r; // trigger hit, ebreak or goto debug mode
-
-   assign tlu_flush_lower_r = interrupt_valid_r | mret_r | synchronous_flush_r | take_halt | take_reset | take_ext_int_start;
-
-   assign tlu_flush_path_r[31:1] = take_reset ? rst_vec[31:1] :
-
-                                    ( ({31{sel_fir_addr}} & lsu_fir_addr[31:1]) |
-                                      ({31{~take_nmi & sel_npc_r}} & npc_r[31:1]) |
-                                      ({31{~take_nmi & rfpc_i0_r & dec_tlu_i0_valid_r & ~sel_npc_r}} & dec_tlu_i0_pc_r[31:1]) |
-                                      ({31{interrupt_valid_r & ~sel_fir_addr}} & interrupt_path[31:1]) |
-                                      ({31{(i0_exception_valid_r | lsu_exc_valid_r |
-                                            (i0_trigger_hit_r & ~trigger_hit_dmode_r)) & ~interrupt_valid_r & ~sel_fir_addr}} & {mtvec[30:1],1'b0}) |
-                                      ({31{~take_nmi & mret_r}} & mepc[31:1]) |
-                                      ({31{~take_nmi & debug_resume_req_f}} & dpc[31:1]) |
-                                      ({31{~take_nmi & sel_npc_resume}} & npc_r_d1[31:1]) );
-
-   rvdffpcie #(31)  flush_lower_ff (.*, .en(tlu_flush_lower_r),
-                                 .din({tlu_flush_path_r[31:1]}),
-                                 .dout({tlu_flush_path_r_d1[31:1]}));
-
-   assign dec_tlu_flush_lower_wb = tlu_flush_lower_r_d1;
-   assign dec_tlu_flush_lower_r = tlu_flush_lower_r;
-   assign dec_tlu_flush_path_r[31:1] = tlu_flush_path_r[31:1];
-
-
-   // this is used to capture mepc, etc.
-   assign exc_or_int_valid_r = lsu_exc_valid_r | i0_exception_valid_r | interrupt_valid_r | (i0_trigger_hit_r & ~trigger_hit_dmode_r);
-
-
-   rvdffie #(12)  excinfo_wb_ff (.*,
-                                 .din({interrupt_valid_r, i0_exception_valid_r, exc_or_int_valid_r,
-                                       exc_cause_r[4:0], tlu_i0_commit_cmt & ~illegal_r, i0_trigger_hit_r,
-                                       take_nmi, pause_expired_r }),
-                                 .dout({interrupt_valid_r_d1, i0_exception_valid_r_d1, exc_or_int_valid_r_d1,
-                                        exc_cause_wb[4:0], i0_valid_wb, trigger_hit_r_d1,
-                                        take_nmi_r_d1, pause_expired_wb}));
-
-   //----------------------------------------------------------------------
-   //
-   // CSRs
-   //
-   //----------------------------------------------------------------------
-
-
-   // ----------------------------------------------------------------------
-   // MISA (RO)
-   //  [31:30] XLEN - implementation width, 2'b01 - 32 bits
-   //  [12]    M    - integer mul/div
-   //  [8]     I    - RV32I
-   //  [2]     C    - Compressed extension
-   localparam MISA          = 12'h301;
-
-   // MVENDORID, MARCHID, MIMPID, MHARTID
-   localparam MVENDORID     = 12'hf11;
-   localparam MARCHID       = 12'hf12;
-   localparam MIMPID        = 12'hf13;
-   localparam MHARTID       = 12'hf14;
-
-
-   // ----------------------------------------------------------------------
-   // MSTATUS (RW)
-   // [12:11] MPP  : Prior priv level, always 2'b11, not flopped
-   // [7]     MPIE : Int enable previous [1]
-   // [3]     MIE  : Int enable          [0]
-   localparam MSTATUS       = 12'h300;
-
-
-   //When executing a MRET instruction, supposing MPP holds the value 3, MIE
-   //is set to MPIE; the privilege mode is changed to 3; MPIE is set to 1; and MPP is set to 3
-
-   assign dec_csr_wen_r_mod = dec_csr_wen_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign wr_mstatus_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSTATUS);
-
-   // set this even if we don't go to fwhalt due to debug halt. We committed the inst, so ...
-   assign set_mie_pmu_fw_halt = ~mpmc_b_ns[1] & fw_halt_req;
-
-   assign mstatus_ns[1:0] = ( ({2{~wr_mstatus_r & exc_or_int_valid_r}} & {mstatus[MSTATUS_MIE], 1'b0}) |
-                              ({2{ wr_mstatus_r & exc_or_int_valid_r}} & {dec_csr_wrdata_r[3], 1'b0}) |
-                              ({2{mret_r & ~exc_or_int_valid_r}} & {1'b1, mstatus[1]}) |
-                              ({2{set_mie_pmu_fw_halt}} & {mstatus[1], 1'b1}) |
-                              ({2{wr_mstatus_r & ~exc_or_int_valid_r}} & {dec_csr_wrdata_r[7], dec_csr_wrdata_r[3]}) |
-                              ({2{~wr_mstatus_r & ~exc_or_int_valid_r & ~mret_r & ~set_mie_pmu_fw_halt}} & mstatus[1:0]) );
-
-   // gate MIE if we are single stepping and DCSR[STEPIE] is off
-   assign mstatus_mie_ns = mstatus[MSTATUS_MIE] & (~dcsr_single_step_running_f | dcsr[DCSR_STEPIE]);
-
-   // ----------------------------------------------------------------------
-   // MTVEC (RW)
-   // [31:2] BASE : Trap vector base address
-   // [1] - Reserved, not implemented, reads zero
-   // [0]  MODE : 0 = Direct, 1 = Asyncs are vectored to BASE + (4 * CAUSE)
-   localparam MTVEC         = 12'h305;
-
-   assign wr_mtvec_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTVEC);
-   assign mtvec_ns[30:0] = {dec_csr_wrdata_r[31:2], dec_csr_wrdata_r[0]} ;
-   rvdffe #(31)  mtvec_ff (.*, .en(wr_mtvec_r), .din(mtvec_ns[30:0]), .dout(mtvec[30:0]));
-
-   // ----------------------------------------------------------------------
-   // MIP (RW)
-   //
-   // [30] MCEIP  : (RO) M-Mode Correctable Error interrupt pending
-   // [29] MITIP0 : (RO) M-Mode Internal Timer0 interrupt pending
-   // [28] MITIP1 : (RO) M-Mode Internal Timer1 interrupt pending
-   // [11] MEIP   : (RO) M-Mode external interrupt pending
-   // [7]  MTIP   : (RO) M-Mode timer interrupt pending
-   // [3]  MSIP   : (RO) M-Mode software interrupt pending
-   localparam MIP           = 12'h344;
-
-   assign ce_int = (mdccme_ce_req | miccme_ce_req | mice_ce_req);
-
-   assign mip_ns[5:0] = {ce_int, dec_timer_t0_pulse, dec_timer_t1_pulse, mexintpend, timer_int_sync, soft_int_sync};
-
-   // ----------------------------------------------------------------------
-   // MIE (RW)
-   // [30] MCEIE  : (RO) M-Mode Correctable Error interrupt enable
-   // [29] MITIE0 : (RO) M-Mode Internal Timer0 interrupt enable
-   // [28] MITIE1 : (RO) M-Mode Internal Timer1 interrupt enable
-   // [11] MEIE   : (RW) M-Mode external interrupt enable
-   // [7]  MTIE   : (RW) M-Mode timer interrupt enable
-   // [3]  MSIE   : (RW) M-Mode software interrupt enable
-   localparam MIE           = 12'h304;
-
-   assign wr_mie_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MIE);
-   assign mie_ns[5:0] = wr_mie_r ? {dec_csr_wrdata_r[30:28], dec_csr_wrdata_r[11], dec_csr_wrdata_r[7], dec_csr_wrdata_r[3]} : mie[5:0];
-   rvdff #(6)  mie_ff (.*, .clk(csr_wr_clk), .din(mie_ns[5:0]), .dout(mie[5:0]));
-
-
-   // ----------------------------------------------------------------------
-   // MCYCLEL (RW)
-   // [31:0] : Lower Cycle count
-
-   localparam MCYCLEL       = 12'hb00;
-
-   assign kill_ebreak_count_r = ebreak_to_debug_mode_r & dcsr[DCSR_STOPC];
-
-   assign wr_mcyclel_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCYCLEL);
-
-   assign mcyclel_cout_in = ~(kill_ebreak_count_r | (dec_tlu_dbg_halted & dcsr[DCSR_STOPC]) | dec_tlu_pmu_fw_halted | mcountinhibit[0]);
-
-   // split for power
-   assign {mcyclela_cout, mcyclel_inc[7:0]}  = mcyclel[7:0] +  {7'b0, 1'b1};
-   assign {mcyclel_cout,  mcyclel_inc[31:8]} = mcyclel[31:8] + {23'b0, mcyclela_cout};
-
-   assign mcyclel_ns[31:0] = wr_mcyclel_r ? dec_csr_wrdata_r[31:0] : mcyclel_inc[31:0];
-
-   rvdffe #(24) mcyclel_bff      (.*, .clk(free_l2clk), .en(wr_mcyclel_r | (mcyclela_cout & mcyclel_cout_in)),    .din(mcyclel_ns[31:8]), .dout(mcyclel[31:8]));
-   rvdffe #(8)  mcyclel_aff      (.*, .clk(free_l2clk), .en(wr_mcyclel_r | mcyclel_cout_in),  .din(mcyclel_ns[7:0]),  .dout(mcyclel[7:0]));
-
-   // ----------------------------------------------------------------------
-   // MCYCLEH (RW)
-   // [63:32] : Higher Cycle count
-   // Chained with mcyclel. Note: mcyclel overflow due to a mcycleh write gets ignored.
-
-   localparam MCYCLEH       = 12'hb80;
-
-   assign wr_mcycleh_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCYCLEH);
-
-   assign mcycleh_inc[31:0] = mcycleh[31:0] + {31'b0, mcyclel_cout_f};
-   assign mcycleh_ns[31:0]  = wr_mcycleh_r ? dec_csr_wrdata_r[31:0] : mcycleh_inc[31:0];
-
-   rvdffe #(32)  mcycleh_ff (.*, .clk(free_l2clk), .en(wr_mcycleh_r | mcyclel_cout_f), .din(mcycleh_ns[31:0]), .dout(mcycleh[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MINSTRETL (RW)
-   // [31:0] : Lower Instruction retired count
-   // From the spec "Some CSRs, such as the instructions retired counter, instret, may be modified as side effects
-   // of instruction execution. In these cases, if a CSR access instruction reads a CSR, it reads the
-   // value prior to the execution of the instruction. If a CSR access instruction writes a CSR, the
-   // update occurs after the execution of the instruction. In particular, a value written to instret by
-   // one instruction will be the value read by the following instruction (i.e., the increment of instret
-   // caused by the first instruction retiring happens before the write of the new value)."
-   localparam MINSTRETL     = 12'hb02;
-
-   assign i0_valid_no_ebreak_ecall_r = dec_tlu_i0_valid_r & ~(ebreak_r | ecall_r | ebreak_to_debug_mode_r | illegal_r | mcountinhibit[2]);
-
-   assign wr_minstretl_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MINSTRETL);
-
-   assign {minstretl_couta, minstretl_inc[7:0]} = minstretl[7:0] + {7'b0,1'b1};
-   assign {minstretl_cout, minstretl_inc[31:8]} = minstretl[31:8] + {23'b0, minstretl_couta};
-
-   assign minstret_enable = (i0_valid_no_ebreak_ecall_r & tlu_i0_commit_cmt) | wr_minstretl_r;
-
-   assign minstretl_cout_ns = minstretl_cout & ~wr_minstreth_r & i0_valid_no_ebreak_ecall_r & ~dec_tlu_dbg_halted;
-
-   assign minstretl_ns[31:0] = wr_minstretl_r ? dec_csr_wrdata_r[31:0] : minstretl_inc[31:0];
-   rvdffe #(24)  minstretl_bff (.*, .en(wr_minstretl_r | (minstretl_couta & minstret_enable)),
-                                .din(minstretl_ns[31:8]), .dout(minstretl[31:8]));
-   rvdffe #(8)   minstretl_aff (.*, .en(minstret_enable),
-                                .din(minstretl_ns[7:0]),  .dout(minstretl[7:0]));
-
-
-   assign minstretl_read[31:0] = minstretl[31:0];
-   // ----------------------------------------------------------------------
-   // MINSTRETH (RW)
-   // [63:32] : Higher Instret count
-   // Chained with minstretl. Note: minstretl overflow due to a minstreth write gets ignored.
-
-   localparam MINSTRETH     = 12'hb82;
-
-   assign wr_minstreth_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MINSTRETH);
-
-   assign minstreth_inc[31:0] = minstreth[31:0] + {31'b0, minstretl_cout_f};
-   assign minstreth_ns[31:0]  = wr_minstreth_r ? dec_csr_wrdata_r[31:0] : minstreth_inc[31:0];
-   rvdffe #(32)  minstreth_ff (.*, .en((minstret_enable_f & minstretl_cout_f) | wr_minstreth_r), .din(minstreth_ns[31:0]), .dout(minstreth[31:0]));
-
-   assign minstreth_read[31:0] = minstreth_inc[31:0];
-
-   // ----------------------------------------------------------------------
-   // MSCRATCH (RW)
-   // [31:0] : Scratch register
-   localparam MSCRATCH      = 12'h340;
-
-   assign wr_mscratch_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSCRATCH);
-
-   rvdffe #(32)  mscratch_ff (.*, .en(wr_mscratch_r), .din(dec_csr_wrdata_r[31:0]), .dout(mscratch[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MEPC (RW)
-   // [31:1] : Exception PC
-   localparam MEPC          = 12'h341;
-
-   // NPC
-
-   assign sel_exu_npc_r = ~dec_tlu_dbg_halted & ~tlu_flush_lower_r_d1 & dec_tlu_i0_valid_r;
-   assign sel_flush_npc_r = ~dec_tlu_dbg_halted & tlu_flush_lower_r_d1 & ~dec_tlu_flush_noredir_r_d1;
-   assign sel_hold_npc_r = ~sel_exu_npc_r & ~sel_flush_npc_r;
-
-   assign npc_r[31:1] =  ( ({31{sel_exu_npc_r}} & exu_npc_r[31:1]) |
-                           ({31{~mpc_reset_run_req & reset_delayed}} & rst_vec[31:1]) | // init to reset vector for mpc halt on reset case
-                           ({31{(sel_flush_npc_r)}} & tlu_flush_path_r_d1[31:1]) |
-                           ({31{(sel_hold_npc_r)}} & npc_r_d1[31:1]) );
-
-   rvdffpcie #(31)  npwbc_ff (.*, .en(sel_exu_npc_r | sel_flush_npc_r | reset_delayed), .din(npc_r[31:1]), .dout(npc_r_d1[31:1]));
-
-   // PC has to be captured for exceptions and interrupts. For MRET, we could execute it and then take an
-   // interrupt before the next instruction.
-   assign pc0_valid_r = ~dec_tlu_dbg_halted & dec_tlu_i0_valid_r;
-
-   assign pc_r[31:1]  = ( ({31{ pc0_valid_r}} & dec_tlu_i0_pc_r[31:1]) |
-                          ({31{~pc0_valid_r}} & pc_r_d1[31:1]));
-
-   rvdffpcie #(31)  pwbc_ff (.*, .en(pc0_valid_r), .din(pc_r[31:1]), .dout(pc_r_d1[31:1]));
-
-   assign wr_mepc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEPC);
-
-   assign mepc_ns[31:1] = ( ({31{i0_exception_valid_r | lsu_exc_valid_r | mepc_trigger_hit_sel_pc_r}} & pc_r[31:1]) |
-                            ({31{interrupt_valid_r}} & npc_r[31:1]) |
-                            ({31{wr_mepc_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[31:1]) |
-                            ({31{~wr_mepc_r & ~exc_or_int_valid_r}} & mepc[31:1]) );
-
-
-   rvdffe #(31)  mepc_ff (.*, .en(i0_exception_valid_r | lsu_exc_valid_r | mepc_trigger_hit_sel_pc_r | interrupt_valid_r | wr_mepc_r), .din(mepc_ns[31:1]), .dout(mepc[31:1]));
-
-   // ----------------------------------------------------------------------
-   // MCAUSE (RW)
-   // [31:0] : Exception Cause
-   localparam MCAUSE        = 12'h342;
-
-   assign wr_mcause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCAUSE);
-   assign mcause_sel_nmi_store = exc_or_int_valid_r & take_nmi & nmi_lsu_store_type;
-   assign mcause_sel_nmi_load = exc_or_int_valid_r & take_nmi & nmi_lsu_load_type;
-   assign mcause_sel_nmi_ext = exc_or_int_valid_r & take_nmi & take_ext_int_start_d3 & |lsu_fir_error[1:0] & ~nmi_int_detected_f;
-   // FIR value decoder
-   // 0 –no error
-   // 1 –uncorrectable ecc  => f000_1000
-   // 2 –dccm region access error => f000_1001
-   // 3 –non dccm region access error => f000_1002
-   assign mcause_fir_error_type[1:0] = {&lsu_fir_error[1:0], lsu_fir_error[1] & ~lsu_fir_error[0]};
-
-   assign mcause_ns[31:0] = ( ({32{mcause_sel_nmi_store}} & {32'hf000_0000}) |
-                              ({32{mcause_sel_nmi_load}} & {32'hf000_0001}) |
-                              ({32{mcause_sel_nmi_ext}} & {28'hf000_100, 2'b0, mcause_fir_error_type[1:0]}) |
-                              ({32{exc_or_int_valid_r & ~take_nmi}} & {interrupt_valid_r, 26'b0, exc_cause_r[4:0]}) |
-                              ({32{wr_mcause_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[31:0]) |
-                              ({32{~wr_mcause_r & ~exc_or_int_valid_r}} & mcause[31:0]) );
-
-   rvdffe #(32)  mcause_ff (.*, .en(exc_or_int_valid_r | wr_mcause_r), .din(mcause_ns[31:0]), .dout(mcause[31:0]));
-   // ----------------------------------------------------------------------
-   // MSCAUSE (RW)
-   // [2:0] : Secondary exception Cause
-   localparam MSCAUSE       = 12'h7ff;
-
-   assign wr_mscause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSCAUSE);
-
-   assign ifu_mscause[3:0]  =  (dec_tlu_packet_r.icaf_type[1:0] == 2'b00) ? 4'b1001 :
-                               {2'b00 , dec_tlu_packet_r.icaf_type[1:0]} ;
-
-   assign mscause_type[3:0] = ( ({4{lsu_i0_exc_r}} & lsu_error_pkt_r.mscause[3:0]) |
-                                ({4{i0_trigger_hit_r}} & 4'b0001) |
-                                ({4{ebreak_r}} & 4'b0010) |
-                                ({4{inst_acc_r}} & ifu_mscause[3:0])
-                                );
-
-   assign mscause_ns[3:0] = ( ({4{exc_or_int_valid_r}} & mscause_type[3:0]) |
-                              ({4{ wr_mscause_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[3:0]) |
-                              ({4{~wr_mscause_r & ~exc_or_int_valid_r}} & mscause[3:0])
-                             );
-
-   rvdff #(4)  mscause_ff (.*, .clk(e4e5_int_clk), .din(mscause_ns[3:0]), .dout(mscause[3:0]));
-   // ----------------------------------------------------------------------
-   // MTVAL (RW)
-   // [31:0] : Exception address if relevant
-   localparam MTVAL         = 12'h343;
-
-   assign wr_mtval_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTVAL);
-   assign mtval_capture_pc_r = exc_or_int_valid_r & (ebreak_r | (inst_acc_r & ~inst_acc_second_r) | mepc_trigger_hit_sel_pc_r) & ~take_nmi;
-   assign mtval_capture_pc_plus2_r = exc_or_int_valid_r & (inst_acc_r & inst_acc_second_r) & ~take_nmi;
-   assign mtval_capture_inst_r = exc_or_int_valid_r & illegal_r & ~take_nmi;
-   assign mtval_capture_lsu_r = exc_or_int_valid_r & lsu_exc_valid_r & ~take_nmi;
-   assign mtval_clear_r = exc_or_int_valid_r & ~mtval_capture_pc_r & ~mtval_capture_inst_r & ~mtval_capture_lsu_r & ~mepc_trigger_hit_sel_pc_r;
-
-
-   assign mtval_ns[31:0] = (({32{mtval_capture_pc_r}} & {pc_r[31:1], 1'b0}) |
-                            ({32{mtval_capture_pc_plus2_r}} & {pc_r[31:1] + 31'b1, 1'b0}) |
-                            ({32{mtval_capture_inst_r}} & dec_illegal_inst[31:0]) |
-                            ({32{mtval_capture_lsu_r}} & lsu_error_pkt_addr_r[31:0]) |
-                            ({32{wr_mtval_r & ~interrupt_valid_r}} & dec_csr_wrdata_r[31:0]) |
-                            ({32{~take_nmi & ~wr_mtval_r & ~mtval_capture_pc_r & ~mtval_capture_inst_r & ~mtval_clear_r & ~mtval_capture_lsu_r}} & mtval[31:0]) );
-
-
-   rvdffe #(32)  mtval_ff (.*, .en(tlu_flush_lower_r | wr_mtval_r), .din(mtval_ns[31:0]), .dout(mtval[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MCGC (RW) Clock gating control
-   // [31:10]: Reserved, reads 0x0
-   // [9]    : picio_clk_override
-   // [7]    : dec_clk_override
-   // [6]    : Unused
-   // [5]    : ifu_clk_override
-   // [4]    : lsu_clk_override
-   // [3]    : bus_clk_override
-   // [2]    : pic_clk_override
-   // [1]    : dccm_clk_override
-   // [0]    : icm_clk_override
-   //
-   localparam MCGC          = 12'h7f8;
-   assign wr_mcgc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCGC);
-
-   assign mcgc_ns[9:0] = wr_mcgc_r ? {~dec_csr_wrdata_r[9], dec_csr_wrdata_r[8:0]} : mcgc_int[9:0];
-   rvdffe #(10)  mcgc_ff (.*, .en(wr_mcgc_r), .din(mcgc_ns[9:0]), .dout(mcgc_int[9:0]));
-
-   assign mcgc[9:0] = {~mcgc_int[9], mcgc_int[8:0]};
-
-   assign dec_tlu_picio_clk_override= mcgc[9];
-   assign dec_tlu_misc_clk_override = mcgc[8];
-   assign dec_tlu_dec_clk_override  = mcgc[7];
-   //sign dec_tlu_exu_clk_override  = mcgc[6];
-   assign dec_tlu_ifu_clk_override  = mcgc[5];
-   assign dec_tlu_lsu_clk_override  = mcgc[4];
-   assign dec_tlu_bus_clk_override  = mcgc[3];
-   assign dec_tlu_pic_clk_override  = mcgc[2];
-   assign dec_tlu_dccm_clk_override = mcgc[1];
-   assign dec_tlu_icm_clk_override  = mcgc[0];
-
-   // ----------------------------------------------------------------------
-   // MFDC (RW) Feature Disable Control
-   // [31:19] : Reserved, reads 0x0
-   // [18:16] : DMA QoS Prty
-   // [15:13] : Reserved, reads 0x0
-   // [12]   : Disable trace
-   // [11]   : Disable external load forwarding
-   // [10]   : Disable dual issue
-   // [9]    : Disable pic multiple ints
-   // [8]    : Disable core ecc
-   // [7]    : Disable secondary alu?s
-   // [6]    : Unused, 0x0
-   // [5]    : Disable non-blocking loads/divides
-   // [4]    : Disable fast divide
-   // [3]    : Disable branch prediction and return stack
-   // [2]    : Disable write buffer coalescing
-   // [1]    : Disable load misses that bypass the write buffer
-   // [0]    : Disable pipelining - Enable single instruction execution
-   //
-   localparam MFDC          = 12'h7f9;
-
-   assign wr_mfdc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDC);
-
-   rvdffe #(16)  mfdc_ff (.*, .en(wr_mfdc_r), .din({mfdc_ns[15:0]}), .dout(mfdc_int[15:0]));
-
-   // flip poweron value of bit 6 for AXI build
-   if(pt.BUILD_AXI4==1) begin : axi4
-      // flip poweron valid of bit 12
-         assign mfdc_ns[15:0] = {~dec_csr_wrdata_r[18:16], dec_csr_wrdata_r[12], dec_csr_wrdata_r[11:7], ~dec_csr_wrdata_r[6], dec_csr_wrdata_r[5:0]};
-         assign mfdc[18:0] = {~mfdc_int[15:13], 3'b0, mfdc_int[12], mfdc_int[11:7], ~mfdc_int[6], mfdc_int[5:0]};
-   end
-   else begin
-      // flip poweron valid of bit 12
-         assign mfdc_ns[15:0] = {~dec_csr_wrdata_r[18:16],dec_csr_wrdata_r[12:0]};
-         assign mfdc[18:0] = {~mfdc_int[15:13], 3'b0, mfdc_int[12:0]};
-   end
-
-
-   assign dec_tlu_dma_qos_prty[2:0] = mfdc[18:16];
-   assign dec_tlu_trace_disable = mfdc[12];
-   assign dec_tlu_external_ldfwd_disable = mfdc[11];
-   assign dec_tlu_core_ecc_disable = 1'b1;//mfdc[8];
-   assign dec_tlu_sideeffect_posted_disable = mfdc[6];
-   assign dec_tlu_bpred_disable = mfdc[3];
-   assign dec_tlu_wb_coalescing_disable = mfdc[2];
-   assign dec_tlu_pipelining_disable = mfdc[0];
-
-   // ----------------------------------------------------------------------
-   // MCPC (RW) Pause counter
-   // [31:0] : Reads 0x0, decs in the wb register in decode_ctl
-
-   assign dec_tlu_wr_pause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCPC) & ~interrupt_valid_r & ~take_ext_int_start;
-
-   // ----------------------------------------------------------------------
-   // MRAC (RW)
-   // [31:0] : Region Access Control Register, 16 regions, {side_effect, cachable} pairs
-   localparam MRAC          = 12'h7c0;
-
-   assign wr_mrac_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MRAC);
-
-   // prevent pairs of 0x11, side_effect and cacheable
-   assign mrac_in[31:0] = {dec_csr_wrdata_r[31], dec_csr_wrdata_r[30] & ~dec_csr_wrdata_r[31],
-                           dec_csr_wrdata_r[29], dec_csr_wrdata_r[28] & ~dec_csr_wrdata_r[29],
-                           dec_csr_wrdata_r[27], dec_csr_wrdata_r[26] & ~dec_csr_wrdata_r[27],
-                           dec_csr_wrdata_r[25], dec_csr_wrdata_r[24] & ~dec_csr_wrdata_r[25],
-                           dec_csr_wrdata_r[23], dec_csr_wrdata_r[22] & ~dec_csr_wrdata_r[23],
-                           dec_csr_wrdata_r[21], dec_csr_wrdata_r[20] & ~dec_csr_wrdata_r[21],
-                           dec_csr_wrdata_r[19], dec_csr_wrdata_r[18] & ~dec_csr_wrdata_r[19],
-                           dec_csr_wrdata_r[17], dec_csr_wrdata_r[16] & ~dec_csr_wrdata_r[17],
-                           dec_csr_wrdata_r[15], dec_csr_wrdata_r[14] & ~dec_csr_wrdata_r[15],
-                           dec_csr_wrdata_r[13], dec_csr_wrdata_r[12] & ~dec_csr_wrdata_r[13],
-                           dec_csr_wrdata_r[11], dec_csr_wrdata_r[10] & ~dec_csr_wrdata_r[11],
-                           dec_csr_wrdata_r[9], dec_csr_wrdata_r[8] & ~dec_csr_wrdata_r[9],
-                           dec_csr_wrdata_r[7], dec_csr_wrdata_r[6] & ~dec_csr_wrdata_r[7],
-                           dec_csr_wrdata_r[5], dec_csr_wrdata_r[4] & ~dec_csr_wrdata_r[5],
-                           dec_csr_wrdata_r[3], dec_csr_wrdata_r[2] & ~dec_csr_wrdata_r[3],
-                           dec_csr_wrdata_r[1], dec_csr_wrdata_r[0] & ~dec_csr_wrdata_r[1]};
-
-   rvdffe #(32)  mrac_ff (.*, .en(wr_mrac_r), .din(mrac_in[31:0]), .dout(mrac[31:0]));
-
-   // drive to LSU/IFU
-   assign dec_tlu_mrac_ff[31:0] = mrac[31:0];
-
-   // ----------------------------------------------------------------------
-   // MDEAU (WAR0)
-   // [31:0] : Dbus Error Address Unlock register
-   //
-   localparam MDEAU         = 12'hbc0;
-
-   assign wr_mdeau_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MDEAU);
-
-
-   // ----------------------------------------------------------------------
-   // MDSEAC (R)
-   // [31:0] : Dbus Store Error Address Capture register
-   //
-   localparam MDSEAC        = 12'hfc0;
-
-   // only capture error bus if the MDSEAC reg is not locked
-   assign mdseac_locked_ns = mdseac_en | (mdseac_locked_f & ~wr_mdeau_r);
-
-   assign mdseac_en = (lsu_imprecise_error_store_any | lsu_imprecise_error_load_any) & ~nmi_int_detected_f & ~mdseac_locked_f;
-
-   rvdffe #(32)  mdseac_ff (.*, .en(mdseac_en), .din(lsu_imprecise_error_addr_any[31:0]), .dout(mdseac[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MPMC (R0W1)
-   // [0] : FW halt
-   // [1] : Set MSTATUS[MIE] on halt
-
-   localparam MPMC          = 12'h7c6;
-
-   assign wr_mpmc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MPMC);
-
-   // allow the cycle of the dbg halt flush that contains the wr_mpmc_r to
-   // set the mstatus bit potentially, use delayed version of internal dbg halt.
-   assign fw_halt_req = wr_mpmc_r & dec_csr_wrdata_r[0] & ~internal_dbg_halt_mode_f2 & ~ext_int_freeze_d1;
-
-   assign fw_halted_ns = (fw_halt_req | fw_halted) & ~set_mie_pmu_fw_halt;
-   assign mpmc_b_ns[1] = wr_mpmc_r ? ~dec_csr_wrdata_r[1] : ~mpmc[1];
-   rvdff #(1)  mpmc_ff (.*, .clk(csr_wr_clk), .din(mpmc_b_ns[1]), .dout(mpmc_b[1]));
-   assign mpmc[1] = ~mpmc_b[1];
-
-   // ----------------------------------------------------------------------
-   // MICECT (I-Cache error counter/threshold)
-   // [31:27] : Icache parity error threshold
-   // [26:0]  : Icache parity error count
-   localparam MICECT        = 12'h7f0;
-
-   assign csr_sat[31:27] = (dec_csr_wrdata_r[31:27] > 5'd26) ? 5'd26 : dec_csr_wrdata_r[31:27];
-
-   assign wr_micect_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MICECT);
-   assign micect_inc[26:0] = micect[26:0] + {26'b0, ic_perr_r};
-   assign micect_ns =  wr_micect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {micect[31:27], micect_inc[26:0]};
-
-   rvdffe #(32)  micect_ff (.*, .en(wr_micect_r | ic_perr_r), .din(micect_ns[31:0]), .dout(micect[31:0]));
-
-   assign mice_ce_req = |({32'hffffffff << micect[31:27]} & {5'b0, micect[26:0]});
-
-   // ----------------------------------------------------------------------
-   // MICCMECT (ICCM error counter/threshold)
-   // [31:27] : ICCM parity error threshold
-   // [26:0]  : ICCM parity error count
-   localparam MICCMECT      = 12'h7f1;
-
-   assign wr_miccmect_r     = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MICCMECT);
-   assign miccmect_inc[26:0] = miccmect[26:0] + {26'b0, iccm_sbecc_r | iccm_dma_sb_error};
-   assign miccmect_ns        = wr_miccmect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {miccmect[31:27], miccmect_inc[26:0]};
-
-   rvdffe #(32)  miccmect_ff (.*, .clk(free_l2clk), .en(wr_miccmect_r | iccm_sbecc_r | iccm_dma_sb_error), .din(miccmect_ns[31:0]), .dout(miccmect[31:0]));
-
-   assign miccme_ce_req = |({32'hffffffff << miccmect[31:27]} & {5'b0, miccmect[26:0]});
-
-   // ----------------------------------------------------------------------
-   // MDCCMECT (DCCM error counter/threshold)
-   // [31:27] : DCCM parity error threshold
-   // [26:0]  : DCCM parity error count
-   localparam MDCCMECT      = 12'h7f2;
-
-   assign wr_mdccmect_r     = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MDCCMECT);
-   assign mdccmect_inc[26:0] = mdccmect[26:0] + {26'b0, lsu_single_ecc_error_r_d1};
-   assign mdccmect_ns        = wr_mdccmect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {mdccmect[31:27], mdccmect_inc[26:0]};
-
-   rvdffe #(32)  mdccmect_ff (.*, .clk(free_l2clk), .en(wr_mdccmect_r | lsu_single_ecc_error_r_d1), .din(mdccmect_ns[31:0]), .dout(mdccmect[31:0]));
-
-   assign mdccme_ce_req = |({32'hffffffff << mdccmect[31:27]} & {5'b0, mdccmect[26:0]});
-
-
-   // ----------------------------------------------------------------------
-   // MFDHT (Force Debug Halt Threshold)
-   // [5:1] : Halt timeout threshold (power of 2)
-   //   [0] : Halt timeout enabled
-   localparam MFDHT         = 12'h7ce;
-
-   assign wr_mfdht_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDHT);
-
-   assign mfdht_ns[5:0] = wr_mfdht_r ? dec_csr_wrdata_r[5:0] : mfdht[5:0];
-
-   rvdffs #(6)  mfdht_ff (.*, .clk(csr_wr_clk), .en(wr_mfdht_r), .din(mfdht_ns[5:0]), .dout(mfdht[5:0]));
-
-    // ----------------------------------------------------------------------
-   // MFDHS(RW)
-   // [1] : LSU operation pending when debug halt threshold reached
-   // [0] : IFU operation pending when debug halt threshold reached
-
-   localparam MFDHS         = 12'h7cf;
-
-   assign wr_mfdhs_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDHS);
-
-   assign mfdhs_ns[1:0] = wr_mfdhs_r ? dec_csr_wrdata_r[1:0] : ((dbg_tlu_halted & ~dbg_tlu_halted_f) ? {~lsu_idle_any_f, ~ifu_miss_state_idle_f} : mfdhs[1:0]);
-
-   rvdffs #(2)  mfdhs_ff (.*, .clk(free_clk), .en(wr_mfdhs_r | dbg_tlu_halted), .din(mfdhs_ns[1:0]), .dout(mfdhs[1:0]));
-
-   assign force_halt_ctr[31:0] = debug_halt_req_f ? (force_halt_ctr_f[31:0] + 32'b1) : (dbg_tlu_halted_f ? 32'b0 : force_halt_ctr_f[31:0]);
-
-   rvdffe #(32)  forcehaltctr_ff (.*, .en(mfdht[0]), .din(force_halt_ctr[31:0]), .dout(force_halt_ctr_f[31:0]));
-
-   assign force_halt = mfdht[0] & |(force_halt_ctr_f[31:0] & (32'hffffffff << mfdht[5:1]));
-
-
-   // ----------------------------------------------------------------------
-   // MEIVT (External Interrupt Vector Table (R/W))
-   // [31:10]: Base address (R/W)
-   // [9:0]  : Reserved, reads 0x0
-   localparam MEIVT         = 12'hbc8;
-
-   assign wr_meivt_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEIVT);
-
-   rvdffe #(22)  meivt_ff (.*, .en(wr_meivt_r), .din(dec_csr_wrdata_r[31:10]), .dout(meivt[31:10]));
-
-
-   // ----------------------------------------------------------------------
-   // MEIHAP (External Interrupt Handler Access Pointer (R))
-   // [31:10]: Base address (R/W)
-   // [9:2]  : ClaimID (R)
-   // [1:0]  : Reserved, 0x0
-   localparam MEIHAP        = 12'hfc8;
-
-   assign wr_meihap_r = wr_meicpct_r;
-
-   rvdffe #(8)  meihap_ff (.*, .en(wr_meihap_r), .din(pic_claimid[7:0]), .dout(meihap[9:2]));
-
-   assign dec_tlu_meihap[31:2] = {meivt[31:10], meihap[9:2]};
-   // ----------------------------------------------------------------------
-   // MEICURPL (R/W)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : CURRPRI - Priority level of current interrupt service routine (R/W)
-   localparam MEICURPL      = 12'hbcc;
-
-   assign wr_meicurpl_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICURPL);
-   assign meicurpl_ns[3:0] = wr_meicurpl_r ? dec_csr_wrdata_r[3:0] : meicurpl[3:0];
-
-   rvdff #(4)  meicurpl_ff (.*, .clk(csr_wr_clk), .din(meicurpl_ns[3:0]), .dout(meicurpl[3:0]));
-
-   // PIC needs this reg
-   assign dec_tlu_meicurpl[3:0] = meicurpl[3:0];
-
-
-   // ----------------------------------------------------------------------
-   // MEICIDPL (R/W)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : External Interrupt Claim ID's Priority Level Register
-   localparam MEICIDPL      = 12'hbcb;
-
-   assign wr_meicidpl_r = (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICIDPL)) | take_ext_int_start;
-
-   assign meicidpl_ns[3:0] = wr_meicpct_r ? pic_pl[3:0] : (wr_meicidpl_r ? dec_csr_wrdata_r[3:0] : meicidpl[3:0]);
-
-
-   // ----------------------------------------------------------------------
-   // MEICPCT (Capture CLAIMID in MEIHAP and PL in MEICIDPL
-   // [31:1] : Reserved (read 0x0)
-   // [0]    : Capture (W1, Read 0)
-   localparam MEICPCT       = 12'hbca;
-
-   assign wr_meicpct_r = (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICPCT)) | take_ext_int_start;
-
-   // ----------------------------------------------------------------------
-   // MEIPT (External Interrupt Priority Threshold)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : PRITHRESH
-   localparam MEIPT         = 12'hbc9;
-
-   assign wr_meipt_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEIPT);
-   assign meipt_ns[3:0] = wr_meipt_r ? dec_csr_wrdata_r[3:0] : meipt[3:0];
-
-   rvdff #(4)  meipt_ff (.*, .clk(csr_wr_clk), .din(meipt_ns[3:0]), .dout(meipt[3:0]));
-
-   // to PIC
-   assign dec_tlu_meipt[3:0] = meipt[3:0];
-   // ----------------------------------------------------------------------
-   // DCSR (R/W) (Only accessible in debug mode)
-   // [31:28] : xdebugver (hard coded to 0x4) RO
-   // [27:16] : 0x0, reserved
-   // [15]    : ebreakm
-   // [14]    : 0x0, reserved
-   // [13]    : ebreaks (0x0 for this core)
-   // [12]    : ebreaku (0x0 for this core)
-   // [11]    : stepie
-   // [10]    : stopcount
-   // [9]     : 0x0 //stoptime
-   // [8:6]   : cause (RO)
-   // [5:4]   : 0x0, reserved
-   // [3]     : nmip
-   // [2]     : step
-   // [1:0]   : prv (0x3 for this core)
-   //
-   localparam DCSR          = 12'h7b0;
-
-   // RV has clarified that 'priority 4' in the spec means top priority.
-   // 4. single step. 3. Debugger request. 2. Ebreak. 1. Trigger.
-
-   // RV debug spec indicates a cause priority change for trigger hits during single step.
-   assign trigger_hit_for_dscr_cause_r_d1 = trigger_hit_dmode_r_d1 | (trigger_hit_r_d1 & dcsr_single_step_done_f);
-
-   assign dcsr_cause[8:6] = ( ({3{dcsr_single_step_done_f & ~ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1 & ~debug_halt_req}} & 3'b100) |
-                              ({3{debug_halt_req & ~ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1}} &  3'b011) |
-                              ({3{ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1}} &  3'b001) |
-                              ({3{trigger_hit_for_dscr_cause_r_d1}} & 3'b010));
-
-   assign wr_dcsr_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DCSR);
-
-
-
-  // Multiple halt enter requests can happen before we are halted.
-  // We have to continue to upgrade based on dcsr_cause priority but we can't downgrade.
-   assign dcsr_cause_upgradeable = internal_dbg_halt_mode_f & (dcsr[8:6] == 3'b011);
-   assign enter_debug_halt_req_le = enter_debug_halt_req & (~dbg_tlu_halted | dcsr_cause_upgradeable);
-
-   assign nmi_in_debug_mode = nmi_int_detected_f & internal_dbg_halt_mode_f;
-   assign dcsr_ns[15:2] = enter_debug_halt_req_le ? {dcsr[15:9], dcsr_cause[8:6], dcsr[5:2]} :
-                          (wr_dcsr_r ? {dec_csr_wrdata_r[15], 3'b0, dec_csr_wrdata_r[11:10], 1'b0, dcsr[8:6], 2'b00, nmi_in_debug_mode | dcsr[3], dec_csr_wrdata_r[2]} :
-                           {dcsr[15:4], nmi_in_debug_mode, dcsr[2]});
-
-   rvdffe #(14)  dcsr_ff (.*, .clk(free_l2clk), .en(enter_debug_halt_req_le | wr_dcsr_r | internal_dbg_halt_mode | take_nmi), .din(dcsr_ns[15:2]), .dout(dcsr[15:2]));
-
-   // ----------------------------------------------------------------------
-   // DPC (R/W) (Only accessible in debug mode)
-   // [31:0] : Debug PC
-   localparam DPC           = 12'h7b1;
-
-   assign wr_dpc_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DPC);
-   assign dpc_capture_npc = dbg_tlu_halted & ~dbg_tlu_halted_f & ~request_debug_mode_done;
-   assign dpc_capture_pc = request_debug_mode_r;
-
-   assign dpc_ns[31:1] = ( ({31{~dpc_capture_pc & ~dpc_capture_npc & wr_dpc_r}} & dec_csr_wrdata_r[31:1]) |
-                           ({31{dpc_capture_pc}} & pc_r[31:1]) |
-                           ({31{~dpc_capture_pc & dpc_capture_npc}} & npc_r[31:1]) );
-
-   rvdffe #(31)  dpc_ff (.*, .en(wr_dpc_r | dpc_capture_pc | dpc_capture_npc), .din(dpc_ns[31:1]), .dout(dpc[31:1]));
-
-   // ----------------------------------------------------------------------
-   // DICAWICS (R/W) (Only accessible in debug mode)
-   // [31:25] : Reserved
-   // [24]    : Array select, 0 is data, 1 is tag
-   // [23:22] : Reserved
-   // [21:20] : Way select
-   // [19:17] : Reserved
-   // [16:3]  : Index
-   // [2:0]   : Reserved
-   localparam DICAWICS      = 12'h7c8;
-
-   assign dicawics_ns[16:0] = {dec_csr_wrdata_r[24], dec_csr_wrdata_r[21:20], dec_csr_wrdata_r[16:3]};
-   assign wr_dicawics_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAWICS);
-
-   rvdffe #(17)  dicawics_ff (.*, .en(wr_dicawics_r), .din(dicawics_ns[16:0]), .dout(dicawics[16:0]));
-
-   // ----------------------------------------------------------------------
-   // DICAD0 (R/W) (Only accessible in debug mode)
-   //
-   // If dicawics[array] is 0
-   // [31:0]  : inst data
-   //
-   // If dicawics[array] is 1
-   // [31:16] : Tag
-   // [15:7]  : Reserved
-   // [6:4]   : LRU
-   // [3:1]   : Reserved
-   // [0]     : Valid
-   localparam DICAD0        = 12'h7c9;
-
-   assign dicad0_ns[31:0] = wr_dicad0_r ? dec_csr_wrdata_r[31:0] : ifu_ic_debug_rd_data[31:0];
-
-   assign wr_dicad0_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD0);
-
-   rvdffe #(32)  dicad0_ff (.*, .en(wr_dicad0_r | ifu_ic_debug_rd_data_valid), .din(dicad0_ns[31:0]), .dout(dicad0[31:0]));
-
-   // ----------------------------------------------------------------------
-   // DICAD0H (R/W) (Only accessible in debug mode)
-   //
-   // If dicawics[array] is 0
-   // [63:32]  : inst data
-   //
-   localparam DICAD0H       = 12'h7cc;
-
-   assign dicad0h_ns[31:0] = wr_dicad0h_r ? dec_csr_wrdata_r[31:0] : ifu_ic_debug_rd_data[63:32];
-
-   assign wr_dicad0h_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD0H);
-
-   rvdffe #(32)  dicad0h_ff (.*, .en(wr_dicad0h_r | ifu_ic_debug_rd_data_valid), .din(dicad0h_ns[31:0]), .dout(dicad0h[31:0]));
-
-
-if (pt.ICACHE_ECC == 1) begin
-   // ----------------------------------------------------------------------
-   // DICAD1 (R/W) (Only accessible in debug mode)
-   // [6:0]     : ECC
-   localparam DICAD1        = 12'h7ca;
-
-   assign dicad1_ns[6:0] = wr_dicad1_r ? dec_csr_wrdata_r[6:0] : ifu_ic_debug_rd_data[70:64];
-
-   assign wr_dicad1_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD1);
-
-   rvdffe #(.WIDTH(7), .OVERRIDE(1))  dicad1_ff (.*, .en(wr_dicad1_r | ifu_ic_debug_rd_data_valid), .din(dicad1_ns[6:0]), .dout(dicad1_raw[6:0]));
-
-   assign dicad1[31:0] = {25'b0, dicad1_raw[6:0]};
-
-end
-else begin
-   // ----------------------------------------------------------------------
-   // DICAD1 (R/W) (Only accessible in debug mode)
-   // [3:0]     : Parity
-   localparam DICAD1        = 12'h7ca;
-
-   assign dicad1_ns[3:0] = wr_dicad1_r ? dec_csr_wrdata_r[3:0] : ifu_ic_debug_rd_data[67:64];
-
-   assign wr_dicad1_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD1);
-
-   rvdffs #(4)  dicad1_ff (.*, .clk(free_clk), .en(wr_dicad1_r | ifu_ic_debug_rd_data_valid), .din(dicad1_ns[3:0]), .dout(dicad1_raw[3:0]));
-
-   assign dicad1[31:0] = {28'b0, dicad1_raw[3:0]};
-end
-   // ----------------------------------------------------------------------
-   // DICAGO (R/W) (Only accessible in debug mode)
-   // [0]     : Go
-   localparam DICAGO        = 12'h7cb;
-
-if (pt.ICACHE_ECC == 1)
-   assign dec_tlu_ic_diag_pkt.icache_wrdata[70:0] = {      dicad1[6:0], dicad0h[31:0], dicad0[31:0]};
-else
-   assign dec_tlu_ic_diag_pkt.icache_wrdata[70:0] = {3'b0, dicad1[3:0], dicad0h[31:0], dicad0[31:0]};
-
-
-   assign dec_tlu_ic_diag_pkt.icache_dicawics[16:0] = dicawics[16:0];
-
-   assign icache_rd_valid = allow_dbg_halt_csr_write & dec_csr_any_unq_d & dec_i0_decode_d & ~dec_csr_wen_unq_d & (dec_csr_rdaddr_d[11:0] == DICAGO);
-   assign icache_wr_valid = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAGO);
-
-
-   assign dec_tlu_ic_diag_pkt.icache_rd_valid = icache_rd_valid_f;
-   assign dec_tlu_ic_diag_pkt.icache_wr_valid = icache_wr_valid_f;
-
-   // ----------------------------------------------------------------------
-   // MTSEL (R/W)
-   // [1:0] : Trigger select : 00, 01, 10 are data/address triggers. 11 is inst count
-   localparam MTSEL         = 12'h7a0;
-
-   assign wr_mtsel_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTSEL);
-   assign mtsel_ns[1:0] = wr_mtsel_r ? {dec_csr_wrdata_r[1:0]} : mtsel[1:0];
-
-   rvdff #(2)  mtsel_ff (.*, .clk(csr_wr_clk), .din(mtsel_ns[1:0]), .dout(mtsel[1:0]));
-
-   // ----------------------------------------------------------------------
-   // MTDATA1 (R/W)
-   // [31:0] : Trigger Data 1
-   localparam MTDATA1       = 12'h7a1;
-
-   // for triggers 0, 1, 2 and 3 aka Match Control
-   // [31:28] : type, hard coded to 0x2
-   // [27]    : dmode
-   // [26:21] : hard coded to 0x1f
-   // [20]    : hit
-   // [19]    : select (0 - address, 1 - data)
-   // [18]    : timing, always 'before', reads 0x0
-   // [17:12] : action, bits  [17:13] not implemented and reads 0x0
-   // [11]    : chain
-   // [10:7]  : match, bits [10:8] not implemented and reads 0x0
-   // [6]     : M
-   // [5:3]   : not implemented, reads 0x0
-   // [2]     : execute
-   // [1]     : store
-   // [0]     : load
-   //
-   // decoder ring
-   // [27]    : => 9
-   // [20]    : => 8
-   // [19]    : => 7
-   // [12]    : => 6
-   // [11]    : => 5
-   // [7]     : => 4
-   // [6]     : => 3
-   // [2]     : => 2
-   // [1]     : => 1
-   // [0]     : => 0
-
-
-   // don't allow setting load-data.
-   assign tdata_load = dec_csr_wrdata_r[0] & ~dec_csr_wrdata_r[19];
-   // don't allow setting execute-data.
-   assign tdata_opcode = dec_csr_wrdata_r[2] & ~dec_csr_wrdata_r[19];
-   // don't allow clearing DMODE and action=1
-   assign tdata_action = (dec_csr_wrdata_r[27] & dbg_tlu_halted_f) & dec_csr_wrdata_r[12];
-
-   // Chain bit has conditions: WARL for triggers without chains. Force to zero if dmode is 0 but next trigger dmode is 1.
-   assign tdata_chain = mtsel[0] ? 1'b0 : // triggers 1 and 3 chain bit is always zero
-                        mtsel[1] ?  dec_csr_wrdata_r[11] & ~(mtdata1_t3[MTDATA1_DMODE] & ~dec_csr_wrdata_r[27]) : // trigger 2
-                                    dec_csr_wrdata_r[11] & ~(mtdata1_t1[MTDATA1_DMODE] & ~dec_csr_wrdata_r[27]);  // trigger 0
-
-   // Kill mtdata1 write if dmode=1 but prior trigger has dmode=0/chain=1. Only applies to T1 and T3
-   assign tdata_kill_write = mtsel[1] ? dec_csr_wrdata_r[27] & (~mtdata1_t2[MTDATA1_DMODE] & mtdata1_t2[MTDATA1_CHAIN]) : // trigger 3
-                                        dec_csr_wrdata_r[27] & (~mtdata1_t0[MTDATA1_DMODE] & mtdata1_t0[MTDATA1_CHAIN]) ; // trigger 1
-
-
-   assign tdata_wrdata_r[9:0]  = {dec_csr_wrdata_r[27] & dbg_tlu_halted_f,
-                                   dec_csr_wrdata_r[20:19],
-                                   tdata_action,
-                                   tdata_chain,
-                                   dec_csr_wrdata_r[7:6],
-                                   tdata_opcode,
-                                   dec_csr_wrdata_r[1],
-                                   tdata_load};
-
-   // If the DMODE bit is set, tdata1 can only be updated in debug_mode
-   assign wr_mtdata1_t0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b0) & (~mtdata1_t0[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign mtdata1_t0_ns[9:0] = wr_mtdata1_t0_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t0[9], update_hit_bit_r[0] | mtdata1_t0[8], mtdata1_t0[7:0]};
-
-   assign wr_mtdata1_t1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b01) & (~mtdata1_t1[MTDATA1_DMODE] | dbg_tlu_halted_f) & ~tdata_kill_write;
-   assign mtdata1_t1_ns[9:0] = wr_mtdata1_t1_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t1[9], update_hit_bit_r[1] | mtdata1_t1[8], mtdata1_t1[7:0]};
-
-   assign wr_mtdata1_t2_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b10) & (~mtdata1_t2[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign mtdata1_t2_ns[9:0] = wr_mtdata1_t2_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t2[9], update_hit_bit_r[2] | mtdata1_t2[8], mtdata1_t2[7:0]};
-
-   assign wr_mtdata1_t3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b11) & (~mtdata1_t3[MTDATA1_DMODE] | dbg_tlu_halted_f) & ~tdata_kill_write;
-   assign mtdata1_t3_ns[9:0] = wr_mtdata1_t3_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t3[9], update_hit_bit_r[3] | mtdata1_t3[8], mtdata1_t3[7:0]};
-
-
-   rvdffe #(10)  mtdata1_t0_ff (.*, .en(trigger_enabled[0] | wr_mtdata1_t0_r), .din(mtdata1_t0_ns[9:0]), .dout(mtdata1_t0[9:0]));
-   rvdffe #(10)  mtdata1_t1_ff (.*, .en(trigger_enabled[1] | wr_mtdata1_t1_r), .din(mtdata1_t1_ns[9:0]), .dout(mtdata1_t1[9:0]));
-   rvdffe #(10)  mtdata1_t2_ff (.*, .en(trigger_enabled[2] | wr_mtdata1_t2_r), .din(mtdata1_t2_ns[9:0]), .dout(mtdata1_t2[9:0]));
-   rvdffe #(10)  mtdata1_t3_ff (.*, .en(trigger_enabled[3] | wr_mtdata1_t3_r), .din(mtdata1_t3_ns[9:0]), .dout(mtdata1_t3[9:0]));
-
-   assign mtdata1_tsel_out[31:0] = ( ({32{(mtsel[1:0] == 2'b00)}} & {4'h2, mtdata1_t0[9], 6'b011111, mtdata1_t0[8:7], 6'b0, mtdata1_t0[6:5], 3'b0, mtdata1_t0[4:3], 3'b0, mtdata1_t0[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b01)}} & {4'h2, mtdata1_t1[9], 6'b011111, mtdata1_t1[8:7], 6'b0, mtdata1_t1[6:5], 3'b0, mtdata1_t1[4:3], 3'b0, mtdata1_t1[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b10)}} & {4'h2, mtdata1_t2[9], 6'b011111, mtdata1_t2[8:7], 6'b0, mtdata1_t2[6:5], 3'b0, mtdata1_t2[4:3], 3'b0, mtdata1_t2[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b11)}} & {4'h2, mtdata1_t3[9], 6'b011111, mtdata1_t3[8:7], 6'b0, mtdata1_t3[6:5], 3'b0, mtdata1_t3[4:3], 3'b0, mtdata1_t3[2:0]}));
-
-   assign trigger_pkt_any[0].select = mtdata1_t0[MTDATA1_SEL];
-   assign trigger_pkt_any[0].match = mtdata1_t0[MTDATA1_MATCH];
-   assign trigger_pkt_any[0].store = mtdata1_t0[MTDATA1_ST];
-   assign trigger_pkt_any[0].load = mtdata1_t0[MTDATA1_LD];
-   assign trigger_pkt_any[0].execute = mtdata1_t0[MTDATA1_EXE];
-   assign trigger_pkt_any[0].m = mtdata1_t0[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[1].select = mtdata1_t1[MTDATA1_SEL];
-   assign trigger_pkt_any[1].match = mtdata1_t1[MTDATA1_MATCH];
-   assign trigger_pkt_any[1].store = mtdata1_t1[MTDATA1_ST];
-   assign trigger_pkt_any[1].load = mtdata1_t1[MTDATA1_LD];
-   assign trigger_pkt_any[1].execute = mtdata1_t1[MTDATA1_EXE];
-   assign trigger_pkt_any[1].m = mtdata1_t1[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[2].select = mtdata1_t2[MTDATA1_SEL];
-   assign trigger_pkt_any[2].match = mtdata1_t2[MTDATA1_MATCH];
-   assign trigger_pkt_any[2].store = mtdata1_t2[MTDATA1_ST];
-   assign trigger_pkt_any[2].load = mtdata1_t2[MTDATA1_LD];
-   assign trigger_pkt_any[2].execute = mtdata1_t2[MTDATA1_EXE];
-   assign trigger_pkt_any[2].m = mtdata1_t2[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[3].select = mtdata1_t3[MTDATA1_SEL];
-   assign trigger_pkt_any[3].match = mtdata1_t3[MTDATA1_MATCH];
-   assign trigger_pkt_any[3].store = mtdata1_t3[MTDATA1_ST];
-   assign trigger_pkt_any[3].load = mtdata1_t3[MTDATA1_LD];
-   assign trigger_pkt_any[3].execute = mtdata1_t3[MTDATA1_EXE];
-   assign trigger_pkt_any[3].m = mtdata1_t3[MTDATA1_M_ENABLED];
-
-
-
-
-
-   // ----------------------------------------------------------------------
-   // MTDATA2 (R/W)
-   // [31:0] : Trigger Data 2
-   localparam MTDATA2       = 12'h7a2;
-
-   // If the DMODE bit is set, tdata2 can only be updated in debug_mode
-   assign wr_mtdata2_t0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b0)  & (~mtdata1_t0[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b01) & (~mtdata1_t1[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t2_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b10) & (~mtdata1_t2[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b11) & (~mtdata1_t3[MTDATA1_DMODE] | dbg_tlu_halted_f);
-
-   rvdffe #(32)  mtdata2_t0_ff (.*, .en(wr_mtdata2_t0_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t0[31:0]));
-   rvdffe #(32)  mtdata2_t1_ff (.*, .en(wr_mtdata2_t1_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t1[31:0]));
-   rvdffe #(32)  mtdata2_t2_ff (.*, .en(wr_mtdata2_t2_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t2[31:0]));
-   rvdffe #(32)  mtdata2_t3_ff (.*, .en(wr_mtdata2_t3_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t3[31:0]));
-
-   assign mtdata2_tsel_out[31:0] = ( ({32{(mtsel[1:0] == 2'b00)}} & mtdata2_t0[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b01)}} & mtdata2_t1[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b10)}} & mtdata2_t2[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b11)}} & mtdata2_t3[31:0]));
-
-   assign trigger_pkt_any[0].tdata2[31:0] = mtdata2_t0[31:0];
-   assign trigger_pkt_any[1].tdata2[31:0] = mtdata2_t1[31:0];
-   assign trigger_pkt_any[2].tdata2[31:0] = mtdata2_t2[31:0];
-   assign trigger_pkt_any[3].tdata2[31:0] = mtdata2_t3[31:0];
-
-
-   //----------------------------------------------------------------------
-   // Performance Monitor Counters section starts
-   //----------------------------------------------------------------------
-   localparam MHPME_NOEVENT             = 10'd0;
-   localparam MHPME_CLK_ACTIVE          = 10'd1; // OOP - out of pipe
-   localparam MHPME_ICACHE_HIT          = 10'd2; // OOP
-   localparam MHPME_ICACHE_MISS         = 10'd3; // OOP
-   localparam MHPME_INST_COMMIT         = 10'd4;
-   localparam MHPME_INST_COMMIT_16B     = 10'd5;
-   localparam MHPME_INST_COMMIT_32B     = 10'd6;
-   localparam MHPME_INST_ALIGNED        = 10'd7; // OOP
-   localparam MHPME_INST_DECODED        = 10'd8; // OOP
-   localparam MHPME_INST_MUL            = 10'd9;
-   localparam MHPME_INST_DIV            = 10'd10;
-   localparam MHPME_INST_LOAD           = 10'd11;
-   localparam MHPME_INST_STORE          = 10'd12;
-   localparam MHPME_INST_MALOAD         = 10'd13;
-   localparam MHPME_INST_MASTORE        = 10'd14;
-   localparam MHPME_INST_ALU            = 10'd15;
-   localparam MHPME_INST_CSRREAD        = 10'd16;
-   localparam MHPME_INST_CSRRW          = 10'd17;
-   localparam MHPME_INST_CSRWRITE       = 10'd18;
-   localparam MHPME_INST_EBREAK         = 10'd19;
-   localparam MHPME_INST_ECALL          = 10'd20;
-   localparam MHPME_INST_FENCE          = 10'd21;
-   localparam MHPME_INST_FENCEI         = 10'd22;
-   localparam MHPME_INST_MRET           = 10'd23;
-   localparam MHPME_INST_BRANCH         = 10'd24;
-   localparam MHPME_BRANCH_MP           = 10'd25;
-   localparam MHPME_BRANCH_TAKEN        = 10'd26;
-   localparam MHPME_BRANCH_NOTP         = 10'd27;
-   localparam MHPME_FETCH_STALL         = 10'd28; // OOP
-   localparam MHPME_DECODE_STALL        = 10'd30; // OOP
-   localparam MHPME_POSTSYNC_STALL      = 10'd31; // OOP
-   localparam MHPME_PRESYNC_STALL       = 10'd32; // OOP
-   localparam MHPME_LSU_SB_WB_STALL     = 10'd34; // OOP
-   localparam MHPME_DMA_DCCM_STALL      = 10'd35; // OOP
-   localparam MHPME_DMA_ICCM_STALL      = 10'd36; // OOP
-   localparam MHPME_EXC_TAKEN           = 10'd37;
-   localparam MHPME_TIMER_INT_TAKEN     = 10'd38;
-   localparam MHPME_EXT_INT_TAKEN       = 10'd39;
-   localparam MHPME_FLUSH_LOWER         = 10'd40;
-   localparam MHPME_BR_ERROR            = 10'd41;
-   localparam MHPME_IBUS_TRANS          = 10'd42; // OOP
-   localparam MHPME_DBUS_TRANS          = 10'd43; // OOP
-   localparam MHPME_DBUS_MA_TRANS       = 10'd44; // OOP
-   localparam MHPME_IBUS_ERROR          = 10'd45; // OOP
-   localparam MHPME_DBUS_ERROR          = 10'd46; // OOP
-   localparam MHPME_IBUS_STALL          = 10'd47; // OOP
-   localparam MHPME_DBUS_STALL          = 10'd48; // OOP
-   localparam MHPME_INT_DISABLED        = 10'd49; // OOP
-   localparam MHPME_INT_STALLED         = 10'd50; // OOP
-   localparam MHPME_INST_BITMANIP       = 10'd54;
-   localparam MHPME_DBUS_LOAD           = 10'd55;
-   localparam MHPME_DBUS_STORE          = 10'd56;
-   // Counts even during sleep state
-   localparam MHPME_SLEEP_CYC           = 10'd512; // OOP
-   localparam MHPME_DMA_READ_ALL        = 10'd513; // OOP
-   localparam MHPME_DMA_WRITE_ALL       = 10'd514; // OOP
-   localparam MHPME_DMA_READ_DCCM       = 10'd515; // OOP
-   localparam MHPME_DMA_WRITE_DCCM      = 10'd516; // OOP
-
-   // Pack the event selects into a vector for genvar
-   assign mhpme_vec[0][9:0] = mhpme3[9:0];
-   assign mhpme_vec[1][9:0] = mhpme4[9:0];
-   assign mhpme_vec[2][9:0] = mhpme5[9:0];
-   assign mhpme_vec[3][9:0] = mhpme6[9:0];
-
-   // only consider committed itypes
-   //logic [3:0] pmu_i0_itype_qual;
-   assign pmu_i0_itype_qual[3:0] = dec_tlu_packet_r.pmu_i0_itype[3:0] & {4{tlu_i0_commit_cmt}};
-
-   // Generate the muxed incs for all counters based on event type
-   for (genvar i=0 ; i < 4; i++) begin
-      assign mhpmc_inc_r[i] =  {{~mcountinhibit[i+3]}} &
-           (
-             ({1{(mhpme_vec[i][9:0] == MHPME_CLK_ACTIVE      )}} & 1'b1) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_ICACHE_HIT      )}} & {ifu_pmu_ic_hit}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_ICACHE_MISS     )}} & {ifu_pmu_ic_miss}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT     )}} & {tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT_16B )}} & {tlu_i0_commit_cmt & ~exu_pmu_i0_pc4 & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT_32B )}} & {tlu_i0_commit_cmt &  exu_pmu_i0_pc4 & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ALIGNED    )}} & ifu_pmu_instr_aligned)  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_DECODED    )}} & dec_pmu_instr_decoded)  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DECODE_STALL    )}} & {dec_pmu_decode_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MUL        )}} & {(pmu_i0_itype_qual == MUL)})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_DIV        )}} & {dec_tlu_packet_r.pmu_divide  & tlu_i0_commit_cmt & ~illegal_r})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_LOAD       )}} & {(pmu_i0_itype_qual == LOAD)})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_STORE      )}} & {(pmu_i0_itype_qual == STORE)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MALOAD     )}} & {(pmu_i0_itype_qual == LOAD)} &
-                                                                      {1{dec_tlu_packet_r.pmu_lsu_misaligned}})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MASTORE    )}} & {(pmu_i0_itype_qual == STORE)} &
-                                                                      {1{dec_tlu_packet_r.pmu_lsu_misaligned}})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ALU        )}} & {(pmu_i0_itype_qual == ALU)})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRREAD    )}} & {(pmu_i0_itype_qual == CSRREAD)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRWRITE   )}} & {(pmu_i0_itype_qual == CSRWRITE)})|
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRRW      )}} & {(pmu_i0_itype_qual == CSRRW)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_EBREAK     )}} & {(pmu_i0_itype_qual == EBREAK)})  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ECALL      )}} & {(pmu_i0_itype_qual == ECALL)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_FENCE      )}} & {(pmu_i0_itype_qual == FENCE)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_FENCEI     )}} & {(pmu_i0_itype_qual == FENCEI)})  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MRET       )}} & {(pmu_i0_itype_qual == MRET)})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_BRANCH     )}} & {
-                                                                     ((pmu_i0_itype_qual == CONDBR) | (pmu_i0_itype_qual == JAL))})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_MP       )}} & {exu_pmu_i0_br_misp & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_TAKEN    )}} & {exu_pmu_i0_br_ataken & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_NOTP     )}} & {dec_tlu_packet_r.pmu_i0_br_unpred & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_FETCH_STALL     )}} & { ifu_pmu_fetch_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DECODE_STALL    )}} & { dec_pmu_decode_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_POSTSYNC_STALL  )}} & {dec_pmu_postsync_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_PRESYNC_STALL   )}} & {dec_pmu_presync_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_LSU_SB_WB_STALL )}} & { lsu_store_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_DCCM_STALL  )}} & { dma_dccm_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_ICCM_STALL  )}} & { dma_iccm_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_EXC_TAKEN       )}} & { (i0_exception_valid_r | i0_trigger_hit_r | lsu_exc_valid_r)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_TIMER_INT_TAKEN )}} & { take_timer_int | take_int_timer0_int | take_int_timer1_int}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_EXT_INT_TAKEN   )}} & { take_ext_int}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_FLUSH_LOWER     )}} & { tlu_flush_lower_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BR_ERROR        )}} & {(dec_tlu_br0_error_r | dec_tlu_br0_start_error_r) & rfpc_i0_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_TRANS      )}} & {ifu_pmu_bus_trxn}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_TRANS      )}} & {lsu_pmu_bus_trxn}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_MA_TRANS   )}} & {lsu_pmu_bus_misaligned}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_ERROR      )}} & {ifu_pmu_bus_error}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_ERROR      )}} & {lsu_pmu_bus_error}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_STALL      )}} & {ifu_pmu_bus_busy}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_STALL      )}} & {lsu_pmu_bus_busy}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INT_DISABLED    )}} & {~mstatus[MSTATUS_MIE]}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INT_STALLED     )}} & {~mstatus[MSTATUS_MIE] & |(mip[5:0] & mie[5:0])}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_BITMANIP     )}} & {(pmu_i0_itype_qual == BITMANIPU)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_LOAD       )}} & {tlu_i0_commit_cmt & lsu_pmu_load_external_r & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_STORE      )}} & {tlu_i0_commit_cmt & lsu_pmu_store_external_r & ~illegal_r}) |
-             // These count even during sleep
-             ({1{(mhpme_vec[i][9:0] == MHPME_SLEEP_CYC       )}} & {dec_tlu_pmu_fw_halted}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_READ_ALL    )}} & {dma_pmu_any_read}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_WRITE_ALL   )}} & {dma_pmu_any_write}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_READ_DCCM   )}} & {dma_pmu_dccm_read}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_WRITE_DCCM  )}} & {dma_pmu_dccm_write})
-             );
-   end
-
-
-   if(pt.FAST_INTERRUPT_REDIRECT)
-   rvdffie #(31)  mstatus_ff (.*, .clk(free_l2clk),
-                             .din({mdseac_locked_ns, lsu_single_ecc_error_r, lsu_exc_valid_r, lsu_i0_exc_r,
-                                   take_ext_int_start,    take_ext_int_start_d1, take_ext_int_start_d2, ext_int_freeze,
-                                   mip_ns[5:0], mcyclel_cout & ~wr_mcycleh_r & mcyclel_cout_in,
-                                   minstret_enable, minstretl_cout_ns, fw_halted_ns,
-                                   meicidpl_ns[3:0], icache_rd_valid, icache_wr_valid, mhpmc_inc_r[3:0], perfcnt_halted,
-                                   mstatus_ns[1:0]}),
-                             .dout({mdseac_locked_f, lsu_single_ecc_error_r_d1, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1,
-                                    take_ext_int_start_d1, take_ext_int_start_d2, take_ext_int_start_d3, ext_int_freeze_d1,
-                                    mip[5:0], mcyclel_cout_f, minstret_enable_f, minstretl_cout_f,
-                                    fw_halted, meicidpl[3:0], icache_rd_valid_f, icache_wr_valid_f,
-                                    mhpmc_inc_r_d1[3:0], perfcnt_halted_d1,
-                                    mstatus[1:0]}));
-
-   else
-   rvdffie #(27)  mstatus_ff (.*, .clk(free_l2clk),
-                             .din({mdseac_locked_ns, lsu_single_ecc_error_r, lsu_exc_valid_r, lsu_i0_exc_r,
-                                   mip_ns[5:0], mcyclel_cout & ~wr_mcycleh_r & mcyclel_cout_in,
-                                   minstret_enable, minstretl_cout_ns, fw_halted_ns,
-                                   meicidpl_ns[3:0], icache_rd_valid, icache_wr_valid, mhpmc_inc_r[3:0], perfcnt_halted,
-                                   mstatus_ns[1:0]}),
-                             .dout({mdseac_locked_f, lsu_single_ecc_error_r_d1, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1,
-                                    mip[5:0], mcyclel_cout_f, minstret_enable_f, minstretl_cout_f,
-                                    fw_halted, meicidpl[3:0], icache_rd_valid_f, icache_wr_valid_f,
-                                    mhpmc_inc_r_d1[3:0], perfcnt_halted_d1,
-                                    mstatus[1:0]}));
-
-   assign perfcnt_halted = ((dec_tlu_dbg_halted & dcsr[DCSR_STOPC]) | dec_tlu_pmu_fw_halted);
-   assign perfcnt_during_sleep[3:0] = {4{~(dec_tlu_dbg_halted & dcsr[DCSR_STOPC])}} & {mhpme_vec[3][9],mhpme_vec[2][9],mhpme_vec[1][9],mhpme_vec[0][9]};
-
-   assign dec_tlu_perfcnt0 = mhpmc_inc_r_d1[0] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[0]);
-   assign dec_tlu_perfcnt1 = mhpmc_inc_r_d1[1] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[1]);
-   assign dec_tlu_perfcnt2 = mhpmc_inc_r_d1[2] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[2]);
-   assign dec_tlu_perfcnt3 = mhpmc_inc_r_d1[3] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[3]);
-
-   // ----------------------------------------------------------------------
-   // MHPMC3H(RW), MHPMC3(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 3
-   localparam MHPMC3        = 12'hB03;
-   localparam MHPMC3H       = 12'hB83;
-
-   assign mhpmc3_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC3);
-   assign mhpmc3_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[0]) & (|(mhpmc_inc_r[0]));
-   assign mhpmc3_wr_en  = mhpmc3_wr_en0 | mhpmc3_wr_en1;
-   assign mhpmc3_incr[63:0] = {mhpmc3h[31:0],mhpmc3[31:0]} + {63'b0, 1'b1};
-   assign mhpmc3_ns[31:0] = mhpmc3_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc3_incr[31:0];
-   rvdffe #(32)  mhpmc3_ff (.*, .clk(free_l2clk), .en(mhpmc3_wr_en), .din(mhpmc3_ns[31:0]), .dout(mhpmc3[31:0]));
-
-   assign mhpmc3h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC3H);
-   assign mhpmc3h_wr_en  = mhpmc3h_wr_en0 | mhpmc3_wr_en1;
-   assign mhpmc3h_ns[31:0] = mhpmc3h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc3_incr[63:32];
-   rvdffe #(32)  mhpmc3h_ff (.*, .clk(free_l2clk), .en(mhpmc3h_wr_en), .din(mhpmc3h_ns[31:0]), .dout(mhpmc3h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC4H(RW), MHPMC4(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 4
-   localparam MHPMC4        = 12'hB04;
-   localparam MHPMC4H       = 12'hB84;
-
-   assign mhpmc4_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC4);
-   assign mhpmc4_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[1]) & (|(mhpmc_inc_r[1]));
-   assign mhpmc4_wr_en  = mhpmc4_wr_en0 | mhpmc4_wr_en1;
-   assign mhpmc4_incr[63:0] = {mhpmc4h[31:0],mhpmc4[31:0]} + {63'b0,1'b1};
-   assign mhpmc4_ns[31:0] = mhpmc4_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc4_incr[31:0];
-   rvdffe #(32)  mhpmc4_ff (.*, .clk(free_l2clk), .en(mhpmc4_wr_en), .din(mhpmc4_ns[31:0]), .dout(mhpmc4[31:0]));
-
-   assign mhpmc4h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC4H);
-   assign mhpmc4h_wr_en  = mhpmc4h_wr_en0 | mhpmc4_wr_en1;
-   assign mhpmc4h_ns[31:0] = mhpmc4h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc4_incr[63:32];
-   rvdffe #(32)  mhpmc4h_ff (.*, .clk(free_l2clk), .en(mhpmc4h_wr_en), .din(mhpmc4h_ns[31:0]), .dout(mhpmc4h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC5H(RW), MHPMC5(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 5
-   localparam MHPMC5        = 12'hB05;
-   localparam MHPMC5H       = 12'hB85;
-
-   assign mhpmc5_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC5);
-   assign mhpmc5_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[2]) & (|(mhpmc_inc_r[2]));
-   assign mhpmc5_wr_en  = mhpmc5_wr_en0 | mhpmc5_wr_en1;
-   assign mhpmc5_incr[63:0] = {mhpmc5h[31:0],mhpmc5[31:0]} + {63'b0,1'b1};
-   assign mhpmc5_ns[31:0] = mhpmc5_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc5_incr[31:0];
-   rvdffe #(32)  mhpmc5_ff (.*, .clk(free_l2clk), .en(mhpmc5_wr_en), .din(mhpmc5_ns[31:0]), .dout(mhpmc5[31:0]));
-
-   assign mhpmc5h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC5H);
-   assign mhpmc5h_wr_en  = mhpmc5h_wr_en0 | mhpmc5_wr_en1;
-   assign mhpmc5h_ns[31:0] = mhpmc5h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc5_incr[63:32];
-   rvdffe #(32)  mhpmc5h_ff (.*, .clk(free_l2clk), .en(mhpmc5h_wr_en), .din(mhpmc5h_ns[31:0]), .dout(mhpmc5h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC6H(RW), MHPMC6(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 6
-   localparam MHPMC6        = 12'hB06;
-   localparam MHPMC6H       = 12'hB86;
-
-   assign mhpmc6_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC6);
-   assign mhpmc6_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[3]) & (|(mhpmc_inc_r[3]));
-   assign mhpmc6_wr_en  = mhpmc6_wr_en0 | mhpmc6_wr_en1;
-   assign mhpmc6_incr[63:0] = {mhpmc6h[31:0],mhpmc6[31:0]} + {63'b0,1'b1};
-   assign mhpmc6_ns[31:0] = mhpmc6_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc6_incr[31:0];
-   rvdffe #(32)  mhpmc6_ff (.*, .clk(free_l2clk), .en(mhpmc6_wr_en), .din(mhpmc6_ns[31:0]), .dout(mhpmc6[31:0]));
-
-   assign mhpmc6h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC6H);
-   assign mhpmc6h_wr_en  = mhpmc6h_wr_en0 | mhpmc6_wr_en1;
-   assign mhpmc6h_ns[31:0] = mhpmc6h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc6_incr[63:32];
-   rvdffe #(32)  mhpmc6h_ff (.*, .clk(free_l2clk), .en(mhpmc6h_wr_en), .din(mhpmc6h_ns[31:0]), .dout(mhpmc6h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPME3(RW)
-   // [9:0] : Hardware Performance Monitor Event 3
-   localparam MHPME3        = 12'h323;
-
-   // we only have events 0-56 with holes, 512-516, HPME* are WARL so zero otherwise.
-   assign zero_event_r = ( (dec_csr_wrdata_r[9:0] > 10'd516) |
-                           (|dec_csr_wrdata_r[31:10]) |
-                           ((dec_csr_wrdata_r[9:0] < 10'd512) & (dec_csr_wrdata_r[9:0] > 10'd56)) |
-                           ((dec_csr_wrdata_r[9:0] < 10'd54) & (dec_csr_wrdata_r[9:0] > 10'd50)) |
-                           (dec_csr_wrdata_r[9:0] == 10'd29) |
-                           (dec_csr_wrdata_r[9:0] == 10'd33)
-                           );
-
-   assign event_r[9:0] = zero_event_r ? '0 : dec_csr_wrdata_r[9:0];
-
-   assign wr_mhpme3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME3);
-   rvdffe #(10)  mhpme3_ff (.*, .en(wr_mhpme3_r), .din(event_r[9:0]), .dout(mhpme3[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME4(RW)
-   // [9:0] : Hardware Performance Monitor Event 4
-   localparam MHPME4        = 12'h324;
-
-   assign wr_mhpme4_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME4);
-   rvdffe #(10)  mhpme4_ff (.*, .en(wr_mhpme4_r), .din(event_r[9:0]), .dout(mhpme4[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME5(RW)
-   // [9:0] : Hardware Performance Monitor Event 5
-   localparam MHPME5        = 12'h325;
-
-   assign wr_mhpme5_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME5);
-   rvdffe #(10)  mhpme5_ff (.*, .en(wr_mhpme5_r), .din(event_r[9:0]), .dout(mhpme5[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME6(RW)
-   // [9:0] : Hardware Performance Monitor Event 6
-   localparam MHPME6        = 12'h326;
-
-   assign wr_mhpme6_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME6);
-   rvdffe #(10)  mhpme6_ff (.*, .en(wr_mhpme6_r), .din(event_r[9:0]), .dout(mhpme6[9:0]));
-
-   //----------------------------------------------------------------------
-   // Performance Monitor Counters section ends
-   //----------------------------------------------------------------------
-   // ----------------------------------------------------------------------
-
-   // MCOUNTINHIBIT(RW)
-   // [31:7] : Reserved, read 0x0
-   // [6]    : HPM6 disable
-   // [5]    : HPM5 disable
-   // [4]    : HPM4 disable
-   // [3]    : HPM3 disable
-   // [2]    : MINSTRET disable
-   // [1]    : reserved, read 0x0
-   // [0]    : MCYCLE disable
-
-   localparam MCOUNTINHIBIT             = 12'h320;
-
-   assign wr_mcountinhibit_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCOUNTINHIBIT);
-   rvdffs #(6)  mcountinhibit_ff (.*, .clk(csr_wr_clk), .en(wr_mcountinhibit_r), .din({dec_csr_wrdata_r[6:2], dec_csr_wrdata_r[0]}), .dout({mcountinhibit[6:2], mcountinhibit[0]}));
-   assign mcountinhibit[1] = 1'b0;
-
-   //--------------------------------------------------------------------------------
-   // trace
-   //--------------------------------------------------------------------------------
-   logic [4:0] dec_tlu_exc_cause_wb1_raw, dec_tlu_exc_cause_wb2;
-   logic       dec_tlu_int_valid_wb1_raw, dec_tlu_int_valid_wb2;
-
-   assign {dec_tlu_i0_valid_wb1,
-           dec_tlu_i0_exc_valid_wb1,
-           dec_tlu_exc_cause_wb1_raw[4:0],
-           dec_tlu_int_valid_wb1_raw}  =   {8{~dec_tlu_trace_disable}} & {i0_valid_wb,
-                                                                          i0_exception_valid_r_d1 | lsu_i0_exc_r_d1 | (trigger_hit_r_d1 & ~trigger_hit_dmode_r_d1),
-                                                                          exc_cause_wb[4:0],
-                                                                          interrupt_valid_r_d1};
-
-
-
-  // skid buffer for ints, reduces trace port count by 1
-   rvdffie #(.WIDTH(6), .OVERRIDE(1))  traceskidff (.*,  .clk(clk),
-                        .din ({dec_tlu_exc_cause_wb1_raw[4:0],
-                               dec_tlu_int_valid_wb1_raw}),
-                        .dout({dec_tlu_exc_cause_wb2[4:0],
-                               dec_tlu_int_valid_wb2}));
-   //skid for ints
-   assign dec_tlu_exc_cause_wb1[4:0] =  dec_tlu_int_valid_wb2 ? dec_tlu_exc_cause_wb2[4:0] : dec_tlu_exc_cause_wb1_raw[4:0];
-   assign dec_tlu_int_valid_wb1 = dec_tlu_int_valid_wb2;
-
-   assign dec_tlu_mtval_wb1  = mtval[31:0];
-
-   // end trace
-   //--------------------------------------------------------------------------------
-
-
-   // ----------------------------------------------------------------------
-   // CSR read mux
-   // ----------------------------------------------------------------------
-
-// file "csrdecode" is human readable file that has all of the CSR decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "csrdecode" except legal equation:
-
-// 1) coredecode -in csrdecode > corecsrdecode.e
-
-// 2) espresso -Dso -oeqntott corecsrdecode.e | addassign  > csrequations
-
-// to generate the legal CSR equation below:
-
-// 1) coredecode -in csrdecode -legal > csrlegal.e
-
-// 2) espresso -Dso -oeqntott csrlegal.e | addassign  > csrlegal_equation
-// coredecode -in csrdecode > corecsrdecode.e; espresso -Dso -oeqntott corecsrdecode.e | addassign  > csrequations; coredecode -in csrdecode -legal > csrlegal.e; espresso -Dso -oeqntott csrlegal.e | addassign  > csrlegal_equation
-
-assign csr_misa = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mvendorid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_marchid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mimpid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mhartid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_mstatus = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mtvec = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mip = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[2]);
-
-assign csr_mie = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mcyclel = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]);
-
-assign csr_mcycleh = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_minstretl = (!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_minstreth = (!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mscratch = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mepc = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mcause = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mscause = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_mtval = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mrac = (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_dmst = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_mdseac = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]);
-
-assign csr_meihap = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[3]);
-
-assign csr_meivt = (!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_meipt = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_meicurpl = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_meicidpl = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dcsr = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mcgc = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdc = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dpc = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[0]);
-
-assign csr_mtsel = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mtdata1 = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]);
-
-assign csr_mtdata2 = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[1]);
-
-assign csr_mhpmc3 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc4 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc5 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc6 = (!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc3h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc4h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc5h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc6h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme3 = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme4 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme5 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme6 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mcountinhibit = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mitctl0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitctl1 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mitb0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mitb1 = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitcnt0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitcnt1 = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mpmc = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign csr_meicpct = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_micect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_miccmect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]);
-
-assign csr_mdccmect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdht = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdhs = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_dicawics = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_dicad0h = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_dicad0 = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dicad1 = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_dicago = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign presync = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign postsync = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[10]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign legal = (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]) | (
-    dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]) | (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]) | (dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[3]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[3]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]);
-
-
-
-assign dec_tlu_presync_d = presync & dec_csr_any_unq_d & ~dec_csr_wen_unq_d;
-assign dec_tlu_postsync_d = postsync & dec_csr_any_unq_d;
-
-   // allow individual configuration of these features
-assign conditionally_illegal = ((csr_mitcnt0 | csr_mitcnt1 | csr_mitb0 | csr_mitb1 | csr_mitctl0 | csr_mitctl1) & !pt.TIMER_LEGAL_EN);
-
-assign valid_csr = ( legal & (~(csr_dcsr | csr_dpc | csr_dmst | csr_dicawics | csr_dicad0 | csr_dicad0h | csr_dicad1 | csr_dicago) | dbg_tlu_halted_f)
-                     & ~fast_int_meicpct & ~conditionally_illegal);
-
-assign dec_csr_legal_d = ( dec_csr_any_unq_d &
-                           valid_csr &          // of a valid CSR
-                           ~(dec_csr_wen_unq_d & (csr_mvendorid | csr_marchid | csr_mimpid | csr_mhartid | csr_mdseac | csr_meihap)) // that's not a write to a RO CSR
-                           );
-   // CSR read mux
-assign dec_csr_rddata_d[31:0] = ( ({32{csr_misa}}      & 32'h40201104) |
-                                  ({32{csr_mvendorid}} & 32'h00000045) |
-                                  ({32{csr_marchid}}   & 32'h00000010) |
-                                  ({32{csr_mimpid}}    & 32'h3) |
-                                  ({32{csr_mhartid}}   & {core_id[31:4], 4'b0}) |
-                                  ({32{csr_mstatus}}   & {{15{1'b0}}, 2'b01, 2'b00, 2'b11, 3'b0, mstatus[1], 3'b0, mstatus[0], 3'b0}) |
-                                  ({32{csr_mtvec}}     & {mtvec[30:1], 1'b0, mtvec[0]}) |
-                                  ({32{csr_mip}}       & {1'b0, mip[5:3], 16'b0, mip[2], 3'b0, mip[1], 3'b0, mip[0], 3'b0}) |
-                                  ({32{csr_mie}}       & {1'b0, mie[5:3], 16'b0, mie[2], 3'b0, mie[1], 3'b0, mie[0], 3'b0}) |
-                                  ({32{csr_mcyclel}}   & mcyclel[31:0]) |
-                                  ({32{csr_mcycleh}}   & mcycleh_inc[31:0]) |
-                                  ({32{csr_minstretl}} & minstretl_read[31:0]) |
-                                  ({32{csr_minstreth}} & minstreth_read[31:0]) |
-                                  ({32{csr_mscratch}}  & mscratch[31:0]) |
-                                  ({32{csr_mepc}}      & {mepc[31:1], 1'b0}) |
-                                  ({32{csr_mcause}}    & mcause[31:0]) |
-                                  ({32{csr_mscause}}   & {28'b0, mscause[3:0]}) |
-                                  ({32{csr_mtval}}     & mtval[31:0]) |
-                                  ({32{csr_mrac}}      & mrac[31:0]) |
-                                  ({32{csr_mdseac}}    & mdseac[31:0]) |
-                                  ({32{csr_meivt}}     & {meivt[31:10], 10'b0}) |
-                                  ({32{csr_meihap}}    & {meivt[31:10], meihap[9:2], 2'b0}) |
-                                  ({32{csr_meicurpl}}  & {28'b0, meicurpl[3:0]}) |
-                                  ({32{csr_meicidpl}}  & {28'b0, meicidpl[3:0]}) |
-                                  ({32{csr_meipt}}     & {28'b0, meipt[3:0]}) |
-                                  ({32{csr_mcgc}}      & {22'b0, mcgc[9:0]}) |
-                                  ({32{csr_mfdc}}      & {13'b0, mfdc[18:0]}) |
-                                  ({32{csr_dcsr}}      & {16'h4000, dcsr[15:2], 2'b11}) |
-                                  ({32{csr_dpc}}       & {dpc[31:1], 1'b0}) |
-                                  ({32{csr_dicad0}}    & dicad0[31:0]) |
-                                  ({32{csr_dicad0h}}   & dicad0h[31:0]) |
-                                  ({32{csr_dicad1}}    & dicad1[31:0]) |
-                                  ({32{csr_dicawics}}  & {7'b0, dicawics[16], 2'b0, dicawics[15:14], 3'b0, dicawics[13:0], 3'b0}) |
-                                  ({32{csr_mtsel}}     & {30'b0, mtsel[1:0]}) |
-                                  ({32{csr_mtdata1}}   & {mtdata1_tsel_out[31:0]}) |
-                                  ({32{csr_mtdata2}}   & {mtdata2_tsel_out[31:0]}) |
-                                  ({32{csr_micect}}    & {micect[31:0]}) |
-                                  ({32{csr_miccmect}}  & {miccmect[31:0]}) |
-                                  ({32{csr_mdccmect}}  & {mdccmect[31:0]}) |
-                                  ({32{csr_mhpmc3}}    & mhpmc3[31:0]) |
-                                  ({32{csr_mhpmc4}}    & mhpmc4[31:0]) |
-                                  ({32{csr_mhpmc5}}    & mhpmc5[31:0]) |
-                                  ({32{csr_mhpmc6}}    & mhpmc6[31:0]) |
-                                  ({32{csr_mhpmc3h}}   & mhpmc3h[31:0]) |
-                                  ({32{csr_mhpmc4h}}   & mhpmc4h[31:0]) |
-                                  ({32{csr_mhpmc5h}}   & mhpmc5h[31:0]) |
-                                  ({32{csr_mhpmc6h}}   & mhpmc6h[31:0]) |
-                                  ({32{csr_mfdht}}     & {26'b0, mfdht[5:0]}) |
-                                  ({32{csr_mfdhs}}     & {30'b0, mfdhs[1:0]}) |
-                                  ({32{csr_mhpme3}}    & {22'b0,mhpme3[9:0]}) |
-                                  ({32{csr_mhpme4}}    & {22'b0,mhpme4[9:0]}) |
-                                  ({32{csr_mhpme5}}    & {22'b0,mhpme5[9:0]}) |
-                                  ({32{csr_mhpme6}}    & {22'b0,mhpme6[9:0]}) |
-                                  ({32{csr_mcountinhibit}} & {25'b0, mcountinhibit[6:0]}) |
-                                  ({32{csr_mpmc}}      & {30'b0, mpmc[1], 1'b0}) |
-                                  ({32{dec_timer_read_d}} & dec_timer_rddata_d[31:0])
-                                  );
-
-
-
-endmodule // eb1_dec_tlu_ctl
-
-module eb1_dec_timer_ctl #(
-`include "eb1_param.vh"
- )
-  (
-   input logic clk,
-   input logic free_l2clk,
-   input logic csr_wr_clk,
-   input logic rst_l,
-   input logic        dec_csr_wen_r_mod,      // csr write enable at wb
-   input logic [11:0] dec_csr_wraddr_r,      // write address for csr
-   input logic [31:0] dec_csr_wrdata_r,   // csr write data at wb
-
-   input logic csr_mitctl0,
-   input logic csr_mitctl1,
-   input logic csr_mitb0,
-   input logic csr_mitb1,
-   input logic csr_mitcnt0,
-   input logic csr_mitcnt1,
-
-
-   input logic dec_pause_state, // Paused
-   input logic dec_tlu_pmu_fw_halted, // pmu/fw halted
-   input logic internal_dbg_halt_timers, // debug halted
-
-   output logic [31:0] dec_timer_rddata_d, // timer CSR read data
-   output logic        dec_timer_read_d, // timer CSR address match
-   output logic        dec_timer_t0_pulse, // timer0 int
-   output logic        dec_timer_t1_pulse, // timer1 int
-
-   input  logic        scan_mode
-   );
-   localparam MITCTL_ENABLE             = 0;
-   localparam MITCTL_ENABLE_HALTED      = 1;
-   localparam MITCTL_ENABLE_PAUSED      = 2;
-
-   logic [31:0] mitcnt0_ns, mitcnt0, mitcnt1_ns, mitcnt1, mitb0, mitb1, mitb0_b, mitb1_b, mitcnt0_inc, mitcnt1_inc;
-   logic [2:0] mitctl0_ns, mitctl0;
-   logic [3:0] mitctl1_ns, mitctl1;
-   logic wr_mitcnt0_r, wr_mitcnt1_r, wr_mitb0_r, wr_mitb1_r, wr_mitctl0_r, wr_mitctl1_r;
-   logic mitcnt0_inc_ok, mitcnt1_inc_ok;
-   logic mitcnt0_inc_cout, mitcnt1_inc_cout;
- logic mit0_match_ns;
- logic mit1_match_ns;
- logic mitctl0_0_b_ns;
- logic mitctl0_0_b;
- logic mitctl1_0_b_ns;
- logic mitctl1_0_b;
-
-   assign mit0_match_ns = (mitcnt0[31:0] >= mitb0[31:0]);
-   assign mit1_match_ns = (mitcnt1[31:0] >= mitb1[31:0]);
-
-   assign dec_timer_t0_pulse = mit0_match_ns;
-   assign dec_timer_t1_pulse = mit1_match_ns;
-   // ----------------------------------------------------------------------
-   // MITCNT0 (RW)
-   // [31:0] : Internal Timer Counter 0
-
-   localparam MITCNT0       = 12'h7d2;
-
-   assign wr_mitcnt0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCNT0);
-
-   assign mitcnt0_inc_ok = mitctl0[MITCTL_ENABLE] & (~dec_pause_state | mitctl0[MITCTL_ENABLE_PAUSED]) & (~dec_tlu_pmu_fw_halted | mitctl0[MITCTL_ENABLE_HALTED]) & ~internal_dbg_halt_timers;
-
-   assign {mitcnt0_inc_cout, mitcnt0_inc[7:0]} = mitcnt0[7:0] + {7'b0, 1'b1};
-   assign mitcnt0_inc[31:8] = mitcnt0[31:8] + {23'b0, mitcnt0_inc_cout};
-
-   assign mitcnt0_ns[31:0]  = wr_mitcnt0_r ? dec_csr_wrdata_r[31:0] : mit0_match_ns ? 'b0 : mitcnt0_inc[31:0];
-
-   rvdffe #(24) mitcnt0_ffb      (.*, .clk(free_l2clk), .en(wr_mitcnt0_r | (mitcnt0_inc_ok & mitcnt0_inc_cout) | mit0_match_ns), .din(mitcnt0_ns[31:8]), .dout(mitcnt0[31:8]));
-   rvdffe #(8)  mitcnt0_ffa      (.*, .clk(free_l2clk), .en(wr_mitcnt0_r | mitcnt0_inc_ok | mit0_match_ns),                       .din(mitcnt0_ns[7:0]), .dout(mitcnt0[7:0]));
-
-   // ----------------------------------------------------------------------
-   // MITCNT1 (RW)
-   // [31:0] : Internal Timer Counter 0
-
-   localparam MITCNT1       = 12'h7d5;
-
-   assign wr_mitcnt1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCNT1);
-
-   assign mitcnt1_inc_ok = mitctl1[MITCTL_ENABLE] &
-                           (~dec_pause_state | mitctl1[MITCTL_ENABLE_PAUSED]) &
-                           (~dec_tlu_pmu_fw_halted | mitctl1[MITCTL_ENABLE_HALTED]) &
-                           ~internal_dbg_halt_timers &
-                           (~mitctl1[3] | mit0_match_ns);
-
-   // only inc MITCNT1 if not cascaded with 0, or if 0 overflows
-   assign {mitcnt1_inc_cout, mitcnt1_inc[7:0]} = mitcnt1[7:0] + {7'b0, 1'b1};
-   assign mitcnt1_inc[31:8] = mitcnt1[31:8] + {23'b0, mitcnt1_inc_cout};
-
-   assign mitcnt1_ns[31:0]  = wr_mitcnt1_r ? dec_csr_wrdata_r[31:0] : mit1_match_ns ? 'b0 : mitcnt1_inc[31:0];
-
-   rvdffe #(24) mitcnt1_ffb      (.*, .clk(free_l2clk), .en(wr_mitcnt1_r | (mitcnt1_inc_ok & mitcnt1_inc_cout) | mit1_match_ns), .din(mitcnt1_ns[31:8]), .dout(mitcnt1[31:8]));
-   rvdffe #(8)  mitcnt1_ffa      (.*, .clk(free_l2clk), .en(wr_mitcnt1_r | mitcnt1_inc_ok | mit1_match_ns),                       .din(mitcnt1_ns[7:0]), .dout(mitcnt1[7:0]));
-
-
-   // ----------------------------------------------------------------------
-   // MITB0 (RW)
-   // [31:0] : Internal Timer Bound 0
-
-   localparam MITB0         = 12'h7d3;
-
-   assign wr_mitb0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITB0);
-
-   rvdffe #(32) mitb0_ff      (.*, .en(wr_mitb0_r), .din(~dec_csr_wrdata_r[31:0]), .dout(mitb0_b[31:0]));
-   assign mitb0[31:0] = ~mitb0_b[31:0];
-
-   // ----------------------------------------------------------------------
-   // MITB1 (RW)
-   // [31:0] : Internal Timer Bound 1
-
-   localparam MITB1         = 12'h7d6;
-
-   assign wr_mitb1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITB1);
-
-   rvdffe #(32) mitb1_ff      (.*, .en(wr_mitb1_r), .din(~dec_csr_wrdata_r[31:0]), .dout(mitb1_b[31:0]));
-   assign mitb1[31:0] = ~mitb1_b[31:0];
-
-   // ----------------------------------------------------------------------
-   // MITCTL0 (RW) Internal Timer Ctl 0
-   // [31:3] : Reserved, reads 0x0
-   // [2]    : Enable while PAUSEd
-   // [1]    : Enable while HALTed
-   // [0]    : Enable (resets to 0x1)
-
-   localparam MITCTL0       = 12'h7d4;
-
-   assign wr_mitctl0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCTL0);
-   assign mitctl0_ns[2:0] = wr_mitctl0_r ? {dec_csr_wrdata_r[2:0]} : {mitctl0[2:0]};
-
-   assign mitctl0_0_b_ns = ~mitctl0_ns[0];
-   rvdffs #(3) mitctl0_ff      (.*, .clk(csr_wr_clk), .en(wr_mitctl0_r), .din({mitctl0_ns[2:1], mitctl0_0_b_ns}), .dout({mitctl0[2:1], mitctl0_0_b}));
-   assign mitctl0[0] = ~mitctl0_0_b;
-
-   // ----------------------------------------------------------------------
-   // MITCTL1 (RW) Internal Timer Ctl 1
-   // [31:4] : Reserved, reads 0x0
-   // [3]    : Cascade
-   // [2]    : Enable while PAUSEd
-   // [1]    : Enable while HALTed
-   // [0]    : Enable (resets to 0x1)
-
-   localparam MITCTL1       = 12'h7d7;
-
-   assign wr_mitctl1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCTL1);
-   assign mitctl1_ns[3:0] = wr_mitctl1_r ? {dec_csr_wrdata_r[3:0]} : {mitctl1[3:0]};
-
-   assign mitctl1_0_b_ns = ~mitctl1_ns[0];
-   rvdffs #(4) mitctl1_ff      (.*, .clk(csr_wr_clk), .en(wr_mitctl1_r), .din({mitctl1_ns[3:1], mitctl1_0_b_ns}), .dout({mitctl1[3:1], mitctl1_0_b}));
-   assign mitctl1[0] = ~mitctl1_0_b;
-   assign dec_timer_read_d = csr_mitcnt1 | csr_mitcnt0 | csr_mitb1 | csr_mitb0 | csr_mitctl0 | csr_mitctl1;
-   assign dec_timer_rddata_d[31:0] = ( ({32{csr_mitcnt0}}      & mitcnt0[31:0]) |
-                                       ({32{csr_mitcnt1}}      & mitcnt1[31:0]) |
-                                       ({32{csr_mitb0}}        & mitb0[31:0]) |
-                                       ({32{csr_mitb1}}        & mitb1[31:0]) |
-                                       ({32{csr_mitctl0}}      & {29'b0, mitctl0[2:0]}) |
-                                       ({32{csr_mitctl1}}      & {28'b0, mitctl1[3:0]})
-                                       );
-
-
-endmodule // dec_timer_ctl
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_dec_trigger.sv b/verilog/rtl/BrqRV_EB1/design/eb1_dec_trigger.sv
deleted file mode 100644
index 05f9d12..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_dec_trigger.sv
+++ /dev/null
@@ -1,49 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DEC Trigger Logic
-// Comments:
-//
-//********************************************************************************
-module eb1_dec_trigger
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-
-   input eb1_trigger_pkt_t [3:0] trigger_pkt_any,           // Packet from tlu. 'select':0-pc,1-Opcode  'Execute' needs to be set for dec triggers to fire. 'match'-1 do mask, 0: full match
-   input logic [31:1]  dec_i0_pc_d,                          // i0 pc
-
-   output logic [3:0] dec_i0_trigger_match_d                 // Trigger match
-);
-
-   logic [3:0][31:0]  dec_i0_match_data;
-   logic [3:0]        dec_i0_trigger_data_match;
-
-   for (genvar i=0; i<4; i++) begin
-      assign dec_i0_match_data[i][31:0] = ({32{~trigger_pkt_any[i].select & trigger_pkt_any[i].execute}} & {dec_i0_pc_d[31:1], trigger_pkt_any[i].tdata2[0]});      // select=0; do a PC match
-
-      rvmaskandmatch trigger_i0_match (.mask(trigger_pkt_any[i].tdata2[31:0]), .data(dec_i0_match_data[i][31:0]), .masken(trigger_pkt_any[i].match), .match(dec_i0_trigger_data_match[i]));
-
-      assign dec_i0_trigger_match_d[i] = trigger_pkt_any[i].execute & trigger_pkt_any[i].m & dec_i0_trigger_data_match[i];
-   end
-
-endmodule // eb1_dec_trigger
-
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_def.sv b/verilog/rtl/BrqRV_EB1/design/eb1_def.sv
deleted file mode 100644
index 15df549..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_def.sv
+++ /dev/null
@@ -1,405 +0,0 @@
-// performance monitor stuff
-//`ifndef eb1_DEF_SV
-//`define eb1_DEF_SV
-package eb1_pkg;
-
-typedef struct packed {
-                       logic  trace_rv_i_valid_ip;
-                       logic [31:0] trace_rv_i_insn_ip;
-                       logic [31:0] trace_rv_i_address_ip;
-                       logic  trace_rv_i_exception_ip;
-                       logic [4:0] trace_rv_i_ecause_ip;
-                       logic  trace_rv_i_interrupt_ip;
-                       logic [31:0] trace_rv_i_tval_ip;
-                       } eb1_trace_pkt_t;
-
-
-typedef enum logic [3:0] {
-                          NULL     = 4'b0000,
-                          MUL      = 4'b0001,
-                          LOAD     = 4'b0010,
-                          STORE    = 4'b0011,
-                          ALU      = 4'b0100,
-                          CSRREAD  = 4'b0101,
-                          CSRWRITE = 4'b0110,
-                          CSRRW    = 4'b0111,
-                          EBREAK   = 4'b1000,
-                          ECALL    = 4'b1001,
-                          FENCE    = 4'b1010,
-                          FENCEI   = 4'b1011,
-                          MRET     = 4'b1100,
-                          CONDBR   = 4'b1101,
-                          JAL      = 4'b1110,
-                          BITMANIPU = 4'b1111
-                          } eb1_inst_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic wb;
-                       logic [2:0] tag;
-                       logic [4:0] rd;
-                       } eb1_load_cam_pkt_t;
-
-typedef struct packed {
-                       logic pc0_call;
-                       logic pc0_ret;
-                       logic pc0_pc4;
-                       } eb1_rets_pkt_t;
-typedef struct packed {
-                       logic valid;
-                       logic [11:0] toffset;
-                       logic [1:0] hist;
-                       logic br_error;
-                       logic br_start_error;
-                       logic  bank;
-                       logic [31:1] prett;  // predicted ret target
-                       logic way;
-                       logic ret;
-                       } eb1_br_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic [1:0] hist;
-                       logic br_error;
-                       logic br_start_error;
-                       logic way;
-                       logic middle;
-                       } eb1_br_tlu_pkt_t;
-
-typedef struct packed {
-                       logic misp;
-                       logic ataken;
-                       logic boffset;
-                       logic pc4;
-                       logic [1:0] hist;
-                       logic [11:0] toffset;
-                       logic valid;
-                       logic br_error;
-                       logic br_start_error;
-                       logic pcall;
-                       logic pja;
-                       logic way;
-                       logic pret;
-                       // for power use the pret bit to clock the prett field
-                       logic [31:1] prett;
-                       } eb1_predict_pkt_t;
-
-typedef struct packed {
-                       // unlikely to change
-                       logic icaf;
-                       logic icaf_second;
-                       logic [1:0] icaf_type;
-                       logic fence_i;
-                       logic [3:0] i0trigger;
-                       logic pmu_i0_br_unpred;     // pmu
-                       logic pmu_divide;
-                       // likely to change
-                       logic legal;
-                       logic pmu_lsu_misaligned;
-                       eb1_inst_pkt_t pmu_i0_itype;        // pmu - instruction type
-                       } eb1_trap_pkt_t;
-
-typedef struct packed {
-                       // unlikely to change
-                       logic i0div;
-                       logic csrwen;
-                       logic csrwonly;
-                       logic [11:0] csrwaddr;
-                       // likely to change
-                       logic [4:0] i0rd;
-                       logic i0load;
-                       logic i0store;
-                       logic i0v;
-                       logic i0valid;
-                       } eb1_dest_pkt_t;
-
-typedef struct packed {
-                       logic mul;
-                       logic load;
-                       logic alu;
-                       } eb1_class_pkt_t;
-
-typedef struct packed {
-                       logic [4:0] rs1;
-                       logic [4:0] rs2;
-                       logic [4:0] rd;
-                       } eb1_reg_pkt_t;
-
-
-typedef struct packed {
-                       logic clz;
-                       logic ctz;
-                       logic pcnt;
-                       logic sext_b;
-                       logic sext_h;
-                       logic slo;
-                       logic sro;
-                       logic min;
-                       logic max;
-                       logic pack;
-                       logic packu;
-                       logic packh;
-                       logic rol;
-                       logic ror;
-                       logic grev;
-                       logic gorc;
-                       logic zbb;
-                       logic sbset;
-                       logic sbclr;
-                       logic sbinv;
-                       logic sbext;
-                       logic sh1add;
-                       logic sh2add;
-                       logic sh3add;
-                       logic zba;
-                       logic land;
-                       logic lor;
-                       logic lxor;
-                       logic sll;
-                       logic srl;
-                       logic sra;
-                       logic beq;
-                       logic bne;
-                       logic blt;
-                       logic bge;
-                       logic add;
-                       logic sub;
-                       logic slt;
-                       logic unsign;
-                       logic jal;
-                       logic predict_t;
-                       logic predict_nt;
-                       logic csr_write;
-                       logic csr_imm;
-                       } eb1_alu_pkt_t;
-
-typedef struct packed {
-                       logic fast_int;
-/* verilator lint_off SYMRSVDWORD */
-                       logic stack;
-/* verilator lint_on SYMRSVDWORD */
-                       logic by;
-                       logic half;
-                       logic word;
-                       logic dword;  // for dma
-                       logic load;
-                       logic store;
-                       logic unsign;
-                       logic dma;    // dma pkt
-                       logic store_data_bypass_d;
-                       logic load_ldst_bypass_d;
-                       logic store_data_bypass_m;
-                       logic valid;
-                       } eb1_lsu_pkt_t;
-
-typedef struct packed {
-                      logic inst_type;   //0: Load, 1: Store
-                      //logic dma_valid;
-                      logic exc_type;    //0: MisAligned, 1: Access Fault
-                      logic [3:0] mscause;
-                      logic [31:0] addr;
-                      logic single_ecc_error;
-                      logic exc_valid;
-                      } eb1_lsu_error_pkt_t;
-
-typedef struct packed {
-                       logic clz;
-                       logic ctz;
-                       logic pcnt;
-                       logic sext_b;
-                       logic sext_h;
-                       logic slo;
-                       logic sro;
-                       logic min;
-                       logic max;
-                       logic pack;
-                       logic packu;
-                       logic packh;
-                       logic rol;
-                       logic ror;
-                       logic grev;
-                       logic gorc;
-                       logic zbb;
-                       logic sbset;
-                       logic sbclr;
-                       logic sbinv;
-                       logic sbext;
-                       logic zbs;
-                       logic bext;
-                       logic bdep;
-                       logic zbe;
-                       logic clmul;
-                       logic clmulh;
-                       logic clmulr;
-                       logic zbc;
-                       logic shfl;
-                       logic unshfl;
-                       logic zbp;
-                       logic crc32_b;
-                       logic crc32_h;
-                       logic crc32_w;
-                       logic crc32c_b;
-                       logic crc32c_h;
-                       logic crc32c_w;
-                       logic zbr;
-                       logic bfp;
-                       logic zbf;
-                       logic sh1add;
-                       logic sh2add;
-                       logic sh3add;
-                       logic zba;
-                       logic alu;
-                       logic rs1;
-                       logic rs2;
-                       logic imm12;
-                       logic rd;
-                       logic shimm5;
-                       logic imm20;
-                       logic pc;
-                       logic load;
-                       logic store;
-                       logic lsu;
-                       logic add;
-                       logic sub;
-                       logic land;
-                       logic lor;
-                       logic lxor;
-                       logic sll;
-                       logic sra;
-                       logic srl;
-                       logic slt;
-                       logic unsign;
-                       logic condbr;
-                       logic beq;
-                       logic bne;
-                       logic bge;
-                       logic blt;
-                       logic jal;
-                       logic by;
-                       logic half;
-                       logic word;
-                       logic csr_read;
-                       logic csr_clr;
-                       logic csr_set;
-                       logic csr_write;
-                       logic csr_imm;
-                       logic presync;
-                       logic postsync;
-                       logic ebreak;
-                       logic ecall;
-                       logic mret;
-                       logic mul;
-                       logic rs1_sign;
-                       logic rs2_sign;
-                       logic low;
-                       logic div;
-                       logic rem;
-                       logic fence;
-                       logic fence_i;
-                       logic pm_alu;
-                       logic legal;
-                       } eb1_dec_pkt_t;
-
-
-typedef struct packed {
-                       logic valid;
-                       logic rs1_sign;
-                       logic rs2_sign;
-                       logic low;
-                       logic bext;
-                       logic bdep;
-                       logic clmul;
-                       logic clmulh;
-                       logic clmulr;
-                       logic grev;
-                       logic gorc;
-                       logic shfl;
-                       logic unshfl;
-                       logic crc32_b;
-                       logic crc32_h;
-                       logic crc32_w;
-                       logic crc32c_b;
-                       logic crc32c_h;
-                       logic crc32c_w;
-                       logic bfp;
-                       } eb1_mul_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic unsign;
-                       logic rem;
-                       } eb1_div_pkt_t;
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ccm_ext_in_pkt_t;
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_dccm_ext_in_pkt_t;
-
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ic_data_ext_in_pkt_t;
-
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ic_tag_ext_in_pkt_t;
-
-
-
-typedef struct packed {
-                        logic        select;
-                        logic        match;
-                        logic        store;
-                        logic        load;
-                        logic        execute;
-                        logic        m;
-                        logic [31:0] tdata2;
-            } eb1_trigger_pkt_t;
-
-
-typedef struct packed {
-                        logic [70:0]  icache_wrdata; // {dicad1[1:0], dicad0h[31:0], dicad0[31:0]}
-                        logic [16:0]  icache_dicawics; // Arraysel:24, Waysel:21:20, Index:16:3
-                        logic         icache_rd_valid;
-                        logic         icache_wr_valid;
-            } eb1_cache_debug_pkt_t;
-//`endif
-
-endpackage // eb1_pkg
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_dma_ctrl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_dma_ctrl.sv
deleted file mode 100644
index 6193526..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_dma_ctrl.sv
+++ /dev/null
@@ -1,637 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Function: Top level brqrv core file
-// Comments:
-//
-//********************************************************************************
-
-module eb1_dma_ctrl #(
-`include "eb1_param.vh"
- )(
-   input logic         clk,
-   input logic         free_clk,
-   input logic         rst_l,
-   input logic         dma_bus_clk_en, // slave bus clock enable
-   input logic         clk_override,
-   input logic         scan_mode,
-
-   // Debug signals
-   input logic [31:0]  dbg_cmd_addr,
-   input logic [31:0]  dbg_cmd_wrdata,
-   input logic         dbg_cmd_valid,
-   input logic         dbg_cmd_write, // 1: write command, 0: read_command
-   input logic [1:0]   dbg_cmd_type, // 0:gpr 1:csr 2: memory
-   input logic [1:0]   dbg_cmd_size, // size of the abstract mem access debug command
-
-   input  logic        dbg_dma_bubble,   // Debug needs a bubble to send a valid
-   output logic        dma_dbg_ready,    // DMA is ready to accept debug request
-
-   output logic        dma_dbg_cmd_done,
-   output logic        dma_dbg_cmd_fail,
-   output logic [31:0] dma_dbg_rddata,
-
-   // Core side signals
-   output logic        dma_dccm_req,  // DMA dccm request (only one of dccm/iccm will be set)
-   output logic        dma_iccm_req,  // DMA iccm request
-   output logic [2:0]  dma_mem_tag,   // DMA Buffer entry number
-   output logic [31:0] dma_mem_addr,  // DMA request address
-   output logic [2:0]  dma_mem_sz,    // DMA request size
-   output logic        dma_mem_write, // DMA write to dccm/iccm
-   output logic [63:0] dma_mem_wdata, // DMA write data
-
-   input logic         dccm_dma_rvalid,    // dccm data valid for DMA read
-   input logic         dccm_dma_ecc_error, // ECC error on DMA read
-   input logic [2:0]   dccm_dma_rtag,      // Tag of the DMA req
-   input logic [63:0]  dccm_dma_rdata,     // dccm data for DMA read
-   input logic         iccm_dma_rvalid,    // iccm data valid for DMA read
-   input logic         iccm_dma_ecc_error, // ECC error on DMA read
-   input logic [2:0]   iccm_dma_rtag,      // Tag of the DMA req
-   input logic [63:0]  iccm_dma_rdata,     // iccm data for DMA read
-
-   output logic        dma_active,         // DMA is busy
-   output logic        dma_dccm_stall_any, // stall dccm pipe (bubble) so that DMA can proceed
-   output logic        dma_iccm_stall_any, // stall iccm pipe (bubble) so that DMA can proceed
-   input logic         dccm_ready, // dccm ready to accept DMA request
-   input logic         iccm_ready, // iccm ready to accept DMA request
-   input logic [2:0]   dec_tlu_dma_qos_prty,    // DMA QoS priority coming from MFDC [18:15]
-
-   // PMU signals
-   output logic        dma_pmu_dccm_read,
-   output logic        dma_pmu_dccm_write,
-   output logic        dma_pmu_any_read,
-   output logic        dma_pmu_any_write,
-
-   // AXI Write Channels
-   input  logic                        dma_axi_awvalid,
-   output logic                        dma_axi_awready,
-   input  logic [pt.DMA_BUS_TAG-1:0]   dma_axi_awid,
-   input  logic [31:0]                 dma_axi_awaddr,
-   input  logic [2:0]                  dma_axi_awsize,
-
-
-   input  logic                        dma_axi_wvalid,
-   output logic                        dma_axi_wready,
-   input  logic [63:0]                 dma_axi_wdata,
-   input  logic [7:0]                  dma_axi_wstrb,
-
-   output logic                        dma_axi_bvalid,
-   input  logic                        dma_axi_bready,
-   output logic [1:0]                  dma_axi_bresp,
-   output logic [pt.DMA_BUS_TAG-1:0]   dma_axi_bid,
-
-   // AXI Read Channels
-   input  logic                        dma_axi_arvalid,
-   output logic                        dma_axi_arready,
-   input  logic [pt.DMA_BUS_TAG-1:0]   dma_axi_arid,
-   input  logic [31:0]                 dma_axi_araddr,
-   input  logic [2:0]                  dma_axi_arsize,
-
-   output logic                        dma_axi_rvalid,
-   input  logic                        dma_axi_rready,
-   output logic [pt.DMA_BUS_TAG-1:0]   dma_axi_rid,
-   output logic [63:0]                 dma_axi_rdata,
-   output logic [1:0]                  dma_axi_rresp,
-   output logic                        dma_axi_rlast
-);
-
-
-   localparam DEPTH = pt.DMA_BUF_DEPTH;
-   localparam DEPTH_PTR = $clog2(DEPTH);
-   localparam NACK_COUNT = 7;
-
-   logic [DEPTH-1:0]        fifo_valid;
-   logic [DEPTH-1:0][1:0]   fifo_error;
-   logic [DEPTH-1:0]        fifo_error_bus;
-   logic [DEPTH-1:0]        fifo_rpend;
-   logic [DEPTH-1:0]        fifo_done;      // DMA trxn is done in core
-   logic [DEPTH-1:0]        fifo_done_bus;  // DMA trxn is done in core but synced to bus clock
-   logic [DEPTH-1:0][31:0]  fifo_addr;
-   logic [DEPTH-1:0][2:0]   fifo_sz;
-   logic [DEPTH-1:0][7:0]   fifo_byteen;
-   logic [DEPTH-1:0]        fifo_write;
-   logic [DEPTH-1:0]        fifo_posted_write;
-   logic [DEPTH-1:0]        fifo_dbg;
-   logic [DEPTH-1:0][63:0]  fifo_data;
-   logic [DEPTH-1:0][pt.DMA_BUS_TAG-1:0]  fifo_tag;
-   logic [DEPTH-1:0][pt.DMA_BUS_ID-1:0]   fifo_mid;
-   logic [DEPTH-1:0][pt.DMA_BUS_PRTY-1:0] fifo_prty;
-
-   logic [DEPTH-1:0]        fifo_cmd_en;
-   logic [DEPTH-1:0]        fifo_data_en;
-   logic [DEPTH-1:0]        fifo_pend_en;
-   logic [DEPTH-1:0]        fifo_done_en;
-   logic [DEPTH-1:0]        fifo_done_bus_en;
-   logic [DEPTH-1:0]        fifo_error_en;
-   logic [DEPTH-1:0]        fifo_error_bus_en;
-   logic [DEPTH-1:0]        fifo_reset;
-   logic [DEPTH-1:0][1:0]   fifo_error_in;
-   logic [DEPTH-1:0][63:0]  fifo_data_in;
-
-   logic                    fifo_write_in;
-   logic                    fifo_posted_write_in;
-   logic                    fifo_dbg_in;
-   logic [31:0]             fifo_addr_in;
-   logic [2:0]              fifo_sz_in;
-   logic [7:0]              fifo_byteen_in;
-
-   logic [DEPTH_PTR-1:0]    RspPtr, NxtRspPtr;
-   logic [DEPTH_PTR-1:0]    WrPtr, NxtWrPtr;
-   logic [DEPTH_PTR-1:0]    RdPtr, NxtRdPtr;
-   logic                    WrPtrEn, RdPtrEn, RspPtrEn;
-
-   logic [1:0]              dma_dbg_sz;
-   logic [1:0]              dma_dbg_addr;
-   logic [31:0]             dma_dbg_mem_rddata;
-   logic [31:0]             dma_dbg_mem_wrdata;
-   logic                    dma_dbg_cmd_error;
-   logic                    dma_dbg_cmd_done_q;
-
-   logic                    fifo_full, fifo_full_spec, fifo_empty;
-   logic                    dma_address_error, dma_alignment_error;
-   logic [3:0]              num_fifo_vld;
-   logic                    dma_mem_req;
-   logic [31:0]             dma_mem_addr_int;
-   logic [2:0]              dma_mem_sz_int;
-   logic [7:0]              dma_mem_byteen;
-   logic                    dma_mem_addr_in_dccm;
-   logic                    dma_mem_addr_in_iccm;
-   logic                    dma_mem_addr_in_pic;
-   logic                    dma_mem_addr_in_pic_region_nc;
-   logic                    dma_mem_addr_in_dccm_region_nc;
-   logic                    dma_mem_addr_in_iccm_region_nc;
-
-   logic [2:0]              dma_nack_count, dma_nack_count_d, dma_nack_count_csr;
-
-   logic                    dma_buffer_c1_clken;
-   logic                    dma_free_clken;
-   logic                    dma_buffer_c1_clk;
-   logic                    dma_free_clk;
-   logic                    dma_bus_clk;
-
-   logic                    bus_rsp_valid, bus_rsp_sent;
-   logic                    bus_cmd_valid, bus_cmd_sent;
-   logic                    bus_cmd_write, bus_cmd_posted_write;
-   logic [7:0]              bus_cmd_byteen;
-   logic [2:0]              bus_cmd_sz;
-   logic [31:0]             bus_cmd_addr;
-   logic [63:0]             bus_cmd_wdata;
-   logic [pt.DMA_BUS_TAG-1:0]  bus_cmd_tag;
-   logic [pt.DMA_BUS_ID-1:0]   bus_cmd_mid;
-   logic [pt.DMA_BUS_PRTY-1:0] bus_cmd_prty;
-   logic                    bus_posted_write_done;
-
-   logic                    fifo_full_spec_bus;
-   logic                    dbg_dma_bubble_bus;
-   logic                    stall_dma_in;
-   logic                    dma_fifo_ready;
-
-   logic                       wrbuf_en, wrbuf_data_en;
-   logic                       wrbuf_cmd_sent, wrbuf_rst, wrbuf_data_rst;
-   logic                       wrbuf_vld, wrbuf_data_vld;
-   logic [pt.DMA_BUS_TAG-1:0]  wrbuf_tag;
-   logic [2:0]                 wrbuf_sz;
-   logic [31:0]                wrbuf_addr;
-   logic [63:0]                wrbuf_data;
-   logic [7:0]                 wrbuf_byteen;
-
-   logic                       rdbuf_en;
-   logic                       rdbuf_cmd_sent, rdbuf_rst;
-   logic                       rdbuf_vld;
-   logic [pt.DMA_BUS_TAG-1:0]  rdbuf_tag;
-   logic [2:0]                 rdbuf_sz;
-   logic [31:0]                rdbuf_addr;
-
-   logic                       axi_mstr_prty_in, axi_mstr_prty_en;
-   logic                       axi_mstr_priority;
-   logic                       axi_mstr_sel;
-
-   logic                       axi_rsp_valid, axi_rsp_sent;
-   logic                       axi_rsp_write;
-   logic [pt.DMA_BUS_TAG-1:0]  axi_rsp_tag;
-   logic [1:0]                 axi_rsp_error;
-   logic [63:0]                axi_rsp_rdata;
-
-   //------------------------LOGIC STARTS HERE---------------------------------
-
-   // FIFO inputs
-   assign fifo_addr_in[31:0]    = dbg_cmd_valid ? dbg_cmd_addr[31:0] : bus_cmd_addr[31:0];
-   assign fifo_byteen_in[7:0]   = {8{~dbg_cmd_valid}} & bus_cmd_byteen[7:0];    // Byte enable is used only for bus requests
-   assign fifo_sz_in[2:0]       = dbg_cmd_valid ? {1'b0,dbg_cmd_size[1:0]} : bus_cmd_sz[2:0];
-   assign fifo_write_in         = dbg_cmd_valid ? dbg_cmd_write : bus_cmd_write;
-   assign fifo_posted_write_in  = ~dbg_cmd_valid & bus_cmd_posted_write;
-   assign fifo_dbg_in           = dbg_cmd_valid;
-
-   for (genvar i=0 ;i<DEPTH; i++) begin: GenFifo
-      assign fifo_cmd_en[i]   = ((bus_cmd_sent & dma_bus_clk_en) | (dbg_cmd_valid & dbg_cmd_type[1])) & (i == WrPtr[DEPTH_PTR-1:0]);
-      assign fifo_data_en[i] = (((bus_cmd_sent & fifo_write_in & dma_bus_clk_en) | (dbg_cmd_valid & dbg_cmd_type[1] & dbg_cmd_write))  & (i == WrPtr[DEPTH_PTR-1:0])) |
-                               ((dma_address_error | dma_alignment_error) & (i == RdPtr[DEPTH_PTR-1:0])) |
-                               (dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) |
-                               (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0])));
-      assign fifo_pend_en[i] = (dma_dccm_req | dma_iccm_req) & ~dma_mem_write & (i == RdPtr[DEPTH_PTR-1:0]);
-      assign fifo_error_en[i] = ((dma_address_error | dma_alignment_error | dma_dbg_cmd_error) & (i == RdPtr[DEPTH_PTR-1:0])) |
-                                ((dccm_dma_rvalid & dccm_dma_ecc_error) & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) |
-                                ((iccm_dma_rvalid & iccm_dma_ecc_error) & (i == DEPTH_PTR'(iccm_dma_rtag[2:0])));
-      assign fifo_error_bus_en[i] = (((|fifo_error_in[i][1:0]) & fifo_error_en[i]) | (|fifo_error[i])) & dma_bus_clk_en;
-      assign fifo_done_en[i] = ((|fifo_error[i] | fifo_error_en[i] | ((dma_dccm_req | dma_iccm_req) & dma_mem_write)) & (i == RdPtr[DEPTH_PTR-1:0])) |
-                               (dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) |
-                               (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0])));
-      assign fifo_done_bus_en[i] = (fifo_done_en[i] | fifo_done[i]) & dma_bus_clk_en;
-      assign fifo_reset[i] = (((bus_rsp_sent | bus_posted_write_done) & dma_bus_clk_en) | dma_dbg_cmd_done) & (i == RspPtr[DEPTH_PTR-1:0]);
-      assign fifo_error_in[i]   = (dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) ? {1'b0,dccm_dma_ecc_error} : (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0]))) ? {1'b0,iccm_dma_ecc_error}  :
-                                                                                                                {(dma_address_error | dma_alignment_error | dma_dbg_cmd_error), dma_alignment_error};
-      assign fifo_data_in[i]   = (fifo_error_en[i] & (|fifo_error_in[i])) ? {32'b0,fifo_addr[i]} :
-                                                        ((dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0])))  ? dccm_dma_rdata[63:0] : (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0]))) ? iccm_dma_rdata[63:0] :
-                                                                                                                                                       (dbg_cmd_valid ? {2{dma_dbg_mem_wrdata[31:0]}} : bus_cmd_wdata[63:0]));
-
-      rvdffsc #(1) fifo_valid_dff (.din(1'b1), .dout(fifo_valid[i]), .en(fifo_cmd_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(2) fifo_error_dff (.din(fifo_error_in[i]), .dout(fifo_error[i]), .en(fifo_error_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_error_bus_dff (.din(1'b1), .dout(fifo_error_bus[i]), .en(fifo_error_bus_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_rpend_dff (.din(1'b1), .dout(fifo_rpend[i]), .en(fifo_pend_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_done_dff (.din(1'b1), .dout(fifo_done[i]), .en(fifo_done_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_done_bus_dff (.din(1'b1), .dout(fifo_done_bus[i]), .en(fifo_done_bus_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffe  #(32) fifo_addr_dff (.din(fifo_addr_in[31:0]), .dout(fifo_addr[i]), .en(fifo_cmd_en[i]), .*);
-      rvdffs  #(3) fifo_sz_dff (.din(fifo_sz_in[2:0]), .dout(fifo_sz[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(8) fifo_byteen_dff (.din(fifo_byteen_in[7:0]), .dout(fifo_byteen[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(1) fifo_write_dff (.din(fifo_write_in), .dout(fifo_write[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(1) fifo_posted_write_dff (.din(fifo_posted_write_in), .dout(fifo_posted_write[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(1) fifo_dbg_dff (.din(fifo_dbg_in), .dout(fifo_dbg[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffe  #(64) fifo_data_dff (.din(fifo_data_in[i]), .dout(fifo_data[i]), .en(fifo_data_en[i]), .*);
-      rvdffs  #(pt.DMA_BUS_TAG) fifo_tag_dff(.din(bus_cmd_tag[pt.DMA_BUS_TAG-1:0]), .dout(fifo_tag[i][pt.DMA_BUS_TAG-1:0]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(pt.DMA_BUS_ID) fifo_mid_dff(.din(bus_cmd_mid[pt.DMA_BUS_ID-1:0]), .dout(fifo_mid[i][pt.DMA_BUS_ID-1:0]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(pt.DMA_BUS_PRTY) fifo_prty_dff(.din(bus_cmd_prty[pt.DMA_BUS_PRTY-1:0]), .dout(fifo_prty[i][pt.DMA_BUS_PRTY-1:0]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-   end
-
-   // Pointer logic
-   assign NxtWrPtr[DEPTH_PTR-1:0] = (WrPtr[DEPTH_PTR-1:0] == (DEPTH-1)) ? '0 : WrPtr[DEPTH_PTR-1:0] + 1'b1;
-   assign NxtRdPtr[DEPTH_PTR-1:0] = (RdPtr[DEPTH_PTR-1:0] == (DEPTH-1)) ? '0 : RdPtr[DEPTH_PTR-1:0] + 1'b1;
-   assign NxtRspPtr[DEPTH_PTR-1:0] = (RspPtr[DEPTH_PTR-1:0] == (DEPTH-1)) ? '0 : RspPtr[DEPTH_PTR-1:0] + 1'b1;
-
-   assign WrPtrEn = |fifo_cmd_en[DEPTH-1:0];
-   assign RdPtrEn = dma_dccm_req | dma_iccm_req | (dma_address_error | dma_alignment_error | dma_dbg_cmd_error);
-   assign RspPtrEn = (dma_dbg_cmd_done | (bus_rsp_sent | bus_posted_write_done) & dma_bus_clk_en);
-
-   rvdffs #(DEPTH_PTR) WrPtr_dff(.din(NxtWrPtr[DEPTH_PTR-1:0]), .dout(WrPtr[DEPTH_PTR-1:0]), .en(WrPtrEn), .clk(dma_free_clk), .*);
-   rvdffs #(DEPTH_PTR) RdPtr_dff(.din(NxtRdPtr[DEPTH_PTR-1:0]), .dout(RdPtr[DEPTH_PTR-1:0]), .en(RdPtrEn), .clk(dma_free_clk), .*);
-   rvdffs #(DEPTH_PTR) RspPtr_dff(.din(NxtRspPtr[DEPTH_PTR-1:0]), .dout(RspPtr[DEPTH_PTR-1:0]), .en(RspPtrEn), .clk(dma_free_clk), .*);
-
-   // Miscellaneous signals
-   assign fifo_full = fifo_full_spec_bus;
-
-   always_comb begin
-      num_fifo_vld[3:0] = {3'b0,bus_cmd_sent} - {3'b0,bus_rsp_sent};
-      for (int i=0; i<DEPTH; i++) begin
-         num_fifo_vld[3:0] += {3'b0,fifo_valid[i]};
-      end
-   end
-   assign fifo_full_spec          = (num_fifo_vld[3:0] >= DEPTH);
-
-   assign dma_fifo_ready = ~(fifo_full | dbg_dma_bubble_bus);
-
-   // Error logic
-   assign dma_address_error = fifo_valid[RdPtr] & ~fifo_done[RdPtr] & ~fifo_dbg[RdPtr] & (~(dma_mem_addr_in_dccm | dma_mem_addr_in_iccm));    // request not for ICCM or DCCM
-   assign dma_alignment_error = fifo_valid[RdPtr] & ~fifo_done[RdPtr] & ~fifo_dbg[RdPtr] & ~dma_address_error &
-                                (((dma_mem_sz_int[2:0] == 3'h1) & dma_mem_addr_int[0])                                                       |    // HW size but unaligned
-                                 ((dma_mem_sz_int[2:0] == 3'h2) & (|dma_mem_addr_int[1:0]))                                                  |    // W size but unaligned
-                                 ((dma_mem_sz_int[2:0] == 3'h3) & (|dma_mem_addr_int[2:0]))                                                  |    // DW size but unaligned
-                                 (dma_mem_addr_in_iccm & ~((dma_mem_sz_int[1:0] == 2'b10) | (dma_mem_sz_int[1:0] == 2'b11)))                 |    // ICCM access not word size
-                                 (dma_mem_addr_in_dccm & dma_mem_write & ~((dma_mem_sz_int[1:0] == 2'b10) | (dma_mem_sz_int[1:0] == 2'b11))) |    // DCCM write not word size
-                                 (dma_mem_write & (dma_mem_sz_int[2:0] == 3'h2) & (dma_mem_byteen[dma_mem_addr_int[2:0]+:4] != 4'hf))        |    // Write byte enables not aligned for word store
-                                 (dma_mem_write & (dma_mem_sz_int[2:0] == 3'h3) & ~((dma_mem_byteen[7:0] == 8'h0f) | (dma_mem_byteen[7:0] == 8'hf0) | (dma_mem_byteen[7:0] == 8'hff)))); // Write byte enables not aligned for dword store
-
-
-   //Dbg outputs
-   assign dma_dbg_ready    = fifo_empty & dbg_dma_bubble;
-   assign dma_dbg_cmd_done = (fifo_valid[RspPtr] & fifo_dbg[RspPtr] & fifo_done[RspPtr]);
-   assign dma_dbg_cmd_fail     = |fifo_error[RspPtr];
-
-   assign dma_dbg_sz[1:0]          = fifo_sz[RspPtr][1:0];
-   assign dma_dbg_addr[1:0]        = fifo_addr[RspPtr][1:0];
-   assign dma_dbg_mem_rddata[31:0] = fifo_addr[RspPtr][2] ? fifo_data[RspPtr][63:32] : fifo_data[RspPtr][31:0];
-   assign dma_dbg_rddata[31:0]     = ({32{(dma_dbg_sz[1:0] == 2'h0)}} & ((dma_dbg_mem_rddata[31:0] >> 8*dma_dbg_addr[1:0]) & 32'hff)) |
-                                     ({32{(dma_dbg_sz[1:0] == 2'h1)}} & ((dma_dbg_mem_rddata[31:0] >> 16*dma_dbg_addr[1]) & 32'hffff)) |
-                                     ({32{(dma_dbg_sz[1:0] == 2'h2)}} & dma_dbg_mem_rddata[31:0]);
-
-   assign dma_dbg_cmd_error = fifo_valid[RdPtr] & ~fifo_done[RdPtr] & fifo_dbg[RdPtr] &
-                                 ((~(dma_mem_addr_in_dccm | dma_mem_addr_in_iccm | dma_mem_addr_in_pic)) |             // Address outside of ICCM/DCCM/PIC
-                                  ((dma_mem_addr_in_iccm | dma_mem_addr_in_pic) & (dma_mem_sz_int[1:0] != 2'b10)));    // Only word accesses allowed for ICCM/PIC
-
-   assign dma_dbg_mem_wrdata[31:0] = ({32{dbg_cmd_size[1:0] == 2'h0}} & {4{dbg_cmd_wrdata[7:0]}}) |
-                                     ({32{dbg_cmd_size[1:0] == 2'h1}} & {2{dbg_cmd_wrdata[15:0]}}) |
-                                     ({32{dbg_cmd_size[1:0] == 2'h2}} & dbg_cmd_wrdata[31:0]);
-
-   // Block the decode if fifo full
-   assign dma_dccm_stall_any = dma_mem_req & (dma_mem_addr_in_dccm | dma_mem_addr_in_pic) & (dma_nack_count >= dma_nack_count_csr);
-   assign dma_iccm_stall_any = dma_mem_req & dma_mem_addr_in_iccm & (dma_nack_count >= dma_nack_count_csr);
-
-   // Used to indicate ready to debug
-   assign fifo_empty     = ~((|(fifo_valid[DEPTH-1:0])) | bus_cmd_sent);
-
-   // Nack counter, stall the lsu pipe if 7 nacks
-   assign dma_nack_count_csr[2:0] = dec_tlu_dma_qos_prty[2:0];
-   assign dma_nack_count_d[2:0] = (dma_nack_count[2:0] >= dma_nack_count_csr[2:0]) ? ({3{~(dma_dccm_req | dma_iccm_req)}} & dma_nack_count[2:0]) :
-                                                                                    (dma_mem_req & ~(dma_dccm_req | dma_iccm_req)) ? (dma_nack_count[2:0] + 1'b1) : 3'b0;
-
-   rvdffs #(3) nack_count_dff(.din(dma_nack_count_d[2:0]), .dout(dma_nack_count[2:0]), .en(dma_mem_req), .clk(dma_free_clk), .*);
-
-   // Core outputs
-   assign dma_mem_req         = fifo_valid[RdPtr] & ~fifo_rpend[RdPtr] & ~fifo_done[RdPtr] & ~(dma_address_error | dma_alignment_error | dma_dbg_cmd_error);
-   assign dma_dccm_req        = dma_mem_req & (dma_mem_addr_in_dccm | dma_mem_addr_in_pic) & dccm_ready;
-   assign dma_iccm_req        = dma_mem_req & dma_mem_addr_in_iccm & iccm_ready;
-   assign dma_mem_tag[2:0]    = 3'(RdPtr);
-   assign dma_mem_addr_int[31:0] = fifo_addr[RdPtr];
-   assign dma_mem_sz_int[2:0] = fifo_sz[RdPtr];
-   assign dma_mem_addr[31:0]  = (dma_mem_write & ~fifo_dbg[RdPtr] & (dma_mem_byteen[7:0] == 8'hf0)) ? {dma_mem_addr_int[31:3],1'b1,dma_mem_addr_int[1:0]} : dma_mem_addr_int[31:0];
-   assign dma_mem_sz[2:0]     = (dma_mem_write & ~fifo_dbg[RdPtr] & ((dma_mem_byteen[7:0] == 8'h0f) | (dma_mem_byteen[7:0] == 8'hf0))) ? 3'h2 : dma_mem_sz_int[2:0];
-   assign dma_mem_byteen[7:0] = fifo_byteen[RdPtr];
-   assign dma_mem_write       = fifo_write[RdPtr];
-   assign dma_mem_wdata[63:0] = fifo_data[RdPtr];
-
-   // PMU outputs
-   assign dma_pmu_dccm_read   = dma_dccm_req & ~dma_mem_write;
-   assign dma_pmu_dccm_write  = dma_dccm_req & dma_mem_write;
-   assign dma_pmu_any_read    = (dma_dccm_req | dma_iccm_req) & ~dma_mem_write;
-   assign dma_pmu_any_write   = (dma_dccm_req | dma_iccm_req) & dma_mem_write;
-
-   // Address check  dccm
-   if (pt.DCCM_ENABLE) begin: Gen_dccm_enable
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) addr_dccm_rangecheck (
-         .addr(dma_mem_addr_int[31:0]),
-         .in_range(dma_mem_addr_in_dccm),
-         .in_region(dma_mem_addr_in_dccm_region_nc)
-      );
-   end else begin: Gen_dccm_disable
-      assign dma_mem_addr_in_dccm = '0;
-      assign dma_mem_addr_in_dccm_region_nc = '0;
-   end // else: !if(pt.ICCM_ENABLE)
-
-   // Address check  iccm
-   if (pt.ICCM_ENABLE) begin: Gen_iccm_enable
-      rvrangecheck #(.CCM_SADR(pt.ICCM_SADR),
-                     .CCM_SIZE(pt.ICCM_SIZE)) addr_iccm_rangecheck (
-         .addr(dma_mem_addr_int[31:0]),
-         .in_range(dma_mem_addr_in_iccm),
-         .in_region(dma_mem_addr_in_iccm_region_nc)
-      );
-   end else begin: Gen_iccm_disable
-      assign dma_mem_addr_in_iccm = '0;
-      assign dma_mem_addr_in_iccm_region_nc = '0;
-   end // else: !if(pt.ICCM_ENABLE)
-
-
-   // PIC memory address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) addr_pic_rangecheck (
-      .addr(dma_mem_addr_int[31:0]),
-      .in_range(dma_mem_addr_in_pic),
-      .in_region(dma_mem_addr_in_pic_region_nc)
-    );
-
-   // Inputs
-   rvdff_fpga #(1) fifo_full_bus_ff     (.din(fifo_full_spec),   .dout(fifo_full_spec_bus), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(1) dbg_dma_bubble_ff    (.din(dbg_dma_bubble),   .dout(dbg_dma_bubble_bus), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdff      #(1) dma_dbg_cmd_doneff   (.din(dma_dbg_cmd_done), .dout(dma_dbg_cmd_done_q), .clk(free_clk), .*);
-
-   // Clock Gating logic
-   assign dma_buffer_c1_clken = (bus_cmd_valid & dma_bus_clk_en) | dbg_cmd_valid | clk_override;
-   assign dma_free_clken = (bus_cmd_valid | bus_rsp_valid | dbg_cmd_valid | dma_dbg_cmd_done | dma_dbg_cmd_done_q | (|fifo_valid[DEPTH-1:0]) | clk_override);
-
-   rvoclkhdr dma_buffer_c1cgc ( .en(dma_buffer_c1_clken), .l1clk(dma_buffer_c1_clk), .* );
-   rvoclkhdr dma_free_cgc (.en(dma_free_clken), .l1clk(dma_free_clk), .*);
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign dma_bus_clk = 1'b0;
-`else
-   rvclkhdr  dma_bus_cgc (.en(dma_bus_clk_en), .l1clk(dma_bus_clk), .*);
-`endif
-
-   // Write channel buffer
-   assign wrbuf_en       = dma_axi_awvalid & dma_axi_awready;
-   assign wrbuf_data_en  = dma_axi_wvalid & dma_axi_wready;
-   assign wrbuf_cmd_sent = bus_cmd_sent & bus_cmd_write;
-   assign wrbuf_rst      = wrbuf_cmd_sent & ~wrbuf_en;
-   assign wrbuf_data_rst = wrbuf_cmd_sent & ~wrbuf_data_en;
-
-   rvdffsc_fpga  #(.WIDTH(1))              wrbuf_vldff       (.din(1'b1), .dout(wrbuf_vld),      .en(wrbuf_en),      .clear(wrbuf_rst),      .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffsc_fpga  #(.WIDTH(1))              wrbuf_data_vldff  (.din(1'b1), .dout(wrbuf_data_vld), .en(wrbuf_data_en), .clear(wrbuf_data_rst), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(pt.DMA_BUS_TAG)) wrbuf_tagff       (.din(dma_axi_awid[pt.DMA_BUS_TAG-1:0]), .dout(wrbuf_tag[pt.DMA_BUS_TAG-1:0]), .en(wrbuf_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(3))              wrbuf_szff        (.din(dma_axi_awsize[2:0]),  .dout(wrbuf_sz[2:0]),     .en(wrbuf_en),                  .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffe        #(.WIDTH(32))             wrbuf_addrff      (.din(dma_axi_awaddr[31:0]), .dout(wrbuf_addr[31:0]),  .en(wrbuf_en & dma_bus_clk_en), .*);
-   rvdffe        #(.WIDTH(64))             wrbuf_dataff      (.din(dma_axi_wdata[63:0]),  .dout(wrbuf_data[63:0]),  .en(wrbuf_data_en & dma_bus_clk_en), .*);
-   rvdffs_fpga   #(.WIDTH(8))              wrbuf_byteenff    (.din(dma_axi_wstrb[7:0]),   .dout(wrbuf_byteen[7:0]), .en(wrbuf_data_en),             .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-
-   // Read channel buffer
-   assign rdbuf_en    = dma_axi_arvalid & dma_axi_arready;
-   assign rdbuf_cmd_sent = bus_cmd_sent & ~bus_cmd_write;
-   assign rdbuf_rst   = rdbuf_cmd_sent & ~rdbuf_en;
-
-   rvdffsc_fpga  #(.WIDTH(1))              rdbuf_vldff  (.din(1'b1), .dout(rdbuf_vld), .en(rdbuf_en), .clear(rdbuf_rst), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(pt.DMA_BUS_TAG)) rdbuf_tagff  (.din(dma_axi_arid[pt.DMA_BUS_TAG-1:0]), .dout(rdbuf_tag[pt.DMA_BUS_TAG-1:0]), .en(rdbuf_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(3))              rdbuf_szff   (.din(dma_axi_arsize[2:0]),  .dout(rdbuf_sz[2:0]),    .en(rdbuf_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32))              rdbuf_addrff (.din(dma_axi_araddr[31:0]), .dout(rdbuf_addr[31:0]), .en(rdbuf_en & dma_bus_clk_en), .*);
-
-   assign dma_axi_awready = ~(wrbuf_vld & ~wrbuf_cmd_sent);
-   assign dma_axi_wready  = ~(wrbuf_data_vld & ~wrbuf_cmd_sent);
-   assign dma_axi_arready = ~(rdbuf_vld & ~rdbuf_cmd_sent);
-
-   //Generate a single request from read/write channel
-   assign bus_cmd_valid                     = (wrbuf_vld & wrbuf_data_vld) | rdbuf_vld;
-   assign bus_cmd_sent                      = bus_cmd_valid & dma_fifo_ready;
-   assign bus_cmd_write                     = axi_mstr_sel;
-   assign bus_cmd_posted_write              = '0;
-   assign bus_cmd_addr[31:0]                = axi_mstr_sel ? wrbuf_addr[31:0] : rdbuf_addr[31:0];
-   assign bus_cmd_sz[2:0]                   = axi_mstr_sel ? wrbuf_sz[2:0] : rdbuf_sz[2:0];
-   assign bus_cmd_wdata[63:0]               = wrbuf_data[63:0];
-   assign bus_cmd_byteen[7:0]               = wrbuf_byteen[7:0];
-   assign bus_cmd_tag[pt.DMA_BUS_TAG-1:0]   = axi_mstr_sel ? wrbuf_tag[pt.DMA_BUS_TAG-1:0] : rdbuf_tag[pt.DMA_BUS_TAG-1:0];
-   assign bus_cmd_mid[pt.DMA_BUS_ID-1:0]    = '0;
-   assign bus_cmd_prty[pt.DMA_BUS_PRTY-1:0] = '0;
-
-   // Sel=1 -> write has higher priority
-   assign axi_mstr_sel     = (wrbuf_vld & wrbuf_data_vld & rdbuf_vld) ? axi_mstr_priority : (wrbuf_vld & wrbuf_data_vld);
-   assign axi_mstr_prty_in = ~axi_mstr_priority;
-   assign axi_mstr_prty_en = bus_cmd_sent;
-   rvdffs_fpga #(.WIDTH(1)) mstr_prtyff(.din(axi_mstr_prty_in), .dout(axi_mstr_priority), .en(axi_mstr_prty_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-
-   assign axi_rsp_valid                   = fifo_valid[RspPtr] & ~fifo_dbg[RspPtr] & fifo_done_bus[RspPtr];
-   assign axi_rsp_rdata[63:0]             = fifo_data[RspPtr];
-   assign axi_rsp_write                   = fifo_write[RspPtr];
-   assign axi_rsp_error[1:0]              = fifo_error[RspPtr][0] ? 2'b10 : (fifo_error[RspPtr][1] ? 2'b11 : 2'b0);
-   assign axi_rsp_tag[pt.DMA_BUS_TAG-1:0] = fifo_tag[RspPtr];
-
-   // AXI response channel signals
-   assign dma_axi_bvalid                  = axi_rsp_valid & axi_rsp_write;
-   assign dma_axi_bresp[1:0]              = axi_rsp_error[1:0];
-   assign dma_axi_bid[pt.DMA_BUS_TAG-1:0] = axi_rsp_tag[pt.DMA_BUS_TAG-1:0];
-
-   assign dma_axi_rvalid                  = axi_rsp_valid & ~axi_rsp_write;
-   assign dma_axi_rresp[1:0]              = axi_rsp_error;
-   assign dma_axi_rdata[63:0]             = axi_rsp_rdata[63:0];
-   assign dma_axi_rlast                   = 1'b1;
-   assign dma_axi_rid[pt.DMA_BUS_TAG-1:0] = axi_rsp_tag[pt.DMA_BUS_TAG-1:0];
-
-   assign bus_posted_write_done = 1'b0;
-   assign bus_rsp_valid      = (dma_axi_bvalid | dma_axi_rvalid);
-   assign bus_rsp_sent       = (dma_axi_bvalid & dma_axi_bready) | (dma_axi_rvalid & dma_axi_rready);
-
-   assign dma_active  = wrbuf_vld | rdbuf_vld | (|fifo_valid[DEPTH-1:0]);
-
-
-`ifdef RV_ASSERT_ON
-
-   for (genvar i=0; i<DEPTH; i++) begin
-      assert_fifo_done_and_novalid: assert #0 (~fifo_done[i] | fifo_valid[i]);
-   end
-
-   // Assertion to check awvalid stays stable during entire bus clock
-   property dma_axi_awvalid_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_awvalid != $past(dma_axi_awvalid)) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_awvalid_stable: assert property (dma_axi_awvalid_stable) else
-      $display("DMA AXI awvalid changed in middle of bus clock");
-
-   // Assertion to check awid stays stable during entire bus clock
-   property dma_axi_awid_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_awvalid & (dma_axi_awid[pt.DMA_BUS_TAG-1:0] != $past(dma_axi_awid[pt.DMA_BUS_TAG-1:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_awid_stable: assert property (dma_axi_awid_stable) else
-      $display("DMA AXI awid changed in middle of bus clock");
-
-   // Assertion to check awaddr stays stable during entire bus clock
-   property dma_axi_awaddr_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_awvalid & (dma_axi_awaddr[31:0] != $past(dma_axi_awaddr[31:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_awaddr_stable: assert property (dma_axi_awaddr_stable) else
-      $display("DMA AXI awaddr changed in middle of bus clock");
-
-   // Assertion to check awsize stays stable during entire bus clock
-   property dma_axi_awsize_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_awvalid & (dma_axi_awsize[2:0] != $past(dma_axi_awsize[2:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_awsize_stable: assert property (dma_axi_awsize_stable) else
-      $display("DMA AXI awsize changed in middle of bus clock");
-
-   // Assertion to check wstrb stays stable during entire bus clock
-   property dma_axi_wstrb_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_wvalid & (dma_axi_wstrb[7:0] != $past(dma_axi_wstrb[7:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_wstrb_stable: assert property (dma_axi_wstrb_stable) else
-      $display("DMA AXI wstrb changed in middle of bus clock");
-
-   // Assertion to check wdata stays stable during entire bus clock
-   property dma_axi_wdata_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_wvalid & (dma_axi_wdata[63:0] != $past(dma_axi_wdata[63:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_wdata_stable: assert property (dma_axi_wdata_stable) else
-      $display("DMA AXI wdata changed in middle of bus clock");
-
-   // Assertion to check awvalid stays stable during entire bus clock
-   property dma_axi_arvalid_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_arvalid != $past(dma_axi_arvalid)) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_arvalid_stable: assert property (dma_axi_arvalid_stable) else
-      $display("DMA AXI awvalid changed in middle of bus clock");
-
-   // Assertion to check awid stays stable during entire bus clock
-   property dma_axi_arid_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_arvalid & (dma_axi_arid[pt.DMA_BUS_TAG-1:0] != $past(dma_axi_arid[pt.DMA_BUS_TAG-1:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_arid_stable: assert property (dma_axi_arid_stable) else
-      $display("DMA AXI awid changed in middle of bus clock");
-
-   // Assertion to check awaddr stays stable during entire bus clock
-   property dma_axi_araddr_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_arvalid & (dma_axi_araddr[31:0] != $past(dma_axi_araddr[31:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_araddr_stable: assert property (dma_axi_araddr_stable) else
-      $display("DMA AXI awaddr changed in middle of bus clock");
-
-   // Assertion to check awsize stays stable during entire bus clock
-   property dma_axi_arsize_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_awvalid & (dma_axi_arsize[2:0] != $past(dma_axi_arsize[2:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_arsize_stable: assert property (dma_axi_arsize_stable) else
-      $display("DMA AXI awsize changed in middle of bus clock");
-
-   // Assertion to check bvalid stays stable during entire bus clock
-   property dma_axi_bvalid_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_bvalid != $past(dma_axi_bvalid)) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_bvalid_stable: assert property (dma_axi_bvalid_stable) else
-      $display("DMA AXI bvalid changed in middle of bus clock");
-
-   // Assertion to check bvalid stays stable if bready is low
-   property dma_axi_bvalid_stable_till_bready;
-      @(posedge clk) disable iff(~rst_l)  (~dma_axi_bvalid && $past(dma_axi_bvalid)) |-> $past(dma_axi_bready);
-   endproperty
-   assert_dma_axi_bvalid_stable_till_bready: assert property (dma_axi_bvalid_stable_till_bready) else
-      $display("DMA AXI bvalid deasserted without bready");
-
-   // Assertion to check bresp stays stable during entire bus clock
-   property dma_axi_bresp_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_bvalid & (dma_axi_bresp[1:0] != $past(dma_axi_bresp[1:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_bresp_stable: assert property (dma_axi_bresp_stable) else
-      $display("DMA AXI bresp changed in middle of bus clock");
-
-   // Assertion to check bid stays stable during entire bus clock
-   property dma_axi_bid_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_bvalid & (dma_axi_bid[pt.DMA_BUS_TAG-1:0] != $past(dma_axi_bid[pt.DMA_BUS_TAG-1:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_bid_stable: assert property (dma_axi_bid_stable) else
-      $display("DMA AXI bid changed in middle of bus clock");
-
-   // Assertion to check rvalid stays stable during entire bus clock
-   property dma_axi_rvalid_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_rvalid != $past(dma_axi_rvalid)) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_rvalid_stable: assert property (dma_axi_rvalid_stable) else
-      $display("DMA AXI bvalid changed in middle of bus clock");
-
-   // Assertion to check rvalid stays stable if bready is low
-   property dma_axi_rvalid_stable_till_ready;
-      @(posedge clk) disable iff(~rst_l)  (~dma_axi_rvalid && $past(dma_axi_rvalid)) |-> $past(dma_axi_rready);
-   endproperty
-   assert_dma_axi_rvalid_stable_till_ready: assert property (dma_axi_rvalid_stable_till_ready) else
-      $display("DMA AXI bvalid changed in middle of bus clock");
-
-   // Assertion to check rresp stays stable during entire bus clock
-   property dma_axi_rresp_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_rvalid & (dma_axi_rresp[1:0] != $past(dma_axi_rresp[1:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_rresp_stable: assert property (dma_axi_rresp_stable) else
-      $display("DMA AXI bresp changed in middle of bus clock");
-
-   // Assertion to check rid stays stable during entire bus clock
-   property dma_axi_rid_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_rvalid & (dma_axi_rid[pt.DMA_BUS_TAG-1:0] != $past(dma_axi_rid[pt.DMA_BUS_TAG-1:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_rid_stable: assert property (dma_axi_rid_stable) else
-      $display("DMA AXI bid changed in middle of bus clock");
-
-   // Assertion to check rdata stays stable during entire bus clock
-   property dma_axi_rdata_stable;
-      @(posedge clk) disable iff(~rst_l)  (dma_axi_rvalid & (dma_axi_rdata[63:0] != $past(dma_axi_rdata[63:0]))) |-> $past(dma_bus_clk_en);
-   endproperty
-   assert_dma_axi_rdata_stable: assert property (dma_axi_rdata_stable) else
-      $display("DMA AXI bid changed in middle of bus clock");
-
-`endif
-
-endmodule // eb1_dma_ctrl
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_exu.sv b/verilog/rtl/BrqRV_EB1/design/eb1_exu.sv
deleted file mode 100644
index 5df586a..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_exu.sv
+++ /dev/null
@@ -1,369 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
-)
-  (
-   input logic          clk,                                           // Top level clock
-   input logic          rst_l,                                         // Reset
-   input logic          scan_mode,                                     // Scan control
-
-   input logic  [1:0]   dec_data_en,                                   // Clock enable {x,r}, one cycle pulse
-   input logic  [1:0]   dec_ctl_en,                                    // Clock enable {x,r}, two cycle pulse
-   input logic  [31:0]  dbg_cmd_wrdata,                                // Debug data   to primary I0 RS1
-   input eb1_alu_pkt_t i0_ap,                                         // DEC alu {valid,predecodes}
-
-   input logic          dec_debug_wdata_rs1_d,                         // Debug select to primary I0 RS1
-
-   input eb1_predict_pkt_t dec_i0_predict_p_d,                        // DEC branch predict packet
-   input logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d,                // DEC predict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d,     // DEC predict index
-   input logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d,               // DEC predict branch tag
-
-   input logic  [31:0]  lsu_result_m,                                  // Load result M-stage
-   input logic  [31:0]  lsu_nonblock_load_data,                        // nonblock load data
-   input logic          dec_i0_rs1_en_d,                               // Qualify GPR RS1 data
-   input logic          dec_i0_rs2_en_d,                               // Qualify GPR RS2 data
-   input logic  [31:0]  gpr_i0_rs1_d,                                  // DEC data gpr
-   input logic  [31:0]  gpr_i0_rs2_d,                                  // DEC data gpr
-   input logic  [31:0]  dec_i0_immed_d,                                // DEC data immediate
-   input logic  [31:0]  dec_i0_result_r,                               // DEC result in R-stage
-   input logic  [12:1]  dec_i0_br_immed_d,                             // Branch immediate
-   input logic          dec_i0_alu_decode_d,                           // Valid to X-stage ALU
-   input logic          dec_i0_branch_d,                               // Branch in D-stage
-   input logic          dec_i0_select_pc_d,                            // PC select to RS1
-   input logic  [31:1]  dec_i0_pc_d,                                   // Instruction PC
-   input logic  [3:0]   dec_i0_rs1_bypass_en_d,                        // DEC bypass select  1 - X-stage, 0 - dec bypass data
-   input logic  [3:0]   dec_i0_rs2_bypass_en_d,                        // DEC bypass select  1 - X-stage, 0 - dec bypass data
-   input logic          dec_csr_ren_d,                                 // CSR read select
-   input logic  [31:0]  dec_csr_rddata_d,                              // CSR read data
-
-   input logic          dec_qual_lsu_d,                                // LSU instruction at D.  Use to quiet LSU operands
-   input eb1_mul_pkt_t mul_p,                                         // DEC {valid, operand signs, low, operand bypass}
-   input eb1_div_pkt_t div_p,                                         // DEC {valid, unsigned, rem}
-   input logic          dec_div_cancel,                                // Cancel the divide operation
-
-   input logic  [31:1]  pred_correct_npc_x,                            // DEC NPC for correctly predicted branch
-
-   input logic          dec_tlu_flush_lower_r,                         // Flush divide and secondary ALUs
-   input logic  [31:1]  dec_tlu_flush_path_r,                          // Redirect target
-
-
-   input logic         dec_extint_stall,                               // External stall mux select
-   input logic [31:2]  dec_tlu_meihap,                                 // External stall mux data
-
-
-   output logic [31:0]  exu_lsu_rs1_d,                                 // LSU operand
-   output logic [31:0]  exu_lsu_rs2_d,                                 // LSU operand
-
-   output logic         exu_flush_final,                               // Pipe is being flushed this cycle
-   output logic [31:1]  exu_flush_path_final,                          // Target for the oldest flush source
-
-   output logic [31:0]  exu_i0_result_x,                               // Primary ALU result to DEC
-   output logic [31:1]  exu_i0_pc_x,                                   // Primary PC  result to DEC
-   output logic [31:0]  exu_csr_rs1_x,                                 // RS1 source for a CSR instruction
-
-   output logic [31:1]  exu_npc_r,                                     // Divide NPC
-   output logic [1:0]   exu_i0_br_hist_r,                              // to DEC  I0 branch history
-   output logic         exu_i0_br_error_r,                             // to DEC  I0 branch error
-   output logic         exu_i0_br_start_error_r,                       // to DEC  I0 branch start error
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r,     // to DEC  I0 branch index
-   output logic         exu_i0_br_valid_r,                             // to DEC  I0 branch valid
-   output logic         exu_i0_br_mp_r,                                // to DEC  I0 branch mispredict
-   output logic         exu_i0_br_middle_r,                            // to DEC  I0 branch middle
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_i0_br_fghr_r,               // to DEC  I0 branch fghr
-   output logic         exu_i0_br_way_r,                               // to DEC  I0 branch way
-
-   output eb1_predict_pkt_t exu_mp_pkt,                               // Mispredict branch packet
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_eghr,                    // Mispredict global history
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   output logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-
-   output logic         exu_pmu_i0_br_misp,                            // to PMU - I0 E4 branch mispredict
-   output logic         exu_pmu_i0_br_ataken,                          // to PMU - I0 E4 taken
-   output logic         exu_pmu_i0_pc4,                                // to PMU - I0 E4 PC
-
-
-   output logic [31:0]  exu_div_result,                                // Divide result
-   output logic         exu_div_wren                                   // Divide write enable to GPR
-  );
-
-
-
-
-   logic [31:0]                i0_rs1_bypass_data_d;
-   logic [31:0]                i0_rs2_bypass_data_d;
-   logic                       i0_rs1_bypass_en_d;
-   logic                       i0_rs2_bypass_en_d;
-   logic [31:0]                i0_rs1_d,  i0_rs2_d;
-   logic [31:0]                muldiv_rs1_d;
-   logic [31:1]                pred_correct_npc_r;
-   logic                       i0_pred_correct_upper_r;
-   logic [31:1]                i0_flush_path_upper_r;
-   logic                       x_data_en, x_data_en_q1, x_data_en_q2, r_data_en, r_data_en_q2;
-   logic                       x_ctl_en,  r_ctl_en;
-
-   logic [pt.BHT_GHR_SIZE-1:0] ghr_d_ns, ghr_d;
-   logic [pt.BHT_GHR_SIZE-1:0] ghr_x_ns, ghr_x;
-   logic                       i0_taken_d;
-   logic                       i0_taken_x;
-   logic                       i0_valid_d;
-   logic                       i0_valid_x;
-   logic [pt.BHT_GHR_SIZE-1:0] after_flush_eghr;
-
-   eb1_predict_pkt_t          final_predict_mp;
-   eb1_predict_pkt_t          i0_predict_newp_d;
-
-   logic                       flush_in_d;
-   logic [31:0]                alu_result_x;
-
-   logic                       mul_valid_x;
-   logic [31:0]                mul_result_x;
-
-   eb1_predict_pkt_t          i0_pp_r;
-
-   logic                       i0_flush_upper_d;
-   logic [31:1]                i0_flush_path_d;
-   eb1_predict_pkt_t          i0_predict_p_d;
-   logic                       i0_pred_correct_upper_d;
-
-   logic                       i0_flush_upper_x;
-   logic [31:1]                i0_flush_path_x;
-   eb1_predict_pkt_t          i0_predict_p_x;
-   logic                       i0_pred_correct_upper_x;
-   logic                       i0_branch_x;
-
-   localparam PREDPIPESIZE = pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1+pt.BHT_GHR_SIZE+pt.BTB_BTAG_SIZE;
-   logic [PREDPIPESIZE-1:0]    predpipe_d, predpipe_x, predpipe_r, final_predpipe_mp;
-
-
-
-
-   rvdffpcie #(31)                       i_flush_path_x_ff    (.*, .clk(clk),        .en ( x_data_en     ),  .din ( i0_flush_path_d[31:1]         ),  .dout( i0_flush_path_x[31:1]      ) );
-   rvdffe #(32)                          i_csr_rs1_x_ff       (.*, .clk(clk),        .en ( x_data_en_q1  ),  .din ( i0_rs1_d[31:0]                ),  .dout( exu_csr_rs1_x[31:0]        ) );
-   rvdffppe #($bits(eb1_predict_pkt_t)) i_predictpacket_x_ff (.*, .clk(clk),        .en ( x_data_en     ),  .din ( i0_predict_p_d                ),  .dout( i0_predict_p_x             ) );
-   rvdffe #(PREDPIPESIZE)                i_predpipe_x_ff      (.*, .clk(clk),        .en ( x_data_en_q2  ),  .din ( predpipe_d                    ),  .dout( predpipe_x                 ) );
-   rvdffe #(PREDPIPESIZE)                i_predpipe_r_ff      (.*, .clk(clk),        .en ( r_data_en_q2  ),  .din ( predpipe_x                    ),  .dout( predpipe_r                 ) );
-
-   rvdffe #(4+pt.BHT_GHR_SIZE)          i_x_ff               (.*, .clk(clk),        .en ( x_ctl_en      ),  .din ({i0_valid_d,i0_taken_d,i0_flush_upper_d,i0_pred_correct_upper_d,ghr_x_ns[pt.BHT_GHR_SIZE-1:0]} ),
-                                                                                                            .dout({i0_valid_x,i0_taken_x,i0_flush_upper_x,i0_pred_correct_upper_x,ghr_x[pt.BHT_GHR_SIZE-1:0]}    ) );
-
-   rvdffppe #($bits(eb1_predict_pkt_t)+1) i_r_ff0         (.*, .clk(clk),        .en ( r_ctl_en      ),  .din ({i0_pred_correct_upper_x, i0_predict_p_x}),
-                                                                                                          .dout({i0_pred_correct_upper_r, i0_pp_r       }) );
-
-   rvdffpcie #(31)                      i_flush_r_ff         (.*, .clk(clk),        .en ( r_data_en     ),  .din ( i0_flush_path_x[31:1]         ),  .dout( i0_flush_path_upper_r[31:1]) );
-   rvdffpcie #(31)                      i_npc_r_ff           (.*, .clk(clk),        .en ( r_data_en     ),  .din ( pred_correct_npc_x[31:1]      ),  .dout( pred_correct_npc_r[31:1]   ) );
-
-   rvdffie #(pt.BHT_GHR_SIZE+2,1)       i_misc_ff            (.*, .clk(clk),                                .din ({ghr_d_ns[pt.BHT_GHR_SIZE-1:0], mul_p.valid, dec_i0_branch_d}),
-                                                                                                            .dout({ghr_d[pt.BHT_GHR_SIZE-1:0]   , mul_valid_x, i0_branch_x}) );
-
-
-
-
-
-   assign predpipe_d[PREDPIPESIZE-1:0]
-                                   = {i0_predict_fghr_d, i0_predict_index_d, i0_predict_btag_d};
-
-
-   assign i0_rs1_bypass_en_d       = dec_i0_rs1_bypass_en_d[0] | dec_i0_rs1_bypass_en_d[1] | dec_i0_rs1_bypass_en_d[2] | dec_i0_rs1_bypass_en_d[3];
-   assign i0_rs2_bypass_en_d       = dec_i0_rs2_bypass_en_d[0] | dec_i0_rs2_bypass_en_d[1] | dec_i0_rs2_bypass_en_d[2] | dec_i0_rs2_bypass_en_d[3];
-
-   assign i0_rs1_bypass_data_d[31:0]=({32{dec_i0_rs1_bypass_en_d[0]}} & dec_i0_result_r[31:0]       ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[1]}} & lsu_result_m[31:0]          ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[2]}} & exu_i0_result_x[31:0]       ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[3]}} & lsu_nonblock_load_data[31:0]);
-
-   assign i0_rs2_bypass_data_d[31:0]=({32{dec_i0_rs2_bypass_en_d[0]}} & dec_i0_result_r[31:0]       ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[1]}} & lsu_result_m[31:0]          ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[2]}} & exu_i0_result_x[31:0]       ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[3]}} & lsu_nonblock_load_data[31:0]);
-
-
-   assign i0_rs1_d[31:0]           = ({32{ i0_rs1_bypass_en_d                                           }}             & i0_rs1_bypass_data_d[31:0]) |
-                                     ({32{~i0_rs1_bypass_en_d &  dec_i0_select_pc_d                     }}             & {dec_i0_pc_d[31:1],1'b0}  ) |    // for jal's
-                                     ({32{~i0_rs1_bypass_en_d &  dec_debug_wdata_rs1_d                  }}             & dbg_cmd_wrdata[31:0]      ) |
-                                     ({32{~i0_rs1_bypass_en_d & ~dec_debug_wdata_rs1_d & dec_i0_rs1_en_d}}             & gpr_i0_rs1_d[31:0]        );
-
-   assign i0_rs2_d[31:0]           = ({32{~i0_rs2_bypass_en_d & dec_i0_rs2_en_d}}                                      & gpr_i0_rs2_d[31:0]        ) |
-                                     ({32{~i0_rs2_bypass_en_d                  }}                                      & dec_i0_immed_d[31:0]      ) |
-                                     ({32{ i0_rs2_bypass_en_d                  }}                                      & i0_rs2_bypass_data_d[31:0]);
-
-
-   assign exu_lsu_rs1_d[31:0]      = ({32{~i0_rs1_bypass_en_d & ~dec_extint_stall & dec_i0_rs1_en_d & dec_qual_lsu_d}} & gpr_i0_rs1_d[31:0]        ) |
-                                     ({32{ i0_rs1_bypass_en_d & ~dec_extint_stall                   & dec_qual_lsu_d}} & i0_rs1_bypass_data_d[31:0]) |
-                                     ({32{                       dec_extint_stall                   & dec_qual_lsu_d}} & {dec_tlu_meihap[31:2],2'b0});
-
-   assign exu_lsu_rs2_d[31:0]      = ({32{~i0_rs2_bypass_en_d & ~dec_extint_stall & dec_i0_rs2_en_d & dec_qual_lsu_d}} & gpr_i0_rs2_d[31:0]        ) |
-                                     ({32{ i0_rs2_bypass_en_d & ~dec_extint_stall                   & dec_qual_lsu_d}} & i0_rs2_bypass_data_d[31:0]);
-
-
-   assign muldiv_rs1_d[31:0]       = ({32{~i0_rs1_bypass_en_d & dec_i0_rs1_en_d}}                                      & gpr_i0_rs1_d[31:0]        ) |
-                                     ({32{ i0_rs1_bypass_en_d                  }}                                      & i0_rs1_bypass_data_d[31:0]);
-
-
-   assign x_data_en                =  dec_data_en[1];
-   assign x_data_en_q1             =  dec_data_en[1] & dec_csr_ren_d;
-   assign x_data_en_q2             =  dec_data_en[1] & dec_i0_branch_d;
-   assign r_data_en                =  dec_data_en[0];
-   assign r_data_en_q2             =  dec_data_en[0] & i0_branch_x;
-   assign x_ctl_en                 =  dec_ctl_en[1];
-   assign r_ctl_en                 =  dec_ctl_en[0];
-
-
-
-
-   eb1_exu_alu_ctl #(.pt(pt)) i_alu  (.*,
-                          .enable            ( x_data_en                   ),   // I
-                          .pp_in             ( i0_predict_newp_d           ),   // I
-                          .valid_in          ( dec_i0_alu_decode_d         ),   // I
-                          .flush_upper_x     ( i0_flush_upper_x            ),   // I
-                          .flush_lower_r     ( dec_tlu_flush_lower_r       ),   // I
-                          .a_in              ( i0_rs1_d[31:0]              ),   // I
-                          .b_in              ( i0_rs2_d[31:0]              ),   // I
-                          .pc_in             ( dec_i0_pc_d[31:1]           ),   // I
-                          .brimm_in          ( dec_i0_br_immed_d[12:1]     ),   // I
-                          .ap                ( i0_ap                       ),   // I
-                          .csr_ren_in        ( dec_csr_ren_d               ),   // I
-                          .csr_rddata_in     ( dec_csr_rddata_d[31:0]      ),   // I
-                          .result_ff         ( alu_result_x[31:0]          ),   // O
-                          .flush_upper_out   ( i0_flush_upper_d            ),   // O
-                          .flush_final_out   ( exu_flush_final             ),   // O
-                          .flush_path_out    ( i0_flush_path_d[31:1]       ),   // O
-                          .predict_p_out     ( i0_predict_p_d              ),   // O
-                          .pred_correct_out  ( i0_pred_correct_upper_d     ),   // O
-                          .pc_ff             ( exu_i0_pc_x[31:1]           ));  // O
-
-
-
-   eb1_exu_mul_ctl #(.pt(pt)) i_mul   (.*,
-                          .mul_p             ( mul_p              & {$bits(eb1_mul_pkt_t){mul_p.valid}} ),   // I
-                          .rs1_in            ( muldiv_rs1_d[31:0] & {32{mul_p.valid}}                    ),   // I
-                          .rs2_in            ( i0_rs2_d[31:0]     & {32{mul_p.valid}}                    ),   // I
-                          .result_x          ( mul_result_x[31:0]                                        ));  // O
-
-
-
-   eb1_exu_div_ctl #(.pt(pt)) i_div   (.*,
-                          .cancel            ( dec_div_cancel              ),   // I
-                          .dp                ( div_p                       ),   // I
-                          .dividend          ( muldiv_rs1_d[31:0]          ),   // I
-                          .divisor           ( i0_rs2_d[31:0]              ),   // I
-                          .finish_dly        ( exu_div_wren                ),   // O
-                          .out               ( exu_div_result[31:0]        ));  // O
-
-
-
-   assign exu_i0_result_x[31:0]    =  (mul_valid_x)  ?  mul_result_x[31:0]  :  alu_result_x[31:0];
-
-
-
-
-   always_comb begin
-      i0_predict_newp_d            =  dec_i0_predict_p_d;
-      i0_predict_newp_d.boffset    =  dec_i0_pc_d[1];  // from the start of inst
-   end
-
-
-   assign exu_pmu_i0_br_misp       =  i0_pp_r.misp;
-   assign exu_pmu_i0_br_ataken     =  i0_pp_r.ataken;
-   assign exu_pmu_i0_pc4           =  i0_pp_r.pc4;
-
-
-   assign i0_valid_d               =  i0_predict_p_d.valid  & dec_i0_alu_decode_d & ~dec_tlu_flush_lower_r;
-   assign i0_taken_d               = (i0_predict_p_d.ataken & dec_i0_alu_decode_d);
-
-if(pt.BTB_ENABLE==1) begin
-   // maintain GHR at D
-   assign ghr_d_ns[pt.BHT_GHR_SIZE-1:0]
-                                   = ({pt.BHT_GHR_SIZE{~dec_tlu_flush_lower_r &  i0_valid_d}} & {ghr_d[pt.BHT_GHR_SIZE-2:0], i0_taken_d}) |
-                                     ({pt.BHT_GHR_SIZE{~dec_tlu_flush_lower_r & ~i0_valid_d}} &  ghr_d[pt.BHT_GHR_SIZE-1:0]             ) |
-                                     ({pt.BHT_GHR_SIZE{ dec_tlu_flush_lower_r              }} &  ghr_x[pt.BHT_GHR_SIZE-1:0]             );
-
-   // maintain GHR at X
-   assign ghr_x_ns[pt.BHT_GHR_SIZE-1:0]
-                                   = ({pt.BHT_GHR_SIZE{ i0_valid_x}} & {ghr_x[pt.BHT_GHR_SIZE-2:0], i0_taken_x}) |
-                                     ({pt.BHT_GHR_SIZE{~i0_valid_x}} &  ghr_x[pt.BHT_GHR_SIZE-1:0]             ) ;
-
-
-   assign exu_i0_br_valid_r                                 =  i0_pp_r.valid;
-   assign exu_i0_br_mp_r                                    =  i0_pp_r.misp;
-   assign exu_i0_br_way_r                                   =  i0_pp_r.way;
-   assign exu_i0_br_hist_r[1:0]                             =  {2{i0_pp_r.valid}} & i0_pp_r.hist[1:0];
-   assign exu_i0_br_error_r                                 =  i0_pp_r.br_error;
-   assign exu_i0_br_middle_r                                =  i0_pp_r.pc4 ^ i0_pp_r.boffset;
-   assign exu_i0_br_start_error_r                           =  i0_pp_r.br_start_error;
-
-   assign {exu_i0_br_fghr_r[pt.BHT_GHR_SIZE-1:0],
-           exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]}=  predpipe_r[PREDPIPESIZE-1:pt.BTB_BTAG_SIZE];
-
-
-   assign final_predict_mp                                  = (i0_flush_upper_x)  ?  i0_predict_p_x  :  '0;
-
-   assign final_predpipe_mp[PREDPIPESIZE-1:0]               = (i0_flush_upper_x)  ?  predpipe_x      :  '0;
-
-   assign after_flush_eghr[pt.BHT_GHR_SIZE-1:0]             = (i0_flush_upper_x & ~dec_tlu_flush_lower_r)  ?  ghr_d[pt.BHT_GHR_SIZE-1:0]  :  ghr_x[pt.BHT_GHR_SIZE-1:0];
-
-
-   assign exu_mp_pkt.valid                                  =  final_predict_mp.valid;
-   assign exu_mp_pkt.way                                    =  final_predict_mp.way;
-   assign exu_mp_pkt.misp                                   =  final_predict_mp.misp;
-   assign exu_mp_pkt.pcall                                  =  final_predict_mp.pcall;
-   assign exu_mp_pkt.pja                                    =  final_predict_mp.pja;
-   assign exu_mp_pkt.pret                                   =  final_predict_mp.pret;
-   assign exu_mp_pkt.ataken                                 =  final_predict_mp.ataken;
-   assign exu_mp_pkt.boffset                                =  final_predict_mp.boffset;
-   assign exu_mp_pkt.pc4                                    =  final_predict_mp.pc4;
-   assign exu_mp_pkt.hist[1:0]                              =  final_predict_mp.hist[1:0];
-   assign exu_mp_pkt.toffset[11:0]                          =  final_predict_mp.toffset[11:0];
-
-   assign exu_mp_fghr[pt.BHT_GHR_SIZE-1:0]                  =  after_flush_eghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign {exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],
-           exu_mp_btag[pt.BTB_BTAG_SIZE-1:0]}               =  final_predpipe_mp[PREDPIPESIZE-pt.BHT_GHR_SIZE-1:0];
-
-   assign exu_mp_eghr[pt.BHT_GHR_SIZE-1:0]                  =  final_predpipe_mp[PREDPIPESIZE-1:pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+pt.BTB_BTAG_SIZE+1]; // mp ghr for bht write
-end // if (pt.BTB_ENABLE==1)
-else begin
-   assign ghr_d_ns = '0;
-   assign ghr_x_ns = '0;
-   assign exu_mp_pkt = '0;
-   assign exu_mp_eghr = '0;
-   assign exu_mp_fghr = '0;
-   assign exu_mp_index = '0;
-   assign exu_mp_btag = '0;
-   assign exu_i0_br_hist_r = '0;
-   assign exu_i0_br_error_r = '0;
-   assign exu_i0_br_start_error_r = '0;
-   assign exu_i0_br_index_r = '0;
-   assign exu_i0_br_valid_r = '0;
-   assign exu_i0_br_mp_r = '0;
-   assign exu_i0_br_middle_r = '0;
-   assign exu_i0_br_fghr_r = '0;
-   assign exu_i0_br_way_r = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   assign exu_flush_path_final[31:1] = ( {31{ dec_tlu_flush_lower_r                   }} & dec_tlu_flush_path_r[31:1] ) |
-                                       ( {31{~dec_tlu_flush_lower_r & i0_flush_upper_d}} & i0_flush_path_d[31:1]      );
-
-   assign exu_npc_r[31:1]            = (i0_pred_correct_upper_r)  ?  pred_correct_npc_r[31:1]    :  i0_flush_path_upper_r[31:1];
-
-
-endmodule // eb1_exu
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_exu_alu_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_exu_alu_ctl.sv
deleted file mode 100644
index 9d05f43..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_exu_alu_ctl.sv
+++ /dev/null
@@ -1,597 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_alu_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
-)
-  (
-   input  logic                  clk,                // Top level clock
-   input  logic                  rst_l,              // Reset
-   input  logic                  scan_mode,          // Scan control
-
-   input  logic                  flush_upper_x,      // Branch flush from previous cycle
-   input  logic                  flush_lower_r,      // Master flush of entire pipeline
-   input  logic                  enable,             // Clock enable
-   input  logic                  valid_in,           // Valid
-   input  eb1_alu_pkt_t         ap,                 // predecodes
-   input  logic                  csr_ren_in,         // CSR select
-   input  logic        [31:0]    csr_rddata_in,      // CSR data
-   input  logic signed [31:0]    a_in,               // A operand
-   input  logic        [31:0]    b_in,               // B operand
-   input  logic        [31:1]    pc_in,              // for pc=pc+2,4 calculations
-   input  eb1_predict_pkt_t     pp_in,              // Predicted branch structure
-   input  logic        [12:1]    brimm_in,           // Branch offset
-
-
-   output logic        [31:0]    result_ff,          // final result
-   output logic                  flush_upper_out,    // Branch flush
-   output logic                  flush_final_out,    // Branch flush or flush entire pipeline
-   output logic        [31:1]    flush_path_out,     // Branch flush PC
-   output logic        [31:1]    pc_ff,              // flopped PC
-   output logic                  pred_correct_out,   // NPC control
-   output eb1_predict_pkt_t     predict_p_out       // Predicted branch structure
-  );
-
-
-   logic               [31:0]    zba_a_in;
-   logic               [31:0]    aout;
-   logic                         cout,ov,neg;
-   logic               [31:0]    lout;
-   logic               [31:0]    sout;
-   logic                         sel_shift;
-   logic                         sel_adder;
-   logic                         slt_one;
-   logic                         actual_taken;
-   logic               [31:1]    pcout;
-   logic                         cond_mispredict;
-   logic                         target_mispredict;
-   logic                         eq, ne, lt, ge;
-   logic                         any_jal;
-   logic               [1:0]     newhist;
-   logic                         sel_pc;
-   logic               [31:0]    csr_write_data;
-   logic               [31:0]    result;
-
-
-
-
-   // *** Start - BitManip ***
-
-   // Zbb
-   logic                  ap_clz;
-   logic                  ap_ctz;
-   logic                  ap_pcnt;
-   logic                  ap_sext_b;
-   logic                  ap_sext_h;
-   logic                  ap_min;
-   logic                  ap_max;
-   logic                  ap_pack;
-   logic                  ap_packu;
-   logic                  ap_packh;
-   logic                  ap_rol;
-   logic                  ap_ror;
-   logic                  ap_rev;
-   logic                  ap_rev8;
-   logic                  ap_orc_b;
-   logic                  ap_orc16;
-   logic                  ap_zbb;
-
-   // Zbs
-   logic                  ap_sbset;
-   logic                  ap_sbclr;
-   logic                  ap_sbinv;
-   logic                  ap_sbext;
-
-   // Zbr
-   logic                  ap_slo;
-   logic                  ap_sro;
-
-   // Zba
-   logic                  ap_sh1add;
-   logic                  ap_sh2add;
-   logic                  ap_sh3add;
-   logic                  ap_zba;
-
-
-
-   if (pt.BITMANIP_ZBB == 1)
-     begin
-       assign ap_clz          =  ap.clz;
-       assign ap_ctz          =  ap.ctz;
-       assign ap_pcnt         =  ap.pcnt;
-       assign ap_sext_b       =  ap.sext_b;
-       assign ap_sext_h       =  ap.sext_h;
-       assign ap_min          =  ap.min;
-       assign ap_max          =  ap.max;
-     end
-   else
-     begin
-       assign ap_clz          =  1'b0;
-       assign ap_ctz          =  1'b0;
-       assign ap_pcnt         =  1'b0;
-       assign ap_sext_b       =  1'b0;
-       assign ap_sext_h       =  1'b0;
-       assign ap_min          =  1'b0;
-       assign ap_max          =  1'b0;
-     end
-
-
-   if ( (pt.BITMANIP_ZBB == 1) | (pt.BITMANIP_ZBP == 1) )
-     begin
-       assign ap_pack         =  ap.pack;
-       assign ap_packu        =  ap.packu;
-       assign ap_packh        =  ap.packh;
-       assign ap_rol          =  ap.rol;
-       assign ap_ror          =  ap.ror;
-       assign ap_rev          =  ap.grev & (b_in[4:0] == 5'b11111);
-       assign ap_rev8         =  ap.grev & (b_in[4:0] == 5'b11000);
-       assign ap_orc_b        =  ap.gorc & (b_in[4:0] == 5'b00111);
-       assign ap_orc16        =  ap.gorc & (b_in[4:0] == 5'b10000);
-       assign ap_zbb          =  ap.zbb;
-     end
-   else
-     begin
-       assign ap_pack         =  1'b0;
-       assign ap_packu        =  1'b0;
-       assign ap_packh        =  1'b0;
-       assign ap_rol          =  1'b0;
-       assign ap_ror          =  1'b0;
-       assign ap_rev          =  1'b0;
-       assign ap_rev8         =  1'b0;
-       assign ap_orc_b        =  1'b0;
-       assign ap_orc16        =  1'b0;
-       assign ap_zbb          =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBS == 1)
-     begin
-       assign ap_sbset        =  ap.sbset;
-       assign ap_sbclr        =  ap.sbclr;
-       assign ap_sbinv        =  ap.sbinv;
-       assign ap_sbext        =  ap.sbext;
-     end
-   else
-     begin
-       assign ap_sbset        =  1'b0;
-       assign ap_sbclr        =  1'b0;
-       assign ap_sbinv        =  1'b0;
-       assign ap_sbext        =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBP == 1)
-     begin
-       assign ap_slo          =  ap.slo;
-       assign ap_sro          =  ap.sro;
-     end
-   else
-     begin
-       assign ap_slo          =  1'b0;
-       assign ap_sro          =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBA == 1)
-     begin
-       assign ap_sh1add       =  ap.sh1add;
-       assign ap_sh2add       =  ap.sh2add;
-       assign ap_sh3add       =  ap.sh3add;
-       assign ap_zba          =  ap.zba;
-     end
-   else
-     begin
-       assign ap_sh1add       =  1'b0;
-       assign ap_sh2add       =  1'b0;
-       assign ap_sh3add       =  1'b0;
-       assign ap_zba          =  1'b0;
-     end
-
-
-
-
-   // *** End   - BitManip ***
-
-
-
-
-   rvdffpcie #(31) i_pc_ff      (.*, .clk(clk), .en(enable),              .din(pc_in[31:1]),    .dout(pc_ff[31:1]));   // any PC is run through here - doesn't have to be alu
-   rvdffe    #(32) i_result_ff  (.*, .clk(clk), .en(enable & valid_in),   .din(result[31:0]),   .dout(result_ff[31:0]));
-
-
-
-   // immediates are just muxed into rs2
-
-   // add    =>  add=1;
-   // sub    =>  add=1; sub=1;
-
-   // and    =>  lctl=3
-   // or     =>  lctl=2
-   // xor    =>  lctl=1
-
-   // sll    =>  sctl=3
-   // srl    =>  sctl=2
-   // sra    =>  sctl=1
-
-   // slt    =>  slt
-
-   // lui    =>  lctl=2; or x0, imm20 previously << 12
-   // auipc  =>  add;   add pc, imm20 previously << 12
-
-   // beq    =>  bctl=4; add; add x0, pc, sext(offset[12:1])
-   // bne    =>  bctl=3; add; add x0, pc, sext(offset[12:1])
-   // blt    =>  bctl=2; add; add x0, pc, sext(offset[12:1])
-   // bge    =>  bctl=1; add; add x0, pc, sext(offset[12:1])
-
-   // jal    =>  rs1=pc {pc[31:1],1'b0},  rs2=sext(offset20:1]);   rd=pc+[2,4]
-   // jalr   =>  rs1=rs1,                 rs2=sext(offset20:1]);   rd=pc+[2,4]
-
-
-
-   assign zba_a_in[31:0]      = ( {32{ ap_sh1add}} & {a_in[30:0],1'b0} ) |
-                                ( {32{ ap_sh2add}} & {a_in[29:0],2'b0} ) |
-                                ( {32{ ap_sh3add}} & {a_in[28:0],3'b0} ) |
-                                ( {32{~ap_zba   }} &  a_in[31:0]       );
-
-   logic        [31:0]    bm;
-
-   assign bm[31:0]            = ( ap.sub )  ?  ~b_in[31:0]  :  b_in[31:0];
-
-   assign {cout, aout[31:0]}  = {1'b0, zba_a_in[31:0]} + {1'b0, bm[31:0]} + {32'b0, ap.sub};
-
-   assign ov                  = (~a_in[31] & ~bm[31] &  aout[31]) |
-                                ( a_in[31] &  bm[31] & ~aout[31] );
-
-   assign lt                  = (~ap.unsign & (neg ^ ov)) |
-                                ( ap.unsign & ~cout);
-
-   assign eq                  = (a_in[31:0] == b_in[31:0]);
-   assign ne                  = ~eq;
-   assign neg                 =  aout[31];
-   assign ge                  = ~lt;
-
-
-
-   assign lout[31:0]          =  ( {32{csr_ren_in       }} &  csr_rddata_in[31:0]       ) |
-                                 ( {32{ap.land & ~ap_zbb}} &  a_in[31:0] &  b_in[31:0]  ) |
-                                 ( {32{ap.lor  & ~ap_zbb}} & (a_in[31:0] |  b_in[31:0]) ) |
-                                 ( {32{ap.lxor & ~ap_zbb}} & (a_in[31:0] ^  b_in[31:0]) ) |
-                                 ( {32{ap.land &  ap_zbb}} &  a_in[31:0] & ~b_in[31:0]  ) |
-                                 ( {32{ap.lor  &  ap_zbb}} & (a_in[31:0] | ~b_in[31:0]) ) |
-                                 ( {32{ap.lxor &  ap_zbb}} & (a_in[31:0] ^ ~b_in[31:0]) );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SLO,SRO      * * * * * * * * * * * * * * * * * *
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ROL,ROR      * * * * * * * * * * * * * * * * * *
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ZBEXT        * * * * * * * * * * * * * * * * * *
-
-   logic        [5:0]     shift_amount;
-   logic        [31:0]    shift_mask;
-   logic        [62:0]    shift_extend;
-   logic        [62:0]    shift_long;
-
-
-   assign shift_amount[5:0]            = ( { 6{ap.sll}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |   // [5] unused
-                                         ( { 6{ap.srl}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap.sra}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_rol}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |
-                                         ( { 6{ap_ror}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_slo}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |
-                                         ( { 6{ap_sro}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_sbext}} &          {1'b0,b_in[4:0]}  );
-
-
-   assign shift_mask[31:0]             = ( 32'hffffffff << ({5{ap.sll | ap_slo}} & b_in[4:0]) );
-
-
-   assign shift_extend[31:0]           =  a_in[31:0];
-
-   assign shift_extend[62:32]          = ( {31{ap.sra}} & {31{a_in[31]}} ) |
-                                         ( {31{ap.sll}} &     a_in[30:0] ) |
-                                         ( {31{ap_rol}} &     a_in[30:0] ) |
-                                         ( {31{ap_ror}} &     a_in[30:0] ) |
-                                         ( {31{ap_slo}} &     a_in[30:0] ) |
-                                         ( {31{ap_sro}} & {31{  1'b1  }} );
-
-
-   assign shift_long[62:0]    = ( shift_extend[62:0] >> shift_amount[4:0] );   // 62-32 unused
-
-   assign sout[31:0]          = ( shift_long[31:0] & shift_mask[31:0] ) | ( {32{ap_slo}} & ~shift_mask[31:0] );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CLZ,CTZ      * * * * * * * * * * * * * * * * * *
-
-   logic                  bitmanip_clz_ctz_sel;
-   logic        [31:0]    bitmanip_a_reverse_ff;
-   logic        [31:0]    bitmanip_lzd_in;
-   logic        [5:0]     bitmanip_dw_lzd_enc;
-   logic        [5:0]     bitmanip_clz_ctz_result;
-
-   assign bitmanip_clz_ctz_sel         =  ap_clz | ap_ctz;
-
-   assign bitmanip_a_reverse_ff[31:0]  = {a_in[0],  a_in[1],  a_in[2],  a_in[3],  a_in[4],  a_in[5],  a_in[6],  a_in[7],
-                                          a_in[8],  a_in[9],  a_in[10], a_in[11], a_in[12], a_in[13], a_in[14], a_in[15],
-                                          a_in[16], a_in[17], a_in[18], a_in[19], a_in[20], a_in[21], a_in[22], a_in[23],
-                                          a_in[24], a_in[25], a_in[26], a_in[27], a_in[28], a_in[29], a_in[30], a_in[31]};
-
-   assign bitmanip_lzd_in[31:0]        = ( {32{ap_clz}} & a_in[31:0]                 ) |
-                                         ( {32{ap_ctz}} & bitmanip_a_reverse_ff[31:0]);
-
-   logic        [31:0]    bitmanip_lzd_os;
-   integer                i;
-   logic                  found;
-
-   always_comb
-     begin
-        bitmanip_lzd_os[31:0]   =  bitmanip_lzd_in[31:0];
-        bitmanip_dw_lzd_enc[5:0]=  6'b0;
-        found = 1'b0;
-
-        for (int i=0; i<32 && found==0; i++) begin
-           if (bitmanip_lzd_os[31] == 1'b0) begin
-              bitmanip_dw_lzd_enc[5:0]=  bitmanip_dw_lzd_enc[5:0] + 6'b00_0001;
-              bitmanip_lzd_os[31:0]   =  bitmanip_lzd_os[31:0] << 1;
-           end
-           else
-              found=1'b1;
-        end
-     end
-
-
-
-   assign bitmanip_clz_ctz_result[5:0] = {6{bitmanip_clz_ctz_sel}} & {bitmanip_dw_lzd_enc[5],( {5{~bitmanip_dw_lzd_enc[5]}} & bitmanip_dw_lzd_enc[4:0] )};
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  PCNT         * * * * * * * * * * * * * * * * * *
-
-   logic        [5:0]     bitmanip_pcnt;
-   logic        [5:0]     bitmanip_pcnt_result;
-
-
-   integer                bitmanip_pcnt_i;
-
-   always_comb
-     begin
-       bitmanip_pcnt[5:0]               =  6'b0;
-
-       for (bitmanip_pcnt_i=0; bitmanip_pcnt_i<32; bitmanip_pcnt_i++)
-         begin
-            bitmanip_pcnt[5:0]          =  bitmanip_pcnt[5:0] + {5'b0,a_in[bitmanip_pcnt_i]};
-         end      // FOR    bitmanip_pcnt_i
-     end          // ALWAYS_COMB
-
-
-   assign bitmanip_pcnt_result[5:0]    =  {6{ap_pcnt}} & bitmanip_pcnt[5:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SEXT_B,SEXT_H  * * * * * * * * * * * * * * * * *
-
-   logic       [31:0]     bitmanip_sext_result;
-
-   assign bitmanip_sext_result[31:0]   = ( {32{ap_sext_b}} & { {24{a_in[7]}} ,a_in[7:0]  } ) |
-                                         ( {32{ap_sext_h}} & { {16{a_in[15]}},a_in[15:0] } );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  MIN,MAX,MINU,MAXU  * * * * * * * * * * * * * * *
-
-   logic                  bitmanip_minmax_sel;
-   logic        [31:0]    bitmanip_minmax_result;
-
-   assign bitmanip_minmax_sel          =  ap_min | ap_max;
-
-
-   logic                  bitmanip_minmax_sel_a;
-
-   assign bitmanip_minmax_sel_a        =  ge  ^ ap_min;
-
-   assign bitmanip_minmax_result[31:0] = ({32{bitmanip_minmax_sel &  bitmanip_minmax_sel_a}}  &  a_in[31:0]) |
-                                         ({32{bitmanip_minmax_sel & ~bitmanip_minmax_sel_a}}  &  b_in[31:0]);
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  PACK, PACKU, PACKH * * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_pack_result;
-   logic        [31:0]    bitmanip_packu_result;
-   logic        [31:0]    bitmanip_packh_result;
-
-   assign bitmanip_pack_result[31:0]   = {32{ap_pack}}  & {b_in[15:0], a_in[15:0]};
-   assign bitmanip_packu_result[31:0]  = {32{ap_packu}} & {b_in[31:16],a_in[31:16]};
-   assign bitmanip_packh_result[31:0]  = {32{ap_packh}} & {16'b0,b_in[7:0],a_in[7:0]};
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  REV, REV8, ORC_B * * * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_rev_result;
-   logic        [31:0]    bitmanip_rev8_result;
-   logic        [31:0]    bitmanip_orc_b_result;
-   logic        [31:0]    bitmanip_orc16_result;
-
-   assign bitmanip_rev_result[31:0]    = {32{ap_rev}}   &
-                                         {a_in[00],a_in[01],a_in[02],a_in[03],a_in[04],a_in[05],a_in[06],a_in[07],
-                                          a_in[08],a_in[09],a_in[10],a_in[11],a_in[12],a_in[13],a_in[14],a_in[15],
-                                          a_in[16],a_in[17],a_in[18],a_in[19],a_in[20],a_in[21],a_in[22],a_in[23],
-                                          a_in[24],a_in[25],a_in[26],a_in[27],a_in[28],a_in[29],a_in[30],a_in[31]};
-
-   assign bitmanip_rev8_result[31:0]   = {32{ap_rev8}}  & {a_in[7:0],a_in[15:8],a_in[23:16],a_in[31:24]};
-
-
-// uint32_t gorc32(uint32_t rs1, uint32_t rs2)
-// {
-//      uint32_t x = rs1;
-//      int shamt = rs2 & 31;                                                        ORC.B  ORC16
-//      if (shamt &  1) x |= ((x & 0x55555555) <<  1) | ((x & 0xAAAAAAAA) >>  1);      1      0
-//      if (shamt &  2) x |= ((x & 0x33333333) <<  2) | ((x & 0xCCCCCCCC) >>  2);      1      0
-//      if (shamt &  4) x |= ((x & 0x0F0F0F0F) <<  4) | ((x & 0xF0F0F0F0) >>  4);      1      0
-//      if (shamt &  8) x |= ((x & 0x00FF00FF) <<  8) | ((x & 0xFF00FF00) >>  8);      0      0
-//      if (shamt & 16) x |= ((x & 0x0000FFFF) << 16) | ((x & 0xFFFF0000) >> 16);      0      1
-//      return x;
-// }
-
-
-// BEFORE              31  ,   30  ,   29  ,   28  ,    27  ,   26,     25,     24
-// shamt[0]  b =    a31|a30,a31|a30,a29|a28,a29|a28, a27|a26,a27|a26,a25|a24,a25|a24
-// shamt[1]  c =    b31|b29,b30|b28,b31|b29,b30|b28, b27|b25,b26|b24,b27|b25,b26|b24
-// shamt[2]  d =    c31|c27,c30|c26,c29|c25,c28|c24, c31|c27,c30|c26,c29|c25,c28|c24
-//
-// Expand d31 =        c31         |         c27;
-//            =   b31   |   b29    |    b27   |   b25;
-//            = a31|a30 | a29|a28  |  a27|a26 | a25|a24
-
-   assign bitmanip_orc_b_result[31:0]  = {32{ap_orc_b}} & { {8{| a_in[31:24]}}, {8{| a_in[23:16]}}, {8{| a_in[15:8]}}, {8{| a_in[7:0]}} };
-
-   assign bitmanip_orc16_result[31:0]  = {32{ap_orc16}} & {     {a_in[31:16] | a_in[15:0]},             {a_in[31:16] | a_in[15:0]}      };
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ZBSET, ZBCLR, ZBINV  * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_sb_1hot;
-   logic        [31:0]    bitmanip_sb_data;
-
-   assign bitmanip_sb_1hot[31:0]       = ( 32'h00000001 << b_in[4:0] );
-
-   assign bitmanip_sb_data[31:0]       = ( {32{ap_sbset}} & ( a_in[31:0] |  bitmanip_sb_1hot[31:0]) ) |
-                                         ( {32{ap_sbclr}} & ( a_in[31:0] & ~bitmanip_sb_1hot[31:0]) ) |
-                                         ( {32{ap_sbinv}} & ( a_in[31:0] ^  bitmanip_sb_1hot[31:0]) );
-
-
-
-
-
-
-   assign sel_shift           =  ap.sll  | ap.srl | ap.sra | ap_slo | ap_sro | ap_rol | ap_ror;
-   assign sel_adder           = (ap.add  | ap.sub | ap_zba) & ~ap.slt & ~ap_min & ~ap_max;
-   assign sel_pc              =  ap.jal  | pp_in.pcall | pp_in.pja | pp_in.pret;
-   assign csr_write_data[31:0]= (ap.csr_imm)  ?  b_in[31:0]  :  a_in[31:0];
-
-   assign slt_one             =  ap.slt & lt;
-
-
-
-   assign result[31:0]        =                        lout[31:0]             |
-                                ({32{sel_shift}}    &  sout[31:0]           ) |
-                                ({32{sel_adder}}    &  aout[31:0]           ) |
-                                ({32{sel_pc}}       & {pcout[31:1],1'b0}    ) |
-                                ({32{ap.csr_write}} &  csr_write_data[31:0] ) |
-                                                      {31'b0, slt_one}        |
-                                ({32{ap_sbext}}     & {31'b0, sout[0]}      ) |
-                                                      {26'b0, bitmanip_clz_ctz_result[5:0]} |
-                                                      {26'b0, bitmanip_pcnt_result[5:0]}    |
-                                                       bitmanip_sext_result[31:0]    |
-                                                       bitmanip_minmax_result[31:0]  |
-                                                       bitmanip_pack_result[31:0]    |
-                                                       bitmanip_packu_result[31:0]   |
-                                                       bitmanip_packh_result[31:0]   |
-                                                       bitmanip_rev_result[31:0]     |
-                                                       bitmanip_rev8_result[31:0]    |
-                                                       bitmanip_orc_b_result[31:0]   |
-                                                       bitmanip_orc16_result[31:0]   |
-                                                       bitmanip_sb_data[31:0];
-
-
-
-   // *** branch handling ***
-
-   assign any_jal             =  ap.jal      |
-                                 pp_in.pcall |
-                                 pp_in.pja   |
-                                 pp_in.pret;
-
-   assign actual_taken        = (ap.beq & eq) |
-                                (ap.bne & ne) |
-                                (ap.blt & lt) |
-                                (ap.bge & ge) |
-                                 any_jal;
-
-   // for a conditional br pcout[] will be the opposite of the branch prediction
-   // for jal or pcall, it will be the link address pc+2 or pc+4
-
-   rvbradder ibradder (
-                     .pc     ( pc_in[31:1]    ),
-                     .offset ( brimm_in[12:1] ),
-                     .dout   ( pcout[31:1]    ));
-
-
-   // pred_correct is for the npc logic
-   // pred_correct indicates not to use the flush_path
-   // for any_jal pred_correct==0
-
-   assign pred_correct_out    = (valid_in & ap.predict_nt & ~actual_taken & ~any_jal) |
-                                (valid_in & ap.predict_t  &  actual_taken & ~any_jal);
-
-
-   // for any_jal adder output is the flush path
-   assign flush_path_out[31:1]= (any_jal) ? aout[31:1] : pcout[31:1];
-
-
-   // pcall and pret are included here
-   assign cond_mispredict     = (ap.predict_t  & ~actual_taken) |
-                                (ap.predict_nt &  actual_taken);
-
-
-   // target mispredicts on ret's
-
-   assign target_mispredict   =  pp_in.pret & (pp_in.prett[31:1] != aout[31:1]);
-
-   assign flush_upper_out     =   (ap.jal | cond_mispredict | target_mispredict) & valid_in & ~flush_upper_x   & ~flush_lower_r;
-   assign flush_final_out     = ( (ap.jal | cond_mispredict | target_mispredict) & valid_in & ~flush_upper_x ) |  flush_lower_r;
-
-
-   // .i 3
-   // .o 2
-   // .ilb hist[1] hist[0] taken
-   // .ob newhist[1] newhist[0]
-   // .type fd
-   //
-   // 00 0 01
-   // 01 0 01
-   // 10 0 00
-   // 11 0 10
-   // 00 1 10
-   // 01 1 00
-   // 10 1 11
-   // 11 1 11
-
-   assign newhist[1]          = ( pp_in.hist[1] &  pp_in.hist[0]) | (~pp_in.hist[0] & actual_taken);
-   assign newhist[0]          = (~pp_in.hist[1] & ~actual_taken)  | ( pp_in.hist[1] & actual_taken);
-
-   always_comb begin
-      predict_p_out           =  pp_in;
-
-      predict_p_out.misp      = ~flush_upper_x & ~flush_lower_r & (cond_mispredict | target_mispredict);
-      predict_p_out.ataken    =  actual_taken;
-      predict_p_out.hist[1]   =  newhist[1];
-      predict_p_out.hist[0]   =  newhist[0];
-
-   end
-
-
-
-endmodule // eb1_exu_alu_ctl
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_exu_div_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_exu_div_ctl.sv
deleted file mode 100644
index a3b438e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_exu_div_ctl.sv
+++ /dev/null
@@ -1,1801 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_div_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
-)
-  (
-   input logic           clk,                       // Top level clock
-   input logic           rst_l,                     // Reset
-   input logic           scan_mode,                 // Scan mode
-
-   input eb1_div_pkt_t  dp,                        // valid, sign, rem
-   input logic  [31:0]   dividend,                  // Numerator
-   input logic  [31:0]   divisor,                   // Denominator
-
-   input logic           cancel,                    // Cancel divide
-
-
-   output logic          finish_dly,                // Finish to match data
-   output logic [31:0]   out                        // Result
-  );
-
-
-   logic [31:0]          out_raw;
-
-   assign out[31:0] = {32{finish_dly}} & out_raw[31:0];     // Qualification added to quiet result bus while divide is iterating
-
-
-
-   if (pt.DIV_NEW == 0)
-      begin
-        eb1_exu_div_existing_1bit_cheapshortq   i_existing_1bit_div_cheapshortq (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 1) )
-      begin
-        eb1_exu_div_new_1bit_fullshortq         i_new_1bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 2) )
-      begin
-        eb1_exu_div_new_2bit_fullshortq         i_new_2bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 3) )
-      begin
-        eb1_exu_div_new_3bit_fullshortq         i_new_3bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 4) )
-      begin
-        eb1_exu_div_new_4bit_fullshortq         i_new_4bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-
-endmodule // eb1_exu_div_ctl
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_existing_1bit_cheapshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic         div_clken;
-   logic         run_in, run_state;
-   logic  [5:0]  count_in, count;
-   logic [32:0]  m_ff;
-   logic         qff_enable;
-   logic         aff_enable;
-   logic [32:0]  q_in, q_ff;
-   logic [32:0]  a_in, a_ff;
-   logic [32:0]  m_eff;
-   logic [32:0]  a_shift;
-   logic         dividend_neg_ff, divisor_neg_ff;
-   logic [31:0]  dividend_comp;
-   logic [31:0]  dividend_eff;
-   logic [31:0]  q_ff_comp;
-   logic [31:0]  q_ff_eff;
-   logic [31:0]  a_ff_comp;
-   logic [31:0]  a_ff_eff;
-   logic         sign_ff, sign_eff;
-   logic         rem_ff;
-   logic         add;
-   logic [32:0]  a_eff;
-   logic [64:0]  a_eff_shift;
-   logic         rem_correct;
-   logic         valid_ff_x;
-   logic         valid_x;
-   logic         finish;
-   logic         finish_ff;
-
-   logic         smallnum_case, smallnum_case_ff;
-   logic  [3:0]  smallnum, smallnum_ff;
-   logic         m_already_comp;
-
-   logic [4:0]   a_cls;
-   logic [4:0]   b_cls;
-   logic [5:0]   shortq_shift;
-   logic [5:0]   shortq_shift_ff;
-   logic [5:0]   shortq;
-   logic         shortq_enable;
-   logic         shortq_enable_ff;
-   logic [32:0]  short_dividend;
-   logic [3:0]   shortq_raw;
-   logic [3:0]   shortq_shift_xx;
-
-
-
-   rvdffe #(23) i_misc_ff        (.*, .clk(clk), .en(div_clken),   .din ({valid_in & ~cancel,
-                                                                          finish   & ~cancel,
-                                                                          run_in,
-                                                                          count_in[5:0],
-                                                                          (valid_in & dividend_in[31]) | (~valid_in & dividend_neg_ff),
-                                                                          (valid_in & divisor_in[31] ) | (~valid_in & divisor_neg_ff ),
-                                                                          (valid_in & sign_eff       ) | (~valid_in & sign_ff        ),
-                                                                          (valid_in & rem_in         ) | (~valid_in & rem_ff         ),
-                                                                          smallnum_case,
-                                                                          smallnum[3:0],
-                                                                          shortq_enable,
-                                                                          shortq_shift[3:0]}),
-
-                                                                   .dout({valid_ff_x,
-                                                                          finish_ff,
-                                                                          run_state,
-                                                                          count[5:0],
-                                                                          dividend_neg_ff,
-                                                                          divisor_neg_ff,
-                                                                          sign_ff,
-                                                                          rem_ff,
-                                                                          smallnum_case_ff,
-                                                                          smallnum_ff[3:0],
-                                                                          shortq_enable_ff,
-                                                                          shortq_shift_xx[3:0]}));
-
-
-   rvdffe #(33) mff              (.*, .clk(clk), .en(valid_in),    .din({signed_in & divisor_in[31], divisor_in[31:0]}),   .dout(m_ff[32:0]));
-   rvdffe #(33) qff              (.*, .clk(clk), .en(qff_enable),  .din(q_in[32:0]),                                       .dout(q_ff[32:0]));
-   rvdffe #(33) aff              (.*, .clk(clk), .en(aff_enable),  .din(a_in[32:0]),                                       .dout(a_ff[32:0]));
-
-   rvtwoscomp #(32) i_dividend_comp (.din(q_ff[31:0]),    .dout(dividend_comp[31:0]));
-   rvtwoscomp #(32) i_q_ff_comp     (.din(q_ff[31:0]),    .dout(q_ff_comp[31:0]));
-   rvtwoscomp #(32) i_a_ff_comp     (.din(a_ff[31:0]),    .dout(a_ff_comp[31:0]));
-
-
-   assign valid_x                 = valid_ff_x & ~cancel;
-
-
-   // START - short circuit logic for small numbers {{
-
-   // small number divides - any 4b / 4b is done in 1 cycle (divisor != 0)
-   // to generate espresso equations:
-   // 1.  smalldiv > smalldiv.e
-   // 2.  espresso -Dso -oeqntott smalldiv.e | addassign > smalldiv
-
-   // smallnum case does not cover divide by 0
-   assign smallnum_case           = ((q_ff[31:4] == 28'b0) & (m_ff[31:4] == 28'b0) & (m_ff[31:0] != 32'b0) & ~rem_ff & valid_x) |
-                                    ((q_ff[31:0] == 32'b0) &                         (m_ff[31:0] != 32'b0) & ~rem_ff & valid_x);
-
-
-   assign smallnum[3]             = ( q_ff[3] &                                  ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           );
-
-
-   assign smallnum[2]             = ( q_ff[3] &                                  ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    ( q_ff[2] &                                  ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] & ~m_ff[2]                      );
-
-
-   assign smallnum[1]             = ( q_ff[2] &                                  ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    (                       q_ff[1] &            ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &                                  ~m_ff[3] &            ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] & ~q_ff[2] &                       ~m_ff[3] & ~m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] &  m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &             q_ff[1] & ~m_ff[3] &                       ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &  m_ff[2]                      );
-
-
-   assign smallnum[0]             = (            q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] &  q_ff[0] &            ~m_ff[3] &             m_ff[1] &  m_ff[0]) |
-                                    (            q_ff[2] &                       ~m_ff[3] &            ~m_ff[1] & ~m_ff[0]) |
-                                    (                       q_ff[1] &            ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    (                                  q_ff[0] & ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] & ~q_ff[1] &            ~m_ff[3] & ~m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &                                             ~m_ff[2] & ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] & ~q_ff[2] &                       ~m_ff[3] &  m_ff[2] &  m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &  m_ff[2] & ~m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] &             q_ff[0] & ~m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] & ~q_ff[1] &            ~m_ff[3] &  m_ff[2] &             m_ff[0]) |
-                                    (           ~q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                                             ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] &             q_ff[1] &                       ~m_ff[2] &            ~m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] &  m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                        m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &             q_ff[1] &             m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &                        q_ff[0] &            ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &            ~q_ff[1] &            ~m_ff[3] &  m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &             m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &             m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &             q_ff[0] &  m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] &  q_ff[1] &            ~m_ff[3] &             m_ff[1]           ) |
-                                    ( q_ff[3] &             q_ff[1] &  q_ff[0] &            ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &  q_ff[0] &  m_ff[3]                                 );
-
-
-   // END   - short circuit logic for small numbers }}
-
-
-   // *** Start Short Q *** {{
-
-   assign short_dividend[31:0]    =  q_ff[31:0];
-   assign short_dividend[32]      =  sign_ff & q_ff[31];
-
-
-   //    A       B
-   //   210     210    SH
-   //   ---     ---    --
-   //   1xx     000     0
-   //   1xx     001     8
-   //   1xx     01x    16
-   //   1xx     1xx    24
-   //   01x     000     8
-   //   01x     001    16
-   //   01x     01x    24
-   //   01x     1xx    32
-   //   001     000    16
-   //   001     001    24
-   //   001     01x    32
-   //   001     1xx    32
-   //   000     000    24
-   //   000     001    32
-   //   000     01x    32
-   //   000     1xx    32
-
-   assign a_cls[4:3]              =  2'b0;
-   assign a_cls[2]                =  (~short_dividend[32] & (short_dividend[31:24] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[31:23] != {9{1'b1}}));
-   assign a_cls[1]                =  (~short_dividend[32] & (short_dividend[23:16] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[22:15] != {8{1'b1}}));
-   assign a_cls[0]                =  (~short_dividend[32] & (short_dividend[15:08] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[14:07] != {8{1'b1}}));
-
-   assign b_cls[4:3]              =  2'b0;
-   assign b_cls[2]                =  (~m_ff[32]           & (          m_ff[31:24] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[31:24] != {8{1'b1}}));
-   assign b_cls[1]                =  (~m_ff[32]           & (          m_ff[23:16] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[23:16] != {8{1'b1}}));
-   assign b_cls[0]                =  (~m_ff[32]           & (          m_ff[15:08] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[15:08] != {8{1'b1}}));
-
-   assign shortq_raw[3]           = ( (a_cls[2:1] == 2'b01 ) & (b_cls[2]   == 1'b1  ) ) |   // Shift by 32
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2]   == 1'b1  ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2]   == 1'b1  ) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:0] == 3'b001) );
-
-   assign shortq_raw[2]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2]   == 1'b1  ) ) |   // Shift by 24
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:0] == 3'b001) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:0] == 3'b000) );
-
-   assign shortq_raw[1]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2:1] == 2'b01 ) ) |   // Shift by 16
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:0] == 3'b001) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:0] == 3'b000) );
-
-   assign shortq_raw[0]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2:0] == 3'b001) ) |   // Shift by  8
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:0] == 3'b000) );
-
-
-   assign shortq_enable           =  valid_ff_x & (m_ff[31:0] != 32'b0) & (shortq_raw[3:0] != 4'b0);
-
-   assign shortq_shift[3:0]       = ({4{shortq_enable}} & shortq_raw[3:0]);
-
-   assign shortq[5:0]             =  6'b0;
-   assign shortq_shift[5:4]       =  2'b0;
-   assign shortq_shift_ff[5]      =  1'b0;
-
-   assign shortq_shift_ff[4:0]    = ({5{shortq_shift_xx[3]}} & 5'b1_1111) |   // 31
-                                    ({5{shortq_shift_xx[2]}} & 5'b1_1000) |   // 24
-                                    ({5{shortq_shift_xx[1]}} & 5'b1_0000) |   // 16
-                                    ({5{shortq_shift_xx[0]}} & 5'b0_1000);    //  8
-
-   // *** End   Short *** }}
-
-
-
-
-
-   assign div_clken               =  valid_in | run_state | finish | finish_ff;
-
-   assign run_in                  = (valid_in | run_state) & ~finish & ~cancel;
-
-   assign count_in[5:0]           = {6{run_state & ~finish & ~cancel & ~shortq_enable}} & (count[5:0] + {1'b0,shortq_shift_ff[4:0]} + 6'd1);
-
-
-   assign finish                  = (smallnum_case | ((~rem_ff) ? (count[5:0] == 6'd32) : (count[5:0] == 6'd33)));
-
-   assign valid_out               =  finish_ff & ~cancel;
-
-   assign sign_eff                =  signed_in & (divisor_in[31:0] != 32'b0);
-
-
-   assign q_in[32:0]              = ({33{~run_state                                   }} &  {1'b0,dividend_in[31:0]}) |
-                                    ({33{ run_state &  (valid_ff_x | shortq_enable_ff)}} &  ({dividend_eff[31:0], ~a_in[32]} << shortq_shift_ff[4:0])) |
-                                    ({33{ run_state & ~(valid_ff_x | shortq_enable_ff)}} &  {q_ff[31:0], ~a_in[32]});
-
-   assign qff_enable              =  valid_in | (run_state & ~shortq_enable);
-
-
-
-
-   assign dividend_eff[31:0]      = (sign_ff & dividend_neg_ff) ? dividend_comp[31:0] : q_ff[31:0];
-
-
-   assign m_eff[32:0]             = ( add ) ? m_ff[32:0] : ~m_ff[32:0];
-
-   assign a_eff_shift[64:0]       = {33'b0, dividend_eff[31:0]} << shortq_shift_ff[4:0];
-
-   assign a_eff[32:0]             = ({33{ rem_correct                    }} &  a_ff[32:0]            ) |
-                                    ({33{~rem_correct & ~shortq_enable_ff}} & {a_ff[31:0], q_ff[32]} ) |
-                                    ({33{~rem_correct &  shortq_enable_ff}} &  a_eff_shift[64:32]    );
-
-   assign a_shift[32:0]           = {33{run_state}} & a_eff[32:0];
-
-   assign a_in[32:0]              = {33{run_state}} & (a_shift[32:0] + m_eff[32:0] + {32'b0,~add});
-
-   assign aff_enable              =  valid_in | (run_state & ~shortq_enable & (count[5:0]!=6'd33)) | rem_correct;
-
-
-   assign m_already_comp          = (divisor_neg_ff & sign_ff);
-
-   // if m already complemented, then invert operation add->sub, sub->add
-   assign add                     = (a_ff[32] | rem_correct) ^ m_already_comp;
-
-   assign rem_correct             = (count[5:0] == 6'd33) & rem_ff & a_ff[32];
-
-
-
-   assign q_ff_eff[31:0]          = (sign_ff & (dividend_neg_ff ^ divisor_neg_ff)) ? q_ff_comp[31:0] : q_ff[31:0];
-
-   assign a_ff_eff[31:0]          = (sign_ff &  dividend_neg_ff) ? a_ff_comp[31:0] : a_ff[31:0];
-
-   assign data_out[31:0]          = ({32{ smallnum_case_ff          }} & {28'b0, smallnum_ff[3:0]}) |
-                                    ({32{                     rem_ff}} &  a_ff_eff[31:0]          ) |
-                                    ({32{~smallnum_case_ff & ~rem_ff}} &  q_ff_eff[31:0]          );
-
-
-
-
-endmodule // eb1_exu_div_existing_1bit_cheapshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_1bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in, b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable, r_sign_sel, r_restore_sel, r_adder_sel;
-   logic        [31:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic                   quotient_set;
-   logic        [32:0]     adder_out;
-
-   logic        [63:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(32) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[31:0]),           .dout(r_ff[31:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {6'b0,1'b1} + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[63:0]       = { {32{dividend_sign_ff}} , a_ff[31:0]} << shortq_shift_ff[4:0];
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[30:0],1'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & ~quotient_set & ~shortq_enable_ff;
-   assign r_adder_sel            =  running_state &  quotient_set & ~shortq_enable_ff;
-
-
-   assign r_in[31:0]             = ( {32{r_sign_sel      }} &  32'hffffffff          ) |
-                                   ( {32{r_restore_sel   }} & {r_ff[30:0] ,a_ff[31]} ) |
-                                   ( {32{r_adder_sel     }} &  adder_out[31:0]       ) |
-                                   ( {32{shortq_enable_ff}} &  ar_shifted[63:32]     ) |
-                                   ( {32{by_zero_case    }} &  a_ff[31:0]            );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff       }} & {q_ff[30:0], quotient_set}  ) |
-                                   ( {32{ smallnum_case  }} & {28'b0     , smallnum[3:0]} ) |
-                                   ( {32{ by_zero_case   }} & {32{1'b1}}                  );
-
-
-
-   assign adder_out[32:0]        = {r_ff[31:0],a_ff[31]} + {b_ff[32:0] };
-
-
-   assign quotient_set           = (~adder_out[32] ^ dividend_sign_ff) | ( (a_ff[30:0] == 31'b0) & (adder_out[32:0] == 33'b0) );
-
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:1] ==  4'b1111) & ~cancel;
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  (5'b11111 - shortq[4:0]);
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_1bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_2bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [34:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable, r_sign_sel, r_restore_sel, r_adder1_sel, r_adder2_sel, r_adder3_sel;
-   logic        [31:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic         [3:1]     quotient_raw;
-   logic         [1:0]     quotient_new;
-   logic        [32:0]     adder1_out;
-   logic        [33:0]     adder2_out;
-   logic        [34:0]     adder3_out;
-
-   logic        [63:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:1]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(18) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:1],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:1], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(32) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[31:0]),           .dout(r_ff[31:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {5'b0,2'b10} + {2'b0,shortq_shift_ff[4:1],1'b0});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[63:0]       = { {32{dividend_sign_ff}} , a_ff[31:0]} << {shortq_shift_ff[4:1],1'b0};
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[29:0],2'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[1:0] == 2'b00) & ~shortq_enable_ff;
-   assign r_adder1_sel           =  running_state & (quotient_new[1:0] == 2'b01) & ~shortq_enable_ff;
-   assign r_adder2_sel           =  running_state & (quotient_new[1:0] == 2'b10) & ~shortq_enable_ff;
-   assign r_adder3_sel           =  running_state & (quotient_new[1:0] == 2'b11) & ~shortq_enable_ff;
-
-
-   assign r_in[31:0]             = ( {32{r_sign_sel      }} &  32'hffffffff             ) |
-                                   ( {32{r_restore_sel   }} & {r_ff[29:0] ,a_ff[31:30]} ) |
-                                   ( {32{r_adder1_sel    }} &  adder1_out[31:0]         ) |
-                                   ( {32{r_adder2_sel    }} &  adder2_out[31:0]         ) |
-                                   ( {32{r_adder3_sel    }} &  adder3_out[31:0]         ) |
-                                   ( {32{shortq_enable_ff}} &  ar_shifted[63:32]        ) |
-                                   ( {32{by_zero_case    }} &  a_ff[31:0]               );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff       }} & {q_ff[29:0], quotient_new[1:0]} ) |
-                                   ( {32{ smallnum_case  }} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case   }} & {32{1'b1}}                      );
-
-
-   assign b_ff[34:33]            = {b_ff[32],b_ff[32]};
-
-
-   assign adder1_out[32:0]       = {         r_ff[30:0],a_ff[31:30]}  +                       b_ff[32:0];
-   assign adder2_out[33:0]       = {         r_ff[31:0],a_ff[31:30]}  + {b_ff[32:0],1'b0};
-   assign adder3_out[34:0]       = {r_ff[31],r_ff[31:0],a_ff[31:30]}  + {b_ff[33:0],1'b0}  +  b_ff[34:0];
-
-
-   assign quotient_raw[1]        = (~adder1_out[32] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder1_out[32:0] == 33'b0) );
-   assign quotient_raw[2]        = (~adder2_out[33] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder2_out[33:0] == 34'b0) );
-   assign quotient_raw[3]        = (~adder3_out[34] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder3_out[34:0] == 35'b0) );
-
-   assign quotient_new[1]        = quotient_raw[3] |  quotient_raw[2];
-   assign quotient_new[0]        = quotient_raw[3] |(~quotient_raw[2] & quotient_raw[1]);
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:1] ==  4'b1111) & ~cancel;
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  (5'b11111 - shortq[4:0]);   // [0] is unused
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_2bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_3bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [32:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [36:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable;
-   logic                   r_sign_sel;
-   logic                   r_restore_sel;
-   logic                   r_adder1_sel, r_adder2_sel, r_adder3_sel, r_adder4_sel, r_adder5_sel, r_adder6_sel, r_adder7_sel;
-   logic        [32:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic         [7:1]     quotient_raw;
-   logic         [2:0]     quotient_new;
-   logic        [33:0]     adder1_out;
-   logic        [34:0]     adder2_out;
-   logic        [35:0]     adder3_out;
-   logic        [36:0]     adder4_out;
-   logic        [36:0]     adder5_out;
-   logic        [36:0]     adder6_out;
-   logic        [36:0]     adder7_out;
-
-   logic        [65:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_decode;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(33) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[32:0]),           .dout(a_ff[32:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(33) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[32:0]),           .dout(r_ff[32:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd33);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {5'b0,2'b11} + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[65:0]       = { {33{dividend_sign_ff}} , a_ff[32:0]} << {shortq_shift_ff[4:0]};
-
-   assign a_in[32:0]             = ( {33{~a_shift & ~shortq_enable_ff}} & {signed_in & dividend_in[31],dividend_in[31:0]} ) |
-                                   ( {33{ a_shift                    }} & {a_ff[29:0],3'b0}  ) |
-                                   ( {33{            shortq_enable_ff}} &  ar_shifted[32:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[2:0] == 3'b000) & ~shortq_enable_ff;
-   assign r_adder1_sel           =  running_state & (quotient_new[2:0] == 3'b001) & ~shortq_enable_ff;
-   assign r_adder2_sel           =  running_state & (quotient_new[2:0] == 3'b010) & ~shortq_enable_ff;
-   assign r_adder3_sel           =  running_state & (quotient_new[2:0] == 3'b011) & ~shortq_enable_ff;
-   assign r_adder4_sel           =  running_state & (quotient_new[2:0] == 3'b100) & ~shortq_enable_ff;
-   assign r_adder5_sel           =  running_state & (quotient_new[2:0] == 3'b101) & ~shortq_enable_ff;
-   assign r_adder6_sel           =  running_state & (quotient_new[2:0] == 3'b110) & ~shortq_enable_ff;
-   assign r_adder7_sel           =  running_state & (quotient_new[2:0] == 3'b111) & ~shortq_enable_ff;
-
-
-   assign r_in[32:0]             = ( {33{r_sign_sel      }} & {33{1'b1}}               ) |
-                                   ( {33{r_restore_sel   }} & {r_ff[29:0] ,a_ff[32:30]} ) |
-                                   ( {33{r_adder1_sel    }} &  adder1_out[32:0]         ) |
-                                   ( {33{r_adder2_sel    }} &  adder2_out[32:0]         ) |
-                                   ( {33{r_adder3_sel    }} &  adder3_out[32:0]         ) |
-                                   ( {33{r_adder4_sel    }} &  adder4_out[32:0]         ) |
-                                   ( {33{r_adder5_sel    }} &  adder5_out[32:0]         ) |
-                                   ( {33{r_adder6_sel    }} &  adder6_out[32:0]         ) |
-                                   ( {33{r_adder7_sel    }} &  adder7_out[32:0]         ) |
-                                   ( {33{shortq_enable_ff}} &  ar_shifted[65:33]        ) |
-                                   ( {33{by_zero_case    }} & {1'b0,a_ff[31:0]}         );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff     }} & {q_ff[28:0], quotient_new[2:0]} ) |
-                                   ( {32{ smallnum_case}} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case }} & {32{1'b1}}                      );
-
-
-   assign b_ff[36:33]            = {b_ff[32],b_ff[32],b_ff[32],b_ff[32]};
-
-
-   assign adder1_out[33:0]       = {         r_ff[30:0],a_ff[32:30]}  +                                              b_ff[33:0];
-   assign adder2_out[34:0]       = {         r_ff[31:0],a_ff[32:30]}  +                        {b_ff[33:0],1'b0};
-   assign adder3_out[35:0]       = {         r_ff[32:0],a_ff[32:30]}  +                        {b_ff[34:0],1'b0}  +  b_ff[35:0];
-   assign adder4_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0};
-   assign adder5_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +                        b_ff[36:0];
-   assign adder6_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +  {b_ff[35:0],1'b0};
-   assign adder7_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +  {b_ff[35:0],1'b0}  +  b_ff[36:0];
-
-   assign quotient_raw[1]        = (~adder1_out[33] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder1_out[33:0] == 34'b0) );
-   assign quotient_raw[2]        = (~adder2_out[34] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder2_out[34:0] == 35'b0) );
-   assign quotient_raw[3]        = (~adder3_out[35] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder3_out[35:0] == 36'b0) );
-   assign quotient_raw[4]        = (~adder4_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder4_out[36:0] == 37'b0) );
-   assign quotient_raw[5]        = (~adder5_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder5_out[36:0] == 37'b0) );
-   assign quotient_raw[6]        = (~adder6_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder6_out[36:0] == 37'b0) );
-   assign quotient_raw[7]        = (~adder7_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder7_out[36:0] == 37'b0) );
-
-   assign quotient_new[2]        = quotient_raw[7] |   quotient_raw[6] | quotient_raw[5]  |   quotient_raw[4];
-   assign quotient_new[1]        = quotient_raw[7] |   quotient_raw[6] |                    (~quotient_raw[4] & quotient_raw[3]) | (~quotient_raw[3] & quotient_raw[2]);
-   assign quotient_new[0]        = quotient_raw[7] | (~quotient_raw[6] & quotient_raw[5]) | (~quotient_raw[4] & quotient_raw[3]) | (~quotient_raw[2] & quotient_raw[1]);
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:2] ==  3'b111) & ~cancel;
-
-   assign shortq_decode[4:0]      = ( {5{shortq[4:0] == 5'd31}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd30}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd29}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd28}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd27}} & 5'd03) |
-                                    ( {5{shortq[4:0] == 5'd26}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd25}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd24}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd23}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd22}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd21}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd20}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd19}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd18}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd17}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd16}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd15}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd14}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd13}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd12}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd11}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd10}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd09}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd08}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd07}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd06}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd05}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd04}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd03}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd02}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd01}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd00}} & 5'd27);
-
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  shortq_decode[4:0];
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_3bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_4bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [37:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable;
-   logic                   r_sign_sel;
-   logic                   r_restore_sel;
-   logic                   r_adder01_sel, r_adder02_sel, r_adder03_sel;
-   logic                   r_adder04_sel, r_adder05_sel, r_adder06_sel, r_adder07_sel;
-   logic                   r_adder08_sel, r_adder09_sel, r_adder10_sel, r_adder11_sel;
-   logic                   r_adder12_sel, r_adder13_sel, r_adder14_sel, r_adder15_sel;
-   logic        [32:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic        [15:1]     quotient_raw;
-   logic         [3:0]     quotient_new;
-   logic        [34:0]     adder01_out;
-   logic        [35:0]     adder02_out;
-   logic        [36:0]     adder03_out;
-   logic        [37:0]     adder04_out;
-   logic        [37:0]     adder05_out;
-   logic        [37:0]     adder06_out;
-   logic        [37:0]     adder07_out;
-   logic        [37:0]     adder08_out;
-   logic        [37:0]     adder09_out;
-   logic        [37:0]     adder10_out;
-   logic        [37:0]     adder11_out;
-   logic        [37:0]     adder12_out;
-   logic        [37:0]     adder13_out;
-   logic        [37:0]     adder14_out;
-   logic        [37:0]     adder15_out;
-
-   logic        [64:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_decode;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),     .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                       .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),        .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),        .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(33) i_r_ff           (.*, .clk(clk), .en(rq_enable),       .din(r_in[32:0]),           .dout(r_ff[32:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),       .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + 7'd4 + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[64:0]       = { {33{dividend_sign_ff}} , a_ff[31:0]} << {shortq_shift_ff[4:0]};
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[27:0],4'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[3:0] == 4'd00) & ~shortq_enable_ff;
-   assign r_adder01_sel          =  running_state & (quotient_new[3:0] == 4'd01) & ~shortq_enable_ff;
-   assign r_adder02_sel          =  running_state & (quotient_new[3:0] == 4'd02) & ~shortq_enable_ff;
-   assign r_adder03_sel          =  running_state & (quotient_new[3:0] == 4'd03) & ~shortq_enable_ff;
-   assign r_adder04_sel          =  running_state & (quotient_new[3:0] == 4'd04) & ~shortq_enable_ff;
-   assign r_adder05_sel          =  running_state & (quotient_new[3:0] == 4'd05) & ~shortq_enable_ff;
-   assign r_adder06_sel          =  running_state & (quotient_new[3:0] == 4'd06) & ~shortq_enable_ff;
-   assign r_adder07_sel          =  running_state & (quotient_new[3:0] == 4'd07) & ~shortq_enable_ff;
-   assign r_adder08_sel          =  running_state & (quotient_new[3:0] == 4'd08) & ~shortq_enable_ff;
-   assign r_adder09_sel          =  running_state & (quotient_new[3:0] == 4'd09) & ~shortq_enable_ff;
-   assign r_adder10_sel          =  running_state & (quotient_new[3:0] == 4'd10) & ~shortq_enable_ff;
-   assign r_adder11_sel          =  running_state & (quotient_new[3:0] == 4'd11) & ~shortq_enable_ff;
-   assign r_adder12_sel          =  running_state & (quotient_new[3:0] == 4'd12) & ~shortq_enable_ff;
-   assign r_adder13_sel          =  running_state & (quotient_new[3:0] == 4'd13) & ~shortq_enable_ff;
-   assign r_adder14_sel          =  running_state & (quotient_new[3:0] == 4'd14) & ~shortq_enable_ff;
-   assign r_adder15_sel          =  running_state & (quotient_new[3:0] == 4'd15) & ~shortq_enable_ff;
-
-   assign r_in[32:0]             = ( {33{r_sign_sel      }} & {33{1'b1}}               ) |
-                                   ( {33{r_restore_sel   }} & {r_ff[28:0],a_ff[31:28]} ) |
-                                   ( {33{r_adder01_sel   }} &  adder01_out[32:0]       ) |
-                                   ( {33{r_adder02_sel   }} &  adder02_out[32:0]       ) |
-                                   ( {33{r_adder03_sel   }} &  adder03_out[32:0]       ) |
-                                   ( {33{r_adder04_sel   }} &  adder04_out[32:0]       ) |
-                                   ( {33{r_adder05_sel   }} &  adder05_out[32:0]       ) |
-                                   ( {33{r_adder06_sel   }} &  adder06_out[32:0]       ) |
-                                   ( {33{r_adder07_sel   }} &  adder07_out[32:0]       ) |
-                                   ( {33{r_adder08_sel   }} &  adder08_out[32:0]       ) |
-                                   ( {33{r_adder09_sel   }} &  adder09_out[32:0]       ) |
-                                   ( {33{r_adder10_sel   }} &  adder10_out[32:0]       ) |
-                                   ( {33{r_adder11_sel   }} &  adder11_out[32:0]       ) |
-                                   ( {33{r_adder12_sel   }} &  adder12_out[32:0]       ) |
-                                   ( {33{r_adder13_sel   }} &  adder13_out[32:0]       ) |
-                                   ( {33{r_adder14_sel   }} &  adder14_out[32:0]       ) |
-                                   ( {33{r_adder15_sel   }} &  adder15_out[32:0]       ) |
-                                   ( {33{shortq_enable_ff}} &  ar_shifted[64:32]       ) |
-                                   ( {33{by_zero_case    }} & {1'b0,a_ff[31:0]}        );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff     }} & {q_ff[27:0], quotient_new[3:0]} ) |
-                                   ( {32{ smallnum_case}} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case }} & {32{1'b1}}                      );
-
-
-   assign b_ff[37:33]            = {b_ff[32],b_ff[32],b_ff[32],b_ff[32],b_ff[32]};
-
-
-   assign adder01_out[34:0]      = {         r_ff[30:0],a_ff[31:28]}  +                                                                   b_ff[34:0];
-   assign adder02_out[35:0]      = {         r_ff[31:0],a_ff[31:28]}  +                                             {b_ff[34:0],1'b0};
-   assign adder03_out[36:0]      = {         r_ff[32:0],a_ff[31:28]}  +                                             {b_ff[35:0],1'b0}  +  b_ff[36:0];
-   assign adder04_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0};
-   assign adder05_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +                        b_ff[37:0];
-   assign adder06_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0};
-   assign adder07_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0}  +  b_ff[37:0];
-   assign adder08_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0};
-   assign adder09_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                                              b_ff[37:0];
-   assign adder10_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                        {b_ff[36:0],1'b0};
-   assign adder11_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                        {b_ff[36:0],1'b0}  +  b_ff[37:0];
-   assign adder12_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0};
-   assign adder13_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +                        b_ff[37:0];
-   assign adder14_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0};
-   assign adder15_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0}  +  b_ff[37:0];
-
-   assign quotient_raw[01]       = (~adder01_out[34] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder01_out[34:0] == 35'b0) );
-   assign quotient_raw[02]       = (~adder02_out[35] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder02_out[35:0] == 36'b0) );
-   assign quotient_raw[03]       = (~adder03_out[36] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder03_out[36:0] == 37'b0) );
-   assign quotient_raw[04]       = (~adder04_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder04_out[37:0] == 38'b0) );
-   assign quotient_raw[05]       = (~adder05_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder05_out[37:0] == 38'b0) );
-   assign quotient_raw[06]       = (~adder06_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder06_out[37:0] == 38'b0) );
-   assign quotient_raw[07]       = (~adder07_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder07_out[37:0] == 38'b0) );
-   assign quotient_raw[08]       = (~adder08_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder08_out[37:0] == 38'b0) );
-   assign quotient_raw[09]       = (~adder09_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder09_out[37:0] == 38'b0) );
-   assign quotient_raw[10]       = (~adder10_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder10_out[37:0] == 38'b0) );
-   assign quotient_raw[11]       = (~adder11_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder11_out[37:0] == 38'b0) );
-   assign quotient_raw[12]       = (~adder12_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder12_out[37:0] == 38'b0) );
-   assign quotient_raw[13]       = (~adder13_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder13_out[37:0] == 38'b0) );
-   assign quotient_raw[14]       = (~adder14_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder14_out[37:0] == 38'b0) );
-   assign quotient_raw[15]       = (~adder15_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder15_out[37:0] == 38'b0) );
-
-
-   assign quotient_new[0]        = ( quotient_raw[15:01] == 15'b000_0000_0000_0001 ) |  //  1
-                                   ( quotient_raw[15:03] == 13'b000_0000_0000_01   ) |  //  3
-                                   ( quotient_raw[15:05] == 11'b000_0000_0001      ) |  //  5
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:09] ==  7'b000_0001           ) |  //  9
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[1]        = ( quotient_raw[15:02] == 14'b000_0000_0000_001  ) |  //  2
-                                   ( quotient_raw[15:03] == 13'b000_0000_0000_01   ) |  //  3
-                                   ( quotient_raw[15:06] == 10'b000_0000_001       ) |  //  6
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:10] ==  6'b000_001            ) |  // 10
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[2]        = ( quotient_raw[15:04] == 12'b000_0000_0000_1    ) |  //  4
-                                   ( quotient_raw[15:05] == 11'b000_0000_0001      ) |  //  5
-                                   ( quotient_raw[15:06] == 10'b000_0000_001       ) |  //  6
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:12] ==  4'b000_1              ) |  // 12
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[3]        = ( quotient_raw[15:08] ==  8'b000_0000_1         ) |  //  8
-                                   ( quotient_raw[15:09] ==  7'b000_0001           ) |  //  9
-                                   ( quotient_raw[15:10] ==  6'b000_001            ) |  // 10
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:12] ==  4'b000_1              ) |  // 12
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:2] ==  3'b111) & ~cancel;
-
-   assign shortq_decode[4:0]      = ( {5{shortq[4:0] == 5'd31}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd30}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd29}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd28}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd27}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd26}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd25}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd24}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd23}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd22}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd21}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd20}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd19}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd18}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd17}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd16}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd15}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd14}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd13}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd12}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd11}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd10}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd09}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd08}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd07}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd06}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd05}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd04}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd03}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd02}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd01}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd00}} & 5'd28);
-
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  shortq_decode[4:0];
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_4bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-module eb1_exu_div_cls
-  (
-   input  logic [32:0] operand,
-
-   output logic [4:0]  cls                  // Count leading sign bits - "n" format ignoring [32]
-   );
-
-
-   logic [4:0]   cls_zeros;
-   logic [4:0]   cls_ones;
-
-
-assign cls_zeros[4:0]             = ({5{operand[31]    ==  {           1'b1} }} & 5'd00) |
-                                    ({5{operand[31:30] ==  {{ 1{1'b0}},1'b1} }} & 5'd01) |
-                                    ({5{operand[31:29] ==  {{ 2{1'b0}},1'b1} }} & 5'd02) |
-                                    ({5{operand[31:28] ==  {{ 3{1'b0}},1'b1} }} & 5'd03) |
-                                    ({5{operand[31:27] ==  {{ 4{1'b0}},1'b1} }} & 5'd04) |
-                                    ({5{operand[31:26] ==  {{ 5{1'b0}},1'b1} }} & 5'd05) |
-                                    ({5{operand[31:25] ==  {{ 6{1'b0}},1'b1} }} & 5'd06) |
-                                    ({5{operand[31:24] ==  {{ 7{1'b0}},1'b1} }} & 5'd07) |
-                                    ({5{operand[31:23] ==  {{ 8{1'b0}},1'b1} }} & 5'd08) |
-                                    ({5{operand[31:22] ==  {{ 9{1'b0}},1'b1} }} & 5'd09) |
-                                    ({5{operand[31:21] ==  {{10{1'b0}},1'b1} }} & 5'd10) |
-                                    ({5{operand[31:20] ==  {{11{1'b0}},1'b1} }} & 5'd11) |
-                                    ({5{operand[31:19] ==  {{12{1'b0}},1'b1} }} & 5'd12) |
-                                    ({5{operand[31:18] ==  {{13{1'b0}},1'b1} }} & 5'd13) |
-                                    ({5{operand[31:17] ==  {{14{1'b0}},1'b1} }} & 5'd14) |
-                                    ({5{operand[31:16] ==  {{15{1'b0}},1'b1} }} & 5'd15) |
-                                    ({5{operand[31:15] ==  {{16{1'b0}},1'b1} }} & 5'd16) |
-                                    ({5{operand[31:14] ==  {{17{1'b0}},1'b1} }} & 5'd17) |
-                                    ({5{operand[31:13] ==  {{18{1'b0}},1'b1} }} & 5'd18) |
-                                    ({5{operand[31:12] ==  {{19{1'b0}},1'b1} }} & 5'd19) |
-                                    ({5{operand[31:11] ==  {{20{1'b0}},1'b1} }} & 5'd20) |
-                                    ({5{operand[31:10] ==  {{21{1'b0}},1'b1} }} & 5'd21) |
-                                    ({5{operand[31:09] ==  {{22{1'b0}},1'b1} }} & 5'd22) |
-                                    ({5{operand[31:08] ==  {{23{1'b0}},1'b1} }} & 5'd23) |
-                                    ({5{operand[31:07] ==  {{24{1'b0}},1'b1} }} & 5'd24) |
-                                    ({5{operand[31:06] ==  {{25{1'b0}},1'b1} }} & 5'd25) |
-                                    ({5{operand[31:05] ==  {{26{1'b0}},1'b1} }} & 5'd26) |
-                                    ({5{operand[31:04] ==  {{27{1'b0}},1'b1} }} & 5'd27) |
-                                    ({5{operand[31:03] ==  {{28{1'b0}},1'b1} }} & 5'd28) |
-                                    ({5{operand[31:02] ==  {{29{1'b0}},1'b1} }} & 5'd29) |
-                                    ({5{operand[31:01] ==  {{30{1'b0}},1'b1} }} & 5'd30) |
-                                    ({5{operand[31:00] ==  {{31{1'b0}},1'b1} }} & 5'd31) |
-                                    ({5{operand[31:00] ==  {{32{1'b0}}     } }} & 5'd00);    // Don't care case as it will be handled as special case
-
-
-assign cls_ones[4:0]              = ({5{operand[31:30] ==  {{ 1{1'b1}},1'b0} }} & 5'd00) |
-                                    ({5{operand[31:29] ==  {{ 2{1'b1}},1'b0} }} & 5'd01) |
-                                    ({5{operand[31:28] ==  {{ 3{1'b1}},1'b0} }} & 5'd02) |
-                                    ({5{operand[31:27] ==  {{ 4{1'b1}},1'b0} }} & 5'd03) |
-                                    ({5{operand[31:26] ==  {{ 5{1'b1}},1'b0} }} & 5'd04) |
-                                    ({5{operand[31:25] ==  {{ 6{1'b1}},1'b0} }} & 5'd05) |
-                                    ({5{operand[31:24] ==  {{ 7{1'b1}},1'b0} }} & 5'd06) |
-                                    ({5{operand[31:23] ==  {{ 8{1'b1}},1'b0} }} & 5'd07) |
-                                    ({5{operand[31:22] ==  {{ 9{1'b1}},1'b0} }} & 5'd08) |
-                                    ({5{operand[31:21] ==  {{10{1'b1}},1'b0} }} & 5'd09) |
-                                    ({5{operand[31:20] ==  {{11{1'b1}},1'b0} }} & 5'd10) |
-                                    ({5{operand[31:19] ==  {{12{1'b1}},1'b0} }} & 5'd11) |
-                                    ({5{operand[31:18] ==  {{13{1'b1}},1'b0} }} & 5'd12) |
-                                    ({5{operand[31:17] ==  {{14{1'b1}},1'b0} }} & 5'd13) |
-                                    ({5{operand[31:16] ==  {{15{1'b1}},1'b0} }} & 5'd14) |
-                                    ({5{operand[31:15] ==  {{16{1'b1}},1'b0} }} & 5'd15) |
-                                    ({5{operand[31:14] ==  {{17{1'b1}},1'b0} }} & 5'd16) |
-                                    ({5{operand[31:13] ==  {{18{1'b1}},1'b0} }} & 5'd17) |
-                                    ({5{operand[31:12] ==  {{19{1'b1}},1'b0} }} & 5'd18) |
-                                    ({5{operand[31:11] ==  {{20{1'b1}},1'b0} }} & 5'd19) |
-                                    ({5{operand[31:10] ==  {{21{1'b1}},1'b0} }} & 5'd20) |
-                                    ({5{operand[31:09] ==  {{22{1'b1}},1'b0} }} & 5'd21) |
-                                    ({5{operand[31:08] ==  {{23{1'b1}},1'b0} }} & 5'd22) |
-                                    ({5{operand[31:07] ==  {{24{1'b1}},1'b0} }} & 5'd23) |
-                                    ({5{operand[31:06] ==  {{25{1'b1}},1'b0} }} & 5'd24) |
-                                    ({5{operand[31:05] ==  {{26{1'b1}},1'b0} }} & 5'd25) |
-                                    ({5{operand[31:04] ==  {{27{1'b1}},1'b0} }} & 5'd26) |
-                                    ({5{operand[31:03] ==  {{28{1'b1}},1'b0} }} & 5'd27) |
-                                    ({5{operand[31:02] ==  {{29{1'b1}},1'b0} }} & 5'd28) |
-                                    ({5{operand[31:01] ==  {{30{1'b1}},1'b0} }} & 5'd29) |
-                                    ({5{operand[31:00] ==  {{31{1'b1}},1'b0} }} & 5'd30) |
-                                    ({5{operand[31:00] ==  {{32{1'b1}}     } }} & 5'd31);
-
-
-assign cls[4:0]                   =  operand[32]  ?  cls_ones[4:0]  :  cls_zeros[4:0];
-
-endmodule // eb1_exu_div_cls
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_exu_mul_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_exu_mul_ctl.sv
deleted file mode 100644
index 345d5f4..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_exu_mul_ctl.sv
+++ /dev/null
@@ -1,627 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_mul_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic          clk,              // Top level clock
-   input logic          rst_l,            // Reset
-   input logic          scan_mode,        // Scan mode
-
-   input eb1_mul_pkt_t mul_p,            // {Valid, RS1 signed operand, RS2 signed operand, Select low 32-bits of result}
-
-   input logic [31:0]   rs1_in,           // A operand
-   input logic [31:0]   rs2_in,           // B operand
-
-
-   output logic [31:0]  result_x          // Result
-  );
-
-
-   logic                mul_x_enable;
-   logic                bit_x_enable;
-   logic signed [32:0]  rs1_ext_in;
-   logic signed [32:0]  rs2_ext_in;
-   logic        [65:0]  prod_x;
-   logic                low_x;
-
-
-
-   // *** Start - BitManip ***
-
-   logic                bitmanip_sel_d;
-   logic                bitmanip_sel_x;
-   logic        [31:0]  bitmanip_d;
-   logic        [31:0]  bitmanip_x;
-
-
-
-   // ZBE
-   logic                ap_bext;
-   logic                ap_bdep;
-
-   // ZBC
-   logic                ap_clmul;
-   logic                ap_clmulh;
-   logic                ap_clmulr;
-
-   // ZBP
-   logic                ap_grev;
-   logic                ap_gorc;
-   logic                ap_shfl;
-   logic                ap_unshfl;
-
-   // ZBR
-   logic                ap_crc32_b;
-   logic                ap_crc32_h;
-   logic                ap_crc32_w;
-   logic                ap_crc32c_b;
-   logic                ap_crc32c_h;
-   logic                ap_crc32c_w;
-
-   // ZBF
-   logic                ap_bfp;
-
-
-   if (pt.BITMANIP_ZBE == 1)
-     begin
-       assign ap_bext         =  mul_p.bext;
-       assign ap_bdep         =  mul_p.bdep;
-     end
-   else
-     begin
-       assign ap_bext         =  1'b0;
-       assign ap_bdep         =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBC == 1)
-     begin
-       assign ap_clmul        =  mul_p.clmul;
-       assign ap_clmulh       =  mul_p.clmulh;
-       assign ap_clmulr       =  mul_p.clmulr;
-     end
-   else
-     begin
-       assign ap_clmul        =  1'b0;
-       assign ap_clmulh       =  1'b0;
-       assign ap_clmulr       =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBP == 1)
-     begin
-       assign ap_grev         =  mul_p.grev;
-       assign ap_gorc         =  mul_p.gorc;
-       assign ap_shfl         =  mul_p.shfl;
-       assign ap_unshfl       =  mul_p.unshfl;
-     end
-   else
-     begin
-       assign ap_grev         =  1'b0;
-       assign ap_gorc         =  1'b0;
-       assign ap_shfl         =  1'b0;
-       assign ap_unshfl       =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBR == 1)
-     begin
-       assign ap_crc32_b      =  mul_p.crc32_b;
-       assign ap_crc32_h      =  mul_p.crc32_h;
-       assign ap_crc32_w      =  mul_p.crc32_w;
-       assign ap_crc32c_b     =  mul_p.crc32c_b;
-       assign ap_crc32c_h     =  mul_p.crc32c_h;
-       assign ap_crc32c_w     =  mul_p.crc32c_w;
-     end
-   else
-     begin
-       assign ap_crc32_b      =  1'b0;
-       assign ap_crc32_h      =  1'b0;
-       assign ap_crc32_w      =  1'b0;
-       assign ap_crc32c_b     =  1'b0;
-       assign ap_crc32c_h     =  1'b0;
-       assign ap_crc32c_w     =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBF == 1)
-     begin
-       assign ap_bfp          =  mul_p.bfp;
-     end
-   else
-     begin
-       assign ap_bfp          =  1'b0;
-     end
-
-
-   // *** End   - BitManip ***
-
-
-
-   assign mul_x_enable           =  mul_p.valid;
-   assign bit_x_enable           =  mul_p.valid;
-
-   assign rs1_ext_in[32]         =  mul_p.rs1_sign & rs1_in[31];
-   assign rs2_ext_in[32]         =  mul_p.rs2_sign & rs2_in[31];
-
-   assign rs1_ext_in[31:0]       =  rs1_in[31:0];
-   assign rs2_ext_in[31:0]       =  rs2_in[31:0];
-
-
-
-   // --------------------------- Multiply       ----------------------------------
-
-
-   logic signed [32:0]  rs1_x;
-   logic signed [32:0]  rs2_x;
-
-   rvdffe #(34) i_a_x_ff         (.*, .clk(clk),  .din({mul_p.low,rs1_ext_in[32:0]}),        .dout({low_x,rs1_x[32:0]}),                 .en(mul_x_enable));
-   rvdffe #(33) i_b_x_ff         (.*, .clk(clk),  .din(           rs2_ext_in[32:0] ),        .dout(       rs2_x[32:0] ),                 .en(mul_x_enable));
-
-
-   assign prod_x[65:0]           =  rs1_x  *  rs2_x;
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  BEXT, BDEP   * * * * * * * * * * * * * * * * * *
-
-
-   // *** BEXT == "gather"  ***
-
-   logic        [31:0]    bext_d;
-   logic                  bext_test_bit_d;
-   integer                bext_i, bext_j;
-
-
-   always_comb
-     begin
-
-       bext_j                    =      0;
-       bext_test_bit_d           =   1'b0;
-       bext_d[31:0]              =  32'b0;
-
-       for (bext_i=0; bext_i<32; bext_i++)
-         begin
-             bext_test_bit_d     =  rs2_in[bext_i];
-             if (bext_test_bit_d)
-               begin
-                  bext_d[bext_j] =  rs1_in[bext_i];
-                  bext_j         =  bext_j + 1;
-               end  // IF  bext_test_bit
-         end        // FOR bext_i
-     end            // ALWAYS_COMB
-
-
-
-   // *** BDEP == "scatter" ***
-
-   logic        [31:0]    bdep_d;
-   logic                  bdep_test_bit_d;
-   integer                bdep_i, bdep_j;
-
-
-   always_comb
-     begin
-
-       bdep_j                    =      0;
-       bdep_test_bit_d           =   1'b0;
-       bdep_d[31:0]              =  32'b0;
-
-       for (bdep_i=0; bdep_i<32; bdep_i++)
-         begin
-             bdep_test_bit_d     =  rs2_in[bdep_i];
-             if (bdep_test_bit_d)
-               begin
-                  bdep_d[bdep_i] =  rs1_in[bdep_j];
-                  bdep_j         =  bdep_j + 1;
-               end  // IF  bdep_test_bit
-         end        // FOR bdep_i
-     end            // ALWAYS_COMB
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CLMUL, CLMULH, CLMULR  * * * * * * * * * * * * *
-
-   logic        [62:0]    clmul_raw_d;
-
-
-   assign clmul_raw_d[62:0]      = ( {63{rs2_in[00]}} & {31'b0,rs1_in[31:0]      } ) ^
-                                   ( {63{rs2_in[01]}} & {30'b0,rs1_in[31:0], 1'b0} ) ^
-                                   ( {63{rs2_in[02]}} & {29'b0,rs1_in[31:0], 2'b0} ) ^
-                                   ( {63{rs2_in[03]}} & {28'b0,rs1_in[31:0], 3'b0} ) ^
-                                   ( {63{rs2_in[04]}} & {27'b0,rs1_in[31:0], 4'b0} ) ^
-                                   ( {63{rs2_in[05]}} & {26'b0,rs1_in[31:0], 5'b0} ) ^
-                                   ( {63{rs2_in[06]}} & {25'b0,rs1_in[31:0], 6'b0} ) ^
-                                   ( {63{rs2_in[07]}} & {24'b0,rs1_in[31:0], 7'b0} ) ^
-                                   ( {63{rs2_in[08]}} & {23'b0,rs1_in[31:0], 8'b0} ) ^
-                                   ( {63{rs2_in[09]}} & {22'b0,rs1_in[31:0], 9'b0} ) ^
-                                   ( {63{rs2_in[10]}} & {21'b0,rs1_in[31:0],10'b0} ) ^
-                                   ( {63{rs2_in[11]}} & {20'b0,rs1_in[31:0],11'b0} ) ^
-                                   ( {63{rs2_in[12]}} & {19'b0,rs1_in[31:0],12'b0} ) ^
-                                   ( {63{rs2_in[13]}} & {18'b0,rs1_in[31:0],13'b0} ) ^
-                                   ( {63{rs2_in[14]}} & {17'b0,rs1_in[31:0],14'b0} ) ^
-                                   ( {63{rs2_in[15]}} & {16'b0,rs1_in[31:0],15'b0} ) ^
-                                   ( {63{rs2_in[16]}} & {15'b0,rs1_in[31:0],16'b0} ) ^
-                                   ( {63{rs2_in[17]}} & {14'b0,rs1_in[31:0],17'b0} ) ^
-                                   ( {63{rs2_in[18]}} & {13'b0,rs1_in[31:0],18'b0} ) ^
-                                   ( {63{rs2_in[19]}} & {12'b0,rs1_in[31:0],19'b0} ) ^
-                                   ( {63{rs2_in[20]}} & {11'b0,rs1_in[31:0],20'b0} ) ^
-                                   ( {63{rs2_in[21]}} & {10'b0,rs1_in[31:0],21'b0} ) ^
-                                   ( {63{rs2_in[22]}} & { 9'b0,rs1_in[31:0],22'b0} ) ^
-                                   ( {63{rs2_in[23]}} & { 8'b0,rs1_in[31:0],23'b0} ) ^
-                                   ( {63{rs2_in[24]}} & { 7'b0,rs1_in[31:0],24'b0} ) ^
-                                   ( {63{rs2_in[25]}} & { 6'b0,rs1_in[31:0],25'b0} ) ^
-                                   ( {63{rs2_in[26]}} & { 5'b0,rs1_in[31:0],26'b0} ) ^
-                                   ( {63{rs2_in[27]}} & { 4'b0,rs1_in[31:0],27'b0} ) ^
-                                   ( {63{rs2_in[28]}} & { 3'b0,rs1_in[31:0],28'b0} ) ^
-                                   ( {63{rs2_in[29]}} & { 2'b0,rs1_in[31:0],29'b0} ) ^
-                                   ( {63{rs2_in[30]}} & { 1'b0,rs1_in[31:0],30'b0} ) ^
-                                   ( {63{rs2_in[31]}} & {      rs1_in[31:0],31'b0} );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  GREV         * * * * * * * * * * * * * * * * * *
-
-   // uint32_t grev32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 31;
-   //
-   //     if (shamt &  1)  x = ( (x & 0x55555555) <<  1) | ( (x & 0xAAAAAAAA) >>  1);
-   //     if (shamt &  2)  x = ( (x & 0x33333333) <<  2) | ( (x & 0xCCCCCCCC) >>  2);
-   //     if (shamt &  4)  x = ( (x & 0x0F0F0F0F) <<  4) | ( (x & 0xF0F0F0F0) >>  4);
-   //     if (shamt &  8)  x = ( (x & 0x00FF00FF) <<  8) | ( (x & 0xFF00FF00) >>  8);
-   //     if (shamt & 16)  x = ( (x & 0x0000FFFF) << 16) | ( (x & 0xFFFF0000) >> 16);
-   //
-   //     return x;
-   //  }
-
-
-   logic        [31:0]    grev1_d;
-   logic        [31:0]    grev2_d;
-   logic        [31:0]    grev4_d;
-   logic        [31:0]    grev8_d;
-   logic        [31:0]    grev_d;
-
-
-   assign grev1_d[31:0]       = (rs2_in[0])  ?  {rs1_in[30],rs1_in[31],rs1_in[28],rs1_in[29],rs1_in[26],rs1_in[27],rs1_in[24],rs1_in[25],
-                                                 rs1_in[22],rs1_in[23],rs1_in[20],rs1_in[21],rs1_in[18],rs1_in[19],rs1_in[16],rs1_in[17],
-                                                 rs1_in[14],rs1_in[15],rs1_in[12],rs1_in[13],rs1_in[10],rs1_in[11],rs1_in[08],rs1_in[09],
-                                                 rs1_in[06],rs1_in[07],rs1_in[04],rs1_in[05],rs1_in[02],rs1_in[03],rs1_in[00],rs1_in[01]}  :  rs1_in[31:0];
-
-   assign grev2_d[31:0]       = (rs2_in[1])  ?  {grev1_d[29:28],grev1_d[31:30],grev1_d[25:24],grev1_d[27:26],
-                                                 grev1_d[21:20],grev1_d[23:22],grev1_d[17:16],grev1_d[19:18],
-                                                 grev1_d[13:12],grev1_d[15:14],grev1_d[09:08],grev1_d[11:10],
-                                                 grev1_d[05:04],grev1_d[07:06],grev1_d[01:00],grev1_d[03:02]}  :  grev1_d[31:0];
-
-   assign grev4_d[31:0]       = (rs2_in[2])  ?  {grev2_d[27:24],grev2_d[31:28],grev2_d[19:16],grev2_d[23:20],
-                                                 grev2_d[11:08],grev2_d[15:12],grev2_d[03:00],grev2_d[07:04]}  :  grev2_d[31:0];
-
-   assign grev8_d[31:0]       = (rs2_in[3])  ?  {grev4_d[23:16],grev4_d[31:24],grev4_d[07:00],grev4_d[15:08]}  :  grev4_d[31:0];
-
-   assign grev_d[31:0]        = (rs2_in[4])  ?  {grev8_d[15:00],grev8_d[31:16]}  :  grev8_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  GORC         * * * * * * * * * * * * * * * * * *
-
-   // uint32_t gorc32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 31;
-   //
-   //     if (shamt &  1)  x |= ( (x & 0x55555555) <<  1) | ( (x & 0xAAAAAAAA) >>  1);
-   //     if (shamt &  2)  x |= ( (x & 0x33333333) <<  2) | ( (x & 0xCCCCCCCC) >>  2);
-   //     if (shamt &  4)  x |= ( (x & 0x0F0F0F0F) <<  4) | ( (x & 0xF0F0F0F0) >>  4);
-   //     if (shamt &  8)  x |= ( (x & 0x00FF00FF) <<  8) | ( (x & 0xFF00FF00) >>  8);
-   //     if (shamt & 16)  x |= ( (x & 0x0000FFFF) << 16) | ( (x & 0xFFFF0000) >> 16);
-   //
-   //     return x;
-   //  }
-
-
-   logic        [31:0]    gorc1_d;
-   logic        [31:0]    gorc2_d;
-   logic        [31:0]    gorc4_d;
-   logic        [31:0]    gorc8_d;
-   logic        [31:0]    gorc_d;
-
-
-   assign gorc1_d[31:0]       = ( {32{rs2_in[0]}} & {rs1_in[30],rs1_in[31],rs1_in[28],rs1_in[29],rs1_in[26],rs1_in[27],rs1_in[24],rs1_in[25],
-                                                     rs1_in[22],rs1_in[23],rs1_in[20],rs1_in[21],rs1_in[18],rs1_in[19],rs1_in[16],rs1_in[17],
-                                                     rs1_in[14],rs1_in[15],rs1_in[12],rs1_in[13],rs1_in[10],rs1_in[11],rs1_in[08],rs1_in[09],
-                                                     rs1_in[06],rs1_in[07],rs1_in[04],rs1_in[05],rs1_in[02],rs1_in[03],rs1_in[00],rs1_in[01]} ) | rs1_in[31:0];
-
-   assign gorc2_d[31:0]       = ( {32{rs2_in[1]}} & {gorc1_d[29:28],gorc1_d[31:30],gorc1_d[25:24],gorc1_d[27:26],
-                                                     gorc1_d[21:20],gorc1_d[23:22],gorc1_d[17:16],gorc1_d[19:18],
-                                                     gorc1_d[13:12],gorc1_d[15:14],gorc1_d[09:08],gorc1_d[11:10],
-                                                     gorc1_d[05:04],gorc1_d[07:06],gorc1_d[01:00],gorc1_d[03:02]} ) | gorc1_d[31:0];
-
-   assign gorc4_d[31:0]       = ( {32{rs2_in[2]}} & {gorc2_d[27:24],gorc2_d[31:28],gorc2_d[19:16],gorc2_d[23:20],
-                                                     gorc2_d[11:08],gorc2_d[15:12],gorc2_d[03:00],gorc2_d[07:04]} ) | gorc2_d[31:0];
-
-   assign gorc8_d[31:0]       = ( {32{rs2_in[3]}} & {gorc4_d[23:16],gorc4_d[31:24],gorc4_d[07:00],gorc4_d[15:08]} ) | gorc4_d[31:0];
-
-   assign gorc_d[31:0]        = ( {32{rs2_in[4]}} & {gorc8_d[15:00],gorc8_d[31:16]} ) | gorc8_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SHFL, UNSHLF * * * * * * * * * * * * * * * * * *
-
-   // uint32_t shuffle32_stage (uint32_t src, uint32_t maskL, uint32_t maskR, int N)
-   // {
-   //     uint32_t x  = src & ~(maskL | maskR);
-   //     x          |= ((src << N) & maskL) | ((src >> N) & maskR);
-   //     return x;
-   // }
-   //
-   //
-   //
-   // uint32_t shfl32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 15
-   //
-   //     if (shamt & 8)  x = shuffle32_stage(x, 0x00ff0000, 0x0000ff00, 8);
-   //     if (shamt & 4)  x = shuffle32_stage(x, 0x0f000f00, 0x00f000f0, 4);
-   //     if (shamt & 2)  x = shuffle32_stage(x, 0x30303030, 0xc0c0c0c0, 2);
-   //     if (shamt & 1)  x = shuffle32_stage(x, 0x44444444, 0x22222222, 1);
-   //
-   //     return x;
-   // }
-
-
-   logic        [31:0]    shfl8_d;
-   logic        [31:0]    shfl4_d;
-   logic        [31:0]    shfl2_d;
-   logic        [31:0]    shfl_d;
-
-
-
-   assign shfl8_d[31:0]       = (rs2_in[3])  ?  {rs1_in[31:24],rs1_in[15:08],rs1_in[23:16],rs1_in[07:00]}      :  rs1_in[31:0];
-
-   assign shfl4_d[31:0]       = (rs2_in[2])  ?  {shfl8_d[31:28],shfl8_d[23:20],shfl8_d[27:24],shfl8_d[19:16],
-                                                 shfl8_d[15:12],shfl8_d[07:04],shfl8_d[11:08],shfl8_d[03:00]}  :  shfl8_d[31:0];
-
-   assign shfl2_d[31:0]       = (rs2_in[1])  ?  {shfl4_d[31:30],shfl4_d[27:26],shfl4_d[29:28],shfl4_d[25:24],
-                                                 shfl4_d[23:22],shfl4_d[19:18],shfl4_d[21:20],shfl4_d[17:16],
-                                                 shfl4_d[15:14],shfl4_d[11:10],shfl4_d[13:12],shfl4_d[09:08],
-                                                 shfl4_d[07:06],shfl4_d[03:02],shfl4_d[05:04],shfl4_d[01:00]}  :  shfl4_d[31:0];
-
-   assign shfl_d[31:0]        = (rs2_in[0])  ?  {shfl2_d[31],shfl2_d[29],shfl2_d[30],shfl2_d[28],shfl2_d[27],shfl2_d[25],shfl2_d[26],shfl2_d[24],
-                                                 shfl2_d[23],shfl2_d[21],shfl2_d[22],shfl2_d[20],shfl2_d[19],shfl2_d[17],shfl2_d[18],shfl2_d[16],
-                                                 shfl2_d[15],shfl2_d[13],shfl2_d[14],shfl2_d[12],shfl2_d[11],shfl2_d[09],shfl2_d[10],shfl2_d[08],
-                                                 shfl2_d[07],shfl2_d[05],shfl2_d[06],shfl2_d[04],shfl2_d[03],shfl2_d[01],shfl2_d[02],shfl2_d[00]}  :  shfl2_d[31:0];
-
-
-
-
-   // uint32_t unshfl32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 15
-   //
-   //     if (shamt & 1)  x = shuffle32_stage(x, 0x44444444, 0x22222222, 1);
-   //     if (shamt & 2)  x = shuffle32_stage(x, 0x30303030, 0xc0c0c0c0, 2);
-   //     if (shamt & 4)  x = shuffle32_stage(x, 0x0f000f00, 0x00f000f0, 4);
-   //     if (shamt & 8)  x = shuffle32_stage(x, 0x00ff0000, 0x0000ff00, 8);
-   //
-   //     return x;
-   // }
-
-
-   logic        [31:0]    unshfl1_d;
-   logic        [31:0]    unshfl2_d;
-   logic        [31:0]    unshfl4_d;
-   logic        [31:0]    unshfl_d;
-
-
-   assign unshfl1_d[31:0]     = (rs2_in[0])  ?  {rs1_in[31],rs1_in[29],rs1_in[30],rs1_in[28],rs1_in[27],rs1_in[25],rs1_in[26],rs1_in[24],
-                                                 rs1_in[23],rs1_in[21],rs1_in[22],rs1_in[20],rs1_in[19],rs1_in[17],rs1_in[18],rs1_in[16],
-                                                 rs1_in[15],rs1_in[13],rs1_in[14],rs1_in[12],rs1_in[11],rs1_in[09],rs1_in[10],rs1_in[08],
-                                                 rs1_in[07],rs1_in[05],rs1_in[06],rs1_in[04],rs1_in[03],rs1_in[01],rs1_in[02],rs1_in[00]}  :  rs1_in[31:0];
-
-   assign unshfl2_d[31:0]     = (rs2_in[1])  ?  {unshfl1_d[31:30],unshfl1_d[27:26],unshfl1_d[29:28],unshfl1_d[25:24],
-                                                 unshfl1_d[23:22],unshfl1_d[19:18],unshfl1_d[21:20],unshfl1_d[17:16],
-                                                 unshfl1_d[15:14],unshfl1_d[11:10],unshfl1_d[13:12],unshfl1_d[09:08],
-                                                 unshfl1_d[07:06],unshfl1_d[03:02],unshfl1_d[05:04],unshfl1_d[01:00]}  :  unshfl1_d[31:0];
-
-   assign unshfl4_d[31:0]     = (rs2_in[2])  ?  {unshfl2_d[31:28],unshfl2_d[23:20],unshfl2_d[27:24],unshfl2_d[19:16],
-                                                 unshfl2_d[15:12],unshfl2_d[07:04],unshfl2_d[11:08],unshfl2_d[03:00]}  :  unshfl2_d[31:0];
-
-   assign unshfl_d[31:0]      = (rs2_in[3])  ?  {unshfl4_d[31:24],unshfl4_d[15:08],unshfl4_d[23:16],unshfl4_d[07:00]}  :  unshfl4_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CRC32, CRC32c  * * * * * * * * * * * * * * * * *
-
-   // ***  computed from   https: //crccalc.com  ***
-   //
-   // "a" is 8'h61 = 8'b0110_0001    (8'h61 ^ 8'hff = 8'h9e)
-   //
-   // Input must first be XORed with 32'hffff_ffff
-   //
-   //
-   // CRC32
-   //
-   // Input    Output        Input      Output
-   // -----   --------      --------   --------
-   // "a"     e8b7be43      ffffff9e   174841bc
-   // "aa"    078a19d7      ffff9e9e   f875e628
-   // "aaaa"  ad98e545      9e9e9e9e   5267a1ba
-   //
-   //
-   //
-   // CRC32c
-   //
-   // Input    Output        Input      Output
-   // -----   --------      --------   --------
-   // "a"     c1d04330      ffffff9e   3e2fbccf
-   // "aa"    f1f2dac2      ffff9e9e   0e0d253d
-   // "aaaa"  6a52eeb0      9e9e9e9e   95ad114f
-
-
-   logic                  crc32_all;
-   logic        [31:0]    crc32_poly_rev;
-   logic        [31:0]    crc32c_poly_rev;
-   integer                crc32_bi, crc32_hi, crc32_wi, crc32c_bi, crc32c_hi, crc32c_wi;
-   logic        [31:0]    crc32_bd, crc32_hd, crc32_wd, crc32c_bd, crc32c_hd, crc32c_wd;
-
-
-   assign crc32_all              =  ap_crc32_b  | ap_crc32_h  | ap_crc32_w | ap_crc32c_b | ap_crc32c_h | ap_crc32c_w;
-
-   assign crc32_poly_rev[31:0]   =  32'hEDB88320;    // bit reverse of 32'h04C11DB7
-   assign crc32c_poly_rev[31:0]  =  32'h82F63B78;    // bit reverse of 32'h1EDC6F41
-
-
-   always_comb
-     begin
-       crc32_bd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_bi=0; crc32_bi<8; crc32_bi++)
-         begin
-            crc32_bd[31:0] = (crc32_bd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_bd[0]}});
-         end      // FOR    crc32_bi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32_hd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_hi=0; crc32_hi<16; crc32_hi++)
-         begin
-            crc32_hd[31:0] = (crc32_hd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_hd[0]}});
-         end      // FOR    crc32_hi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32_wd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_wi=0; crc32_wi<32; crc32_wi++)
-         begin
-            crc32_wd[31:0] = (crc32_wd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_wd[0]}});
-         end      // FOR    crc32_wi
-     end          // ALWAYS_COMB
-
-
-
-
-   always_comb
-     begin
-       crc32c_bd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_bi=0; crc32c_bi<8; crc32c_bi++)
-         begin
-            crc32c_bd[31:0] = (crc32c_bd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_bd[0]}});
-         end      // FOR    crc32c_bi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32c_hd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_hi=0; crc32c_hi<16; crc32c_hi++)
-         begin
-            crc32c_hd[31:0] = (crc32c_hd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_hd[0]}});
-         end      // FOR    crc32c_hi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32c_wd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_wi=0; crc32c_wi<32; crc32c_wi++)
-         begin
-            crc32c_wd[31:0] = (crc32c_wd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_wd[0]}});
-         end      // FOR    crc32c_wi
-     end          // ALWAYS_COMB
-
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  BFP          * * * * * * * * * * * * * * * * * *
-
-   logic        [4:0]     bfp_len;
-   logic        [4:0]     bfp_off;
-   logic        [31:0]    bfp_len_mask_;
-   logic        [15:0]    bfp_preshift_data;
-   logic        [63:0]    bfp_shift_data;
-   logic        [63:0]    bfp_shift_mask;
-   logic        [31:0]    bfp_result_d;
-
-
-   assign bfp_len[3:0]           =  rs2_in[27:24];
-   assign bfp_len[4]             = (bfp_len[3:0] == 4'b0);   // If LEN field is zero, then LEN=16
-   assign bfp_off[4:0]           =  rs2_in[20:16];
-
-   assign bfp_len_mask_[31:0]    =  32'hffff_ffff  <<  bfp_len[4:0];
-   assign bfp_preshift_data[15:0]=  rs2_in[15:0] & ~bfp_len_mask_[15:0];
-
-   assign bfp_shift_data[63:0]   = {16'b0,bfp_preshift_data[15:0], 16'b0,bfp_preshift_data[15:0]}  <<  bfp_off[4:0];
-   assign bfp_shift_mask[63:0]   = {bfp_len_mask_[31:0],           bfp_len_mask_[31:0]}            <<  bfp_off[4:0];
-
-   assign bfp_result_d[31:0]     = bfp_shift_data[63:32] | (rs1_in[31:0] & bfp_shift_mask[63:32]);
-
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  Common logic * * * * * * * * * * * * * * * * * *
-
-
-   assign bitmanip_sel_d         =  ap_bext | ap_bdep | ap_clmul | ap_clmulh | ap_clmulr | ap_grev | ap_gorc | ap_shfl | ap_unshfl | crc32_all | ap_bfp;
-
-   assign bitmanip_d[31:0]       = ( {32{ap_bext}}     &       bext_d[31:0]        ) |
-                                   ( {32{ap_bdep}}     &       bdep_d[31:0]        ) |
-                                   ( {32{ap_clmul}}    &       clmul_raw_d[31:0]   ) |
-                                   ( {32{ap_clmulh}}   & {1'b0,clmul_raw_d[62:32]} ) |
-                                   ( {32{ap_clmulr}}   &       clmul_raw_d[62:31]  ) |
-                                   ( {32{ap_grev}}     &       grev_d[31:0]        ) |
-                                   ( {32{ap_gorc}}     &       gorc_d[31:0]        ) |
-                                   ( {32{ap_shfl}}     &       shfl_d[31:0]        ) |
-                                   ( {32{ap_unshfl}}   &       unshfl_d[31:0]      ) |
-                                   ( {32{ap_crc32_b}}  &       crc32_bd[31:0]      ) |
-                                   ( {32{ap_crc32_h}}  &       crc32_hd[31:0]      ) |
-                                   ( {32{ap_crc32_w}}  &       crc32_wd[31:0]      ) |
-                                   ( {32{ap_crc32c_b}} &       crc32c_bd[31:0]     ) |
-                                   ( {32{ap_crc32c_h}} &       crc32c_hd[31:0]     ) |
-                                   ( {32{ap_crc32c_w}} &       crc32c_wd[31:0]     ) |
-                                   ( {32{ap_bfp}}      &       bfp_result_d[31:0]  );
-
-
-
-   rvdffe #(33) i_bitmanip_ff    (.*, .clk(clk),  .din({bitmanip_sel_d,bitmanip_d[31:0]}),   .dout({bitmanip_sel_x,bitmanip_x[31:0]}),   .en(bit_x_enable));
-
-
-
-
-   assign result_x[31:0]         =  ( {32{~bitmanip_sel_x & ~low_x}} & prod_x[63:32]    ) |
-                                    ( {32{~bitmanip_sel_x &  low_x}} & prod_x[31:0]     ) |
-                                                                       bitmanip_x[31:0];
-
-
-
-endmodule  // eb1_exu_mul_ctl
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_ifu.sv b/verilog/rtl/BrqRV_EB1/design/eb1_ifu.sv
deleted file mode 100644
index 6208094..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_ifu.sv
+++ /dev/null
@@ -1,371 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-//********************************************************************************
-// Function: Top level file for Icache, Fetch, Branch prediction & Aligner
-// BFF -> F1 -> F2 -> A
-//********************************************************************************
-
-module eb1_ifu
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic free_l2clk,                   // Clock always.                  Through one clock header.  For flops with    second header built in.
-   input logic active_clk,                   // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic clk,                          // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic rst_l,                        // reset, active low
-
-   input logic dec_i0_decode_d,              // Valid instruction at D and not blocked
-
-   input logic exu_flush_final, // flush, includes upper and lower
-   input logic dec_tlu_i0_commit_cmt , // committed i0
-   input logic dec_tlu_flush_err_wb , // flush due to parity error.
-   input logic dec_tlu_flush_noredir_wb, // don't fetch, validated with exu_flush_final
-   input logic [31:1] exu_flush_path_final, // flush fetch address
-
-   input logic [31:0]  dec_tlu_mrac_ff ,// Side_effect , cacheable for each region
-   input logic         dec_tlu_fence_i_wb, // fence.i, invalidate icache, validated with exu_flush_final
-   input logic         dec_tlu_flush_leak_one_wb, // ignore bp for leak one fetches
-
-   input logic                       dec_tlu_bpred_disable,     // disable all branch prediction
-   input logic                       dec_tlu_core_ecc_disable,  // disable ecc checking and flagging
-   input logic                       dec_tlu_force_halt,        // force halt
-
-  //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   output logic                            ifu_axi_bready,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-
-   input  logic                      ifu_bus_clk_en,
-
-   input  logic                      dma_iccm_req,
-   input  logic [31:0]               dma_mem_addr,
-   input  logic [2:0]                dma_mem_sz,
-   input  logic                      dma_mem_write,
-   input  logic [63:0]               dma_mem_wdata,
-   input  logic [2:0]                dma_mem_tag,       //  DMA Buffer entry number
-
-
-   input  logic                      dma_iccm_stall_any,
-   output logic                      iccm_dma_ecc_error,
-   output logic                      iccm_dma_rvalid,
-   output logic [63:0]               iccm_dma_rdata,
-   output logic [2:0]                iccm_dma_rtag,     //   Tag of the DMA req
-   output logic                      iccm_ready,
-
-   output logic       ifu_pmu_instr_aligned,
-   output logic       ifu_pmu_fetch_stall,
-   output logic       ifu_ic_error_start,     // has all of the I$ ecc/parity for data/tag
-
-//   I$ & ITAG Ports
-   output logic [31:1]               ic_rw_addr,         // Read/Write addresss to the Icache.
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_wr_en,           // Icache write enable, when filling the Icache.
-   output logic                      ic_rd_en,           // Icache read  enable.
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0][70:0]               ic_wr_data,         // Data to fill to the Icache. With ECC
-   input  logic [63:0]              ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]              ic_debug_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]                     ictag_debug_rd_data,// Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,   // Debug wr cache.
-
-   output logic [70:0]               ifu_ic_debug_rd_data,
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    //
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-   output logic [63:0]               ic_premux_data,     // Premux data to be muxed with each way of the Icache.
-   output logic                      ic_sel_premux_data, // Select the premux data.
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_tag_valid,       // Valid bits when accessing the Icache. One valid bit per way. F2 stage
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_rd_hit,          // Compare hits from Icache tags. Per way.  F2 stage
-   input  logic                      ic_tag_perr,        // Icache Tag parity error
-
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]               iccm_rw_addr,       // ICCM read/write address.
-   output logic                      iccm_wren,          // ICCM write enable (through the DMA)
-   output logic                      iccm_rden,          // ICCM read enable.
-   output logic [77:0]               iccm_wr_data,       // ICCM write data.
-   output logic [2:0]                iccm_wr_size,       // ICCM write location within DW.
-
-   input  logic [63:0]               iccm_rd_data,       // Data read from ICCM.
-   input  logic [77:0]               iccm_rd_data_ecc,   // Data + ECC read from ICCM.
-
-   output logic                      ifu_iccm_rd_ecc_single_err, // This fetch has a single ICCM ecc  error.
-
-// Perf counter sigs
-   output logic       ifu_pmu_ic_miss, // ic miss
-   output logic       ifu_pmu_ic_hit, // ic hit
-   output logic       ifu_pmu_bus_error, // iside bus error
-   output logic       ifu_pmu_bus_busy,  // iside bus busy
-   output logic       ifu_pmu_bus_trxn, // iside bus transactions
-
-
-   output logic       ifu_i0_icaf,         // Instruction 0 access fault. From Aligner to Decode
-   output logic [1:0] ifu_i0_icaf_type, // Instruction 0 access fault type
-
-   output logic  ifu_i0_valid,        // Instruction 0 valid. From Aligner to Decode
-   output logic  ifu_i0_icaf_second,  // Instruction 0 has access fault on second 2B of 4B inst
-   output logic  ifu_i0_dbecc,        // Instruction 0 has double bit ecc error
-   output logic  iccm_dma_sb_error,   // Single Bit ECC error from a DMA access
-   output logic[31:0] ifu_i0_instr,   // Instruction 0 . From Aligner to Decode
-   output logic[31:1] ifu_i0_pc,      // Instruction 0 pc. From Aligner to Decode
-   output logic ifu_i0_pc4,           // Instruction 0 is 4 byte. From Aligner to Decode
-
-   output logic ifu_miss_state_idle,   // There is no outstanding miss. Cache miss state is idle.
-
-   output eb1_br_pkt_t i0_brp,           // Instruction 0 branch packet. From Aligner to Decode
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index, // BP index
-   output logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr, // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag, // BP tag
-   output logic [$clog2(pt.BTB_SIZE)-1:0]         ifu_i0_fa_index,          // Fully associt btb index
-
-   input eb1_predict_pkt_t  exu_mp_pkt, // mispredict packet
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_mp_eghr, // execute ghr
-   input logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   input logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-   input eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // slot0 update/error pkt
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_i0_br_fghr_r, // fghr to bp
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r, // bp index
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   input dec_tlu_flush_lower_wb,
-
-   output logic [15:0] ifu_i0_cinst,
-
-
-/// Icache debug
-   input  eb1_cache_debug_pkt_t        dec_tlu_ic_diag_pkt ,
-   output logic                    ifu_ic_debug_rd_data_valid,
-   output logic                                iccm_buf_correct_ecc,
-   output logic                                iccm_correction_state,
-
-   input logic scan_mode
-   );
-
-   localparam TAGWIDTH = 2 ;
-   localparam IDWIDTH  = 2 ;
-
-   logic                   ifu_fb_consume1, ifu_fb_consume2;
-   logic [31:1]            ifc_fetch_addr_f;
-   logic [31:1]            ifc_fetch_addr_bf;
-
-   logic [1:0]   ifu_fetch_val;  // valids on a 2B boundary, left justified [7] implies valid fetch
-   logic [31:1]  ifu_fetch_pc;   // starting pc of fetch
-
-   logic iccm_rd_ecc_single_err, ic_error_start;
-   assign ifu_iccm_rd_ecc_single_err = iccm_rd_ecc_single_err;
-   assign ifu_ic_error_start = ic_error_start;
-
-
-   logic        ic_write_stall;
-   logic        ic_dma_active;
-   logic        ifc_dma_access_ok;
-   logic [1:0]  ic_access_fault_f;
-   logic [1:0]  ic_access_fault_type_f;
-   logic        ifu_ic_mb_empty;
-
-   logic ic_hit_f;
-
-   logic [1:0] ifu_bp_way_f; // way indication; right justified
-   logic       ifu_bp_hit_taken_f; // kill next fetch; taken target found
-   logic [31:1] ifu_bp_btb_target_f; //  predicted target PC
-   logic        ifu_bp_inst_mask_f; // tell ic which valids to kill because of a taken branch; right justified
-   logic [1:0]  ifu_bp_hist1_f; // history counters for all 4 potential branches; right justified
-   logic [1:0]  ifu_bp_hist0_f; // history counters for all 4 potential branches; right justified
-   logic [11:0] ifu_bp_poffset_f; // predicted target
-   logic [1:0]  ifu_bp_ret_f; // predicted ret ; right justified
-   logic [1:0]  ifu_bp_pc4_f; // pc4 indication; right justified
-   logic [1:0]  ifu_bp_valid_f; // branch valid, right justified
-   logic [pt.BHT_GHR_SIZE-1:0] ifu_bp_fghr_f;
-   logic [1:0] [$clog2(pt.BTB_SIZE)-1:0] ifu_bp_fa_index_f;
-
-
-   // fetch control
-   eb1_ifu_ifc_ctl #(.pt(pt)) ifc (.*
-                    );
-
-   // branch predictor
-   if (pt.BTB_ENABLE==1) begin  : bpred
-      eb1_ifu_bp_ctl #(.pt(pt)) bp (.*);
-   end
-   else begin : bpred
-      assign ifu_bp_hit_taken_f = '0;
-      // verif wires
-      logic btb_wr_en_way0, btb_wr_en_way1,dec_tlu_error_wb;
-      logic [16+pt.BTB_BTAG_SIZE:0] btb_wr_data;
-      assign btb_wr_en_way0 = '0;
-      assign btb_wr_en_way1 = '0;
-      assign btb_wr_data = '0;
-      assign dec_tlu_error_wb ='0;
-      assign ifu_bp_inst_mask_f = 1'b1;
-   end
-
-
-   logic [1:0]   ic_fetch_val_f;
-   logic [31:0] ic_data_f;
-   logic [31:0] ifu_fetch_data_f;
-   logic ifc_fetch_req_f;
-   logic ifc_fetch_req_f_raw;
-   logic [1:0] iccm_rd_ecc_double_err;  // This fetch has an iccm double error.
-
-   logic ifu_async_error_start;
-
-
-   assign ifu_fetch_data_f[31:0] = ic_data_f[31:0];
-   assign ifu_fetch_val[1:0] = ic_fetch_val_f[1:0];
-   assign ifu_fetch_pc[31:1] = ifc_fetch_addr_f[31:1];
-
- logic                       ifc_fetch_uncacheable_bf;      // The fetch request is uncacheable space. BF stage
- logic                       ifc_fetch_req_bf;              // Fetch request. Comes with the address.  BF stage
- logic                       ifc_fetch_req_bf_raw;          // Fetch request without some qualifications. Used for clock-gating. BF stage
- logic                       ifc_iccm_access_bf;            // This request is to the ICCM. Do not generate misses to the bus.
- logic                       ifc_region_acc_fault_bf;       // Access fault. in ICCM region but offset is outside defined ICCM.
-
-   // aligner
-
-   eb1_ifu_aln_ctl #(.pt(pt)) aln (
-                                    .*
-                                    );
-
-
-   // icache
-   eb1_ifu_mem_ctl #(.pt(pt)) mem_ctl
-     (.*,
-      .ic_data_f(ic_data_f[31:0])
-      );
-
-
-
-   // Performance debug info
-   //
-   //
-`ifdef DUMP_BTB_ON
-   logic              exu_mp_valid; // conditional branch mispredict
-   logic exu_mp_way; // conditional branch mispredict
-   logic exu_mp_ataken; // direction is actual taken
-   logic exu_mp_boffset; // branch offsett
-   logic exu_mp_pc4; // branch is a 4B inst
-   logic exu_mp_call; // branch is a call inst
-   logic exu_mp_ret; // branch is a ret inst
-   logic exu_mp_ja; // branch is a jump always
-   logic [1:0] exu_mp_hist; // new history
-   logic [11:0] exu_mp_tgt; // target offset
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_addr; // BTB/BHT address
-
-   assign exu_mp_valid = exu_mp_pkt.misp; // conditional branch mispredict
-   assign exu_mp_ataken = exu_mp_pkt.ataken;  // direction is actual taken
-   assign exu_mp_boffset = exu_mp_pkt.boffset;  // branch offset
-   assign exu_mp_pc4 = exu_mp_pkt.pc4;  // branch is a 4B inst
-   assign exu_mp_call = exu_mp_pkt.pcall;  // branch is a call inst
-   assign exu_mp_ret = exu_mp_pkt.pret;  // branch is a ret inst
-   assign exu_mp_ja = exu_mp_pkt.pja;  // branch is a jump always
-   assign exu_mp_way = exu_mp_pkt.way;  // branch is a jump always
-   assign exu_mp_hist[1:0] = exu_mp_pkt.hist[1:0];  // new history
-   assign exu_mp_tgt[11:0]  = exu_mp_pkt.toffset[11:0] ;  // target offset
-   assign exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  = exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ;  // BTB/BHT address
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] btb_rd_addr_f;
- `define DEC `CPU_TOP.dec
- `define EXU `CPU_TOP.exu
-   eb1_btb_addr_hash f2hash(.pc(ifc_fetch_addr_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-   logic [31:0] mppc_ns, mppc;
-   logic        exu_flush_final_d1;
-   assign mppc_ns[31:1] = `EXU.i0_flush_upper_x ? `EXU.exu_i0_pc_x : `EXU.dec_i0_pc_d;
-   assign mppc_ns[0] = 1'b0;
-   rvdff #(33)  junk_ff (.*, .clk(active_clk), .din({mppc_ns[31:0], exu_flush_final}), .dout({mppc[31:0], exu_flush_final_d1}));
-   logic  tmp_bnk;
-   assign tmp_bnk = bpred.bp.btb_sel_f[1];
-
-   always @(negedge clk) begin
-      if(`DEC.tlu.mcyclel[31:0] == 32'h0000_0010) begin
-         $display("BTB_CONFIG: %d",pt.BTB_SIZE);
-         `ifndef BP_NOGSHARE
-         $display("BHT_CONFIG: %d gshare: 1",pt.BHT_SIZE);
-         `else
-         $display("BHT_CONFIG: %d gshare: 0",pt.BHT_SIZE);
-         `endif
-         $display("RS_CONFIG: %d", pt.RET_STACK_SIZE);
-      end
-       if(exu_flush_final_d1 & ~(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error) & (exu_mp_pkt.misp | exu_mp_pkt.ataken))
-         $display("%7d BTB_MP  : index: %0h bank: %0h call: %b ret: %b ataken: %b hist: %h valid: %b tag: %h targ: %h eghr: %b pred: %b ghr_index: %h brpc: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha, exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO], 1'b0, exu_mp_call, exu_mp_ret, exu_mp_ataken, exu_mp_hist[1:0], exu_mp_valid, exu_mp_btag[pt.BTB_BTAG_SIZE-1:0], {exu_flush_path_final[31:1], 1'b0}, exu_mp_eghr[pt.BHT_GHR_SIZE-1:0], exu_mp_valid, bpred.bp.bht_wr_addr0, mppc[31:0], exu_mp_pkt.way);
-
-     for(int i = 0; i < 8; i++) begin
-      if(ifu_bp_valid_f[i] & ifc_fetch_req_f)
-        $display("%7d BTB_HIT : index: %0h bank: %0h call: %b ret: %b taken: %b strength: %b tag: %h targ: %0h ghr: %4b ghr_index: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],bpred.bp.btb_sel_f[1], bpred.bp.btb_rd_call_f, bpred.bp.btb_rd_ret_f, ifu_bp_hist1_f[tmp_bnk], ifu_bp_hist0_f[tmp_bnk], bpred.bp.fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0], {ifu_bp_btb_target_f[31:1], 1'b0}, bpred.bp.fghr[pt.BHT_GHR_SIZE-1:0], bpred.bp.bht_rd_addr_f, ifu_bp_way_f[tmp_bnk]);
-     end
-      if(dec_tlu_br0_r_pkt.valid & ~(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error))
-        $display("%7d BTB_UPD0: ghr_index: %0h bank: %0h hist: %h  way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,bpred.bp.br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO],{dec_tlu_br0_r_pkt.middle}, dec_tlu_br0_r_pkt.hist, dec_tlu_br0_r_pkt.way);
-
-      if(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error)
-        $display("%7d BTB_ERR0: index: %0h bank: %0h start: %b rfpc: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],1'b0, dec_tlu_br0_r_pkt.br_start_error, {exu_flush_path_final[31:1], 1'b0}, dec_tlu_br0_r_pkt.way);
-   end // always @ (negedge clk)
-      function [1:0] encode4_2;
-      input [3:0] in;
-
-      encode4_2[1] = in[3] | in[2];
-      encode4_2[0] = in[3] | in[1];
-
-   endfunction
-`endif
-endmodule // eb1_ifu
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_aln_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_ifu_aln_ctl.sv
deleted file mode 100644
index 2d4e822..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_aln_ctl.sv
+++ /dev/null
@@ -1,700 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Instruction aligner
-//********************************************************************************
-module eb1_ifu_aln_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-
-   input logic                                    scan_mode,                // Flop scan mode control
-   input logic                                    rst_l,                    // reset, active low
-   input logic                                    clk,                      // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                                    active_clk,               // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-
-   input logic                                    ifu_async_error_start,    // ecc/parity related errors with current fetch - not sent down the pipe
-
-   input logic [1:0]                              iccm_rd_ecc_double_err,   // This fetch has a double ICCM ecc  error.
-
-   input logic [1:0]                              ic_access_fault_f,        // Instruction access fault for the current fetch.
-   input logic [1:0]                              ic_access_fault_type_f,   // Instruction access fault types
-
-   input logic                                    exu_flush_final,          // Flush from the pipeline.
-
-   input logic                                    dec_i0_decode_d,          // Valid instruction at D-stage and not blocked
-
-   input logic [31:0]                             ifu_fetch_data_f,         // fetch data in memory format - not right justified
-
-   input logic [1:0]                              ifu_fetch_val,            // valids on a 2B boundary, right justified
-   input logic [31:1]                             ifu_fetch_pc,             // starting pc of fetch
-
-
-
-   output logic                                   ifu_i0_valid,             // Instruction 0 is valid
-   output logic                                   ifu_i0_icaf,              // Instruction 0 has access fault
-   output logic [1:0]                             ifu_i0_icaf_type,         // Instruction 0 access fault type
-   output logic                                   ifu_i0_icaf_second,       // Instruction 0 has access fault on second 2B of 4B inst
-
-   output logic                                   ifu_i0_dbecc,             // Instruction 0 has double bit ecc error
-   output logic [31:0]                            ifu_i0_instr,             // Instruction 0
-   output logic [31:1]                            ifu_i0_pc,                // Instruction 0 PC
-   output logic                                   ifu_i0_pc4,
-
-   output logic                                   ifu_fb_consume1,          // Consumed one buffer. To fetch control fetch for buffer mass balance
-   output logic                                   ifu_fb_consume2,          // Consumed two buffers.To fetch control fetch for buffer mass balance
-
-
-   input logic [pt.BHT_GHR_SIZE-1:0]              ifu_bp_fghr_f,            // fetch GHR
-   input logic [31:1]                             ifu_bp_btb_target_f,      // predicted RET target
-   input logic [11:0]                             ifu_bp_poffset_f,         // predicted target offset
-   input logic [1:0] [$clog2(pt.BTB_SIZE)-1:0]    ifu_bp_fa_index_f,        // predicted branch index (fully associative option)
-
-   input logic [1:0]                              ifu_bp_hist0_f,           // history counters for all 4 potential branches, bit 1, right justified
-   input logic [1:0]                              ifu_bp_hist1_f,           // history counters for all 4 potential branches, bit 1, right justified
-   input logic [1:0]                              ifu_bp_pc4_f,             // pc4 indication, right justified
-   input logic [1:0]                              ifu_bp_way_f,             // way indication, right justified
-   input logic [1:0]                              ifu_bp_valid_f,           // branch valid, right justified
-   input logic [1:0]                              ifu_bp_ret_f,             // predicted ret indication, right justified
-
-
-   output eb1_br_pkt_t                           i0_brp,                   // Branch packet for I0.
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]   ifu_i0_bp_index,          // BP index
-   output logic [pt.BHT_GHR_SIZE-1:0]             ifu_i0_bp_fghr,           // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0]            ifu_i0_bp_btag,           // BP tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0]         ifu_i0_fa_index,          // Fully associt btb index
-
-   output logic                                   ifu_pmu_instr_aligned,    // number of inst aligned this cycle
-
-   output logic [15:0]                            ifu_i0_cinst              // 16b compress inst for i0
-   );
-
-
-
-   logic                                          ifvalid;
-   logic                                          shift_f1_f0, shift_f2_f0, shift_f2_f1;
-   logic                                          fetch_to_f0, fetch_to_f1, fetch_to_f2;
-
-   logic [1:0]                                    f2val_in, f2val;
-   logic [1:0]                                    f1val_in, f1val;
-   logic [1:0]                                    f0val_in, f0val;
-   logic [1:0]                                    sf1val, sf0val;
-
-   logic [31:0]                                   aligndata;
-   logic                                          first4B, first2B;
-
-   logic [31:0]                                   uncompress0;
-   logic                                          i0_shift;
-   logic                                          shift_2B, shift_4B;
-   logic                                          f1_shift_2B;
-   logic                                          f2_valid, sf1_valid, sf0_valid;
-
-   logic [31:0]                                   ifirst;
-   logic [1:0]                                    alignval;
-   logic [31:1]                                   firstpc, secondpc;
-
-   logic [11:0]                                   f1poffset;
-   logic [11:0]                                   f0poffset;
-   logic [pt.BHT_GHR_SIZE-1:0]                    f1fghr;
-   logic [pt.BHT_GHR_SIZE-1:0]                    f0fghr;
-   logic [1:0]                                    f1hist1;
-   logic [1:0]                                    f0hist1;
-   logic [1:0]                                    f1hist0;
-   logic [1:0]                                    f0hist0;
-
-   logic [1:0][$clog2(pt.BTB_SIZE)-1:0]           f0index, f1index, alignindex;
-
-   logic [1:0]                                    f1ictype;
-   logic [1:0]                                    f0ictype;
-
-   logic [1:0]                                    f1pc4;
-   logic [1:0]                                    f0pc4;
-
-   logic [1:0]                                    f1ret;
-   logic [1:0]                                    f0ret;
-   logic [1:0]                                    f1way;
-   logic [1:0]                                    f0way;
-
-   logic [1:0]                                    f1brend;
-   logic [1:0]                                    f0brend;
-
-   logic [1:0]                                    alignbrend;
-   logic [1:0]                                    alignpc4;
-
-   logic [1:0]                                    alignret;
-   logic [1:0]                                    alignway;
-   logic [1:0]                                    alignhist1;
-   logic [1:0]                                    alignhist0;
-   logic [1:1]                                    alignfromf1;
-   logic                                          i0_ends_f1;
-   logic                                          i0_br_start_error;
-
-   logic [31:1]                                   f1prett;
-   logic [31:1]                                   f0prett;
-   logic [1:0]                                    f1dbecc;
-   logic [1:0]                                    f0dbecc;
-   logic [1:0]                                    f1icaf;
-   logic [1:0]                                    f0icaf;
-
-   logic [1:0]                                    aligndbecc;
-   logic [1:0]                                    alignicaf;
-   logic                                          i0_brp_pc4;
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]          firstpc_hash, secondpc_hash;
-
-   logic                                          first_legal;
-
-   logic [1:0]                                    wrptr, wrptr_in;
-   logic [1:0]                                    rdptr, rdptr_in;
-   logic [2:0]                                    qwen;
-   logic [31:0]                                   q2,q1,q0;
-   logic                                          q2off_in, q2off;
-   logic                                          q1off_in, q1off;
-   logic                                          q0off_in, q0off;
-   logic                                          f0_shift_2B;
-
-   logic [31:0]                                   q0eff;
-   logic [31:0]                                   q0final;
-   logic                                          q0ptr;
-   logic [1:0]                                    q0sel;
-
-   logic [31:0]                                   q1eff;
-   logic [15:0]                                   q1final;
-   logic                                          q1ptr;
-   logic [1:0]                                    q1sel;
-
-   logic [2:0]                                    qren;
-
-   logic                                          consume_fb1, consume_fb0;
-   logic [1:0]                                    icaf_eff;
-
-   localparam                                     BRDATA_SIZE  = pt.BTB_ENABLE ? 16+($clog2(pt.BTB_SIZE)*2*pt.BTB_FULLYA) : 2;
-   localparam                                     BRDATA_WIDTH = pt.BTB_ENABLE ? 8+($clog2(pt.BTB_SIZE)*pt.BTB_FULLYA) : 1;
-   logic [BRDATA_SIZE-1:0]                        brdata_in, brdata2, brdata1, brdata0;
-   logic [BRDATA_SIZE-1:0]                        brdata1eff, brdata0eff;
-   logic [BRDATA_SIZE-1:0]                        brdata1final, brdata0final;
-
-   localparam                                     MHI   = 1+(pt.BTB_ENABLE * (43+pt.BHT_GHR_SIZE));
-   localparam                                     MSIZE = 2+(pt.BTB_ENABLE * (43+pt.BHT_GHR_SIZE));
-
-   logic [MHI:0]                                  misc_data_in, misc2, misc1, misc0;
-   logic [MHI:0]                                  misc1eff, misc0eff;
-
-   logic [pt.BTB_BTAG_SIZE-1:0]                  firstbrtag_hash, secondbrtag_hash;
-
-   logic                                         error_stall_in, error_stall;
-
-   assign error_stall_in = (error_stall | ifu_async_error_start) & ~exu_flush_final;
-
-   rvdff #(.WIDTH(7))  bundle1ff (.*,
-                                  .clk(active_clk),
-                                  .din ({wrptr_in[1:0],rdptr_in[1:0],q2off_in,q1off_in,q0off_in}),
-                                  .dout({wrptr[1:0],   rdptr[1:0],   q2off,   q1off,   q0off})
-                                  );
-
-   rvdffie #(.WIDTH(7),.OVERRIDE(1))  bundle2ff (.*,
-                                                 .din ({error_stall_in,f2val_in[1:0],f1val_in[1:0],f0val_in[1:0]}),
-                                                 .dout({error_stall,   f2val[1:0],   f1val[1:0],   f0val[1:0]   })
-                                                 );
-
-if(pt.BTB_ENABLE==1) begin
-   rvdffe #(BRDATA_SIZE)  brdata2ff   (.*, .clk(clk), .en(qwen[2]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata2[BRDATA_SIZE-1:0]));
-   rvdffe #(BRDATA_SIZE)  brdata1ff   (.*, .clk(clk), .en(qwen[1]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata1[BRDATA_SIZE-1:0]));
-   rvdffe #(BRDATA_SIZE)  brdata0ff   (.*, .clk(clk), .en(qwen[0]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata0[BRDATA_SIZE-1:0]));
-   rvdffe #(MSIZE)        misc2ff     (.*, .clk(clk), .en(qwen[2]),        .din(misc_data_in[MHI:0]),        .dout(misc2[MHI:0]));
-   rvdffe #(MSIZE)        misc1ff     (.*, .clk(clk), .en(qwen[1]),        .din(misc_data_in[MHI:0]),        .dout(misc1[MHI:0]));
-   rvdffe #(MSIZE)        misc0ff     (.*, .clk(clk), .en(qwen[0]),        .din(misc_data_in[MHI:0]),        .dout(misc0[MHI:0]));
-end
-else begin
-
-   rvdffie #((MSIZE*3)+(BRDATA_SIZE*3))    miscff      (.*,
-                                                        .din({qwen[2] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc2[MHI:0], brdata2[BRDATA_SIZE-1:0]},
-                                                              qwen[1] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc1[MHI:0], brdata1[BRDATA_SIZE-1:0]},
-                                                              qwen[0] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc0[MHI:0], brdata0[BRDATA_SIZE-1:0]}}),
-                                                        .dout({misc2[MHI:0],misc1[MHI:0],misc0[MHI:0],
-                                                               brdata2[BRDATA_SIZE-1:0], brdata1[BRDATA_SIZE-1:0], brdata0[BRDATA_SIZE-1:0]})
-                                                        );
-end
-
-  logic [31:1] q2pc, q1pc, q0pc;
-
-   rvdffe #(31)           q2pcff        (.*, .clk(clk), .en(qwen[2]),        .din(ifu_fetch_pc[31:1]),     .dout(q2pc[31:1]));
-   rvdffe #(31)           q1pcff        (.*, .clk(clk), .en(qwen[1]),        .din(ifu_fetch_pc[31:1]),     .dout(q1pc[31:1]));
-   rvdffe #(31)           q0pcff        (.*, .clk(clk), .en(qwen[0]),        .din(ifu_fetch_pc[31:1]),     .dout(q0pc[31:1]));
-
-   rvdffe #(32)           q2ff        (.*, .clk(clk), .en(qwen[2]),        .din(ifu_fetch_data_f[31:0]),     .dout(q2[31:0]));
-   rvdffe #(32)           q1ff        (.*, .clk(clk), .en(qwen[1]),        .din(ifu_fetch_data_f[31:0]),     .dout(q1[31:0]));
-   rvdffe #(32)           q0ff        (.*, .clk(clk), .en(qwen[0]),        .din(ifu_fetch_data_f[31:0]),     .dout(q0[31:0]));
-
-
-   // new queue control logic
-
-   assign qren[2:0]          = {  rdptr[1:0] == 2'b10,
-                                  rdptr[1:0] == 2'b01,
-                                  rdptr[1:0] == 2'b00 };
-
-   assign qwen[2:0]          = { (wrptr[1:0] == 2'b10) & ifvalid,
-                                 (wrptr[1:0] == 2'b01) & ifvalid,
-                                 (wrptr[1:0] == 2'b00) & ifvalid };
-
-
-   assign rdptr_in[1:0]      = ({2{ qren[0]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{ qren[1]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qren[2]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{ qren[0]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qren[1]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{ qren[2]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{~ifu_fb_consume1 & ~ifu_fb_consume2 & ~exu_flush_final}} & rdptr[1:0]);
-
-   assign wrptr_in[1:0]      = ({2{ qwen[0] & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{ qwen[1] & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qwen[2] & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{~ifvalid & ~exu_flush_final}} & wrptr[1:0]);
-
-
-
-   assign q2off_in          = ( ~qwen[2] & (rdptr[1:0]==2'd2)  &  (q2off | f0_shift_2B) ) |
-                              ( ~qwen[2] & (rdptr[1:0]==2'd1)  &  (q2off | f1_shift_2B) ) |
-                              ( ~qwen[2] & (rdptr[1:0]==2'd0)  &   q2off                );
-
-   assign q1off_in          = ( ~qwen[1] & (rdptr[1:0]==2'd1)  &  (q1off | f0_shift_2B) ) |
-                              ( ~qwen[1] & (rdptr[1:0]==2'd0)  &  (q1off | f1_shift_2B) ) |
-                              ( ~qwen[1] & (rdptr[1:0]==2'd2)  &   q1off                );
-
-   assign q0off_in          = ( ~qwen[0] & (rdptr[1:0]==2'd0)  &  (q0off | f0_shift_2B) ) |
-                              ( ~qwen[0] & (rdptr[1:0]==2'd2)  &  (q0off | f1_shift_2B) ) |
-                              ( ~qwen[0] & (rdptr[1:0]==2'd1)  &   q0off                );
-
-
-
-   assign q0ptr              = ( (rdptr[1:0]==2'b00) & q0off ) |
-                               ( (rdptr[1:0]==2'b01) & q1off ) |
-                               ( (rdptr[1:0]==2'b10) & q2off );
-
-   assign q1ptr              = ( (rdptr[1:0]==2'b00) & q1off ) |
-                               ( (rdptr[1:0]==2'b01) & q2off ) |
-                               ( (rdptr[1:0]==2'b10) & q0off );
-
-   assign q0sel[1:0]         = {q0ptr,~q0ptr};
-
-   assign q1sel[1:0]         = {q1ptr,~q1ptr};
-
-   // end new queue control logic
-
-
-   // misc data that is associated with each fetch buffer
-
-   if(pt.BTB_ENABLE==1)
-     assign misc_data_in[MHI:0] = {
-
-                                    ic_access_fault_type_f[1:0],
-                                    ifu_bp_btb_target_f[31:1],
-                                    ifu_bp_poffset_f[11:0],
-                                    ifu_bp_fghr_f[pt.BHT_GHR_SIZE-1:0]
-                                    };
-   else
-     assign misc_data_in[MHI:0] = {
-                                    ic_access_fault_type_f[1:0]
-                                    };
-
-
-   assign {misc1eff[MHI:0],misc0eff[MHI:0]} = (({MSIZE*2{qren[0]}} & {misc1[MHI:0],misc0[MHI:0]}) |
-                                               ({MSIZE*2{qren[1]}} & {misc2[MHI:0],misc1[MHI:0]}) |
-                                               ({MSIZE*2{qren[2]}} & {misc0[MHI:0],misc2[MHI:0]}));
-
-   if(pt.BTB_ENABLE==1) begin
-   assign {
-            f1ictype[1:0],
-            f1prett[31:1],
-            f1poffset[11:0],
-            f1fghr[pt.BHT_GHR_SIZE-1:0]
-            } = misc1eff[MHI:0];
-
-   assign {
-            f0ictype[1:0],
-            f0prett[31:1],
-            f0poffset[11:0],
-            f0fghr[pt.BHT_GHR_SIZE-1:0]
-            } = misc0eff[MHI:0];
-
-      if(pt.BTB_FULLYA) begin
-         assign brdata_in[BRDATA_SIZE-1:0] = {
-                                               ifu_bp_fa_index_f[1], iccm_rd_ecc_double_err[1],ic_access_fault_f[1],ifu_bp_hist1_f[1],ifu_bp_hist0_f[1],ifu_bp_pc4_f[1],ifu_bp_way_f[1],ifu_bp_valid_f[1],ifu_bp_ret_f[1],
-                                               ifu_bp_fa_index_f[0], iccm_rd_ecc_double_err[0],ic_access_fault_f[0],ifu_bp_hist1_f[0],ifu_bp_hist0_f[0],ifu_bp_pc4_f[0],ifu_bp_way_f[0],ifu_bp_valid_f[0],ifu_bp_ret_f[0]
-                                               };
-         assign {f0index[1],f0dbecc[1],f0icaf[1],f0hist1[1],f0hist0[1],f0pc4[1],f0way[1],f0brend[1],f0ret[1],
-                 f0index[0],f0dbecc[0],f0icaf[0],f0hist1[0],f0hist0[0],f0pc4[0],f0way[0],f0brend[0],f0ret[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-         assign {f1index[1],f1dbecc[1],f1icaf[1],f1hist1[1],f1hist0[1],f1pc4[1],f1way[1],f1brend[1],f1ret[1],
-                 f1index[0],f1dbecc[0],f1icaf[0],f1hist1[0],f1hist0[0],f1pc4[0],f1way[0],f1brend[0],f1ret[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      end
-      else begin
-         assign brdata_in[BRDATA_SIZE-1:0] = {
-                                               iccm_rd_ecc_double_err[1],ic_access_fault_f[1],ifu_bp_hist1_f[1],ifu_bp_hist0_f[1],ifu_bp_pc4_f[1],ifu_bp_way_f[1],ifu_bp_valid_f[1],ifu_bp_ret_f[1],
-                                               iccm_rd_ecc_double_err[0],ic_access_fault_f[0],ifu_bp_hist1_f[0],ifu_bp_hist0_f[0],ifu_bp_pc4_f[0],ifu_bp_way_f[0],ifu_bp_valid_f[0],ifu_bp_ret_f[0]
-                                               };
-         assign {f0dbecc[1],f0icaf[1],f0hist1[1],f0hist0[1],f0pc4[1],f0way[1],f0brend[1],f0ret[1],
-                 f0dbecc[0],f0icaf[0],f0hist1[0],f0hist0[0],f0pc4[0],f0way[0],f0brend[0],f0ret[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-         assign {f1dbecc[1],f1icaf[1],f1hist1[1],f1hist0[1],f1pc4[1],f1way[1],f1brend[1],f1ret[1],
-                 f1dbecc[0],f1icaf[0],f1hist1[0],f1hist0[0],f1pc4[0],f1way[0],f1brend[0],f1ret[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      end
-
-
-
-
-   assign {brdata1eff[BRDATA_SIZE-1:0],brdata0eff[BRDATA_SIZE-1:0]} = (({BRDATA_SIZE*2{qren[0]}} & {brdata1[BRDATA_SIZE-1:0],brdata0[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[1]}} & {brdata2[BRDATA_SIZE-1:0],brdata1[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[2]}} & {brdata0[BRDATA_SIZE-1:0],brdata2[BRDATA_SIZE-1:0]}));
-
-   assign brdata0final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q0sel[0]}} & {                     brdata0eff[2*BRDATA_WIDTH-1:0]}) |
-                                           ({BRDATA_SIZE{q0sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata0eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   assign brdata1final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q1sel[0]}} & {                     brdata1eff[2*BRDATA_WIDTH-1:0]}) |
-                                           ({BRDATA_SIZE{q1sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata1eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   end // if (pt.BTB_ENABLE==1)
-   else begin
-      assign {
-               f1ictype[1:0]
-               } = misc1eff[MHI:0];
-
-      assign {
-               f0ictype[1:0]
-               } = misc0eff[MHI:0];
-
-      assign brdata_in[BRDATA_SIZE-1:0] = {
-                                            iccm_rd_ecc_double_err[1],ic_access_fault_f[1],
-                                            iccm_rd_ecc_double_err[0],ic_access_fault_f[0]
-                                            };
-      assign {f0dbecc[1],f0icaf[1],
-              f0dbecc[0],f0icaf[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-      assign {f1dbecc[1],f1icaf[1],
-              f1dbecc[0],f1icaf[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      assign {brdata1eff[BRDATA_SIZE-1:0],brdata0eff[BRDATA_SIZE-1:0]} = (({BRDATA_SIZE*2{qren[0]}} & {brdata1[BRDATA_SIZE-1:0],brdata0[BRDATA_SIZE-1:0]}) |
-                                                                          ({BRDATA_SIZE*2{qren[1]}} & {brdata2[BRDATA_SIZE-1:0],brdata1[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[2]}} & {brdata0[BRDATA_SIZE-1:0],brdata2[BRDATA_SIZE-1:0]}));
-
-      assign brdata0final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q0sel[0]}} & {                     brdata0eff[2*BRDATA_WIDTH-1:0]}) |
-                                              ({BRDATA_SIZE{q0sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata0eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-      assign brdata1final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q1sel[0]}} & {                     brdata1eff[2*BRDATA_WIDTH-1:0]}) |
-                                              ({BRDATA_SIZE{q1sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata1eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   end // else: !if(pt.BTB_ENABLE==1)
-
-
-   // possible states of { sf0_valid, sf1_valid, f2_valid }
-   //
-   // 000    if->f0
-   // 100    if->f1
-   // 101    illegal
-   // 010    if->f1, f1->f0
-   // 110    if->f2
-   // 001    if->f1, f2->f0
-   // 011    if->f2, f2->f1, f1->f0
-   // 111   !if,     no shift
-
-   assign f2_valid           =  f2val[0];
-   assign sf1_valid          =  sf1val[0];
-   assign sf0_valid          =  sf0val[0];
-
-   // interface to fetch
-
-   assign consume_fb0        = ~sf0val[0] & f0val[0];
-
-   assign consume_fb1        = ~sf1val[0] & f1val[0];
-
-   assign ifu_fb_consume1    =  consume_fb0 & ~consume_fb1 & ~exu_flush_final;
-   assign ifu_fb_consume2    =  consume_fb0 &  consume_fb1 & ~exu_flush_final;
-
-   assign ifvalid            =  ifu_fetch_val[0];
-
-   assign shift_f1_f0        =  ~sf0_valid &  sf1_valid;
-   assign shift_f2_f0        =  ~sf0_valid & ~sf1_valid &  f2_valid;
-   assign shift_f2_f1        =  ~sf0_valid &  sf1_valid &  f2_valid;
-
-   assign fetch_to_f0        =  ~sf0_valid & ~sf1_valid & ~f2_valid & ifvalid;
-
-   assign fetch_to_f1        = (~sf0_valid & ~sf1_valid &  f2_valid & ifvalid)  |
-                               (~sf0_valid &  sf1_valid & ~f2_valid & ifvalid)  |
-                               ( sf0_valid & ~sf1_valid & ~f2_valid & ifvalid);
-
-   assign fetch_to_f2        = (~sf0_valid &  sf1_valid &  f2_valid & ifvalid)  |
-                               ( sf0_valid &  sf1_valid & ~f2_valid & ifvalid);
-
-
-   assign f2val_in[1:0]      = ({2{ fetch_to_f2 &                               ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{~fetch_to_f2 & ~shift_f2_f1 & ~shift_f2_f0 & ~exu_flush_final}} & f2val[1:0]        );
-
-
-   assign sf1val[1:0]        = ({2{ f1_shift_2B}} & {1'b0,f1val[1]}) |
-                               ({2{~f1_shift_2B}} & f1val[1:0]     );
-
-   assign f1val_in[1:0]      = ({2{ fetch_to_f1                               & ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{                shift_f2_f1                & ~exu_flush_final}} & f2val[1:0]        ) |
-                               ({2{~fetch_to_f1 & ~shift_f2_f1 & ~shift_f1_f0 & ~exu_flush_final}} & sf1val[1:0]       );
-
-
-
-   assign sf0val[1:0]        = ({2{ shift_2B            }} & {1'b0,f0val[1]}) |
-                               ({2{~shift_2B & ~shift_4B}} & f0val[1:0]);
-
-   assign f0val_in[1:0]      = ({2{fetch_to_f0                                & ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{                shift_f2_f0                & ~exu_flush_final}} & f2val[1:0]        ) |
-                               ({2{                               shift_f1_f0 & ~exu_flush_final}} & sf1val[1:0]       ) |
-                               ({2{~fetch_to_f0 & ~shift_f2_f0 & ~shift_f1_f0 & ~exu_flush_final}} & sf0val[1:0]       );
-
-   assign {q1eff[31:0],q0eff[31:0]} = (({64{qren[0]}} & {q1[31:0],q0[31:0]}) |
-                                       ({64{qren[1]}} & {q2[31:0],q1[31:0]}) |
-                                       ({64{qren[2]}} & {q0[31:0],q2[31:0]}));
-
-   assign q0final[31:0]      = ({32{q0sel[0]}} & {      q0eff[31:0]}) |
-                               ({32{q0sel[1]}} & {16'b0,q0eff[31:16]});
-
-   assign q1final[15:0]      = ({16{q1sel[0]}} & q1eff[15:0] ) |
-                               ({16{q1sel[1]}} & q1eff[31:16]);
-   logic [31:1] q0pceff, q0pcfinal;
-   logic [31:1] q1pceff;
-
-   assign {q1pceff[31:1],q0pceff[31:1]} = (({62{qren[0]}} & {q1pc[31:1],q0pc[31:1]}) |
-                                           ({62{qren[1]}} & {q2pc[31:1],q1pc[31:1]}) |
-                                           ({62{qren[2]}} & {q0pc[31:1],q2pc[31:1]}));
-
-
-   assign q0pcfinal[31:1]      = ({31{q0sel[0]}} & ( q0pceff[31:1])) |
-                                 ({31{q0sel[1]}} & ( q0pceff[31:1] + 31'd1));
-
-   assign aligndata[31:0]    = ({32{ f0val[1]           }} & {q0final[31:0]}) |
-                               ({32{~f0val[1] & f0val[0]}} & {q1final[15:0],q0final[15:0]});
-
-   assign alignval[1:0]      = ({ 2{ f0val[1]           }} & {2'b11}) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1val[0],1'b1});
-
-   assign alignicaf[1:0]    = ({ 2{ f0val[1]           }} &  f0icaf[1:0]          ) |
-                              ({ 2{~f0val[1] & f0val[0]}} & {f1icaf[0],f0icaf[0]});
-
-   assign aligndbecc[1:0]    = ({ 2{ f0val[1]           }} &  f0dbecc[1:0]          ) |
-                              ({ 2{~f0val[1] & f0val[0]}} & {f1dbecc[0],f0dbecc[0]});
-
-   if (pt.BTB_ENABLE==1) begin
-
-   // for branch prediction
-
-   assign alignbrend[1:0]    = ({ 2{ f0val[1]           }} &  f0brend[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1brend[0],f0brend[0]});
-
-   assign alignpc4[1:0]      = ({ 2{ f0val[1]           }} &  f0pc4[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1pc4[0],f0pc4[0]});
-
-      if(pt.BTB_FULLYA) begin
-         assign alignindex[0]      = f0index[0];
-         assign alignindex[1]      = f0val[1] ? f0index[1] : f1index[0];
-      end
-
-   assign alignret[1:0]      = ({ 2{ f0val[1]           }} &  f0ret[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1ret[0],f0ret[0]});
-
-   assign alignway[1:0]      = ({ 2{ f0val[1]           }} &  f0way[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1way[0],f0way[0]});
-
-   assign alignhist1[1:0]    = ({ 2{ f0val[1]           }} &  f0hist1[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1hist1[0],f0hist1[0]});
-
-   assign alignhist0[1:0]    = ({ 2{ f0val[1]           }} &  f0hist0[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1hist0[0],f0hist0[0]});
-
-   assign secondpc[31:1]     = ({31{ f0val[1]           }} &  (q0pceff[31:1] + 31'd1)) |
-                               // you need the base pc for 2nd one only (4B max, 2B for the 1st and 2B for the 2nd)
-                               ({31{~f0val[1] & f0val[0]}} &   q1pceff[31:1]      );
-
-
-   assign firstpc[31:1]      =  q0pcfinal[31:1];
-      end // if (pt.BTB_ENABLE==1)
-
-   assign alignfromf1[1]     =      ~f0val[1] & f0val[0];
-
-
-   assign ifu_i0_pc[31:1]    =  q0pcfinal[31:1];
-
-
-   assign ifu_i0_pc4         =  first4B;
-
-
-   assign ifu_i0_cinst[15:0] = aligndata[15:0];
-
-   assign first4B            = (aligndata[1:0] == 2'b11);
-   assign first2B            = ~first4B;
-
-   assign ifu_i0_valid       = (first4B & alignval[1]) |
-                               (first2B & alignval[0]);
-
-   // inst access fault on any byte of inst results in access fault for the inst
-   assign ifu_i0_icaf        = (first4B & (|alignicaf[1:0])) |
-                               (first2B &   alignicaf[0]   );
-
-   assign ifu_i0_icaf_type[1:0] = (first4B & ~f0val[1] & f0val[0] & ~alignicaf[0] & ~aligndbecc[0]) ? f1ictype[1:0] : f0ictype[1:0];
-
-
-   assign icaf_eff[1:0] = alignicaf[1:0] | aligndbecc[1:0];
-
-   assign ifu_i0_icaf_second = first4B & ~icaf_eff[0] & icaf_eff[1];
-
-   assign ifu_i0_dbecc       = (first4B & (|aligndbecc[1:0])) |
-                               (first2B &   aligndbecc[0]   );
-
-
-   assign ifirst[31:0]       =  aligndata[31:0];
-
-
-   assign ifu_i0_instr[31:0] = ({32{first4B & alignval[1]}} & ifirst[31:0]) |
-                               ({32{first2B & alignval[0]}} & uncompress0[31:0]);
-
-if(pt.BTB_ENABLE==1) begin
-
-   // if you detect br does not start on instruction boundary
-
-   eb1_btb_addr_hash #(.pt(pt)) firsthash (.pc(firstpc [pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]),
-                                            .hash(firstpc_hash [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-   eb1_btb_addr_hash #(.pt(pt)) secondhash(.pc(secondpc[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]),
-                                            .hash(secondpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-   if(pt.BTB_FULLYA) begin
-      assign firstbrtag_hash = firstpc;
-      assign secondbrtag_hash = secondpc;
-   end
-   else begin
-      if(pt.BTB_BTAG_FOLD) begin : btbfold
-         eb1_btb_tag_hash_fold #(.pt(pt)) first_brhash (.pc(firstpc [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                         .hash(firstbrtag_hash [pt.BTB_BTAG_SIZE-1:0]));
-         eb1_btb_tag_hash_fold #(.pt(pt)) second_brhash(.pc(secondpc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                         .hash(secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0]));
-      end
-      else begin
-         eb1_btb_tag_hash #(.pt(pt)) first_brhash (.pc(firstpc [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                    .hash(firstbrtag_hash [pt.BTB_BTAG_SIZE-1:0]));
-         eb1_btb_tag_hash #(.pt(pt)) second_brhash(.pc(secondpc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                    .hash(secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0]));
-      end
-   end // else: !if(pt.BTB_FULLYA)
-
-
-   // start_indexing - you want pc to be based on where the end of branch is prediction
-   // normal indexing pc based that's incorrect now for pc4 cases it's pc4 + 2
-
-   always_comb begin
-
-      i0_brp                 = '0;
-
-      i0_br_start_error      = (first4B & alignval[1] & alignbrend[0]);
-
-      i0_brp.valid           = (first2B & alignbrend[0]) |
-                               (first4B & alignbrend[1]) |
-                                i0_br_start_error;
-
-      i0_brp_pc4             = (first2B & alignpc4[0]) |
-                               (first4B & alignpc4[1]);
-
-      i0_brp.ret             = (first2B & alignret[0]) |
-                               (first4B & alignret[1]);
-
-      i0_brp.way             = (first2B | alignbrend[0])  ?  alignway[0]  :  alignway[1];
-
-      i0_brp.hist[1]         = (first2B & alignhist1[0]) |
-                               (first4B & alignhist1[1]);
-
-      i0_brp.hist[0]         = (first2B & alignhist0[0]) |
-                               (first4B & alignhist0[1]);
-
-      i0_ends_f1             =  first4B & alignfromf1[1];
-
-      i0_brp.toffset[11:0]   = (i0_ends_f1)  ?  f1poffset[11:0]  :  f0poffset[11:0];
-
-      i0_brp.prett[31:1]     = (i0_ends_f1)  ?  f1prett[31:1]    :  f0prett[31:1];
-
-      i0_brp.br_start_error  = i0_br_start_error;
-
-      i0_brp.bank            = (first2B | alignbrend[0])  ?  firstpc[1]  :  secondpc[1];
-
-      i0_brp.br_error        = (i0_brp.valid &  i0_brp_pc4 &  first2B) |
-                               (i0_brp.valid & ~i0_brp_pc4 &  first4B);
-
-      if(pt.BTB_FULLYA)
-        ifu_i0_fa_index = (first2B | alignbrend[0])  ?  alignindex[0]  :  alignindex[1];
-      else
-        ifu_i0_fa_index = '0;
-
- end
-
-
-   assign ifu_i0_bp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = (first2B | alignbrend[0])  ?  firstpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  :
-                                                                                         secondpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign ifu_i0_bp_fghr[pt.BHT_GHR_SIZE-1:0]            = (i0_ends_f1)               ?  f1fghr[pt.BHT_GHR_SIZE-1:0]  :
-                                                                                         f0fghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign ifu_i0_bp_btag[pt.BTB_BTAG_SIZE-1:0]           = (first2B | alignbrend[0])  ?  firstbrtag_hash[pt.BTB_BTAG_SIZE-1:0]  :
-                                                                                         secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0];
-end
-else begin
-   assign i0_brp = '0;
-   assign ifu_i0_bp_index = '0;
-   assign ifu_i0_bp_fghr = '0;
-   assign ifu_i0_bp_btag = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   // decompress
-
-   // quiet inputs for 4B inst
-   eb1_ifu_compress_ctl compress0 (.din((first2B) ? aligndata[15:0] : '0), .dout(uncompress0[31:0]));
-
-
-
-   assign i0_shift           =  dec_i0_decode_d & ~error_stall;
-
-   assign ifu_pmu_instr_aligned = i0_shift;
-
-
-   // compute how many bytes are being shifted from f0
-
-   assign shift_2B           =  i0_shift & first2B;
-
-   assign shift_4B           =  i0_shift & first4B;
-
-   // exact equations for the queue logic
-   assign f0_shift_2B        = (shift_2B & f0val[0]            ) |
-                               (shift_4B & f0val[0] & ~f0val[1]);
-
-
-   // f0 valid states
-   //     11
-   //     10
-   //     00
-
-   assign f1_shift_2B        =  f0val[0] & ~f0val[1] & shift_4B;
-
-
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_bp_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_ifu_bp_ctl.sv
deleted file mode 100644
index eae8a4e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_bp_ctl.sv
+++ /dev/null
@@ -1,884 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Branch predictor
-// Comments:
-//
-//
-//  Bank3 : Bank2 : Bank1 : Bank0
-//  FA  C       8       4       0
-//********************************************************************************
-
-module eb1_ifu_bp_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-
-   input logic clk,
-   input logic rst_l,
-
-   input logic ic_hit_f,      // Icache hit, enables F address capture
-
-   input logic [31:1] ifc_fetch_addr_f, // look up btb address
-   input logic ifc_fetch_req_f,  // F1 valid
-
-   input eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // BP commit update packet, includes errors
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_i0_br_fghr_r, // fghr to bp
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r, // bp index
-
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associative btb error index
-
-   input logic dec_tlu_flush_lower_wb, // used to move EX4 RS to EX1 and F
-   input logic dec_tlu_flush_leak_one_wb, // don't hit for leak one fetches
-
-   input logic dec_tlu_bpred_disable, // disable all branch prediction
-
-   input eb1_predict_pkt_t  exu_mp_pkt, // mispredict packet
-
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_mp_eghr, // execute ghr (for patching fghr)
-   input logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   input logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-   input logic exu_flush_final, // all flushes
-
-   output logic ifu_bp_hit_taken_f, // btb hit, select target
-   output logic [31:1] ifu_bp_btb_target_f, //  predicted target PC
-   output logic ifu_bp_inst_mask_f, // tell ic which valids to kill because of a taken branch, right justified
-
-   output logic [pt.BHT_GHR_SIZE-1:0] ifu_bp_fghr_f, // fetch ghr
-
-   output logic [1:0] ifu_bp_way_f, // way
-   output logic [1:0] ifu_bp_ret_f, // predicted ret
-   output logic [1:0] ifu_bp_hist1_f, // history counters for all 4 potential branches, bit 1, right justified
-   output logic [1:0] ifu_bp_hist0_f, // history counters for all 4 potential branches, bit 0, right justified
-   output logic [1:0] ifu_bp_pc4_f, // pc4 indication, right justified
-   output logic [1:0] ifu_bp_valid_f, // branch valid, right justified
-   output logic [11:0] ifu_bp_poffset_f, // predicted target
-
-   output logic [1:0] [$clog2(pt.BTB_SIZE)-1:0]    ifu_bp_fa_index_f, // predicted branch index (fully associative option)
-
-   input  logic       scan_mode
-   );
-
-
-   localparam BTB_DWIDTH =  pt.BTB_TOFFSET_SIZE+pt.BTB_BTAG_SIZE+5;
-   localparam BTB_DWIDTH_TOP =  int'(pt.BTB_TOFFSET_SIZE)+int'(pt.BTB_BTAG_SIZE)+4;
-   localparam BTB_FA_INDEX = $clog2(pt.BTB_SIZE)-1;
-   localparam FA_CMP_LOWER = $clog2(pt.ICACHE_LN_SZ);
-   localparam FA_TAG_END_UPPER= 5+int'(pt.BTB_TOFFSET_SIZE)+int'(FA_CMP_LOWER)-1; // must cast to int or vcs build fails
-   localparam FA_TAG_START_LOWER = 3+int'(pt.BTB_TOFFSET_SIZE)+int'(FA_CMP_LOWER);
-   localparam FA_TAG_END_LOWER = 5+int'(pt.BTB_TOFFSET_SIZE);
-
-   localparam TAG_START=BTB_DWIDTH-1;
-   localparam PC4=4;
-   localparam BOFF=3;
-   localparam CALL=2;
-   localparam RET=1;
-   localparam BV=0;
-
-   localparam LRU_SIZE=pt.BTB_ARRAY_DEPTH;
-   localparam NUM_BHT_LOOP = (pt.BHT_ARRAY_DEPTH > 16 ) ? 16 : pt.BHT_ARRAY_DEPTH;
-   localparam NUM_BHT_LOOP_INNER_HI =  (pt.BHT_ARRAY_DEPTH > 16 ) ?pt.BHT_ADDR_LO+3 : pt.BHT_ADDR_HI;
-   localparam NUM_BHT_LOOP_OUTER_LO =  (pt.BHT_ARRAY_DEPTH > 16 ) ?pt.BHT_ADDR_LO+4 : pt.BHT_ADDR_LO;
-   localparam BHT_NO_ADDR_MATCH  = ( pt.BHT_ARRAY_DEPTH <= 16 );
-
-
-   logic exu_mp_valid_write;
-   logic exu_mp_ataken;
-   logic exu_mp_valid; // conditional branch mispredict
-   logic exu_mp_boffset; // branch offsett
-   logic exu_mp_pc4; // branch is a 4B inst
-   logic exu_mp_call; // branch is a call inst
-   logic exu_mp_ret; // branch is a ret inst
-   logic exu_mp_ja; // branch is a jump always
-   logic [1:0] exu_mp_hist; // new history
-   logic [11:0] exu_mp_tgt; // target offset
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_addr; // BTB/BHT address
-   logic                                   dec_tlu_br0_v_wb; // WB stage history update
-   logic [1:0]                             dec_tlu_br0_hist_wb; // new history
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_tlu_br0_addr_wb; // addr
-   logic                                   dec_tlu_br0_error_wb; // error; invalidate bank
-   logic                                   dec_tlu_br0_start_error_wb; // error; invalidate all 4 banks in fg
-   logic [pt.BHT_GHR_SIZE-1:0]             exu_i0_br_fghr_wb;
-
-   logic use_mp_way, use_mp_way_p1;
-   logic [pt.RET_STACK_SIZE-1:0][31:0] rets_out, rets_in;
-   logic [pt.RET_STACK_SIZE-1:0]        rsenable;
-
-
-   logic [11:0]       btb_rd_tgt_f;
-   logic              btb_rd_pc4_f, btb_rd_call_f, btb_rd_ret_f;
-   logic [1:1]        bp_total_branch_offset_f;
-
-   logic [31:1]       bp_btb_target_adder_f;
-   logic [31:1]       bp_rs_call_target_f;
-   logic              rs_push, rs_pop, rs_hold;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] btb_rd_addr_p1_f, btb_wr_addr, btb_rd_addr_f;
-   logic [pt.BTB_BTAG_SIZE-1:0] btb_wr_tag, fetch_rd_tag_f, fetch_rd_tag_p1_f;
-   logic [BTB_DWIDTH-1:0]        btb_wr_data;
-   logic               btb_wr_en_way0, btb_wr_en_way1;
-
-
-   logic               dec_tlu_error_wb, btb_valid, dec_tlu_br0_middle_wb;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]        btb_error_addr_wb;
-   logic branch_error_collision_f, fetch_mp_collision_f, branch_error_collision_p1_f, fetch_mp_collision_p1_f;
-
-   logic  branch_error_bank_conflict_f;
-   logic [pt.BHT_GHR_SIZE-1:0] merged_ghr, fghr_ns, fghr;
-   logic [1:0] num_valids;
-   logic [LRU_SIZE-1:0] btb_lru_b0_f, btb_lru_b0_hold, btb_lru_b0_ns,
-                        fetch_wrindex_dec, fetch_wrindex_p1_dec, fetch_wrlru_b0, fetch_wrlru_p1_b0,
-                        mp_wrindex_dec, mp_wrlru_b0;
-   logic                btb_lru_rd_f, btb_lru_rd_p1_f, lru_update_valid_f;
-   logic  tag_match_way0_f, tag_match_way1_f;
-   logic [1:0] way_raw, bht_dir_f, btb_sel_f, wayhit_f, vwayhit_f, wayhit_p1_f;
-   logic [1:0] bht_valid_f, bht_force_taken_f;
-
-   logic leak_one_f, leak_one_f_d1;
-
-   logic [LRU_SIZE-1:0][BTB_DWIDTH-1:0]  btb_bank0_rd_data_way0_out ;
-
-   logic [LRU_SIZE-1:0][BTB_DWIDTH-1:0]  btb_bank0_rd_data_way1_out ;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way0_f ;
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way1_f ;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way0_p1_f ;
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way1_p1_f ;
-
-   logic                [BTB_DWIDTH-1:0] btb_vbank0_rd_data_f, btb_vbank1_rd_data_f;
-
-   logic                                         final_h;
-   logic                                         btb_fg_crossing_f;
-   logic                                         middle_of_bank;
-
-
-   logic [1:0]                                   bht_vbank0_rd_data_f, bht_vbank1_rd_data_f;
-   logic                                         branch_error_bank_conflict_p1_f;
-   logic                                         tag_match_way0_p1_f, tag_match_way1_p1_f;
-
-   logic [1:0]                                   btb_vlru_rd_f, fetch_start_f, tag_match_vway1_expanded_f, tag_match_way0_expanded_p1_f, tag_match_way1_expanded_p1_f;
-   logic [31:2] fetch_addr_p1_f;
-
-
-   logic exu_mp_way, exu_mp_way_f, dec_tlu_br0_way_wb, dec_tlu_way_wb;
-   logic                [BTB_DWIDTH-1:0] btb_bank0e_rd_data_f, btb_bank0e_rd_data_p1_f;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0o_rd_data_f;
-
-   logic [1:0] tag_match_way0_expanded_f, tag_match_way1_expanded_f;
-
-
-    logic [1:0]                                  bht_bank0_rd_data_f;
-    logic [1:0]                                  bht_bank1_rd_data_f;
-    logic [1:0]                                  bht_bank0_rd_data_p1_f;
-   genvar                                        j, i;
-
-   assign exu_mp_valid = exu_mp_pkt.misp & ~leak_one_f; // conditional branch mispredict
-   assign exu_mp_boffset = exu_mp_pkt.boffset;  // branch offset
-   assign exu_mp_pc4 = exu_mp_pkt.pc4;  // branch is a 4B inst
-   assign exu_mp_call = exu_mp_pkt.pcall;  // branch is a call inst
-   assign exu_mp_ret = exu_mp_pkt.pret;  // branch is a ret inst
-   assign exu_mp_ja = exu_mp_pkt.pja;  // branch is a jump always
-   assign exu_mp_way = exu_mp_pkt.way;  // repl way
-   assign exu_mp_hist[1:0] = exu_mp_pkt.hist[1:0];  // new history
-   assign exu_mp_tgt[11:0]  = exu_mp_pkt.toffset[11:0] ;  // target offset
-   assign exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  = exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ;  // BTB/BHT address
-   assign exu_mp_ataken = exu_mp_pkt.ataken;
-
-
-   assign dec_tlu_br0_v_wb = dec_tlu_br0_r_pkt.valid;
-   assign dec_tlu_br0_hist_wb[1:0]  = dec_tlu_br0_r_pkt.hist[1:0];
-   assign dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-   assign dec_tlu_br0_error_wb = dec_tlu_br0_r_pkt.br_error;
-   assign dec_tlu_br0_middle_wb = dec_tlu_br0_r_pkt.middle;
-   assign dec_tlu_br0_way_wb = dec_tlu_br0_r_pkt.way;
-   assign dec_tlu_br0_start_error_wb = dec_tlu_br0_r_pkt.br_start_error;
-   assign exu_i0_br_fghr_wb[pt.BHT_GHR_SIZE-1:0] = exu_i0_br_fghr_r[pt.BHT_GHR_SIZE-1:0];
-
-
-
-
-   // ----------------------------------------------------------------------
-   // READ
-   // ----------------------------------------------------------------------
-
-   // hash the incoming fetch PC, first guess at hashing algorithm
-   eb1_btb_addr_hash #(.pt(pt)) f1hash(.pc(ifc_fetch_addr_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-
-   assign fetch_addr_p1_f[31:2] = ifc_fetch_addr_f[31:2] + 30'b1;
-   eb1_btb_addr_hash #(.pt(pt)) f1hash_p1(.pc(fetch_addr_p1_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-   assign btb_sel_f[1] = ~bht_dir_f[0];
-   assign btb_sel_f[0] =  bht_dir_f[0];
-
-   assign fetch_start_f[1:0] = {ifc_fetch_addr_f[1], ~ifc_fetch_addr_f[1]};
-
-   // Errors colliding with fetches must kill the btb/bht hit.
-
-   assign branch_error_collision_f = dec_tlu_error_wb & (btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]);
-   assign branch_error_collision_p1_f = dec_tlu_error_wb & (btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]);
-
-   assign branch_error_bank_conflict_f = branch_error_collision_f & dec_tlu_error_wb;
-   assign branch_error_bank_conflict_p1_f = branch_error_collision_p1_f & dec_tlu_error_wb;
-
-   // set on leak one, hold until next flush without leak one
-   assign leak_one_f = (dec_tlu_flush_leak_one_wb & dec_tlu_flush_lower_wb) | (leak_one_f_d1 & ~dec_tlu_flush_lower_wb);
-
-logic exu_flush_final_d1;
-
- if(!pt.BTB_FULLYA) begin
-   assign fetch_mp_collision_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                                    exu_mp_valid & ifc_fetch_req_f &
-                                    (exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO])
-                                    );
-   assign fetch_mp_collision_p1_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                                       exu_mp_valid & ifc_fetch_req_f &
-                                       (exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO])
-                                       );
-   // 2 -way SA, figure out the way hit and mux accordingly
-   assign tag_match_way0_f = btb_bank0_rd_data_way0_f[BV] & (btb_bank0_rd_data_way0_f[TAG_START:17] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way1_f = btb_bank0_rd_data_way1_f[BV] & (btb_bank0_rd_data_way1_f[TAG_START:17] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way0_p1_f = btb_bank0_rd_data_way0_p1_f[BV] & (btb_bank0_rd_data_way0_p1_f[TAG_START:17] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_p1_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way1_p1_f = btb_bank0_rd_data_way1_p1_f[BV] & (btb_bank0_rd_data_way1_p1_f[TAG_START:17] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_p1_f) & ifc_fetch_req_f & ~leak_one_f;
-
-
-   // Both ways could hit, use the offset bit to reorder
-
-   assign tag_match_way0_expanded_f[1:0] = {tag_match_way0_f &  (btb_bank0_rd_data_way0_f[BOFF] ^ btb_bank0_rd_data_way0_f[PC4]),
-                                             tag_match_way0_f & ~(btb_bank0_rd_data_way0_f[BOFF] ^ btb_bank0_rd_data_way0_f[PC4])};
-
-   assign tag_match_way1_expanded_f[1:0] = {tag_match_way1_f &  (btb_bank0_rd_data_way1_f[BOFF] ^ btb_bank0_rd_data_way1_f[PC4]),
-                                             tag_match_way1_f & ~(btb_bank0_rd_data_way1_f[BOFF] ^ btb_bank0_rd_data_way1_f[PC4])};
-
-   assign tag_match_way0_expanded_p1_f[1:0] = {tag_match_way0_p1_f &  (btb_bank0_rd_data_way0_p1_f[BOFF] ^ btb_bank0_rd_data_way0_p1_f[PC4]),
-                                                tag_match_way0_p1_f & ~(btb_bank0_rd_data_way0_p1_f[BOFF] ^ btb_bank0_rd_data_way0_p1_f[PC4])};
-
-   assign tag_match_way1_expanded_p1_f[1:0] = {tag_match_way1_p1_f &  (btb_bank0_rd_data_way1_p1_f[BOFF] ^ btb_bank0_rd_data_way1_p1_f[PC4]),
-                                                tag_match_way1_p1_f & ~(btb_bank0_rd_data_way1_p1_f[BOFF] ^ btb_bank0_rd_data_way1_p1_f[PC4])};
-
-   assign wayhit_f[1:0] = tag_match_way0_expanded_f[1:0] | tag_match_way1_expanded_f[1:0];
-   assign wayhit_p1_f[1:0] = tag_match_way0_expanded_p1_f[1:0] | tag_match_way1_expanded_p1_f[1:0];
-
-   assign btb_bank0o_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_f[1]}} & btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_f[1]}} & btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0]) );
-   assign btb_bank0e_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_f[0]}} & btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_f[0]}} & btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0]) );
-
-   assign btb_bank0e_rd_data_p1_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_p1_f[0]}} & btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0]) |
-                                                               ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_p1_f[0]}} & btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0]) );
-
-   // virtual bank order
-
-   assign btb_vbank0_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{fetch_start_f[0]}} &  btb_bank0e_rd_data_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{fetch_start_f[1]}} &  btb_bank0o_rd_data_f[BTB_DWIDTH-1:0]) );
-   assign btb_vbank1_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{fetch_start_f[0]}} &  btb_bank0o_rd_data_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{fetch_start_f[1]}} &  btb_bank0e_rd_data_p1_f[BTB_DWIDTH-1:0]) );
-
-   assign way_raw[1:0] =  tag_match_vway1_expanded_f[1:0] | (~vwayhit_f[1:0] & btb_vlru_rd_f[1:0]);
-
-   // --------------------------------------------------------------------------------
-   // --------------------------------------------------------------------------------
-   // update lru
-   // mp
-
-   // create a onehot lru write vector
-   assign mp_wrindex_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   // fetch
-   assign fetch_wrindex_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-   assign fetch_wrindex_p1_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign mp_wrlru_b0[LRU_SIZE-1:0] = mp_wrindex_dec[LRU_SIZE-1:0] & {LRU_SIZE{exu_mp_valid}};
-
-
-   assign btb_lru_b0_hold[LRU_SIZE-1:0] = ~mp_wrlru_b0[LRU_SIZE-1:0] & ~fetch_wrlru_b0[LRU_SIZE-1:0];
-
-   // Forward the mp lru information to the fetch, avoids multiple way hits later
-   assign use_mp_way = fetch_mp_collision_f;
-   assign use_mp_way_p1 = fetch_mp_collision_p1_f;
-
-   assign lru_update_valid_f = (vwayhit_f[0] | vwayhit_f[1]) & ifc_fetch_req_f & ~leak_one_f;
-
-
-   assign fetch_wrlru_b0[LRU_SIZE-1:0] = fetch_wrindex_dec[LRU_SIZE-1:0] &
-                                         {LRU_SIZE{lru_update_valid_f}};
-   assign fetch_wrlru_p1_b0[LRU_SIZE-1:0] = fetch_wrindex_p1_dec[LRU_SIZE-1:0] &
-                                         {LRU_SIZE{lru_update_valid_f}};
-
-   assign btb_lru_b0_ns[LRU_SIZE-1:0] = ( (btb_lru_b0_hold[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]) |
-                                          (mp_wrlru_b0[LRU_SIZE-1:0] & {LRU_SIZE{~exu_mp_way}}) |
-                                          (fetch_wrlru_b0[LRU_SIZE-1:0] & {LRU_SIZE{tag_match_way0_f}}) |
-                                          (fetch_wrlru_p1_b0[LRU_SIZE-1:0] & {LRU_SIZE{tag_match_way0_p1_f}}) );
-
-
-
-   assign btb_lru_rd_f = use_mp_way ? exu_mp_way_f : |(fetch_wrindex_dec[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]);
-
-   assign btb_lru_rd_p1_f = use_mp_way_p1 ? exu_mp_way_f : |(fetch_wrindex_p1_dec[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]);
-
-   // rotated
-   assign btb_vlru_rd_f[1:0] = ( ({2{fetch_start_f[0]}} & {btb_lru_rd_f, btb_lru_rd_f}) |
-                                  ({2{fetch_start_f[1]}} & {btb_lru_rd_p1_f, btb_lru_rd_f}));
-
-   assign tag_match_vway1_expanded_f[1:0] = ( ({2{fetch_start_f[0]}} & {tag_match_way1_expanded_f[1:0]}) |
-                                               ({2{fetch_start_f[1]}} & {tag_match_way1_expanded_p1_f[0], tag_match_way1_expanded_f[1]}) );
-
-
-   rvdffe #(LRU_SIZE) btb_lru_ff (.*, .en(ifc_fetch_req_f | exu_mp_valid),
-                                    .din(btb_lru_b0_ns[(LRU_SIZE)-1:0]),
-                                   .dout(btb_lru_b0_f[(LRU_SIZE)-1:0]));
-
- end // if (!pt.BTB_FULLYA)
-   // Detect end of cache line and mask as needed
-   logic eoc_near;
-   logic eoc_mask;
-   assign eoc_near = &ifc_fetch_addr_f[pt.ICACHE_BEAT_ADDR_HI:3];
-   assign eoc_mask = ~eoc_near| (|(~ifc_fetch_addr_f[2:1]));
-
-
-
-   // --------------------------------------------------------------------------------
-   // --------------------------------------------------------------------------------
-
-   // mux out critical hit bank for pc computation
-   // This is only useful for the first taken branch in the fetch group
-   logic [16:1] btb_sel_data_f;
-
-   assign btb_rd_tgt_f[11:0] = btb_sel_data_f[16:5];
-   assign btb_rd_pc4_f       = btb_sel_data_f[4];
-   assign btb_rd_call_f      = btb_sel_data_f[2];
-   assign btb_rd_ret_f       = btb_sel_data_f[1];
-
-   assign btb_sel_data_f[16:1] = ( ({16{btb_sel_f[1]}} & btb_vbank1_rd_data_f[16:1]) |
-                                    ({16{btb_sel_f[0]}} & btb_vbank0_rd_data_f[16:1]) );
-
-
-   logic [1:0] hist0_raw, hist1_raw, pc4_raw, pret_raw;
-
-   // a valid taken target needs to kill the next fetch as we compute the target address
-   assign ifu_bp_hit_taken_f = |(vwayhit_f[1:0] & hist1_raw[1:0]) & ifc_fetch_req_f & ~leak_one_f_d1 & ~dec_tlu_bpred_disable;
-
-
-   // Don't put calls/rets/ja in the predictor, force the bht taken instead
-   assign bht_force_taken_f[1:0] = {(btb_vbank1_rd_data_f[CALL] | btb_vbank1_rd_data_f[RET]),
-                                     (btb_vbank0_rd_data_f[CALL] | btb_vbank0_rd_data_f[RET])};
-
-
-   // taken and valid, otherwise, branch errors must clear the bht
-   assign bht_valid_f[1:0] = vwayhit_f[1:0];
-
-   assign bht_vbank0_rd_data_f[1:0] = ( ({2{fetch_start_f[0]}} & bht_bank0_rd_data_f[1:0]) |
-                                         ({2{fetch_start_f[1]}} & bht_bank1_rd_data_f[1:0]) );
-
-   assign bht_vbank1_rd_data_f[1:0] = ( ({2{fetch_start_f[0]}} & bht_bank1_rd_data_f[1:0]) |
-                                         ({2{fetch_start_f[1]}} & bht_bank0_rd_data_p1_f[1:0]) );
-
-
-   assign bht_dir_f[1:0] = {(bht_force_taken_f[1] | bht_vbank1_rd_data_f[1]) & bht_valid_f[1],
-                             (bht_force_taken_f[0] | bht_vbank0_rd_data_f[1]) & bht_valid_f[0]};
-
-   assign ifu_bp_inst_mask_f = (ifu_bp_hit_taken_f & btb_sel_f[1]) | ~ifu_bp_hit_taken_f;
-
-
-
-
-   // Branch prediction info is sent with the 2byte lane associated with the end of the branch.
-   // Cases
-   //       BANK1         BANK0
-   // -------------------------------
-   // |      :       |      :       |
-   // -------------------------------
-   //         <------------>                   : PC4 branch, offset, should be in B1 (indicated on [2])
-   //                <------------>            : PC4 branch, no offset, indicate PC4, VALID, HIST on [1]
-   //                       <------------>     : PC4 branch, offset, indicate PC4, VALID, HIST on [0]
-   //                <------>                  : PC2 branch, offset, indicate VALID, HIST on [1]
-   //                       <------>           : PC2 branch, no offset, indicate VALID, HIST on [0]
-   //
-
-
-
-   assign hist1_raw[1:0] = bht_force_taken_f[1:0] | {bht_vbank1_rd_data_f[1],
-                                                      bht_vbank0_rd_data_f[1]};
-
-   assign hist0_raw[1:0] = {bht_vbank1_rd_data_f[0],
-                            bht_vbank0_rd_data_f[0]};
-
-
-   assign pc4_raw[1:0] = {vwayhit_f[1] & btb_vbank1_rd_data_f[PC4],
-                          vwayhit_f[0] & btb_vbank0_rd_data_f[PC4]};
-
-   assign pret_raw[1:0] = {vwayhit_f[1] & ~btb_vbank1_rd_data_f[CALL] & btb_vbank1_rd_data_f[RET],
-                           vwayhit_f[0] & ~btb_vbank0_rd_data_f[CALL] & btb_vbank0_rd_data_f[RET]};
-
-   // GHR
-
-
-  // count the valids with masking based on first taken
-   assign num_valids[1:0] = countones(bht_valid_f[1:0]);
-
-   // Note that the following property holds
-   // P: prior ghr, H: history bit of last valid branch in line (could be 1 or 0)
-   // Num valid branches   What new GHR must be
-   // 2                    0H
-   // 1                    PH
-   // 0                    PP
-
-   assign final_h = |(btb_sel_f[1:0] & bht_dir_f[1:0]);
-
-   assign merged_ghr[pt.BHT_GHR_SIZE-1:0] = (
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h2}} & {fghr[pt.BHT_GHR_SIZE-3:0], 1'b0, final_h}) | // 0H
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h1}} & {fghr[pt.BHT_GHR_SIZE-2:0], final_h}) | // PH
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h0}} & {fghr[pt.BHT_GHR_SIZE-1:0]}) ); // PP
-
-   logic [pt.BHT_GHR_SIZE-1:0] exu_flush_ghr;
-   assign exu_flush_ghr[pt.BHT_GHR_SIZE-1:0] = exu_mp_fghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign fghr_ns[pt.BHT_GHR_SIZE-1:0] = ( ({pt.BHT_GHR_SIZE{exu_flush_final_d1}} & exu_flush_ghr[pt.BHT_GHR_SIZE-1:0]) |
-                                         ({pt.BHT_GHR_SIZE{~exu_flush_final_d1 & ifc_fetch_req_f & ic_hit_f & ~leak_one_f_d1}} & merged_ghr[pt.BHT_GHR_SIZE-1:0]) |
-                                         ({pt.BHT_GHR_SIZE{~exu_flush_final_d1 & ~(ifc_fetch_req_f & ic_hit_f & ~leak_one_f_d1)}} & fghr[pt.BHT_GHR_SIZE-1:0]));
-
-   rvdffie #(.WIDTH(pt.BHT_GHR_SIZE+3),.OVERRIDE(1)) fetchghr (.*,
-                                          .din ({exu_flush_final, exu_mp_way, leak_one_f, fghr_ns[pt.BHT_GHR_SIZE-1:0]}),
-                                          .dout({exu_flush_final_d1, exu_mp_way_f, leak_one_f_d1, fghr[pt.BHT_GHR_SIZE-1:0]}));
-
-   assign ifu_bp_fghr_f[pt.BHT_GHR_SIZE-1:0] = fghr[pt.BHT_GHR_SIZE-1:0];
-
-
-   assign ifu_bp_way_f[1:0] = way_raw[1:0];
-   assign ifu_bp_hist1_f[1:0]    = hist1_raw[1:0];
-   assign ifu_bp_hist0_f[1:0]    = hist0_raw[1:0];
-   assign ifu_bp_pc4_f[1:0]     = pc4_raw[1:0];
-
-   assign ifu_bp_valid_f[1:0]   = vwayhit_f[1:0] & ~{2{dec_tlu_bpred_disable}};
-   assign ifu_bp_ret_f[1:0]     = pret_raw[1:0];
-
-
-   // compute target
-   // Form the fetch group offset based on the btb hit location and the location of the branch within the 4 byte chunk
-
-//  .i 5
-//  .o 3
-//  .ilb bht_dir_f[1] bht_dir_f[0] fetch_start_f[1] fetch_start_f[0] btb_rd_pc4_f
-//  .ob bloc_f[1] bloc_f[0] use_fa_plus
-//  .type fr
-//
-//
-//  ## rotdir[1:0]  fs   pc4  off fapl
-//    -1            01 -  01  0
-//    10            01 -  10  0
-//
-//    -1            10 -  10  0
-//    10            10 0  01  1
-//    10            10 1  01  0
-logic [1:0] bloc_f;
-logic use_fa_plus;
-assign bloc_f[1] = (bht_dir_f[0] & ~fetch_start_f[0]) | (~bht_dir_f[0]
-     & fetch_start_f[0]);
-assign bloc_f[0] = (bht_dir_f[0] & fetch_start_f[0]) | (~bht_dir_f[0]
-     & ~fetch_start_f[0]);
-assign use_fa_plus = (~bht_dir_f[0] & ~fetch_start_f[0] & ~btb_rd_pc4_f);
-
-
-
-
-    assign btb_fg_crossing_f = fetch_start_f[0] & btb_sel_f[0] & btb_rd_pc4_f;
-
-   assign bp_total_branch_offset_f =  bloc_f[1] ^ btb_rd_pc4_f;
-
-   logic [31:2] adder_pc_in_f, ifc_fetch_adder_prior;
-   rvdfflie #(.WIDTH(30), .LEFT(19)) faddrf_ff (.*, .en(ifc_fetch_req_f & ~ifu_bp_hit_taken_f & ic_hit_f), .din(ifc_fetch_addr_f[31:2]), .dout(ifc_fetch_adder_prior[31:2]));
-
-
-   assign ifu_bp_poffset_f[11:0] = btb_rd_tgt_f[11:0];
-
-   assign adder_pc_in_f[31:2] = ( ({30{ use_fa_plus}} & fetch_addr_p1_f[31:2]) |
-                                   ({30{ btb_fg_crossing_f}} & ifc_fetch_adder_prior[31:2]) |
-                                   ({30{~btb_fg_crossing_f & ~use_fa_plus}} & ifc_fetch_addr_f[31:2]));
-
-   rvbradder predtgt_addr (.pc({adder_pc_in_f[31:2], bp_total_branch_offset_f}),
-                         .offset(btb_rd_tgt_f[11:0]),
-                         .dout(bp_btb_target_adder_f[31:1])
-                         );
-   // mux in the return stack address here for a predicted return assuming the RS is valid, quite if no prediction
-   assign ifu_bp_btb_target_f[31:1] = (({31{btb_rd_ret_f & ~btb_rd_call_f & rets_out[0][0] & ifu_bp_hit_taken_f}} & rets_out[0][31:1]) |
-                                       ({31{~(btb_rd_ret_f & ~btb_rd_call_f & rets_out[0][0]) & ifu_bp_hit_taken_f}} & bp_btb_target_adder_f[31:1]) );
-
-
-   // ----------------------------------------------------------------------
-   // Return Stack
-   // ----------------------------------------------------------------------
-
-   rvbradder rs_addr (.pc({adder_pc_in_f[31:2], bp_total_branch_offset_f}),
-                    .offset({11'b0,  ~btb_rd_pc4_f}),
-                    .dout(bp_rs_call_target_f[31:1])
-                         );
-
-   assign rs_push = (btb_rd_call_f & ~btb_rd_ret_f & ifu_bp_hit_taken_f);
-   assign rs_pop = (btb_rd_ret_f & ~btb_rd_call_f & ifu_bp_hit_taken_f);
-   assign rs_hold = ~rs_push & ~rs_pop;
-
-
-
-   // Fetch based (bit 0 is a valid)
-   assign rets_in[0][31:0] = ( ({32{rs_push}} & {bp_rs_call_target_f[31:1], 1'b1}) | // target[31:1], valid
-                               ({32{rs_pop}}  & rets_out[1][31:0]) );
-
-   assign rsenable[0] = ~rs_hold;
-
-   for (i=0; i<pt.RET_STACK_SIZE; i++) begin : retstack
-
-      // for the last entry in the stack, we don't have a pop position
-      if(i==pt.RET_STACK_SIZE-1) begin
-         assign rets_in[i][31:0] = rets_out[i-1][31:0];
-         assign rsenable[i] = rs_push;
-      end
-      else if(i>0) begin
-        assign rets_in[i][31:0] = ( ({32{rs_push}} & rets_out[i-1][31:0]) |
-                                    ({32{rs_pop}}  & rets_out[i+1][31:0]) );
-         assign rsenable[i] = rs_push | rs_pop;
-      end
-      rvdffe #(32) rets_ff (.*, .en(rsenable[i]), .din(rets_in[i][31:0]), .dout(rets_out[i][31:0]));
-
-   end : retstack
-
-   // ----------------------------------------------------------------------
-   // WRITE
-   // ----------------------------------------------------------------------
-
-
-   assign dec_tlu_error_wb = dec_tlu_br0_start_error_wb | dec_tlu_br0_error_wb;
-
-   assign btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign dec_tlu_way_wb = dec_tlu_br0_way_wb;
-
-   assign btb_valid = exu_mp_valid & ~dec_tlu_error_wb;
-
-   assign btb_wr_tag[pt.BTB_BTAG_SIZE-1:0] = exu_mp_btag[pt.BTB_BTAG_SIZE-1:0];
-
-   if(!pt.BTB_FULLYA) begin
-
-      if(pt.BTB_BTAG_FOLD) begin : btbfold
-         eb1_btb_tag_hash_fold #(.pt(pt)) rdtagf  (.hash(fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]),
-                                                    .pc({ifc_fetch_addr_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-         eb1_btb_tag_hash_fold #(.pt(pt)) rdtagp1f(.hash(fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]),
-                                                    .pc({fetch_addr_p1_f[ pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-      end
-      else begin
-         eb1_btb_tag_hash #(.pt(pt)) rdtagf(.hash(fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]),
-                                             .pc({ifc_fetch_addr_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-         eb1_btb_tag_hash #(.pt(pt)) rdtagp1f(.hash(fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]),
-                                               .pc({fetch_addr_p1_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-      end
-
-      assign btb_wr_en_way0 = ( ({{~exu_mp_way & exu_mp_valid_write & ~dec_tlu_error_wb}}) |
-                                ({{~dec_tlu_way_wb & dec_tlu_error_wb}}));
-
-      assign btb_wr_en_way1 = ( ({{exu_mp_way & exu_mp_valid_write & ~dec_tlu_error_wb}}) |
-                                ({{dec_tlu_way_wb & dec_tlu_error_wb}}));
-      assign btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = dec_tlu_error_wb ? btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] : exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-
-      assign vwayhit_f[1:0] = ( ({2{fetch_start_f[0]}} & {wayhit_f[1:0]}) |
-                                ({2{fetch_start_f[1]}} & {wayhit_p1_f[0], wayhit_f[1]})) & {eoc_mask, 1'b1};
-
-   end // if (!pt.BTB_FULLYA)
-
-   assign btb_wr_data[BTB_DWIDTH-1:0] = {btb_wr_tag[pt.BTB_BTAG_SIZE-1:0], exu_mp_tgt[pt.BTB_TOFFSET_SIZE-1:0], exu_mp_pc4, exu_mp_boffset,
-                                                exu_mp_call | exu_mp_ja, exu_mp_ret | exu_mp_ja, btb_valid} ;
-
-   assign exu_mp_valid_write = exu_mp_valid & exu_mp_ataken & ~exu_mp_pkt.valid;
-   logic [1:0] bht_wr_data0, bht_wr_data2;
-   logic [1:0] bht_wr_en0, bht_wr_en2;
-
-   assign middle_of_bank = exu_mp_pc4 ^ exu_mp_boffset;
-   assign bht_wr_en0[1:0] = {2{exu_mp_valid & ~exu_mp_call & ~exu_mp_ret & ~exu_mp_ja}} & {middle_of_bank, ~middle_of_bank};
-   assign bht_wr_en2[1:0] = {2{dec_tlu_br0_v_wb}} & {dec_tlu_br0_middle_wb, ~dec_tlu_br0_middle_wb} ;
-
-   // Experiments show this is the best priority scheme for same bank/index writes at the same time.
-   assign bht_wr_data0[1:0] = exu_mp_hist[1:0]; // lowest priority
-   assign bht_wr_data2[1:0] = dec_tlu_br0_hist_wb[1:0]; // highest priority
-
-
-
-   logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] bht_rd_addr_f, bht_rd_addr_p1_f, bht_wr_addr0, bht_wr_addr2;
-
-   logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] mp_hashed, br0_hashed_wb, bht_rd_addr_hashed_f, bht_rd_addr_hashed_p1_f;
-   eb1_btb_ghr_hash #(.pt(pt)) mpghrhs  (.hashin(exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(exu_mp_eghr[pt.BHT_GHR_SIZE-1:0]), .hash(mp_hashed[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) br0ghrhs (.hashin(dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(exu_i0_br_fghr_wb[pt.BHT_GHR_SIZE-1:0]), .hash(br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) fghrhs (.hashin(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(fghr[pt.BHT_GHR_SIZE-1:0]), .hash(bht_rd_addr_hashed_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) fghrhs_p1 (.hashin(btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(fghr[pt.BHT_GHR_SIZE-1:0]), .hash(bht_rd_addr_hashed_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-
-   assign bht_wr_addr0[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = mp_hashed[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_wr_addr2[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_rd_addr_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = bht_rd_addr_hashed_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_rd_addr_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = bht_rd_addr_hashed_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-
-
-   // ----------------------------------------------------------------------
-   // Structures. Using FLOPS
-   // ----------------------------------------------------------------------
-   // BTB
-   // Entry -> tag[pt.BTB_BTAG_SIZE-1:0], toffset[11:0], pc4, boffset, call, ret, valid
-
-   if(!pt.BTB_FULLYA) begin
-
-      for (j=0 ; j<LRU_SIZE ; j++) begin : BTB_FLOPS
-         // Way 0
-         rvdffe #(17+pt.BTB_BTAG_SIZE) btb_bank0_way0 (.*,
-                    .en(((btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == j) & btb_wr_en_way0)),
-                    .din        (btb_wr_data[BTB_DWIDTH-1:0]),
-                    .dout       (btb_bank0_rd_data_way0_out[j]));
-
-         // Way 1
-         rvdffe #(17+pt.BTB_BTAG_SIZE) btb_bank0_way1 (.*,
-                    .en(((btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == j) & btb_wr_en_way1)),
-                    .din        (btb_wr_data[BTB_DWIDTH-1:0]),
-                    .dout       (btb_bank0_rd_data_way1_out[j]));
-
-      end
-
-
-    always_comb begin : BTB_rd_mux
-        btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0] = '0 ;
-
-        for (int j=0; j< LRU_SIZE; j++) begin
-          if (btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == (pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1)'(j)) begin
-
-           btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way0_out[j];
-           btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way1_out[j];
-
-          end
-        end
-        for (int j=0; j< LRU_SIZE; j++) begin
-          if (btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == (pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1)'(j)) begin
-
-           btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way0_out[j];
-           btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way1_out[j];
-
-          end
-        end
-    end
-end // if (!pt.BTB_FULLYA)
-
-
-
-
-
-      if(pt.BTB_FULLYA) begin : fa
-
-         logic found1, hit0, hit1;
-         logic btb_used_reset, write_used;
-         logic [$clog2(pt.BTB_SIZE)-1:0] btb_fa_wr_addr0, hit0_index, hit1_index;
-
-         logic [pt.BTB_SIZE-1:0]         btb_tag_hit, btb_offset_0, btb_offset_1, btb_used_ns, btb_used,
-                                         wr0_en, btb_upper_hit;
-         logic [pt.BTB_SIZE-1:0][BTB_DWIDTH-1:0] btbdata;
-
-         // Fully Associative tag hash uses bits 31:3. Bits 2:1 are the offset bits used for the 4 tag comp banks
-         // Full tag used to speed up lookup. There is one 31:3 cmp per entry, and 4 2:1 cmps per entry.
-
-         logic [FA_CMP_LOWER-1:1]  ifc_fetch_addr_p1_f;
-
-
-         assign ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1] = ifc_fetch_addr_f[FA_CMP_LOWER-1:1] + 1'b1;
-
-         assign fetch_mp_collision_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == ifc_fetch_addr_f[31:1]) &
-                                      exu_mp_valid & ifc_fetch_req_f & ~exu_mp_pkt.way);
-         assign fetch_mp_collision_p1_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == {ifc_fetch_addr_f[31:FA_CMP_LOWER], ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1]}) &
-                                      exu_mp_valid & ifc_fetch_req_f & ~exu_mp_pkt.way);
-
-      always_comb begin
-         btb_vbank0_rd_data_f = '0;
-         btb_vbank1_rd_data_f = '0;
-         btb_tag_hit = '0;
-         btb_upper_hit = '0;
-         btb_offset_0 = '0;
-         btb_offset_1 = '0;
-
-         found1 = 1'b0;
-         hit0 = 1'b0;
-         hit1 = 1'b0;
-         hit0_index = '0;
-         hit1_index = '0;
-         btb_fa_wr_addr0 = '0;
-
-         for(int i=0; i<pt.BTB_SIZE; i++) begin
-            // Break the cmp into chunks for lower area.
-            // Chunk1: FA 31:6 or 31:5 depending on icache line size
-            // Chunk2: FA 5:1 or 4:1 depending on icache line size
-            btb_upper_hit[i] = (btbdata[i][BTB_DWIDTH_TOP:FA_TAG_END_UPPER] == ifc_fetch_addr_f[31:FA_CMP_LOWER]) & btbdata[i][0] & ~wr0_en[i];
-            btb_offset_0[i] = (btbdata[i][FA_TAG_START_LOWER:FA_TAG_END_LOWER] == ifc_fetch_addr_f[FA_CMP_LOWER-1:1]) & btb_upper_hit[i];
-            btb_offset_1[i] = (btbdata[i][FA_TAG_START_LOWER:FA_TAG_END_LOWER] == ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1]) & btb_upper_hit[i];
-
-            if(~hit0) begin
-               if(btb_offset_0[i]) begin
-                  hit0_index[BTB_FA_INDEX:0] = (BTB_FA_INDEX+1)'(i);
-                  // hit unless we are also writing this entry at the same time
-                  hit0 = 1'b1;
-               end
-            end
-            if(~hit1) begin
-               if(btb_offset_1[i]) begin
-                  hit1_index[BTB_FA_INDEX:0] = (BTB_FA_INDEX+1)'(i);
-                  hit1 = 1'b1;
-               end
-            end
-
-
-            // Mux out the 2 potential branches
-            if(btb_offset_0[i] == 1'b1)
-              btb_vbank0_rd_data_f[BTB_DWIDTH-1:0] = fetch_mp_collision_f ? btb_wr_data : btbdata[i];
-            if(btb_offset_1[i] == 1'b1)
-              btb_vbank1_rd_data_f[BTB_DWIDTH-1:0] = fetch_mp_collision_p1_f ? btb_wr_data : btbdata[i];
-
-            // find the first zero from bit zero in the used vector, this is the write address
-            if(~found1) begin
-               if(~btb_used[i]) begin
-                  btb_fa_wr_addr0[BTB_FA_INDEX:0] = i[BTB_FA_INDEX:0];
-                  found1 = 1'b1;
-               end
-            end
-         end
-      end // always_comb begin
-
-`ifdef RV_ASSERT_ON
-   btbhitonehot0: assert #0 ($onehot0(btb_offset_0));
-   btbhitonehot1: assert #0 ($onehot0(btb_offset_1));
-`endif
-
-   assign vwayhit_f[1:0] = {hit1, hit0} & {eoc_mask, 1'b1};
-
-   // way bit is reused as the predicted bit
-   assign way_raw[1:0] =  vwayhit_f[1:0] | {fetch_mp_collision_p1_f, fetch_mp_collision_f};
-
-   for (j=0 ; j<pt.BTB_SIZE ; j++) begin : BTB_FAFLOPS
-
-      assign wr0_en[j] = ((btb_fa_wr_addr0[BTB_FA_INDEX:0] == j) & (exu_mp_valid_write & ~exu_mp_pkt.way)) |
-                         ((dec_fa_error_index == j) & dec_tlu_error_wb);
-
-      rvdffe #(BTB_DWIDTH) btb_fa (.*, .clk(clk),
-                                   .en  (wr0_en[j]),
-                                   .din (btb_wr_data[BTB_DWIDTH-1:0]),
-                                   .dout(btbdata[j]));
-   end // block: BTB_FAFLOPS
-
-   assign ifu_bp_fa_index_f[1] = hit1 ? hit1_index : '0;
-   assign ifu_bp_fa_index_f[0] = hit0 ? hit0_index : '0;
-
-   assign btb_used_reset = &btb_used[pt.BTB_SIZE-1:0];
-   assign btb_used_ns[pt.BTB_SIZE-1:0] = ({pt.BTB_SIZE{vwayhit_f[1]}} & (32'b1 << hit1_index[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{vwayhit_f[0]}} & (32'b1 << hit0_index[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{exu_mp_valid_write & ~exu_mp_pkt.way & ~dec_tlu_error_wb}} & (32'b1 << btb_fa_wr_addr0[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{btb_used_reset}} & {pt.BTB_SIZE{1'b0}}) |
-                                         ({pt.BTB_SIZE{~btb_used_reset & dec_tlu_error_wb}} & (btb_used[pt.BTB_SIZE-1:0] & ~(32'b1 << dec_fa_error_index[BTB_FA_INDEX:0]))) |
-                                         (~{pt.BTB_SIZE{btb_used_reset | dec_tlu_error_wb}} & btb_used[pt.BTB_SIZE-1:0]);
-
-   assign write_used = btb_used_reset | ifu_bp_hit_taken_f | exu_mp_valid_write | dec_tlu_error_wb;
-
-
-   rvdffe #(pt.BTB_SIZE) btb_usedf (.*, .clk(clk),
-                    .en  (write_used),
-                    .din (btb_used_ns[pt.BTB_SIZE-1:0]),
-                    .dout(btb_used[pt.BTB_SIZE-1:0]));
-
-end // block: fa
-
-
-   //-----------------------------------------------------------------------------
-   // BHT
-   // 2 bit Entry -> direction, strength
-   //
-   //-----------------------------------------------------------------------------
-
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0][NUM_BHT_LOOP-1:0][1:0]      bht_bank_wr_data ;
-   logic [1:0] [pt.BHT_ARRAY_DEPTH-1:0] [1:0]                bht_bank_rd_data_out ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0]                 bht_bank_clken ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0]                 bht_bank_clk   ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0][NUM_BHT_LOOP-1:0]           bht_bank_sel   ;
-
-   for ( i=0; i<2; i++) begin : BANKS
-     for (genvar k=0 ; k < (pt.BHT_ARRAY_DEPTH)/NUM_BHT_LOOP ; k++) begin : BHT_CLK_GROUP
-     assign bht_bank_clken[i][k]  = (bht_wr_en0[i] & ((bht_wr_addr0[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) |  BHT_NO_ADDR_MATCH)) |
-                                    (bht_wr_en2[i] & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) |  BHT_NO_ADDR_MATCH));
-`ifndef RV_FPGA_OPTIMIZE
-     rvclkhdr bht_bank_grp_cgc ( .en(bht_bank_clken[i][k]), .l1clk(bht_bank_clk[i][k]), .* ); // ifndef RV_FPGA_OPTIMIZE
-`endif
-
-     for (j=0 ; j<NUM_BHT_LOOP ; j++) begin : BHT_FLOPS
-       assign   bht_bank_sel[i][k][j]    = (bht_wr_en0[i] & (bht_wr_addr0[NUM_BHT_LOOP_INNER_HI :pt.BHT_ADDR_LO] == j) & ((bht_wr_addr0[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) |
-                                           (bht_wr_en2[i] & (bht_wr_addr2[NUM_BHT_LOOP_INNER_HI :pt.BHT_ADDR_LO] == j) & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) ;
-
-       assign bht_bank_wr_data[i][k][j]  = (bht_wr_en2[i] & (bht_wr_addr2[NUM_BHT_LOOP_INNER_HI:pt.BHT_ADDR_LO] == j) & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) ? bht_wr_data2[1:0] :
-                                                                                                                      bht_wr_data0[1:0]   ;
-
-
-          rvdffs_fpga #(2) bht_bank (.*,
-                    .clk        (bht_bank_clk[i][k]),
-                    .en         (bht_bank_sel[i][k][j]),
-                    .rawclk     (clk),
-                    .clken      (bht_bank_sel[i][k][j]),
-                    .din        (bht_bank_wr_data[i][k][j]),
-                    .dout       (bht_bank_rd_data_out[i][(16*k)+j]));
-
-      end // block: BHT_FLOPS
-   end // block: BHT_CLK_GROUP
- end // block: BANKS
-
-    always_comb begin : BHT_rd_mux
-     bht_bank0_rd_data_f[1:0] = '0 ;
-     bht_bank1_rd_data_f[1:0] = '0 ;
-     bht_bank0_rd_data_p1_f[1:0] = '0 ;
-     for (int j=0; j< pt.BHT_ARRAY_DEPTH; j++) begin
-       if (bht_rd_addr_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] == (pt.BHT_ADDR_HI-pt.BHT_ADDR_LO+1)'(j)) begin
-         bht_bank0_rd_data_f[1:0] = bht_bank_rd_data_out[0][j];
-         bht_bank1_rd_data_f[1:0] = bht_bank_rd_data_out[1][j];
-       end
-       if (bht_rd_addr_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] == (pt.BHT_ADDR_HI-pt.BHT_ADDR_LO+1)'(j)) begin
-         bht_bank0_rd_data_p1_f[1:0] = bht_bank_rd_data_out[0][j];
-       end
-      end
-    end // block: BHT_rd_mux
-
-
-function [1:0] countones;
-      input [1:0] valid;
-
-      begin
-
-countones[1:0] = {2'b0, valid[1]} +
-                 {2'b0, valid[0]};
-      end
-   endfunction
-endmodule // eb1_ifu_bp_ctl
-
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_compress_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_ifu_compress_ctl.sv
deleted file mode 100644
index a55e30f..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_compress_ctl.sv
+++ /dev/null
@@ -1,383 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-// purpose of this file is to convert 16b RISCV compressed instruction into 32b equivalent
-
-module eb1_ifu_compress_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input  logic [15:0] din,        // 16-bit   compressed instruction
-   output logic [31:0] dout        // 32-bit uncompressed instruction
-   );
-
-
-   logic               legal;
-
-   logic [15:0]  i;
-
-   logic [31:0]  o,l1,l2,l3;
-
-
-   assign i[15:0] = din[15:0];
-
-
-   logic [4:0]   rs2d,rdd,rdpd,rs2pd;
-
-   logic rdrd;
-   logic rdrs1;
-   logic rs2rs2;
-   logic rdprd;
-   logic rdprs1;
-   logic rs2prs2;
-   logic rs2prd;
-   logic uimm9_2;
-   logic ulwimm6_2;
-   logic ulwspimm7_2;
-   logic rdeq2;
-   logic rdeq1;
-   logic rs1eq2;
-   logic sbroffset8_1;
-   logic simm9_4;
-   logic simm5_0;
-   logic sjaloffset11_1;
-   logic sluimm17_12;
-   logic uimm5_0;
-   logic uswimm6_2;
-   logic uswspimm7_2;
-
-
-
-   // form the opcodes
-
-   // formats
-   //
-   // c.add rd 11:7 rs2  6:2
-   // c.and rdp 9:7 rs2p 4:2
-   //
-   // add rs2 24:20 rs1 19:15  rd 11:7
-
-   assign rs2d[4:0] = i[6:2];
-
-   assign rdd[4:0] = i[11:7];
-
-   assign rdpd[4:0] = {2'b01, i[9:7]};
-
-   assign rs2pd[4:0] = {2'b01, i[4:2]};
-
-
-
-   // merge in rd, rs1, rs2
-
-
-   // rd
-   assign l1[6:0] = o[6:0];
-
-   assign l1[11:7] = o[11:7] |
-                     ({5{rdrd}} & rdd[4:0]) |
-                     ({5{rdprd}} & rdpd[4:0]) |
-                     ({5{rs2prd}} & rs2pd[4:0]) |
-                     ({5{rdeq1}} & 5'd1) |
-                     ({5{rdeq2}} & 5'd2);
-
-
-   // rs1
-   assign l1[14:12] = o[14:12];
-   assign l1[19:15] = o[19:15] |
-                      ({5{rdrs1}} & rdd[4:0]) |
-                      ({5{rdprs1}} & rdpd[4:0]) |
-                      ({5{rs1eq2}} & 5'd2);
-
-
-   // rs2
-   assign l1[24:20] = o[24:20] |
-                      ({5{rs2rs2}} & rs2d[4:0]) |
-                      ({5{rs2prs2}} & rs2pd[4:0]);
-
-   assign l1[31:25] = o[31:25];
-
-   logic [5:0] simm5d;
-   logic [9:2] uimm9d;
-
-   logic [9:4] simm9d;
-   logic [6:2] ulwimm6d;
-   logic [7:2] ulwspimm7d;
-   logic [5:0] uimm5d;
-   logic [20:1] sjald;
-
-   logic [31:12] sluimmd;
-
-   // merge in immediates + jal offset
-
-   assign simm5d[5:0] = { i[12], i[6:2] };
-
-   assign uimm9d[9:2] = { i[10:7], i[12:11], i[5], i[6] };
-
-   assign simm9d[9:4] = { i[12], i[4:3], i[5], i[2], i[6] };
-
-   assign ulwimm6d[6:2] = { i[5], i[12:10], i[6] };
-
-   assign ulwspimm7d[7:2] = { i[3:2], i[12], i[6:4] };
-
-   assign uimm5d[5:0] = { i[12], i[6:2] };
-
-   assign sjald[11:1] = { i[12], i[8], i[10:9], i[6], i[7], i[2], i[11], i[5:4], i[3] };
-
-   assign sjald[20:12] =  {9{i[12]}};
-
-
-
-   assign sluimmd[31:12] = { {15{i[12]}}, i[6:2] };
-
-
-   assign l2[31:20] = ( l1[31:20] ) |
-                      ( {12{simm5_0}}   &  {{7{simm5d[5]}},simm5d[4:0]} ) |
-                      ( {12{uimm9_2}}   &  {2'b0,uimm9d[9:2],2'b0} ) |
-                      ( {12{simm9_4}}   &   {{3{simm9d[9]}},simm9d[8:4],4'b0} ) |
-                      ( {12{ulwimm6_2}} &   {5'b0,ulwimm6d[6:2],2'b0} ) |
-                      ( {12{ulwspimm7_2}}  & {4'b0,ulwspimm7d[7:2],2'b0} ) |
-                      ( {12{uimm5_0}}      &    {6'b0,uimm5d[5:0]} ) |
-                      ( {12{sjaloffset11_1}} &  {sjald[20],sjald[10:1],sjald[11]} ) |
-                      ( {12{sluimm17_12}}    &  sluimmd[31:20] );
-
-
-
-   assign l2[19:12] = ( l1[19:12] ) |
-                      ( {8{sjaloffset11_1}} & sjald[19:12] ) |
-                      ( {8{sluimm17_12}} & sluimmd[19:12] );
-
-
-   assign l2[11:0] = l1[11:0];
-
-
-   // merge in branch offset and store immediates
-
-   logic [8:1]   sbr8d;
-   logic [6:2]   uswimm6d;
-   logic [7:2]   uswspimm7d;
-
-
-   assign sbr8d[8:1] =   { i[12], i[6], i[5], i[2], i[11], i[10], i[4], i[3] };
-
-   assign uswimm6d[6:2] = { i[5], i[12:10], i[6] };
-
-   assign uswspimm7d[7:2] = { i[8:7], i[12:9] };
-
-   assign l3[31:25] = ( l2[31:25] ) |
-                      ( {7{sbroffset8_1}} & { {4{sbr8d[8]}},sbr8d[7:5] } ) |
-                      ( {7{uswimm6_2}}    & { 5'b0, uswimm6d[6:5] } ) |
-                      ( {7{uswspimm7_2}} & { 4'b0, uswspimm7d[7:5] } );
-
-
-   assign l3[24:12] = l2[24:12];
-
-   assign l3[11:7] = ( l2[11:7] ) |
-                     ( {5{sbroffset8_1}} & { sbr8d[4:1], sbr8d[8] } ) |
-                     ( {5{uswimm6_2}} & { uswimm6d[4:2], 2'b0 } ) |
-                     ( {5{uswspimm7_2}} & { uswspimm7d[4:2], 2'b0 } );
-
-   assign l3[6:0] = l2[6:0];
-
-
-   assign dout[31:0] = l3[31:0] & {32{legal}};
-
-
-// file "cdecode" is human readable file that has all of the compressed instruction decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "cdecode" except legal equation:
-
-// 1) coredecode -in cdecode > cdecode.e
-
-// 2) espresso -Dso -oeqntott cdecode.e | addassign > compress_equations
-
-// to generate the legal (16b compressed instruction is legal)  equation below:
-
-// 1) coredecode -in cdecode -legal > clegal.e
-
-// 2) espresso -Dso -oeqntott clegal.e | addassign > clegal_equation
-
-
-
-
-
-// espresso decodes
-assign rdrd = (!i[14]&i[6]&i[1]) | (!i[15]&i[14]&i[11]&i[0]) | (!i[14]&i[5]&i[1]) | (
-    !i[15]&i[14]&i[10]&i[0]) | (!i[14]&i[4]&i[1]) | (!i[15]&i[14]&i[9]
-    &i[0]) | (!i[14]&i[3]&i[1]) | (!i[15]&i[14]&!i[8]&i[0]) | (!i[14]
-    &i[2]&i[1]) | (!i[15]&i[14]&i[7]&i[0]) | (!i[15]&i[1]) | (!i[15]
-    &!i[13]&i[0]);
-
-assign rdrs1 = (!i[14]&i[12]&i[11]&i[1]) | (!i[14]&i[12]&i[10]&i[1]) | (!i[14]
-    &i[12]&i[9]&i[1]) | (!i[14]&i[12]&i[8]&i[1]) | (!i[14]&i[12]&i[7]
-    &i[1]) | (!i[14]&!i[12]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[6]&i[1]) | (!i[14]&i[12]&i[5]&i[1]) | (!i[14]&i[12]&i[4]
-    &i[1]) | (!i[14]&i[12]&i[3]&i[1]) | (!i[14]&i[12]&i[2]&i[1]) | (
-    !i[15]&!i[14]&!i[13]&i[0]) | (!i[15]&!i[14]&i[1]);
-
-assign rs2rs2 = (i[15]&i[6]&i[1]) | (i[15]&i[5]&i[1]) | (i[15]&i[4]&i[1]) | (
-    i[15]&i[3]&i[1]) | (i[15]&i[2]&i[1]) | (i[15]&i[14]&i[1]);
-
-assign rdprd = (i[15]&!i[14]&!i[13]&i[0]);
-
-assign rdprs1 = (i[15]&!i[13]&i[0]) | (i[15]&i[14]&i[0]) | (i[14]&!i[1]&!i[0]);
-
-assign rs2prs2 = (i[15]&!i[14]&!i[13]&i[11]&i[10]&i[0]) | (i[15]&!i[1]&!i[0]);
-
-assign rs2prd = (!i[15]&!i[1]&!i[0]);
-
-assign uimm9_2 = (!i[14]&!i[1]&!i[0]);
-
-assign ulwimm6_2 = (!i[15]&i[14]&!i[1]&!i[0]);
-
-assign ulwspimm7_2 = (!i[15]&i[14]&i[1]);
-
-assign rdeq2 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]);
-
-assign rdeq1 = (!i[14]&i[12]&i[11]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[10]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[9]
-    &!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[8]&!i[6]&!i[5]
-    &!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[7]&!i[6]&!i[5]&!i[4]&!i[3]
-    &!i[2]&i[1]) | (!i[15]&!i[14]&i[13]);
-
-assign rs1eq2 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]) | (i[14]
-    &i[1]) | (!i[14]&!i[1]&!i[0]);
-
-assign sbroffset8_1 = (i[15]&i[14]&i[0]);
-
-assign simm9_4 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]);
-
-assign simm5_0 = (!i[14]&!i[13]&i[11]&!i[10]&i[0]) | (!i[15]&!i[13]&i[0]);
-
-assign sjaloffset11_1 = (!i[14]&i[13]);
-
-assign sluimm17_12 = (!i[15]&i[14]&i[13]&i[7]) | (!i[15]&i[14]&i[13]&!i[8]) | (
-    !i[15]&i[14]&i[13]&i[9]) | (!i[15]&i[14]&i[13]&i[10]) | (!i[15]&i[14]
-    &i[13]&i[11]);
-
-assign uimm5_0 = (i[15]&!i[14]&!i[13]&!i[11]&i[0]) | (!i[15]&!i[14]&i[1]);
-
-assign uswimm6_2 = (i[15]&!i[1]&!i[0]);
-
-assign uswspimm7_2 = (i[15]&i[14]&i[1]);
-
-assign o[31]  = 1'b0;
-
-assign o[30] = (i[15]&!i[14]&!i[13]&i[10]&!i[6]&!i[5]&i[0]) | (i[15]&!i[14]
-    &!i[13]&!i[11]&i[10]&i[0]);
-
-assign o[29]  = 1'b0;
-
-assign o[28]  = 1'b0;
-
-assign o[27]  = 1'b0;
-
-assign o[26]  = 1'b0;
-
-assign o[25]  = 1'b0;
-
-assign o[24]  = 1'b0;
-
-assign o[23]  = 1'b0;
-
-assign o[22]  = 1'b0;
-
-assign o[21]  = 1'b0;
-
-assign o[20] = (!i[14]&i[12]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]
-    &!i[3]&!i[2]&i[1]);
-
-assign o[19]  = 1'b0;
-
-assign o[18]  = 1'b0;
-
-assign o[17]  = 1'b0;
-
-assign o[16]  = 1'b0;
-
-assign o[15]  = 1'b0;
-
-assign o[14] = (i[15]&!i[14]&!i[13]&!i[11]&i[0]) | (i[15]&!i[14]&!i[13]&!i[10]
-    &i[0]) | (i[15]&!i[14]&!i[13]&i[6]&i[0]) | (i[15]&!i[14]&!i[13]&i[5]
-    &i[0]);
-
-assign o[13] = (i[15]&!i[14]&!i[13]&i[11]&!i[10]&i[0]) | (i[15]&!i[14]&!i[13]
-    &i[11]&i[6]&i[0]) | (i[14]&!i[0]);
-
-assign o[12] = (i[15]&!i[14]&!i[13]&i[6]&i[5]&i[0]) | (i[15]&!i[14]&!i[13]&!i[11]
-    &i[0]) | (i[15]&!i[14]&!i[13]&!i[10]&i[0]) | (!i[15]&!i[14]&i[1]) | (
-    i[15]&i[14]&i[13]);
-
-assign o[11]  = 1'b0;
-
-assign o[10]  = 1'b0;
-
-assign o[9]  = 1'b0;
-
-assign o[8]  = 1'b0;
-
-assign o[7]  = 1'b0;
-
-assign o[6] = (i[15]&!i[14]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&!i[0]) | (!i[14]&i[13]) | (
-    i[15]&i[14]&i[0]);
-
-assign o[5] = (i[15]&!i[0]) | (i[15]&i[11]&i[10]) | (i[13]&!i[8]) | (i[13]&i[7]) | (
-    i[13]&i[9]) | (i[13]&i[10]) | (i[13]&i[11]) | (!i[14]&i[13]) | (
-    i[15]&i[14]);
-
-assign o[4] = (!i[14]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[0]) | (!i[15]&!i[14]
-    &!i[0]) | (!i[14]&i[6]&!i[0]) | (!i[15]&i[14]&i[0]) | (!i[14]&i[5]
-    &!i[0]) | (!i[14]&i[4]&!i[0]) | (!i[14]&!i[13]&i[0]) | (!i[14]&i[3]
-    &!i[0]) | (!i[14]&i[2]&!i[0]);
-
-assign o[3] = (!i[14]&i[13]);
-
-assign o[2] = (!i[14]&i[12]&i[11]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[10]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[9]
-    &!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[8]&!i[6]&!i[5]
-    &!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[7]&!i[6]&!i[5]&!i[4]&!i[3]
-    &!i[2]&i[1]) | (i[15]&!i[14]&!i[12]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]
-    &!i[0]) | (!i[15]&i[13]&!i[8]) | (!i[15]&i[13]&i[7]) | (!i[15]&i[13]
-    &i[9]) | (!i[15]&i[13]&i[10]) | (!i[15]&i[13]&i[11]) | (!i[14]&i[13]);
-
-// 32b instruction has lower two bits 2'b11
-
-assign o[1]  = 1'b1;
-
-assign o[0]  = 1'b1;
-
-assign legal = (!i[13]&!i[12]&i[11]&i[1]&!i[0]) | (!i[13]&!i[12]&i[6]&i[1]&!i[0]) | (
-    !i[15]&!i[13]&i[11]&!i[1]) | (!i[13]&!i[12]&i[5]&i[1]&!i[0]) | (
-    !i[13]&!i[12]&i[10]&i[1]&!i[0]) | (!i[15]&!i[13]&i[6]&!i[1]) | (
-    i[15]&!i[12]&!i[1]&i[0]) | (!i[13]&!i[12]&i[9]&i[1]&!i[0]) | (!i[12]
-    &i[6]&!i[1]&i[0]) | (!i[15]&!i[13]&i[5]&!i[1]) | (!i[13]&!i[12]&i[8]
-    &i[1]&!i[0]) | (!i[12]&i[5]&!i[1]&i[0]) | (!i[15]&!i[13]&i[10]&!i[1]) | (
-    !i[13]&!i[12]&i[7]&i[1]&!i[0]) | (i[12]&i[11]&!i[10]&!i[1]&i[0]) | (
-    !i[15]&!i[13]&i[9]&!i[1]) | (!i[13]&!i[12]&i[4]&i[1]&!i[0]) | (i[13]
-    &i[12]&!i[1]&i[0]) | (!i[15]&!i[13]&i[8]&!i[1]) | (!i[13]&!i[12]&i[3]
-    &i[1]&!i[0]) | (i[13]&i[4]&!i[1]&i[0]) | (!i[13]&!i[12]&i[2]&i[1]
-    &!i[0]) | (!i[15]&!i[13]&i[7]&!i[1]) | (i[13]&i[3]&!i[1]&i[0]) | (
-    i[13]&i[2]&!i[1]&i[0]) | (i[14]&!i[13]&!i[1]) | (!i[14]&!i[12]&!i[1]
-    &i[0]) | (i[15]&!i[13]&i[12]&i[1]&!i[0]) | (!i[15]&!i[13]&!i[12]&i[1]
-    &!i[0]) | (!i[15]&!i[13]&i[12]&!i[1]) | (i[14]&!i[13]&!i[0]);
-
-
-
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_ic_mem.sv b/verilog/rtl/BrqRV_EB1/design/eb1_ifu_ic_mem.sv
deleted file mode 100644
index f849bc0..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_ic_mem.sv
+++ /dev/null
@@ -1,1458 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-////////////////////////////////////////////////////
-//   ICACHE DATA & TAG MODULE WRAPPER              //
-/////////////////////////////////////////////////////
-module eb1_ifu_ic_mem
-import eb1_pkg::*;
- #(
-`include "eb1_param.vh"
- )
-  (
-      input logic                                   clk,                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-      input logic                                   active_clk,         // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-      input logic                                   rst_l,              // reset, active low
-      input logic                                   clk_override,       // Override non-functional clock gating
-      input logic                                   dec_tlu_core_ecc_disable,  // Disable ECC checking
-
-      input logic [31:1]                            ic_rw_addr,
-      input logic [pt.ICACHE_NUM_WAYS-1:0]          ic_wr_en  ,         // Which way to write
-      input logic                                   ic_rd_en  ,         // Read enable
-      input logic [pt.ICACHE_INDEX_HI:3]            ic_debug_addr,      // Read/Write addresss to the Icache.
-      input logic                                   ic_debug_rd_en,     // Icache debug rd
-      input logic                                   ic_debug_wr_en,     // Icache debug wr
-      input logic                                   ic_debug_tag_array, // Debug tag array
-      input logic [pt.ICACHE_NUM_WAYS-1:0]          ic_debug_way,       // Debug way. Rd or Wr.
-      input logic [63:0]                            ic_premux_data,     // Premux data to be muxed with each way of the Icache.
-      input logic                                   ic_sel_premux_data, // Select the pre_muxed data
-
-      input  logic [pt.ICACHE_BANKS_WAY-1:0][70:0]  ic_wr_data,         // Data to fill to the Icache. With ECC
-      output logic [63:0]                           ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-      output logic [70:0]                           ic_debug_rd_data ,  // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-      output logic [25:0]                           ictag_debug_rd_data,// Debug icache tag.
-      input logic  [70:0]                           ic_debug_wr_data,   // Debug wr cache.
-
-      output logic [pt.ICACHE_BANKS_WAY-1:0]        ic_eccerr,          // ecc error per bank
-      output logic [pt.ICACHE_BANKS_WAY-1:0]        ic_parerr,          // ecc error per bank
-      input logic [pt.ICACHE_NUM_WAYS-1:0]          ic_tag_valid,       // Valid from the I$ tag valid outside (in flops).
-      input eb1_ic_data_ext_in_pkt_t [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] ic_data_ext_in_pkt,   // this is being driven by the top level for soc testing/etc
-      input eb1_ic_tag_ext_in_pkt_t  [pt.ICACHE_NUM_WAYS-1:0]                          ic_tag_ext_in_pkt,    // this is being driven by the top level for soc testing/etc
-
-      output logic [pt.ICACHE_NUM_WAYS-1:0]         ic_rd_hit,          // ic_rd_hit[3:0]
-      output logic                                  ic_tag_perr,        // Tag Parity error
-      input  logic                                  scan_mode           // Flop scan mode control
-      ) ;
-
-
-
-
-   eb1_IC_TAG #(.pt(pt)) ic_tag_inst
-          (
-           .*,
-           .ic_wr_en     (ic_wr_en[pt.ICACHE_NUM_WAYS-1:0]),
-           .ic_debug_addr(ic_debug_addr[pt.ICACHE_INDEX_HI:3]),
-           .ic_rw_addr   (ic_rw_addr[31:3])
-           ) ;
-
-   eb1_IC_DATA #(.pt(pt)) ic_data_inst
-          (
-           .*,
-           .ic_wr_en     (ic_wr_en[pt.ICACHE_NUM_WAYS-1:0]),
-           .ic_debug_addr(ic_debug_addr[pt.ICACHE_INDEX_HI:3]),
-           .ic_rw_addr   (ic_rw_addr[31:1])
-           ) ;
-
- endmodule
-
-
-/////////////////////////////////////////////////
-////// ICACHE DATA MODULE    ////////////////////
-/////////////////////////////////////////////////
-module eb1_IC_DATA
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-     (
-      input logic clk,
-      input logic active_clk,
-      input logic rst_l,
-      input logic clk_override,
-
-      input logic [31:1]                  ic_rw_addr,
-      input logic [pt.ICACHE_NUM_WAYS-1:0]ic_wr_en,
-      input logic                          ic_rd_en,           // Read enable
-
-      input  logic [pt.ICACHE_BANKS_WAY-1:0][70:0]    ic_wr_data,         // Data to fill to the Icache. With ECC
-      output logic [63:0]                             ic_rd_data ,                                 // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-      input  logic [70:0]                             ic_debug_wr_data,   // Debug wr cache.
-      output logic [70:0]                             ic_debug_rd_data ,  // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-      output logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-      output logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    // ecc error per bank
-      input logic [pt.ICACHE_INDEX_HI:3]     ic_debug_addr,     // Read/Write addresss to the Icache.
-      input logic                            ic_debug_rd_en,      // Icache debug rd
-      input logic                            ic_debug_wr_en,      // Icache debug wr
-      input logic                            ic_debug_tag_array,  // Debug tag array
-      input logic [pt.ICACHE_NUM_WAYS-1:0]   ic_debug_way,        // Debug way. Rd or Wr.
-      input logic [63:0]                     ic_premux_data,      // Premux data to be muxed with each way of the Icache.
-      input logic                            ic_sel_premux_data,  // Select the pre_muxed data
-
-      input logic [pt.ICACHE_NUM_WAYS-1:0]ic_rd_hit,
-      input eb1_ic_data_ext_in_pkt_t  [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] ic_data_ext_in_pkt,   // this is being driven by the top level for soc testing/etc
-      input  logic                         scan_mode
-
-      ) ;
-
-   logic [pt.ICACHE_TAG_INDEX_LO-1:1]                                             ic_rw_addr_ff;
-   logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_WAYS-1:0]                        ic_b_sb_wren;    //bank x ways
-   logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_WAYS-1:0]                        ic_b_sb_rden;    //bank x ways
-
-
-   logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_rden;       //bank
-   logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_rden_ff;    //bank
-   logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_debug_sel_sb;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][70:0]                  wb_dout ;       //  ways x bank
-   logic [pt.ICACHE_BANKS_WAY-1:0][70:0]                                          ic_sb_wr_data, ic_bank_wr_data, wb_dout_ecc_bank;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [141:0]                                         wb_dout_way_pre;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [63:0]                                          wb_dout_way, wb_dout_way_with_premux;
-   logic [141:0]                                                                  wb_dout_ecc;
-
-   logic [pt.ICACHE_BANKS_WAY-1:0]                                                bank_check_en;
-
-   logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_WAYS-1:0]                        ic_bank_way_clken;
-   logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_bank_way_clken_final;
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                        ic_bank_way_clken_final_up;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                 ic_debug_rd_way_en;    // debug wr_way
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                 ic_debug_rd_way_en_ff; // debug wr_way
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                 ic_debug_wr_way_en;    // debug wr_way
-   logic [pt.ICACHE_INDEX_HI:1]                                                   ic_rw_addr_q;
-
-   logic [pt.ICACHE_BANKS_WAY-1:0]       [pt.ICACHE_INDEX_HI : pt.ICACHE_DATA_INDEX_LO] ic_rw_addr_bank_q;
-
-   logic [pt.ICACHE_TAG_LO-1 : pt.ICACHE_DATA_INDEX_LO]                           ic_rw_addr_q_inc;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                 ic_rd_hit_q;
-
-
-
-      logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_sram_en;
-      logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_read_en;
-      logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_write_en;
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0] [31 : pt.ICACHE_DATA_INDEX_LO]  wb_index_hold;
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 write_bypass_en;     //bank
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 write_bypass_en_ff;  //bank
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 index_valid;  //bank
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_clear_en;
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_addr_match;
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_addr_match_index_only;
-
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_sram_en_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_read_en_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_write_en_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0] [31 : pt.ICACHE_DATA_INDEX_LO]  wb_index_hold_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 write_bypass_en_up;     //bank
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 write_bypass_en_ff_up;  //bank
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 index_valid_up;  //bank
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_clear_en_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_addr_match_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_addr_match_index_only_up;
-
-
-   logic [pt.ICACHE_BANKS_WAY-1:0]                 [31 : pt.ICACHE_DATA_INDEX_LO] ic_b_rw_addr;
-   logic [pt.ICACHE_BANKS_WAY-1:0]                 [31 : pt.ICACHE_DATA_INDEX_LO] ic_b_rw_addr_index_only;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                 [31 : pt.ICACHE_DATA_INDEX_LO] ic_b_rw_addr_up;
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                 [31 : pt.ICACHE_DATA_INDEX_LO] ic_b_rw_addr_index_only_up;
-
-
-
-   logic                                                                          ic_rd_en_with_debug;
-   logic                                                                          ic_rw_addr_wrap, ic_cacheline_wrap_ff;
-   logic                                                                          ic_debug_rd_en_ff;
-
-
-//-----------------------------------------------------------
-// ----------- Logic section starts here --------------------
-//-----------------------------------------------------------
-   assign  ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0] =  {pt.ICACHE_NUM_WAYS{ic_debug_rd_en & ~ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-   assign  ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0] =  {pt.ICACHE_NUM_WAYS{ic_debug_wr_en & ~ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-
-   logic end_of_cache_line;
-   assign end_of_cache_line = (pt.ICACHE_LN_SZ==7'h40) ? (&ic_rw_addr_q[5:4]) : ic_rw_addr_q[4];
-   always_comb begin : clkens
-      ic_bank_way_clken  = '0;
-
-      for ( int i=0; i<pt.ICACHE_BANKS_WAY; i++) begin: wr_ens
-       ic_b_sb_wren[i]        =  ic_wr_en[pt.ICACHE_NUM_WAYS-1:0]  |
-                                       (ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0] & {pt.ICACHE_NUM_WAYS{ic_debug_addr[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == i}}) ;
-       ic_debug_sel_sb[i]     = (ic_debug_addr[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == i );
-       ic_sb_wr_data[i]       = (ic_debug_sel_sb[i] & ic_debug_wr_en) ? ic_debug_wr_data : ic_bank_wr_data[i] ;
-       ic_b_rden[i]           =  ic_rd_en_with_debug & ( ( ~ic_rw_addr_q[pt.ICACHE_BANK_HI] & (i==0)) |
-                                                        (( ic_rw_addr_q[pt.ICACHE_BANK_HI] & ic_rw_addr_q[2:1] == 2'b11) & (i==0) & ~end_of_cache_line) |
-                                                         (  ic_rw_addr_q[pt.ICACHE_BANK_HI] & (i==1)) |
-                                                         ((~ic_rw_addr_q[pt.ICACHE_BANK_HI] & ic_rw_addr_q[2:1] == 2'b11) & (i==1)) ) ;
-
-
-
-       ic_b_sb_rden[i]        =  {pt.ICACHE_NUM_WAYS{ic_b_rden[i]}}   ;
-
-       for ( int j=0; j<pt.ICACHE_NUM_WAYS; j++) begin: way_clkens
-         ic_bank_way_clken[i][j] |= ic_b_sb_rden[i][j] | clk_override | ic_b_sb_wren[i][j];
-       end
-     end // block: wr_ens
-   end // block: clkens
-
-// bank read enables
-  assign ic_rd_en_with_debug                          = (ic_rd_en   | ic_debug_rd_en ) & ~(|ic_wr_en);
-  assign ic_rw_addr_q[pt.ICACHE_INDEX_HI:1] = (ic_debug_rd_en | ic_debug_wr_en) ?
-                                              {ic_debug_addr[pt.ICACHE_INDEX_HI:3],2'b0} :
-                                              ic_rw_addr[pt.ICACHE_INDEX_HI:1] ;
-
-   assign ic_rw_addr_q_inc[pt.ICACHE_TAG_LO-1:pt.ICACHE_DATA_INDEX_LO] = ic_rw_addr_q[pt.ICACHE_TAG_LO-1 : pt.ICACHE_DATA_INDEX_LO] + 1 ;
-   assign ic_rw_addr_wrap                                        = ic_rw_addr_q[pt.ICACHE_BANK_HI] & (ic_rw_addr_q[2:1] == 2'b11) & ic_rd_en_with_debug & ~(|ic_wr_en[pt.ICACHE_NUM_WAYS-1:0]);
-   assign ic_cacheline_wrap_ff                                   = ic_rw_addr_ff[pt.ICACHE_TAG_INDEX_LO-1:pt.ICACHE_BANK_LO] == {(pt.ICACHE_TAG_INDEX_LO - pt.ICACHE_BANK_LO){1'b1}};
-
-
-   assign ic_rw_addr_bank_q[0] = ~ic_rw_addr_wrap ? ic_rw_addr_q[pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO] : {ic_rw_addr_q[pt.ICACHE_INDEX_HI: pt.ICACHE_TAG_INDEX_LO] , ic_rw_addr_q_inc[pt.ICACHE_TAG_INDEX_LO-1: pt.ICACHE_DATA_INDEX_LO] } ;
-   assign ic_rw_addr_bank_q[1] = ic_rw_addr_q[pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO];
-
-
-   rvdffie #(.WIDTH(int'(pt.ICACHE_TAG_INDEX_LO+pt.ICACHE_BANKS_WAY+pt.ICACHE_NUM_WAYS)),.OVERRIDE(1)) miscff
-            (.*,
-             .din({ ic_b_rden[pt.ICACHE_BANKS_WAY-1:0],   ic_rw_addr_q[pt.ICACHE_TAG_INDEX_LO-1:1], ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0],   ic_debug_rd_en}),
-             .dout({ic_b_rden_ff[pt.ICACHE_BANKS_WAY-1:0],ic_rw_addr_ff[pt.ICACHE_TAG_INDEX_LO-1:1],ic_debug_rd_way_en_ff[pt.ICACHE_NUM_WAYS-1:0],ic_debug_rd_en_ff})
-             );
-
- if (pt.ICACHE_WAYPACK == 0 ) begin : PACKED_0
-
-
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS_WIDTH-1:0] wrptr_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS_WIDTH-1:0] wrptr_in_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]       sel_bypass_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]       sel_bypass_ff_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][(71*pt.ICACHE_NUM_WAYS)-1:0]    sel_bypass_data_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                                 any_bypass_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                                 any_addr_match_up;
-
-`define eb1_IC_DATA_SRAM(depth,width)                                                                               \
-           ram_``depth``x``width ic_bank_sb_way_data (                                                               \
-                                     .ME(ic_bank_way_clken_final_up[i][k]),                                          \
-                                     .WE (ic_b_sb_wren[k][i]),                                                       \
-                                     .D  (ic_sb_wr_data[k][``width-1:0]),                                            \
-                                     .ADR(ic_rw_addr_bank_q[k][pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO]),         \
-                                     .Q  (wb_dout_pre_up[i][k]),                                                     \
-                                     .CLK (clk),                                                                     \
-                                     .ROP ( ),                                                                       \
-                                     .TEST1(ic_data_ext_in_pkt[i][k].TEST1),                                         \
-                                     .RME(ic_data_ext_in_pkt[i][k].RME),                                             \
-                                     .RM(ic_data_ext_in_pkt[i][k].RM),                                               \
-                                                                                                                     \
-                                     .LS(ic_data_ext_in_pkt[i][k].LS),                                               \
-                                     .DS(ic_data_ext_in_pkt[i][k].DS),                                               \
-                                     .SD(ic_data_ext_in_pkt[i][k].SD),                                               \
-                                                                                                                     \
-                                     .TEST_RNM(ic_data_ext_in_pkt[i][k].TEST_RNM),                                   \
-                                     .BC1(ic_data_ext_in_pkt[i][k].BC1),                                             \
-                                     .BC2(ic_data_ext_in_pkt[i][k].BC2)                                              \
-                                    );  \
-if (pt.ICACHE_BYPASS_ENABLE == 1) begin \
-                 assign wrptr_in_up[i][k] = (wrptr_up[i][k] == (pt.ICACHE_NUM_BYPASS-1)) ? '0 : (wrptr_up[i][k] + 1'd1);                                    \
-                 rvdffs  #(pt.ICACHE_NUM_BYPASS_WIDTH)  wrptr_ff(.*, .clk(active_clk),  .en(|write_bypass_en_up[i][k]), .din (wrptr_in_up[i][k]), .dout(wrptr_up[i][k])) ;     \
-                 assign ic_b_sram_en_up[i][k]              = ic_bank_way_clken[k][i];                             \
-                 assign ic_b_read_en_up[i][k]              =  ic_b_sram_en_up[i][k] &   ic_b_sb_rden[k][i];       \
-                 assign ic_b_write_en_up[i][k]             =  ic_b_sram_en_up[i][k] &   ic_b_sb_wren[k][i];       \
-                 assign ic_bank_way_clken_final_up[i][k]   =  ic_b_sram_en_up[i][k] &    ~(|sel_bypass_up[i][k]); \
-                 assign ic_b_rw_addr_up[i][k] = {ic_rw_addr[31:pt.ICACHE_INDEX_HI+1],ic_rw_addr_bank_q[k]};       \
-                 assign ic_b_rw_addr_index_only_up[i][k] = ic_rw_addr_bank_q[k];                                  \
-                 always_comb begin                                                                                \
-                    any_addr_match_up[i][k] = '0;                                                                 \
-                    for (int l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin                                              \
-                       any_addr_match_up[i][k] |= ic_b_addr_match_up[i][k][l];                                    \
-                    end                                                                                           \
-                 end                                                                                              \
-                // it is an error to ever have 2 entries with the same index and both valid                       \
-                for (genvar l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin: BYPASS                                       \
-                   // full match up to bit 31                                                                     \
-                   assign ic_b_addr_match_up[i][k][l] = (wb_index_hold_up[i][k][l] ==  ic_b_rw_addr_up[i][k]) & index_valid_up[i][k][l];            \
-                   assign ic_b_addr_match_index_only_up[i][k][l] = (wb_index_hold_up[i][k][l][pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO] ==  ic_b_rw_addr_index_only_up[i][k]) & index_valid_up[i][k][l];            \
-                                                                                                                                                    \
-                   assign ic_b_clear_en_up[i][k][l]   = ic_b_write_en_up[i][k] &   ic_b_addr_match_index_only_up[i][k][l];                                     \
-                                                                                                                                                    \
-                   assign sel_bypass_up[i][k][l]      = ic_b_read_en_up[i][k]  &   ic_b_addr_match_up[i][k][l] ;                                    \
-                                                                                                                                                    \
-                   assign write_bypass_en_up[i][k][l] = ic_b_read_en_up[i][k]  &  ~any_addr_match_up[i][k] & (wrptr_up[i][k] == l);                 \
-                                                                                                                                                    \
-                   rvdff  #(1)  write_bypass_ff (.*, .clk(active_clk),                                                                 .din(write_bypass_en_up[i][k][l]), .dout(write_bypass_en_ff_up[i][k][l])) ; \
-                   rvdffs #(1)  index_val_ff    (.*, .clk(active_clk), .en(write_bypass_en_up[i][k][l] | ic_b_clear_en_up[i][k][l]),   .din(~ic_b_clear_en_up[i][k][l]),  .dout(index_valid_up[i][k][l])) ;       \
-                   rvdff  #(1)  sel_hold_ff     (.*, .clk(active_clk),                                                                 .din(sel_bypass_up[i][k][l]),      .dout(sel_bypass_ff_up[i][k][l])) ;     \
-                   rvdffe #((31-pt.ICACHE_DATA_INDEX_LO+1)) ic_addr_index    (.*, .en(write_bypass_en_up[i][k][l]),    .din (ic_b_rw_addr_up[i][k]), .dout(wb_index_hold_up[i][k][l]));         \
-                   rvdffe #(``width)                             rd_data_hold_ff  (.*, .en(write_bypass_en_ff_up[i][k][l]), .din (wb_dout_pre_up[i][k]),  .dout(wb_dout_hold_up[i][k][l]));     \
-                end                                                                                                                       \
-                always_comb begin                                                                                                         \
-                 any_bypass_up[i][k] = '0;                                                                                                \
-                 sel_bypass_data_up[i][k] = '0;                                                                                           \
-                 for (int l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin                                                                         \
-                    any_bypass_up[i][k]      |=  sel_bypass_ff_up[i][k][l];                                                               \
-                    sel_bypass_data_up[i][k] |= (sel_bypass_ff_up[i][k][l]) ? wb_dout_hold_up[i][k][l] : '0;                              \
-                 end                                                                                                                      \
-                 wb_dout[i][k]   =   any_bypass_up[i][k] ?  sel_bypass_data_up[i][k] :  wb_dout_pre_up[i][k] ;                            \
-                 end                                                                                                                      \
-             end                                                                                                                          \
-             else begin                                                                                                                   \
-                 assign wb_dout[i][k]                      =   wb_dout_pre_up[i][k] ;                                                     \
-                 assign ic_bank_way_clken_final_up[i][k]   =  ic_bank_way_clken[i][k];                                                    \
-             end
-
-
-   for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: WAYS
-      for (genvar k=0; k<pt.ICACHE_BANKS_WAY; k++) begin: BANKS_WAY   // 16B subbank
-      if (pt.ICACHE_ECC) begin : ECC1
-        logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] [71-1:0]        wb_dout_pre_up;           // data and its bit enables
-        logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] [pt.ICACHE_NUM_BYPASS-1:0] [71-1:0]  wb_dout_hold_up;
-
-        if ($clog2(pt.ICACHE_DATA_DEPTH) == 13 )   begin : size_8192
-           `eb1_IC_DATA_SRAM(8192,71)
-        end
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 12 )   begin : size_4096
-           `eb1_IC_DATA_SRAM(4096,71)
-        end
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 11 ) begin : size_2048
-           `eb1_IC_DATA_SRAM(2048,71)
-        end
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 10 ) begin : size_1024
-           `eb1_IC_DATA_SRAM(1024,71)
-        end
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 9 ) begin : size_512
-           `eb1_IC_DATA_SRAM(512,71)
-        end
-         else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 8 ) begin : size_256
-           `eb1_IC_DATA_SRAM(256,71)
-         end
-         else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 7 ) begin : size_128
-           `eb1_IC_DATA_SRAM(128,71)
-         end
-         else  begin : size_64
-           `eb1_IC_DATA_SRAM(64,71)
-         end
-      end // if (pt.ICACHE_ECC)
-
-     else  begin  : ECC0
-        logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] [68-1:0]        wb_dout_pre_up;           // data and its bit enables
-        logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] [pt.ICACHE_NUM_BYPASS-1:0] [68-1:0]  wb_dout_hold_up;
-        if ($clog2(pt.ICACHE_DATA_DEPTH) == 13 )   begin : size_8192
-           `eb1_IC_DATA_SRAM(8192,68)
-        end
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 12 )   begin : size_4096
-           `eb1_IC_DATA_SRAM(4096,68)
-        end
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 11 ) begin : size_2048
-           `eb1_IC_DATA_SRAM(2048,68)
-        end
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 10 ) begin : size_1024
-           `eb1_IC_DATA_SRAM(1024,68)
-        end
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 9 ) begin : size_512
-           `eb1_IC_DATA_SRAM(512,68)
-        end
-         else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 8 ) begin : size_256
-           `eb1_IC_DATA_SRAM(256,68)
-         end
-         else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 7 ) begin : size_128
-           `eb1_IC_DATA_SRAM(128,68)
-         end
-         else  begin : size_64
-           `eb1_IC_DATA_SRAM(64,68)
-         end
-      end // else: !if(pt.ICACHE_ECC)
-      end // block: BANKS_WAY
-   end // block: WAYS
-
- end // block: PACKED_0
-
- // WAY PACKED
- else begin : PACKED_1
-
-    logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS_WIDTH-1:0] wrptr;
-    logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS_WIDTH-1:0] wrptr_in;
-    logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                       sel_bypass;
-    logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                       sel_bypass_ff;
-
-
-    logic [pt.ICACHE_BANKS_WAY-1:0][(71*pt.ICACHE_NUM_WAYS)-1:0]  sel_bypass_data;
-    logic [pt.ICACHE_BANKS_WAY-1:0]                               any_bypass;
-    logic [pt.ICACHE_BANKS_WAY-1:0]                               any_addr_match;
-
-
-// SRAM macros
-
-`define eb1_PACKED_IC_DATA_SRAM(depth,width,waywidth)                                                                                                 \
-            ram_be_``depth``x``width  ic_bank_sb_way_data (                                                                                           \
-                            .CLK   (clk),                                                                                                             \
-                            .WE    (|ic_b_sb_wren[k]),                                                    // OR of all the ways in the bank           \
-                            .WEM   (ic_b_sb_bit_en_vec[k]),                                               // 284 bits of bit enables                  \
-                            .D     ({pt.ICACHE_NUM_WAYS{ic_sb_wr_data[k][``waywidth-1:0]}}),                                                          \
-                            .ADR   (ic_rw_addr_bank_q[k][pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO]),                                                \
-                            .Q     (wb_packeddout_pre[k]),                                                                                            \
-                            .ME    (|ic_bank_way_clken_final[k]),                                                                                     \
-                            .ROP   ( ),                                                                                                               \
-                            .TEST1  (ic_data_ext_in_pkt[0][k].TEST1),                                                                                 \
-                            .RME   (ic_data_ext_in_pkt[0][k].RME),                                                                                    \
-                            .RM    (ic_data_ext_in_pkt[0][k].RM),                                                                                     \
-                                                                                                                                                      \
-                            .LS    (ic_data_ext_in_pkt[0][k].LS),                                                                                     \
-                            .DS    (ic_data_ext_in_pkt[0][k].DS),                                                                                     \
-                            .SD    (ic_data_ext_in_pkt[0][k].SD),                                                                                     \
-                                                                                                                                                      \
-                            .TEST_RNM (ic_data_ext_in_pkt[0][k].TEST_RNM),                                                                            \
-                            .BC1      (ic_data_ext_in_pkt[0][k].BC1),                                                                                 \
-                            .BC2      (ic_data_ext_in_pkt[0][k].BC2)                                                                                  \
-                           );                                                                                                                         \
-                                                                                                                                                      \
-              if (pt.ICACHE_BYPASS_ENABLE == 1) begin                                                                                                                                                 \
-                                                                                                                                                                                                      \
-                 assign wrptr_in[k] = (wrptr[k] == (pt.ICACHE_NUM_BYPASS-1)) ? '0 : (wrptr[k] + 1'd1);                                                                                                \
-                                                                                                                                                                                                      \
-                 rvdffs  #(pt.ICACHE_NUM_BYPASS_WIDTH)  wrptr_ff(.*, .clk(active_clk), .en(|write_bypass_en[k]), .din (wrptr_in[k]), .dout(wrptr[k])) ;                                                                       \
-                                                                                                                                                                                                      \
-                 assign ic_b_sram_en[k]              = |ic_bank_way_clken[k];                                                                                                                         \
-                                                                                                                                                                                                      \
-                                                                                                                                                                                                      \
-                 assign ic_b_read_en[k]              =  ic_b_sram_en[k]  &  (|ic_b_sb_rden[k]) ;                                                                                                              \
-                 assign ic_b_write_en[k]             =  ic_b_sram_en[k] &   (|ic_b_sb_wren[k]);                                                                                                       \
-                 assign ic_bank_way_clken_final[k]   =  ic_b_sram_en[k] &    ~(|sel_bypass[k]);                                                                                                       \
-                                                                                                                                                                                                      \
-                 assign ic_b_rw_addr[k] = {ic_rw_addr[31:pt.ICACHE_INDEX_HI+1],ic_rw_addr_bank_q[k]};                                                                                                 \
-                 assign ic_b_rw_addr_index_only[k] = ic_rw_addr_bank_q[k];                                                                                                    \
-                                                                                                                                                                                                      \
-                 always_comb begin                                                                                                                                                                    \
-                    any_addr_match[k] = '0;                                                                                                                                                           \
-                                                                                                                                                                                                      \
-                    for (int l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin                                                                                                                                  \
-                       any_addr_match[k] |= ic_b_addr_match[k][l];                                                                                                                                    \
-                    end                                                                                                                                                                               \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                // it is an error to ever have 2 entries with the same index and both valid                                                                                                           \
-                for (genvar l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin: BYPASS                                                                                                                           \
-                                                                                                                                                                                                      \
-                   // full match up to bit 31                                                                                                                                                         \
-                   assign ic_b_addr_match[k][l] = (wb_index_hold[k][l] ==  ic_b_rw_addr[k]) & index_valid[k][l];                                                                                      \
-                   assign ic_b_addr_match_index_only[k][l] = (wb_index_hold[k][l][pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO] ==  ic_b_rw_addr_index_only[k]) & index_valid[k][l];                    \
-                                                                                                                                                                                                      \
-                   assign ic_b_clear_en[k][l]   = ic_b_write_en[k] &   ic_b_addr_match_index_only[k][l];                                                                                                              \
-                                                                                                                                                                                                      \
-                   assign sel_bypass[k][l]      = ic_b_read_en[k]  &   ic_b_addr_match[k][l] ;                                                                                                        \
-                                                                                                                                                                                                      \
-                   assign write_bypass_en[k][l] = ic_b_read_en[k]  &  ~any_addr_match[k] & (wrptr[k] == l);                                                                                           \
-                                                                                                                                                                                                      \
-                   rvdff  #(1)  write_bypass_ff (.*, .clk(active_clk),                                                     .din(write_bypass_en[k][l]), .dout(write_bypass_en_ff[k][l])) ;                            \
-                   rvdffs #(1)  index_val_ff    (.*, .clk(active_clk), .en(write_bypass_en[k][l] | ic_b_clear_en[k][l]),   .din(~ic_b_clear_en[k][l]),  .dout(index_valid[k][l])) ;                                   \
-                   rvdff  #(1)  sel_hold_ff     (.*, .clk(active_clk),                                                     .din(sel_bypass[k][l]),      .dout(sel_bypass_ff[k][l])) ;                                 \
-                                                                                                                                                                                                      \
-                   rvdffe #((31-pt.ICACHE_DATA_INDEX_LO+1)) ic_addr_index    (.*, .en(write_bypass_en[k][l]),    .din (ic_b_rw_addr[k]),      .dout(wb_index_hold[k][l]));                            \
-                   rvdffe #((``waywidth*pt.ICACHE_NUM_WAYS))        rd_data_hold_ff  (.*, .en(write_bypass_en_ff[k][l]), .din (wb_packeddout_pre[k]), .dout(wb_packeddout_hold[k][l]));                       \
-                                                                                                                                                                                                      \
-                end // block: BYPASS                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                always_comb begin                                                                                                                                                                     \
-                 any_bypass[k] = '0;                                                                                                                                                                  \
-                 sel_bypass_data[k] = '0;                                                                                                                                                             \
-                                                                                                                                                                                                      \
-                 for (int l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin                                                                                                                                     \
-                    any_bypass[k]      |=  sel_bypass_ff[k][l];                                                                                                                                       \
-                      sel_bypass_data[k] |= (sel_bypass_ff[k][l]) ? wb_packeddout_hold[k][l] : '0;                                                                                                    \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                   wb_packeddout[k]   =   any_bypass[k] ?  sel_bypass_data[k] :  wb_packeddout_pre[k] ;                                                                                               \
-                end // always_comb begin                                                                                                                                                              \
-                                                                                                                                                                                                      \
-             end // if (pt.ICACHE_BYPASS_ENABLE == 1)                                                                                                                                                 \
-             else begin                                                                                                                                                                               \
-                 assign wb_packeddout[k]   =   wb_packeddout_pre[k] ;                                                                                                                                 \
-                 assign ic_bank_way_clken_final[k]   =  |ic_bank_way_clken[k] ;                                                                                                                       \
-             end
-
- // generate IC DATA PACKED SRAMS for 2/4 ways
-  for (genvar k=0; k<pt.ICACHE_BANKS_WAY; k++) begin: BANKS_WAY   // 16B subbank
-     if (pt.ICACHE_ECC) begin : ECC1
-        logic [pt.ICACHE_BANKS_WAY-1:0] [(71*pt.ICACHE_NUM_WAYS)-1:0]        wb_packeddout, ic_b_sb_bit_en_vec, wb_packeddout_pre;           // data and its bit enables
-
-        logic [pt.ICACHE_BANKS_WAY-1:0] [pt.ICACHE_NUM_BYPASS-1:0] [(71*pt.ICACHE_NUM_WAYS)-1:0]  wb_packeddout_hold;
-
-        for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: BITEN
-           assign ic_b_sb_bit_en_vec[k][(71*i)+70:71*i] = {71{ic_b_sb_wren[k][i]}};
-        end
-
-        // SRAMS with ECC (single/double detect; no correct)
-        if ($clog2(pt.ICACHE_DATA_DEPTH) == 13 )   begin : size_8192
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(8192,284,71)    // 64b data + 7b ecc
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(8192,142,71)
-           end // block: WAYS
-        end // block: size_8192
-
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 12 )   begin : size_4096
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(4096,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(4096,142,71)
-           end // block: WAYS
-        end // block: size_4096
-
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 11 ) begin : size_2048
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(2048,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(2048,142,71)
-           end // block: WAYS
-        end // block: size_2048
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 10 ) begin : size_1024
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(1024,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(1024,142,71)
-           end // block: WAYS
-        end // block: size_1024
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 9 ) begin : size_512
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(512,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(512,142,71)
-           end // block: WAYS
-        end // block: size_512
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 8 ) begin : size_256
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(256,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(256,142,71)
-           end // block: WAYS
-        end // block: size_256
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 7 ) begin : size_128
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(128,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(128,142,71)
-           end // block: WAYS
-        end // block: size_128
-
-        else  begin : size_64
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(64,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(64,142,71)
-           end // block: WAYS
-        end // block: size_64
-
-
-       for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: WAYS
-          assign wb_dout[i][k][70:0]  = wb_packeddout[k][(71*i)+70:71*i];
-       end : WAYS
-
-       end // if (pt.ICACHE_ECC)
-
-
-     else  begin  : ECC0
-        logic [pt.ICACHE_BANKS_WAY-1:0] [(68*pt.ICACHE_NUM_WAYS)-1:0]        wb_packeddout, ic_b_sb_bit_en_vec, wb_packeddout_pre;           // data and its bit enables
-
-        logic [pt.ICACHE_BANKS_WAY-1:0] [pt.ICACHE_NUM_BYPASS-1:0] [(68*pt.ICACHE_NUM_WAYS)-1:0]  wb_packeddout_hold;
-
-        for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: BITEN
-           assign ic_b_sb_bit_en_vec[k][(68*i)+67:68*i] = {68{ic_b_sb_wren[k][i]}};
-        end
-
-        // SRAMs with parity
-        if ($clog2(pt.ICACHE_DATA_DEPTH) == 13 )   begin : size_8192
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(8192,272,68)    // 64b data + 4b parity
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(8192,136,68)
-           end // block: WAYS
-        end // block: size_8192
-
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 12 )   begin : size_4096
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(4096,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(4096,136,68)
-           end // block: WAYS
-        end // block: size_4096
-
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 11 ) begin : size_2048
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(2048,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(2048,136,68)
-           end // block: WAYS
-        end // block: size_2048
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 10 ) begin : size_1024
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(1024,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(1024,136,68)
-           end // block: WAYS
-        end // block: size_1024
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 9 ) begin : size_512
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(512,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(512,136,68)
-           end // block: WAYS
-        end // block: size_512
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 8 ) begin : size_256
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(256,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(256,136,68)
-           end // block: WAYS
-        end // block: size_256
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 7 ) begin : size_128
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(128,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(128,136,68)
-           end // block: WAYS
-        end // block: size_128
-
-        else  begin : size_64
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(64,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(64,136,68)
-           end // block: WAYS
-        end // block: size_64
-
-       for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: WAYS
-          assign wb_dout[i][k][67:0]  = wb_packeddout[k][(68*i)+67:68*i];
-       end
-     end // block: ECC0
-     end // block: BANKS_WAY
- end // block: PACKED_1
-
-
-   assign ic_rd_hit_q[pt.ICACHE_NUM_WAYS-1:0] = ic_debug_rd_en_ff ? ic_debug_rd_way_en_ff[pt.ICACHE_NUM_WAYS-1:0] : ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0] ;
-
-
- if ( pt.ICACHE_ECC ) begin : ECC1_MUX
-
-   assign ic_bank_wr_data[1] = ic_wr_data[1][70:0];
-   assign ic_bank_wr_data[0] = ic_wr_data[0][70:0];
-
-    always_comb begin : rd_mux
-      wb_dout_way_pre[pt.ICACHE_NUM_WAYS-1:0] = '0;
-
-      for ( int i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways
-        for ( int j=0; j<pt.ICACHE_BANKS_WAY; j++) begin : banks
-         wb_dout_way_pre[i][70:0]      |=  ({71{(ic_rw_addr_ff[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == (pt.ICACHE_BANK_BITS)'(j))}}   &  wb_dout[i][j]);
-         wb_dout_way_pre[i][141 : 71]  |=  ({71{(ic_rw_addr_ff[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == (pt.ICACHE_BANK_BITS)'(j-1))}} &  wb_dout[i][j]);
-        end
-      end
-    end
-
-    for ( genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways_mux1
-      assign wb_dout_way[i][63:0] = (ic_rw_addr_ff[2:1] == 2'b00) ? wb_dout_way_pre[i][63:0]   :
-                                    (ic_rw_addr_ff[2:1] == 2'b01) ?{wb_dout_way_pre[i][86:71], wb_dout_way_pre[i][63:16]} :
-                                    (ic_rw_addr_ff[2:1] == 2'b10) ?{wb_dout_way_pre[i][102:71],wb_dout_way_pre[i][63:32]} :
-                                                                   {wb_dout_way_pre[i][119:71],wb_dout_way_pre[i][63:48]};
-
-      assign wb_dout_way_with_premux[i][63:0]  =  ic_sel_premux_data ? ic_premux_data[63:0] : wb_dout_way[i][63:0] ;
-   end
-
-   always_comb begin : rd_out
-      ic_debug_rd_data[70:0]     = '0;
-      ic_rd_data[63:0]           = '0;
-      wb_dout_ecc[141:0]         = '0;
-      for ( int i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways_mux2
-         ic_rd_data[63:0]       |= ({64{ic_rd_hit_q[i] | ic_sel_premux_data}}) &  wb_dout_way_with_premux[i][63:0];
-         ic_debug_rd_data[70:0] |= ({71{ic_rd_hit_q[i]}}) & wb_dout_way_pre[i][70:0];
-         wb_dout_ecc[141:0]     |= {142{ic_rd_hit_q[i]}}  & wb_dout_way_pre[i];
-      end
-   end
-
-
- for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_ecc_error
-    assign bank_check_en[i]    = |ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0] & ((i==0) | (~ic_cacheline_wrap_ff & (ic_b_rden_ff[pt.ICACHE_BANKS_WAY-1:0] == {pt.ICACHE_BANKS_WAY{1'b1}})));  // always check the lower address bank, and drop the upper address bank on a CL wrap
-    assign wb_dout_ecc_bank[i] = wb_dout_ecc[(71*i)+70:(71*i)];
-
-   rvecc_decode_64  ecc_decode_64 (
-                           .en               (bank_check_en[i]),
-                           .din              (wb_dout_ecc_bank[i][63 : 0]),                // [134:71],  [63:0]
-                           .ecc_in           (wb_dout_ecc_bank[i][70 : 64]),               // [141:135] [70:64]
-                           .ecc_error        (ic_eccerr[i]));
-
-   // or the sb and db error detects into 1 signal called aligndataperr[i] where i corresponds to 2B position
-  assign  ic_parerr[i]  = '0 ;
-  end // block: ic_ecc_error
-
-end // if ( pt.ICACHE_ECC )
-
-else  begin : ECC0_MUX
-   assign ic_bank_wr_data[1] = ic_wr_data[1][70:0];
-   assign ic_bank_wr_data[0] = ic_wr_data[0][70:0];
-
-   always_comb begin : rd_mux
-      wb_dout_way_pre[pt.ICACHE_NUM_WAYS-1:0] = '0;
-
-   for ( int i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways
-     for ( int j=0; j<pt.ICACHE_BANKS_WAY; j++) begin : banks
-         wb_dout_way_pre[i][67:0]         |=  ({68{(ic_rw_addr_ff[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == (pt.ICACHE_BANK_BITS)'(j))}}   &  wb_dout[i][j][67:0]);
-         wb_dout_way_pre[i][135 : 68]     |=  ({68{(ic_rw_addr_ff[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == (pt.ICACHE_BANK_BITS)'(j-1))}} &  wb_dout[i][j][67:0]);
-      end
-     end
-   end
-   // When we straddle the banks like this - the ECC we capture is not correct ??
-   for ( genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways_mux1
-      assign wb_dout_way[i][63:0] = (ic_rw_addr_ff[2:1] == 2'b00) ? wb_dout_way_pre[i][63:0]   :
-                                    (ic_rw_addr_ff[2:1] == 2'b01) ?{wb_dout_way_pre[i][83:68],  wb_dout_way_pre[i][63:16]} :
-                                    (ic_rw_addr_ff[2:1] == 2'b10) ?{wb_dout_way_pre[i][99:68],  wb_dout_way_pre[i][63:32]} :
-                                                                   {wb_dout_way_pre[i][115:68], wb_dout_way_pre[i][63:48]};
-
-      assign wb_dout_way_with_premux[i][63:0]      =  ic_sel_premux_data ? ic_premux_data[63:0]  : wb_dout_way[i][63:0] ;
-   end
-
-   always_comb begin : rd_out
-      ic_rd_data[63:0]   = '0;
-      ic_debug_rd_data[70:0]   = '0;
-      wb_dout_ecc[135:0] = '0;
-
-      for ( int i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways_mux2
-         ic_rd_data[63:0]   |= ({64{ic_rd_hit_q[i] | ic_sel_premux_data}} &  wb_dout_way_with_premux[i][63:0]);
-         ic_debug_rd_data[70:0] |= ({71{ic_rd_hit_q[i]}}) & {3'b0,wb_dout_way_pre[i][67:0]};
-         wb_dout_ecc[135:0] |= {136{ic_rd_hit_q[i]}}  & wb_dout_way_pre[i][135:0];
-      end
-   end
-
-   assign wb_dout_ecc_bank[0] =  wb_dout_ecc[67:0];
-   assign wb_dout_ecc_bank[1] =  wb_dout_ecc[135:68];
-
-   logic [pt.ICACHE_BANKS_WAY-1:0][3:0] ic_parerr_bank;
-
-  for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_par_error
-    assign bank_check_en[i]    = |ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0] & ((i==0) | (~ic_cacheline_wrap_ff & (ic_b_rden_ff[pt.ICACHE_BANKS_WAY-1:0] == {pt.ICACHE_BANKS_WAY{1'b1}})));  // always check the lower address bank, and drop the upper address bank on a CL wrap
-     for (genvar j=0; j<4; j++)  begin : parity
-      rveven_paritycheck pchk (
-                           .data_in   (wb_dout_ecc_bank[i][16*(j+1)-1: 16*j]),
-                           .parity_in (wb_dout_ecc_bank[i][64+j]),
-                           .parity_err(ic_parerr_bank[i][j] )
-                           );
-        end
-     assign ic_eccerr [i] = '0 ;
-  end
-
-     assign ic_parerr[1] = (|ic_parerr_bank[1][3:0]) & bank_check_en[1];
-     assign ic_parerr[0] = (|ic_parerr_bank[0][3:0]) & bank_check_en[0];
-
-end // else: !if( pt.ICACHE_ECC )
-
-
-endmodule // eb1_IC_DATA
-
-//=============================================================================================================================================================
-///\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ END OF IC DATA MODULE \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
-//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
-//=============================================================================================================================================================
-
-/////////////////////////////////////////////////
-////// ICACHE TAG MODULE     ////////////////////
-/////////////////////////////////////////////////
-module eb1_IC_TAG
-import eb1_pkg::*;
- #(
-`include "eb1_param.vh"
- )
-     (
-      input logic                                                   clk,
-      input logic                                                   active_clk,
-      input logic                                                   rst_l,
-      input logic                                                   clk_override,
-      input logic                                                   dec_tlu_core_ecc_disable,
-
-      input logic [31:3]                                            ic_rw_addr,
-
-      input logic [pt.ICACHE_NUM_WAYS-1:0]                         ic_wr_en,             // way
-      input logic [pt.ICACHE_NUM_WAYS-1:0]                         ic_tag_valid,
-      input logic                                                  ic_rd_en,
-
-      input logic [pt.ICACHE_INDEX_HI:3]                           ic_debug_addr,        // Read/Write addresss to the Icache.
-      input logic                                                  ic_debug_rd_en,       // Icache debug rd
-      input logic                                                  ic_debug_wr_en,       // Icache debug wr
-      input logic                                                  ic_debug_tag_array,   // Debug tag array
-      input logic [pt.ICACHE_NUM_WAYS-1:0]                         ic_debug_way,         // Debug way. Rd or Wr.
-      input eb1_ic_tag_ext_in_pkt_t   [pt.ICACHE_NUM_WAYS-1:0]    ic_tag_ext_in_pkt,
-
-      output logic [25:0]                                          ictag_debug_rd_data,
-      input  logic [70:0]                                          ic_debug_wr_data,     // Debug wr cache.
-
-      output logic [pt.ICACHE_NUM_WAYS-1:0]                        ic_rd_hit,
-      output logic                                                 ic_tag_perr,
-      input  logic                                                 scan_mode
-   ) ;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0] [25:0]                           ic_tag_data_raw;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [25:0]                           ic_tag_data_raw_pre;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [36:pt.ICACHE_TAG_LO]            w_tout;
-   logic [25:0]                                                    ic_tag_wr_data ;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [31:0]                           ic_tag_corrected_data_unc;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [06:0]                           ic_tag_corrected_ecc_unc;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_single_ecc_error;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_double_ecc_error;
-   logic [6:0]                                                     ic_tag_ecc;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_way_perr ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_debug_rd_way_en ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_debug_rd_way_en_ff ;
-
-   logic [pt.ICACHE_INDEX_HI: pt.ICACHE_TAG_INDEX_LO]              ic_rw_addr_q;
-   logic [31:pt.ICACHE_TAG_LO]                                     ic_rw_addr_ff;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_rden_q;          // way
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_wren;          // way
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_wren_q;        // way
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_clken;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_debug_wr_way_en;   // debug wr_way
-   logic                                                           ic_rd_en_ff;
-   logic                                                           ic_tag_parity;
-
-
-   assign  ic_tag_wren [pt.ICACHE_NUM_WAYS-1:0]  = ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] & {pt.ICACHE_NUM_WAYS{(ic_rw_addr[pt.ICACHE_BEAT_ADDR_HI:4] == {pt.ICACHE_BEAT_BITS-1{1'b1}})}} ;
-   assign  ic_tag_clken[pt.ICACHE_NUM_WAYS-1:0]  = {pt.ICACHE_NUM_WAYS{ic_rd_en | clk_override}} | ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] | ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0] | ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0];
-
-   rvdff #(1) rd_en_ff (.*, .clk(active_clk),
-                    .din (ic_rd_en),
-                    .dout(ic_rd_en_ff)) ;
-
-
-   rvdffie #(32-pt.ICACHE_TAG_LO) adr_ff (.*,
-                                          .din ({ic_rw_addr[31:pt.ICACHE_TAG_LO]}),
-                                          .dout({ic_rw_addr_ff[31:pt.ICACHE_TAG_LO]})
-                                          );
-
-   localparam PAD_BITS = 21 - (32 - pt.ICACHE_TAG_LO);  // sizing for a max tag width.
-
-   // tags
-   assign  ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0] =  {pt.ICACHE_NUM_WAYS{ic_debug_rd_en & ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-   assign  ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0] =  {pt.ICACHE_NUM_WAYS{ic_debug_wr_en & ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-
-   assign  ic_tag_wren_q[pt.ICACHE_NUM_WAYS-1:0]  =  ic_tag_wren[pt.ICACHE_NUM_WAYS-1:0]          |
-                                  ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0]   ;
-
-   assign  ic_tag_rden_q[pt.ICACHE_NUM_WAYS-1:0]  =  ({pt.ICACHE_NUM_WAYS{ic_rd_en }}  | ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0] ) &  {pt.ICACHE_NUM_WAYS{~(|ic_wr_en)  & ~ic_debug_wr_en}};
-
-if (pt.ICACHE_TAG_LO == 11) begin: SMALLEST
- if (pt.ICACHE_ECC) begin : ECC1_W
-           rvecc_encode  tag_ecc_encode (
-                                  .din    ({{pt.ICACHE_TAG_LO{1'b0}}, ic_rw_addr[31:pt.ICACHE_TAG_LO]}),
-                                  .ecc_out({ ic_tag_ecc[6:0]}));
-
-   assign  ic_tag_wr_data[25:0] = (ic_debug_wr_en & ic_debug_tag_array) ?
-                                  {ic_debug_wr_data[68:64], ic_debug_wr_data[31:11]} :
-                                  {ic_tag_ecc[4:0], ic_rw_addr[31:pt.ICACHE_TAG_LO]} ;
- end
-
- else begin : ECC0_W
-           rveven_paritygen #(32-pt.ICACHE_TAG_LO) pargen  (.data_in   (ic_rw_addr[31:pt.ICACHE_TAG_LO]),
-                                                 .parity_out(ic_tag_parity));
-
-   assign  ic_tag_wr_data[21:0] = (ic_debug_wr_en & ic_debug_tag_array) ?
-                                  {ic_debug_wr_data[64], ic_debug_wr_data[31:11]} :
-                                  {ic_tag_parity, ic_rw_addr[31:pt.ICACHE_TAG_LO]} ;
- end // else: !if(pt.ICACHE_ECC)
-
-end // block: SMALLEST
-
-
-else begin: OTHERS
-  if(pt.ICACHE_ECC) begin :ECC1_W
-           rvecc_encode  tag_ecc_encode (
-                                  .din    ({{pt.ICACHE_TAG_LO{1'b0}}, ic_rw_addr[31:pt.ICACHE_TAG_LO]}),
-                                  .ecc_out({ ic_tag_ecc[6:0]}));
-
-   assign  ic_tag_wr_data[25:0] = (ic_debug_wr_en & ic_debug_tag_array) ?
-                                  {ic_debug_wr_data[68:64],ic_debug_wr_data[31:11]} :
-                                  {ic_tag_ecc[4:0], {PAD_BITS{1'b0}},ic_rw_addr[31:pt.ICACHE_TAG_LO]} ;
-
-  end
-  else  begin :ECC0_W
-   logic   ic_tag_parity ;
-           rveven_paritygen #(32-pt.ICACHE_TAG_LO) pargen  (.data_in   (ic_rw_addr[31:pt.ICACHE_TAG_LO]),
-                                                 .parity_out(ic_tag_parity));
-   assign  ic_tag_wr_data[21:0] = (ic_debug_wr_en & ic_debug_tag_array) ?
-                                  {ic_debug_wr_data[64], ic_debug_wr_data[31:11]} :
-                                  {ic_tag_parity, {PAD_BITS{1'b0}},ic_rw_addr[31:pt.ICACHE_TAG_LO]} ;
-  end // else: !if(pt.ICACHE_ECC)
-
-end // block: OTHERS
-
-
-    assign ic_rw_addr_q[pt.ICACHE_INDEX_HI: pt.ICACHE_TAG_INDEX_LO] = (ic_debug_rd_en | ic_debug_wr_en) ?
-                                                ic_debug_addr[pt.ICACHE_INDEX_HI: pt.ICACHE_TAG_INDEX_LO] :
-                                                ic_rw_addr[pt.ICACHE_INDEX_HI: pt.ICACHE_TAG_INDEX_LO] ;
-
-   rvdff #(pt.ICACHE_NUM_WAYS) tag_rd_wy_ff (.*, .clk(active_clk),
-                    .din ({ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0]}),
-                    .dout({ic_debug_rd_way_en_ff[pt.ICACHE_NUM_WAYS-1:0]}));
-
- if (pt.ICACHE_WAYPACK == 0 ) begin : PACKED_0
-
-   logic [pt.ICACHE_NUM_WAYS-1:0] ic_b_sram_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                                               ic_b_read_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                                               ic_b_write_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0] [pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]   wb_index_hold;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                               [pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]   ic_b_rw_addr;
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 write_bypass_en;     //bank
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 write_bypass_en_ff;  //bank
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 index_valid;  //bank
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 ic_b_clear_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 ic_b_addr_match;
-
-
-
-
-    logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS_WIDTH-1:0] wrptr;
-    logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS_WIDTH-1:0] wrptr_in;
-    logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS-1:0]       sel_bypass;
-    logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS-1:0]       sel_bypass_ff;
-
-
-
-    logic [pt.ICACHE_NUM_WAYS-1:0][25:0]  sel_bypass_data;
-    logic [pt.ICACHE_NUM_WAYS-1:0]        any_bypass;
-    logic [pt.ICACHE_NUM_WAYS-1:0]        any_addr_match;
-    logic [pt.ICACHE_NUM_WAYS-1:0]        ic_tag_clken_final;
-
-      `define eb1_IC_TAG_SRAM(depth,width)                                                                                                      \
-                                  ram_``depth``x``width  ic_way_tag (                                                                           \
-                                .ME(ic_tag_clken_final[i]),                                                                                     \
-                                .WE (ic_tag_wren_q[i]),                                                                                         \
-                                .D  (ic_tag_wr_data[``width-1:0]),                                                                              \
-                                .ADR(ic_rw_addr_q[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]),                                                  \
-                                .Q  (ic_tag_data_raw_pre[i][``width-1:0]),                                                                      \
-                                .CLK (clk),                                                                                                     \
-                                .ROP ( ),                                                                                                       \
-                                                                                                                                                \
-                                .TEST1(ic_tag_ext_in_pkt[i].TEST1),                                                                             \
-                                .RME(ic_tag_ext_in_pkt[i].RME),                                                                                 \
-                                .RM(ic_tag_ext_in_pkt[i].RM),                                                                                   \
-                                                                                                                                                \
-                                .LS(ic_tag_ext_in_pkt[i].LS),                                                                                   \
-                                .DS(ic_tag_ext_in_pkt[i].DS),                                                                                   \
-                                .SD(ic_tag_ext_in_pkt[i].SD),                                                                                   \
-                                                                                                                                                \
-                                .TEST_RNM(ic_tag_ext_in_pkt[i].TEST_RNM),                                                                       \
-                                .BC1(ic_tag_ext_in_pkt[i].BC1),                                                                                 \
-                                .BC2(ic_tag_ext_in_pkt[i].BC2)                                                                                  \
-                                                                                                                                                \
-                               );                                                                                                               \
-                                                                                                                                                \
-                                                                                                                                                \
-                                                                                                                                                \
-                                                                                                                                                \
-              if (pt.ICACHE_TAG_BYPASS_ENABLE == 1) begin                                                                                                                                             \
-                                                                                                                                                                                                      \
-                 assign wrptr_in[i] = (wrptr[i] == (pt.ICACHE_TAG_NUM_BYPASS-1)) ? '0 : (wrptr[i] + 1'd1);                                                                                            \
-                                                                                                                                                                                                      \
-                 rvdffs  #(pt.ICACHE_TAG_NUM_BYPASS_WIDTH)  wrptr_ff(.*, .clk(active_clk), .en(|write_bypass_en[i]), .din (wrptr_in[i]), .dout(wrptr[i])) ;                                           \
-                                                                                                                                                                                                      \
-                 assign ic_b_sram_en[i]              = ic_tag_clken[i];                                                                                                                               \
-                                                                                                                                                                                                      \
-                 assign ic_b_read_en[i]              =  ic_b_sram_en[i] &   (ic_tag_rden_q[i]);                                                                                                       \
-                 assign ic_b_write_en[i]             =  ic_b_sram_en[i] &   (ic_tag_wren_q[i]);                                                                                                       \
-                 assign ic_tag_clken_final[i]        =  ic_b_sram_en[i] &    ~(|sel_bypass[i]);                                                                                                       \
-                                                                                                                                                                                                      \
-                 // LSB is pt.ICACHE_TAG_INDEX_LO]                                                                                                                                                    \
-                 assign ic_b_rw_addr[i] = {ic_rw_addr_q};                                                                                                                                             \
-                                                                                                                                                                                                      \
-                 always_comb begin                                                                                                                                                                    \
-                    any_addr_match[i] = '0;                                                                                                                                                           \
-                                                                                                                                                                                                      \
-                    for (int l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin                                                                                                                              \
-                       any_addr_match[i] |= (ic_b_addr_match[i][l] & index_valid[i][l]);                                                                                                              \
-                    end                                                                                                                                                                               \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                // it is an error to ever have 2 entries with the same index and both valid                                                                                                           \
-                for (genvar l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin: BYPASS                                                                                                                       \
-                                                                                                                                                                                                      \
-                   assign ic_b_addr_match[i][l] = (wb_index_hold[i][l] ==  ic_b_rw_addr[i]) & index_valid[i][l];                                                                                      \
-                                                                                                                                                                                                      \
-                   assign ic_b_clear_en[i][l]   = ic_b_write_en[i] &   ic_b_addr_match[i][l];                                                                                                         \
-                                                                                                                                                                                                      \
-                   assign sel_bypass[i][l]      = ic_b_read_en[i]  &   ic_b_addr_match[i][l] ;                                                                                                        \
-                                                                                                                                                                                                      \
-                   assign write_bypass_en[i][l] = ic_b_read_en[i]  &  ~any_addr_match[i] & (wrptr[i] == l);                                                                                           \
-                                                                                                                                                                                                      \
-                   rvdff  #(1)  write_bypass_ff (.*, .clk(active_clk),                                                     .din(write_bypass_en[i][l]), .dout(write_bypass_en_ff[i][l])) ;                            \
-                   rvdffs #(1)  index_val_ff    (.*, .clk(active_clk), .en(write_bypass_en[i][l] | ic_b_clear_en[i][l]),         .din(~ic_b_clear_en[i][l]),  .dout(index_valid[i][l])) ;                             \
-                   rvdff  #(1)  sel_hold_ff     (.*, .clk(active_clk),                                                     .din(sel_bypass[i][l]),      .dout(sel_bypass_ff[i][l])) ;                                 \
-                                                                                                                                                                                                      \
-                   rvdffe #(.WIDTH(pt.ICACHE_INDEX_HI-pt.ICACHE_TAG_INDEX_LO+1),.OVERRIDE(1))  ic_addr_index   (.*, .en(write_bypass_en[i][l]),    .din (ic_b_rw_addr[i]),        .dout(wb_index_hold[i][l]));   \
-                   rvdffe #(``width)                                                           rd_data_hold_ff (.*, .en(write_bypass_en_ff[i][l]), .din (ic_tag_data_raw_pre[i][``width-1:0]), .dout(wb_dout_hold[i][l]));            \
-                                                                                                                                                                                                      \
-                end // block: BYPASS                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                always_comb begin                                                                                                                                                                     \
-                 any_bypass[i] = '0;                                                                                                                                                                  \
-                 sel_bypass_data[i] = '0;                                                                                                                                                             \
-                                                                                                                                                                                                      \
-                 for (int l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin                                                                                                                                 \
-                    any_bypass[i]      |=  sel_bypass_ff[i][l];                                                                                                                                       \
-                    sel_bypass_data[i] |= (sel_bypass_ff[i][l]) ? wb_dout_hold[i][l] : '0;                                                                                                            \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                   ic_tag_data_raw[i]   =   any_bypass[i] ?  sel_bypass_data[i] :  ic_tag_data_raw_pre[i] ;                                                                                           \
-                end // always_comb begin                                                                                                                                                              \
-                                                                                                                                                                                                      \
-             end // if (pt.ICACHE_BYPASS_ENABLE == 1)                                                                                                                                                 \
-             else begin                                                                                                                                                                               \
-                 assign ic_tag_data_raw[i]   =   ic_tag_data_raw_pre[i] ;                                                                                                                             \
-                 assign ic_tag_clken_final[i]       =   ic_tag_clken[i];                                                                                                                              \
-             end
-   for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: WAYS
-
-   if (pt.ICACHE_ECC) begin  : ECC1
-      logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS-1:0][25 :0] wb_dout_hold;
-
-      if (pt.ICACHE_TAG_DEPTH == 32)   begin : size_32
-                 `eb1_IC_TAG_SRAM(32,26)
-      end // if (pt.ICACHE_TAG_DEPTH == 32)
-      if (pt.ICACHE_TAG_DEPTH == 64)   begin : size_64
-                 `eb1_IC_TAG_SRAM(64,26)
-      end // if (pt.ICACHE_TAG_DEPTH == 64)
-      if (pt.ICACHE_TAG_DEPTH == 128)   begin : size_128
-                 `eb1_IC_TAG_SRAM(128,26)
-      end // if (pt.ICACHE_TAG_DEPTH == 128)
-       if (pt.ICACHE_TAG_DEPTH == 256)   begin : size_256
-                 `eb1_IC_TAG_SRAM(256,26)
-       end // if (pt.ICACHE_TAG_DEPTH == 256)
-       if (pt.ICACHE_TAG_DEPTH == 512)   begin : size_512
-                 `eb1_IC_TAG_SRAM(512,26)
-       end // if (pt.ICACHE_TAG_DEPTH == 512)
-       if (pt.ICACHE_TAG_DEPTH == 1024)   begin : size_1024
-                 `eb1_IC_TAG_SRAM(1024,26)
-       end // if (pt.ICACHE_TAG_DEPTH == 1024)
-       if (pt.ICACHE_TAG_DEPTH == 2048)   begin : size_2048
-                 `eb1_IC_TAG_SRAM(2048,26)
-       end // if (pt.ICACHE_TAG_DEPTH == 2048)
-       if (pt.ICACHE_TAG_DEPTH == 4096)   begin  : size_4096
-                 `eb1_IC_TAG_SRAM(4096,26)
-       end // if (pt.ICACHE_TAG_DEPTH == 4096)
-
-         assign w_tout[i][31:pt.ICACHE_TAG_LO] = ic_tag_data_raw[i][31-pt.ICACHE_TAG_LO:0] ;
-         assign w_tout[i][36:32]              = ic_tag_data_raw[i][25:21] ;
-
-         rvecc_decode  ecc_decode (
-                           .en(~dec_tlu_core_ecc_disable & ic_rd_en_ff),
-                           .sed_ded ( 1'b1 ),    // 1 : means only detection
-                           .din({11'b0,ic_tag_data_raw[i][20:0]}),
-                           .ecc_in({2'b0, ic_tag_data_raw[i][25:21]}),
-                           .dout(ic_tag_corrected_data_unc[i][31:0]),
-                           .ecc_out(ic_tag_corrected_ecc_unc[i][6:0]),
-                           .single_ecc_error(ic_tag_single_ecc_error[i]),
-                           .double_ecc_error(ic_tag_double_ecc_error[i]));
-
-          assign ic_tag_way_perr[i]= ic_tag_single_ecc_error[i] | ic_tag_double_ecc_error[i]  ;
-      end
-      else  begin : ECC0
-      logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS-1:0][21 :0] wb_dout_hold;
-      assign ic_tag_data_raw_pre[i][25:22] = '0 ;
-
-      if (pt.ICACHE_TAG_DEPTH == 32)   begin : size_32
-                 `eb1_IC_TAG_SRAM(32,22)
-      end // if (pt.ICACHE_TAG_DEPTH == 32)
-      if (pt.ICACHE_TAG_DEPTH == 64)   begin : size_64
-                 `eb1_IC_TAG_SRAM(64,22)
-      end // if (pt.ICACHE_TAG_DEPTH == 64)
-      if (pt.ICACHE_TAG_DEPTH == 128)   begin : size_128
-                 `eb1_IC_TAG_SRAM(128,22)
-      end // if (pt.ICACHE_TAG_DEPTH == 128)
-       if (pt.ICACHE_TAG_DEPTH == 256)   begin : size_256
-                 `eb1_IC_TAG_SRAM(256,22)
-       end // if (pt.ICACHE_TAG_DEPTH == 256)
-       if (pt.ICACHE_TAG_DEPTH == 512)   begin : size_512
-                 `eb1_IC_TAG_SRAM(512,22)
-       end // if (pt.ICACHE_TAG_DEPTH == 512)
-       if (pt.ICACHE_TAG_DEPTH == 1024)   begin : size_1024
-                 `eb1_IC_TAG_SRAM(1024,22)
-       end // if (pt.ICACHE_TAG_DEPTH == 1024)
-       if (pt.ICACHE_TAG_DEPTH == 2048)   begin : size_2048
-                 `eb1_IC_TAG_SRAM(2048,22)
-       end // if (pt.ICACHE_TAG_DEPTH == 2048)
-       if (pt.ICACHE_TAG_DEPTH == 4096)   begin  : size_4096
-                 `eb1_IC_TAG_SRAM(4096,22)
-       end // if (pt.ICACHE_TAG_DEPTH == 4096)
-
-         assign w_tout[i][31:pt.ICACHE_TAG_LO] = ic_tag_data_raw[i][31-pt.ICACHE_TAG_LO:0] ;
-         assign w_tout[i][32]                 = ic_tag_data_raw[i][21] ;
-
-         rveven_paritycheck #(32-pt.ICACHE_TAG_LO) parcheck(.data_in   (w_tout[i][31:pt.ICACHE_TAG_LO]),
-                                                   .parity_in (w_tout[i][32]),
-                                                   .parity_err(ic_tag_way_perr[i]));
-      end // else: !if(pt.ICACHE_ECC)
-
-   end // block: WAYS
- end // block: PACKED_0
-
-
- else begin : PACKED_1
-
-
-   logic                                                                                ic_b_sram_en;
-   logic                                                                                ic_b_read_en;
-   logic                                                                                ic_b_write_en;
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0] [pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]   wb_index_hold;
-   logic                                [pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]   ic_b_rw_addr;
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 write_bypass_en;     //bank
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 write_bypass_en_ff;  //bank
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 index_valid;  //bank
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 ic_b_clear_en;
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 ic_b_addr_match;
-
-
-
-
-    logic [pt.ICACHE_TAG_NUM_BYPASS_WIDTH-1:0]  wrptr;
-    logic [pt.ICACHE_TAG_NUM_BYPASS_WIDTH-1:0]  wrptr_in;
-    logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]        sel_bypass;
-    logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]        sel_bypass_ff;
-
-
-
-    logic [(26*pt.ICACHE_NUM_WAYS)-1:0]  sel_bypass_data;
-    logic                                any_bypass;
-    logic                                any_addr_match;
-    logic                                ic_tag_clken_final;
-
-`define eb1_IC_TAG_PACKED_SRAM(depth,width)                                                               \
-                  ram_be_``depth``x``width  ic_way_tag (                                                   \
-                                .ME  ( ic_tag_clken_final),                                                \
-                                .WE  (|ic_tag_wren_q[pt.ICACHE_NUM_WAYS-1:0]),                             \
-                                .WEM (ic_tag_wren_biten_vec[``width-1:0]),                                 \
-                                                                                                           \
-                                .D   ({pt.ICACHE_NUM_WAYS{ic_tag_wr_data[``width/pt.ICACHE_NUM_WAYS-1:0]}}), \
-                                .ADR (ic_rw_addr_q[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]),            \
-                                .Q   (ic_tag_data_raw_packed_pre[``width-1:0]),                            \
-                                .CLK (clk),                                                                \
-                                .ROP ( ),                                                                  \
-                                                                                                           \
-                                .TEST1     (ic_tag_ext_in_pkt[0].TEST1),                                   \
-                                .RME      (ic_tag_ext_in_pkt[0].RME),                                      \
-                                .RM       (ic_tag_ext_in_pkt[0].RM),                                       \
-                                                                                                           \
-                                .LS       (ic_tag_ext_in_pkt[0].LS),                                       \
-                                .DS       (ic_tag_ext_in_pkt[0].DS),                                       \
-                                .SD       (ic_tag_ext_in_pkt[0].SD),                                       \
-                                                                                                           \
-                                .TEST_RNM (ic_tag_ext_in_pkt[0].TEST_RNM),                                 \
-                                .BC1      (ic_tag_ext_in_pkt[0].BC1),                                      \
-                                .BC2      (ic_tag_ext_in_pkt[0].BC2)                                       \
-                                                                                                           \
-                               );                                                                          \
-                                                                                                           \
-              if (pt.ICACHE_TAG_BYPASS_ENABLE == 1) begin                                                                                                                                             \
-                                                                                                                                                                                                      \
-                 assign wrptr_in = (wrptr == (pt.ICACHE_TAG_NUM_BYPASS-1)) ? '0 : (wrptr + 1'd1);                                                                                                     \
-                                                                                                                                                                                                      \
-                 rvdffs  #(pt.ICACHE_TAG_NUM_BYPASS_WIDTH)  wrptr_ff(.*, .clk(active_clk), .en(|write_bypass_en), .din (wrptr_in), .dout(wrptr)) ;                                                    \
-                                                                                                                                                                                                      \
-                 assign ic_b_sram_en              = |ic_tag_clken;                                                                                                                                    \
-                                                                                                                                                                                                      \
-                 assign ic_b_read_en              =  ic_b_sram_en &   (|ic_tag_rden_q);                                                                                                               \
-                 assign ic_b_write_en             =  ic_b_sram_en &   (|ic_tag_wren_q);                                                                                                               \
-                 assign ic_tag_clken_final        =  ic_b_sram_en &    ~(|sel_bypass);                                                                                                                \
-                                                                                                                                                                                                      \
-                 // LSB is pt.ICACHE_TAG_INDEX_LO]                                                                                                                                                    \
-                 assign ic_b_rw_addr = {ic_rw_addr_q};                                                                                                                                                \
-                                                                                                                                                                                                      \
-                 always_comb begin                                                                                                                                                                    \
-                    any_addr_match = '0;                                                                                                                                                              \
-                                                                                                                                                                                                      \
-                    for (int l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin                                                                                                                              \
-                       any_addr_match |= ic_b_addr_match[l];                                                                                                                                          \
-                    end                                                                                                                                                                               \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                // it is an error to ever have 2 entries with the same index and both valid                                                                                                           \
-                for (genvar l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin: BYPASS                                                                                                                       \
-                                                                                                                                                                                                      \
-                   assign ic_b_addr_match[l] = (wb_index_hold[l] ==  ic_b_rw_addr) & index_valid[l];                                                                                                  \
-                                                                                                                                                                                                      \
-                   assign ic_b_clear_en[l]   = ic_b_write_en &   ic_b_addr_match[l];                                                                                                                  \
-                                                                                                                                                                                                      \
-                   assign sel_bypass[l]      = ic_b_read_en  &   ic_b_addr_match[l] ;                                                                                                                 \
-                                                                                                                                                                                                      \
-                   assign write_bypass_en[l] = ic_b_read_en  &  ~any_addr_match & (wrptr == l);                                                                                                       \
-                                                                                                                                                                                                      \
-                   rvdff  #(1)  write_bypass_ff (.*, .clk(active_clk),                                                     .din(write_bypass_en[l]), .dout(write_bypass_en_ff[l])) ;                                  \
-                   rvdffs #(1)  index_val_ff    (.*, .clk(active_clk), .en(write_bypass_en[l] | ic_b_clear_en[l]),         .din(~ic_b_clear_en[l]),  .dout(index_valid[l])) ;                                         \
-                   rvdff  #(1)  sel_hold_ff     (.*, .clk(active_clk),                                                     .din(sel_bypass[l]),      .dout(sel_bypass_ff[l])) ;                                               \
-                                                                                                                                                                                                      \
-                   rvdffe #(.WIDTH(pt.ICACHE_INDEX_HI-pt.ICACHE_TAG_INDEX_LO+1),.OVERRIDE(1)) ic_addr_index    (.*, .en(write_bypass_en[l]),    .din (ic_b_rw_addr),               .dout(wb_index_hold[l]));          \
-                   rvdffe #(``width)                                                          rd_data_hold_ff  (.*, .en(write_bypass_en_ff[l]), .din (ic_tag_data_raw_packed_pre[``width-1:0]), .dout(wb_packeddout_hold[l]));        \
-                                                                                                                                                                                                      \
-                end // block: BYPASS                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                always_comb begin                                                                                                                                                                     \
-                 any_bypass = '0;                                                                                                                                                                     \
-                 sel_bypass_data = '0;                                                                                                                                                                \
-                                                                                                                                                                                                      \
-                 for (int l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin                                                                                                                                 \
-                    any_bypass      |=  sel_bypass_ff[l];                                                                                                                                             \
-                    sel_bypass_data |= (sel_bypass_ff[l]) ? wb_packeddout_hold[l] : '0;                                                                                                               \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                   ic_tag_data_raw_packed   =   any_bypass ?  sel_bypass_data :  ic_tag_data_raw_packed_pre ;                                                                                         \
-                end // always_comb begin                                                                                                                                                              \
-                                                                                                                                                                                                      \
-             end // if (pt.ICACHE_BYPASS_ENABLE == 1)                                                                                                                                                 \
-             else begin                                                                                                                                                                               \
-                 assign ic_tag_data_raw_packed   =   ic_tag_data_raw_packed_pre ;                                                                                                                     \
-                 assign ic_tag_clken_final       =   |ic_tag_clken;                                                                                                                                   \
-             end
-
-   if (pt.ICACHE_ECC) begin  : ECC1
-    logic [(26*pt.ICACHE_NUM_WAYS)-1 :0]  ic_tag_data_raw_packed, ic_tag_wren_biten_vec, ic_tag_data_raw_packed_pre;           // data and its bit enables
-    logic [pt.ICACHE_TAG_NUM_BYPASS-1:0][(26*pt.ICACHE_NUM_WAYS)-1 :0] wb_packeddout_hold;
-    for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: BITEN
-        assign ic_tag_wren_biten_vec[(26*i)+25:26*i] = {26{ic_tag_wren_q[i]}};
-     end
-      if (pt.ICACHE_TAG_DEPTH == 32)   begin : size_32
-        if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(32,104)
-        end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(32,52)
-        end // block: WAYS
-      end // if (pt.ICACHE_TAG_DEPTH == 32
-
-      if (pt.ICACHE_TAG_DEPTH == 64)   begin : size_64
-        if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(64,104)
-        end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(64,52)
-        end // block: WAYS
-      end // block: size_64
-
-      if (pt.ICACHE_TAG_DEPTH == 128)   begin : size_128
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(128,104)
-      end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(128,52)
-      end // block: WAYS
-
-      end // block: size_128
-
-      if (pt.ICACHE_TAG_DEPTH == 256)   begin : size_256
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(256,104)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(256,52)
-        end // block: WAYS
-      end // block: size_256
-
-      if (pt.ICACHE_TAG_DEPTH == 512)   begin : size_512
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(512,104)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(512,52)
-        end // block: WAYS
-      end // block: size_512
-
-      if (pt.ICACHE_TAG_DEPTH == 1024)   begin : size_1024
-         if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(1024,104)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(1024,52)
-        end // block: WAYS
-      end // block: size_1024
-
-      if (pt.ICACHE_TAG_DEPTH == 2048)   begin : size_2048
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(2048,104)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(2048,52)
-        end // block: WAYS
-      end // block: size_2048
-
-      if (pt.ICACHE_TAG_DEPTH == 4096)   begin  : size_4096
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(4096,104)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(4096,52)
-        end // block: WAYS
-      end // block: size_4096
-
-        for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin
-          assign ic_tag_data_raw[i]  = ic_tag_data_raw_packed[(26*i)+25:26*i];
-          assign w_tout[i][31:pt.ICACHE_TAG_LO] = ic_tag_data_raw[i][31-pt.ICACHE_TAG_LO:0] ;
-          assign w_tout[i][36:32]              = ic_tag_data_raw[i][25:21] ;
-          rvecc_decode  ecc_decode (
-                           .en(~dec_tlu_core_ecc_disable & ic_rd_en_ff),
-                           .sed_ded ( 1'b1 ),    // 1 : means only detection
-                           .din({11'b0,ic_tag_data_raw[i][20:0]}),
-                           .ecc_in({2'b0, ic_tag_data_raw[i][25:21]}),
-                           .dout(ic_tag_corrected_data_unc[i][31:0]),
-                           .ecc_out(ic_tag_corrected_ecc_unc[i][6:0]),
-                           .single_ecc_error(ic_tag_single_ecc_error[i]),
-                           .double_ecc_error(ic_tag_double_ecc_error[i]));
-
-          assign ic_tag_way_perr[i]= ic_tag_single_ecc_error[i] | ic_tag_double_ecc_error[i]  ;
-     end // for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++)
-
-   end // block: ECC1
-
-
-   else  begin : ECC0
-    logic [(22*pt.ICACHE_NUM_WAYS)-1 :0]  ic_tag_data_raw_packed, ic_tag_wren_biten_vec, ic_tag_data_raw_packed_pre;           // data and its bit enables
-    logic [pt.ICACHE_TAG_NUM_BYPASS-1:0][(22*pt.ICACHE_NUM_WAYS)-1 :0] wb_packeddout_hold;
-    for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: BITEN
-        assign ic_tag_wren_biten_vec[(22*i)+21:22*i] = {22{ic_tag_wren_q[i]}};
-     end
-      if (pt.ICACHE_TAG_DEPTH == 32)   begin : size_32
-        if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(32,88)
-        end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(32,44)
-        end // block: WAYS
-      end // if (pt.ICACHE_TAG_DEPTH == 32
-
-      if (pt.ICACHE_TAG_DEPTH == 64)   begin : size_64
-        if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(64,88)
-        end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(64,44)
-        end // block: WAYS
-      end // block: size_64
-
-      if (pt.ICACHE_TAG_DEPTH == 128)   begin : size_128
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(128,88)
-      end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(128,44)
-      end // block: WAYS
-
-      end // block: size_128
-
-      if (pt.ICACHE_TAG_DEPTH == 256)   begin : size_256
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(256,88)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(256,44)
-        end // block: WAYS
-      end // block: size_256
-
-      if (pt.ICACHE_TAG_DEPTH == 512)   begin : size_512
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(512,88)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(512,44)
-        end // block: WAYS
-      end // block: size_512
-
-      if (pt.ICACHE_TAG_DEPTH == 1024)   begin : size_1024
-         if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(1024,88)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(1024,44)
-        end // block: WAYS
-      end // block: size_1024
-
-      if (pt.ICACHE_TAG_DEPTH == 2048)   begin : size_2048
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(2048,88)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(2048,44)
-        end // block: WAYS
-      end // block: size_2048
-
-      if (pt.ICACHE_TAG_DEPTH == 4096)   begin  : size_4096
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(4096,88)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(4096,44)
-        end // block: WAYS
-      end // block: size_4096
-
-      for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin
-          assign ic_tag_data_raw[i]  = ic_tag_data_raw_packed[(22*i)+21:22*i];
-          assign w_tout[i][31:pt.ICACHE_TAG_LO] = ic_tag_data_raw[i][31-pt.ICACHE_TAG_LO:0] ;
-          assign w_tout[i][32]                 = ic_tag_data_raw[i][21] ;
-          assign w_tout[i][36:33]              = '0 ;
-
-
-          rveven_paritycheck #(32-pt.ICACHE_TAG_LO) parcheck(.data_in   (w_tout[i][31:pt.ICACHE_TAG_LO]),
-                                                   .parity_in (w_tout[i][32]),
-                                                   .parity_err(ic_tag_way_perr[i]));
-      end
-
-
-   end // block: ECC0
- end // block: PACKED_1
-
-
-   always_comb begin : tag_rd_out
-      ictag_debug_rd_data[25:0] = '0;
-      for ( int j=0; j<pt.ICACHE_NUM_WAYS; j++) begin: debug_rd_out
-         ictag_debug_rd_data[25:0] |=  pt.ICACHE_ECC ? ({26{ic_debug_rd_way_en_ff[j]}} & ic_tag_data_raw[j] ) : {4'b0, ({22{ic_debug_rd_way_en_ff[j]}} & ic_tag_data_raw[j][21:0])};
-      end
-   end
-
-
-   for ( genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : ic_rd_hit_loop
-      assign ic_rd_hit[i] = (w_tout[i][31:pt.ICACHE_TAG_LO] == ic_rw_addr_ff[31:pt.ICACHE_TAG_LO]) & ic_tag_valid[i];
-   end
-
-   assign  ic_tag_perr  = | (ic_tag_way_perr[pt.ICACHE_NUM_WAYS-1:0] & ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0] ) ;
-endmodule // eb1_IC_TAG
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_iccm_mem.sv b/verilog/rtl/BrqRV_EB1/design/eb1_ifu_iccm_mem.sv
deleted file mode 100644
index 8b1bdf4..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_iccm_mem.sv
+++ /dev/null
@@ -1,525 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Icache closely coupled memory --- ICCM
-//********************************************************************************
-
-module eb1_ifu_iccm_mem
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
- `ifdef USE_POWER_PINS
-   input logic 					vccd1,
-   input logic						vssd1,
- `endif
-   input logic                                        clk,                                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                                        active_clk,                          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                                        rst_l,                               // reset, active low
-   input logic                                        clk_override,                        // Override non-functional clock gating
-
-   input logic                                        iccm_wren,                           // ICCM write enable
-   input logic                                        iccm_rden,                           // ICCM read enable
-   input logic [pt.ICCM_BITS-1:1]                     iccm_rw_addr,                        // ICCM read/write address
-   input logic                                        iccm_buf_correct_ecc,                // ICCM is doing a single bit error correct cycle
-   input logic                                        iccm_correction_state,               // ICCM under a correction - This is needed to guard replacements when hit
-   input logic [2:0]                                  iccm_wr_size,                        // ICCM write size
-   input logic [77:0]                                 iccm_wr_data,                        // ICCM write data
-
-   input eb1_ccm_ext_in_pkt_t [pt.ICCM_NUM_BANKS-1:0] iccm_ext_in_pkt,                    // External packet
-
-   output logic [63:0]                                iccm_rd_data,                        // ICCM read data
-   output logic [77:0]                                iccm_rd_data_ecc,                    // ICCM read ecc
-   input  logic                                       scan_mode                            // Scan mode control
-
-);
-
-
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                wren_bank;
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                rden_bank;
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                iccm_clken;
-   logic [pt.ICCM_NUM_BANKS-1:0] [pt.ICCM_BITS-1:pt.ICCM_BANK_INDEX_LO] addr_bank;
-
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_dout, iccm_bank_dout_fn;
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_wr_data;
-   logic [pt.ICCM_BITS-1:1]              addr_bank_inc;
-   logic [pt.ICCM_BANK_HI : 2]           iccm_rd_addr_hi_q;
-   logic [pt.ICCM_BANK_HI : 1]           iccm_rd_addr_lo_q;
-   logic             [63:0]              iccm_rd_data_pre;
-   logic             [63:0]              iccm_data;
-   logic [1:0]                           addr_incr;
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_wr_data_vec;
-
-   // logic to handle hard persisten faults
-   logic [1:0] [pt.ICCM_BITS-1:2]        redundant_address;
-   logic [1:0] [38:0]                    redundant_data;
-   logic [1:0]                           redundant_valid;
-   logic [pt.ICCM_NUM_BANKS-1:0]         sel_red1, sel_red0, sel_red1_q, sel_red0_q;
-
-
-   logic [38:0]                          redundant_data0_in, redundant_data1_in;
-   logic                                 redundant_lru, redundant_lru_in, redundant_lru_en;
-   logic                                 redundant_data0_en;
-   logic                                 redundant_data1_en;
-   logic                                 r0_addr_en, r1_addr_en;
-
-   // Testing persistent flip
-   //   logic [3:0]                              not_iccm_bank_dout;
-   //   logic [15:3]                     ecc_insert_flip_in, ecc_insert_flip;
-   //   logic                                 flip_en, flip_match, flip_match_q;
-   //
-   //   assign      flip_in = (iccm_rw_addr[3:2] != 2'b00);    // dont flip when bank0 - this is to make some progress in DMA streaming cases
-   //   assign      flip_en = iccm_rden;
-   //
-   //   rvdffs #(1) flipmatch  (.*,
-   //                   .clk(clk),
-   //                   .din(flip_in),
-   //                   .en(flip_en),
-   //                   .dout(flip_match_q));
-   //
-   // end of testing flip
-
-
-   assign addr_incr[1:0]                    = (iccm_wr_size[1:0] == 2'b11) ?  2'b10: 2'b01;
-   assign addr_bank_inc[pt.ICCM_BITS-1 : 1] = iccm_rw_addr[pt.ICCM_BITS-1 : 1] + addr_incr[1:0];
-
-   for (genvar i=0; i<pt.ICCM_NUM_BANKS/2; i++) begin: mem_bank_data
-      assign iccm_bank_wr_data_vec[(2*i)]   = iccm_wr_data[38:0];
-      assign iccm_bank_wr_data_vec[(2*i)+1] = iccm_wr_data[77:39];
-   end
-
-   for (genvar i=0; i<pt.ICCM_NUM_BANKS; i++) begin: mem_bank
-      assign wren_bank[i]         = iccm_wren & ((iccm_rw_addr[pt.ICCM_BANK_HI:2] == i) | (addr_bank_inc[pt.ICCM_BANK_HI:2] == i));
-      assign iccm_bank_wr_data[i] = iccm_bank_wr_data_vec[i];
-      assign rden_bank[i]         = iccm_rden & ( (iccm_rw_addr[pt.ICCM_BANK_HI:2] == i) | (addr_bank_inc[pt.ICCM_BANK_HI:2] == i));
-      assign iccm_clken[i]        =  wren_bank[i] | rden_bank[i] | clk_override;
-      assign addr_bank[i][pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] = wren_bank[i] ? iccm_rw_addr[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] :
-                                                                                      ((addr_bank_inc[pt.ICCM_BANK_HI:2] == i) ?
-                                                                                                    addr_bank_inc[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] :
-                                                                                                    iccm_rw_addr[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO]);
- `ifdef VERILATOR
-
-    /*eb1_ram #(.depth(1<<pt.ICCM_INDEX_BITS), .width(39)) iccm_bank (
-                                     // Primary ports
-                                     .ME(iccm_clken[i]),
-                                     .CLK(clk),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );*/
-                                      sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~iccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(iccm_bank_wr_data[i]),
-									.dout0(iccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-  					);
-                                    
- `else
-
-     if (pt.ICCM_INDEX_BITS == 6 ) begin : iccm
-               ram_64x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-
-   else if (pt.ICCM_INDEX_BITS == 7 ) begin : iccm
-               ram_128x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-
-     else if (pt.ICCM_INDEX_BITS == 8 ) begin : iccm
-               /*ram_256x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );*/
-                                      sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~iccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(iccm_bank_wr_data[i][31:0]),
-									.dout0(iccm_bank_dout[i][31:0]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-  					);
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 9 ) begin : iccm
-               ram_512x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 10 ) begin : iccm
-              /* ram_1024x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-                                     );*/
-                                     
-                                     sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~iccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(iccm_bank_wr_data[i]),
-									.dout0(iccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-  					);
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 11 ) begin : iccm
-               ram_2048x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 12 ) begin : iccm
-               ram_4096x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 13 ) begin : iccm
-               ram_8192x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 14 ) begin : iccm
-               ram_16384x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else begin : iccm
-               ram_32768x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-`endif
-
-   // match the redundant rows
-   assign sel_red1[i]  = (redundant_valid[1]  & (((iccm_rw_addr[pt.ICCM_BITS-1:2] == redundant_address[1][pt.ICCM_BITS-1:2]) & (iccm_rw_addr[3:2] == i)) |
-                                                 ((addr_bank_inc[pt.ICCM_BITS-1:2]== redundant_address[1][pt.ICCM_BITS-1:2]) & (addr_bank_inc[3:2] == i))));
-
-   assign sel_red0[i]  = (redundant_valid[0]  & (((iccm_rw_addr[pt.ICCM_BITS-1:2] == redundant_address[0][pt.ICCM_BITS-1:2]) & (iccm_rw_addr[3:2] == i)) |
-                                                 ((addr_bank_inc[pt.ICCM_BITS-1:2]== redundant_address[0][pt.ICCM_BITS-1:2]) & (addr_bank_inc[3:2] == i))));
-
-   rvdff #(1) selred0  (.*,
-                   .clk(active_clk),
-                   .din(sel_red0[i]),
-                   .dout(sel_red0_q[i]));
-
-   rvdff #(1) selred1  (.*,
-                   .clk(active_clk),
-                   .din(sel_red1[i]),
-                   .dout(sel_red1_q[i]));
-
-
-  // muxing out the memory data with the redundant data if the address matches
-   assign iccm_bank_dout_fn[i][38:0] = ({39{sel_red1_q[i]}}                         & redundant_data[1][38:0]) |
-                                       ({39{sel_red0_q[i]}}                         & redundant_data[0][38:0]) |
-                                       ({39{~sel_red0_q[i] & ~sel_red1_q[i]}}       & iccm_bank_dout[i][38:0]);
-
-  end : mem_bank
-// This section does the redundancy for tolerating single bit errors
-// 2x 39 bit data values with address[hi:2] and a valid bit is needed to CAM and sub out the reads/writes to the particular locations
-// Also a LRU flop is kept to decide which of the redundant element to replace.
-   assign r0_addr_en              = ~redundant_lru & iccm_buf_correct_ecc;
-   assign r1_addr_en              = redundant_lru  & iccm_buf_correct_ecc;
-   assign redundant_lru_en         = iccm_buf_correct_ecc | (((|sel_red0[pt.ICCM_NUM_BANKS-1:0]) | (|sel_red1[pt.ICCM_NUM_BANKS-1:0])) & iccm_rden & iccm_correction_state);
-   assign redundant_lru_in        = iccm_buf_correct_ecc ? ~redundant_lru : (|sel_red0[pt.ICCM_NUM_BANKS-1:0]) ? 1'b1 : 1'b0;
-
-   rvdffs #() red_lru  (.*,                               // LRU flop for the redundant replacements
-                   .clk(active_clk),
-                   .en(redundant_lru_en),
-                   .din(redundant_lru_in),
-                   .dout(redundant_lru));
-
-    rvdffs #(pt.ICCM_BITS-2) r0_address  (.*,                 // Redundant Row 0 address
-                   .clk(active_clk),
-                   .en(r0_addr_en),
-                   .din(iccm_rw_addr[pt.ICCM_BITS-1:2]),
-                   .dout(redundant_address[0][pt.ICCM_BITS-1:2]));
-
-   rvdffs #(pt.ICCM_BITS-2) r1_address  (.*,                   // Redundant Row 0 address
-                   .clk(active_clk),
-                   .en(r1_addr_en),
-                   .din(iccm_rw_addr[pt.ICCM_BITS-1:2]),
-                   .dout(redundant_address[1][pt.ICCM_BITS-1:2]));
-
-    rvdffs #(1) r0_valid  (.*,
-                   .clk(active_clk),                                  // Redundant Row 0 Valid
-                   .en(r0_addr_en),
-                   .din(1'b1),
-                   .dout(redundant_valid[0]));
-
-   rvdffs #(1) r1_valid  (.*,                                   // Redundant Row 1 Valid
-                   .clk(active_clk),
-                   .en(r1_addr_en),
-                   .din(1'b1),
-                   .dout(redundant_valid[1]));
-
-
-
-   // We will have to update the Redundant copies in addition to the memory on subsequent writes to this memory location.
-   // The data gets updated on : 1) correction cycle, 2) Future writes - this could be W writes from DMA ( match up till addr[2]) or DW writes ( match till address[3])
-   // The data to pick also depends on the current address[2], size and the addr[2] stored in the address field of the redundant flop. Correction cycle is always W write and the data is splat on both legs, so choosing lower Word
-
-    assign redundant_data0_en      = ((iccm_rw_addr[pt.ICCM_BITS-1:3] == redundant_address[0][pt.ICCM_BITS-1:3]) & ((iccm_rw_addr[2] == redundant_address[0][2]) | (iccm_wr_size[1:0] == 2'b11)) & redundant_valid[0] & iccm_wren) |
-                                      (~redundant_lru & iccm_buf_correct_ecc);
-
-    assign redundant_data0_in[38:0] = (((iccm_rw_addr[2] == redundant_address[0][2]) & iccm_rw_addr[2]) | (redundant_address[0][2] & (iccm_wr_size[1:0] == 2'b11))) ? iccm_wr_data[77:39]  : iccm_wr_data[38:0];
-
-    rvdffs #(39) r0_data  (.*,                                 // Redundant Row 1 data
-                   .clk(active_clk),
-                   .en(redundant_data0_en),
-                   .din(redundant_data0_in[38:0]),
-                   .dout(redundant_data[0][38:0]));
-
-   assign redundant_data1_en      =  ((iccm_rw_addr[pt.ICCM_BITS-1:3] == redundant_address[1][pt.ICCM_BITS-1:3]) & ((iccm_rw_addr[2] == redundant_address[1][2]) | (iccm_wr_size[1:0] == 2'b11)) & redundant_valid[1] & iccm_wren) |
-                                     (redundant_lru & iccm_buf_correct_ecc);
-
-   assign redundant_data1_in[38:0] = (((iccm_rw_addr[2] == redundant_address[1][2]) & iccm_rw_addr[2]) | (redundant_address[1][2] & (iccm_wr_size[1:0] == 2'b11))) ? iccm_wr_data[77:39]  : iccm_wr_data[38:0];
-
-    rvdffs #(39) r1_data  (.*,                                  // Redundant Row 1 data
-                   .clk(active_clk),
-                   .en(redundant_data1_en),
-                   .din(redundant_data1_in[38:0]),
-                   .dout(redundant_data[1][38:0]));
-
-
-   rvdffs  #(pt.ICCM_BANK_HI)   rd_addr_lo_ff (.*, .clk(active_clk), .din(iccm_rw_addr [pt.ICCM_BANK_HI:1]), .dout(iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:1]), .en(1'b1));   // bit 0 of address is always 0
-   rvdffs  #(pt.ICCM_BANK_BITS) rd_addr_hi_ff (.*, .clk(active_clk), .din(addr_bank_inc[pt.ICCM_BANK_HI:2]), .dout(iccm_rd_addr_hi_q[pt.ICCM_BANK_HI:2]), .en(1'b1));
-
-   assign iccm_rd_data_pre[63:0] = {iccm_bank_dout_fn[iccm_rd_addr_hi_q][31:0], iccm_bank_dout_fn[iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:2]][31:0]};
-   assign iccm_data[63:0]        = 64'({16'b0, (iccm_rd_data_pre[63:0] >> (16*iccm_rd_addr_lo_q[1]))});
-   assign iccm_rd_data[63:0]     = {iccm_data[63:0]};
-   assign iccm_rd_data_ecc[77:0] = {iccm_bank_dout_fn[iccm_rd_addr_hi_q][38:0], iccm_bank_dout_fn[iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:2]][38:0]};
-
-endmodule // eb1_ifu_iccm_mem
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_ifc_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_ifu_ifc_ctl.sv
deleted file mode 100644
index d5f59a8..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_ifc_ctl.sv
+++ /dev/null
@@ -1,246 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// eb1_ifu_ifc_ctl.sv
-// Function: Fetch pipe control
-//
-// Comments:
-//********************************************************************************
-
-module eb1_ifu_ifc_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic clk,                         // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic free_l2clk,                  // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic rst_l, // reset enable, from core pin
-   input logic scan_mode, // scan
-
-   input logic ic_hit_f,      // Icache hit
-   input logic ifu_ic_mb_empty, // Miss buffer empty
-
-   input logic ifu_fb_consume1,  // Aligner consumed 1 fetch buffer
-   input logic ifu_fb_consume2,  // Aligner consumed 2 fetch buffers
-
-   input logic dec_tlu_flush_noredir_wb, // Don't fetch on flush
-   input logic exu_flush_final, // FLush
-   input logic [31:1] exu_flush_path_final, // Flush path
-
-   input logic ifu_bp_hit_taken_f, // btb hit, select the target path
-   input logic [31:1] ifu_bp_btb_target_f, //  predicted target PC
-
-   input logic ic_dma_active, // IC DMA active, stop fetching
-   input logic ic_write_stall, // IC is writing, stop fetching
-   input logic dma_iccm_stall_any, // force a stall in the fetch pipe for DMA ICCM access
-
-   input logic [31:0]  dec_tlu_mrac_ff ,   // side_effect and cacheable for each region
-
-   output logic [31:1] ifc_fetch_addr_f, // fetch addr F
-   output logic [31:1] ifc_fetch_addr_bf, // fetch addr BF
-
-   output logic  ifc_fetch_req_f,  // fetch request valid F
-
-   output logic  ifu_pmu_fetch_stall, // pmu event measuring fetch stall
-
-   output logic                       ifc_fetch_uncacheable_bf,      // The fetch request is uncacheable space. BF stage
-   output logic                      ifc_fetch_req_bf,              // Fetch request. Comes with the address.  BF stage
-   output logic                       ifc_fetch_req_bf_raw,          // Fetch request without some qualifications. Used for clock-gating. BF stage
-   output logic                       ifc_iccm_access_bf,            // This request is to the ICCM. Do not generate misses to the bus.
-   output logic                       ifc_region_acc_fault_bf,       // Access fault. in ICCM region but offset is outside defined ICCM.
-
-   output logic  ifc_dma_access_ok // fetch is not accessing the ICCM, DMA can proceed
-
-   
-
-   );
-
-   logic [31:1]  fetch_addr_bf;
-   logic [31:1]  fetch_addr_next;
-   logic [3:0]   fb_write_f, fb_write_ns;
-
-   logic     fb_full_f_ns, fb_full_f;
-   logic     fb_right, fb_right2, fb_left, wfm, idle;
-   logic     sel_last_addr_bf, sel_next_addr_bf;
-   logic     miss_f, miss_a;
-   logic     flush_fb, dma_iccm_stall_any_f;
-   logic     mb_empty_mod, goto_idle, leave_idle;
-   logic     fetch_bf_en;
-   logic         line_wrap;
-   logic         fetch_addr_next_1;
-
-   // FSM assignment
-    typedef enum logic [1:0] { IDLE  = 2'b00 ,
-                               FETCH = 2'b01 ,
-                               STALL = 2'b10 ,
-                               WFM   = 2'b11   } state_t ;
-   state_t state      ;
-   state_t next_state ;
-
-   logic     dma_stall;
-   assign dma_stall = ic_dma_active | dma_iccm_stall_any_f;
-
-
-
-   // Fetch address mux
-   // - flush
-   // - Miss *or* flush during WFM (icache miss buffer is blocking)
-   // - Sequential
-
-if(pt.BTB_ENABLE==1) begin
-   logic sel_btb_addr_bf;
-
-   assign sel_last_addr_bf = ~exu_flush_final & (~ifc_fetch_req_f | ~ic_hit_f);
-   assign sel_btb_addr_bf  = ~exu_flush_final & ifc_fetch_req_f & ifu_bp_hit_taken_f & ic_hit_f;
-   assign sel_next_addr_bf = ~exu_flush_final & ifc_fetch_req_f & ~ifu_bp_hit_taken_f & ic_hit_f;
-
-
-   assign fetch_addr_bf[31:1] = ( ({31{exu_flush_final}} &  exu_flush_path_final[31:1]) | // FLUSH path
-                  ({31{sel_last_addr_bf}} & ifc_fetch_addr_f[31:1]) | // MISS path
-                  ({31{sel_btb_addr_bf}} & {ifu_bp_btb_target_f[31:1]})| // BTB target
-                  ({31{sel_next_addr_bf}} & {fetch_addr_next[31:1]})); // SEQ path
-
-
-end // if (pt.BTB_ENABLE=1)
-   else begin
-   assign sel_last_addr_bf = ~exu_flush_final & (~ifc_fetch_req_f | ~ic_hit_f);
-   assign sel_next_addr_bf = ~exu_flush_final & ifc_fetch_req_f & ic_hit_f;
-
-
-   assign fetch_addr_bf[31:1] = ( ({31{exu_flush_final}} &  exu_flush_path_final[31:1]) | // FLUSH path
-                  ({31{sel_last_addr_bf}} & ifc_fetch_addr_f[31:1]) | // MISS path
-                  ({31{sel_next_addr_bf}} & {fetch_addr_next[31:1]})); // SEQ path
-
-end
-   assign fetch_addr_next[31:1] = {({ifc_fetch_addr_f[31:2]} + 31'b1), fetch_addr_next_1 };
-   assign line_wrap = (fetch_addr_next[pt.ICACHE_TAG_INDEX_LO] ^ ifc_fetch_addr_f[pt.ICACHE_TAG_INDEX_LO]);
-
-   assign fetch_addr_next_1 = line_wrap ? 1'b0 : ifc_fetch_addr_f[1];
-
-   assign ifc_fetch_req_bf_raw = ~idle;
-   assign ifc_fetch_req_bf =  ifc_fetch_req_bf_raw &
-
-                 ~(fb_full_f_ns & ~(ifu_fb_consume2 | ifu_fb_consume1)) &
-                 ~dma_stall &
-                 ~ic_write_stall &
-                 ~dec_tlu_flush_noredir_wb ;
-
-
-   assign fetch_bf_en = exu_flush_final | ifc_fetch_req_f;
-
-   assign miss_f = ifc_fetch_req_f & ~ic_hit_f & ~exu_flush_final;
-
-   assign mb_empty_mod = (ifu_ic_mb_empty | exu_flush_final) & ~dma_stall & ~miss_f & ~miss_a;
-
-   // Halt flushes and takes us to IDLE
-   assign goto_idle = exu_flush_final & dec_tlu_flush_noredir_wb;
-   // If we're in IDLE, and we get a flush, goto FETCH
-   assign leave_idle = exu_flush_final & ~dec_tlu_flush_noredir_wb & idle;
-
-//.i 7
-//.o 2
-//.ilb state[1] state[0] reset_delayed miss_f mb_empty_mod  goto_idle leave_idle
-//.ob next_state[1] next_state[0]
-//.type fr
-//
-//# fetch 01, stall 10, wfm 11, idle 00
-//-- 1---- 01
-//-- 0--1- 00
-//00 0--00 00
-//00 0--01 01
-//
-//01 01-0- 11
-//01 00-0- 01
-//
-//11 0-10- 01
-//11 0-00- 11
-
-   assign next_state[1] = (~state[1] & state[0] & miss_f & ~goto_idle) |
-              (state[1] & ~mb_empty_mod & ~goto_idle);
-
-   assign next_state[0] = (~goto_idle & leave_idle) | (state[0] & ~goto_idle);
-
-   assign flush_fb = exu_flush_final;
-
-   // model fb write logic to mass balance the fetch buffers
-   assign fb_right = ( ifu_fb_consume1 & ~ifu_fb_consume2 & (~ifc_fetch_req_f | miss_f)) | // Consumed and no new fetch
-              (ifu_fb_consume2 &  ifc_fetch_req_f); // Consumed 2 and new fetch
-
-
-   assign fb_right2 = (ifu_fb_consume2 & (~ifc_fetch_req_f | miss_f)); // Consumed 2 and no new fetch
-
-   assign fb_left = ifc_fetch_req_f & ~(ifu_fb_consume1 | ifu_fb_consume2) & ~miss_f;
-
-// CBH
-   assign fb_write_ns[3:0] = ( ({4{(flush_fb)}} & 4'b0001) |
-                   ({4{~flush_fb & fb_right }} & {1'b0, fb_write_f[3:1]}) |
-                   ({4{~flush_fb & fb_right2}} & {2'b0, fb_write_f[3:2]}) |
-                   ({4{~flush_fb & fb_left  }} & {fb_write_f[2:0], 1'b0}) |
-                   ({4{~flush_fb & ~fb_right & ~fb_right2 & ~fb_left}}  & fb_write_f[3:0]));
-
-
-   assign fb_full_f_ns = fb_write_ns[3];
-
-   assign idle     = state      == IDLE  ;
-   assign wfm      = state      == WFM   ;
-
-   rvdffie #(10) fbwrite_ff (.*, .clk(free_l2clk),
-                          .din( {dma_iccm_stall_any, miss_f, ifc_fetch_req_bf, next_state[1:0], fb_full_f_ns, fb_write_ns[3:0]}),
-                          .dout({dma_iccm_stall_any_f, miss_a, ifc_fetch_req_f, state[1:0], fb_full_f, fb_write_f[3:0]}));
-
-   assign ifu_pmu_fetch_stall = wfm | 
-                (ifc_fetch_req_bf_raw & ( (fb_full_f & ~(ifu_fb_consume2 | ifu_fb_consume1 | exu_flush_final)) |
-                  dma_stall));
-
-
-
-   assign ifc_fetch_addr_bf[31:1] = fetch_addr_bf[31:1];
-
-   rvdffpcie #(31) faddrf1_ff  (.*, .en(fetch_bf_en), .din(fetch_addr_bf[31:1]), .dout(ifc_fetch_addr_f[31:1]));
-
-
- if (pt.ICCM_ENABLE)  begin
-   logic iccm_acc_in_region_bf;
-   logic iccm_acc_in_range_bf;
-   rvrangecheck #( .CCM_SADR    (pt.ICCM_SADR),
-                   .CCM_SIZE    (pt.ICCM_SIZE) ) iccm_rangecheck (
-                                     .addr     ({ifc_fetch_addr_bf[31:1],1'b0}) ,
-                                     .in_range (iccm_acc_in_range_bf) ,
-                                     .in_region(iccm_acc_in_region_bf)
-                                     );
-
-   assign ifc_iccm_access_bf = iccm_acc_in_range_bf ;
-
-  assign ifc_dma_access_ok = ( (~ifc_iccm_access_bf |
-                 (fb_full_f & ~(ifu_fb_consume2 | ifu_fb_consume1)) |
-                 (wfm  & ~ifc_fetch_req_bf) |
-                 idle ) & ~exu_flush_final) |
-                  dma_iccm_stall_any_f;
-
-  assign ifc_region_acc_fault_bf = ~iccm_acc_in_range_bf & iccm_acc_in_region_bf ;
- end
- else  begin
-   assign ifc_iccm_access_bf = 1'b0 ;
-   assign ifc_dma_access_ok  = 1'b0 ;
-   assign ifc_region_acc_fault_bf  = 1'b0 ;
- end
-
-   assign ifc_fetch_uncacheable_bf =  ~dec_tlu_mrac_ff[{ifc_fetch_addr_bf[31:28] , 1'b0 }]  ; // bit 0 of each region description is the cacheable bit
-
-endmodule // eb1_ifu_ifc_ctl
-
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_mem_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_ifu_mem_ctl.sv
deleted file mode 100644
index 77c9ebd..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_ifu_mem_ctl.sv
+++ /dev/null
@@ -1,1672 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-
-//********************************************************************************
-// Function: Icache , iccm  control
-// BFF -> F1 -> F2 -> A
-//********************************************************************************
-
-module eb1_ifu_mem_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic clk,                                                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic active_clk,                                          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic free_l2clk,                                          // Clock always.                  Through one clock header.  For flops with    second header built in.
-   input logic rst_l,                                               // reset, active low
-
-   input logic                       exu_flush_final,               // Flush from the pipeline., includes flush lower
-   input logic                       dec_tlu_flush_lower_wb,        // Flush lower from the pipeline.
-   input logic                       dec_tlu_flush_err_wb,          // Flush from the pipeline due to perr.
-   input logic                       dec_tlu_i0_commit_cmt,         // committed i0 instruction
-   input logic                       dec_tlu_force_halt,            // force halt.
-
-   input logic [31:1]                ifc_fetch_addr_bf,             // Fetch Address byte aligned always.      F1 stage.
-   input logic                       ifc_fetch_uncacheable_bf,      // The fetch request is uncacheable space. F1 stage
-   input logic                       ifc_fetch_req_bf,              // Fetch request. Comes with the address.  F1 stage
-   input logic                       ifc_fetch_req_bf_raw,          // Fetch request without some qualifications. Used for clock-gating. F1 stage
-   input logic                       ifc_iccm_access_bf,            // This request is to the ICCM. Do not generate misses to the bus.
-   input logic                       ifc_region_acc_fault_bf,       // Access fault. in ICCM region but offset is outside defined ICCM.
-   input logic                       ifc_dma_access_ok,             // It is OK to give dma access to the ICCM. (ICCM is not busy this cycle).
-   input logic                       dec_tlu_fence_i_wb,            // Fence.i instruction is committing. Clear all Icache valids.
-   input logic                       ifu_bp_hit_taken_f,            // Branch is predicted taken. Kill the fetch next cycle.
-
-   input logic                       ifu_bp_inst_mask_f,            // tell ic which valids to kill because of a taken branch, right justified
-
-   output logic                      ifu_miss_state_idle,           // No icache misses are outstanding.
-   output logic                      ifu_ic_mb_empty,               // Continue with normal fetching. This does not mean that miss is finished.
-   output logic                      ic_dma_active  ,               // In the middle of servicing dma request to ICCM. Do not make any new requests.
-   output logic                      ic_write_stall,                // Stall fetch the cycle we are writing the cache.
-
-/// PMU signals
-   output logic                      ifu_pmu_ic_miss,               // IC miss event
-   output logic                      ifu_pmu_ic_hit,                // IC hit event
-   output logic                      ifu_pmu_bus_error,             // Bus error event
-   output logic                      ifu_pmu_bus_busy,              // Bus busy event
-   output logic                      ifu_pmu_bus_trxn,              // Bus transaction
-
-  //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   output logic                            ifu_axi_bready,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-
-    input  logic                     ifu_bus_clk_en,
-
-
-   input  logic                      dma_iccm_req,      //  dma iccm command (read or write)
-   input  logic [31:0]               dma_mem_addr,      //  dma address
-   input  logic [2:0]                dma_mem_sz,        //  size
-   input  logic                      dma_mem_write,     //  write
-   input  logic [63:0]               dma_mem_wdata,     //  write data
-   input  logic [2:0]                dma_mem_tag,       //  DMA Buffer entry number
-
-   output logic                      iccm_dma_ecc_error,//   Data read from iccm has an ecc error
-   output logic                      iccm_dma_rvalid,   //   Data read from iccm is valid
-   output logic [63:0]               iccm_dma_rdata,    //   dma data read from iccm
-   output logic [2:0]                iccm_dma_rtag,     //   Tag of the DMA req
-   output logic                      iccm_ready,        //   iccm ready to accept new command.
-
-
-//   I$ & ITAG Ports
-   output logic [31:1]               ic_rw_addr,         // Read/Write addresss to the Icache.
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_wr_en,           // Icache write enable, when filling the Icache.
-   output logic                      ic_rd_en,           // Icache read  enable.
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0] [70:0]               ic_wr_data,           // Data to fill to the Icache. With ECC
-   input  logic [63:0]               ic_rd_data ,          // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]               ic_debug_rd_data ,          // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]               ictag_debug_rd_data,  // Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,     // Debug wr cache.
-   output logic [70:0]               ifu_ic_debug_rd_data, // debug data read
-
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    //
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_tag_valid,       // Valid bits when accessing the Icache. One valid bit per way. F2 stage
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_rd_hit,          // Compare hits from Icache tags. Per way.  F2 stage
-   input  logic                      ic_tag_perr,        // Icache Tag parity error
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]  iccm_rw_addr,       // ICCM read/write address.
-   output logic                      iccm_wren,          // ICCM write enable (through the DMA)
-   output logic                      iccm_rden,          // ICCM read enable.
-   output logic [77:0]               iccm_wr_data,       // ICCM write data.
-   output logic [2:0]                iccm_wr_size,       // ICCM write location within DW.
-
-   input  logic [63:0]               iccm_rd_data,       // Data read from ICCM.
-   input  logic [77:0]               iccm_rd_data_ecc,   // Data + ECC read from ICCM.
-   input  logic [1:0]                ifu_fetch_val,
-   // IFU control signals
-   output logic                      ic_hit_f,               // Hit in Icache(if Icache access) or ICCM access( ICCM always has ic_hit_f)
-   output logic [1:0]                ic_access_fault_f,      // Access fault (bus error or ICCM access in region but out of offset range).
-   output logic [1:0]                ic_access_fault_type_f, // Access fault types
-   output logic                      iccm_rd_ecc_single_err, // This fetch has a single ICCM ecc  error.
-   output logic [1:0]                iccm_rd_ecc_double_err, // This fetch has a double ICCM ecc  error.
-   output logic                      ic_error_start,         // This has any I$ errors ( data/tag/ecc/parity )
-
-   output logic                      ifu_async_error_start,  // Or of the sb iccm, and all the icache errors sent to aligner to stop
-   output logic                      iccm_dma_sb_error,      // Single Bit ECC error from a DMA access
-   output logic [1:0]                ic_fetch_val_f,         // valid bytes for fetch. To the Aligner.
-   output logic [31:0]               ic_data_f,              // Data read from Icache or ICCM. To the Aligner.
-   output logic [63:0]               ic_premux_data,         // Premuxed data to be muxed with Icache data
-   output logic                      ic_sel_premux_data,     // Select premux data.
-
-/////  Debug
-   input  eb1_cache_debug_pkt_t     dec_tlu_ic_diag_pkt ,       // Icache/tag debug read/write packet
-   input  logic                      dec_tlu_core_ecc_disable,   // disable the ecc checking and flagging
-   output logic                      ifu_ic_debug_rd_data_valid, // debug data valid.
-   output logic                      iccm_buf_correct_ecc,
-   output logic                      iccm_correction_state,
-
-
-   input  logic         scan_mode
-   );
-
-//  Create different defines for ICACHE and ICCM enable combinations
-
- localparam   NUM_OF_BEATS = 8 ;
-
-
-
-   logic [31:3]    ifu_ic_req_addr_f;
-   logic           uncacheable_miss_in ;
-   logic           uncacheable_miss_ff;
-
-
-
-   logic           bus_ifu_wr_en     ;
-   logic           bus_ifu_wr_en_ff  ;
-   logic           bus_ifu_wr_en_ff_q  ;
-   logic           bus_ifu_wr_en_ff_wo_err  ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     bus_ic_wr_en ;
-
-   logic           reset_tag_valid_for_miss  ;
-
-
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_mb_in;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_rep_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_mb_ff;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_hit_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_new_w_debug;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     tagv_mb_in;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     tagv_mb_ff;
-
-
-   logic           ifu_wr_data_comb_err ;
-   logic           ifu_byp_data_err_new;
-   logic  [1:0]    ifu_byp_data_err_f;
-   logic           ifu_wr_cumulative_err_data;
-   logic           ifu_wr_cumulative_err;
-   logic           ifu_wr_data_comb_err_ff;
-   logic           scnd_miss_index_match ;
-
-
-   logic           ifc_dma_access_q_ok;
-   logic           ifc_iccm_access_f ;
-   logic           ifc_region_acc_fault_f;
-   logic           ifc_region_acc_fault_final_f;
-   logic  [1:0]    ifc_bus_acc_fault_f;
-   logic           ic_act_miss_f;
-   logic           ic_miss_under_miss_f;
-   logic           ic_ignore_2nd_miss_f;
-   logic           ic_act_hit_f;
-   logic           miss_pending;
-   logic [31:1]    imb_in , imb_ff  ;
-   logic [31:pt.ICACHE_BEAT_ADDR_HI+1]    miss_addr_in , miss_addr  ;
-   logic           miss_wrap_f ;
-   logic           flush_final_f;
-   logic           ifc_fetch_req_f;
-   logic           ifc_fetch_req_f_raw;
-   logic           fetch_req_f_qual   ;
-   logic           ifc_fetch_req_qual_bf ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     replace_way_mb_any;
-   logic           last_beat;
-   logic           reset_beat_cnt  ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]     ic_req_addr_bits_hi_3 ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]     ic_wr_addr_bits_hi_3 ;
-   logic [31:1]    ifu_fetch_addr_int_f ;
-   logic [31:1]    ifu_ic_rw_int_addr ;
-   logic           crit_wd_byp_ok_ff ;
-   logic           ic_crit_wd_rdy_new_ff;
-   logic   [79:0]  ic_byp_data_only_pre_new;
-   logic   [79:0]  ic_byp_data_only_new;
-   logic           ic_byp_hit_f ;
-   logic           ic_valid ;
-   logic           ic_valid_ff;
-   logic           reset_all_tags;
-   logic           ic_valid_w_debug;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ifu_tag_wren,ifu_tag_wren_ff;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ic_debug_tag_wr_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ifu_tag_wren_w_debug;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ic_debug_way_ff;
-   logic           ic_debug_rd_en_ff   ;
-   logic           fetch_bf_f_c1_clken ;
-   logic           fetch_bf_f_c1_clk;
-   logic           debug_c1_clken;
-   logic           debug_c1_clk;
-
-   logic           reset_ic_in ;
-   logic           reset_ic_ff ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:1]     vaddr_f ;
-   logic [31:1]    ifu_status_wr_addr;
-   logic           sel_mb_addr ;
-   logic           sel_mb_addr_ff ;
-   logic           sel_mb_status_addr ;
-   logic [63:0]    ic_final_data;
-
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_ic_rw_int_addr_ff ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_status_wr_addr_ff ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_ic_rw_int_addr_w_debug ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_status_wr_addr_w_debug ;
-
-   logic [pt.ICACHE_STATUS_BITS-1:0]                              way_status_new_ff ;
-   logic                                    way_status_wr_en_ff ;
-   logic [pt.ICACHE_TAG_DEPTH-1:0][pt.ICACHE_STATUS_BITS-1:0]        way_status_out ;
-   logic [1:0]                              ic_debug_way_enc;
-
-   logic [pt.IFU_BUS_TAG-1:0]             ifu_bus_rid_ff;
-
-   logic         fetch_req_icache_f;
-   logic         fetch_req_iccm_f;
-   logic         ic_iccm_hit_f;
-   logic         fetch_uncacheable_ff;
-   logic         way_status_wr_en;
-   logic         sel_byp_data;
-   logic         sel_ic_data;
-   logic         sel_iccm_data;
-   logic         ic_rd_parity_final_err;
-   logic         ic_act_miss_f_delayed;
-   logic         bus_ifu_wr_data_error;
-   logic         bus_ifu_wr_data_error_ff;
-   logic         way_status_wr_en_w_debug;
-   logic         ic_debug_tag_val_rd_out;
-   logic         ifu_pmu_ic_miss_in;
-   logic         ifu_pmu_ic_hit_in;
-   logic         ifu_pmu_bus_error_in;
-   logic         ifu_pmu_bus_trxn_in;
-   logic         ifu_pmu_bus_busy_in;
-   logic         ic_debug_ict_array_sel_in;
-   logic         ic_debug_ict_array_sel_ff;
-   logic         debug_data_clken;
-   logic         last_data_recieved_in ;
-   logic         last_data_recieved_ff ;
-
-   logic                          ifu_bus_rvalid           ;
-   logic                          ifu_bus_rvalid_ff        ;
-   logic                          ifu_bus_rvalid_unq_ff    ;
-   logic                          ifu_bus_arready_unq       ;
-   logic                          ifu_bus_arready_unq_ff    ;
-   logic                          ifu_bus_arvalid           ;
-   logic                          ifu_bus_arvalid_ff        ;
-   logic                          ifu_bus_arready           ;
-   logic                          ifu_bus_arready_ff        ;
-   logic [63:0]                   ifu_bus_rdata_ff        ;
-   logic [1:0]                    ifu_bus_rresp_ff          ;
-   logic                          ifu_bus_rsp_valid ;
-   logic                          ifu_bus_rsp_ready ;
-   logic [pt.IFU_BUS_TAG-1:0]     ifu_bus_rsp_tag;
-   logic [63:0]                   ifu_bus_rsp_rdata;
-   logic [1:0]                    ifu_bus_rsp_opc;
-
-   logic [pt.ICACHE_NUM_BEATS-1:0]    write_fill_data;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    wr_data_c1_clk;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_valid_in;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_valid;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_error_in;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_error;
-   logic [pt.ICACHE_BEAT_ADDR_HI:1]    byp_fetch_index;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_0;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_1;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]    byp_fetch_index_inc;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_inc_0;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_inc_1;
-   logic          miss_buff_hit_unq_f ;
-   logic          stream_hit_f ;
-   logic          stream_miss_f ;
-   logic          stream_eol_f ;
-   logic          crit_byp_hit_f ;
-   logic [pt.IFU_BUS_TAG-1:0] other_tag ;
-   logic [(2*pt.ICACHE_NUM_BEATS)-1:0] [31:0] ic_miss_buff_data;
-   logic [63:0] ic_miss_buff_half;
-   logic        scnd_miss_req, scnd_miss_req_q;
-   logic        scnd_miss_req_in;
-
-
-   logic [pt.ICCM_BITS-1:2]                iccm_ecc_corr_index_ff;
-   logic [pt.ICCM_BITS-1:2]                iccm_ecc_corr_index_in;
-   logic [38:0]                         iccm_ecc_corr_data_ff;
-   logic                                iccm_ecc_write_status     ;
-   logic                                iccm_rd_ecc_single_err_ff   ;
-   logic                                iccm_error_start;     // start the error fsm
-   logic                                perr_state_en;
-   logic                                miss_state_en;
-
-   logic        busclk;
-   logic        busclk_force;
-   logic        busclk_reset;
-   logic        bus_ifu_bus_clk_en_ff;
-   logic        bus_ifu_bus_clk_en ;
-
-   logic        ifc_bus_ic_req_ff_in;
-   logic        ifu_bus_cmd_valid ;
-   logic        ifu_bus_cmd_ready ;
-
-   logic        bus_inc_data_beat_cnt     ;
-   logic        bus_reset_data_beat_cnt   ;
-   logic        bus_hold_data_beat_cnt    ;
-
-   logic        bus_inc_cmd_beat_cnt     ;
-   logic        bus_reset_cmd_beat_cnt_0   ;
-   logic        bus_reset_cmd_beat_cnt_secondlast   ;
-   logic        bus_hold_cmd_beat_cnt    ;
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_data_beat_count  ;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_data_beat_count      ;
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_cmd_beat_count  ;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_cmd_beat_count      ;
-
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_rd_addr_count;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_rd_addr_count;
-
-
-   logic        bus_cmd_sent           ;
-   logic        bus_last_data_beat     ;
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]       bus_wren            ;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]       bus_wren_last       ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]       wren_reset_miss      ;
-   logic        ifc_dma_access_ok_d;
-   logic        ifc_dma_access_ok_prev;
-
-   logic   bus_cmd_req_in ;
-   logic   bus_cmd_req_hold ;
-
-   logic   second_half_available ;
-   logic   write_ic_16_bytes ;
-
-   logic   ifc_region_acc_fault_final_bf;
-   logic   ifc_region_acc_fault_memory_bf;
-   logic   ifc_region_acc_fault_memory_f;
-   logic   ifc_region_acc_okay;
-
-   logic   iccm_correct_ecc;
-   logic   dma_sb_err_state, dma_sb_err_state_ff;
-   logic   two_byte_instr;
-
-   typedef enum logic [2:0] {IDLE=3'b000, CRIT_BYP_OK=3'b001, HIT_U_MISS=3'b010, MISS_WAIT=3'b011,CRIT_WRD_RDY=3'b100,SCND_MISS=3'b101,STREAM=3'b110 , STALL_SCND_MISS=3'b111} miss_state_t;
-   miss_state_t miss_state, miss_nxtstate;
-
-   typedef enum logic [1:0] {ERR_STOP_IDLE=2'b00, ERR_FETCH1=2'b01 , ERR_FETCH2=2'b10 , ERR_STOP_FETCH=2'b11} err_stop_state_t;
-   err_stop_state_t err_stop_state, err_stop_nxtstate;
-   logic   err_stop_state_en ;
-   logic   err_stop_fetch ;
-
-   logic   ic_crit_wd_rdy;         // Critical fetch is ready to be bypassed.
-
-   logic   ifu_bp_hit_taken_q_f;
-   logic   ifu_bus_rvalid_unq;
-   logic   bus_cmd_beat_en;
-
-
-// ---- Clock gating section -----
-// c1 clock enables
-
-
-   assign fetch_bf_f_c1_clken  = ifc_fetch_req_bf_raw | ifc_fetch_req_f | miss_pending | exu_flush_final | scnd_miss_req;
-   assign debug_c1_clken       = ic_debug_rd_en | ic_debug_wr_en ;
-   // C1 - 1 clock pulse for data
-`ifdef RV_FPGA_OPTIMIZE
-   assign fetch_bf_f_c1_clk = 1'b0;
-   assign debug_c1_clk      = 1'b0;
-`else
-   rvclkhdr fetch_bf_f_c1_cgc    ( .en(fetch_bf_f_c1_clken),     .l1clk(fetch_bf_f_c1_clk), .* );
-   rvclkhdr debug_c1_cgc         ( .en(debug_c1_clken),          .l1clk(debug_c1_clk), .* );
-`endif
-
-
-// ------ end clock gating section ------------------------
-
-   logic [1:0]    iccm_single_ecc_error;
-   logic          dma_iccm_req_f ;
-   assign iccm_dma_sb_error     = (|iccm_single_ecc_error[1:0] )  & dma_iccm_req_f ;
-   assign ifu_async_error_start = iccm_rd_ecc_single_err | ic_error_start;
-
-
-   typedef enum logic [2:0] {ERR_IDLE=3'b000, IC_WFF=3'b001 , ECC_WFF=3'b010 , ECC_CORR=3'b011, DMA_SB_ERR=3'b100} perr_state_t;
-   perr_state_t perr_state, perr_nxtstate;
-
-
-   assign ic_dma_active = iccm_correct_ecc | (perr_state == DMA_SB_ERR) | (err_stop_state == ERR_STOP_FETCH) | err_stop_fetch |
-                          dec_tlu_flush_err_wb; // The last term is to give a error-correction a chance to finish before refetch starts
-
-   assign scnd_miss_req_in     = ifu_bus_rsp_valid & bus_ifu_bus_clk_en & ifu_bus_rsp_ready &
-                                 (&bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]) &
-                                 ~uncacheable_miss_ff &  ((miss_state == SCND_MISS) | (miss_nxtstate == SCND_MISS)) & ~exu_flush_final;
-
-   assign ifu_bp_hit_taken_q_f = ifu_bp_hit_taken_f & ic_hit_f ;
-
-   //////////////////////////////////// Create Miss State Machine ///////////////////////
-   //                                   Create Miss State Machine                      //
-   //                                   Create Miss State Machine                      //
-   //                                   Create Miss State Machine                      //
-   //////////////////////////////////// Create Miss State Machine ///////////////////////
-   // FIFO state machine
-   always_comb begin : MISS_SM
-      miss_nxtstate   = IDLE;
-      miss_state_en   = 1'b0;
-      case (miss_state)
-         IDLE: begin : idle
-                  miss_nxtstate = (ic_act_miss_f & ~exu_flush_final) ? CRIT_BYP_OK : HIT_U_MISS ;
-                  miss_state_en = ic_act_miss_f & ~dec_tlu_force_halt ;
-         end
-         CRIT_BYP_OK: begin : crit_byp_ok
-                  miss_nxtstate =  (dec_tlu_force_halt ) ?                                                                             IDLE :
-                                  ( ic_byp_hit_f &  (last_data_recieved_ff | (bus_ifu_wr_en_ff & last_beat)) &  uncacheable_miss_ff) ? IDLE :
-                                  ( ic_byp_hit_f &  ~last_data_recieved_ff                                &  uncacheable_miss_ff) ? MISS_WAIT :
-                                  (~ic_byp_hit_f &  ~exu_flush_final &  (bus_ifu_wr_en_ff & last_beat)       &  uncacheable_miss_ff) ? CRIT_WRD_RDY :
-                                  (                                      (bus_ifu_wr_en_ff & last_beat)       & ~uncacheable_miss_ff) ? IDLE :
-                                  ( ic_byp_hit_f  &  ~exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat)       & ~ifu_bp_hit_taken_q_f   & ~uncacheable_miss_ff) ? STREAM :
-                                  ( bus_ifu_wr_en_ff &  ~exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat)       & ~ifu_bp_hit_taken_q_f   & ~uncacheable_miss_ff) ? STREAM :
-                                  (~ic_byp_hit_f  &  ~exu_flush_final &  (bus_ifu_wr_en_ff & last_beat)       & ~uncacheable_miss_ff) ? IDLE :
-                                  ( (exu_flush_final | ifu_bp_hit_taken_q_f)  & ~(bus_ifu_wr_en_ff & last_beat)                      ) ? HIT_U_MISS : IDLE;
-                  miss_state_en =  dec_tlu_force_halt | exu_flush_final | ic_byp_hit_f | ifu_bp_hit_taken_q_f | (bus_ifu_wr_en_ff & last_beat) | (bus_ifu_wr_en_ff & ~uncacheable_miss_ff)  ;
-         end
-         CRIT_WRD_RDY: begin : crit_wrd_rdy
-                  miss_nxtstate =  IDLE ;
-                  miss_state_en =  exu_flush_final | flush_final_f | ic_byp_hit_f | dec_tlu_force_halt  ;
-         end
-         STREAM: begin : stream
-                  miss_nxtstate =  ((exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f ) & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt) ? HIT_U_MISS  : IDLE ;
-                  miss_state_en =    exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f   |  (bus_ifu_wr_en_ff & last_beat) | dec_tlu_force_halt ;
-         end
-         MISS_WAIT: begin : miss_wait
-                  miss_nxtstate =  (exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt) ? HIT_U_MISS  : IDLE ;
-                  miss_state_en =   exu_flush_final | (bus_ifu_wr_en_ff & last_beat) | dec_tlu_force_halt ;
-         end
-         HIT_U_MISS: begin : hit_u_miss
-                  miss_nxtstate =  ic_miss_under_miss_f & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt ? SCND_MISS :
-                                   ic_ignore_2nd_miss_f & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt ? STALL_SCND_MISS : IDLE  ;
-                  miss_state_en = (bus_ifu_wr_en_ff & last_beat) | ic_miss_under_miss_f | ic_ignore_2nd_miss_f | dec_tlu_force_halt;
-         end
-         SCND_MISS: begin : scnd_miss
-                  miss_nxtstate   = dec_tlu_force_halt ? IDLE  :
-                                    exu_flush_final ?  ((bus_ifu_wr_en_ff & last_beat) ? IDLE : HIT_U_MISS) : CRIT_BYP_OK;
-                  miss_state_en   = (bus_ifu_wr_en_ff & last_beat) | exu_flush_final | dec_tlu_force_halt;
-         end
-         STALL_SCND_MISS: begin : stall_scnd_miss
-                  miss_nxtstate   =  dec_tlu_force_halt ? IDLE  :
-                                     exu_flush_final ?  ((bus_ifu_wr_en_ff & last_beat) ? IDLE : HIT_U_MISS) : IDLE;
-                  miss_state_en   = (bus_ifu_wr_en_ff & last_beat) | exu_flush_final | dec_tlu_force_halt;
-         end
-         default: begin : def_case
-                  miss_nxtstate   = IDLE;
-                  miss_state_en   = 1'b0;
-         end
-      endcase
-   end
-   rvdffs #(($bits(miss_state_t))) miss_state_ff (.clk(active_clk), .din(miss_nxtstate), .dout({miss_state}), .en(miss_state_en),   .*);
-
-  logic    sel_hold_imb     ;
-
-   assign miss_pending       =  (miss_state != IDLE) ;
-   assign crit_wd_byp_ok_ff  =  (miss_state == CRIT_BYP_OK) | ((miss_state == CRIT_WRD_RDY) & ~flush_final_f);
-   assign sel_hold_imb       =  (miss_pending & ~(bus_ifu_wr_en_ff & last_beat) & ~((miss_state == CRIT_WRD_RDY) & exu_flush_final) &
-                              ~((miss_state == CRIT_WRD_RDY) & crit_byp_hit_f) ) | ic_act_miss_f |
-                                (miss_pending & (miss_nxtstate == CRIT_WRD_RDY)) ;
-
-
-   logic         sel_hold_imb_scnd;
-   logic  [31:1] imb_scnd_in;
-   logic  [31:1] imb_scnd_ff;
-   logic         uncacheable_miss_scnd_in ;
-   logic         uncacheable_miss_scnd_ff ;
-
-   logic  [pt.ICACHE_NUM_WAYS-1:0] tagv_mb_scnd_in;
-   logic  [pt.ICACHE_NUM_WAYS-1:0] tagv_mb_scnd_ff;
-
-   logic  [pt.ICACHE_STATUS_BITS-1:0] way_status_mb_scnd_in;
-   logic  [pt.ICACHE_STATUS_BITS-1:0] way_status_mb_scnd_ff;
-
-   assign sel_hold_imb_scnd                                =((miss_state == SCND_MISS) | ic_miss_under_miss_f) & ~flush_final_f ;
-   assign way_status_mb_scnd_in[pt.ICACHE_STATUS_BITS-1:0] = (miss_state == SCND_MISS) ? way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0] : {way_status[pt.ICACHE_STATUS_BITS-1:0]} ;
-   assign tagv_mb_scnd_in[pt.ICACHE_NUM_WAYS-1:0]          = (miss_state == SCND_MISS) ? tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0]          : ({ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0]} & {pt.ICACHE_NUM_WAYS{~reset_all_tags & ~exu_flush_final}});
-   assign uncacheable_miss_scnd_in   = sel_hold_imb_scnd ? uncacheable_miss_scnd_ff : ifc_fetch_uncacheable_bf ;
-
-
-   rvdff_fpga #(1)  unc_miss_scnd_ff    (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din (uncacheable_miss_scnd_in), .dout(uncacheable_miss_scnd_ff));
-   rvdffpcie #(31) imb_f_scnd_ff       (.*, .en(fetch_bf_f_c1_clken),  .din ({imb_scnd_in[31:1]}), .dout({imb_scnd_ff[31:1]}));
-   rvdff_fpga #(pt.ICACHE_STATUS_BITS)  mb_rep_wayf2_scnd_ff (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din ({way_status_mb_scnd_in[pt.ICACHE_STATUS_BITS-1:0]}), .dout({way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0]}));
-   rvdff_fpga #(pt.ICACHE_NUM_WAYS)     mb_tagv_scnd_ff      (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din ({tagv_mb_scnd_in[pt.ICACHE_NUM_WAYS-1:0]}), .dout({tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0]}));
-
-
-
-
-   assign ic_req_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] = bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] ;
-   assign ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3]  = ifu_bus_rid_ff[pt.ICACHE_BEAT_BITS-1:0] & {pt.ICACHE_BEAT_BITS{bus_ifu_wr_en_ff}};
-   // NOTE: Cacheline size is 16 bytes in this example.
-   // Tag     Index  Bank Offset
-   // [31:16] [15:5] [4]  [3:0]
-
-
-   assign fetch_req_icache_f   = ifc_fetch_req_f & ~ifc_iccm_access_f & ~ifc_region_acc_fault_final_f;
-   assign fetch_req_iccm_f     = ifc_fetch_req_f &  ifc_iccm_access_f;
-
-   assign ic_iccm_hit_f        = fetch_req_iccm_f  &  (~miss_pending | (miss_state==HIT_U_MISS) | (miss_state==STREAM));
-   assign ic_byp_hit_f         = (crit_byp_hit_f | stream_hit_f)  & fetch_req_icache_f &  miss_pending ;
-   assign ic_act_hit_f         = (|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) & fetch_req_icache_f & ~reset_all_tags & (~miss_pending | (miss_state==HIT_U_MISS)) & ~sel_mb_addr_ff;
-   assign ic_act_miss_f        = (((~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & ~miss_pending) | scnd_miss_req) & ~ifc_region_acc_fault_final_f;
-   assign ic_miss_under_miss_f = (~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & (miss_state == HIT_U_MISS) &
-                                   (imb_ff[31:pt.ICACHE_TAG_INDEX_LO] != ifu_fetch_addr_int_f[31:pt.ICACHE_TAG_INDEX_LO]) & ~uncacheable_miss_ff & ~sel_mb_addr_ff & ~ifc_region_acc_fault_final_f;
-   assign ic_ignore_2nd_miss_f = (~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & (miss_state == HIT_U_MISS) &
-                                   ((imb_ff[31:pt.ICACHE_TAG_INDEX_LO] == ifu_fetch_addr_int_f[31:pt.ICACHE_TAG_INDEX_LO])  |   uncacheable_miss_ff) ;
-   assign ic_hit_f             =  ic_act_hit_f | ic_byp_hit_f | ic_iccm_hit_f | (ifc_region_acc_fault_final_f & ifc_fetch_req_f);
-
-   assign uncacheable_miss_in   = scnd_miss_req ? uncacheable_miss_scnd_ff : sel_hold_imb ? uncacheable_miss_ff : ifc_fetch_uncacheable_bf ;
-   assign imb_in[31:1]          = scnd_miss_req ? imb_scnd_ff[31:1]        : sel_hold_imb ? imb_ff[31:1] : {ifc_fetch_addr_bf[31:1]} ;
-
-   assign imb_scnd_in[31:1]     = sel_hold_imb_scnd ? imb_scnd_ff[31:1] : {ifc_fetch_addr_bf[31:1]} ;
-
-   assign scnd_miss_index_match  =  (imb_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == imb_scnd_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]) & scnd_miss_req & ~ifu_wr_cumulative_err_data;
-   assign way_status_mb_in[pt.ICACHE_STATUS_BITS-1:0] = (scnd_miss_req & ~scnd_miss_index_match) ? way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0] :
-                                                        (scnd_miss_req &  scnd_miss_index_match) ? way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] :
-                                                         miss_pending                            ? way_status_mb_ff[pt.ICACHE_STATUS_BITS-1:0] :
-                                                                                                  {way_status[pt.ICACHE_STATUS_BITS-1:0]} ;
-   assign tagv_mb_in[pt.ICACHE_NUM_WAYS-1:0]          = scnd_miss_req ? (tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0] | ({pt.ICACHE_NUM_WAYS {scnd_miss_index_match}} & replace_way_mb_any[pt.ICACHE_NUM_WAYS-1:0])) :
-                                                         miss_pending ? tagv_mb_ff[pt.ICACHE_NUM_WAYS-1:0]  : ({ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0]} & {pt.ICACHE_NUM_WAYS{~reset_all_tags & ~exu_flush_final}}) ;
-
-   assign reset_ic_in           = miss_pending & ~scnd_miss_req_q &  (reset_all_tags |  reset_ic_ff) ;
-
-
-
-   rvdffpcie #(31) ifu_fetch_addr_f_ff (.*, .en(fetch_bf_f_c1_clken), .din ({ifc_fetch_addr_bf[31:1]}), .dout({ifu_fetch_addr_int_f[31:1]}));
-
-   assign vaddr_f[pt.ICACHE_BEAT_ADDR_HI:1] = ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:1] ;
-
-   rvdffpcie #(31) imb_f_ff        (.*, .en(fetch_bf_f_c1_clken), .din (imb_in[31:1]), .dout(imb_ff[31:1]));
-   rvdff_fpga #(1) unc_miss_ff     (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ( uncacheable_miss_in),               .dout( uncacheable_miss_ff));
-
-
-   assign miss_addr_in[31:pt.ICACHE_BEAT_ADDR_HI+1]      = (~miss_pending                    ) ? imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] :
-                                                           (                scnd_miss_req_q  ) ? imb_scnd_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] : miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1] ;
-
-
-   rvdfflie #(.WIDTH(31-pt.ICACHE_BEAT_ADDR_HI),.LEFT(31-pt.ICACHE_BEAT_ADDR_HI-8)) miss_f_ff       (.*, .en(bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .din ({miss_addr_in[31:pt.ICACHE_BEAT_ADDR_HI+1]}), .dout({miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1]}));
-
-
-
-
-
-   rvdff_fpga #(pt.ICACHE_STATUS_BITS)  mb_rep_wayf2_ff (.*, .clk(fetch_bf_f_c1_clk),  .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ({way_status_mb_in[pt.ICACHE_STATUS_BITS-1:0]}), .dout({way_status_mb_ff[pt.ICACHE_STATUS_BITS-1:0]}));
-   rvdff_fpga #(pt.ICACHE_NUM_WAYS)     mb_tagv_ff      (.*, .clk(fetch_bf_f_c1_clk),  .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ({tagv_mb_in[pt.ICACHE_NUM_WAYS-1:0]}), .dout({tagv_mb_ff[pt.ICACHE_NUM_WAYS-1:0]}));
-
-   assign ifc_fetch_req_qual_bf  = ifc_fetch_req_bf  & ~((miss_state == CRIT_WRD_RDY) & flush_final_f) & ~stream_miss_f ;// & ~exu_flush_final ;
-
-   assign ifc_fetch_req_f       = ifc_fetch_req_f_raw & ~exu_flush_final ;
-
-   rvdff_fpga #(1) ifu_iccm_acc_ff     (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_iccm_access_bf),      .dout(ifc_iccm_access_f));
-   rvdff_fpga #(1) ifu_iccm_reg_acc_ff (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_region_acc_fault_final_bf), .dout(ifc_region_acc_fault_final_f));
-   rvdff_fpga #(1) rgn_acc_ff          (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_region_acc_fault_bf),       .dout(ifc_region_acc_fault_f));
-
-
-   assign ifu_ic_req_addr_f[31:3]  = {miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_req_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] };
-   assign ifu_ic_mb_empty          = (((miss_state == HIT_U_MISS) | (miss_state == STREAM)) & ~(bus_ifu_wr_en_ff & last_beat)) |  ~miss_pending ;
-   assign ifu_miss_state_idle      = (miss_state == IDLE) ;
-
-
-   assign sel_mb_addr  = ((miss_pending & write_ic_16_bytes & ~uncacheable_miss_ff) | reset_tag_valid_for_miss) ;
-   assign ifu_ic_rw_int_addr[31:1] = ({31{ sel_mb_addr}}  &  {imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] , imb_ff[2:1]})  |
-                                     ({31{~sel_mb_addr}}  &  ifc_fetch_addr_bf[31:1] )   ;
-
-   assign sel_mb_status_addr  = ((miss_pending & write_ic_16_bytes & ~uncacheable_miss_ff & last_beat & bus_ifu_wr_en_ff_q) | reset_tag_valid_for_miss) ;
-   assign ifu_status_wr_addr[31:1] = ({31{ sel_mb_status_addr}}  &  {imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] , imb_ff[2:1]})  |
-                                     ({31{~sel_mb_status_addr}}  &  ifu_fetch_addr_int_f[31:1] )   ;
-
-
-  assign ic_rw_addr[31:1]      = ifu_ic_rw_int_addr[31:1] ;
-
-
-if (pt.ICACHE_ECC == 1) begin: icache_ecc_1
-   logic [6:0]       ic_wr_ecc;
-   logic [6:0]       ic_miss_buff_ecc;
-   logic [141:0]     ic_wr_16bytes_data ;
-   logic [70:0]      ifu_ic_debug_rd_data_in   ;
-
-                rvecc_encode_64  ic_ecc_encode_64_bus (
-                           .din    (ifu_bus_rdata_ff[63:0]),
-                           .ecc_out(ic_wr_ecc[6:0]));
-                rvecc_encode_64  ic_ecc_encode_64_buff (
-                           .din    (ic_miss_buff_half[63:0]),
-                           .ecc_out(ic_miss_buff_ecc[6:0]));
-
-   for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_wr_data_loop
-      assign ic_wr_data[i][70:0]  =  ic_wr_16bytes_data[((71*i)+70): (71*i)];
-   end
-
-
-   assign ic_debug_wr_data[70:0]   = {dec_tlu_ic_diag_pkt.icache_wrdata[70:0]} ;
-   assign ic_error_start           = ((|ic_eccerr[pt.ICACHE_BANKS_WAY-1:0]) & ic_act_hit_f)  | ic_rd_parity_final_err;
-
-
-
-  assign ifu_ic_debug_rd_data_in[70:0] = ic_debug_ict_array_sel_ff ? {2'b0,ictag_debug_rd_data[25:21],32'b0,ictag_debug_rd_data[20:0],{7-pt.ICACHE_STATUS_BITS{1'b0}}, way_status[pt.ICACHE_STATUS_BITS-1:0],3'b0,ic_debug_tag_val_rd_out} :
-                                                                     ic_debug_rd_data[70:0];
-
-  rvdffe #(71) ifu_debug_data_ff (.*,
-                                  .en (debug_data_clken),
-                                  .din ({
-                                         ifu_ic_debug_rd_data_in[70:0]
-                                         }),
-                                  .dout({
-                                         ifu_ic_debug_rd_data[70:0]
-                                         })
-                                  );
-
-  assign ic_wr_16bytes_data[141:0] =  ifu_bus_rid_ff[0] ? {ic_wr_ecc[6:0] , ifu_bus_rdata_ff[63:0] ,  ic_miss_buff_ecc[6:0] , ic_miss_buff_half[63:0] } :
-                                                        {ic_miss_buff_ecc[6:0] ,  ic_miss_buff_half[63:0] , ic_wr_ecc[6:0] , ifu_bus_rdata_ff[63:0] } ;
-
-
-end
-else begin : icache_parity_1
-   logic [3:0]   ic_wr_parity;
-   logic [3:0]   ic_miss_buff_parity;
-   logic [135:0] ic_wr_16bytes_data ;
-   logic [70:0]  ifu_ic_debug_rd_data_in   ;
-    for (genvar i=0 ; i < 4 ; i++) begin : DATA_PGEN
-       rveven_paritygen #(16) par_bus  (.data_in   (ifu_bus_rdata_ff[((16*i)+15):(16*i)]),
-                                      .parity_out(ic_wr_parity[i]));
-       rveven_paritygen #(16) par_buff  (.data_in   (ic_miss_buff_half[((16*i)+15):(16*i)]),
-                                      .parity_out(ic_miss_buff_parity[i]));
-    end
-
-
-   for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_wr_data_loop
-      assign ic_wr_data[i][70:0]  =  {3'b0, ic_wr_16bytes_data[((68*i)+67): (68*i)]};
-   end
-
-
-
-
-
-   assign ic_debug_wr_data[70:0]   = {dec_tlu_ic_diag_pkt.icache_wrdata[70:0]} ;
-   assign ic_error_start           = ((|ic_parerr[pt.ICACHE_BANKS_WAY-1:0]) & ic_act_hit_f) | ic_rd_parity_final_err;
-
-   assign ifu_ic_debug_rd_data_in[70:0] = ic_debug_ict_array_sel_ff ? {6'b0,ictag_debug_rd_data[21],32'b0,ictag_debug_rd_data[20:0],{7-pt.ICACHE_STATUS_BITS{1'b0}},way_status[pt.ICACHE_STATUS_BITS-1:0],3'b0,ic_debug_tag_val_rd_out} :
-                                                                      ic_debug_rd_data[70:0] ;
-
-   rvdffe #(71) ifu_debug_data_ff (.*,
-                                   .en (debug_data_clken),
-                                   .din ({
-                                          ifu_ic_debug_rd_data_in[70:0]
-                                          }),
-                                   .dout({
-                                          ifu_ic_debug_rd_data[70:0]
-                                          })
-                                   );
-
-   assign ic_wr_16bytes_data[135:0] =  ifu_bus_rid_ff[0] ? {ic_wr_parity[3:0] , ifu_bus_rdata_ff[63:0] ,  ic_miss_buff_parity[3:0] , ic_miss_buff_half[63:0] } :
-                                                        {ic_miss_buff_parity[3:0] ,  ic_miss_buff_half[63:0] , ic_wr_parity[3:0] , ifu_bus_rdata_ff[63:0] } ;
-
-end
-
-
-  assign ifu_wr_data_comb_err       =  bus_ifu_wr_data_error_ff ;
-  assign ifu_wr_cumulative_err      = (ifu_wr_data_comb_err | ifu_wr_data_comb_err_ff) & ~reset_beat_cnt;
-  assign ifu_wr_cumulative_err_data =  ifu_wr_data_comb_err | ifu_wr_data_comb_err_ff ;
-
-
-  assign sel_byp_data     =  (ic_crit_wd_rdy | (miss_state == STREAM) | (miss_state == CRIT_BYP_OK));
-  assign sel_ic_data      = ~(ic_crit_wd_rdy | (miss_state == STREAM) | (miss_state == CRIT_BYP_OK) | (miss_state == MISS_WAIT)) & ~fetch_req_iccm_f & ~ifc_region_acc_fault_final_f;
-
- if (pt.ICCM_ICACHE==1) begin: iccm_icache
-  assign sel_iccm_data    =  fetch_req_iccm_f  ;
-
-  assign ic_final_data[63:0]  = ({64{sel_byp_data | sel_iccm_data | sel_ic_data}} & {ic_rd_data[63:0]} ) ;
-
-  assign ic_premux_data[63:0] = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) |
-                          ({64{sel_iccm_data}} & {iccm_rd_data[63:0]});
-
-  assign ic_sel_premux_data = sel_iccm_data | sel_byp_data ;
- end
-
-if (pt.ICCM_ONLY == 1 ) begin: iccm_only
-  assign sel_iccm_data    =  fetch_req_iccm_f  ;
-  assign ic_final_data[63:0]  = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) |
-                          ({64{sel_iccm_data}} & {iccm_rd_data[63:0]});
-  assign ic_premux_data = '0 ;
-  assign ic_sel_premux_data = '0 ;
-end
-
-if (pt.ICACHE_ONLY == 1 ) begin: icache_only
-  assign ic_final_data[63:0]  = ({64{sel_byp_data | sel_ic_data}} & {ic_rd_data[63:0]} ) ;
-  assign ic_premux_data[63:0] = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) ;
-  assign ic_sel_premux_data =  sel_byp_data ;
-end
-
-
-if (pt.NO_ICCM_NO_ICACHE == 1 ) begin: no_iccm_no_icache
-  assign ic_final_data[63:0]  = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) ;
-  assign ic_premux_data = 0 ;
-  assign ic_sel_premux_data = '0 ;
-end
-
-
-  assign ifc_bus_acc_fault_f[1:0]   =  {2{ic_byp_hit_f}} & ifu_byp_data_err_f[1:0] ;
-  assign ic_data_f[31:0]      = ic_final_data[31:0];
-
-
-
-assign fetch_req_f_qual       = ic_hit_f & ~exu_flush_final;
-assign ic_access_fault_f[1:0]  = ({2{ifc_region_acc_fault_final_f}} | ifc_bus_acc_fault_f[1:0])  & {2{~exu_flush_final}};
-assign ic_access_fault_type_f[1:0] = |iccm_rd_ecc_double_err       ? 2'b01 :
-                                     ifc_region_acc_fault_f        ? 2'b10 :
-                                     ifc_region_acc_fault_memory_f ? 2'b11 :  2'b00 ;
-
-  // right justified
-
-assign ic_fetch_val_f[1] = fetch_req_f_qual & ifu_bp_inst_mask_f & ~(vaddr_f[pt.ICACHE_BEAT_ADDR_HI:1] == {pt.ICACHE_BEAT_ADDR_HI{1'b1}}) & (err_stop_state != ERR_FETCH2);
-assign ic_fetch_val_f[0] = fetch_req_f_qual ;
-assign two_byte_instr    =  (ic_data_f[1:0] != 2'b11 )  ;
-
-/////////////////////////////////////////////////////////////////////////////////////
-//  Create full buffer...                                                          //
-/////////////////////////////////////////////////////////////////////////////////////
-     logic [63:0]       ic_miss_buff_data_in;
-     assign ic_miss_buff_data_in[63:0] = ifu_bus_rsp_rdata[63:0];
-
-     for (genvar i=0; i<pt.ICACHE_NUM_BEATS; i++) begin :  wr_flop
-
-        assign write_fill_data[i]        =   bus_ifu_wr_en & (  (pt.IFU_BUS_TAG)'(i)  == ifu_bus_rsp_tag[pt.IFU_BUS_TAG-1:0]);
-
-        rvdffe #(32) byp_data_0_ff (.*,
-                                    .en (write_fill_data[i]),
-                                    .din (ic_miss_buff_data_in[31:0]),
-                                    .dout(ic_miss_buff_data[i*2][31:0])
-                                    );
-
-        rvdffe #(32) byp_data_1_ff (.*,
-                                    .en (write_fill_data[i]),
-                                    .din (ic_miss_buff_data_in[63:32]),
-                                    .dout(ic_miss_buff_data[i*2+1][31:0])
-                                    );
-
-        assign ic_miss_buff_data_valid_in[i]  = write_fill_data[i] ? 1'b1  : (ic_miss_buff_data_valid[i]  & ~ic_act_miss_f) ;
-
-        rvdff #(1) byp_data_valid_ff (.*,
-                  .clk (active_clk),
-                  .din (ic_miss_buff_data_valid_in[i]),
-                  .dout(ic_miss_buff_data_valid[i]));
-
-        assign ic_miss_buff_data_error_in[i]  = write_fill_data[i] ? bus_ifu_wr_data_error  : (ic_miss_buff_data_error[i]  & ~ic_act_miss_f) ;
-
-        rvdff #(1) byp_data_error_ff (.*,
-                  .clk (active_clk),
-                  .din (ic_miss_buff_data_error_in[i] ),
-                  .dout(ic_miss_buff_data_error[i]));
-     end
-
-/////////////////////////////////////////////////////////////////////////////////////
-// New bypass ready                                                                //
-/////////////////////////////////////////////////////////////////////////////////////
-   logic   [pt.ICACHE_BEAT_ADDR_HI:1]  bypass_index;
-   logic   [pt.ICACHE_BEAT_ADDR_HI:3]  bypass_index_5_3_inc;
-   logic   bypass_data_ready_in;
-   logic   ic_crit_wd_rdy_new_in;
-
-   assign bypass_index[pt.ICACHE_BEAT_ADDR_HI:1] = imb_ff[pt.ICACHE_BEAT_ADDR_HI:1] ;
-   assign bypass_index_5_3_inc[pt.ICACHE_BEAT_ADDR_HI:3] = bypass_index[pt.ICACHE_BEAT_ADDR_HI:3] + 1 ;
-
-
-   assign bypass_data_ready_in = ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      & ~bypass_index[2] & ~bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      & ~bypass_index[2] &  bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      &  bypass_index[2] & ~bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]] & ic_miss_buff_data_valid_in[bypass_index_5_3_inc[pt.ICACHE_BEAT_ADDR_HI:3]] &  bypass_index[2] & bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]] & (bypass_index[pt.ICACHE_BEAT_ADDR_HI:3] == {pt.ICACHE_BEAT_ADDR_HI{1'b1}})))   ;
-
-
-
-   assign    ic_crit_wd_rdy_new_in = ( bypass_data_ready_in & crit_wd_byp_ok_ff   &  uncacheable_miss_ff &  ~exu_flush_final & ~ifu_bp_hit_taken_q_f) |
-                                     (                        crit_wd_byp_ok_ff   & ~uncacheable_miss_ff &  ~exu_flush_final & ~ifu_bp_hit_taken_q_f) |
-                                     (ic_crit_wd_rdy_new_ff & ~fetch_req_icache_f & crit_wd_byp_ok_ff    &  ~exu_flush_final) ;
-
-
-  assign byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:1]          =    ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:1]       ;
-  assign byp_fetch_index_0[pt.ICACHE_BEAT_ADDR_HI:2]        =   {ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3],1'b0} ;
-  assign byp_fetch_index_1[pt.ICACHE_BEAT_ADDR_HI:2]        =   {ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3],1'b1} ;
-  assign byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]      =    ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3]+1'b1 ;
-  assign byp_fetch_index_inc_0[pt.ICACHE_BEAT_ADDR_HI:2]    =   {byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3], 1'b0} ;
-  assign byp_fetch_index_inc_1[pt.ICACHE_BEAT_ADDR_HI:2]    =   {byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3], 1'b1} ;
-
-  assign  ifu_byp_data_err_new = (~ifu_fetch_addr_int_f[2] &  ~ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 (~ifu_fetch_addr_int_f[2] &   ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 ( ifu_fetch_addr_int_f[2] &  ~ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 ( ifu_fetch_addr_int_f[2] &   ifu_fetch_addr_int_f[1] & (ic_miss_buff_data_error[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]] | ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )) ;
-
-  assign  ifu_byp_data_err_f[1:0]  =   (ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  ? 2'b11 :
-                                      ( ifu_fetch_addr_int_f[2] &  ifu_fetch_addr_int_f[1] &   ~(ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] ) & (~miss_wrap_f & ic_miss_buff_data_error[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]])) ? 2'b10 : 2'b00;
-
-
-
-
-
-  assign ic_byp_data_only_pre_new[79:0] =  ({80{~ifu_fetch_addr_int_f[2]}} &   {ic_miss_buff_data[byp_fetch_index_inc_0][15:0],ic_miss_buff_data[byp_fetch_index_1][31:0]     , ic_miss_buff_data[byp_fetch_index_0][31:0]}) |
-                                           ({80{ ifu_fetch_addr_int_f[2]}} &   {ic_miss_buff_data[byp_fetch_index_inc_1][15:0],ic_miss_buff_data[byp_fetch_index_inc_0][31:0] , ic_miss_buff_data[byp_fetch_index_1][31:0]}) ;
-
-  assign ic_byp_data_only_new[79:0]      = ~ifu_fetch_addr_int_f[1] ? {ic_byp_data_only_pre_new[79:0]} :
-                                                                      {16'b0,ic_byp_data_only_pre_new[79:16]} ;
-
-  assign miss_wrap_f      =  (imb_ff[pt.ICACHE_TAG_INDEX_LO] != ifu_fetch_addr_int_f[pt.ICACHE_TAG_INDEX_LO] ) ;
-
-  assign miss_buff_hit_unq_f  = ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     & ~byp_fetch_index[2] & ~byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     & ~byp_fetch_index[2] &  byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     &  byp_fetch_index[2] & ~byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] & ic_miss_buff_data_valid[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]] &  byp_fetch_index[2] &  byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] &  (byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3] == {pt.ICACHE_BEAT_BITS{1'b1}})))   ;
-
-  assign stream_hit_f     =  (miss_buff_hit_unq_f & ~miss_wrap_f ) & (miss_state==STREAM) ;
-  assign stream_miss_f    = ~(miss_buff_hit_unq_f & ~miss_wrap_f ) & (miss_state==STREAM) & ifc_fetch_req_f;
-  assign stream_eol_f     =  (byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:2] == {pt.ICACHE_BEAT_BITS+1{1'b1}}) & ifc_fetch_req_f & stream_hit_f;
-
-  assign crit_byp_hit_f   =  (miss_buff_hit_unq_f ) & ((miss_state == CRIT_WRD_RDY) | (miss_state==CRIT_BYP_OK)) ;
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Figure out if you have the data to write.                                       //
-/////////////////////////////////////////////////////////////////////////////////////
-
-assign other_tag[pt.IFU_BUS_TAG-1:0] = {ifu_bus_rid_ff[pt.IFU_BUS_TAG-1:1] , ~ifu_bus_rid_ff[0] } ;
-assign second_half_available      = ic_miss_buff_data_valid[other_tag] ;
-assign write_ic_16_bytes          = second_half_available & bus_ifu_wr_en_ff ;
-assign ic_miss_buff_half[63:0]    = {ic_miss_buff_data[{other_tag,1'b1}],ic_miss_buff_data[{other_tag,1'b0}] } ;
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Parity checking logic for Icache logic.                                         //
-/////////////////////////////////////////////////////////////////////////////////////
-
-
-assign ic_rd_parity_final_err = ic_tag_perr & ~exu_flush_final & sel_ic_data & ~(ifc_region_acc_fault_final_f | (|ifc_bus_acc_fault_f)) &
-                                      (fetch_req_icache_f & ~reset_all_tags & (~miss_pending | (miss_state==HIT_U_MISS)) & ~sel_mb_addr_ff);
-
-logic [pt.ICACHE_NUM_WAYS-1:0]                   perr_err_inv_way;
-logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]   perr_ic_index_ff;
-logic                                         perr_sel_invalidate;
-logic                                         perr_sb_write_status   ;
-
-
-
-   rvdffe #(.WIDTH(pt.ICACHE_INDEX_HI-pt.ICACHE_TAG_INDEX_LO+1),.OVERRIDE(1)) perr_dat_ff    (.din(ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]), .dout(perr_ic_index_ff[pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]), .en(perr_sb_write_status),  .*);
-
-   assign perr_err_inv_way[pt.ICACHE_NUM_WAYS-1:0]   =  {pt.ICACHE_NUM_WAYS{perr_sel_invalidate}} ;
-   assign iccm_correct_ecc     = (perr_state == ECC_CORR);
-   assign dma_sb_err_state     = (perr_state == DMA_SB_ERR);
-   assign iccm_buf_correct_ecc = iccm_correct_ecc & ~dma_sb_err_state_ff;
-
-
-
-   //////////////////////////////////// Create Parity Error State Machine ///////////////////////
-   //                                   Create Parity Error State Machine                      //
-   //                                   Create Parity Error State Machine                      //
-   //                                   Create Parity Error State Machine                      //
-   //////////////////////////////////// Create Parity Error State Machine ///////////////////////
-
-
-   // FIFO state machine
-   always_comb begin  : ERROR_SM
-      perr_nxtstate            = ERR_IDLE;
-      perr_state_en            = 1'b0;
-      perr_sb_write_status     = 1'b0;
-      perr_sel_invalidate      = 1'b0;
-
-      case (perr_state)
-         ERR_IDLE: begin : err_idle
-                  perr_nxtstate         =  iccm_dma_sb_error ? DMA_SB_ERR : (ic_error_start & ~exu_flush_final) ? IC_WFF : ECC_WFF;
-                  perr_state_en         =  (((iccm_error_start | ic_error_start) & ~exu_flush_final) | iccm_dma_sb_error) & ~dec_tlu_force_halt;
-                  perr_sb_write_status  =  perr_state_en;
-         end
-         IC_WFF: begin : icache_wff    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  perr_nxtstate       =  ERR_IDLE ;
-                  perr_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_force_halt ;
-                  perr_sel_invalidate =  (dec_tlu_flush_err_wb &  dec_tlu_flush_lower_wb);
-         end
-         ECC_WFF: begin : ecc_wff
-                  perr_nxtstate       =  ((~dec_tlu_flush_err_wb &  dec_tlu_flush_lower_wb ) | dec_tlu_force_halt) ? ERR_IDLE : ECC_CORR ;
-                  perr_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_force_halt  ;
-         end
-         DMA_SB_ERR : begin : dma_sb_ecc
-                 perr_nxtstate       = dec_tlu_force_halt ? ERR_IDLE : ECC_CORR;
-                 perr_state_en       = 1'b1;
-         end
-         ECC_CORR: begin : ecc_corr
-                  perr_nxtstate       =  ERR_IDLE  ;
-                  perr_state_en       =   1'b1   ;
-         end
-         default: begin : def_case
-                  perr_nxtstate            = ERR_IDLE;
-                  perr_state_en            = 1'b0;
-                  perr_sb_write_status     = 1'b0;
-                  perr_sel_invalidate      = 1'b0;
-         end
-      endcase
-   end
-
-   rvdffs #(($bits(perr_state_t))) perr_state_ff (.clk(active_clk), .din(perr_nxtstate), .dout({perr_state}), .en(perr_state_en),   .*);
-
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   always_comb begin  : ERROR_STOP_FETCH
-      err_stop_nxtstate            = ERR_STOP_IDLE;
-      err_stop_state_en            = 1'b0;
-      err_stop_fetch               = 1'b0;
-      iccm_correction_state        = 1'b0;
-
-      case (err_stop_state)
-         ERR_STOP_IDLE: begin : err_stop_idle
-                  err_stop_nxtstate         =  ERR_FETCH1;
-                  err_stop_state_en         =  dec_tlu_flush_err_wb & (perr_state  == ECC_WFF) & ~dec_tlu_force_halt;
-         end
-         ERR_FETCH1: begin : err_fetch1    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  err_stop_nxtstate       =  (dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : ((ifu_fetch_val[1:0] == 2'b11) | (ifu_fetch_val[0] & two_byte_instr))   ?  ERR_STOP_FETCH : ifu_fetch_val[0] ? ERR_FETCH2 :  ERR_FETCH1;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | ifu_fetch_val[0] | ifu_bp_hit_taken_q_f | dec_tlu_force_halt;
-                  err_stop_fetch          =   ((ifu_fetch_val[1:0] == 2'b11) | (ifu_fetch_val[0] & two_byte_instr))  & ~(exu_flush_final | dec_tlu_i0_commit_cmt);
-                  iccm_correction_state   = 1'b1;
-
-        end
-         ERR_FETCH2: begin : err_fetch2    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  err_stop_nxtstate       =  (dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : ifu_fetch_val[0] ?  ERR_STOP_FETCH : ERR_FETCH2;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | ifu_fetch_val[0] | dec_tlu_force_halt ;
-                  err_stop_fetch          =   ifu_fetch_val[0] & ~exu_flush_final & ~dec_tlu_i0_commit_cmt ;
-                  iccm_correction_state   = 1'b1;
-
-         end
-         ERR_STOP_FETCH: begin : ecc_wff
-                  err_stop_nxtstate       =  ( (dec_tlu_flush_lower_wb & ~dec_tlu_flush_err_wb) | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : dec_tlu_flush_err_wb ? ERR_FETCH1 : ERR_STOP_FETCH ;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb |  dec_tlu_i0_commit_cmt | dec_tlu_force_halt   ;
-                  err_stop_fetch          =  1'b1;
-                  iccm_correction_state   = 1'b1;
-
-         end
-         default: begin : def_case
-                  err_stop_nxtstate            = ERR_STOP_IDLE;
-                  err_stop_state_en            = 1'b0;
-                  err_stop_fetch               = 1'b0 ;
-                  iccm_correction_state   = 1'b1;
-
-         end
-      endcase
-   end
-   rvdffs #(($bits(err_stop_state_t))) err_stop_state_ff (.clk(active_clk), .din(err_stop_nxtstate), .dout({err_stop_state}), .en(err_stop_state_en),   .*);
-
-
-
-   assign bus_ifu_bus_clk_en =  ifu_bus_clk_en ;
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign busclk = 1'b0;
-   assign busclk_force = 1'b0;
-`else
-   rvclkhdr bus_clk_f(.en(bus_ifu_bus_clk_en), .l1clk(busclk), .*);
-   rvclkhdr bus_clk(.en(bus_ifu_bus_clk_en | dec_tlu_force_halt), .l1clk(busclk_force), .*);
-`endif
-
-
-
-   assign  scnd_miss_req = scnd_miss_req_q & ~exu_flush_final;
-
-   assign  ifc_bus_ic_req_ff_in  = (ic_act_miss_f | bus_cmd_req_hold | ifu_bus_cmd_valid) & ~dec_tlu_force_halt & ~((bus_cmd_beat_count== {pt.ICACHE_BEAT_BITS{1'b1}}) & ifu_bus_cmd_valid & ifu_bus_cmd_ready & miss_pending);
-
-   rvdff_fpga #(1) bus_ic_req_ff2(.*, .clk(busclk_force), .clken(bus_ifu_bus_clk_en | dec_tlu_force_halt), .rawclk(clk), .din(ifc_bus_ic_req_ff_in), .dout(ifu_bus_cmd_valid));
-
-   assign    bus_cmd_req_in  = (ic_act_miss_f | bus_cmd_req_hold) & ~bus_cmd_sent & ~dec_tlu_force_halt ; // hold until first command sent
-
-
-
-    // AXI command signals
-    //  Read Channel
-    assign ifu_axi_arvalid               =  ifu_bus_cmd_valid ;
-    assign ifu_axi_arid[pt.IFU_BUS_TAG-1:0] = ((pt.IFU_BUS_TAG)'(bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0])) & {pt.IFU_BUS_TAG{ifu_bus_cmd_valid}};
-    assign ifu_axi_araddr[31:0]          =   {ifu_ic_req_addr_f[31:3],3'b0}  & {32{ifu_bus_cmd_valid}};
-    assign ifu_axi_arsize[2:0]           =  3'b011;
-    assign ifu_axi_arprot[2:0]           = 3'b101;
-    assign ifu_axi_arcache[3:0]          = 4'b1111;
-    assign ifu_axi_arregion[3:0]         = ifu_ic_req_addr_f[31:28];
-    assign ifu_axi_arlen[7:0]            = '0;
-    assign ifu_axi_arburst[1:0]          = 2'b01;
-    assign ifu_axi_arqos[3:0]            = '0;
-    assign ifu_axi_arlock                = '0;
-    assign ifu_axi_rready                = 1'b1;
-
-    //  Write Channel
-    assign ifu_axi_awvalid                  = '0 ;
-    assign ifu_axi_awid[pt.IFU_BUS_TAG-1:0] = '0 ;
-    assign ifu_axi_awaddr[31:0]             = '0 ;
-    assign ifu_axi_awsize[2:0]              = '0 ;
-    assign ifu_axi_awprot[2:0]              = '0;
-    assign ifu_axi_awcache[3:0]             = '0 ;
-    assign ifu_axi_awregion[3:0]            = '0 ;
-    assign ifu_axi_awlen[7:0]               = '0;
-    assign ifu_axi_awburst[1:0]             = '0 ;
-    assign ifu_axi_awqos[3:0]               = '0;
-    assign ifu_axi_awlock                   = '0;
-
-    assign ifu_axi_wvalid                =  '0;
-    assign ifu_axi_wstrb[7:0]            =  '0;
-    assign ifu_axi_wdata[63:0]           =  '0;
-    assign ifu_axi_wlast                 =  '0;
-    assign ifu_axi_bready                =  '0;
-
-
-   assign ifu_bus_arready_unq     =  ifu_axi_arready ;
-   assign ifu_bus_rvalid_unq      =  ifu_axi_rvalid ;
-   assign ifu_bus_arvalid         =  ifu_axi_arvalid ;
-
-   rvdff_fpga #(1)               bus_rdy_ff      (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_arready_unq),            .dout(ifu_bus_arready_unq_ff));
-   rvdff_fpga #(1)               bus_rsp_vld_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_rvalid_unq),             .dout(ifu_bus_rvalid_unq_ff));
-   rvdff_fpga #(1)               bus_cmd_ff      (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_arvalid),                .dout(ifu_bus_arvalid_ff));
-   rvdff_fpga #(2)               bus_rsp_cmd_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_axi_rresp[1:0]),             .dout(ifu_bus_rresp_ff[1:0]));
-   rvdff_fpga #(pt.IFU_BUS_TAG)  bus_rsp_tag_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_axi_rid[pt.IFU_BUS_TAG-1:0]),.dout(ifu_bus_rid_ff[pt.IFU_BUS_TAG-1:0]));
-   rvdffe #(64)                  bus_data_ff     (.*, .clk(clk),     .din(ifu_axi_rdata[63:0]),            .dout(ifu_bus_rdata_ff[63:0]), .en(ifu_bus_clk_en & ifu_axi_rvalid));
-
-   assign ifu_bus_cmd_ready = ifu_axi_arready ;
-   assign ifu_bus_rsp_valid = ifu_axi_rvalid ;
-   assign ifu_bus_rsp_ready = ifu_axi_rready ;
-   assign ifu_bus_rsp_tag[pt.IFU_BUS_TAG-1:0] = ifu_axi_rid[pt.IFU_BUS_TAG-1:0] ;
-   assign ifu_bus_rsp_rdata[63:0] = ifu_axi_rdata[63:0] ;
-   assign ifu_bus_rsp_opc[1:0] = {ifu_axi_rresp[1:0]} ;
-
-
-
-
-
-
-
-
-
-   // Create write signals so we can write to the miss-buffer directly from the bus.
-
-   assign ifu_bus_rvalid            =  ifu_bus_rsp_valid & bus_ifu_bus_clk_en ;
-
-
-
-   assign ifu_bus_arready            =  ifu_bus_arready_unq    & bus_ifu_bus_clk_en    ;
-   assign ifu_bus_arready_ff         =  ifu_bus_arready_unq_ff & bus_ifu_bus_clk_en_ff ;
-
-   assign ifu_bus_rvalid_ff          =  ifu_bus_rvalid_unq_ff & bus_ifu_bus_clk_en_ff ;
-   assign bus_cmd_sent               =  ifu_bus_arvalid & ifu_bus_arready & miss_pending & ~dec_tlu_force_halt;
-   assign bus_inc_data_beat_cnt      = (bus_ifu_wr_en_ff & ~bus_last_data_beat & ~dec_tlu_force_halt) ;
-   assign bus_reset_data_beat_cnt    =  ic_act_miss_f | (bus_ifu_wr_en_ff &  bus_last_data_beat) | dec_tlu_force_halt;
-   assign bus_hold_data_beat_cnt     = ~bus_inc_data_beat_cnt & ~bus_reset_data_beat_cnt ;
-
-   assign bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] = ({pt.ICACHE_BEAT_BITS{bus_reset_data_beat_cnt}} & (pt.ICACHE_BEAT_BITS)'(0)) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_inc_data_beat_cnt}}   & (bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] + {{pt.ICACHE_BEAT_BITS-1{1'b0}},1'b1})) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_hold_data_beat_cnt}}  &  bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]);
-
-
-   assign last_data_recieved_in =  (bus_ifu_wr_en_ff &  bus_last_data_beat & ~scnd_miss_req) | (last_data_recieved_ff & ~ic_act_miss_f) ;
-
-
-
-// Request Address Count
-   assign bus_new_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] = (~miss_pending                    ) ? imb_ff[pt.ICACHE_BEAT_ADDR_HI:3] :
-                                                           (                scnd_miss_req_q  ) ? imb_scnd_ff[pt.ICACHE_BEAT_ADDR_HI:3] :
-                                                           ( bus_cmd_sent                    ) ? (bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] + 3'b001) :
-                                                                                                  bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0];
-
-   rvdff_fpga #(pt.ICACHE_BEAT_BITS)  bus_rd_addr_ff (.*,  .clk(busclk_reset),  .clken (bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .rawclk(clk), .din ({bus_new_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0]}), .dout({bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0]}));
-
-
-
-// command beat Count
-   assign bus_inc_cmd_beat_cnt              =  ifu_bus_cmd_valid    &  ifu_bus_cmd_ready & miss_pending & ~dec_tlu_force_halt;
-   assign bus_reset_cmd_beat_cnt_0          =  (ic_act_miss_f        & ~uncacheable_miss_in) | dec_tlu_force_halt ;
-   assign bus_reset_cmd_beat_cnt_secondlast =  ic_act_miss_f        &  uncacheable_miss_in ;
-   assign bus_hold_cmd_beat_cnt             = ~bus_inc_cmd_beat_cnt & ~(ic_act_miss_f | scnd_miss_req | dec_tlu_force_halt) ;
-   assign bus_cmd_beat_en                   =  bus_inc_cmd_beat_cnt | ic_act_miss_f | dec_tlu_force_halt;
-
-   assign bus_new_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0] =  ({pt.ICACHE_BEAT_BITS{bus_reset_cmd_beat_cnt_0}}       & (pt.ICACHE_BEAT_BITS)'(0) ) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_reset_cmd_beat_cnt_secondlast}} & (pt.ICACHE_BEAT_BITS)'(pt.ICACHE_SCND_LAST)) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_inc_cmd_beat_cnt}}              & (bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0] + {{pt.ICACHE_BEAT_BITS-1{1'b0}}, 1'b1})) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_hold_cmd_beat_cnt}}             &  bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]) ;
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign busclk_reset = 1'b0;
-`else
-   rvclkhdr bus_clk_reset(.en(bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .l1clk(busclk_reset), .*);
-`endif
-
-
-
-   rvdffs_fpga #(pt.ICACHE_BEAT_BITS)  bus_cmd_beat_ff (.*, .clk(busclk_reset), .clken (bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .rawclk(clk), .en (bus_cmd_beat_en), .din ({bus_new_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]}),
-                    .dout({bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]}));
-
-
-    assign bus_last_data_beat     =  uncacheable_miss_ff ? (bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] == {{pt.ICACHE_BEAT_BITS-1{1'b0}},1'b1}) : (&bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]);
-
-   assign  bus_ifu_wr_en            =  ifu_bus_rvalid     & miss_pending ;
-   assign  bus_ifu_wr_en_ff         =  ifu_bus_rvalid_ff  & miss_pending ;
-   assign  bus_ifu_wr_en_ff_q       =  ifu_bus_rvalid_ff  & miss_pending & ~uncacheable_miss_ff & ~(|ifu_bus_rresp_ff[1:0]) & write_ic_16_bytes; // qualify with no-error conditions ;
-   assign  bus_ifu_wr_en_ff_wo_err  =  ifu_bus_rvalid_ff & miss_pending &  ~uncacheable_miss_ff;
-
-
-   rvdffie #(10) misc_ff
-       ( .*,
-         .clk(free_l2clk),
-         .din( {ic_act_miss_f,        ifu_wr_cumulative_err,exu_flush_final,  ic_crit_wd_rdy_new_in,bus_ifu_bus_clk_en,   scnd_miss_req_in,bus_cmd_req_in,  last_data_recieved_in,
-ifc_dma_access_ok_d,   dma_iccm_req}),
-         .dout({ic_act_miss_f_delayed,ifu_wr_data_comb_err_ff,  flush_final_f,ic_crit_wd_rdy_new_ff,bus_ifu_bus_clk_en_ff,scnd_miss_req_q, bus_cmd_req_hold,last_data_recieved_ff,
-ifc_dma_access_ok_prev,dma_iccm_req_f})
-         );
-
-   rvdffie #(.WIDTH(pt.ICACHE_BEAT_BITS+5),.OVERRIDE(1)) misc1_ff
-       ( .*,
-         .clk(free_l2clk),
-         .din( {reset_ic_in,sel_mb_addr,   bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0],ifc_region_acc_fault_memory_bf,ic_debug_rd_en,       ic_debug_rd_en_ff}),
-         .dout({reset_ic_ff,sel_mb_addr_ff,bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0],    ifc_region_acc_fault_memory_f, ic_debug_rd_en_ff,ifu_ic_debug_rd_data_valid})
-         );
-
-   assign    reset_tag_valid_for_miss = ic_act_miss_f_delayed & (miss_state == CRIT_BYP_OK) & ~uncacheable_miss_ff;
-   assign    bus_ifu_wr_data_error    = |ifu_bus_rsp_opc[1:0] &  ifu_bus_rvalid  & miss_pending;
-   assign    bus_ifu_wr_data_error_ff = |ifu_bus_rresp_ff[1:0] &  ifu_bus_rvalid_ff  & miss_pending;
-
-
-   assign ic_crit_wd_rdy   =  ic_crit_wd_rdy_new_in | ic_crit_wd_rdy_new_ff ;
-   assign last_beat        =  bus_last_data_beat & bus_ifu_wr_en_ff;
-   assign reset_beat_cnt    = bus_reset_data_beat_cnt ;
-
-// DMA
-   // Making sure that the dma_access is allowed when we have 2 back to back dma_access_ok. Also gating with current state == idle
-   assign ifc_dma_access_ok_d  = ifc_dma_access_ok &  ~iccm_correct_ecc & ~iccm_dma_sb_error;
-   assign ifc_dma_access_q_ok  = ifc_dma_access_ok &  ~iccm_correct_ecc & ifc_dma_access_ok_prev &  (perr_state == ERR_IDLE)  & ~iccm_dma_sb_error;
-   assign iccm_ready           = ifc_dma_access_q_ok ;
-
-   logic [1:0]        iccm_ecc_word_enable;
-
-    if (pt.ICCM_ENABLE == 1 ) begin: iccm_enabled
-         logic  [3:2] dma_mem_addr_ff  ;
-         logic  iccm_dma_rden    ;
-
-         logic  iccm_dma_ecc_error_in;
-         logic  [13:0] dma_mem_ecc;
-         logic  [63:0] iccm_dma_rdata_in;
-         logic  [31:0] iccm_dma_rdata_1_muxed;
-         logic [1:0] [31:0] iccm_corrected_data;
-         logic [1:0] [06:0] iccm_corrected_ecc;
-
-
-         logic [1:0]        iccm_double_ecc_error;
-
-
-         logic [pt.ICCM_BITS-1:2]       iccm_rw_addr_f;
-
-         logic [31:0]       iccm_corrected_data_f_mux;
-         logic [06:0]       iccm_corrected_ecc_f_mux;
-         logic              iccm_dma_rvalid_in;
-         logic [77:0]       iccm_rdmux_data;
-         logic              iccm_rd_ecc_single_err_hold_in ;
-         logic [2:0]        dma_mem_tag_ff;
-
-
-
-
-         assign iccm_wren          =  (ifc_dma_access_q_ok & dma_iccm_req &  dma_mem_write) | iccm_correct_ecc;
-         assign iccm_rden          =  (ifc_dma_access_q_ok & dma_iccm_req & ~dma_mem_write) | (ifc_iccm_access_bf & ifc_fetch_req_bf);
-         assign iccm_dma_rden      =  (ifc_dma_access_q_ok & dma_iccm_req & ~dma_mem_write)                     ;
-         assign iccm_wr_size[2:0]  =  {3{dma_iccm_req}}    & dma_mem_sz[2:0] ;
-
-         rvecc_encode  iccm_ecc_encode0 (
-                           .din(dma_mem_wdata[31:0]),
-                           .ecc_out(dma_mem_ecc[6:0]));
-
-         rvecc_encode  iccm_ecc_encode1 (
-                           .din(dma_mem_wdata[63:32]),
-                           .ecc_out(dma_mem_ecc[13:7]));
-
-        assign iccm_wr_data[77:0]   =  (iccm_correct_ecc & ~(ifc_dma_access_q_ok & dma_iccm_req)) ?  {iccm_ecc_corr_data_ff[38:0], iccm_ecc_corr_data_ff[38:0]} :
-                                       {dma_mem_ecc[13:7],dma_mem_wdata[63:32], dma_mem_ecc[6:0],dma_mem_wdata[31:0]};
-
-         assign iccm_dma_rdata_1_muxed[31:0] = dma_mem_addr_ff[2] ?  iccm_corrected_data[0][31:0] : iccm_corrected_data[1][31:0] ;
-         assign iccm_dma_rdata_in[63:0]      = iccm_dma_ecc_error_in ? {2{dma_mem_addr[31:0]}} : {iccm_dma_rdata_1_muxed[31:0], iccm_corrected_data[0]};
-         assign iccm_dma_ecc_error_in   =   |(iccm_double_ecc_error[1:0]);
-
-         rvdffe    #(64) dma_data_ff      (.*, .clk(clk), .en(iccm_dma_rvalid_in),  .din(iccm_dma_rdata_in[63:0]), .dout(iccm_dma_rdata[63:0]));
-         rvdffie   #(11) dma_misc_bits    (.*, .clk(free_l2clk), .din({dma_mem_tag[2:0],
-                                                                       dma_mem_tag_ff[2:0],
-                                                                       dma_mem_addr[3:2],
-                                                                       iccm_dma_rden,
-                                                                       iccm_dma_rvalid_in,
-                                                                       iccm_dma_ecc_error_in }),
-                                                                .dout({dma_mem_tag_ff[2:0],
-                                                                       iccm_dma_rtag[2:0],
-                                                                       dma_mem_addr_ff[3:2],
-                                                                       iccm_dma_rvalid_in,
-                                                                       iccm_dma_rvalid,
-                                                                       iccm_dma_ecc_error }));
-
-         assign iccm_rw_addr[pt.ICCM_BITS-1:1]    = (  ifc_dma_access_q_ok & dma_iccm_req  & ~iccm_correct_ecc) ? dma_mem_addr[pt.ICCM_BITS-1:1] :
-                                                 (~(ifc_dma_access_q_ok & dma_iccm_req) &  iccm_correct_ecc) ? {iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2],1'b0} : ifc_fetch_addr_bf[pt.ICCM_BITS-1:1] ;
-
-
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// ECC checking logic for ICCM data.                                               //
-/////////////////////////////////////////////////////////////////////////////////////
-
-  logic [3:0] ic_fetch_val_int_f;
-  logic [3:0] ic_fetch_val_shift_right;
-  assign ic_fetch_val_int_f[3:0] = {2'b00 , ic_fetch_val_f[1:0] } ;
-  assign ic_fetch_val_shift_right[3:0] = {ic_fetch_val_int_f << ifu_fetch_addr_int_f[1] } ;
-
-   assign iccm_rdmux_data[77:0] = iccm_rd_data_ecc[77:0];
-   for (genvar i=0; i < 2 ; i++) begin : ICCM_ECC_CHECK
-      assign iccm_ecc_word_enable[i] = ((|ic_fetch_val_shift_right[(2*i+1):(2*i)] & ~exu_flush_final & sel_iccm_data) | iccm_dma_rvalid_in) & ~dec_tlu_core_ecc_disable;
-   rvecc_decode  ecc_decode (
-                           .en(iccm_ecc_word_enable[i]),
-                           .sed_ded ( 1'b0 ),    // 1 : means only detection
-                           .din(iccm_rdmux_data[(39*i+31):(39*i)]),
-                           .ecc_in(iccm_rdmux_data[(39*i+38):(39*i+32)]),
-                           .dout(iccm_corrected_data[i][31:0]),
-                           .ecc_out(iccm_corrected_ecc[i][6:0]),
-                           .single_ecc_error(iccm_single_ecc_error[i]),
-                           .double_ecc_error(iccm_double_ecc_error[i]));
-end
-
-  assign iccm_rd_ecc_single_err  = (|iccm_single_ecc_error[1:0] ) & ifc_iccm_access_f & ifc_fetch_req_f;
-  assign iccm_rd_ecc_double_err[1:0]  = ~ifu_fetch_addr_int_f[1] ? ({iccm_double_ecc_error[0], iccm_double_ecc_error[0]} ) & {2{ifc_iccm_access_f}} :
-                                                                   ({iccm_double_ecc_error[1], iccm_double_ecc_error[0]} ) & {2{ifc_iccm_access_f}} ;
-
-  assign iccm_corrected_data_f_mux[31:0] = iccm_single_ecc_error[0] ? iccm_corrected_data[0] : iccm_corrected_data[1];
-  assign iccm_corrected_ecc_f_mux[6:0]   = iccm_single_ecc_error[0] ? iccm_corrected_ecc[0]  : iccm_corrected_ecc[1];
-
-  assign iccm_ecc_write_status           = ((iccm_rd_ecc_single_err & ~iccm_rd_ecc_single_err_ff)  & ~exu_flush_final) | iccm_dma_sb_error;
-  assign iccm_rd_ecc_single_err_hold_in  = (iccm_rd_ecc_single_err | iccm_rd_ecc_single_err_ff) & ~exu_flush_final ;
-  assign iccm_error_start                =  iccm_rd_ecc_single_err;
-  assign iccm_ecc_corr_index_in[pt.ICCM_BITS-1:2] = iccm_single_ecc_error[0] ? iccm_rw_addr_f[pt.ICCM_BITS-1:2] : iccm_rw_addr_f[pt.ICCM_BITS-1:2] + 1'b1 ;
-
-   rvdffie #(pt.ICCM_BITS-1) iccm_index_f   (.*, .clk(free_l2clk), .din({iccm_rw_addr[pt.ICCM_BITS-1:2],
-                                                                         iccm_rd_ecc_single_err_hold_in
-                                                                                                       }),
-                                                                  .dout({iccm_rw_addr_f[pt.ICCM_BITS-1:2],
-                                                                         iccm_rd_ecc_single_err_ff}));
-
-   rvdffe #((39+(pt.ICCM_BITS-2)))      ecc_dat0_ff  (
-                                                      .clk(clk),
-                                                      .din({iccm_corrected_ecc_f_mux[6:0],  iccm_corrected_data_f_mux[31:0],iccm_ecc_corr_index_in[pt.ICCM_BITS-1:2]}),
-                                                      .dout({iccm_ecc_corr_data_ff[38:0]   ,iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2]}),
-                                                      .en(iccm_ecc_write_status),
-                                                      .*
-                                                      );
-
-     end else begin : iccm_disabled
-         assign iccm_dma_rvalid = 1'b0 ;
-         assign iccm_dma_ecc_error = 1'b0 ;
-         assign iccm_dma_rdata[63:0] = '0 ;
-         assign iccm_single_ecc_error = '0 ;
-         assign iccm_dma_rtag         = '0 ;
-
-
-
-
-
-
-         assign iccm_rd_ecc_single_err                 = 1'b0 ;
-         assign iccm_rd_ecc_double_err                 = '0 ;
-         assign iccm_rd_ecc_single_err_ff              = 1'b0 ;
-         assign iccm_error_start                         = 1'b0;
-         assign iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2]  =  '0;
-         assign iccm_ecc_corr_data_ff[38:0]            =  '0;
-         assign iccm_ecc_write_status                  =  '0;
-
-
-
-
-
-
-    end
-
-
-////// ICCM signals
-
-
- assign   ic_rd_en    =  (ifc_fetch_req_bf & ~ifc_fetch_uncacheable_bf & ~ifc_iccm_access_bf  &
-                            ~(((miss_state == STREAM) & ~miss_state_en)                                       |
-                              ((miss_state == CRIT_BYP_OK) & ~miss_state_en)                                  |
-                              ((miss_state == STALL_SCND_MISS) & ~miss_state_en)                              |
-                              ((miss_state == MISS_WAIT) & ~miss_state_en)                                    |
-                              ((miss_state == CRIT_WRD_RDY) & ~miss_state_en)  |
-                              ((miss_state == CRIT_BYP_OK) &  miss_state_en &  (miss_nxtstate == MISS_WAIT))  ))  |
-                             ( ifc_fetch_req_bf & exu_flush_final  & ~ifc_fetch_uncacheable_bf & ~ifc_iccm_access_bf )     ;
-
-logic   ic_real_rd_wp_unused;
-assign  ic_real_rd_wp_unused  =  (ifc_fetch_req_bf &  ~ifc_iccm_access_bf  &  ~ifc_region_acc_fault_final_bf & ~dec_tlu_fence_i_wb & ~stream_miss_f & ~ic_act_miss_f &
-                            ~(((miss_state == STREAM) & ~miss_state_en) |
-                              ((miss_state == CRIT_BYP_OK) & ~miss_state_en & ~(miss_nxtstate == MISS_WAIT)) |
-                              ((miss_state == CRIT_BYP_OK) &  miss_state_en &  (miss_nxtstate == MISS_WAIT)) |
-                              ((miss_state == MISS_WAIT) & ~miss_state_en) |
-                              ((miss_state == STALL_SCND_MISS) & ~miss_state_en)  |
-                              ((miss_state == CRIT_WRD_RDY) & ~miss_state_en)  |
-                              ((miss_nxtstate == STREAM) &  miss_state_en)  |
-                              ((miss_state == SCND_MISS) & ~miss_state_en))) |
-                          (ifc_fetch_req_bf &  ~ifc_iccm_access_bf  &  ~ifc_region_acc_fault_final_bf & ~dec_tlu_fence_i_wb & ~stream_miss_f & exu_flush_final)  ;
-
-
-assign ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] = bus_ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] & {pt.ICACHE_NUM_WAYS{write_ic_16_bytes}};
-assign ic_write_stall                =  write_ic_16_bytes &  ~((((miss_state== CRIT_BYP_OK) | ((miss_state==STREAM) & ~(exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f ))) & ~(bus_ifu_wr_en_ff & last_beat & ~uncacheable_miss_ff)));
-
-
-
-
-///////////////////////////////////////////////////////////////
-// Icache status and LRU
-///////////////////////////////////////////////////////////////
-logic [pt.ICACHE_NUM_WAYS-1:0] ic_tag_valid_unq;
-if (pt.ICACHE_ENABLE == 1 ) begin: icache_enabled
-   assign  ic_valid  = ~ifu_wr_cumulative_err_data & ~(reset_ic_in | reset_ic_ff) & ~reset_tag_valid_for_miss;
-
-   assign ifu_status_wr_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] = ((ic_debug_rd_en | ic_debug_wr_en ) & ic_debug_tag_array) ?
-                                                                           ic_debug_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] :
-                                                                           ifu_status_wr_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO];
-
-   // status
-
-         assign way_status_wr_en_w_debug = way_status_wr_en | (ic_debug_wr_en  & ic_debug_tag_array);
-
-         assign way_status_new_w_debug[pt.ICACHE_STATUS_BITS-1:0]  = (ic_debug_wr_en  & ic_debug_tag_array) ? (pt.ICACHE_STATUS_BITS == 1) ? ic_debug_wr_data[4] : ic_debug_wr_data[6:4] :
-                                                way_status_new[pt.ICACHE_STATUS_BITS-1:0] ;
-
-   rvdffie #(.WIDTH(pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO+1+pt.ICACHE_STATUS_BITS),.OVERRIDE(1))  status_misc_ff
-     (.*,
-      .clk(free_l2clk),
-      .din({ ifu_status_wr_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO], way_status_wr_en_w_debug, way_status_new_w_debug[pt.ICACHE_STATUS_BITS-1:0]}),
-      .dout({ifu_status_wr_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],      way_status_wr_en_ff,      way_status_new_ff[pt.ICACHE_STATUS_BITS-1:0]} )
-      );
-
-   logic [(pt.ICACHE_TAG_DEPTH/8)-1 : 0] way_status_clken;
-   logic [(pt.ICACHE_TAG_DEPTH/8)-1 : 0] way_status_clk;
-
-   for (genvar i=0 ; i<pt.ICACHE_TAG_DEPTH/8 ; i++) begin : CLK_GRP_WAY_STATUS
-      assign way_status_clken[i] = (ifu_status_wr_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+3] == i );
-     `ifdef RV_FPGA_OPTIMIZE
-        assign way_status_clk[i] = 1'b0;
-     `else
-           rvclkhdr way_status_cgc ( .en(way_status_clken[i]),   .l1clk(way_status_clk[i]), .* );
-     `endif
-
-
-      for (genvar j=0 ; j<8 ; j++) begin : WAY_STATUS
-         rvdffs_fpga #(pt.ICACHE_STATUS_BITS) ic_way_status (.*,
-                   .clk(way_status_clk[i]),
-                   .clken(way_status_clken[i]),
-                   .rawclk(clk),
-                   .en(((ifu_status_wr_addr_ff[pt.ICACHE_TAG_INDEX_LO+2:pt.ICACHE_TAG_INDEX_LO] == j) & way_status_wr_en_ff)),
-                   .din(way_status_new_ff[pt.ICACHE_STATUS_BITS-1:0]),
-                   .dout(way_status_out[8*i+j]));
-      end  // WAY_STATUS
-   end  // CLK_GRP_WAY_STATUS
-
-  always_comb begin : way_status_out_mux
-      way_status[pt.ICACHE_STATUS_BITS-1:0] = '0 ;
-      for (int j=0; j< pt.ICACHE_TAG_DEPTH; j++) begin : status_mux_loop
-        if (ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO)'(j)) begin : mux_out
-         way_status[pt.ICACHE_STATUS_BITS-1:0] =  way_status_out[j];
-        end
-      end
-  end
-
-         assign ifu_ic_rw_int_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] = ((ic_debug_rd_en | ic_debug_wr_en ) & ic_debug_tag_array) ?
-                                                                        ic_debug_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] :
-                                                                        ifu_ic_rw_int_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO];
-         assign ifu_tag_wren_w_debug[pt.ICACHE_NUM_WAYS-1:0] = ifu_tag_wren[pt.ICACHE_NUM_WAYS-1:0] | ic_debug_tag_wr_en[pt.ICACHE_NUM_WAYS-1:0] ;
-
-         assign ic_valid_w_debug = (ic_debug_wr_en & ic_debug_tag_array) ? ic_debug_wr_data[0] : ic_valid;
-
-         rvdffie #(pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO+pt.ICACHE_NUM_WAYS+1) tag_addr_ff (.*,
-                                                                                              .clk(free_l2clk),
-                                                                                              .din({ifu_ic_rw_int_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],
-                                                                                                    ifu_tag_wren_w_debug[pt.ICACHE_NUM_WAYS-1:0],
-                                                                                                    ic_valid_w_debug}),
-                                                                                              .dout({ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],
-                                                                                                     ifu_tag_wren_ff[pt.ICACHE_NUM_WAYS-1:0],
-                                                                                                     ic_valid_ff})
-                                                                                              );
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_DEPTH-1:0] ic_tag_valid_out ;
-
-   logic [(pt.ICACHE_TAG_DEPTH/32)-1:0] [pt.ICACHE_NUM_WAYS-1:0] tag_valid_clken ;
-   logic [(pt.ICACHE_TAG_DEPTH/32)-1:0] [pt.ICACHE_NUM_WAYS-1:0] tag_valid_clk   ;
-
-   for (genvar i=0 ; i<pt.ICACHE_TAG_DEPTH/32 ; i++) begin : CLK_GRP_TAG_VALID
-      for (genvar j=0; j<pt.ICACHE_NUM_WAYS; j++) begin : way_clken
-      if (pt.ICACHE_TAG_DEPTH == 32 ) begin
-        assign tag_valid_clken[i][j] =  ifu_tag_wren_ff[j] | perr_err_inv_way[j] | reset_all_tags;
-      end else begin
-         assign tag_valid_clken[i][j] = (((ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+5] == i ) &  ifu_tag_wren_ff[j] ) |
-                                        ((perr_ic_index_ff     [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+5] == i ) &  perr_err_inv_way[j]) | reset_all_tags);
-      end
-
-     `ifdef RV_FPGA_OPTIMIZE
-        assign tag_valid_clk[i][j]  = 1'b0;
-     `else
-           rvclkhdr way_status_cgc ( .en(tag_valid_clken[i][j]),   .l1clk(tag_valid_clk[i][j]), .* );
-     `endif
-
-
-
-      for (genvar k=0 ; k<32 ; k++) begin : TAG_VALID
-         rvdffs_fpga #(1) ic_way_tagvalid_dup (.*,
-                   .clk(tag_valid_clk[i][j]),
-                   .clken(tag_valid_clken[i][j]),
-                   .rawclk(clk),
-                   .en(((ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (k + 32*i)) & ifu_tag_wren_ff[j] ) |
-                       ((perr_ic_index_ff     [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (k + 32*i)) & perr_err_inv_way[j]) | reset_all_tags),
-                   .din(ic_valid_ff & ~reset_all_tags & ~perr_sel_invalidate),
-                   .dout(ic_tag_valid_out[j][32*i+k]));
-      end
-      end
-   end
-
-
-  always_comb begin : tag_valid_out_mux
-      ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0] = '0;
-      for (int j=0; j< pt.ICACHE_TAG_DEPTH; j++) begin : tag_valid_loop
-        if (ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO)'(j)) begin : valid_out
-           for ( int k=0; k<pt.ICACHE_NUM_WAYS; k++) begin
-             ic_tag_valid_unq[k] |= ic_tag_valid_out[k][j];
-        end
-      end
-      end
-  end
-   //   four-way set associative - three bits
-//   each bit represents one branch point in a binary decision tree; let 1
-//   represent that the left side has been referenced more recently than the
-//   right side, and 0 vice-versa
-//
-//              are all 4 ways valid?
-//                   /       \
-//                  |        no, use an invalid way.
-//                  |
-//                  |
-//             bit_0 == 0?             state | replace      ref to | next state
-//               /       \             ------+--------      -------+-----------
-//              y         n             x00  |  way_0      way_0 |    _11
-//             /           \            x10  |  way_1      way_1 |    _01
-//      bit_1 == 0?    bit_2 == 0?      0x1  |  way_2      way_2 |    1_0
-//        /    \          /    \        1x1  |  way_3      way_3 |    0_0
-//       y      n        y      n
-//      /        \      /        \        ('x' means don't care       ('_' means unchanged)
-//    way_0    way_1  way_2     way_3      don't care)
-
-   if (pt.ICACHE_NUM_WAYS == 4) begin: four_way_plru
-   assign replace_way_mb_any[3] = ( way_status_mb_ff[2]  & way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[3]& tagv_mb_ff[2] &  tagv_mb_ff[1] &  tagv_mb_ff[0]) ;
-   assign replace_way_mb_any[2] = (~way_status_mb_ff[2]  & way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[2]& tagv_mb_ff[1] &  tagv_mb_ff[0]) ;
-   assign replace_way_mb_any[1] = ( way_status_mb_ff[1] & ~way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[1]& tagv_mb_ff[0] ) ;
-   assign replace_way_mb_any[0] = (~way_status_mb_ff[1] & ~way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[0] ) ;
-
-   assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = ({3{~exu_flush_final & ic_rd_hit[0]}} & {way_status[2] , 1'b1 , 1'b1}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[1]}} & {way_status[2] , 1'b0 , 1'b1}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[2]}} & {1'b1 ,way_status[1]  , 1'b0}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[3]}} & {1'b0 ,way_status[1]  , 1'b0}) ;
-
-  assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = ({3{replace_way_mb_any[0]}} & {way_status_mb_ff[2] , 1'b1 , 1'b1}) |
-                                   ({3{replace_way_mb_any[1]}} & {way_status_mb_ff[2] , 1'b0 , 1'b1}) |
-                                   ({3{replace_way_mb_any[2]}} & {1'b1 ,way_status_mb_ff[1]  , 1'b0}) |
-                                   ({3{replace_way_mb_any[3]}} & {1'b0 ,way_status_mb_ff[1]  , 1'b0}) ;
-  end
-   else begin : two_ways_plru
-      assign replace_way_mb_any[0]                      = (~way_status_mb_ff  & tagv_mb_ff[0] & tagv_mb_ff[1]) | ~tagv_mb_ff[0];
-      assign replace_way_mb_any[1]                      = ( way_status_mb_ff  & tagv_mb_ff[0] & tagv_mb_ff[1]) | ~tagv_mb_ff[1] & tagv_mb_ff[0];
-      assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = ic_rd_hit[0];
-      assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = replace_way_mb_any[0];
-
-   end
-  // Make sure to select the way_status_hit_new even when in hit_under_miss.
-  assign way_status_new[pt.ICACHE_STATUS_BITS-1:0]     = (bus_ifu_wr_en_ff_q  & last_beat )  ? way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] :
-                                                          way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] ;
-
-
-  assign way_status_wr_en  = (bus_ifu_wr_en_ff_q  & last_beat) | ic_act_hit_f;
-
-   for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin  : bus_wren_loop
-      assign bus_wren[i]           = bus_ifu_wr_en_ff_q & replace_way_mb_any[i] & miss_pending ;
-      assign bus_wren_last[i]      = bus_ifu_wr_en_ff_wo_err & replace_way_mb_any[i] & miss_pending & bus_last_data_beat;
-      assign ifu_tag_wren[i]       = bus_wren_last[i] | wren_reset_miss[i];
-      assign wren_reset_miss[i]    = replace_way_mb_any[i] & reset_tag_valid_for_miss ;
-
-   end
-   assign bus_ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] = bus_wren[pt.ICACHE_NUM_WAYS-1:0];
-
-
-end else begin: icache_disabled
-   assign ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0]      = '0;
-   assign way_status[pt.ICACHE_STATUS_BITS-1:0]         = '0;
-   assign replace_way_mb_any[pt.ICACHE_NUM_WAYS-1:0]    = '0;
-   assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = '0;
-   assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = '0;
-   assign way_status_new[pt.ICACHE_STATUS_BITS-1:0]     = '0;
-   assign way_status_wr_en                           = '0;
-   assign bus_wren[pt.ICACHE_NUM_WAYS-1:0]              = '0;
-
-end
-
-   assign ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0] = ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0]   & {pt.ICACHE_NUM_WAYS{(~fetch_uncacheable_ff & ifc_fetch_req_f_raw) }} ;
-   assign ic_debug_tag_val_rd_out           = |(ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0] &  ic_debug_way_ff[pt.ICACHE_NUM_WAYS-1:0]   & {pt.ICACHE_NUM_WAYS{ic_debug_rd_en_ff}}) ;
-///////////////////////////////////////////
-// PMU signals
-///////////////////////////////////////////
-
- assign ifu_pmu_ic_miss_in   = ic_act_miss_f ;
- assign ifu_pmu_ic_hit_in    = ic_act_hit_f  ;
- assign ifu_pmu_bus_error_in = |ifc_bus_acc_fault_f;
- assign ifu_pmu_bus_trxn_in  = bus_cmd_sent ;
- assign ifu_pmu_bus_busy_in  = ifu_bus_arvalid_ff & ~ifu_bus_arready_ff & miss_pending ;
-
-   rvdffie #(9) ifu_pmu_sigs_ff (.*,
-                    .clk (free_l2clk),
-                    .din ({ifc_fetch_uncacheable_bf, ifc_fetch_req_qual_bf, dma_sb_err_state, dec_tlu_fence_i_wb,
-                           ifu_pmu_ic_miss_in,
-                           ifu_pmu_ic_hit_in,
-                           ifu_pmu_bus_error_in,
-                           ifu_pmu_bus_busy_in,
-                           ifu_pmu_bus_trxn_in
-                          }),
-                    .dout({fetch_uncacheable_ff, ifc_fetch_req_f_raw, dma_sb_err_state_ff, reset_all_tags,
-                           ifu_pmu_ic_miss,
-                           ifu_pmu_ic_hit,
-                           ifu_pmu_bus_error,
-                           ifu_pmu_bus_busy,
-                           ifu_pmu_bus_trxn
-                           }));
-
-
-///////////////////////////////////////////////////////
-// Cache debug logic                                 //
-///////////////////////////////////////////////////////
-assign ic_debug_addr[pt.ICACHE_INDEX_HI:3] = dec_tlu_ic_diag_pkt.icache_dicawics[pt.ICACHE_INDEX_HI-3:0] ;
-assign ic_debug_way_enc[01:00]             = dec_tlu_ic_diag_pkt.icache_dicawics[15:14] ;
-
-
-assign ic_debug_tag_array       = dec_tlu_ic_diag_pkt.icache_dicawics[16] ;
-assign ic_debug_rd_en           = dec_tlu_ic_diag_pkt.icache_rd_valid ;
-assign ic_debug_wr_en           = dec_tlu_ic_diag_pkt.icache_wr_valid ;
-
-
-assign ic_debug_way[pt.ICACHE_NUM_WAYS-1:0]        = {(ic_debug_way_enc[1:0] == 2'b11),
-                                                      (ic_debug_way_enc[1:0] == 2'b10),
-                                                      (ic_debug_way_enc[1:0] == 2'b01),
-                                                      (ic_debug_way_enc[1:0] == 2'b00) };
-
-assign ic_debug_tag_wr_en[pt.ICACHE_NUM_WAYS-1:0] = {pt.ICACHE_NUM_WAYS{ic_debug_wr_en & ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-
-assign ic_debug_ict_array_sel_in      =  ic_debug_rd_en & ic_debug_tag_array ;
-
-rvdff_fpga #(01+pt.ICACHE_NUM_WAYS) ifu_debug_sel_ff (.*, .clk (debug_c1_clk),
-                    .clken(debug_c1_clken), .rawclk(clk),
-                    .din ({ic_debug_ict_array_sel_in,
-                           ic_debug_way[pt.ICACHE_NUM_WAYS-1:0]
-                          }),
-                    .dout({ic_debug_ict_array_sel_ff,
-                           ic_debug_way_ff[pt.ICACHE_NUM_WAYS-1:0]
-                           }));
-
-
-
-
-assign debug_data_clken  =  ic_debug_rd_en_ff;
-
-
-
-
-// memory protection  - equation to look identical to the LSU equation
-   assign ifc_region_acc_okay = (~(|{pt.INST_ACCESS_ENABLE0,pt.INST_ACCESS_ENABLE1,pt.INST_ACCESS_ENABLE2,pt.INST_ACCESS_ENABLE3,pt.INST_ACCESS_ENABLE4,pt.INST_ACCESS_ENABLE5,pt.INST_ACCESS_ENABLE6,pt.INST_ACCESS_ENABLE7})) |
-                               (pt.INST_ACCESS_ENABLE0 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK0)) == (pt.INST_ACCESS_ADDR0 | pt.INST_ACCESS_MASK0)) |
-                               (pt.INST_ACCESS_ENABLE1 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK1)) == (pt.INST_ACCESS_ADDR1 | pt.INST_ACCESS_MASK1)) |
-                               (pt.INST_ACCESS_ENABLE2 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK2)) == (pt.INST_ACCESS_ADDR2 | pt.INST_ACCESS_MASK2)) |
-                               (pt.INST_ACCESS_ENABLE3 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK3)) == (pt.INST_ACCESS_ADDR3 | pt.INST_ACCESS_MASK3)) |
-                               (pt.INST_ACCESS_ENABLE4 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK4)) == (pt.INST_ACCESS_ADDR4 | pt.INST_ACCESS_MASK4)) |
-                               (pt.INST_ACCESS_ENABLE5 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK5)) == (pt.INST_ACCESS_ADDR5 | pt.INST_ACCESS_MASK5)) |
-                               (pt.INST_ACCESS_ENABLE6 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK6)) == (pt.INST_ACCESS_ADDR6 | pt.INST_ACCESS_MASK6)) |
-                               (pt.INST_ACCESS_ENABLE7 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK7)) == (pt.INST_ACCESS_ADDR7 | pt.INST_ACCESS_MASK7));
-
-   assign ifc_region_acc_fault_memory_bf   =  ~ifc_iccm_access_bf & ~ifc_region_acc_okay & ifc_fetch_req_bf;
-
-   assign ifc_region_acc_fault_final_bf = ifc_region_acc_fault_bf | ifc_region_acc_fault_memory_bf;
-
-
-
-
-endmodule  // eb1_ifu_mem_ctl
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lib.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lib.sv
deleted file mode 100644
index 3aee6f3..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lib.sv
+++ /dev/null
@@ -1,64 +0,0 @@
-module eb1_btb_tag_hash #(
-`include "eb1_param.vh"
- ) (
-                       input logic [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1] pc,
-                       output logic [pt.BTB_BTAG_SIZE-1:0] hash
-                       );
-
-    assign hash = {(pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1])};
-endmodule
-
-module eb1_btb_tag_hash_fold  #(
-`include "eb1_param.vh"
- )(
-                       input logic [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1] pc,
-                       output logic [pt.BTB_BTAG_SIZE-1:0] hash
-                       );
-
-    assign hash = {(
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1])};
-
-endmodule
-
-module eb1_btb_addr_hash  #(
-`include "eb1_param.vh"
- )(
-                        input logic [pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO] pc,
-                        output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] hash
-                        );
-
-
-if(pt.BTB_FOLD2_INDEX_HASH) begin : fold2
-   assign hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = pc[pt.BTB_INDEX1_HI:pt.BTB_INDEX1_LO] ^
-                                                pc[pt.BTB_INDEX3_HI:pt.BTB_INDEX3_LO];
-end
-   else begin
-   assign hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = pc[pt.BTB_INDEX1_HI:pt.BTB_INDEX1_LO] ^
-                                                pc[pt.BTB_INDEX2_HI:pt.BTB_INDEX2_LO] ^
-                                                pc[pt.BTB_INDEX3_HI:pt.BTB_INDEX3_LO];
-end
-
-endmodule
-
-module eb1_btb_ghr_hash  #(
-`include "eb1_param.vh"
- )(
-                       input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] hashin,
-                       input logic [pt.BHT_GHR_SIZE-1:0] ghr,
-                       output logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] hash
-                       );
-
-   // The hash function is too complex to write in verilog for all cases.
-   // The config script generates the logic string based on the bp config.
-   if(pt.BHT_GHR_HASH_1) begin : ghrhash_cfg1
-     assign hash[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = { ghr[pt.BHT_GHR_SIZE-1:pt.BTB_INDEX1_HI-1], hashin[pt.BTB_INDEX1_HI:2]^ghr[pt.BTB_INDEX1_HI-2:0]};
-   end
-   else begin : ghrhash_cfg2
-     assign hash[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = { hashin[pt.BHT_GHR_SIZE+1:2]^ghr[pt.BHT_GHR_SIZE-1:0]};
-   end
-
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu.sv
deleted file mode 100644
index 31d1148..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu.sv
+++ /dev/null
@@ -1,425 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Function: Top level file for load store unit
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-
-module eb1_lsu
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-(
-
-   input logic                             clk_override,             // Override non-functional clock gating
-   input logic                             dec_tlu_flush_lower_r,    // I0/I1 writeback flush. This is used to flush the old packets only
-   input logic                             dec_tlu_i0_kill_writeb_r, // I0 is flushed, don't writeback any results to arch state
-   input logic                             dec_tlu_force_halt,       // This will be high till TLU goes to debug halt
-
-   // chicken signals
-   input logic                             dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                             dec_tlu_wb_coalescing_disable,     // disable the write buffer coalesce
-   input logic                             dec_tlu_sideeffect_posted_disable, // disable the posted sideeffect load store to the bus
-   input logic                             dec_tlu_core_ecc_disable,          // disable the generation of the ecc
-
-   input logic [31:0]                      exu_lsu_rs1_d,        // address rs operand
-   input logic [31:0]                      exu_lsu_rs2_d,        // store data
-   input logic [11:0]                      dec_lsu_offset_d,     // address offset operand
-
-   input                                   eb1_lsu_pkt_t lsu_p,  // lsu control packet
-   input logic                             dec_lsu_valid_raw_d,   // Raw valid for address computation
-   input logic [31:0]                      dec_tlu_mrac_ff,       // CSR for memory region control
-
-   output logic [31:0]                     lsu_result_m,          // lsu load data
-   output logic [31:0]                     lsu_result_corr_r,     // This is the ECC corrected data going to RF
-   output logic                            lsu_load_stall_any,    // This is for blocking loads in the decode
-   output logic                            lsu_store_stall_any,   // This is for blocking stores in the decode
-   output logic                            lsu_fastint_stall_any, // Stall the fastint in decode-1 stage
-   output logic                            lsu_idle_any,          // lsu buffers are empty and no instruction in the pipeline. Doesn't include DMA
-   output logic                            lsu_active,            // Used to turn off top level clk
-
-   output logic [31:1]                     lsu_fir_addr,        // fast interrupt address
-   output logic [1:0]                      lsu_fir_error,       // Error during fast interrupt lookup
-
-   output logic                            lsu_single_ecc_error_incr,     // Increment the ecc counter
-   output eb1_lsu_error_pkt_t             lsu_error_pkt_r,               // lsu exception packet
-   output logic                            lsu_imprecise_error_load_any,  // bus load imprecise error
-   output logic                            lsu_imprecise_error_store_any, // bus store imprecise error
-   output logic [31:0]                     lsu_imprecise_error_addr_any,  // bus store imprecise error address
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,      // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,        // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,        // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r,    // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,   // the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,   // non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,     // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,         // Data of the non block load
-
-   output logic                            lsu_pmu_load_external_m,        // PMU : Bus loads
-   output logic                            lsu_pmu_store_external_m,       // PMU : Bus loads
-   output logic                            lsu_pmu_misaligned_m,           // PMU : misaligned
-   output logic                            lsu_pmu_bus_trxn,               // PMU : bus transaction
-   output logic                            lsu_pmu_bus_misaligned,         // PMU : misaligned access going to the bus
-   output logic                            lsu_pmu_bus_error,              // PMU : bus sending error back
-   output logic                            lsu_pmu_bus_busy,               // PMU : bus is not ready
-
-   // Trigger signals
-   input                                   eb1_trigger_pkt_t [3:0] trigger_pkt_any, // Trigger info from the decode
-   output logic [3:0]                      lsu_trigger_match_m,                      // lsu trigger hit (one bit per trigger)
-
-   // DCCM ports
-   output logic                            dccm_wren,       // DCCM write enable
-   output logic                            dccm_rden,       // DCCM read enable
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo, // DCCM write address low bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi, // DCCM write address hi bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo, // DCCM read address low bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi, // DCCM read address hi bank (hi and low same if aligned read)
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo, // DCCM write data for lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi, // DCCM write data for hi bank
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_lo, // DCCM read data low bank
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_hi, // DCCM read data hi bank
-
-   // PIC ports
-   output logic                            picm_wren,    // PIC memory write enable
-   output logic                            picm_rden,    // PIC memory read enable
-   output logic                            picm_mken,    // Need to read the mask for stores to determine which bits to write/forward
-   output logic [31:0]                     picm_rdaddr,  // address for pic read access
-   output logic [31:0]                     picm_wraddr,  // address for pic write access
-   output logic [31:0]                     picm_wr_data, // PIC memory write data
-   input logic [31:0]                      picm_rd_data, // PIC memory read/mask data
-
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-   input  logic                            lsu_axi_rlast,
-
-   input logic                             lsu_bus_clk_en,    // external drives a clock_en to control bus ratio
-
-   // DMA slave
-   input logic                             dma_dccm_req,       // DMA read/write to dccm
-   input logic [2:0]                       dma_mem_tag,        // DMA request tag
-   input logic [31:0]                      dma_mem_addr,       // DMA address
-   input logic [2:0]                       dma_mem_sz,         // DMA access size
-   input logic                             dma_mem_write,      // DMA access is a write
-   input logic [63:0]                      dma_mem_wdata,      // DMA write data
-
-   output logic                            dccm_dma_rvalid,     // lsu data valid for DMA dccm read
-   output logic                            dccm_dma_ecc_error,  // DMA load had ecc error
-   output logic [2:0]                      dccm_dma_rtag,       // DMA request tag
-   output logic [63:0]                     dccm_dma_rdata,      // lsu data for DMA dccm read
-   output logic                            dccm_ready,          // lsu ready for DMA access
-
-   input logic                             scan_mode,           // scan mode
-   input logic                             clk,                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                             active_clk,          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                             rst_l                // reset, active low
-
-   );
-
-
-   logic        lsu_dccm_rden_m;
-   logic        lsu_dccm_rden_r;
-   logic [31:0] store_data_m;
-   logic [31:0] store_data_r;
-   logic [31:0] store_data_hi_r, store_data_lo_r;
-   logic [31:0] store_datafn_hi_r, store_datafn_lo_r;
-   logic [31:0] sec_data_lo_m, sec_data_hi_m;
-   logic [31:0] sec_data_lo_r, sec_data_hi_r;
-
-   logic [31:0] lsu_ld_data_m;
-   logic [31:0] dccm_rdata_hi_m, dccm_rdata_lo_m;
-   logic [6:0]  dccm_data_ecc_hi_m, dccm_data_ecc_lo_m;
-   logic        lsu_single_ecc_error_m;
-   logic        lsu_double_ecc_error_m;
-
-   logic [31:0] lsu_ld_data_r;
-   logic [31:0] lsu_ld_data_corr_r;
-   logic [31:0] dccm_rdata_hi_r, dccm_rdata_lo_r;
-   logic [6:0]  dccm_data_ecc_hi_r, dccm_data_ecc_lo_r;
-   logic        single_ecc_error_hi_r, single_ecc_error_lo_r;
-   logic        lsu_single_ecc_error_r;
-   logic        lsu_double_ecc_error_r;
-   logic        ld_single_ecc_error_r, ld_single_ecc_error_r_ff;
-
-   logic [31:0] picm_mask_data_m;
-
-   logic [31:0] lsu_addr_d, lsu_addr_m, lsu_addr_r;
-   logic [31:0] end_addr_d, end_addr_m, end_addr_r;
-
-   eb1_lsu_pkt_t    lsu_pkt_d, lsu_pkt_m, lsu_pkt_r;
-   logic        lsu_i0_valid_d, lsu_i0_valid_m, lsu_i0_valid_r;
-
-   // Store Buffer signals
-   logic        store_stbuf_reqvld_r;
-   logic        ldst_stbuf_reqvld_r;
-
-   logic        lsu_commit_r;
-   logic        lsu_exc_m;
-
-   logic        addr_in_dccm_d, addr_in_dccm_m, addr_in_dccm_r;
-   logic        addr_in_pic_d, addr_in_pic_m, addr_in_pic_r;
-   logic        ldst_dual_d, ldst_dual_m, ldst_dual_r;
-   logic        addr_external_m;
-
-   logic                          stbuf_reqvld_any;
-   logic                          stbuf_reqvld_flushed_any;
-   logic [pt.LSU_SB_BITS-1:0]     stbuf_addr_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_data_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  stbuf_ecc_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r_ff, sec_data_hi_r_ff;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_hi_r_ff, sec_data_ecc_lo_r_ff;
-
-   logic                          lsu_cmpen_m;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_hi_m;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_lo_m;
-   logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_hi_m;
-   logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_lo_m;
-
-   logic        lsu_stbuf_commit_any;
-   logic        lsu_stbuf_empty_any;   // This is for blocking loads
-   logic        lsu_stbuf_full_any;
-
-    // Bus signals
-   logic        lsu_busreq_r;
-   logic        lsu_bus_buffer_pend_any;
-   logic        lsu_bus_buffer_empty_any;
-   logic        lsu_bus_buffer_full_any;
-   logic        lsu_busreq_m;
-   logic [31:0] bus_read_data_m;
-
-   logic        flush_m_up, flush_r;
-   logic        is_sideeffects_m;
-   logic [2:0]  dma_mem_tag_d, dma_mem_tag_m;
-   logic        ldst_nodma_mtor;
-   logic        dma_dccm_wen, dma_pic_wen;
-   logic [31:0] dma_dccm_wdata_lo, dma_dccm_wdata_hi;
-   logic [pt.DCCM_ECC_WIDTH-1:0] dma_dccm_wdata_ecc_lo, dma_dccm_wdata_ecc_hi;
-
-   // Clocks
-   logic        lsu_busm_clken;
-   logic        lsu_bus_obuf_c1_clken;
-   logic        lsu_c1_m_clk, lsu_c1_r_clk;
-   logic        lsu_c2_m_clk, lsu_c2_r_clk;
-   logic        lsu_store_c1_m_clk, lsu_store_c1_r_clk;
-
-   logic        lsu_stbuf_c1_clk;
-   logic        lsu_bus_ibuf_c1_clk, lsu_bus_obuf_c1_clk, lsu_bus_buf_c1_clk;
-   logic        lsu_busm_clk;
-   logic        lsu_free_c2_clk;
-
-   logic        lsu_raw_fwd_lo_m, lsu_raw_fwd_hi_m;
-   logic        lsu_raw_fwd_lo_r, lsu_raw_fwd_hi_r;
-
-   assign       lsu_raw_fwd_lo_m = (|stbuf_fwdbyteen_lo_m[pt.DCCM_BYTE_WIDTH-1:0]);
-   assign       lsu_raw_fwd_hi_m = (|stbuf_fwdbyteen_hi_m[pt.DCCM_BYTE_WIDTH-1:0]);
-
-   eb1_lsu_lsc_ctl #(.pt(pt)) lsu_lsc_ctl (.*);
-
-   // block stores in decode  - for either bus or stbuf reasons
-   assign lsu_store_stall_any = lsu_stbuf_full_any | lsu_bus_buffer_full_any | ld_single_ecc_error_r_ff;
-   assign lsu_load_stall_any = lsu_bus_buffer_full_any | ld_single_ecc_error_r_ff;
-   assign lsu_fastint_stall_any = ld_single_ecc_error_r;    // Stall the fastint in decode-1 stage
-
-   // Ready to accept dma trxns
-   // There can't be any inpipe forwarding from non-dma packet to dma packet since they can be flushed so we can't have st in r when dma is in m
-   assign dma_mem_tag_d[2:0]   = dma_mem_tag[2:0];
-   assign ldst_nodma_mtor = (lsu_pkt_m.valid & ~lsu_pkt_m.dma & (addr_in_dccm_m | addr_in_pic_m) & lsu_pkt_m.store);
-
-   assign dccm_ready = ~(dec_lsu_valid_raw_d | ldst_nodma_mtor | ld_single_ecc_error_r_ff);
-
-   assign dma_dccm_wen = dma_dccm_req & dma_mem_write & addr_in_dccm_d & dma_mem_sz[1];   // Perform DMA writes only for word/dword
-   assign dma_pic_wen  = dma_dccm_req & dma_mem_write & addr_in_pic_d;
-   assign {dma_dccm_wdata_hi[31:0], dma_dccm_wdata_lo[31:0]} = dma_mem_wdata[63:0] >> {dma_mem_addr[2:0], 3'b000};   // Shift the dma data to lower bits to make it consistent to lsu stores
-
-
-   // Generate per cycle flush signals
-   assign flush_m_up = dec_tlu_flush_lower_r;
-   assign flush_r    = dec_tlu_i0_kill_writeb_r;
-
-   // lsu idle
-   // lsu halt idle. This is used for entering the halt mode. Also, DMA accesses are allowed during fence.
-   // Indicates non-idle if there is a instruction valid in d-r or read/write buffers are non-empty since they can come with error
-   // Store buffer now have only non-dma dccm stores
-   // stbuf_empty not needed since it has only dccm stores
-   assign lsu_idle_any = ~((lsu_pkt_m.valid & ~lsu_pkt_m.dma) |
-                           (lsu_pkt_r.valid & ~lsu_pkt_r.dma)) &
-                           lsu_bus_buffer_empty_any;
-
-   assign lsu_active = (lsu_pkt_m.valid | lsu_pkt_r.valid | ld_single_ecc_error_r_ff) | ~lsu_bus_buffer_empty_any;  // This includes DMA. Used for gating top clock
-
-   // Instantiate the store buffer
-   assign store_stbuf_reqvld_r = lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_dccm_r & ~flush_r & (~lsu_pkt_r.dma | ((lsu_pkt_r.by | lsu_pkt_r.half) & ~lsu_double_ecc_error_r));
-
-   // Disable Forwarding for now
-   assign lsu_cmpen_m = lsu_pkt_m.valid & (lsu_pkt_m.load | lsu_pkt_m.store) & (addr_in_dccm_m | addr_in_pic_m);
-
-   // Bus signals
-   assign lsu_busreq_m = lsu_pkt_m.valid & ((lsu_pkt_m.load | lsu_pkt_m.store) & addr_external_m) & ~flush_m_up & ~lsu_exc_m & ~lsu_pkt_m.fast_int;
-
-   // Dual signals
-   assign ldst_dual_d  = (lsu_addr_d[2] != end_addr_d[2]);
-   assign ldst_dual_m  = (lsu_addr_m[2] != end_addr_m[2]);
-   assign ldst_dual_r  = (lsu_addr_r[2] != end_addr_r[2]);
-
-   // PMU signals
-   assign lsu_pmu_misaligned_m     = lsu_pkt_m.valid & ((lsu_pkt_m.half & lsu_addr_m[0]) | (lsu_pkt_m.word & (|lsu_addr_m[1:0])));
-   assign lsu_pmu_load_external_m  = lsu_pkt_m.valid & lsu_pkt_m.load & addr_external_m;
-   assign lsu_pmu_store_external_m = lsu_pkt_m.valid & lsu_pkt_m.store & addr_external_m;
-
-   eb1_lsu_dccm_ctl #(.pt(pt)) dccm_ctl (
-      .lsu_addr_d(lsu_addr_d[31:0]),
-      .end_addr_d(end_addr_d[pt.DCCM_BITS-1:0]),
-      .lsu_addr_m(lsu_addr_m[pt.DCCM_BITS-1:0]),
-      .lsu_addr_r(lsu_addr_r[31:0]),
-
-      .end_addr_m(end_addr_m[pt.DCCM_BITS-1:0]),
-      .end_addr_r(end_addr_r[pt.DCCM_BITS-1:0]),
-      .*
-   );
-
-   eb1_lsu_stbuf #(.pt(pt)) stbuf (
-      .lsu_addr_d(lsu_addr_d[pt.LSU_SB_BITS-1:0]),
-      .end_addr_d(end_addr_d[pt.LSU_SB_BITS-1:0]),
-
-      .*
-
-   );
-
-   eb1_lsu_ecc #(.pt(pt)) ecc (
-      .lsu_addr_r(lsu_addr_r[pt.DCCM_BITS-1:0]),
-      .end_addr_r(end_addr_r[pt.DCCM_BITS-1:0]),
-      .lsu_addr_m(lsu_addr_m[pt.DCCM_BITS-1:0]),
-      .end_addr_m(end_addr_m[pt.DCCM_BITS-1:0]),
-      .*
-   );
-
-   eb1_lsu_trigger #(.pt(pt)) trigger (
-      .store_data_m(store_data_m[31:0]),
-      .*
-   );
-
-   // Clk domain
-   eb1_lsu_clkdomain #(.pt(pt)) clkdomain (.*);
-
-   // Bus interface
-   eb1_lsu_bus_intf #(.pt(pt)) bus_intf (
-      .lsu_addr_m(lsu_addr_m[31:0] & {32{addr_external_m & lsu_pkt_m.valid}}),
-      .lsu_addr_r(lsu_addr_r[31:0] & {32{lsu_busreq_r}}),
-
-      .end_addr_m(end_addr_m[31:0] & {32{addr_external_m & lsu_pkt_m.valid}}),
-      .end_addr_r(end_addr_r[31:0] & {32{lsu_busreq_r}}),
-
-      .store_data_r(store_data_r[31:0] & {32{lsu_busreq_r}}),
-      .*
-   );
-
-   //Flops
-   rvdff #(3) dma_mem_tag_mff     (.*, .din(dma_mem_tag_d[2:0]), .dout(dma_mem_tag_m[2:0]), .clk(lsu_c1_m_clk));
-   rvdff #(2) lsu_raw_fwd_r_ff    (.*, .din({lsu_raw_fwd_hi_m, lsu_raw_fwd_lo_m}),     .dout({lsu_raw_fwd_hi_r, lsu_raw_fwd_lo_r}),     .clk(lsu_c2_r_clk));
-
-`ifdef RV_ASSERT_ON
-   logic [1:0] store_data_bypass_sel;
-   assign store_data_bypass_sel[1:0] =  {lsu_p.store_data_bypass_d, lsu_p.store_data_bypass_m};
-
-   property exception_no_lsu_flush;
-      @(posedge clk)  disable iff(~rst_l) lsu_lsc_ctl.lsu_error_pkt_m.exc_valid |-> ##[1:2] (flush_r );
-   endproperty
-   assert_exception_no_lsu_flush: assert property (exception_no_lsu_flush) else
-      $display("No flush within 2 cycles of exception");
-
-   // offset should be zero for fast interrupt
-   property offset_0_fastint;
-      @(posedge clk) disable iff(~rst_l) (lsu_p.valid & lsu_p.fast_int) |-> (dec_lsu_offset_d[11:0] == 12'b0);
-   endproperty
-   assert_offset_0_fastint: assert property (offset_0_fastint) else
-      $display("dec_tlu_offset_d not zero for fast interrupt redirect");
-
-   // DMA req should assert dccm rden/wren
-   property dmareq_dccm_wren_or_rden;
-      @(posedge clk) disable iff(~rst_l) dma_dccm_req |-> (dccm_rden | dccm_wren | addr_in_pic_d);
-   endproperty
-   assert_dmareq_dccm_wren_or_rden: assert property(dmareq_dccm_wren_or_rden) else
-      $display("dccm rden or wren not asserted during DMA request");
-
-   // fastint_stall should cause load/store stall next cycle
-   property fastint_stall_imply_loadstore_stall;
-      @(posedge clk) disable iff(~rst_l) (lsu_fastint_stall_any & (lsu_commit_r | lsu_pkt_r.dma)) |-> ##1 ((lsu_load_stall_any | lsu_store_stall_any) | ~ld_single_ecc_error_r_ff);
-   endproperty
-   assert_fastint_stall_imply_loadstore_stall: assert property (fastint_stall_imply_loadstore_stall) else
-      $display("fastint_stall should be followed by lsu_load/store_stall_any");
-
-   // Single ECC error implies rfnpc flush
-   property single_ecc_error_rfnpc_flush;
-      @(posedge clk) disable iff(~rst_l) (lsu_error_pkt_r.single_ecc_error & lsu_pkt_r.load) |=> ~lsu_commit_r;
-   endproperty
-   assert_single_ecc_error_rfnpc_flush: assert property (single_ecc_error_rfnpc_flush) else
-     $display("LSU commit next cycle after single ecc error");
-
-`endif
-
-endmodule // eb1_lsu
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_addrcheck.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu_addrcheck.sv
deleted file mode 100644
index 010779b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_addrcheck.sv
+++ /dev/null
@@ -1,191 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Checks the memory map for the address
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_addrcheck
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   input logic          lsu_c2_m_clk,              // clock
-   input logic          rst_l,                     // reset
-
-   input logic [31:0]   start_addr_d,              // start address for lsu
-   input logic [31:0]   end_addr_d,                // end address for lsu
-   input eb1_lsu_pkt_t lsu_pkt_d,                 // packet in d
-   input logic [31:0]   dec_tlu_mrac_ff,           // CSR read
-   input logic [3:0]    rs1_region_d,              // address rs operand [31:28]
-
-   input logic [31:0]   rs1_d,                     // address rs operand
-
-   output logic         is_sideeffects_m,          // is sideffects space
-   output logic         addr_in_dccm_d,            // address in dccm
-   output logic         addr_in_pic_d,             // address in pic
-   output logic         addr_external_d,           // address in external
-
-   output logic         access_fault_d,            // access fault
-   output logic         misaligned_fault_d,        // misaligned
-   output logic [3:0]   exc_mscause_d,             // mscause for access/misaligned faults
-
-   output logic         fir_dccm_access_error_d,   // Fast interrupt dccm access error
-   output logic         fir_nondccm_access_error_d,// Fast interrupt dccm access error
-
-   input  logic         scan_mode                  // Scan mode
-);
-
-
-   logic        non_dccm_access_ok;
-   logic        is_sideeffects_d, is_aligned_d;
-   logic        start_addr_in_dccm_d, end_addr_in_dccm_d;
-   logic        start_addr_in_dccm_region_d, end_addr_in_dccm_region_d;
-   logic        start_addr_in_pic_d, end_addr_in_pic_d;
-   logic        start_addr_in_pic_region_d, end_addr_in_pic_region_d;
-   logic [4:0]  csr_idx;
-   logic        addr_in_iccm;
-   logic        start_addr_dccm_or_pic;
-   logic        base_reg_dccm_or_pic;
-   logic        unmapped_access_fault_d, mpu_access_fault_d, picm_access_fault_d, regpred_access_fault_d;
-   logic        regcross_misaligned_fault_d, sideeffect_misaligned_fault_d;
-   logic [3:0]  access_fault_mscause_d;
-   logic [3:0]  misaligned_fault_mscause_d;
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      // Start address check
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) start_addr_dccm_rangecheck (
-         .addr(start_addr_d[31:0]),
-         .in_range(start_addr_in_dccm_d),
-         .in_region(start_addr_in_dccm_region_d)
-      );
-
-      // End address check
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) end_addr_dccm_rangecheck (
-         .addr(end_addr_d[31:0]),
-         .in_range(end_addr_in_dccm_d),
-         .in_region(end_addr_in_dccm_region_d)
-      );
-   end else begin: Gen_dccm_disable // block: Gen_dccm_enable
-      assign start_addr_in_dccm_d = '0;
-      assign start_addr_in_dccm_region_d = '0;
-      assign end_addr_in_dccm_d = '0;
-      assign end_addr_in_dccm_region_d = '0;
-   end
-
-   if (pt.ICCM_ENABLE == 1) begin : check_iccm
-      assign addr_in_iccm =  (start_addr_d[31:28] == pt.ICCM_REGION);
-   end else begin
-     assign addr_in_iccm = 1'b0;
-   end
-
-   // PIC memory check
-   // Start address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) start_addr_pic_rangecheck (
-      .addr(start_addr_d[31:0]),
-      .in_range(start_addr_in_pic_d),
-      .in_region(start_addr_in_pic_region_d)
-   );
-
-   // End address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) end_addr_pic_rangecheck (
-      .addr(end_addr_d[31:0]),
-      .in_range(end_addr_in_pic_d),
-      .in_region(end_addr_in_pic_region_d)
-   );
-
-   assign start_addr_dccm_or_pic  = start_addr_in_dccm_region_d | start_addr_in_pic_region_d;
-   assign base_reg_dccm_or_pic    = ((rs1_region_d[3:0] == pt.DCCM_REGION) & pt.DCCM_ENABLE) | (rs1_region_d[3:0] == pt.PIC_REGION);
-   assign addr_in_dccm_d          = (start_addr_in_dccm_d & end_addr_in_dccm_d);
-   assign addr_in_pic_d           = (start_addr_in_pic_d & end_addr_in_pic_d);
-
-   assign addr_external_d   = ~(start_addr_in_dccm_region_d | start_addr_in_pic_region_d);
-   assign csr_idx[4:0]       = {start_addr_d[31:28], 1'b1};
-   assign is_sideeffects_d = dec_tlu_mrac_ff[csr_idx] & ~(start_addr_in_dccm_region_d | start_addr_in_pic_region_d | addr_in_iccm) & lsu_pkt_d.valid & (lsu_pkt_d.store | lsu_pkt_d.load);  //every region has the 2 LSB indicating ( 1: sideeffects/no_side effects, and 0: cacheable ). Ignored in internal regions
-   assign is_aligned_d    = (lsu_pkt_d.word & (start_addr_d[1:0] == 2'b0)) |
-                              (lsu_pkt_d.half & (start_addr_d[0] == 1'b0)) |
-                              lsu_pkt_d.by;
-
-   assign non_dccm_access_ok = (~(|{pt.DATA_ACCESS_ENABLE0,pt.DATA_ACCESS_ENABLE1,pt.DATA_ACCESS_ENABLE2,pt.DATA_ACCESS_ENABLE3,pt.DATA_ACCESS_ENABLE4,pt.DATA_ACCESS_ENABLE5,pt.DATA_ACCESS_ENABLE6,pt.DATA_ACCESS_ENABLE7})) |
-                               (((pt.DATA_ACCESS_ENABLE0 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK0)) == (pt.DATA_ACCESS_ADDR0 | pt.DATA_ACCESS_MASK0)) |
-                                 (pt.DATA_ACCESS_ENABLE1 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK1)) == (pt.DATA_ACCESS_ADDR1 | pt.DATA_ACCESS_MASK1)) |
-                                 (pt.DATA_ACCESS_ENABLE2 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK2)) == (pt.DATA_ACCESS_ADDR2 | pt.DATA_ACCESS_MASK2)) |
-                                 (pt.DATA_ACCESS_ENABLE3 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK3)) == (pt.DATA_ACCESS_ADDR3 | pt.DATA_ACCESS_MASK3)) |
-                                 (pt.DATA_ACCESS_ENABLE4 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK4)) == (pt.DATA_ACCESS_ADDR4 | pt.DATA_ACCESS_MASK4)) |
-                                 (pt.DATA_ACCESS_ENABLE5 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK5)) == (pt.DATA_ACCESS_ADDR5 | pt.DATA_ACCESS_MASK5)) |
-                                 (pt.DATA_ACCESS_ENABLE6 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK6)) == (pt.DATA_ACCESS_ADDR6 | pt.DATA_ACCESS_MASK6)) |
-                                 (pt.DATA_ACCESS_ENABLE7 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK7)) == (pt.DATA_ACCESS_ADDR7 | pt.DATA_ACCESS_MASK7)))   &
-                                ((pt.DATA_ACCESS_ENABLE0 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK0)) == (pt.DATA_ACCESS_ADDR0 | pt.DATA_ACCESS_MASK0)) |
-                                 (pt.DATA_ACCESS_ENABLE1 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK1)) == (pt.DATA_ACCESS_ADDR1 | pt.DATA_ACCESS_MASK1)) |
-                                 (pt.DATA_ACCESS_ENABLE2 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK2)) == (pt.DATA_ACCESS_ADDR2 | pt.DATA_ACCESS_MASK2)) |
-                                 (pt.DATA_ACCESS_ENABLE3 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK3)) == (pt.DATA_ACCESS_ADDR3 | pt.DATA_ACCESS_MASK3)) |
-                                 (pt.DATA_ACCESS_ENABLE4 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK4)) == (pt.DATA_ACCESS_ADDR4 | pt.DATA_ACCESS_MASK4)) |
-                                 (pt.DATA_ACCESS_ENABLE5 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK5)) == (pt.DATA_ACCESS_ADDR5 | pt.DATA_ACCESS_MASK5)) |
-                                 (pt.DATA_ACCESS_ENABLE6 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK6)) == (pt.DATA_ACCESS_ADDR6 | pt.DATA_ACCESS_MASK6)) |
-                                 (pt.DATA_ACCESS_ENABLE7 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK7)) == (pt.DATA_ACCESS_ADDR7 | pt.DATA_ACCESS_MASK7))));
-
-   // Access fault logic
-   // 0. Unmapped local memory : Addr in dccm region but not in dccm offset OR Addr in picm region but not in picm offset OR DCCM -> PIC cross when DCCM/PIC in same region
-   // 1. Uncorrectable (double bit) ECC error
-   // 3. Address is not in a populated non-dccm region
-   // 5. Region predication access fault: Base Address in DCCM/PIC and Final address in non-DCCM/non-PIC region or vice versa
-   // 6. Ld/St access to picm are not word aligned or word size
-   assign regpred_access_fault_d  = (start_addr_dccm_or_pic ^ base_reg_dccm_or_pic);                   // 5. Region predication access fault: Base Address in DCCM/PIC and Final address in non-DCCM/non-PIC region or vice versa
-   assign picm_access_fault_d     = (addr_in_pic_d & ((start_addr_d[1:0] != 2'b0) | ~lsu_pkt_d.word));                                               // 6. Ld/St access to picm are not word aligned or word size
-
-   if (pt.DCCM_ENABLE & (pt.DCCM_REGION == pt.PIC_REGION)) begin
-      assign unmapped_access_fault_d = ((start_addr_in_dccm_region_d & ~(start_addr_in_dccm_d | start_addr_in_pic_d)) |   // 0. Addr in dccm/pic region but not in dccm/pic offset
-                                        (end_addr_in_dccm_region_d & ~(end_addr_in_dccm_d | end_addr_in_pic_d))       |   // 0. Addr in dccm/pic region but not in dccm/pic offset
-                                        (start_addr_in_dccm_d & end_addr_in_pic_d)                                    |   // 0. DCCM -> PIC cross when DCCM/PIC in same region
-                                        (start_addr_in_pic_d  & end_addr_in_dccm_d));                                     // 0. DCCM -> PIC cross when DCCM/PIC in same region
-      assign mpu_access_fault_d      = (~start_addr_in_dccm_region_d & ~non_dccm_access_ok);                              // 3. Address is not in a populated non-dccm region
-   end else begin
-      assign unmapped_access_fault_d = ((start_addr_in_dccm_region_d & ~start_addr_in_dccm_d)                              |   // 0. Addr in dccm region but not in dccm offset
-                                        (end_addr_in_dccm_region_d & ~end_addr_in_dccm_d)                                  |   // 0. Addr in dccm region but not in dccm offset
-                                        (start_addr_in_pic_region_d & ~start_addr_in_pic_d)                                |   // 0. Addr in picm region but not in picm offset
-                                        (end_addr_in_pic_region_d & ~end_addr_in_pic_d));                                      // 0. Addr in picm region but not in picm offset
-      assign mpu_access_fault_d      = (~start_addr_in_pic_region_d & ~start_addr_in_dccm_region_d & ~non_dccm_access_ok);     // 3. Address is not in a populated non-dccm region
-   end
-
-   assign access_fault_d = (unmapped_access_fault_d | mpu_access_fault_d | picm_access_fault_d | regpred_access_fault_d) & lsu_pkt_d.valid & ~lsu_pkt_d.dma;
-   assign access_fault_mscause_d[3:0] = unmapped_access_fault_d ? 4'h2 : mpu_access_fault_d ? 4'h3 : regpred_access_fault_d ? 4'h5 : picm_access_fault_d ? 4'h6 : 4'h0;
-
-   // Misaligned happens due to 2 reasons
-   // 0. Region cross
-   // 1. sideeffects access which are not aligned
-   assign regcross_misaligned_fault_d = (start_addr_d[31:28] != end_addr_d[31:28]);
-   assign sideeffect_misaligned_fault_d = (is_sideeffects_d & ~is_aligned_d);
-   assign misaligned_fault_d = (regcross_misaligned_fault_d | (sideeffect_misaligned_fault_d & addr_external_d)) & lsu_pkt_d.valid & ~lsu_pkt_d.dma;
-   assign misaligned_fault_mscause_d[3:0] = regcross_misaligned_fault_d ? 4'h2 : sideeffect_misaligned_fault_d ? 4'h1 : 4'h0;
-
-   assign exc_mscause_d[3:0] = misaligned_fault_d ? misaligned_fault_mscause_d[3:0] : access_fault_mscause_d[3:0];
-
-   // Fast interrupt error logic
-   assign fir_dccm_access_error_d    = ((start_addr_in_dccm_region_d & ~start_addr_in_dccm_d) |
-                                        (end_addr_in_dccm_region_d   & ~end_addr_in_dccm_d)) & lsu_pkt_d.valid & lsu_pkt_d.fast_int;
-   assign fir_nondccm_access_error_d = ~(start_addr_in_dccm_region_d & end_addr_in_dccm_region_d) & lsu_pkt_d.valid & lsu_pkt_d.fast_int;
-
-   rvdff #(.WIDTH(1))   is_sideeffects_mff (.din(is_sideeffects_d), .dout(is_sideeffects_m), .clk(lsu_c2_m_clk), .*);
-
-endmodule // eb1_lsu_addrcheck
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_bus_buffer.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu_bus_buffer.sv
deleted file mode 100644
index 1293f6e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_bus_buffer.sv
+++ /dev/null
@@ -1,936 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: lsu interface with interface queue
-// Comments:
-//
-//********************************************************************************
-
-module eb1_lsu_bus_buffer
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   input logic                          clk,                                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                          clk_override,                       // Override non-functional clock gating
-   input logic                          rst_l,                              // reset, active low
-   input logic                          scan_mode,                          // scan mode
-   input logic                          dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                          dec_tlu_wb_coalescing_disable,      // disable write buffer coalescing
-   input logic                          dec_tlu_sideeffect_posted_disable,  // Don't block the sideeffect load store to the bus
-   input logic                          dec_tlu_force_halt,
-
-   // various clocks needed for the bus reads and writes
-   input logic                          lsu_bus_obuf_c1_clken,
-   input logic                          lsu_busm_clken,
-   input logic                          lsu_c2_r_clk,
-   input logic                          lsu_bus_ibuf_c1_clk,
-   input logic                          lsu_bus_obuf_c1_clk,
-   input logic                          lsu_bus_buf_c1_clk,
-   input logic                          lsu_free_c2_clk,
-   input logic                          lsu_busm_clk,
-
-
-   input logic                          dec_lsu_valid_raw_d,            // Raw valid for address computation
-   input eb1_lsu_pkt_t                 lsu_pkt_m,                      // lsu packet flowing down the pipe
-   input eb1_lsu_pkt_t                 lsu_pkt_r,                      // lsu packet flowing down the pipe
-
-   input logic [31:0]                   lsu_addr_m,                     // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_m,                     // lsu address flowing down the pipe
-   input logic [31:0]                   lsu_addr_r,                     // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_r,                     // lsu address flowing down the pipe
-   input logic [31:0]                   store_data_r,                   // store data flowing down the pipe
-
-   input logic                          no_word_merge_r,                // r store doesn't need to wait in ibuf since it will not coalesce
-   input logic                          no_dword_merge_r,               // r store doesn't need to wait in ibuf since it will not coalesce
-   input logic                          lsu_busreq_m,                   // bus request is in m
-   output logic                         lsu_busreq_r,                   // bus request is in r
-   input logic                          ld_full_hit_m,                  // load can get all its byte from a write buffer entry
-   input logic                          flush_m_up,                     // flush
-   input logic                          flush_r,                        // flush
-   input logic                          lsu_commit_r,                   // lsu instruction in r commits
-   input logic                          is_sideeffects_r,               // lsu attribute is side_effects
-   input logic                          ldst_dual_d,                    // load/store is unaligned at 32 bit boundary
-   input logic                          ldst_dual_m,                    // load/store is unaligned at 32 bit boundary
-   input logic                          ldst_dual_r,                    // load/store is unaligned at 32 bit boundary
-
-   input logic [7:0]                    ldst_byteen_ext_m,              // HI and LO signals
-
-   output logic                         lsu_bus_buffer_pend_any,          // bus buffer has a pending bus entry
-   output logic                         lsu_bus_buffer_full_any,          // bus buffer is full
-   output logic                         lsu_bus_buffer_empty_any,         // bus buffer is empty
-
-   output logic [3:0]                   ld_byte_hit_buf_lo, ld_byte_hit_buf_hi,    // Byte enables for forwarding data
-   output logic [31:0]                  ld_fwddata_buf_lo, ld_fwddata_buf_hi,      // load forwarding data
-
-   output logic                         lsu_imprecise_error_load_any,     // imprecise load bus error
-   output logic                         lsu_imprecise_error_store_any,    // imprecise store bus error
-   output logic [31:0]                  lsu_imprecise_error_addr_any,     // address of the imprecise error
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,     // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,       // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,       // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r,   // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,  // the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,  // non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,    // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,        // Data of the non block load
-
-   // PMU events
-   output logic                         lsu_pmu_bus_trxn,
-   output logic                         lsu_pmu_bus_misaligned,
-   output logic                         lsu_pmu_bus_error,
-   output logic                         lsu_pmu_bus_busy,
-
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-
-   input logic                             lsu_bus_clk_en,
-   input logic                             lsu_bus_clk_en_q
-
-);
-
-   // For Ld: IDLE -> WAIT -> CMD -> RESP -> DONE_PARTIAL(?) -> DONE_WAIT(?) -> DONE -> IDLE
-   // For St: IDLE -> WAIT -> CMD -> RESP(?) -> IDLE
-   typedef enum logic [2:0] {IDLE=3'b000, WAIT=3'b001, CMD=3'b010, RESP=3'b011, DONE_PARTIAL=3'b100, DONE_WAIT=3'b101, DONE=3'b110} state_t;
-
-   localparam DEPTH     = pt.LSU_NUM_NBLOAD;
-   localparam DEPTH_LOG2 = pt.LSU_NUM_NBLOAD_WIDTH;
-   localparam TIMER     = 8;   // This can be only power of 2
-   localparam TIMER_MAX = TIMER - 1;  // Maximum value of timer
-   localparam TIMER_LOG2 = (TIMER < 2) ? 1 : $clog2(TIMER);
-
-   logic [3:0]                          ldst_byteen_hi_m, ldst_byteen_lo_m;
-   logic [DEPTH-1:0]                    ld_addr_hitvec_lo, ld_addr_hitvec_hi;
-   logic [3:0][DEPTH-1:0]               ld_byte_hitvec_lo, ld_byte_hitvec_hi;
-   logic [3:0][DEPTH-1:0]               ld_byte_hitvecfn_lo, ld_byte_hitvecfn_hi;
-
-   logic                                ld_addr_ibuf_hit_lo, ld_addr_ibuf_hit_hi;
-   logic [3:0]                          ld_byte_ibuf_hit_lo, ld_byte_ibuf_hit_hi;
-
-   logic [3:0]                          ldst_byteen_r;
-   logic [3:0]                          ldst_byteen_hi_r, ldst_byteen_lo_r;
-   logic [31:0]                         store_data_hi_r, store_data_lo_r;
-   logic                                is_aligned_r;                   // Aligned load/store
-   logic                                ldst_samedw_r;
-
-   logic                                lsu_nonblock_load_valid_r;
-   logic [31:0]                         lsu_nonblock_load_data_hi, lsu_nonblock_load_data_lo, lsu_nonblock_data_unalgn;
-   logic [1:0]                          lsu_nonblock_addr_offset;
-   logic [1:0]                          lsu_nonblock_sz;
-   logic                                lsu_nonblock_unsign;
-   logic                                lsu_nonblock_load_data_ready;
-
-   logic [DEPTH-1:0]                    CmdPtr0Dec, CmdPtr1Dec;
-   logic [DEPTH-1:0]                    RspPtrDec;
-   logic [DEPTH_LOG2-1:0]               CmdPtr0, CmdPtr1;
-   logic [DEPTH_LOG2-1:0]               RspPtr;
-   logic [DEPTH_LOG2-1:0]               WrPtr0_m, WrPtr0_r;
-   logic [DEPTH_LOG2-1:0]               WrPtr1_m, WrPtr1_r;
-   logic                                found_wrptr0, found_wrptr1, found_cmdptr0, found_cmdptr1;
-   logic [3:0]                          buf_numvld_any, buf_numvld_wrcmd_any, buf_numvld_cmd_any, buf_numvld_pend_any;
-   logic                                any_done_wait_state;
-   logic                                bus_sideeffect_pend;
-   logic                                bus_coalescing_disable;
-
-   logic                                bus_addr_match_pending;
-   logic                                bus_cmd_sent, bus_cmd_ready;
-   logic                                bus_wcmd_sent, bus_wdata_sent;
-   logic                                bus_rsp_read, bus_rsp_write;
-   logic [pt.LSU_BUS_TAG-1:0]           bus_rsp_read_tag, bus_rsp_write_tag;
-   logic                                bus_rsp_read_error, bus_rsp_write_error;
-   logic [63:0]                         bus_rsp_rdata;
-
-   // Bus buffer signals
-   state_t [DEPTH-1:0]                  buf_state;
-   logic   [DEPTH-1:0][1:0]             buf_sz;
-   logic   [DEPTH-1:0][31:0]            buf_addr;
-   logic   [DEPTH-1:0][3:0]             buf_byteen;
-   logic   [DEPTH-1:0]                  buf_sideeffect;
-   logic   [DEPTH-1:0]                  buf_write;
-   logic   [DEPTH-1:0]                  buf_unsign;
-   logic   [DEPTH-1:0]                  buf_dual;
-   logic   [DEPTH-1:0]                  buf_samedw;
-   logic   [DEPTH-1:0]                  buf_nomerge;
-   logic   [DEPTH-1:0]                  buf_dualhi;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_dualtag;
-   logic   [DEPTH-1:0]                  buf_ldfwd;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_ldfwdtag;
-   logic   [DEPTH-1:0]                  buf_error;
-   logic   [DEPTH-1:0][31:0]            buf_data;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_age, buf_age_younger;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage, buf_rsp_pickage;
-
-   state_t [DEPTH-1:0]                  buf_nxtstate;
-   logic   [DEPTH-1:0]                  buf_rst;
-   logic   [DEPTH-1:0]                  buf_state_en;
-   logic   [DEPTH-1:0]                  buf_cmd_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_resp_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_dual_in;
-   logic   [DEPTH-1:0]                  buf_samedw_in;
-   logic   [DEPTH-1:0]                  buf_nomerge_in;
-   logic   [DEPTH-1:0]                  buf_sideeffect_in;
-   logic   [DEPTH-1:0]                  buf_unsign_in;
-   logic   [DEPTH-1:0][1:0]             buf_sz_in;
-   logic   [DEPTH-1:0]                  buf_write_in;
-   logic   [DEPTH-1:0]                  buf_wr_en;
-   logic   [DEPTH-1:0]                  buf_dualhi_in;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_dualtag_in;
-   logic   [DEPTH-1:0]                  buf_ldfwd_en;
-   logic   [DEPTH-1:0]                  buf_ldfwd_in;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_ldfwdtag_in;
-   logic   [DEPTH-1:0][3:0]             buf_byteen_in;
-   logic   [DEPTH-1:0][31:0]            buf_addr_in;
-   logic   [DEPTH-1:0][31:0]            buf_data_in;
-   logic   [DEPTH-1:0]                  buf_error_en;
-   logic   [DEPTH-1:0]                  buf_data_en;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_age_in;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_ageQ;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage_set;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage_in;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspageQ;
-
-   // Input buffer signals
-   logic                               ibuf_valid;
-   logic                               ibuf_dual;
-   logic                               ibuf_samedw;
-   logic                               ibuf_nomerge;
-   logic [DEPTH_LOG2-1:0]              ibuf_tag;
-   logic [DEPTH_LOG2-1:0]              ibuf_dualtag;
-   logic                               ibuf_sideeffect;
-   logic                               ibuf_unsign;
-   logic                               ibuf_write;
-   logic [1:0]                         ibuf_sz;
-   logic [3:0]                         ibuf_byteen;
-   logic [31:0]                        ibuf_addr;
-   logic [31:0]                        ibuf_data;
-   logic [TIMER_LOG2-1:0]              ibuf_timer;
-
-   logic                               ibuf_byp;
-   logic                               ibuf_wr_en;
-   logic                               ibuf_rst;
-   logic                               ibuf_force_drain;
-   logic                               ibuf_drain_vld;
-   logic [DEPTH-1:0]                   ibuf_drainvec_vld;
-   logic [DEPTH_LOG2-1:0]              ibuf_tag_in;
-   logic [DEPTH_LOG2-1:0]              ibuf_dualtag_in;
-   logic [1:0]                         ibuf_sz_in;
-   logic [31:0]                        ibuf_addr_in;
-   logic [3:0]                         ibuf_byteen_in;
-   logic [31:0]                        ibuf_data_in;
-   logic [TIMER_LOG2-1:0]              ibuf_timer_in;
-   logic [3:0]                         ibuf_byteen_out;
-   logic [31:0]                        ibuf_data_out;
-   logic                               ibuf_merge_en, ibuf_merge_in;
-
-   // Output buffer signals
-   logic                               obuf_valid;
-   logic                               obuf_write;
-   logic                               obuf_nosend;
-   logic                               obuf_rdrsp_pend;
-   logic                               obuf_sideeffect;
-   logic [31:0]                        obuf_addr;
-   logic [63:0]                        obuf_data;
-   logic [1:0]                         obuf_sz;
-   logic [7:0]                         obuf_byteen;
-   logic                               obuf_merge;
-   logic                               obuf_cmd_done, obuf_data_done;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag0;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag1;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_rdrsp_tag;
-
-   logic                               ibuf_buf_byp;
-   logic                               obuf_force_wr_en;
-   logic                               obuf_wr_wait;
-   logic                               obuf_wr_en, obuf_wr_enQ;
-   logic                               obuf_rst;
-   logic                               obuf_write_in;
-   logic                               obuf_nosend_in;
-   logic                               obuf_rdrsp_pend_en;
-   logic                               obuf_rdrsp_pend_in;
-   logic                               obuf_sideeffect_in;
-   logic                               obuf_aligned_in;
-   logic [31:0]                        obuf_addr_in;
-   logic [63:0]                        obuf_data_in;
-   logic [1:0]                         obuf_sz_in;
-   logic [7:0]                         obuf_byteen_in;
-   logic                               obuf_merge_in;
-   logic                               obuf_cmd_done_in, obuf_data_done_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag0_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag1_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_rdrsp_tag_in;
-
-   logic                               obuf_merge_en;
-   logic [TIMER_LOG2-1:0]              obuf_wr_timer, obuf_wr_timer_in;
-   logic [7:0]                         obuf_byteen0_in, obuf_byteen1_in;
-   logic [63:0]                        obuf_data0_in, obuf_data1_in;
-
-   logic                               lsu_axi_awvalid_q, lsu_axi_awready_q;
-   logic                               lsu_axi_wvalid_q, lsu_axi_wready_q;
-   logic                               lsu_axi_arvalid_q, lsu_axi_arready_q;
-   logic                               lsu_axi_bvalid_q, lsu_axi_bready_q;
-   logic                               lsu_axi_rvalid_q, lsu_axi_rready_q;
-   logic [pt.LSU_BUS_TAG-1:0]          lsu_axi_bid_q, lsu_axi_rid_q;
-   logic [1:0]                         lsu_axi_bresp_q, lsu_axi_rresp_q;
-   logic [pt.LSU_BUS_TAG-1:0]          lsu_imprecise_error_store_tag;
-   logic [63:0]                        lsu_axi_rdata_q;
-
-   //------------------------------------------------------------------------------
-   // Load forwarding logic start
-   //------------------------------------------------------------------------------
-
-   // Function to do 8 to 3 bit encoding
-   function automatic logic [2:0] f_Enc8to3;
-      input logic [7:0] Dec_value;
-
-      logic [2:0]       Enc_value;
-      Enc_value[0] = Dec_value[1] | Dec_value[3] | Dec_value[5] | Dec_value[7];
-      Enc_value[1] = Dec_value[2] | Dec_value[3] | Dec_value[6] | Dec_value[7];
-      Enc_value[2] = Dec_value[4] | Dec_value[5] | Dec_value[6] | Dec_value[7];
-
-      return Enc_value[2:0];
-   endfunction // f_Enc8to3
-
-   // Buffer hit logic for bus load forwarding
-   assign ldst_byteen_hi_m[3:0]   = ldst_byteen_ext_m[7:4];
-   assign ldst_byteen_lo_m[3:0]   = ldst_byteen_ext_m[3:0];
-   for (genvar i=0; i<DEPTH; i++) begin
-      assign ld_addr_hitvec_lo[i] = (lsu_addr_m[31:2] == buf_addr[i][31:2]) & buf_write[i] & (buf_state[i] != IDLE) & lsu_busreq_m;
-      assign ld_addr_hitvec_hi[i] = (end_addr_m[31:2] == buf_addr[i][31:2]) & buf_write[i] & (buf_state[i] != IDLE) & lsu_busreq_m;
-   end
-
-   for (genvar j=0; j<4; j++) begin
-     assign ld_byte_hit_buf_lo[j] = |(ld_byte_hitvecfn_lo[j]) | ld_byte_ibuf_hit_lo[j];
-     assign ld_byte_hit_buf_hi[j] = |(ld_byte_hitvecfn_hi[j]) | ld_byte_ibuf_hit_hi[j];
-     for (genvar i=0; i<DEPTH; i++) begin
-         assign ld_byte_hitvec_lo[j][i] = ld_addr_hitvec_lo[i] & buf_byteen[i][j] & ldst_byteen_lo_m[j];
-         assign ld_byte_hitvec_hi[j][i] = ld_addr_hitvec_hi[i] & buf_byteen[i][j] & ldst_byteen_hi_m[j];
-
-         assign ld_byte_hitvecfn_lo[j][i] = ld_byte_hitvec_lo[j][i] & ~(|(ld_byte_hitvec_lo[j] & buf_age_younger[i])) & ~ld_byte_ibuf_hit_lo[j];  // Kill the byte enable if younger entry exists or byte exists in ibuf
-         assign ld_byte_hitvecfn_hi[j][i] = ld_byte_hitvec_hi[j][i] & ~(|(ld_byte_hitvec_hi[j] & buf_age_younger[i])) & ~ld_byte_ibuf_hit_hi[j];  // Kill the byte enable if younger entry exists or byte exists in ibuf
-      end
-   end
-
-   // Hit in the ibuf
-   assign ld_addr_ibuf_hit_lo = (lsu_addr_m[31:2] == ibuf_addr[31:2]) & ibuf_write & ibuf_valid & lsu_busreq_m;
-   assign ld_addr_ibuf_hit_hi = (end_addr_m[31:2] == ibuf_addr[31:2]) & ibuf_write & ibuf_valid & lsu_busreq_m;
-
-   for (genvar i=0; i<4; i++) begin
-      assign ld_byte_ibuf_hit_lo[i] = ld_addr_ibuf_hit_lo & ibuf_byteen[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_ibuf_hit_hi[i] = ld_addr_ibuf_hit_hi & ibuf_byteen[i] & ldst_byteen_hi_m[i];
-   end
-
-   always_comb begin
-      ld_fwddata_buf_lo[31:0] = {{8{ld_byte_ibuf_hit_lo[3]}},{8{ld_byte_ibuf_hit_lo[2]}},{8{ld_byte_ibuf_hit_lo[1]}},{8{ld_byte_ibuf_hit_lo[0]}}} & ibuf_data[31:0];
-      ld_fwddata_buf_hi[31:0] = {{8{ld_byte_ibuf_hit_hi[3]}},{8{ld_byte_ibuf_hit_hi[2]}},{8{ld_byte_ibuf_hit_hi[1]}},{8{ld_byte_ibuf_hit_hi[0]}}} & ibuf_data[31:0];
-      for (int i=0; i<DEPTH; i++) begin
-         ld_fwddata_buf_lo[7:0]   |= {8{ld_byte_hitvecfn_lo[0][i]}} & buf_data[i][7:0];
-         ld_fwddata_buf_lo[15:8]  |= {8{ld_byte_hitvecfn_lo[1][i]}} & buf_data[i][15:8];
-         ld_fwddata_buf_lo[23:16] |= {8{ld_byte_hitvecfn_lo[2][i]}} & buf_data[i][23:16];
-         ld_fwddata_buf_lo[31:24] |= {8{ld_byte_hitvecfn_lo[3][i]}} & buf_data[i][31:24];
-
-         ld_fwddata_buf_hi[7:0]   |= {8{ld_byte_hitvecfn_hi[0][i]}} & buf_data[i][7:0];
-         ld_fwddata_buf_hi[15:8]  |= {8{ld_byte_hitvecfn_hi[1][i]}} & buf_data[i][15:8];
-         ld_fwddata_buf_hi[23:16] |= {8{ld_byte_hitvecfn_hi[2][i]}} & buf_data[i][23:16];
-         ld_fwddata_buf_hi[31:24] |= {8{ld_byte_hitvecfn_hi[3][i]}} & buf_data[i][31:24];
-      end
-   end
-
-   //------------------------------------------------------------------------------
-   // Load forwarding logic end
-   //------------------------------------------------------------------------------
-
-   assign bus_coalescing_disable = dec_tlu_wb_coalescing_disable | pt.BUILD_AHB_LITE;
-
-   // Get the hi/lo byte enable
-   assign ldst_byteen_r[3:0] = ({4{lsu_pkt_r.by}}   & 4'b0001) |
-                                 ({4{lsu_pkt_r.half}} & 4'b0011) |
-                                 ({4{lsu_pkt_r.word}} & 4'b1111);
-
-   assign {ldst_byteen_hi_r[3:0], ldst_byteen_lo_r[3:0]} = {4'b0,ldst_byteen_r[3:0]} << lsu_addr_r[1:0];
-   assign {store_data_hi_r[31:0], store_data_lo_r[31:0]} = {32'b0,store_data_r[31:0]} << 8*lsu_addr_r[1:0];
-   assign ldst_samedw_r    = (lsu_addr_r[3] == end_addr_r[3]);
-   assign is_aligned_r    = (lsu_pkt_r.word & (lsu_addr_r[1:0] == 2'b0)) |
-                            (lsu_pkt_r.half & (lsu_addr_r[0] == 1'b0))   |
-                            lsu_pkt_r.by;
-
-   //------------------------------------------------------------------------------
-   // Input buffer logic starts here
-   //------------------------------------------------------------------------------
-
-   assign ibuf_byp = lsu_busreq_r & (lsu_pkt_r.load | no_word_merge_r) & ~ibuf_valid;
-   assign ibuf_wr_en = lsu_busreq_r & lsu_commit_r & ~ibuf_byp;
-   assign ibuf_rst   = (ibuf_drain_vld & ~ibuf_wr_en) | dec_tlu_force_halt;
-   assign ibuf_force_drain = lsu_busreq_m & ~lsu_busreq_r & ibuf_valid & (lsu_pkt_m.load | (ibuf_addr[31:2] != lsu_addr_m[31:2]));  // Move the ibuf to buf if there is a non-colaescable ld/st in m but nothing in r
-   assign ibuf_drain_vld = ibuf_valid & (((ibuf_wr_en | (ibuf_timer == TIMER_MAX)) & ~(ibuf_merge_en & ibuf_merge_in)) | ibuf_byp | ibuf_force_drain | ibuf_sideeffect | ~ibuf_write | bus_coalescing_disable);
-   assign ibuf_tag_in[DEPTH_LOG2-1:0] = (ibuf_merge_en & ibuf_merge_in) ? ibuf_tag[DEPTH_LOG2-1:0] : (ldst_dual_r ? WrPtr1_r : WrPtr0_r);
-   assign ibuf_dualtag_in[DEPTH_LOG2-1:0] = WrPtr0_r;
-   assign ibuf_sz_in[1:0]   = {lsu_pkt_r.word, lsu_pkt_r.half};
-   assign ibuf_addr_in[31:0] = ldst_dual_r ? end_addr_r[31:0] : lsu_addr_r[31:0];
-   assign ibuf_byteen_in[3:0] = (ibuf_merge_en & ibuf_merge_in) ? (ibuf_byteen[3:0] | ldst_byteen_lo_r[3:0]) : (ldst_dual_r ? ldst_byteen_hi_r[3:0] : ldst_byteen_lo_r[3:0]);
-   for (genvar i=0; i<4; i++) begin
-      assign ibuf_data_in[(8*i)+7:(8*i)] = (ibuf_merge_en & ibuf_merge_in) ? (ldst_byteen_lo_r[i] ? store_data_lo_r[(8*i)+7:(8*i)] : ibuf_data[(8*i)+7:(8*i)]) :
-                                                                             (ldst_dual_r ? store_data_hi_r[(8*i)+7:(8*i)] : store_data_lo_r[(8*i)+7:(8*i)]);
-   end
-   assign ibuf_timer_in = ibuf_wr_en ? '0 : (ibuf_timer < TIMER_MAX) ? (ibuf_timer + 1'b1) : ibuf_timer;
-
-
-   assign ibuf_merge_en = lsu_busreq_r & lsu_commit_r & lsu_pkt_r.store & ibuf_valid & ibuf_write & (lsu_addr_r[31:2] == ibuf_addr[31:2]) & ~is_sideeffects_r & ~bus_coalescing_disable;
-   assign ibuf_merge_in = ~ldst_dual_r;   // If it's a unaligned store, merge needs to happen on the way out of ibuf
-
-   // ibuf signals going to bus buffer after merging
-   for (genvar i=0; i<4; i++) begin
-      assign ibuf_byteen_out[i] = (ibuf_merge_en & ~ibuf_merge_in) ? (ibuf_byteen[i] | ldst_byteen_lo_r[i]) : ibuf_byteen[i];
-      assign ibuf_data_out[(8*i)+7:(8*i)] = (ibuf_merge_en & ~ibuf_merge_in) ? (ldst_byteen_lo_r[i] ? store_data_lo_r[(8*i)+7:(8*i)] : ibuf_data[(8*i)+7:(8*i)]) :
-                                                                                                        ibuf_data[(8*i)+7:(8*i)];
-   end
-
-   rvdffsc #(.WIDTH(1))              ibuf_valid_ff     (.din(1'b1),                      .dout(ibuf_valid),      .en(ibuf_wr_en), .clear(ibuf_rst), .clk(lsu_free_c2_clk), .*);
-   rvdffs  #(.WIDTH(DEPTH_LOG2))     ibuf_tagff        (.din(ibuf_tag_in),               .dout(ibuf_tag),        .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(DEPTH_LOG2))     ibuf_dualtagff    (.din(ibuf_dualtag_in),           .dout(ibuf_dualtag),    .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_dualff       (.din(ldst_dual_r),               .dout(ibuf_dual),       .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_samedwff     (.din(ldst_samedw_r),             .dout(ibuf_samedw),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_nomergeff    (.din(no_dword_merge_r),          .dout(ibuf_nomerge),    .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_sideeffectff (.din(is_sideeffects_r),          .dout(ibuf_sideeffect), .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_unsignff     (.din(lsu_pkt_r.unsign),          .dout(ibuf_unsign),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_writeff      (.din(lsu_pkt_r.store),           .dout(ibuf_write),      .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(2))              ibuf_szff         (.din(ibuf_sz_in[1:0]),           .dout(ibuf_sz),         .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffe  #(.WIDTH(32))             ibuf_addrff       (.din(ibuf_addr_in[31:0]),        .dout(ibuf_addr),       .en(ibuf_wr_en),                                              .*);
-   rvdffs  #(.WIDTH(4))              ibuf_byteenff     (.din(ibuf_byteen_in[3:0]),       .dout(ibuf_byteen),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffe  #(.WIDTH(32))             ibuf_dataff       (.din(ibuf_data_in[31:0]),        .dout(ibuf_data),       .en(ibuf_wr_en),                                              .*);
-   rvdff   #(.WIDTH(TIMER_LOG2))     ibuf_timerff      (.din(ibuf_timer_in),             .dout(ibuf_timer),                                         .clk(lsu_free_c2_clk),     .*);
-
-
-   //------------------------------------------------------------------------------
-   // Input buffer logic ends here
-   //------------------------------------------------------------------------------
-
-
-   //------------------------------------------------------------------------------
-   // Output buffer logic starts here
-   //------------------------------------------------------------------------------
-
-   assign obuf_wr_wait = (buf_numvld_wrcmd_any[3:0] == 4'b1) & (buf_numvld_cmd_any[3:0] == 4'b1) & (obuf_wr_timer != TIMER_MAX) &
-                         ~bus_coalescing_disable & ~buf_nomerge[CmdPtr0] & ~buf_sideeffect[CmdPtr0] & ~obuf_force_wr_en;
-   assign obuf_wr_timer_in = obuf_wr_en ? 3'b0: (((buf_numvld_cmd_any > 4'b0) & (obuf_wr_timer < TIMER_MAX)) ? (obuf_wr_timer + 1'b1) : obuf_wr_timer);
-   assign obuf_force_wr_en = lsu_busreq_m & ~lsu_busreq_r & ~ibuf_valid & (buf_numvld_cmd_any[3:0] == 4'b1) & (lsu_addr_m[31:2] != buf_addr[CmdPtr0][31:2]);   // Entry in m can't merge with entry going to obuf and there is no entry in between
-   assign ibuf_buf_byp = ibuf_byp & (buf_numvld_pend_any[3:0] == 4'b0) & (~lsu_pkt_r.store | no_dword_merge_r);
-
-   assign obuf_wr_en = ((ibuf_buf_byp & lsu_commit_r & ~(is_sideeffects_r & bus_sideeffect_pend)) |
-                        ((buf_state[CmdPtr0] == CMD) & found_cmdptr0 & ~buf_cmd_state_bus_en[CmdPtr0] & ~(buf_sideeffect[CmdPtr0] & bus_sideeffect_pend) &
-                         (~(buf_dual[CmdPtr0] & buf_samedw[CmdPtr0] & ~buf_write[CmdPtr0]) | found_cmdptr1 | buf_nomerge[CmdPtr0] | obuf_force_wr_en))) &
-                       (bus_cmd_ready | ~obuf_valid | obuf_nosend) & ~obuf_wr_wait  & ~bus_addr_match_pending & lsu_bus_clk_en;
-
-   assign obuf_rst   = ((bus_cmd_sent | (obuf_valid & obuf_nosend)) & ~obuf_wr_en & lsu_bus_clk_en) | dec_tlu_force_halt;
-
-   assign obuf_write_in      = ibuf_buf_byp ? lsu_pkt_r.store : buf_write[CmdPtr0];
-   assign obuf_sideeffect_in = ibuf_buf_byp ? is_sideeffects_r : buf_sideeffect[CmdPtr0];
-   assign obuf_addr_in[31:0] = ibuf_buf_byp ? lsu_addr_r[31:0] : buf_addr[CmdPtr0];
-   assign obuf_sz_in[1:0]    = ibuf_buf_byp ? {lsu_pkt_r.word, lsu_pkt_r.half} : buf_sz[CmdPtr0];
-   assign obuf_merge_in      = obuf_merge_en;
-   assign obuf_tag0_in[pt.LSU_BUS_TAG-1:0] = ibuf_buf_byp ? (pt.LSU_BUS_TAG)'(WrPtr0_r) : (pt.LSU_BUS_TAG)'(CmdPtr0);
-   assign obuf_tag1_in[pt.LSU_BUS_TAG-1:0] = ibuf_buf_byp ? (pt.LSU_BUS_TAG)'(WrPtr1_r) : (pt.LSU_BUS_TAG)'(CmdPtr1);
-
-   assign obuf_cmd_done_in    = ~(obuf_wr_en | obuf_rst) & (obuf_cmd_done | bus_wcmd_sent);
-   assign obuf_data_done_in   = ~(obuf_wr_en | obuf_rst) & (obuf_data_done | bus_wdata_sent);
-
-   assign obuf_aligned_in    = ibuf_buf_byp ? is_aligned_r : ((obuf_sz_in[1:0] == 2'b0) |
-                                                              (obuf_sz_in[0] & ~obuf_addr_in[0]) |
-                                                              (obuf_sz_in[1] & ~(|obuf_addr_in[1:0])));
-
-   assign obuf_rdrsp_pend_in  = ((~(obuf_wr_en & ~obuf_nosend_in) & obuf_rdrsp_pend & ~(bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag))) | (bus_cmd_sent & ~obuf_write)) & ~dec_tlu_force_halt;
-   assign obuf_rdrsp_pend_en  = lsu_bus_clk_en | dec_tlu_force_halt;
-   assign obuf_rdrsp_tag_in[pt.LSU_BUS_TAG-1:0] = (bus_cmd_sent & ~obuf_write) ? obuf_tag0[pt.LSU_BUS_TAG-1:0] : obuf_rdrsp_tag[pt.LSU_BUS_TAG-1:0];
-   // No ld to ld fwd for aligned
-   assign obuf_nosend_in      = (obuf_addr_in[31:3] == obuf_addr[31:3]) & obuf_aligned_in & ~obuf_sideeffect & ~obuf_write & ~obuf_write_in & ~dec_tlu_external_ldfwd_disable &
-                                ((obuf_valid & ~obuf_nosend) | (obuf_rdrsp_pend & ~(bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag))));
-
-   assign obuf_byteen0_in[7:0] = ibuf_buf_byp ? (lsu_addr_r[2] ? {ldst_byteen_lo_r[3:0],4'b0} : {4'b0,ldst_byteen_lo_r[3:0]}) :
-                                                (buf_addr[CmdPtr0][2] ? {buf_byteen[CmdPtr0],4'b0} : {4'b0,buf_byteen[CmdPtr0]});
-   assign obuf_byteen1_in[7:0] = ibuf_buf_byp ? (end_addr_r[2] ? {ldst_byteen_hi_r[3:0],4'b0} : {4'b0,ldst_byteen_hi_r[3:0]}) :
-                                                (buf_addr[CmdPtr1][2] ? {buf_byteen[CmdPtr1],4'b0} : {4'b0,buf_byteen[CmdPtr1]});
-   assign obuf_data0_in[63:0]  = ibuf_buf_byp ? (lsu_addr_r[2] ? {store_data_lo_r[31:0],32'b0} : {32'b0,store_data_lo_r[31:0]}) :
-                                                (buf_addr[CmdPtr0][2] ? {buf_data[CmdPtr0],32'b0} : {32'b0,buf_data[CmdPtr0]});
-   assign obuf_data1_in[63:0]  = ibuf_buf_byp ? (end_addr_r[2] ? {store_data_hi_r[31:0],32'b0} :{32'b0,store_data_hi_r[31:0]}) :
-                                                (buf_addr[CmdPtr1][2] ? {buf_data[CmdPtr1],32'b0} : {32'b0,buf_data[CmdPtr1]});
-
-   for (genvar i=0 ;i<8; i++) begin
-      assign obuf_byteen_in[i] = obuf_byteen0_in[i] | (obuf_merge_en & obuf_byteen1_in[i]);
-      assign obuf_data_in[(8*i)+7:(8*i)] = (obuf_merge_en & obuf_byteen1_in[i]) ? obuf_data1_in[(8*i)+7:(8*i)] : obuf_data0_in[(8*i)+7:(8*i)];
-   end
-
-   // No store obuf merging for AXI since all stores are sent non-posted. Can't track the second id right now
-   assign obuf_merge_en = ((CmdPtr0 != CmdPtr1) & found_cmdptr0 & found_cmdptr1 & (buf_state[CmdPtr0] == CMD) & (buf_state[CmdPtr1] == CMD) &
-                           ~buf_cmd_state_bus_en[CmdPtr0] & ~buf_sideeffect[CmdPtr0] &
-                           (~buf_write[CmdPtr0] & buf_dual[CmdPtr0] & ~buf_dualhi[CmdPtr0] & buf_samedw[CmdPtr0])) |  // CmdPtr0/CmdPtr1 are for same load which is within a DW
-                          (ibuf_buf_byp & ldst_samedw_r & ldst_dual_r);
-
-
-   rvdff_fpga  #(.WIDTH(1))              obuf_wren_ff      (.din(obuf_wr_en),                  .dout(obuf_wr_enQ),                                        .clk(lsu_busm_clk),        .clken(lsu_busm_clken), .rawclk(clk),        .*);
-   rvdffsc     #(.WIDTH(1))              obuf_valid_ff     (.din(1'b1),                        .dout(obuf_valid),      .en(obuf_wr_en), .clear(obuf_rst), .clk(lsu_free_c2_clk),                                                  .*);
-   rvdffs      #(.WIDTH(1))              obuf_nosend_ff    (.din(obuf_nosend_in),              .dout(obuf_nosend),     .en(obuf_wr_en),                   .clk(lsu_free_c2_clk),                                                  .*);
-   rvdffs      #(.WIDTH(1))              obuf_rdrsp_pend_ff(.din(obuf_rdrsp_pend_in),          .dout(obuf_rdrsp_pend), .en(obuf_rdrsp_pend_en),           .clk(lsu_free_c2_clk),                                                  .*);
-   rvdff_fpga  #(.WIDTH(1))              obuf_cmd_done_ff  (.din(obuf_cmd_done_in),            .dout(obuf_cmd_done),                                      .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              obuf_data_done_ff (.din(obuf_data_done_in),           .dout(obuf_data_done),                                     .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) obuf_rdrsp_tagff  (.din(obuf_rdrsp_tag_in),           .dout(obuf_rdrsp_tag),                                     .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(pt.LSU_BUS_TAG)) obuf_tag0ff       (.din(obuf_tag0_in),                .dout(obuf_tag0),       .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(pt.LSU_BUS_TAG)) obuf_tag1ff       (.din(obuf_tag1_in),                .dout(obuf_tag1),       .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_mergeff      (.din(obuf_merge_in),               .dout(obuf_merge),      .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_writeff      (.din(obuf_write_in),               .dout(obuf_write),      .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_sideeffectff (.din(obuf_sideeffect_in),          .dout(obuf_sideeffect), .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(2))              obuf_szff         (.din(obuf_sz_in[1:0]),             .dout(obuf_sz),         .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(8))              obuf_byteenff     (.din(obuf_byteen_in[7:0]),         .dout(obuf_byteen),     .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffe     #(.WIDTH(32))              obuf_addrff       (.din(obuf_addr_in[31:0]),          .dout(obuf_addr),       .en(obuf_wr_en),                                                                                           .*);
-   rvdffe     #(.WIDTH(64))              obuf_dataff       (.din(obuf_data_in[63:0]),          .dout(obuf_data),       .en(obuf_wr_en),                                                                                           .*);
-   rvdff_fpga #(.WIDTH(TIMER_LOG2))      obuf_timerff      (.din(obuf_wr_timer_in),            .dout(obuf_wr_timer),                                      .clk(lsu_busm_clk),        .clken(lsu_busm_clken), .rawclk(clk),        .*);
-
-
-   //------------------------------------------------------------------------------
-   // Output buffer logic ends here
-   //------------------------------------------------------------------------------
-
-   // Find the entry to allocate and entry to send
-   always_comb begin
-      WrPtr0_m[DEPTH_LOG2-1:0] = '0;
-      WrPtr1_m[DEPTH_LOG2-1:0] = '0;
-      found_wrptr0  = '0;
-      found_wrptr1  = '0;
-
-      // Find first write pointer
-      for (int i=0; i<DEPTH; i++) begin
-         if (~found_wrptr0) begin
-            WrPtr0_m[DEPTH_LOG2-1:0] = DEPTH_LOG2'(i);
-            found_wrptr0 = (buf_state[i] == IDLE) & ~((ibuf_valid & (ibuf_tag == i))                                               |
-                                                      (lsu_busreq_r & ((WrPtr0_r == i) | (ldst_dual_r & (WrPtr1_r == i)))));
-         end
-      end
-
-      // Find second write pointer
-      for (int i=0; i<DEPTH; i++) begin
-         if (~found_wrptr1) begin
-            WrPtr1_m[DEPTH_LOG2-1:0] = DEPTH_LOG2'(i);
-            found_wrptr1 = (buf_state[i] == IDLE) & ~((ibuf_valid & (ibuf_tag == i))                                               |
-                                                      (lsu_busreq_m & (WrPtr0_m == i))                                         |
-                                                      (lsu_busreq_r & ((WrPtr0_r == i) | (ldst_dual_r & (WrPtr1_r == i)))));
-         end
-      end
-   end
-
-   // Get the command ptr
-   for (genvar i=0; i<DEPTH; i++) begin
-      // These should be one-hot
-      assign CmdPtr0Dec[i] = ~(|buf_age[i]) & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i];
-      assign CmdPtr1Dec[i] = ~(|(buf_age[i] & ~CmdPtr0Dec)) & ~CmdPtr0Dec[i] & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i];
-      assign RspPtrDec[i]  = ~(|buf_rsp_pickage[i]) & (buf_state[i] == DONE_WAIT);
-   end
-
-   assign found_cmdptr0 = |CmdPtr0Dec;
-   assign found_cmdptr1 = |CmdPtr1Dec;
-   assign CmdPtr0 = f_Enc8to3(8'(CmdPtr0Dec[DEPTH-1:0]));
-   assign CmdPtr1 = f_Enc8to3(8'(CmdPtr1Dec[DEPTH-1:0]));
-   assign RspPtr  = f_Enc8to3(8'(RspPtrDec[DEPTH-1:0]));
-
-   // Age vector
-   for (genvar i=0; i<DEPTH; i++) begin: GenAgeVec
-      for (genvar j=0; j<DEPTH; j++) begin
-         assign buf_age_in[i][j] = (((buf_state[i] == IDLE) & buf_state_en[i]) &
-                                    (((buf_state[j] == WAIT) | ((buf_state[j] == CMD) & ~buf_cmd_state_bus_en[j]))                   |       // Set age bit for older entries
-                                     (ibuf_drain_vld & lsu_busreq_r & (ibuf_byp | ldst_dual_r) & (i == WrPtr0_r) & (j == ibuf_tag))  |       // Set case for dual lo
-                                     (ibuf_byp & lsu_busreq_r & ldst_dual_r & (i == WrPtr1_r) & (j == WrPtr0_r))))                      |     // ibuf bypass case
-                                   buf_age[i][j];
-
-
-         assign buf_age[i][j]    = buf_ageQ[i][j] & ~((buf_state[j] == CMD) & buf_cmd_state_bus_en[j]) & ~dec_tlu_force_halt;  // Reset case
-
-         assign buf_age_younger[i][j] = (i == j) ? 1'b0: (~buf_age[i][j] & (buf_state[j] != IDLE));   // Younger entries
-      end
-   end
-
-   // Age vector for responses
-   for (genvar i=0; i<DEPTH; i++) begin: GenRspAgeVec
-      for (genvar j=0; j<DEPTH; j++) begin
-         assign buf_rspage_set[i][j] = ((buf_state[i] == IDLE) & buf_state_en[i]) &
-                                           (~((buf_state[j] == IDLE) | (buf_state[j] == DONE))                                         |       // Set age bit for older entries
-                                            (ibuf_drain_vld & lsu_busreq_r & (ibuf_byp | ldst_dual_r) & (DEPTH_LOG2'(i) == WrPtr0_r) & (DEPTH_LOG2'(j) == ibuf_tag))  |       // Set case for dual lo
-                                            (ibuf_byp & lsu_busreq_r & ldst_dual_r & (DEPTH_LOG2'(i) == WrPtr1_r) & (DEPTH_LOG2'(j) == WrPtr0_r)));
-         assign buf_rspage_in[i][j] = buf_rspage_set[i][j] | buf_rspage[i][j];
-         assign buf_rspage[i][j]    = buf_rspageQ[i][j] & ~((buf_state[j] == DONE) | (buf_state[j] == IDLE)) & ~dec_tlu_force_halt;  // Reset case
-         assign buf_rsp_pickage[i][j] = buf_rspageQ[i][j] & (buf_state[j] == DONE_WAIT);
-     end
-   end
-
-   //------------------------------------------------------------------------------
-   // Buffer logic
-   //------------------------------------------------------------------------------
-   for (genvar i=0; i<DEPTH; i++) begin
-
-      assign ibuf_drainvec_vld[i] = (ibuf_drain_vld & (i == ibuf_tag));
-      assign buf_byteen_in[i]     = ibuf_drainvec_vld[i] ? ibuf_byteen_out[3:0] : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? ldst_byteen_hi_r[3:0] : ldst_byteen_lo_r[3:0]);
-      assign buf_addr_in[i]       = ibuf_drainvec_vld[i] ? ibuf_addr[31:0] : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? end_addr_r[31:0] : lsu_addr_r[31:0]);
-      assign buf_dual_in[i]       = ibuf_drainvec_vld[i] ? ibuf_dual : ldst_dual_r;
-      assign buf_samedw_in[i]     = ibuf_drainvec_vld[i] ? ibuf_samedw : ldst_samedw_r;
-      assign buf_nomerge_in[i]    = ibuf_drainvec_vld[i] ? (ibuf_nomerge | ibuf_force_drain) : no_dword_merge_r;
-      assign buf_dualhi_in[i]     = ibuf_drainvec_vld[i] ? ibuf_dual : (ibuf_byp & ldst_dual_r & (i == WrPtr1_r));   // If it's dual, ibuf will always have the high
-      assign buf_dualtag_in[i]    = ibuf_drainvec_vld[i] ? ibuf_dualtag : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? WrPtr0_r : WrPtr1_r);
-      assign buf_sideeffect_in[i] = ibuf_drainvec_vld[i] ? ibuf_sideeffect : is_sideeffects_r;
-      assign buf_unsign_in[i]     = ibuf_drainvec_vld[i] ? ibuf_unsign : lsu_pkt_r.unsign;
-      assign buf_sz_in[i]         = ibuf_drainvec_vld[i] ? ibuf_sz : {lsu_pkt_r.word, lsu_pkt_r.half};
-      assign buf_write_in[i]      = ibuf_drainvec_vld[i] ? ibuf_write : lsu_pkt_r.store;
-
-      // Buffer entry state machine
-      always_comb begin
-         buf_nxtstate[i]          = IDLE;
-         buf_state_en[i]          = '0;
-         buf_resp_state_bus_en[i] = '0;
-         buf_state_bus_en[i]      = '0;
-         buf_wr_en[i]             = '0;
-         buf_data_in[i]           = '0;
-         buf_data_en[i]           = '0;
-         buf_error_en[i]          = '0;
-         buf_rst[i]               = dec_tlu_force_halt;
-         buf_ldfwd_en[i]          = dec_tlu_force_halt;
-         buf_ldfwd_in[i]          = '0;
-         buf_ldfwdtag_in[i]       = '0;
-
-         case (buf_state[i])
-            IDLE: begin
-                     buf_nxtstate[i] = lsu_bus_clk_en ? CMD : WAIT;
-                     buf_state_en[i] = (lsu_busreq_r & lsu_commit_r & (((ibuf_byp | ldst_dual_r) & ~ibuf_merge_en & (i == WrPtr0_r)) | (ibuf_byp & ldst_dual_r & (i == WrPtr1_r)))) |
-                                       (ibuf_drain_vld & (i == ibuf_tag));
-                     buf_wr_en[i]    = buf_state_en[i];
-                     buf_data_en[i]  = buf_state_en[i];
-                     buf_data_in[i]   = (ibuf_drain_vld & (i == ibuf_tag)) ? ibuf_data_out[31:0] : store_data_lo_r[31:0];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            WAIT: begin
-                     buf_nxtstate[i] = dec_tlu_force_halt ? IDLE : CMD;
-                     buf_state_en[i] = lsu_bus_clk_en | dec_tlu_force_halt;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            CMD: begin
-                     buf_nxtstate[i]          = dec_tlu_force_halt ? IDLE : (obuf_nosend & bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag)) ? DONE_WAIT : RESP;
-                     buf_cmd_state_bus_en[i]  = ((obuf_tag0 == i) | (obuf_merge & (obuf_tag1 == i))) & obuf_valid & obuf_wr_enQ;  // Just use the recently written obuf_valid
-                     buf_state_bus_en[i]      = buf_cmd_state_bus_en[i];
-                     buf_state_en[i]          = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_ldfwd_in[i]          = 1'b1;
-                     buf_ldfwd_en[i]          = buf_state_en[i] & ~buf_write[i] & obuf_nosend & ~dec_tlu_force_halt;
-                     buf_ldfwdtag_in[i]       = DEPTH_LOG2'(obuf_rdrsp_tag[pt.LSU_BUS_TAG-2:0]);
-                     buf_data_en[i]           = buf_state_bus_en[i] & lsu_bus_clk_en & obuf_nosend & bus_rsp_read;
-                     buf_error_en[i]          = buf_state_bus_en[i] & lsu_bus_clk_en & obuf_nosend & bus_rsp_read_error;
-                     buf_data_in[i]           = buf_error_en[i] ? bus_rsp_rdata[31:0] : (buf_addr[i][2] ? bus_rsp_rdata[63:32] : bus_rsp_rdata[31:0]);
-            end
-            RESP: begin
-                     buf_nxtstate[i]           = (dec_tlu_force_halt | (buf_write[i] & ~bus_rsp_write_error)) ? IDLE :    // Side-effect writes will be non-posted
-                                                      (buf_dual[i] & ~buf_samedw[i] & ~buf_write[i] & (buf_state[buf_dualtag[i]] != DONE_PARTIAL)) ? DONE_PARTIAL : // Goto DONE_PARTIAL if this is the first return of dual
-                                                           (buf_ldfwd[i] | any_done_wait_state |
-                                                            (buf_dual[i] & ~buf_samedw[i] & ~buf_write[i] & buf_ldfwd[buf_dualtag[i]] &
-                                                             (buf_state[buf_dualtag[i]] == DONE_PARTIAL) & any_done_wait_state)) ? DONE_WAIT : DONE;
-                     buf_resp_state_bus_en[i]  = (bus_rsp_write & (bus_rsp_write_tag == (pt.LSU_BUS_TAG)'(i))) |
-                                                 (bus_rsp_read  & ((bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(i)) |
-                                                                   (buf_ldfwd[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[i]))) |
-                                                                   (buf_dual[i] & buf_dualhi[i] & ~buf_write[i] & buf_samedw[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_dualtag[i])))));
-                     buf_state_bus_en[i]       = buf_resp_state_bus_en[i];
-                     buf_state_en[i]           = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_data_en[i]            = buf_state_bus_en[i] & bus_rsp_read & lsu_bus_clk_en;
-                      // Need to capture the error for stores as well for AXI
-                     buf_error_en[i]           = buf_state_bus_en[i] & lsu_bus_clk_en & ((bus_rsp_read_error  & (bus_rsp_read_tag  == (pt.LSU_BUS_TAG)'(i))) |
-                                                                                         (bus_rsp_read_error  & buf_ldfwd[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[i]))) |
-                                                                                         (bus_rsp_write_error & (bus_rsp_write_tag == (pt.LSU_BUS_TAG)'(i))));
-                     buf_data_in[i][31:0]      = (buf_state_en[i] & ~buf_error_en[i]) ? (buf_addr[i][2] ? bus_rsp_rdata[63:32] : bus_rsp_rdata[31:0]) : bus_rsp_rdata[31:0];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE_PARTIAL: begin   // Other part of dual load hasn't returned
-                     buf_nxtstate[i]           = dec_tlu_force_halt ? IDLE : (buf_ldfwd[i] | buf_ldfwd[buf_dualtag[i]] | any_done_wait_state) ? DONE_WAIT : DONE;
-                     buf_state_bus_en[i]       = bus_rsp_read & ((bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_dualtag[i])) |
-                                                                 (buf_ldfwd[buf_dualtag[i]] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[buf_dualtag[i]]))));
-                     buf_state_en[i]           = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE_WAIT: begin  // WAIT state if there are multiple outstanding nb returns
-                      buf_nxtstate[i]           = dec_tlu_force_halt ? IDLE : DONE;
-                      buf_state_en[i]           = ((RspPtr == DEPTH_LOG2'(i)) | (buf_dual[i] & (buf_dualtag[i] == RspPtr))) | dec_tlu_force_halt;
-                      buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE: begin
-                     buf_nxtstate[i]           = IDLE;
-                     buf_rst[i]                = 1'b1;
-                     buf_state_en[i]           = 1'b1;
-                     buf_ldfwd_in[i]           = 1'b0;
-                     buf_ldfwd_en[i]           = buf_state_en[i];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            default : begin
-                     buf_nxtstate[i]          = IDLE;
-                     buf_state_en[i]          = '0;
-                     buf_resp_state_bus_en[i] = '0;
-                     buf_state_bus_en[i]      = '0;
-                     buf_wr_en[i]             = '0;
-                     buf_data_in[i]           = '0;
-                     buf_data_en[i]           = '0;
-                     buf_error_en[i]          = '0;
-                     buf_rst[i]               = '0;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-         endcase
-      end
-
-      rvdffs  #(.WIDTH($bits(state_t))) buf_state_ff     (.din(buf_nxtstate[i]),             .dout({buf_state[i]}),    .en(buf_state_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdff   #(.WIDTH(DEPTH))          buf_ageff        (.din(buf_age_in[i]),               .dout(buf_ageQ[i]),                                                                    .clk(lsu_bus_buf_c1_clk), .*);
-      rvdff   #(.WIDTH(DEPTH))          buf_rspageff     (.din(buf_rspage_in[i]),            .dout(buf_rspageQ[i]),                                                                 .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(DEPTH_LOG2))     buf_dualtagff    (.din(buf_dualtag_in[i]),           .dout(buf_dualtag[i]),    .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_dualff       (.din(buf_dual_in[i]),              .dout(buf_dual[i]),       .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_samedwff     (.din(buf_samedw_in[i]),            .dout(buf_samedw[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_nomergeff    (.din(buf_nomerge_in[i]),           .dout(buf_nomerge[i]),    .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_dualhiff     (.din(buf_dualhi_in[i]),            .dout(buf_dualhi[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_ldfwdff      (.din(buf_ldfwd_in[i]),             .dout(buf_ldfwd[i]),      .en(buf_ldfwd_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(DEPTH_LOG2))     buf_ldfwdtagff   (.din(buf_ldfwdtag_in[i]),          .dout(buf_ldfwdtag[i]),   .en(buf_ldfwd_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_sideeffectff (.din(buf_sideeffect_in[i]),        .dout(buf_sideeffect[i]), .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_unsignff     (.din(buf_unsign_in[i]),            .dout(buf_unsign[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_writeff      (.din(buf_write_in[i]),             .dout(buf_write[i]),      .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(2))              buf_szff         (.din(buf_sz_in[i]),                .dout(buf_sz[i]),         .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffe  #(.WIDTH(32))             buf_addrff       (.din(buf_addr_in[i][31:0]),        .dout(buf_addr[i]),       .en(buf_wr_en[i]),                                                                     .*);
-      rvdffs  #(.WIDTH(4))              buf_byteenff     (.din(buf_byteen_in[i][3:0]),       .dout(buf_byteen[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffe  #(.WIDTH(32))             buf_dataff       (.din(buf_data_in[i][31:0]),        .dout(buf_data[i]),       .en(buf_data_en[i]),                                                                   .*);
-      rvdffsc #(.WIDTH(1))              buf_errorff      (.din(1'b1),                        .dout(buf_error[i]),      .en(buf_error_en[i]),                    .clear(buf_rst[i]), .clk(lsu_bus_buf_c1_clk), .*);
-
-   end
-
-   // buffer full logic
-   always_comb begin
-      buf_numvld_any[3:0] =  ({1'b0,lsu_busreq_m} << ldst_dual_m) +
-                             ({1'b0,lsu_busreq_r} << ldst_dual_r) +
-                             ibuf_valid;
-      buf_numvld_wrcmd_any[3:0] = 4'b0;
-      buf_numvld_cmd_any[3:0] = 4'b0;
-      buf_numvld_pend_any[3:0] = 4'b0;
-      any_done_wait_state = 1'b0;
-      for (int i=0; i<DEPTH; i++) begin
-         buf_numvld_any[3:0] += {3'b0, (buf_state[i] != IDLE)};
-         buf_numvld_wrcmd_any[3:0] += {3'b0, (buf_write[i] & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i])};
-         buf_numvld_cmd_any[3:0]   += {3'b0, ((buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i])};
-         buf_numvld_pend_any[3:0]   += {3'b0, ((buf_state[i] == WAIT) | ((buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i]))};
-         any_done_wait_state |= (buf_state[i] == DONE_WAIT);
-      end
-   end
-
-   assign lsu_bus_buffer_pend_any = (buf_numvld_pend_any != 0);
-   assign lsu_bus_buffer_full_any = (ldst_dual_d & dec_lsu_valid_raw_d) ? (buf_numvld_any[3:0] >= (DEPTH-1)) : (buf_numvld_any[3:0] == DEPTH);
-   assign lsu_bus_buffer_empty_any = ~(|buf_state[DEPTH-1:0]) & ~ibuf_valid & ~obuf_valid;
-
-
-   // Non blocking ports
-   assign lsu_nonblock_load_valid_m = lsu_busreq_m & lsu_pkt_m.valid & lsu_pkt_m.load & ~flush_m_up & ~ld_full_hit_m;
-   assign lsu_nonblock_load_tag_m[DEPTH_LOG2-1:0] = WrPtr0_m[DEPTH_LOG2-1:0];
-   assign lsu_nonblock_load_inv_r = lsu_nonblock_load_valid_r & ~lsu_commit_r;
-   assign lsu_nonblock_load_inv_tag_r[DEPTH_LOG2-1:0] = WrPtr0_r[DEPTH_LOG2-1:0];      // r tag needs to be accurate even if there is no invalidate
-
-   always_comb begin
-      lsu_nonblock_load_data_ready = '0;
-      lsu_nonblock_load_data_error = '0;
-      lsu_nonblock_load_data_tag[DEPTH_LOG2-1:0] = '0;
-      lsu_nonblock_load_data_lo[31:0] = '0;
-      lsu_nonblock_load_data_hi[31:0] = '0;
-      for (int i=0; i<DEPTH; i++) begin
-          // Use buf_rst[i] instead of buf_state_en[i] for timing
-          lsu_nonblock_load_data_ready      |= (buf_state[i] == DONE) & ~buf_write[i];
-          lsu_nonblock_load_data_error      |= (buf_state[i] == DONE) & buf_error[i] & ~buf_write[i];
-          lsu_nonblock_load_data_tag[DEPTH_LOG2-1:0]   |= DEPTH_LOG2'(i) & {DEPTH_LOG2{((buf_state[i] == DONE) & ~buf_write[i] & (~buf_dual[i] | ~buf_dualhi[i]))}};
-          lsu_nonblock_load_data_lo[31:0]     |= buf_data[i][31:0] & {32{((buf_state[i] == DONE) & ~buf_write[i] & (~buf_dual[i] | ~buf_dualhi[i]))}};
-          lsu_nonblock_load_data_hi[31:0]     |= buf_data[i][31:0] & {32{((buf_state[i] == DONE) & ~buf_write[i] & (buf_dual[i] & buf_dualhi[i]))}};
-      end
-   end
-
-   assign lsu_nonblock_addr_offset[1:0] = buf_addr[lsu_nonblock_load_data_tag][1:0];
-   assign lsu_nonblock_sz[1:0]          = buf_sz[lsu_nonblock_load_data_tag][1:0];
-   assign lsu_nonblock_unsign           = buf_unsign[lsu_nonblock_load_data_tag];
-   assign lsu_nonblock_data_unalgn[31:0] = 32'({lsu_nonblock_load_data_hi[31:0], lsu_nonblock_load_data_lo[31:0]} >> 8*lsu_nonblock_addr_offset[1:0]);
-
-   assign lsu_nonblock_load_data_valid = lsu_nonblock_load_data_ready & ~lsu_nonblock_load_data_error;
-   assign lsu_nonblock_load_data[31:0] = ({32{ lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b00)}} & {24'b0,lsu_nonblock_data_unalgn[7:0]}) |
-                                         ({32{ lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b01)}} & {16'b0,lsu_nonblock_data_unalgn[15:0]}) |
-                                         ({32{~lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b00)}} & {{24{lsu_nonblock_data_unalgn[7]}}, lsu_nonblock_data_unalgn[7:0]}) |
-                                         ({32{~lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b01)}} & {{16{lsu_nonblock_data_unalgn[15]}},lsu_nonblock_data_unalgn[15:0]}) |
-                                         ({32{(lsu_nonblock_sz[1:0] == 2'b10)}} & lsu_nonblock_data_unalgn[31:0]);
-
-   // Determine if there is a pending return to sideeffect load/store
-   always_comb begin
-      bus_sideeffect_pend = obuf_valid & obuf_sideeffect & dec_tlu_sideeffect_posted_disable;
-      for (int i=0; i<DEPTH; i++) begin
-         bus_sideeffect_pend |= ((buf_state[i] == RESP) & buf_sideeffect[i] & dec_tlu_sideeffect_posted_disable);
-      end
-   end
-
-   // We have no ordering rules for AXI. Need to check outstanding trxns to same address for AXI
-   always_comb begin
-      bus_addr_match_pending = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         bus_addr_match_pending |= (obuf_valid & (obuf_addr[31:3] == buf_addr[i][31:3]) & (buf_state[i] == RESP) & ~((obuf_tag0 == (pt.LSU_BUS_TAG)'(i)) | (obuf_merge & (obuf_tag1 == (pt.LSU_BUS_TAG)'(i)))));
-      end
-   end
-
-   // Generic bus signals
-   assign bus_cmd_ready                      = obuf_write ? ((obuf_cmd_done | obuf_data_done) ? (obuf_cmd_done ? lsu_axi_wready : lsu_axi_awready) : (lsu_axi_awready & lsu_axi_wready)) : lsu_axi_arready;
-   assign bus_wcmd_sent                      = lsu_axi_awvalid & lsu_axi_awready;
-   assign bus_wdata_sent                     = lsu_axi_wvalid & lsu_axi_wready;
-   assign bus_cmd_sent                       = ((obuf_cmd_done | bus_wcmd_sent) & (obuf_data_done | bus_wdata_sent)) | (lsu_axi_arvalid & lsu_axi_arready);
-
-   assign bus_rsp_read                       = lsu_axi_rvalid & lsu_axi_rready;
-   assign bus_rsp_write                      = lsu_axi_bvalid & lsu_axi_bready;
-   assign bus_rsp_read_tag[pt.LSU_BUS_TAG-1:0]  = lsu_axi_rid[pt.LSU_BUS_TAG-1:0];
-   assign bus_rsp_write_tag[pt.LSU_BUS_TAG-1:0] = lsu_axi_bid[pt.LSU_BUS_TAG-1:0];
-   assign bus_rsp_write_error                = bus_rsp_write & (lsu_axi_bresp[1:0] != 2'b0);
-   assign bus_rsp_read_error                 = bus_rsp_read  & (lsu_axi_rresp[1:0] != 2'b0);
-   assign bus_rsp_rdata[63:0]                = lsu_axi_rdata[63:0];
-
-   // AXI command signals
-   assign lsu_axi_awvalid               = obuf_valid & obuf_write & ~obuf_cmd_done & ~bus_addr_match_pending;
-   assign lsu_axi_awid[pt.LSU_BUS_TAG-1:0] = (pt.LSU_BUS_TAG)'(obuf_tag0);
-   assign lsu_axi_awaddr[31:0]          = obuf_sideeffect ? obuf_addr[31:0] : {obuf_addr[31:3],3'b0};
-   assign lsu_axi_awsize[2:0]           = obuf_sideeffect ? {1'b0, obuf_sz[1:0]} : 3'b011;
-   assign lsu_axi_awprot[2:0]           = 3'b001;
-   assign lsu_axi_awcache[3:0]          = obuf_sideeffect ? 4'b0 : 4'b1111;
-   assign lsu_axi_awregion[3:0]         = obuf_addr[31:28];
-   assign lsu_axi_awlen[7:0]            = '0;
-   assign lsu_axi_awburst[1:0]          = 2'b01;
-   assign lsu_axi_awqos[3:0]            = '0;
-   assign lsu_axi_awlock                = '0;
-
-   assign lsu_axi_wvalid                = obuf_valid & obuf_write & ~obuf_data_done & ~bus_addr_match_pending;
-   assign lsu_axi_wstrb[7:0]            = obuf_byteen[7:0] & {8{obuf_write}};
-   assign lsu_axi_wdata[63:0]           = obuf_data[63:0];
-   assign lsu_axi_wlast                 = '1;
-
-   assign lsu_axi_arvalid               = obuf_valid & ~obuf_write & ~obuf_nosend & ~bus_addr_match_pending;
-   assign lsu_axi_arid[pt.LSU_BUS_TAG-1:0] = (pt.LSU_BUS_TAG)'(obuf_tag0);
-   assign lsu_axi_araddr[31:0]          = obuf_sideeffect ? obuf_addr[31:0] : {obuf_addr[31:3],3'b0};
-   assign lsu_axi_arsize[2:0]           = obuf_sideeffect ? {1'b0, obuf_sz[1:0]} : 3'b011;
-   assign lsu_axi_arprot[2:0]           = 3'b001;
-   assign lsu_axi_arcache[3:0]          = obuf_sideeffect ? 4'b0 : 4'b1111;
-   assign lsu_axi_arregion[3:0]         = obuf_addr[31:28];
-   assign lsu_axi_arlen[7:0]            = '0;
-   assign lsu_axi_arburst[1:0]          = 2'b01;
-   assign lsu_axi_arqos[3:0]            = '0;
-   assign lsu_axi_arlock                = '0;
-
-   assign lsu_axi_bready = 1;
-   assign lsu_axi_rready = 1;
-
-   always_comb begin
-      lsu_imprecise_error_store_any = '0;
-      lsu_imprecise_error_store_tag = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         lsu_imprecise_error_store_any |= lsu_bus_clk_en_q & (buf_state[i] == DONE) & buf_error[i] & buf_write[i];
-         lsu_imprecise_error_store_tag |= DEPTH_LOG2'(i) & {DEPTH_LOG2{((buf_state[i] == DONE) & buf_error[i] & buf_write[i])}};
-      end
-   end
-   assign lsu_imprecise_error_load_any       = lsu_nonblock_load_data_error & ~lsu_imprecise_error_store_any;   // This is to make sure we send only one imprecise error for load/store
-   assign lsu_imprecise_error_addr_any[31:0] = lsu_imprecise_error_store_any ? buf_addr[lsu_imprecise_error_store_tag] : buf_addr[lsu_nonblock_load_data_tag];
-
-   // PMU signals
-   assign lsu_pmu_bus_trxn  = (lsu_axi_awvalid & lsu_axi_awready) | (lsu_axi_wvalid & lsu_axi_wready) | (lsu_axi_arvalid & lsu_axi_arready);
-   assign lsu_pmu_bus_misaligned = lsu_busreq_r & ldst_dual_r & lsu_commit_r;
-   assign lsu_pmu_bus_error = lsu_imprecise_error_load_any | lsu_imprecise_error_store_any;
-   assign lsu_pmu_bus_busy  = (lsu_axi_awvalid & ~lsu_axi_awready) | (lsu_axi_wvalid & ~lsu_axi_wready) | (lsu_axi_arvalid & ~lsu_axi_arready);
-
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_awvalid_ff (.din(lsu_axi_awvalid),                .dout(lsu_axi_awvalid_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_awready_ff (.din(lsu_axi_awready),                .dout(lsu_axi_awready_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_wvalid_ff  (.din(lsu_axi_wvalid),                 .dout(lsu_axi_wvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_wready_ff  (.din(lsu_axi_wready),                 .dout(lsu_axi_wready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_arvalid_ff (.din(lsu_axi_arvalid),                .dout(lsu_axi_arvalid_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_arready_ff (.din(lsu_axi_arready),                .dout(lsu_axi_arready_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_bvalid_ff  (.din(lsu_axi_bvalid),                 .dout(lsu_axi_bvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_bready_ff  (.din(lsu_axi_bready),                 .dout(lsu_axi_bready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(2))              lsu_axi_bresp_ff   (.din(lsu_axi_bresp[1:0]),             .dout(lsu_axi_bresp_q[1:0]),             .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) lsu_axi_bid_ff     (.din(lsu_axi_bid[pt.LSU_BUS_TAG-1:0]),.dout(lsu_axi_bid_q[pt.LSU_BUS_TAG-1:0]),.clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(64))             lsu_axi_rdata_ff   (.din(lsu_axi_rdata[63:0]),            .dout(lsu_axi_rdata_q[63:0]),            .en((lsu_axi_rvalid | clk_override) & lsu_bus_clk_en), .*);
-
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_rvalid_ff  (.din(lsu_axi_rvalid),                 .dout(lsu_axi_rvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_rready_ff  (.din(lsu_axi_rready),                 .dout(lsu_axi_rready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(2))              lsu_axi_rresp_ff   (.din(lsu_axi_rresp[1:0]),             .dout(lsu_axi_rresp_q[1:0]),             .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) lsu_axi_rid_ff     (.din(lsu_axi_rid[pt.LSU_BUS_TAG-1:0]),.dout(lsu_axi_rid_q[pt.LSU_BUS_TAG-1:0]),.clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-
-   rvdff #(.WIDTH(DEPTH_LOG2)) lsu_WrPtr0_rff (.din(WrPtr0_m), .dout(WrPtr0_r), .clk(lsu_c2_r_clk), .*);
-   rvdff #(.WIDTH(DEPTH_LOG2)) lsu_WrPtr1_rff (.din(WrPtr1_m), .dout(WrPtr1_r), .clk(lsu_c2_r_clk), .*);
-
-   rvdff #(.WIDTH(1)) lsu_busreq_rff (.din(lsu_busreq_m & ~flush_r & ~ld_full_hit_m),      .dout(lsu_busreq_r), .clk(lsu_c2_r_clk), .*);
-   rvdff #(.WIDTH(1)) lsu_nonblock_load_valid_rff  (.din(lsu_nonblock_load_valid_m),  .dout(lsu_nonblock_load_valid_r), .clk(lsu_c2_r_clk), .*);
-
-`ifdef RV_ASSERT_ON
-
-   for (genvar i=0; i<4; i++) begin: GenByte
-      assert_ld_byte_hitvecfn_lo_onehot: assert #0 ($onehot0(ld_byte_hitvecfn_lo[i][DEPTH-1:0]));
-      assert_ld_byte_hitvecfn_hi_onehot: assert #0 ($onehot0(ld_byte_hitvecfn_hi[i][DEPTH-1:0]));
-   end
-
-   for (genvar i=0; i<DEPTH; i++) begin: GenAssertAge
-      assert_bufempty_agevec: assert #0 (~(lsu_bus_buffer_empty_any & |(buf_age[i])));
-   end
-
-   assert_CmdPtr0Dec_onehot: assert #0 ($onehot0(CmdPtr0Dec[DEPTH-1:0] & ~{DEPTH{dec_tlu_force_halt}}));
-   assert_CmdPtr1Dec_onehot: assert #0 ($onehot0(CmdPtr1Dec[DEPTH-1:0] & ~{DEPTH{dec_tlu_force_halt}}));
-
-`endif
-
-endmodule // eb1_lsu_bus_buffer
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_bus_intf.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu_bus_intf.sv
deleted file mode 100644
index fe80ab0..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_bus_intf.sv
+++ /dev/null
@@ -1,365 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: lsu interface with interface queue
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_bus_intf
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   input logic                          clk,                                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                          clk_override,                       // Override non-functional clock gating
-   input logic                          rst_l,                              // reset, active low
-   input logic                          scan_mode,                          // scan mode
-   input logic                          dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                          dec_tlu_wb_coalescing_disable,      // disable write buffer coalescing
-   input logic                          dec_tlu_sideeffect_posted_disable,  // disable the posted sideeffect load store to the bus
-
-   // various clocks needed for the bus reads and writes
-   input logic                          lsu_bus_obuf_c1_clken,              // obuf clock enable
-   input logic                          lsu_busm_clken,                     // bus clock enable
-
-   input logic                          lsu_c1_r_clk,                       // r pipe single pulse clock
-   input logic                          lsu_c2_r_clk,                       // r pipe double pulse clock
-   input logic                          lsu_bus_ibuf_c1_clk,                // ibuf single pulse clock
-   input logic                          lsu_bus_obuf_c1_clk,                // obuf single pulse clock
-   input logic                          lsu_bus_buf_c1_clk,                 // buf  single pulse clock
-   input logic                          lsu_free_c2_clk,                    // free clock double pulse clock
-   input logic                          active_clk,                         // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                          lsu_busm_clk,                       // bus clock
-
-   input logic                          dec_lsu_valid_raw_d,               // Raw valid for address computation
-   input logic                          lsu_busreq_m,                      // bus request is in m
-
-   input                                eb1_lsu_pkt_t lsu_pkt_m,          // lsu packet flowing down the pipe
-   input                                eb1_lsu_pkt_t lsu_pkt_r,          // lsu packet flowing down the pipe
-
-   input logic [31:0]                   lsu_addr_m,                        // lsu address flowing down the pipe
-   input logic [31:0]                   lsu_addr_r,                        // lsu address flowing down the pipe
-
-   input logic [31:0]                   end_addr_m,                        // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_r,                        // lsu address flowing down the pipe
-
-   input logic [31:0]                   store_data_r,                      // store data flowing down the pipe
-   input logic                          dec_tlu_force_halt,
-
-   input logic                          lsu_commit_r,                      // lsu instruction in r commits
-   input logic                          is_sideeffects_m,                  // lsu attribute is side_effects
-   input logic                          flush_m_up,                        // flush
-   input logic                          flush_r,                           // flush
-   input logic                          ldst_dual_d, ldst_dual_m, ldst_dual_r,
-
-   output logic                         lsu_busreq_r,                      // bus request is in r
-   output logic                         lsu_bus_buffer_pend_any,           // bus buffer has a pending bus entry
-   output logic                         lsu_bus_buffer_full_any,           // write buffer is full
-   output logic                         lsu_bus_buffer_empty_any,          // write buffer is empty
-   output logic [31:0]                  bus_read_data_m,                   // the bus return data
-
-
-   output logic                         lsu_imprecise_error_load_any,      // imprecise load bus error
-   output logic                         lsu_imprecise_error_store_any,     // imprecise store bus error
-   output logic [31:0]                  lsu_imprecise_error_addr_any,      // address of the imprecise error
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,   // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,     // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,     // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r, // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,// the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,// non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,  // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,      // Data of the non block load
-
-   // PMU events
-   output logic                         lsu_pmu_bus_trxn,
-   output logic                         lsu_pmu_bus_misaligned,
-   output logic                         lsu_pmu_bus_error,
-   output logic                         lsu_pmu_bus_busy,
-
-   // AXI Write Channels
-   output logic                        lsu_axi_awvalid,
-   input  logic                        lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_awid,
-   output logic [31:0]                 lsu_axi_awaddr,
-   output logic [3:0]                  lsu_axi_awregion,
-   output logic [7:0]                  lsu_axi_awlen,
-   output logic [2:0]                  lsu_axi_awsize,
-   output logic [1:0]                  lsu_axi_awburst,
-   output logic                        lsu_axi_awlock,
-   output logic [3:0]                  lsu_axi_awcache,
-   output logic [2:0]                  lsu_axi_awprot,
-   output logic [3:0]                  lsu_axi_awqos,
-
-   output logic                        lsu_axi_wvalid,
-   input  logic                        lsu_axi_wready,
-   output logic [63:0]                 lsu_axi_wdata,
-   output logic [7:0]                  lsu_axi_wstrb,
-   output logic                        lsu_axi_wlast,
-
-   input  logic                        lsu_axi_bvalid,
-   output logic                        lsu_axi_bready,
-   input  logic [1:0]                  lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                        lsu_axi_arvalid,
-   input  logic                        lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_arid,
-   output logic [31:0]                 lsu_axi_araddr,
-   output logic [3:0]                  lsu_axi_arregion,
-   output logic [7:0]                  lsu_axi_arlen,
-   output logic [2:0]                  lsu_axi_arsize,
-   output logic [1:0]                  lsu_axi_arburst,
-   output logic                        lsu_axi_arlock,
-   output logic [3:0]                  lsu_axi_arcache,
-   output logic [2:0]                  lsu_axi_arprot,
-   output logic [3:0]                  lsu_axi_arqos,
-
-   input  logic                        lsu_axi_rvalid,
-   output logic                        lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_rid,
-   input  logic [63:0]                 lsu_axi_rdata,
-   input  logic [1:0]                  lsu_axi_rresp,
-
-   input logic                         lsu_bus_clk_en
-
-);
-
-
-
-   logic              lsu_bus_clk_en_q;
-
-   logic [3:0]        ldst_byteen_m, ldst_byteen_r;
-   logic [7:0]        ldst_byteen_ext_m, ldst_byteen_ext_r;
-   logic [3:0]        ldst_byteen_hi_m, ldst_byteen_hi_r;
-   logic [3:0]        ldst_byteen_lo_m, ldst_byteen_lo_r;
-   logic              is_sideeffects_r;
-
-   logic [63:0]       store_data_ext_r;
-   logic [31:0]       store_data_hi_r;
-   logic [31:0]       store_data_lo_r;
-
-   logic              addr_match_dw_lo_r_m;
-   logic              addr_match_word_lo_r_m;
-   logic              no_word_merge_r, no_dword_merge_r;
-
-   logic              ld_addr_rhit_lo_lo, ld_addr_rhit_hi_lo, ld_addr_rhit_lo_hi, ld_addr_rhit_hi_hi;
-   logic [3:0]        ld_byte_rhit_lo_lo, ld_byte_rhit_hi_lo, ld_byte_rhit_lo_hi, ld_byte_rhit_hi_hi;
-
-   logic [3:0]        ld_byte_hit_lo, ld_byte_rhit_lo;
-   logic [3:0]        ld_byte_hit_hi, ld_byte_rhit_hi;
-
-   logic [31:0]       ld_fwddata_rpipe_lo;
-   logic [31:0]       ld_fwddata_rpipe_hi;
-
-   logic [3:0]        ld_byte_hit_buf_lo, ld_byte_hit_buf_hi;
-   logic [31:0]       ld_fwddata_buf_lo, ld_fwddata_buf_hi;
-
-   logic [63:0]       ld_fwddata_lo, ld_fwddata_hi;
-   logic [63:0]       ld_fwddata_m;
-
-   logic              ld_full_hit_hi_m, ld_full_hit_lo_m;
-   logic              ld_full_hit_m;
-
-   assign ldst_byteen_m[3:0] = ({4{lsu_pkt_m.by}}   & 4'b0001) |
-                                 ({4{lsu_pkt_m.half}} & 4'b0011) |
-                                 ({4{lsu_pkt_m.word}} & 4'b1111);
-
-   // Read/Write Buffer
-   eb1_lsu_bus_buffer #(.pt(pt)) bus_buffer (
-      .*
-   );
-
-   // Logic to determine if dc5 store can be coalesced or not with younger stores. Bypass ibuf if cannot colaesced
-   assign addr_match_dw_lo_r_m = (lsu_addr_r[31:3] == lsu_addr_m[31:3]);
-   assign addr_match_word_lo_r_m = addr_match_dw_lo_r_m & ~(lsu_addr_r[2]^lsu_addr_m[2]);
-
-   assign no_word_merge_r  = lsu_busreq_r & ~ldst_dual_r & lsu_busreq_m & (lsu_pkt_m.load | ~addr_match_word_lo_r_m);
-   assign no_dword_merge_r = lsu_busreq_r & ~ldst_dual_r & lsu_busreq_m & (lsu_pkt_m.load | ~addr_match_dw_lo_r_m);
-
-   // Create Hi/Lo signals
-   assign ldst_byteen_ext_m[7:0] = {4'b0,ldst_byteen_m[3:0]} << lsu_addr_m[1:0];
-   assign ldst_byteen_ext_r[7:0] = {4'b0,ldst_byteen_r[3:0]} << lsu_addr_r[1:0];
-
-   assign store_data_ext_r[63:0] = {32'b0,store_data_r[31:0]} << {lsu_addr_r[1:0],3'b0};
-
-   assign ldst_byteen_hi_m[3:0]   = ldst_byteen_ext_m[7:4];
-   assign ldst_byteen_lo_m[3:0]   = ldst_byteen_ext_m[3:0];
-   assign ldst_byteen_hi_r[3:0]   = ldst_byteen_ext_r[7:4];
-   assign ldst_byteen_lo_r[3:0]   = ldst_byteen_ext_r[3:0];
-
-   assign store_data_hi_r[31:0]   = store_data_ext_r[63:32];
-   assign store_data_lo_r[31:0]   = store_data_ext_r[31:0];
-
-   assign ld_addr_rhit_lo_lo = (lsu_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_lo_hi = (end_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_hi_lo = (lsu_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_hi_hi = (end_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-
-   for (genvar i=0; i<4; i++) begin: GenBusBufFwd
-      assign ld_byte_rhit_lo_lo[i] = ld_addr_rhit_lo_lo & ldst_byteen_lo_r[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_rhit_lo_hi[i] = ld_addr_rhit_lo_hi & ldst_byteen_lo_r[i] & ldst_byteen_hi_m[i];
-      assign ld_byte_rhit_hi_lo[i] = ld_addr_rhit_hi_lo & ldst_byteen_hi_r[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_rhit_hi_hi[i] = ld_addr_rhit_hi_hi & ldst_byteen_hi_r[i] & ldst_byteen_hi_m[i];
-
-      assign ld_byte_hit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i] |
-                                 ld_byte_hit_buf_lo[i];
-
-      assign ld_byte_hit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i] |
-                                 ld_byte_hit_buf_hi[i];
-
-      assign ld_byte_rhit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_rhit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-      assign ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_lo[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                    ({8{ld_byte_rhit_hi_lo[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      assign ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_hi[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                    ({8{ld_byte_rhit_hi_hi[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      // Final muxing between m/r
-      assign ld_fwddata_lo[(8*i)+7:(8*i)] = ld_byte_rhit_lo[i]    ? ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] : ld_fwddata_buf_lo[(8*i)+7:(8*i)];
-
-      assign ld_fwddata_hi[(8*i)+7:(8*i)] = ld_byte_rhit_hi[i]    ? ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] : ld_fwddata_buf_hi[(8*i)+7:(8*i)];
-
-   end
-
-   always_comb begin
-      ld_full_hit_lo_m = 1'b1;
-      ld_full_hit_hi_m = 1'b1;
-      for (int i=0; i<4; i++) begin
-         ld_full_hit_lo_m &= (ld_byte_hit_lo[i] | ~ldst_byteen_lo_m[i]);
-         ld_full_hit_hi_m &= (ld_byte_hit_hi[i] | ~ldst_byteen_hi_m[i]);
-      end
-   end
-
-   // This will be high if all the bytes of load hit the stores in pipe/write buffer (m/r/wrbuf)
-   assign ld_full_hit_m = ld_full_hit_lo_m & ld_full_hit_hi_m & lsu_busreq_m & lsu_pkt_m.load & ~is_sideeffects_m;
-
-   assign ld_fwddata_m[63:0] = {ld_fwddata_hi[31:0], ld_fwddata_lo[31:0]} >> (8*lsu_addr_m[1:0]);
-   assign bus_read_data_m[31:0]                        = ld_fwddata_m[31:0];
-
-   // Fifo flops
-
-   rvdff #(.WIDTH(1)) clken_ff (.din(lsu_bus_clk_en), .dout(lsu_bus_clk_en_q), .clk(active_clk), .*);
-
-   rvdff #(.WIDTH(1)) is_sideeffects_rff (.din(is_sideeffects_m), .dout(is_sideeffects_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(4) lsu_byten_rff (.*, .din(ldst_byteen_m[3:0]), .dout(ldst_byteen_r[3:0]), .clk(lsu_c1_r_clk));
-
-`ifdef RV_ASSERT_ON
-
-  // Assertion to check AXI write address is aligned to size
-  property lsu_axi_awaddr_aligned;
-    @(posedge lsu_busm_clk) disable iff(~rst_l) lsu_axi_awvalid |-> ((lsu_axi_awsize[2:0] == 3'h0)                                   |
-                                                                     ((lsu_axi_awsize[2:0] == 3'h1) & (lsu_axi_awaddr[0] == 1'b0))   |
-                                                                     ((lsu_axi_awsize[2:0] == 3'h2) & (lsu_axi_awaddr[1:0] == 2'b0)) |
-                                                                     ((lsu_axi_awsize[2:0] == 3'h3) & (lsu_axi_awaddr[2:0] == 3'b0)));
-  endproperty
-  assert_lsu_axi_awaddr_aligned: assert property (lsu_axi_awaddr_aligned) else
-    $display("Assertion lsu_axi_awaddr_aligned failed: lsu_axi_awvalid=1'b%b, lsu_axi_awsize=3'h%h, lsu_axi_awaddr=32'h%h",lsu_axi_awvalid, lsu_axi_awsize[2:0], lsu_axi_awaddr[31:0]);
-  // Assertion to check awvalid stays stable during entire bus clock
-
-  // Assertion to check AXI read address is aligned to size
-  property lsu_axi_araddr_aligned;
-    @(posedge lsu_busm_clk) disable iff(~rst_l) lsu_axi_arvalid |-> ((lsu_axi_arsize[2:0] == 3'h0)                                   |
-                                                                     ((lsu_axi_arsize[2:0] == 3'h1) & (lsu_axi_araddr[0] == 1'b0))   |
-                                                                     ((lsu_axi_arsize[2:0] == 3'h2) & (lsu_axi_araddr[1:0] == 2'b0)) |
-                                                                     ((lsu_axi_arsize[2:0] == 3'h3) & (lsu_axi_araddr[2:0] == 3'b0)));
-  endproperty
-  assert_lsu_axi_araddr_aligned: assert property (lsu_axi_araddr_aligned) else
-    $display("Assertion lsu_axi_araddr_aligned failed: lsu_axi_awvalid=1'b%b, lsu_axi_awsize=3'h%h, lsu_axi_araddr=32'h%h",lsu_axi_awvalid, lsu_axi_awsize[2:0], lsu_axi_araddr[31:0]);
-
-  // Assertion to check awvalid stays stable during entire bus clock
- property lsu_axi_awvalid_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_awvalid != $past(lsu_axi_awvalid)) |-> ($past(lsu_bus_clk_en) | dec_tlu_force_halt);
-  endproperty
-  assert_lsu_axi_awvalid_stable: assert property (lsu_axi_awvalid_stable) else
-     $display("LSU AXI awvalid changed in middle of bus clock");
-
-  // Assertion to check awid stays stable during entire bus clock
-  property lsu_axi_awid_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_awvalid & (lsu_axi_awid[pt.LSU_BUS_TAG-1:0] != $past(lsu_axi_awid[pt.LSU_BUS_TAG-1:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_awid_stable: assert property (lsu_axi_awid_stable) else
-     $display("LSU AXI awid changed in middle of bus clock");
-
-  // Assertion to check awaddr stays stable during entire bus clock
-  property lsu_axi_awaddr_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_awvalid & (lsu_axi_awaddr[31:0] != $past(lsu_axi_awaddr[31:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_awaddr_stable: assert property (lsu_axi_awaddr_stable) else
-     $display("LSU AXI awaddr changed in middle of bus clock");
-
-  // Assertion to check awsize stays stable during entire bus clock
-  property lsu_axi_awsize_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_awvalid & (lsu_axi_awsize[2:0] != $past(lsu_axi_awsize[2:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_awsize_stable: assert property (lsu_axi_awsize_stable) else
-     $display("LSU AXI awsize changed in middle of bus clock");
-
-  // Assertion to check wstrb stays stable during entire bus clock
-  property lsu_axi_wstrb_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_wvalid & (lsu_axi_wstrb[7:0] != $past(lsu_axi_wstrb[7:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_wstrb_stable: assert property (lsu_axi_wstrb_stable) else
-     $display("LSU AXI wstrb changed in middle of bus clock");
-
-  // Assertion to check wdata stays stable during entire bus clock
-  property lsu_axi_wdata_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_wvalid & (lsu_axi_wdata[63:0] != $past(lsu_axi_wdata[63:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_wdata_stable: assert property (lsu_axi_wdata_stable) else
-     $display("LSU AXI wdata changed in middle of bus clock");
-
-  // Assertion to check awvalid stays stable during entire bus clock
-  property lsu_axi_arvalid_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_arvalid != $past(lsu_axi_arvalid)) |-> ($past(lsu_bus_clk_en) | dec_tlu_force_halt);
-  endproperty
-  assert_lsu_axi_arvalid_stable: assert property (lsu_axi_arvalid_stable) else
-     $display("LSU AXI awvalid changed in middle of bus clock");
-
-  // Assertion to check awid stays stable during entire bus clock
-  property lsu_axi_arid_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_arvalid & (lsu_axi_arid[pt.LSU_BUS_TAG-1:0] != $past(lsu_axi_arid[pt.LSU_BUS_TAG-1:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_arid_stable: assert property (lsu_axi_arid_stable) else
-     $display("LSU AXI awid changed in middle of bus clock");
-
-  // Assertion to check awaddr stays stable during entire bus clock
-  property lsu_axi_araddr_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_arvalid & (lsu_axi_araddr[31:0] != $past(lsu_axi_araddr[31:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_araddr_stable: assert property (lsu_axi_araddr_stable) else
-     $display("LSU AXI awaddr changed in middle of bus clock");
-
-  // Assertion to check awsize stays stable during entire bus clock
-  property lsu_axi_arsize_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_awvalid & (lsu_axi_arsize[2:0] != $past(lsu_axi_arsize[2:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_arsize_stable: assert property (lsu_axi_arsize_stable) else
-     $display("LSU AXI awsize changed in middle of bus clock");
-
-`endif
-
-endmodule // eb1_lsu_bus_intf
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_clkdomain.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu_clkdomain.sv
deleted file mode 100644
index afa1be9..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_clkdomain.sv
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Clock Generation Block
-// Comments: All the clocks are generate here
-//
-// //********************************************************************************
-
-
-module eb1_lsu_clkdomain
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
-)(
-   input logic      clk,                               // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic      active_clk,                        // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic      rst_l,                             // reset, active low
-   input logic      dec_tlu_force_halt,                // This will be high till TLU goes to debug halt
-
-   // Inputs
-   input logic      clk_override,                      // chciken bit to turn off clock gating
-   input logic      dma_dccm_req,                      // dma is active
-   input logic      ldst_stbuf_reqvld_r,               // allocating in to the store queue
-
-   input logic      stbuf_reqvld_any,                  // stbuf is draining
-   input logic      stbuf_reqvld_flushed_any,          // instruction going to stbuf is flushed
-   input logic      lsu_busreq_r,                      // busreq in r
-   input logic      lsu_bus_buffer_pend_any,           // bus buffer has a pending bus entry
-   input logic      lsu_bus_buffer_empty_any,          // external bus buffer is empty
-   input logic      lsu_stbuf_empty_any,               // stbuf is empty
-
-   input logic      lsu_bus_clk_en,                    // bus clock enable
-
-   input eb1_lsu_pkt_t  lsu_p,                        // lsu packet in decode
-   input eb1_lsu_pkt_t  lsu_pkt_d,                    // lsu packet in d
-   input eb1_lsu_pkt_t  lsu_pkt_m,                    // lsu packet in m
-   input eb1_lsu_pkt_t  lsu_pkt_r,                    // lsu packet in r
-
-   // Outputs
-   output logic     lsu_bus_obuf_c1_clken,             // obuf clock enable
-   output logic     lsu_busm_clken,                    // bus clock enable
-
-   output logic     lsu_c1_m_clk,                      // m pipe single pulse clock
-   output logic     lsu_c1_r_clk,                      // r pipe single pulse clock
-
-   output logic     lsu_c2_m_clk,                      // m pipe double pulse clock
-   output logic     lsu_c2_r_clk,                      // r pipe double pulse clock
-
-   output logic     lsu_store_c1_m_clk,                // store in m
-   output logic     lsu_store_c1_r_clk,                // store in r
-
-   output logic     lsu_stbuf_c1_clk,
-   output logic     lsu_bus_obuf_c1_clk,               // ibuf clock
-   output logic     lsu_bus_ibuf_c1_clk,               // ibuf clock
-   output logic     lsu_bus_buf_c1_clk,                // ibuf clock
-   output logic     lsu_busm_clk,                      // bus clock
-
-   output logic     lsu_free_c2_clk,                   // free double pulse clock
-
-   input  logic     scan_mode                          // Scan mode
-);
-
-   logic lsu_c1_m_clken, lsu_c1_r_clken;
-   logic lsu_c2_m_clken, lsu_c2_r_clken;
-   logic lsu_c1_m_clken_q, lsu_c1_r_clken_q;
-   logic lsu_store_c1_m_clken, lsu_store_c1_r_clken;
-
-
-   logic lsu_stbuf_c1_clken;
-   logic lsu_bus_ibuf_c1_clken, lsu_bus_buf_c1_clken;
-
-   logic lsu_free_c1_clken, lsu_free_c1_clken_q, lsu_free_c2_clken;
-
-   //-------------------------------------------------------------------------------------------
-   // Clock Enable logic
-   //-------------------------------------------------------------------------------------------
-
-   assign lsu_c1_m_clken = lsu_p.valid | dma_dccm_req | clk_override;
-   assign lsu_c1_r_clken = lsu_pkt_m.valid | lsu_c1_m_clken_q | clk_override;
-
-   assign lsu_c2_m_clken = lsu_c1_m_clken | lsu_c1_m_clken_q | clk_override;
-   assign lsu_c2_r_clken = lsu_c1_r_clken | lsu_c1_r_clken_q | clk_override;
-
-   assign lsu_store_c1_m_clken = ((lsu_c1_m_clken & lsu_pkt_d.store) | clk_override) ;
-   assign lsu_store_c1_r_clken = ((lsu_c1_r_clken & lsu_pkt_m.store) | clk_override) ;
-
-   assign lsu_stbuf_c1_clken = ldst_stbuf_reqvld_r | stbuf_reqvld_any | stbuf_reqvld_flushed_any | clk_override;
-   assign lsu_bus_ibuf_c1_clken = lsu_busreq_r | clk_override;
-   assign lsu_bus_obuf_c1_clken = (lsu_bus_buffer_pend_any | lsu_busreq_r | clk_override) & lsu_bus_clk_en;
-   assign lsu_bus_buf_c1_clken  = ~lsu_bus_buffer_empty_any | lsu_busreq_r | dec_tlu_force_halt | clk_override;
-
-   assign lsu_free_c1_clken = (lsu_p.valid | lsu_pkt_d.valid | lsu_pkt_m.valid | lsu_pkt_r.valid) |
-                              ~lsu_bus_buffer_empty_any | ~lsu_stbuf_empty_any | clk_override;
-   assign lsu_free_c2_clken = lsu_free_c1_clken | lsu_free_c1_clken_q | clk_override;
-
-    // Flops
-   rvdff #(1) lsu_free_c1_clkenff (.din(lsu_free_c1_clken), .dout(lsu_free_c1_clken_q), .clk(active_clk), .*);
-
-   rvdff #(1) lsu_c1_m_clkenff (.din(lsu_c1_m_clken), .dout(lsu_c1_m_clken_q), .clk(lsu_free_c2_clk), .*);
-   rvdff #(1) lsu_c1_r_clkenff (.din(lsu_c1_r_clken), .dout(lsu_c1_r_clken_q), .clk(lsu_free_c2_clk), .*);
-
-   // Clock Headers
-   rvoclkhdr lsu_c1m_cgc ( .en(lsu_c1_m_clken), .l1clk(lsu_c1_m_clk), .* );
-   rvoclkhdr lsu_c1r_cgc ( .en(lsu_c1_r_clken), .l1clk(lsu_c1_r_clk), .* );
-
-   rvoclkhdr lsu_c2m_cgc ( .en(lsu_c2_m_clken), .l1clk(lsu_c2_m_clk), .* );
-   rvoclkhdr lsu_c2r_cgc ( .en(lsu_c2_r_clken), .l1clk(lsu_c2_r_clk), .* );
-
-   rvoclkhdr lsu_store_c1m_cgc (.en(lsu_store_c1_m_clken), .l1clk(lsu_store_c1_m_clk), .*);
-   rvoclkhdr lsu_store_c1r_cgc (.en(lsu_store_c1_r_clken), .l1clk(lsu_store_c1_r_clk), .*);
-
-   rvoclkhdr lsu_stbuf_c1_cgc ( .en(lsu_stbuf_c1_clken), .l1clk(lsu_stbuf_c1_clk), .* );
-   rvoclkhdr lsu_bus_ibuf_c1_cgc ( .en(lsu_bus_ibuf_c1_clken), .l1clk(lsu_bus_ibuf_c1_clk), .* );
-   rvoclkhdr lsu_bus_buf_c1_cgc  ( .en(lsu_bus_buf_c1_clken),  .l1clk(lsu_bus_buf_c1_clk), .* );
-
-   assign lsu_busm_clken = (~lsu_bus_buffer_empty_any | lsu_busreq_r | clk_override) & lsu_bus_clk_en;
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign lsu_busm_clk = 1'b0;
-   assign lsu_bus_obuf_c1_clk = 1'b0;
-`else
-   rvclkhdr  lsu_bus_obuf_c1_cgc ( .en(lsu_bus_obuf_c1_clken), .l1clk(lsu_bus_obuf_c1_clk), .* );
-   rvclkhdr  lsu_busm_cgc (.en(lsu_busm_clken), .l1clk(lsu_busm_clk), .*);
-`endif
-
-   rvoclkhdr lsu_free_cgc (.en(lsu_free_c2_clken), .l1clk(lsu_free_c2_clk), .*);
-
-endmodule
-
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_dccm_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu_dccm_ctl.sv
deleted file mode 100644
index ba070bc..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_dccm_ctl.sv
+++ /dev/null
@@ -1,425 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DCCM for LSU pipe
-// Comments: Single ported memory
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-module eb1_lsu_dccm_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic                             lsu_c2_m_clk,            // clocks
-   input logic                             lsu_c2_r_clk,            // clocks
-   input logic                             lsu_c1_r_clk,            // clocks
-   input logic                             lsu_store_c1_r_clk,      // clocks
-   input logic                             lsu_free_c2_clk,         // clocks
-   input logic                             clk_override,            // Override non-functional clock gating
-   input logic                             clk,                     // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-
-   input logic                             rst_l,                   // reset, active low
-
-   input                                   eb1_lsu_pkt_t lsu_pkt_r,// lsu packets
-   input                                   eb1_lsu_pkt_t lsu_pkt_m,// lsu packets
-   input                                   eb1_lsu_pkt_t lsu_pkt_d,// lsu packets
-   input logic                             addr_in_dccm_d,          // address maps to dccm
-   input logic                             addr_in_pic_d,           // address maps to pic
-   input logic                             addr_in_pic_m,           // address maps to pic
-   input logic                             addr_in_dccm_m, addr_in_dccm_r,   // address in dccm per pipe stage
-   input logic                             addr_in_pic_r,                    // address in pic  per pipe stage
-   input logic                             lsu_raw_fwd_lo_r, lsu_raw_fwd_hi_r,
-   input logic                             lsu_commit_r,            // lsu instruction in r commits
-   input logic                             ldst_dual_m, ldst_dual_r,// load/store is unaligned at 32 bit boundary per pipe stage
-
-   // lsu address down the pipe
-   input logic [31:0]                      lsu_addr_d,
-   input logic [pt.DCCM_BITS-1:0]          lsu_addr_m,
-   input logic [31:0]                      lsu_addr_r,
-
-   // lsu address down the pipe - needed to check unaligned
-   input logic [pt.DCCM_BITS-1:0]          end_addr_d,
-   input logic [pt.DCCM_BITS-1:0]          end_addr_m,
-   input logic [pt.DCCM_BITS-1:0]          end_addr_r,
-
-
-   input logic                             stbuf_reqvld_any,        // write enable
-   input logic [pt.LSU_SB_BITS-1:0]        stbuf_addr_any,          // stbuf address (aligned)
-
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_data_any,          // the read out from stbuf
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     stbuf_ecc_any,           // the encoded data with ECC bits
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_fwddata_hi_m,      // stbuf fowarding to load
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_fwddata_lo_m,      // stbuf fowarding to load
-   input logic [pt.DCCM_BYTE_WIDTH-1:0]    stbuf_fwdbyteen_hi_m,    // stbuf fowarding to load
-   input logic [pt.DCCM_BYTE_WIDTH-1:0]    stbuf_fwdbyteen_lo_m,    // stbuf fowarding to load
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_hi_r,         // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_lo_r,         // data from the dccm
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_hi_r,      // data from the dccm + ecc
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_lo_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_r,           // right justified, ie load byte will have data at 7:0
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_corr_r,      // right justified & ECC corrected, ie load byte will have data at 7:0
-
-   input logic                             lsu_double_ecc_error_r,  // lsu has a DED
-   input logic                             single_ecc_error_hi_r,   // sec detected on hi dccm bank
-   input logic                             single_ecc_error_lo_r,   // sec detected on lower dccm bank
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_r,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_r,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_r_ff,        // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_r_ff,        // corrected dccm data
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     sec_data_ecc_hi_r_ff,    // the encoded data with ECC bits
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     sec_data_ecc_lo_r_ff,    // the encoded data with ECC bits
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_hi_m,         // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_lo_m,         // data from the dccm
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_hi_m,      // data from the dccm + ecc
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_lo_m,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_m,           // right justified, ie load byte will have data at 7:0
-
-   input logic                             lsu_double_ecc_error_m,  // lsu has a DED
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_m,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_m,           // corrected dccm data
-
-   input logic [31:0]                      store_data_m,            // Store data M-stage
-   input logic                             dma_dccm_wen,            // Perform DMA writes only for word/dword
-   input logic                             dma_pic_wen,             // Perform PIC writes
-   input logic [2:0]                       dma_mem_tag_m,           // DMA Buffer entry number M-stage
-   input logic [31:0]                      dma_mem_addr,            // DMA request address
-   input logic [63:0]                      dma_mem_wdata,           // DMA write data
-   input logic [31:0]                      dma_dccm_wdata_lo,       // Shift the dma data to lower bits to make it consistent to lsu stores
-   input logic [31:0]                      dma_dccm_wdata_hi,       // Shift the dma data to lower bits to make it consistent to lsu stores
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     dma_dccm_wdata_ecc_hi,   // ECC bits for the DMA wdata
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     dma_dccm_wdata_ecc_lo,   // ECC bits for the DMA wdata
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_data_hi_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_data_lo_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_datafn_hi_r,       // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_datafn_lo_r,       // data from the dccm
-   output logic [31:0]                     store_data_r,            // raw store data to be sent to bus
-   output logic                            ld_single_ecc_error_r,
-   output logic                            ld_single_ecc_error_r_ff,
-
-   output logic [31:0]                     picm_mask_data_m,        // pic data to stbuf
-   output logic                            lsu_stbuf_commit_any,    // stbuf wins the dccm port or is to pic
-   output logic                            lsu_dccm_rden_m,         // dccm read
-   output logic                            lsu_dccm_rden_r,         // dccm read
-
-   output logic                            dccm_dma_rvalid,         // dccm serviving the dma load
-   output logic                            dccm_dma_ecc_error,      // DMA load had ecc error
-   output logic [2:0]                      dccm_dma_rtag,           // DMA return tag
-   output logic [63:0]                     dccm_dma_rdata,          // dccm data to dma request
-
-   // DCCM ports
-   output logic                            dccm_wren,               // dccm interface -- write
-   output logic                            dccm_rden,               // dccm interface -- write
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo,         // dccm interface -- wr addr for lo bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi,         // dccm interface -- wr addr for hi bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo,         // dccm interface -- read address for lo bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi,         // dccm interface -- read address for hi bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,         // dccm write data for lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,         // dccm write data for hi bank
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_lo,         // dccm read data back from the dccm
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_hi,         // dccm read data back from the dccm
-
-   // PIC ports
-   output logic                            picm_wren,               // write to pic
-   output logic                            picm_rden,               // read to pick
-   output logic                            picm_mken,               // write to pic need a mask
-   output logic [31:0]                     picm_rdaddr,             // address for pic read access
-   output logic [31:0]                     picm_wraddr,             // address for pic write access
-   output logic [31:0]                     picm_wr_data,            // write data
-   input logic [31:0]                      picm_rd_data,            // read data
-
-   input logic                             scan_mode                // scan mode
-);
-
-
-   localparam DCCM_WIDTH_BITS = $clog2(pt.DCCM_BYTE_WIDTH);
-
-   logic                           lsu_dccm_rden_d, lsu_dccm_wren_d;
-   logic                           ld_single_ecc_error_lo_r, ld_single_ecc_error_hi_r;
-   logic                           ld_single_ecc_error_lo_r_ns, ld_single_ecc_error_hi_r_ns;
-   logic                           ld_single_ecc_error_lo_r_ff, ld_single_ecc_error_hi_r_ff;
-   logic                           lsu_double_ecc_error_r_ff;
-   logic [pt.DCCM_BITS-1:0]        ld_sec_addr_lo_r_ff, ld_sec_addr_hi_r_ff;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_lo_r_in, store_data_hi_r_in ;
-   logic [63:0]                    picm_rd_data_m;
-
-   logic                           dccm_wr_bypass_d_m_hi, dccm_wr_bypass_d_r_hi;
-   logic                           dccm_wr_bypass_d_m_lo, dccm_wr_bypass_d_r_lo;
-   logic                           kill_ecc_corr_lo_r, kill_ecc_corr_hi_r;
-
-    // byte_en flowing down
-   logic [3:0]                     store_byteen_m ,store_byteen_r;
-   logic [7:0]                     store_byteen_ext_m, store_byteen_ext_r;
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic [63:0]  lsu_rdata_r, lsu_rdata_corr_r;
-      logic [63:0]  dccm_rdata_r, dccm_rdata_corr_r;
-      logic [63:0]  stbuf_fwddata_r;
-      logic [7:0]   stbuf_fwdbyteen_r;
-      logic [31:0]  stbuf_fwddata_lo_r, stbuf_fwddata_hi_r;
-      logic [3:0]   stbuf_fwdbyteen_lo_r, stbuf_fwdbyteen_hi_r;
-      logic [31:0]  lsu_rdata_lo_r, lsu_rdata_hi_r;
-      logic [63:0]  picm_rd_data_r;
-      logic [63:32] lsu_ld_data_r_nc, lsu_ld_data_corr_r_nc;
-      logic [2:0]   dma_mem_tag_r;
-      logic         stbuf_fwddata_en;
-
-      assign dccm_dma_rvalid      = lsu_pkt_r.valid & lsu_pkt_r.load & lsu_pkt_r.dma;
-      assign dccm_dma_ecc_error   = lsu_double_ecc_error_r;
-      assign dccm_dma_rtag[2:0]   = dma_mem_tag_r[2:0];
-      assign dccm_dma_rdata[63:0] = ldst_dual_r ? lsu_rdata_corr_r[63:0] : {2{lsu_rdata_corr_r[31:0]}};
-      assign {lsu_ld_data_r_nc[63:32], lsu_ld_data_r[31:0]}           = lsu_rdata_r[63:0] >> 8*lsu_addr_r[1:0];
-      assign {lsu_ld_data_corr_r_nc[63:32], lsu_ld_data_corr_r[31:0]} = lsu_rdata_corr_r[63:0] >> 8*lsu_addr_r[1:0];
-
-      assign picm_rd_data_r[63:32]   = picm_rd_data_r[31:0];
-      assign dccm_rdata_r[63:0]      = {dccm_rdata_hi_r[31:0],dccm_rdata_lo_r[31:0]};
-      assign dccm_rdata_corr_r[63:0] = {sec_data_hi_r[31:0],sec_data_lo_r[31:0]};
-      assign stbuf_fwddata_r[63:0]   = {stbuf_fwddata_hi_r[31:0], stbuf_fwddata_lo_r[31:0]};
-      assign stbuf_fwdbyteen_r[7:0]  = {stbuf_fwdbyteen_hi_r[3:0], stbuf_fwdbyteen_lo_r[3:0]};
-      assign stbuf_fwddata_en        = (|stbuf_fwdbyteen_hi_m[3:0]) | (|stbuf_fwdbyteen_lo_m[3:0]) | clk_override;
-
-      for (genvar i=0; i<8; i++) begin: GenDMAData
-         assign lsu_rdata_corr_r[(8*i)+7:8*i]  = stbuf_fwdbyteen_r[i] ? stbuf_fwddata_r[(8*i)+7:8*i] :
-                                                                        (addr_in_pic_r ? picm_rd_data_r[(8*i)+7:8*i] :  ({8{addr_in_dccm_r}} & dccm_rdata_corr_r[(8*i)+7:8*i]));
-
-         assign lsu_rdata_r[(8*i)+7:8*i]       = stbuf_fwdbyteen_r[i] ? stbuf_fwddata_r[(8*i)+7:8*i] :
-                                                                        (addr_in_pic_r ? picm_rd_data_r[(8*i)+7:8*i] :  ({8{addr_in_dccm_r}} & dccm_rdata_r[(8*i)+7:8*i]));
-      end
-      rvdffe #(pt.DCCM_DATA_WIDTH) dccm_rdata_hi_r_ff    (.*, .din(dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(dccm_rdata_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en((lsu_dccm_rden_m & ldst_dual_m) | clk_override));
-      rvdffe #(pt.DCCM_DATA_WIDTH) dccm_rdata_lo_r_ff    (.*, .din(dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(dccm_rdata_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_dccm_rden_m | clk_override));
-      rvdffe #(2*pt.DCCM_ECC_WIDTH)  dccm_data_ecc_r_ff  (.*, .din({dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0], dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0]}),
-                                                              .dout({dccm_data_ecc_hi_r[pt.DCCM_ECC_WIDTH-1:0], dccm_data_ecc_lo_r[pt.DCCM_ECC_WIDTH-1:0]}),                                  .en(lsu_dccm_rden_m | clk_override));
-      rvdff #(8)                   stbuf_fwdbyteen_ff    (.*, .din({stbuf_fwdbyteen_hi_m[3:0], stbuf_fwdbyteen_lo_m[3:0]}), .dout({stbuf_fwdbyteen_hi_r[3:0], stbuf_fwdbyteen_lo_r[3:0]}), .clk(lsu_c2_r_clk));
-      rvdffe #(64)                 stbuf_fwddata_ff      (.*, .din({stbuf_fwddata_hi_m[31:0], stbuf_fwddata_lo_m[31:0]}),   .dout({stbuf_fwddata_hi_r[31:0], stbuf_fwddata_lo_r[31:0]}),   .en(stbuf_fwddata_en));
-      rvdffe #(32)                 picm_rddata_rff       (.*, .din(picm_rd_data_m[31:0]),                                   .dout(picm_rd_data_r[31:0]),                                   .en(addr_in_pic_m | clk_override));
-      rvdff #(3)                   dma_mem_tag_rff       (.*, .din(dma_mem_tag_m[2:0]),                                     .dout(dma_mem_tag_r[2:0]),                                     .clk(lsu_c1_r_clk));
-
-   end else begin: L2U_Plus1_0
-
-      logic [63:0]  lsu_rdata_m, lsu_rdata_corr_m;
-      logic [63:0]  dccm_rdata_m, dccm_rdata_corr_m;
-      logic [63:0]  stbuf_fwddata_m;
-      logic [7:0]   stbuf_fwdbyteen_m;
-      logic [63:32] lsu_ld_data_m_nc, lsu_ld_data_corr_m_nc;
-      logic [31:0]  lsu_ld_data_corr_m;
-
-      assign dccm_dma_rvalid      = lsu_pkt_m.valid & lsu_pkt_m.load & lsu_pkt_m.dma;
-      assign dccm_dma_ecc_error   = lsu_double_ecc_error_m;
-      assign dccm_dma_rtag[2:0]   = dma_mem_tag_m[2:0];
-      assign dccm_dma_rdata[63:0] = ldst_dual_m ? lsu_rdata_corr_m[63:0] : {2{lsu_rdata_corr_m[31:0]}};
-      assign {lsu_ld_data_m_nc[63:32], lsu_ld_data_m[31:0]} = lsu_rdata_m[63:0] >> 8*lsu_addr_m[1:0];
-      assign {lsu_ld_data_corr_m_nc[63:32], lsu_ld_data_corr_m[31:0]} = lsu_rdata_corr_m[63:0] >> 8*lsu_addr_m[1:0];
-
-      assign dccm_rdata_m[63:0]      = {dccm_rdata_hi_m[31:0],dccm_rdata_lo_m[31:0]};
-      assign dccm_rdata_corr_m[63:0] = {sec_data_hi_m[31:0],sec_data_lo_m[31:0]};
-      assign stbuf_fwddata_m[63:0]   = {stbuf_fwddata_hi_m[31:0], stbuf_fwddata_lo_m[31:0]};
-      assign stbuf_fwdbyteen_m[7:0]  = {stbuf_fwdbyteen_hi_m[3:0], stbuf_fwdbyteen_lo_m[3:0]};
-
-      for (genvar i=0; i<8; i++) begin: GenLoop
-         assign lsu_rdata_corr_m[(8*i)+7:8*i] = stbuf_fwdbyteen_m[i] ? stbuf_fwddata_m[(8*i)+7:8*i] :
-                                                                       (addr_in_pic_m ? picm_rd_data_m[(8*i)+7:8*i] : ({8{addr_in_dccm_m}} & dccm_rdata_corr_m[(8*i)+7:8*i]));
-
-         assign lsu_rdata_m[(8*i)+7:8*i]      = stbuf_fwdbyteen_m[i] ? stbuf_fwddata_m[(8*i)+7:8*i] :
-                                                                       (addr_in_pic_m ? picm_rd_data_m[(8*i)+7:8*i] : ({8{addr_in_dccm_m}} & dccm_rdata_m[(8*i)+7:8*i]));
-      end
-
-      rvdffe #(32) lsu_ld_data_corr_rff(.*, .din(lsu_ld_data_corr_m[31:0]), .dout(lsu_ld_data_corr_r[31:0]), .en((lsu_pkt_m.valid & lsu_pkt_m.load & (addr_in_pic_m | addr_in_dccm_m)) | clk_override));
-   end
-
-   assign kill_ecc_corr_lo_r = (((lsu_addr_d[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_d[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_d.valid & lsu_pkt_d.store & lsu_pkt_d.dma & addr_in_dccm_d) |
-                               (((lsu_addr_m[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_m[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_m.valid & lsu_pkt_m.store & lsu_pkt_m.dma & addr_in_dccm_m);
-
-   assign kill_ecc_corr_hi_r = (((lsu_addr_d[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_d[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_d.valid & lsu_pkt_d.store & lsu_pkt_d.dma & addr_in_dccm_d) |
-                               (((lsu_addr_m[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_m[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_m.valid & lsu_pkt_m.store & lsu_pkt_m.dma & addr_in_dccm_m);
-
-   assign ld_single_ecc_error_lo_r = lsu_pkt_r.load & single_ecc_error_lo_r & ~lsu_raw_fwd_lo_r;
-   assign ld_single_ecc_error_hi_r = lsu_pkt_r.load & single_ecc_error_hi_r & ~lsu_raw_fwd_hi_r;
-   assign ld_single_ecc_error_r    = (ld_single_ecc_error_lo_r | ld_single_ecc_error_hi_r) & ~lsu_double_ecc_error_r;
-
-   assign ld_single_ecc_error_lo_r_ns = ld_single_ecc_error_lo_r & (lsu_commit_r | lsu_pkt_r.dma) & ~kill_ecc_corr_lo_r;
-   assign ld_single_ecc_error_hi_r_ns = ld_single_ecc_error_hi_r & (lsu_commit_r | lsu_pkt_r.dma) & ~kill_ecc_corr_hi_r;
-   assign ld_single_ecc_error_r_ff = (ld_single_ecc_error_lo_r_ff | ld_single_ecc_error_hi_r_ff) & ~lsu_double_ecc_error_r_ff;
-
-   assign lsu_stbuf_commit_any = stbuf_reqvld_any &
-                                 (~(lsu_dccm_rden_d | lsu_dccm_wren_d | ld_single_ecc_error_r_ff) |
-                                  (lsu_dccm_rden_d & ~((stbuf_addr_any[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] == lsu_addr_d[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]) |
-                                                       (stbuf_addr_any[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] == end_addr_d[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]))));
-
-   // No need to read for aligned word/dword stores since ECC will come by new data completely
-   assign lsu_dccm_rden_d = lsu_pkt_d.valid & (lsu_pkt_d.load | (lsu_pkt_d.store & (~(lsu_pkt_d.word | lsu_pkt_d.dword) | (lsu_addr_d[1:0] != 2'b0)))) & addr_in_dccm_d;
-
-   // DMA will read/write in decode stage
-   assign lsu_dccm_wren_d = dma_dccm_wen;
-
-   // DCCM inputs
-   assign dccm_wren                             = lsu_dccm_wren_d | lsu_stbuf_commit_any | ld_single_ecc_error_r_ff;
-   assign dccm_rden                             = lsu_dccm_rden_d & addr_in_dccm_d;
-   assign dccm_wr_addr_lo[pt.DCCM_BITS-1:0]     = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_lo_r_ff ? ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0] : ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0]) :
-                                                                             lsu_dccm_wren_d ? lsu_addr_d[pt.DCCM_BITS-1:0] : stbuf_addr_any[pt.DCCM_BITS-1:0];
-   assign dccm_wr_addr_hi[pt.DCCM_BITS-1:0]     = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_hi_r_ff ? ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0] : ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0]) :
-                                                                             lsu_dccm_wren_d ? end_addr_d[pt.DCCM_BITS-1:0] : stbuf_addr_any[pt.DCCM_BITS-1:0];
-   assign dccm_rd_addr_lo[pt.DCCM_BITS-1:0]     = lsu_addr_d[pt.DCCM_BITS-1:0];
-   assign dccm_rd_addr_hi[pt.DCCM_BITS-1:0]     = end_addr_d[pt.DCCM_BITS-1:0];
-   assign dccm_wr_data_lo[pt.DCCM_FDATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_lo_r_ff ? {sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                               {sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]}) :
-                                                                                (dma_dccm_wen ? {dma_dccm_wdata_ecc_lo[pt.DCCM_ECC_WIDTH-1:0],dma_dccm_wdata_lo[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                {stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0],stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]});
-   assign dccm_wr_data_hi[pt.DCCM_FDATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_hi_r_ff ? {sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                               {sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]}) :
-                                                                                (dma_dccm_wen ? {dma_dccm_wdata_ecc_hi[pt.DCCM_ECC_WIDTH-1:0],dma_dccm_wdata_hi[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                {stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0],stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]});
-
-   // DCCM outputs
-   assign store_byteen_m[3:0] = {4{lsu_pkt_m.store}} &
-                                (({4{lsu_pkt_m.by}}    & 4'b0001) |
-                                 ({4{lsu_pkt_m.half}}  & 4'b0011) |
-                                 ({4{lsu_pkt_m.word}}  & 4'b1111));
-
-   assign store_byteen_r[3:0] =  {4{lsu_pkt_r.store}} &
-                                 (({4{lsu_pkt_r.by}}    & 4'b0001) |
-                                  ({4{lsu_pkt_r.half}}  & 4'b0011) |
-                                  ({4{lsu_pkt_r.word}}  & 4'b1111));
-
-   assign store_byteen_ext_m[7:0] = {4'b0,store_byteen_m[3:0]} << lsu_addr_m[1:0];      // The packet in m
-   assign store_byteen_ext_r[7:0] = {4'b0,store_byteen_r[3:0]} << lsu_addr_r[1:0];
-
-
-
-   assign dccm_wr_bypass_d_m_lo   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == lsu_addr_m[pt.DCCM_BITS-1:2]) & addr_in_dccm_m;
-   assign dccm_wr_bypass_d_m_hi   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == end_addr_m[pt.DCCM_BITS-1:2]) & addr_in_dccm_m;
-
-   assign dccm_wr_bypass_d_r_lo   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) & addr_in_dccm_r;
-   assign dccm_wr_bypass_d_r_hi   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) & addr_in_dccm_r;
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U1_Plus1_1
-      logic        dccm_wren_Q;
-      logic [31:0] dccm_wr_data_Q;
-      logic        dccm_wr_bypass_d_m_lo_Q, dccm_wr_bypass_d_m_hi_Q;
-      logic [31:0] store_data_pre_hi_r, store_data_pre_lo_r;
-
-      assign {store_data_pre_hi_r[31:0], store_data_pre_lo_r[31:0]} = {32'b0,store_data_r[31:0]} << 8*lsu_addr_r[1:0];
-
-      for (genvar i=0; i<4; i++) begin
-          assign store_data_lo_r[(8*i)+7:(8*i)]   = store_byteen_ext_r[i] ? store_data_pre_lo_r[(8*i)+7:(8*i)] : ((dccm_wren_Q & dccm_wr_bypass_d_m_lo_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_lo_r[(8*i)+7:(8*i)]);
-          assign store_data_hi_r[(8*i)+7:(8*i)]   = store_byteen_ext_r[i+4] ? store_data_pre_hi_r[(8*i)+7:(8*i)] : ((dccm_wren_Q & dccm_wr_bypass_d_m_hi_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_hi_r[(8*i)+7:(8*i)]);
-
-          assign store_datafn_lo_r[(8*i)+7:(8*i)] = store_byteen_ext_r[i] ? store_data_pre_lo_r[(8*i)+7:(8*i)] : ((lsu_stbuf_commit_any & dccm_wr_bypass_d_r_lo) ? stbuf_data_any[(8*i)+7:(8*i)] :
-                                                                                                                    ((dccm_wren_Q & dccm_wr_bypass_d_m_lo_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_lo_r[(8*i)+7:(8*i)]));
-          assign store_datafn_hi_r[(8*i)+7:(8*i)] = store_byteen_ext_r[i+4] ? store_data_pre_hi_r[(8*i)+7:(8*i)] : ((lsu_stbuf_commit_any & dccm_wr_bypass_d_r_hi) ? stbuf_data_any[(8*i)+7:(8*i)] :
-                                                                                                                    ((dccm_wren_Q & dccm_wr_bypass_d_m_hi_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_hi_r[(8*i)+7:(8*i)]));
-      end
-
-      rvdff #(1)   dccm_wren_ff       (.*, .din(lsu_stbuf_commit_any),  .dout(dccm_wren_Q),             .clk(lsu_free_c2_clk));   // ECC load errors writing to dccm shouldn't fwd to stores in pipe
-      rvdffe #(32) dccm_wrdata_ff     (.*, .din(stbuf_data_any[31:0]),  .dout(dccm_wr_data_Q[31:0]),    .en(lsu_stbuf_commit_any | clk_override), .clk(clk));
-      rvdff #(1)   dccm_wrbyp_dm_loff (.*, .din(dccm_wr_bypass_d_m_lo), .dout(dccm_wr_bypass_d_m_lo_Q), .clk(lsu_free_c2_clk));
-      rvdff #(1)   dccm_wrbyp_dm_hiff (.*, .din(dccm_wr_bypass_d_m_hi), .dout(dccm_wr_bypass_d_m_hi_Q), .clk(lsu_free_c2_clk));
-      rvdff #(32)  store_data_rff     (.*, .din(store_data_m[31:0]),    .dout(store_data_r[31:0]),      .clk(lsu_store_c1_r_clk));
-
-   end else begin: L2U1_Plus1_0
-
-      logic [31:0] store_data_hi_m, store_data_lo_m;
-      logic [63:0] store_data_mask;
-      assign {store_data_hi_m[31:0] , store_data_lo_m[31:0]} = {32'b0,store_data_m[31:0]} << 8*lsu_addr_m[1:0];
-
-      for (genvar i=0; i<4; i++) begin
-         assign store_data_hi_r_in[(8*i)+7:(8*i)]  = store_byteen_ext_m[i+4] ? store_data_hi_m[(8*i)+7:(8*i)] :
-                                                                               ((lsu_stbuf_commit_any &  dccm_wr_bypass_d_m_hi)   ? stbuf_data_any[(8*i)+7:(8*i)] : sec_data_hi_m[(8*i)+7:(8*i)]);
-         assign store_data_lo_r_in[(8*i)+7:(8*i)]  = store_byteen_ext_m[i]   ? store_data_lo_m[(8*i)+7:(8*i)] :
-                                                                               ((lsu_stbuf_commit_any &  dccm_wr_bypass_d_m_lo) ? stbuf_data_any[(8*i)+7:(8*i)] : sec_data_lo_m[(8*i)+7:(8*i)]);
-
-         assign store_datafn_lo_r[(8*i)+7:(8*i)]   = (lsu_stbuf_commit_any & dccm_wr_bypass_d_r_lo & ~store_byteen_ext_r[i])   ? stbuf_data_any[(8*i)+7:(8*i)] : store_data_lo_r[(8*i)+7:(8*i)];
-         assign store_datafn_hi_r[(8*i)+7:(8*i)]   = (lsu_stbuf_commit_any & dccm_wr_bypass_d_r_hi & ~store_byteen_ext_r[i+4]) ? stbuf_data_any[(8*i)+7:(8*i)] : store_data_hi_r[(8*i)+7:(8*i)];
-      end // for (genvar i=0; i<BYTE_WIDTH; i++)
-
-      for (genvar i=0; i<4; i++) begin
-         assign store_data_mask[(8*i)+7:(8*i)] = {8{store_byteen_r[i]}};
-      end
-      assign store_data_r[31:0]      = 32'({store_data_hi_r[31:0],store_data_lo_r[31:0]} >> 8*lsu_addr_r[1:0]) & store_data_mask[31:0];
-
-      rvdffe #(pt.DCCM_DATA_WIDTH) store_data_hi_rff (.*, .din(store_data_hi_r_in[pt.DCCM_DATA_WIDTH-1:0]), .dout(store_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en((ldst_dual_m & lsu_pkt_m.valid & lsu_pkt_m.store) | clk_override), .clk(clk));
-      rvdff  #(pt.DCCM_DATA_WIDTH) store_data_lo_rff (.*, .din(store_data_lo_r_in[pt.DCCM_DATA_WIDTH-1:0]), .dout(store_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .clk(lsu_store_c1_r_clk));
-
-   end
-
-   assign dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rd_data_lo[pt.DCCM_DATA_WIDTH-1:0]; // for ld choose dccm_out
-   assign dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rd_data_hi[pt.DCCM_DATA_WIDTH-1:0]; // for ld this is used for ecc
-
-   assign dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0] = dccm_rd_data_lo[pt.DCCM_FDATA_WIDTH-1:pt.DCCM_DATA_WIDTH];
-   assign dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0] = dccm_rd_data_hi[pt.DCCM_FDATA_WIDTH-1:pt.DCCM_DATA_WIDTH];
-
-   // PIC signals. PIC ignores the lower 2 bits of address since PIC memory registers are 32-bits
-   assign picm_wren          = (lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_pic_r & lsu_commit_r) | dma_pic_wen;
-   assign picm_rden          = lsu_pkt_d.valid & lsu_pkt_d.load  & addr_in_pic_d;
-   assign picm_mken          = lsu_pkt_d.valid & lsu_pkt_d.store & addr_in_pic_d;  // Get the mask for stores
-   assign picm_rdaddr[31:0]  = pt.PIC_BASE_ADDR | {{32-pt.PIC_BITS{1'b0}},lsu_addr_d[pt.PIC_BITS-1:0]};
-
-   assign picm_wraddr[31:0]  = pt.PIC_BASE_ADDR | {{32-pt.PIC_BITS{1'b0}},(dma_pic_wen ? dma_mem_addr[pt.PIC_BITS-1:0] : lsu_addr_r[pt.PIC_BITS-1:0])};
-
-   assign picm_wr_data[31:0] = dma_pic_wen ? dma_mem_wdata[31:0] : store_datafn_lo_r[31:0];
-
-   assign picm_mask_data_m[31:0] = picm_rd_data_m[31:0];
-   assign picm_rd_data_m[63:0]   = {picm_rd_data[31:0],picm_rd_data[31:0]};
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      rvdff #(1) dccm_rden_mff (.*, .din(lsu_dccm_rden_d), .dout(lsu_dccm_rden_m), .clk(lsu_c2_m_clk));
-      rvdff #(1) dccm_rden_rff (.*, .din(lsu_dccm_rden_m), .dout(lsu_dccm_rden_r), .clk(lsu_c2_r_clk));
-
-      // ECC correction flops since dccm write happens next cycle
-      // We are writing to dccm in r+1 for ecc correction since fast_int needs to be blocked in decode - 1. We can probably write in r for plus0 configuration since we know ecc error in M.
-      // In that case these (_ff) flops are needed only in plus1 configuration
-      rvdff #(1) ld_double_ecc_error_rff    (.*, .din(lsu_double_ecc_error_r),   .dout(lsu_double_ecc_error_r_ff),   .clk(lsu_free_c2_clk));
-      rvdff #(1) ld_single_ecc_error_hi_rff (.*, .din(ld_single_ecc_error_hi_r_ns), .dout(ld_single_ecc_error_hi_r_ff), .clk(lsu_free_c2_clk));
-      rvdff #(1) ld_single_ecc_error_lo_rff (.*, .din(ld_single_ecc_error_lo_r_ns), .dout(ld_single_ecc_error_lo_r_ff), .clk(lsu_free_c2_clk));
-      rvdffe #(pt.DCCM_BITS) ld_sec_addr_hi_rff (.*, .din(end_addr_r[pt.DCCM_BITS-1:0]), .dout(ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk));
-      rvdffe #(pt.DCCM_BITS) ld_sec_addr_lo_rff (.*, .din(lsu_addr_r[pt.DCCM_BITS-1:0]), .dout(ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk));
-
-   end else begin: Gen_dccm_disable
-      assign lsu_dccm_rden_m = '0;
-      assign lsu_dccm_rden_r = '0;
-
-      assign lsu_double_ecc_error_r_ff = 1'b0;
-      assign ld_single_ecc_error_hi_r_ff = 1'b0;
-      assign ld_single_ecc_error_lo_r_ff = 1'b0;
-      assign ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0] = '0;
-      assign ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0] = '0;
-   end
-
-`ifdef RV_ASSERT_ON
-
-   // Load single ECC error correction implies commit/dma
-   property ld_single_ecc_error_commit;
-      @(posedge clk) disable iff(~rst_l) (ld_single_ecc_error_r_ff & dccm_wren) |-> ($past(lsu_commit_r | lsu_pkt_r.dma));
-   endproperty
-   assert_ld_single_ecc_error_commit: assert property (ld_single_ecc_error_commit) else
-     $display("No commit or DMA but ECC correction happened");
-
-
-`endif
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_dccm_mem.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu_dccm_mem.sv
deleted file mode 100644
index ac4765b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_dccm_mem.sv
+++ /dev/null
@@ -1,351 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DCCM for LSU pipe
-// Comments: Single ported memory
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-
-`define eb1_LOCAL_DCCM_RAM_TEST_PORTS    .TEST1(dccm_ext_in_pkt[i].TEST1),                      \
-                                     .RME(dccm_ext_in_pkt[i].RME),                      \
-                                     .RM(dccm_ext_in_pkt[i].RM),                        \
-                                     .LS(dccm_ext_in_pkt[i].LS),                        \
-                                     .DS(dccm_ext_in_pkt[i].DS),                        \
-                                     .SD(dccm_ext_in_pkt[i].SD),                        \
-                                     .TEST_RNM(dccm_ext_in_pkt[i].TEST_RNM),            \
-                                     .BC1(dccm_ext_in_pkt[i].BC1),                      \
-                                     .BC2(dccm_ext_in_pkt[i].BC2),                      \
-
-
-
-module eb1_lsu_dccm_mem
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-`ifdef USE_POWER_PINS
-   input logic 	vccd1,
-   input logic		vssd1,
- `endif
-   input logic         clk,                                             // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic         active_clk,                                      // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic         rst_l,                                           // reset, active low
-   input logic         clk_override,                                    // Override non-functional clock gating
-
-   input logic         dccm_wren,                                       // write enable
-   input logic         dccm_rden,                                       // read enable
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_lo,                     // write address
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_hi,                     // write address
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_lo,                     // read address
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_hi,                     // read address for the upper bank in case of a misaligned access
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,              // write data
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,              // write data
-   input eb1_dccm_ext_in_pkt_t  [pt.DCCM_NUM_BANKS-1:0] dccm_ext_in_pkt,    // the dccm packet from the soc
-
-   output logic [pt.DCCM_FDATA_WIDTH-1:0] dccm_rd_data_lo,              // read data from the lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0] dccm_rd_data_hi,              // read data from the hi bank
-
-   input  logic         scan_mode
-);
-
-
-   localparam DCCM_WIDTH_BITS = $clog2(pt.DCCM_BYTE_WIDTH);
-   localparam DCCM_INDEX_BITS = (pt.DCCM_BITS - pt.DCCM_BANK_BITS - pt.DCCM_WIDTH_BITS);
-   localparam DCCM_INDEX_DEPTH = ((pt.DCCM_SIZE)*1024)/((pt.DCCM_BYTE_WIDTH)*(pt.DCCM_NUM_BANKS));  // Depth of memory bank
-
-   logic [pt.DCCM_NUM_BANKS-1:0]                                        wren_bank;
-   logic [pt.DCCM_NUM_BANKS-1:0]                                        rden_bank;
-   logic [pt.DCCM_NUM_BANKS-1:0] [pt.DCCM_BITS-1:(pt.DCCM_BANK_BITS+2)] addr_bank;
-   logic [pt.DCCM_BITS-1:(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)]           rd_addr_even, rd_addr_odd;
-   logic                                                                rd_unaligned, wr_unaligned;
-   logic [pt.DCCM_NUM_BANKS-1:0] [pt.DCCM_FDATA_WIDTH-1:0]              dccm_bank_dout;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]                                      wrdata;
-
-   logic [pt.DCCM_NUM_BANKS-1:0][pt.DCCM_FDATA_WIDTH-1:0]               wr_data_bank;
-
-   logic [(DCCM_WIDTH_BITS+pt.DCCM_BANK_BITS-1):DCCM_WIDTH_BITS]        dccm_rd_addr_lo_q;
-   logic [(DCCM_WIDTH_BITS+pt.DCCM_BANK_BITS-1):DCCM_WIDTH_BITS]        dccm_rd_addr_hi_q;
-
-   logic [pt.DCCM_NUM_BANKS-1:0]            dccm_clken;
-
-   assign rd_unaligned = (dccm_rd_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] != dccm_rd_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]);
-   assign wr_unaligned = (dccm_wr_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] != dccm_wr_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]);
-
-   // Align the read data
-   assign dccm_rd_data_lo[pt.DCCM_FDATA_WIDTH-1:0]  = dccm_bank_dout[dccm_rd_addr_lo_q[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]][pt.DCCM_FDATA_WIDTH-1:0];
-   assign dccm_rd_data_hi[pt.DCCM_FDATA_WIDTH-1:0]  = dccm_bank_dout[dccm_rd_addr_hi_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]][pt.DCCM_FDATA_WIDTH-1:0];
-
-
-   // 8 Banks, 16KB each (2048 x 72)
-   for (genvar i=0; i<pt.DCCM_NUM_BANKS; i++) begin: mem_bank
-      assign  wren_bank[i]        = dccm_wren & ((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) | (dccm_wr_addr_lo[2+:pt.DCCM_BANK_BITS] == i));
-      assign  rden_bank[i]        = dccm_rden & ((dccm_rd_addr_hi[2+:pt.DCCM_BANK_BITS] == i) | (dccm_rd_addr_lo[2+:pt.DCCM_BANK_BITS] == i));
-      assign  addr_bank[i][(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] = wren_bank[i] ? (((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & wr_unaligned) ?
-                                                                                                        dccm_wr_addr_hi[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] :
-                                                                                                        dccm_wr_addr_lo[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS])  :
-                                                                                                  (((dccm_rd_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & rd_unaligned) ?
-                                                                                                        dccm_rd_addr_hi[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] :
-                                                                                                        dccm_rd_addr_lo[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS]);
-
-      assign wr_data_bank[i]     = ((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & wr_unaligned) ? dccm_wr_data_hi[pt.DCCM_FDATA_WIDTH-1:0] : dccm_wr_data_lo[pt.DCCM_FDATA_WIDTH-1:0];
-
-      // clock gating section
-      assign  dccm_clken[i] = (wren_bank[i] | rden_bank[i] | clk_override) ;
-      // end clock gating section
-
-`ifdef VERILATOR
-
-       /* eb1_ram #(DCCM_INDEX_DEPTH,39)  ram (
-                                  // Primary ports
-                                  .ME(dccm_clken[i]),
-                                  .CLK(clk),
-                                  .WE(wren_bank[i]),
-                                  .ADR(addr_bank[i]),
-                                  .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .ROP ( ),
-                                  // These are used by SoC
-                                  `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                  .*
-                                  );
-            
-              */                    
-                                  sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-                                  					`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~dccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(wr_data_bank[i]),
-									.dout0(dccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-    				   );
-
-`else
-
-      if (DCCM_INDEX_DEPTH == 32768) begin : dccm
-         ram_32768x39  dccm_bank (
-                                  // Primary ports
-                                  .ME(dccm_clken[i]),
-                                  .CLK(clk),
-                                  .WE(wren_bank[i]),
-                                  .ADR(addr_bank[i]),
-                                  .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .ROP ( ),
-                                  // These are used by SoC
-                                  `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                  .*
-                                  );
-      end
-      else if (DCCM_INDEX_DEPTH == 16384) begin : dccm
-         ram_16384x39  dccm_bank (
-                                  // Primary ports
-                                  .ME(dccm_clken[i]),
-                                  .CLK(clk),
-                                  .WE(wren_bank[i]),
-                                  .ADR(addr_bank[i]),
-                                  .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .ROP ( ),
-                                  // These are used by SoC
-                                  `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                  .*
-                                  );
-      end
-      else if (DCCM_INDEX_DEPTH == 8192) begin : dccm
-         ram_8192x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 4096) begin : dccm
-         ram_4096x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 3072) begin : dccm
-         ram_3072x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 2048) begin : dccm
-         ram_2048x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 1024) begin : dccm
-         /*ram_1024x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-                                 */
-                                 sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~dccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(wr_data_bank[i]),
-									.dout0(dccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-    				   );
-      end
-      else if (DCCM_INDEX_DEPTH == 512) begin : dccm
-         ram_512x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );
-      end
-      else if (DCCM_INDEX_DEPTH == 256) begin : dccm
-         /*ram_256x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );*/
-                                sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~dccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(wr_data_bank[i][31:0]),
-									.dout0(dccm_bank_dout[i][31:0]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-    				   );
-      end
-      else if (DCCM_INDEX_DEPTH == 128) begin : dccm
-         ram_128x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );
-      end
-`endif
-
-   end : mem_bank
-
-   // Flops
-   rvdff  #(pt.DCCM_BANK_BITS) rd_addr_lo_ff (.*, .din(dccm_rd_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .dout(dccm_rd_addr_lo_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .clk(active_clk));
-   rvdff  #(pt.DCCM_BANK_BITS) rd_addr_hi_ff (.*, .din(dccm_rd_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .dout(dccm_rd_addr_hi_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .clk(active_clk));
-
-`undef eb1_LOCAL_DCCM_RAM_TEST_PORTS
-
-endmodule // eb1_lsu_dccm_mem
-
-
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_ecc.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu_ecc.sv
deleted file mode 100644
index c91a01f..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_ecc.sv
+++ /dev/null
@@ -1,241 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Top level file for load store unit
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-module eb1_lsu_ecc
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-(
-   input logic                           clk,                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                           lsu_c2_r_clk,       // clock
-   input logic                           clk_override,       // Override non-functional clock gating
-   input logic                           rst_l,              // reset, active low
-   input logic                           scan_mode,          // scan mode
-
-   input eb1_lsu_pkt_t                  lsu_pkt_m,          // packet in m
-   input eb1_lsu_pkt_t                  lsu_pkt_r,          // packet in r
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  stbuf_data_any,
-
-   input logic                           dec_tlu_core_ecc_disable,  // disables the ecc computation and error flagging
-
-   input logic                           lsu_dccm_rden_r,          // dccm rden
-   input logic                           addr_in_dccm_r,           // address in dccm
-   input logic  [pt.DCCM_BITS-1:0]       lsu_addr_r,               // start address
-   input logic  [pt.DCCM_BITS-1:0]       end_addr_r,               // end address
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_hi_r,          // data from the dccm
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_lo_r,          // data from the dccm
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_hi_r,       // data from the dccm + ecc
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_lo_r,       // data from the dccm + ecc
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_r,            // corrected dccm data R-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r,            // corrected dccm data R-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_r_ff,         // corrected dccm data R+1 stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r_ff,         // corrected dccm data R+1 stage
-
-   input logic                           ld_single_ecc_error_r,     // ld has a single ecc error
-   input logic                           ld_single_ecc_error_r_ff,  // ld has a single ecc error
-   input logic                           lsu_dccm_rden_m,           // dccm rden
-   input logic                           addr_in_dccm_m,            // address in dccm
-   input logic  [pt.DCCM_BITS-1:0]       lsu_addr_m,                // start address
-   input logic  [pt.DCCM_BITS-1:0]       end_addr_m,                // end address
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_hi_m,           // raw data from mem
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_lo_m,           // raw data from mem
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_hi_m,        // ecc read out from mem
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_lo_m,        // ecc read out from mem
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_m,             // corrected dccm data M-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_m,             // corrected dccm data M-stage
-
-   input logic                           dma_dccm_wen,              // Perform DMA writes only for word/dword
-   input logic  [31:0]                   dma_dccm_wdata_lo,         // Shifted dma data to lower bits to make it consistent to lsu stores
-   input logic  [31:0]                   dma_dccm_wdata_hi,         // Shifted dma data to lower bits to make it consistent to lsu stores
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  dma_dccm_wdata_ecc_hi,     // ECC bits for the DMA wdata
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  dma_dccm_wdata_ecc_lo,     // ECC bits for the DMA wdata
-
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  stbuf_ecc_any,             // Encoded data with ECC bits
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_hi_r_ff,      // Encoded data with ECC bits
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_lo_r_ff,      // Encoded data with ECC bits
-
-   output logic                          single_ecc_error_hi_r,                   // sec detected
-   output logic                          single_ecc_error_lo_r,                   // sec detected on lower dccm bank
-   output logic                          lsu_single_ecc_error_r,                  // or of the 2
-   output logic                          lsu_double_ecc_error_r,                   // double error detected
-
-   output logic                          lsu_single_ecc_error_m,                  // or of the 2
-   output logic                          lsu_double_ecc_error_m                   // double error detected
-
- );
-
-   logic                           is_ldst_r;
-   logic                           is_ldst_hi_any, is_ldst_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  dccm_wdata_hi_any, dccm_wdata_lo_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  dccm_wdata_ecc_hi_any, dccm_wdata_ecc_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  dccm_rdata_hi_any, dccm_rdata_lo_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]   dccm_data_ecc_hi_any, dccm_data_ecc_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  sec_data_hi_any, sec_data_lo_any;
-   logic                           single_ecc_error_hi_any, single_ecc_error_lo_any;
-   logic                           double_ecc_error_hi_any, double_ecc_error_lo_any;
-
-   logic                           double_ecc_error_hi_m, double_ecc_error_lo_m;
-   logic                           double_ecc_error_hi_r, double_ecc_error_lo_r;
-
-   logic [6:0]                     ecc_out_hi_nc, ecc_out_lo_nc;
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic        ldst_dual_m, ldst_dual_r;
-      logic        is_ldst_m;
-      logic        is_ldst_hi_r, is_ldst_lo_r;
-
-      assign ldst_dual_r                                 = (lsu_addr_r[2] != end_addr_r[2]);
-      assign is_ldst_r                                   = lsu_pkt_r.valid & (lsu_pkt_r.load | lsu_pkt_r.store) & addr_in_dccm_r & lsu_dccm_rden_r;
-      assign is_ldst_lo_r                                = is_ldst_r & ~dec_tlu_core_ecc_disable;
-      assign is_ldst_hi_r                                = is_ldst_r & ldst_dual_r & ~dec_tlu_core_ecc_disable;   // Always check the ECC Hi/Lo for DMA since we don't align for DMA
-
-      assign is_ldst_hi_any                              = is_ldst_hi_r;
-      assign dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_hi_r[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_hi_r[pt.DCCM_ECC_WIDTH-1:0];
-      assign is_ldst_lo_any                              = is_ldst_lo_r;
-      assign dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_lo_r[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_lo_r[pt.DCCM_ECC_WIDTH-1:0];
-
-      assign sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign single_ecc_error_hi_r                       = single_ecc_error_hi_any;
-      assign double_ecc_error_hi_r                       = double_ecc_error_hi_any;
-      assign sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign single_ecc_error_lo_r                       = single_ecc_error_lo_any;
-      assign double_ecc_error_lo_r                       = double_ecc_error_lo_any;
-
-      assign lsu_single_ecc_error_r                      = single_ecc_error_hi_r | single_ecc_error_lo_r;
-      assign lsu_double_ecc_error_r                      = double_ecc_error_hi_r | double_ecc_error_lo_r;
-
-   end else begin: L2U_Plus1_0
-
-      logic        ldst_dual_m;
-      logic        is_ldst_m;
-      logic        is_ldst_hi_m, is_ldst_lo_m;
-
-      assign ldst_dual_m                                 = (lsu_addr_m[2] != end_addr_m[2]);
-      assign is_ldst_m                                   = lsu_pkt_m.valid & (lsu_pkt_m.load | lsu_pkt_m.store) & addr_in_dccm_m & lsu_dccm_rden_m;
-      assign is_ldst_lo_m                                = is_ldst_m & ~dec_tlu_core_ecc_disable;
-      assign is_ldst_hi_m                                = is_ldst_m & (ldst_dual_m | lsu_pkt_m.dma) & ~dec_tlu_core_ecc_disable;   // Always check the ECC Hi/Lo for DMA since we don't align for DMA
-
-      assign is_ldst_hi_any                              = is_ldst_hi_m;
-      assign dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0];
-      assign is_ldst_lo_any                              = is_ldst_lo_m;
-      assign dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0];
-
-      assign sec_data_hi_m[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign double_ecc_error_hi_m                       = double_ecc_error_hi_any;
-      assign sec_data_lo_m[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign double_ecc_error_lo_m                       = double_ecc_error_lo_any;
-
-      assign lsu_single_ecc_error_m                      = single_ecc_error_hi_any | single_ecc_error_lo_any;
-      assign lsu_double_ecc_error_m                      = double_ecc_error_hi_m   | double_ecc_error_lo_m;
-
-      // Flops
-      rvdff  #(1) lsu_single_ecc_err_r    (.din(lsu_single_ecc_error_m), .dout(lsu_single_ecc_error_r), .clk(lsu_c2_r_clk), .*);
-      rvdff  #(1) lsu_double_ecc_err_r    (.din(lsu_double_ecc_error_m), .dout(lsu_double_ecc_error_r), .clk(lsu_c2_r_clk), .*);
-      rvdff  #(.WIDTH(1)) ldst_sec_lo_rff (.din(single_ecc_error_lo_any),  .dout(single_ecc_error_lo_r),  .clk(lsu_c2_r_clk), .*);
-      rvdff  #(.WIDTH(1)) ldst_sec_hi_rff (.din(single_ecc_error_hi_any),  .dout(single_ecc_error_hi_r),  .clk(lsu_c2_r_clk), .*);
-      rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_hi_rff (.din(sec_data_hi_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_single_ecc_error_m | clk_override), .*);
-      rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_lo_rff (.din(sec_data_lo_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_single_ecc_error_m | clk_override), .*);
-
-   end
-
-   // Logic for ECC generation during write
-   assign dccm_wdata_lo_any[pt.DCCM_DATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0] : (dma_dccm_wen ? dma_dccm_wdata_lo[pt.DCCM_DATA_WIDTH-1:0] : stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]);
-   assign dccm_wdata_hi_any[pt.DCCM_DATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0] : (dma_dccm_wen ? dma_dccm_wdata_hi[pt.DCCM_DATA_WIDTH-1:0] : 32'h0);
-
-   assign sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0]  = dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0]  = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0]         = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign dma_dccm_wdata_ecc_hi[pt.DCCM_ECC_WIDTH-1:0] = dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign dma_dccm_wdata_ecc_lo[pt.DCCM_ECC_WIDTH-1:0] = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-
-   // Instantiate ECC blocks
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-
-      //Detect/Repair for Hi
-      rvecc_decode lsu_ecc_decode_hi (
-         // Inputs
-         .en(is_ldst_hi_any),
-         .sed_ded (1'b0),    // 1 : means only detection
-         .din(dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_in(dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0]),
-         // Outputs
-         .dout(sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_out (ecc_out_hi_nc[6:0]),
-         .single_ecc_error(single_ecc_error_hi_any),
-         .double_ecc_error(double_ecc_error_hi_any),
-         .*
-      );
-
-      //Detect/Repair for Lo
-      rvecc_decode lsu_ecc_decode_lo (
-         // Inputs
-         .en(is_ldst_lo_any),
-         .sed_ded (1'b0),    // 1 : means only detection
-         .din(dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0] ),
-         .ecc_in(dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0]),
-         // Outputs
-         .dout(sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_out (ecc_out_lo_nc[6:0]),
-         .single_ecc_error(single_ecc_error_lo_any),
-         .double_ecc_error(double_ecc_error_lo_any),
-         .*
-      );
-
-      rvecc_encode lsu_ecc_encode_hi (
-         //Inputs
-         .din(dccm_wdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         //Outputs
-         .ecc_out(dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0]),
-         .*
-      );
-      rvecc_encode lsu_ecc_encode_lo (
-         //Inputs
-         .din(dccm_wdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]),
-         //Outputs
-         .ecc_out(dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0]),
-         .*
-      );
-   end else begin: Gen_dccm_disable // block: Gen_dccm_enable
-      assign sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0] = '0;
-      assign sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0] = '0;
-      assign single_ecc_error_hi_any = '0;
-      assign double_ecc_error_hi_any = '0;
-      assign single_ecc_error_lo_any = '0;
-      assign double_ecc_error_lo_any = '0;
-   end
-
-   rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_hi_rplus1ff (.din(sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk), .*);
-   rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_lo_rplus1ff (.din(sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk), .*);
-
-
-endmodule // eb1_lsu_ecc
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_lsc_ctl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu_lsc_ctl.sv
deleted file mode 100644
index 7b0517b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_lsc_ctl.sv
+++ /dev/null
@@ -1,341 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: LSU control
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-module eb1_lsu_lsc_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   input logic                rst_l,                     // reset, active low
-   input logic                clk_override,              // Override non-functional clock gating
-   input logic                clk,                       // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-
-   // clocks per pipe
-   input logic                lsu_c1_m_clk,
-   input logic                lsu_c1_r_clk,
-   input logic                lsu_c2_m_clk,
-   input logic                lsu_c2_r_clk,
-   input logic                lsu_store_c1_m_clk,
-
-   input logic [31:0]         lsu_ld_data_r,             // Load data R-stage
-   input logic [31:0]         lsu_ld_data_corr_r,        // ECC corrected data R-stage
-   input logic                lsu_single_ecc_error_r,    // ECC single bit error R-stage
-   input logic                lsu_double_ecc_error_r,    // ECC double bit error R-stage
-
-   input logic [31:0]         lsu_ld_data_m,             // Load data M-stage
-   input logic                lsu_single_ecc_error_m,    // ECC single bit error M-stage
-   input logic                lsu_double_ecc_error_m,    // ECC double bit error M-stage
-
-   input logic                flush_m_up,                // Flush M and D stage
-   input logic                flush_r,                   // Flush R-stage
-   input logic                ldst_dual_d,               // load/store is unaligned at 32 bit boundary D-stage
-   input logic                ldst_dual_m,               // load/store is unaligned at 32 bit boundary M-stage
-   input logic                ldst_dual_r,               // load/store is unaligned at 32 bit boundary R-stage
-
-   input logic [31:0]         exu_lsu_rs1_d,             // address
-   input logic [31:0]         exu_lsu_rs2_d,             // store data
-
-   input eb1_lsu_pkt_t       lsu_p,                     // lsu control packet
-   input logic                dec_lsu_valid_raw_d,       // Raw valid for address computation
-   input logic [11:0]         dec_lsu_offset_d,          // 12b offset for load/store addresses
-
-   input  logic [31:0]        picm_mask_data_m,          // PIC data M-stage
-   input  logic [31:0]        bus_read_data_m,           // the bus return data
-   output logic [31:0]        lsu_result_m,              // lsu load data
-   output logic [31:0]        lsu_result_corr_r,         // This is the ECC corrected data going to RF
-   // lsu address down the pipe
-   output logic [31:0]        lsu_addr_d,
-   output logic [31:0]        lsu_addr_m,
-   output logic [31:0]        lsu_addr_r,
-   // lsu address down the pipe - needed to check unaligned
-   output logic [31:0]        end_addr_d,
-   output logic [31:0]        end_addr_m,
-   output logic [31:0]        end_addr_r,
-   // store data down the pipe
-   output logic [31:0]        store_data_m,
-
-   input  logic [31:0]         dec_tlu_mrac_ff,          // CSR for memory region control
-   output logic                lsu_exc_m,                // Access or misaligned fault
-   output logic                is_sideeffects_m,         // is sideffects space
-   output logic                lsu_commit_r,             // lsu instruction in r commits
-   output logic                lsu_single_ecc_error_incr,// LSU inc SB error counter
-   output eb1_lsu_error_pkt_t lsu_error_pkt_r,          // lsu exception packet
-
-   output logic [31:1]         lsu_fir_addr,             // fast interrupt address
-   output logic [1:0]          lsu_fir_error,            // Error during fast interrupt lookup
-
-   // address in dccm/pic/external per pipe stage
-   output logic               addr_in_dccm_d,
-   output logic               addr_in_dccm_m,
-   output logic               addr_in_dccm_r,
-
-   output logic               addr_in_pic_d,
-   output logic               addr_in_pic_m,
-   output logic               addr_in_pic_r,
-
-   output logic               addr_external_m,
-
-   // DMA slave
-   input logic                dma_dccm_req,
-   input logic [31:0]         dma_mem_addr,
-   input logic [2:0]          dma_mem_sz,
-   input logic                dma_mem_write,
-   input logic [63:0]         dma_mem_wdata,
-
-   // Store buffer related signals
-   output eb1_lsu_pkt_t      lsu_pkt_d,
-   output eb1_lsu_pkt_t      lsu_pkt_m,
-   output eb1_lsu_pkt_t      lsu_pkt_r,
-
-   input  logic               scan_mode                  // Scan mode
-
-   );
-
-   logic [31:3]        end_addr_pre_m, end_addr_pre_r;
-   logic [31:0]        full_addr_d;
-   logic [31:0]        full_end_addr_d;
-   logic [31:0]        lsu_rs1_d;
-   logic [11:0]        lsu_offset_d;
-   logic [31:0]        rs1_d;
-   logic [11:0]        offset_d;
-   logic [12:0]        end_addr_offset_d;
-   logic [2:0]         addr_offset_d;
-
-   logic [63:0]        dma_mem_wdata_shifted;
-   logic               addr_external_d;
-   logic               addr_external_r;
-   logic               access_fault_d, misaligned_fault_d;
-   logic               access_fault_m, misaligned_fault_m;
-
-   logic               fir_dccm_access_error_d, fir_nondccm_access_error_d;
-   logic               fir_dccm_access_error_m, fir_nondccm_access_error_m;
-
-   logic [3:0]         exc_mscause_d, exc_mscause_m;
-   logic [31:0]        rs1_d_raw;
-   logic [31:0]        store_data_d, store_data_pre_m, store_data_m_in;
-   logic [31:0]        bus_read_data_r;
-
-   eb1_lsu_pkt_t           dma_pkt_d;
-   eb1_lsu_pkt_t           lsu_pkt_m_in, lsu_pkt_r_in;
-   eb1_lsu_error_pkt_t     lsu_error_pkt_m;
-
-
-   // Premux the rs1/offset for dma
-   assign lsu_rs1_d[31:0]    = dec_lsu_valid_raw_d ? exu_lsu_rs1_d[31:0] : dma_mem_addr[31:0];
-   assign lsu_offset_d[11:0] = dec_lsu_offset_d[11:0] & {12{dec_lsu_valid_raw_d}};
-   assign rs1_d_raw[31:0]    = lsu_rs1_d[31:0];
-   assign offset_d[11:0]     = lsu_offset_d[11:0];
-
-   assign rs1_d[31:0] = (lsu_pkt_d.load_ldst_bypass_d) ? lsu_result_m[31:0] : rs1_d_raw[31:0];
-
-   // generate the ls address
-   rvlsadder   lsadder  (.rs1(rs1_d[31:0]),
-                       .offset(offset_d[11:0]),
-                       .dout(full_addr_d[31:0])
-                       );
-
-   // Module to generate the memory map of the address
-   eb1_lsu_addrcheck addrcheck (
-              .start_addr_d(full_addr_d[31:0]),
-              .end_addr_d(full_end_addr_d[31:0]),
-              .rs1_region_d(rs1_d[31:28]),
-              .*
-  );
-
-   // Calculate start/end address for load/store
-   assign addr_offset_d[2:0]      = ({3{lsu_pkt_d.half}} & 3'b01) | ({3{lsu_pkt_d.word}} & 3'b11) | ({3{lsu_pkt_d.dword}} & 3'b111);
-   assign end_addr_offset_d[12:0] = {offset_d[11],offset_d[11:0]} + {9'b0,addr_offset_d[2:0]};
-   assign full_end_addr_d[31:0]   = rs1_d[31:0] + {{19{end_addr_offset_d[12]}},end_addr_offset_d[12:0]};
-   assign end_addr_d[31:0]        = full_end_addr_d[31:0];
-   assign lsu_exc_m               = access_fault_m | misaligned_fault_m;
-
-   // Goes to TLU to increment the ECC error counter
-   assign lsu_single_ecc_error_incr = (lsu_single_ecc_error_r & ~lsu_double_ecc_error_r) & (lsu_commit_r | lsu_pkt_r.dma) & lsu_pkt_r.valid;
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic               access_fault_r, misaligned_fault_r;
-      logic [3:0]         exc_mscause_r;
-      logic               fir_dccm_access_error_r, fir_nondccm_access_error_r;
-
-      // Generate exception packet
-      assign lsu_error_pkt_r.exc_valid = (access_fault_r | misaligned_fault_r | lsu_double_ecc_error_r) & lsu_pkt_r.valid & ~lsu_pkt_r.dma & ~lsu_pkt_r.fast_int;
-      assign lsu_error_pkt_r.single_ecc_error = lsu_single_ecc_error_r & ~lsu_error_pkt_r.exc_valid & ~lsu_pkt_r.dma;
-      assign lsu_error_pkt_r.inst_type = lsu_pkt_r.store;
-      assign lsu_error_pkt_r.exc_type  = ~misaligned_fault_r;
-      assign lsu_error_pkt_r.mscause[3:0] = (lsu_double_ecc_error_r & ~misaligned_fault_r & ~access_fault_r) ? 4'h1 : exc_mscause_r[3:0];
-      assign lsu_error_pkt_r.addr[31:0] = lsu_addr_r[31:0];
-
-      assign lsu_fir_error[1:0] = fir_nondccm_access_error_r ? 2'b11 : (fir_dccm_access_error_r ? 2'b10 : ((lsu_pkt_r.fast_int & lsu_double_ecc_error_r) ? 2'b01 : 2'b00));
-
-      rvdff #(1) access_fault_rff             (.din(access_fault_m),             .dout(access_fault_r),             .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) misaligned_fault_rff         (.din(misaligned_fault_m),         .dout(misaligned_fault_r),         .clk(lsu_c1_r_clk), .*);
-      rvdff #(4) exc_mscause_rff              (.din(exc_mscause_m[3:0]),         .dout(exc_mscause_r[3:0]),         .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) fir_dccm_access_error_mff    (.din(fir_dccm_access_error_m),    .dout(fir_dccm_access_error_r),    .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) fir_nondccm_access_error_mff (.din(fir_nondccm_access_error_m), .dout(fir_nondccm_access_error_r), .clk(lsu_c1_r_clk), .*);
-
-   end else begin: L2U_Plus1_0
-      logic [1:0] lsu_fir_error_m;
-
-      // Generate exception packet
-      assign lsu_error_pkt_m.exc_valid = (access_fault_m | misaligned_fault_m | lsu_double_ecc_error_m) & lsu_pkt_m.valid & ~lsu_pkt_m.dma & ~lsu_pkt_m.fast_int & ~flush_m_up;
-      assign lsu_error_pkt_m.single_ecc_error = lsu_single_ecc_error_m & ~lsu_error_pkt_m.exc_valid & ~lsu_pkt_m.dma;
-      assign lsu_error_pkt_m.inst_type = lsu_pkt_m.store;
-      assign lsu_error_pkt_m.exc_type  = ~misaligned_fault_m;
-      assign lsu_error_pkt_m.mscause[3:0] = (lsu_double_ecc_error_m & ~misaligned_fault_m & ~access_fault_m) ? 4'h1 : exc_mscause_m[3:0];
-      assign lsu_error_pkt_m.addr[31:0] = lsu_addr_m[31:0];
-
-      assign lsu_fir_error_m[1:0] = fir_nondccm_access_error_m ? 2'b11 : (fir_dccm_access_error_m ? 2'b10 : ((lsu_pkt_m.fast_int & lsu_double_ecc_error_m) ? 2'b01 : 2'b00));
-
-      rvdff  #(1)                             lsu_exc_valid_rff       (.*, .din(lsu_error_pkt_m.exc_valid),                        .dout(lsu_error_pkt_r.exc_valid),                        .clk(lsu_c2_r_clk));
-      rvdff  #(1)                             lsu_single_ecc_error_rff(.*, .din(lsu_error_pkt_m.single_ecc_error),                 .dout(lsu_error_pkt_r.single_ecc_error),                 .clk(lsu_c2_r_clk));
-      rvdffe #($bits(eb1_lsu_error_pkt_t)-2) lsu_error_pkt_rff       (.*, .din(lsu_error_pkt_m[$bits(eb1_lsu_error_pkt_t)-1:2]), .dout(lsu_error_pkt_r[$bits(eb1_lsu_error_pkt_t)-1:2]), .en(lsu_error_pkt_m.exc_valid | lsu_error_pkt_m.single_ecc_error | clk_override));
-      rvdff #(2)                              lsu_fir_error_rff       (.*, .din(lsu_fir_error_m[1:0]),                             .dout(lsu_fir_error[1:0]),                               .clk(lsu_c2_r_clk));
-   end
-
-   //Create DMA packet
-   always_comb begin
-      dma_pkt_d = '0;
-      dma_pkt_d.valid   = dma_dccm_req;
-      dma_pkt_d.dma     = 1'b1;
-      dma_pkt_d.store   = dma_mem_write;
-      dma_pkt_d.load    = ~dma_mem_write;
-      dma_pkt_d.by      = (dma_mem_sz[2:0] == 3'b0);
-      dma_pkt_d.half    = (dma_mem_sz[2:0] == 3'b1);
-      dma_pkt_d.word    = (dma_mem_sz[2:0] == 3'b10);
-      dma_pkt_d.dword   = (dma_mem_sz[2:0] == 3'b11);
-   end
-
-   always_comb begin
-      lsu_pkt_d = dec_lsu_valid_raw_d ? lsu_p : dma_pkt_d;
-      lsu_pkt_m_in = lsu_pkt_d;
-      lsu_pkt_r_in = lsu_pkt_m;
-
-      lsu_pkt_d.valid = (lsu_p.valid & ~(flush_m_up & ~lsu_p.fast_int)) | dma_dccm_req;
-      lsu_pkt_m_in.valid = lsu_pkt_d.valid & ~(flush_m_up & ~lsu_pkt_d.dma);
-      lsu_pkt_r_in.valid = lsu_pkt_m.valid & ~(flush_m_up & ~lsu_pkt_m.dma) ;
-   end
-
-   // C2 clock for valid and C1 for other bits of packet
-   rvdff #(1) lsu_pkt_vldmff (.*, .din(lsu_pkt_m_in.valid), .dout(lsu_pkt_m.valid), .clk(lsu_c2_m_clk));
-   rvdff #(1) lsu_pkt_vldrff (.*, .din(lsu_pkt_r_in.valid), .dout(lsu_pkt_r.valid), .clk(lsu_c2_r_clk));
-
-   rvdff #($bits(eb1_lsu_pkt_t)-1) lsu_pkt_mff (.*, .din(lsu_pkt_m_in[$bits(eb1_lsu_pkt_t)-1:1]), .dout(lsu_pkt_m[$bits(eb1_lsu_pkt_t)-1:1]), .clk(lsu_c1_m_clk));
-   rvdff #($bits(eb1_lsu_pkt_t)-1) lsu_pkt_rff (.*, .din(lsu_pkt_r_in[$bits(eb1_lsu_pkt_t)-1:1]), .dout(lsu_pkt_r[$bits(eb1_lsu_pkt_t)-1:1]), .clk(lsu_c1_r_clk));
-
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U1_Plus1_1
-      logic [31:0] lsu_ld_datafn_r, lsu_ld_datafn_corr_r;
-
-      assign lsu_ld_datafn_r[31:0]  = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_r[31:0];
-      assign lsu_ld_datafn_corr_r[31:0]  = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_corr_r[31:0];
-
-      // this is really R stage signal
-      assign lsu_result_m[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_r[7:0]}) |
-                                  ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_r[15:0]}) |
-                                  ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_r[7]}}, lsu_ld_datafn_r[7:0]}) |
-                                  ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_r[15]}},lsu_ld_datafn_r[15:0]}) |
-                                  ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_r[31:0]);
-
-      // this signal is used for gpr update
-      assign lsu_result_corr_r[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_corr_r[7]}}, lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_corr_r[15]}},lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_corr_r[31:0]);
-
-   end else begin: L2U1_Plus1_0 // block: L2U1_Plus1_1
-      logic [31:0] lsu_ld_datafn_m, lsu_ld_datafn_corr_r;
-
-      assign lsu_ld_datafn_m[31:0] = addr_external_m ? bus_read_data_m[31:0] : lsu_ld_data_m[31:0];
-      assign lsu_ld_datafn_corr_r[31:0] = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_corr_r[31:0];
-
-      // this result must look at prior stores and merge them in
-      assign lsu_result_m[31:0] = ({32{ lsu_pkt_m.unsign & lsu_pkt_m.by  }} & {24'b0,lsu_ld_datafn_m[7:0]}) |
-                                  ({32{ lsu_pkt_m.unsign & lsu_pkt_m.half}} & {16'b0,lsu_ld_datafn_m[15:0]}) |
-                                  ({32{~lsu_pkt_m.unsign & lsu_pkt_m.by  }} & {{24{  lsu_ld_datafn_m[7]}}, lsu_ld_datafn_m[7:0]}) |
-                                  ({32{~lsu_pkt_m.unsign & lsu_pkt_m.half}} & {{16{  lsu_ld_datafn_m[15]}},lsu_ld_datafn_m[15:0]}) |
-                                  ({32{lsu_pkt_m.word}}                     & lsu_ld_datafn_m[31:0]);
-
-      // this signal is used for gpr update
-      assign lsu_result_corr_r[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_corr_r[7]}}, lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_corr_r[15]}},lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_corr_r[31:0]);
-   end
-
-   // Fast interrupt address
-   assign lsu_fir_addr[31:1]    = lsu_ld_data_corr_r[31:1];
-
-   // absence load/store all 0's
-   assign lsu_addr_d[31:0] = full_addr_d[31:0];
-
-   // Interrupt as a flush source allows the WB to occur
-   assign lsu_commit_r = lsu_pkt_r.valid & (lsu_pkt_r.store | lsu_pkt_r.load) & ~flush_r & ~lsu_pkt_r.dma;
-
-   assign dma_mem_wdata_shifted[63:0] = dma_mem_wdata[63:0] >> {dma_mem_addr[2:0], 3'b000};   // Shift the dma data to lower bits to make it consistent to lsu stores
-   assign store_data_d[31:0] = dma_dccm_req ? dma_mem_wdata_shifted[31:0] : exu_lsu_rs2_d[31:0];  // Write to PIC still happens in r stage
-
-   assign store_data_m_in[31:0] = (lsu_pkt_d.store_data_bypass_d) ? lsu_result_m[31:0] : store_data_d[31:0];
-
-   assign store_data_m[31:0] = (picm_mask_data_m[31:0] | {32{~addr_in_pic_m}}) & ((lsu_pkt_m.store_data_bypass_m) ? lsu_result_m[31:0] : store_data_pre_m[31:0]);
-
-
-   rvdff #(32)  sdmff (.*, .din(store_data_m_in[31:0]), .dout(store_data_pre_m[31:0]),                       .clk(lsu_store_c1_m_clk));
-
-   rvdff #(32) samff (.*, .din(lsu_addr_d[31:0]), .dout(lsu_addr_m[31:0]), .clk(lsu_c1_m_clk));
-   rvdff #(32) sarff (.*, .din(lsu_addr_m[31:0]), .dout(lsu_addr_r[31:0]), .clk(lsu_c1_r_clk));
-
-   assign end_addr_m[31:3] = ldst_dual_m ? end_addr_pre_m[31:3] : lsu_addr_m[31:3];       // This is for power saving
-   assign end_addr_r[31:3] = ldst_dual_r ? end_addr_pre_r[31:3] : lsu_addr_r[31:3];       // This is for power saving
-
-   rvdffe #(29) end_addr_hi_mff (.*, .din(end_addr_d[31:3]), .dout(end_addr_pre_m[31:3]), .en((lsu_pkt_d.valid & ldst_dual_d) | clk_override));
-   rvdffe #(29) end_addr_hi_rff (.*, .din(end_addr_m[31:3]), .dout(end_addr_pre_r[31:3]), .en((lsu_pkt_m.valid & ldst_dual_m) | clk_override));
-
-   rvdff #(3)  end_addr_lo_mff (.*, .din(end_addr_d[2:0]), .dout(end_addr_m[2:0]), .clk(lsu_c1_m_clk));
-   rvdff #(3)  end_addr_lo_rff (.*, .din(end_addr_m[2:0]), .dout(end_addr_r[2:0]), .clk(lsu_c1_r_clk));
-
-   rvdff #(1) addr_in_dccm_mff(.din(addr_in_dccm_d), .dout(addr_in_dccm_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_in_dccm_rff(.din(addr_in_dccm_m), .dout(addr_in_dccm_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) addr_in_pic_mff(.din(addr_in_pic_d), .dout(addr_in_pic_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_in_pic_rff(.din(addr_in_pic_m), .dout(addr_in_pic_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) addr_external_mff(.din(addr_external_d), .dout(addr_external_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_external_rff(.din(addr_external_m), .dout(addr_external_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) access_fault_mff     (.din(access_fault_d),     .dout(access_fault_m),     .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) misaligned_fault_mff (.din(misaligned_fault_d), .dout(misaligned_fault_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(4) exc_mscause_mff      (.din(exc_mscause_d[3:0]), .dout(exc_mscause_m[3:0]), .clk(lsu_c1_m_clk), .*);
-
-   rvdff #(1) fir_dccm_access_error_mff    (.din(fir_dccm_access_error_d),    .dout(fir_dccm_access_error_m),    .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) fir_nondccm_access_error_mff (.din(fir_nondccm_access_error_d), .dout(fir_nondccm_access_error_m), .clk(lsu_c1_m_clk), .*);
-
-   rvdffe #(32) bus_read_data_r_ff (.*, .din(bus_read_data_m[31:0]), .dout(bus_read_data_r[31:0]), .en(addr_external_m | clk_override));
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_stbuf.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu_stbuf.sv
deleted file mode 100644
index 1704a45..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_stbuf.sv
+++ /dev/null
@@ -1,351 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Store Buffer
-// Comments: Dual writes and single drain
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-
-module eb1_lsu_stbuf
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-(
-   input logic                           clk,                         // core clock
-   input logic                           rst_l,                       // reset
-
-   input logic                           lsu_stbuf_c1_clk,            // stbuf clock
-   input logic                           lsu_free_c2_clk,             // free clk
-
-   // Store Buffer input
-   input logic                           store_stbuf_reqvld_r,        // core instruction goes to stbuf
-   input logic                           lsu_commit_r,                // lsu commits
-   input logic                           dec_lsu_valid_raw_d,         // Speculative decode valid
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_hi_r,             // merged data from the dccm for stores. This is used for fwding
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_lo_r,             // merged data from the dccm for stores. This is used for fwding
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_datafn_hi_r,           // merged data from the dccm for stores
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_datafn_lo_r,           // merged data from the dccm for stores
-
-   // Store Buffer output
-   output logic                          stbuf_reqvld_any,            // stbuf is draining
-   output logic                          stbuf_reqvld_flushed_any,    // Top entry is flushed
-   output logic [pt.LSU_SB_BITS-1:0]     stbuf_addr_any,              // address
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_data_any,              // stbuf data
-
-   input  logic                          lsu_stbuf_commit_any,        // pop the stbuf as it commite
-   output logic                          lsu_stbuf_full_any,          // stbuf is full
-   output logic                          lsu_stbuf_empty_any,         // stbuf is empty
-   output logic                          ldst_stbuf_reqvld_r,         // needed for clocking
-
-   input logic [pt.LSU_SB_BITS-1:0]      lsu_addr_d,                  // lsu address D-stage
-   input logic [31:0]                    lsu_addr_m,                  // lsu address M-stage
-   input logic [31:0]                    lsu_addr_r,                  // lsu address R-stage
-
-   input logic [pt.LSU_SB_BITS-1:0]      end_addr_d,                  // lsu end address D-stage - needed to check unaligned
-   input logic [31:0]                    end_addr_m,                  // lsu end address M-stage - needed to check unaligned
-   input logic [31:0]                    end_addr_r,                  // lsu end address R-stage - needed to check unaligned
-
-   input logic                           ldst_dual_d, ldst_dual_m, ldst_dual_r,
-   input logic                           addr_in_dccm_m,              // address is in dccm
-   input logic                           addr_in_dccm_r,              // address is in dccm
-
-   // Forwarding signals
-   input logic                           lsu_cmpen_m,                 // needed for forwarding stbuf - load
-   input eb1_lsu_pkt_t                  lsu_pkt_m,                   // LSU packet M-stage
-   input eb1_lsu_pkt_t                  lsu_pkt_r,                   // LSU packet R-stage
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_hi_m,          // stbuf data
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_lo_m,          // stbuf data
-   output logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_hi_m,        // stbuf data
-   output logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_lo_m,        // stbuf data
-
-   input  logic       scan_mode                                       // Scan mode
-
-);
-
-
-   localparam DEPTH      = pt.LSU_STBUF_DEPTH;
-   localparam DATA_WIDTH = pt.DCCM_DATA_WIDTH;
-   localparam BYTE_WIDTH = pt.DCCM_BYTE_WIDTH;
-   localparam DEPTH_LOG2 = $clog2(DEPTH);
-
-   // These are the fields in the store queue
-   logic [DEPTH-1:0]                     stbuf_vld;
-   logic [DEPTH-1:0]                     stbuf_dma_kill;
-   logic [DEPTH-1:0][pt.LSU_SB_BITS-1:0] stbuf_addr;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0]     stbuf_byteen;
-   logic [DEPTH-1:0][DATA_WIDTH-1:0]     stbuf_data;
-
-   logic [DEPTH-1:0]                     sel_lo;
-   logic [DEPTH-1:0]                     stbuf_wr_en;
-   logic [DEPTH-1:0]                     stbuf_dma_kill_en;
-   logic [DEPTH-1:0]                     stbuf_reset;
-   logic [DEPTH-1:0][pt.LSU_SB_BITS-1:0] stbuf_addrin;
-   logic [DEPTH-1:0][DATA_WIDTH-1:0]     stbuf_datain;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0]     stbuf_byteenin;
-
-   logic [7:0]             store_byteen_ext_r;
-   logic [BYTE_WIDTH-1:0]  store_byteen_hi_r;
-   logic [BYTE_WIDTH-1:0]  store_byteen_lo_r;
-
-   logic                   WrPtrEn, RdPtrEn;
-   logic [DEPTH_LOG2-1:0]  WrPtr, RdPtr;
-   logic [DEPTH_LOG2-1:0]  NxtWrPtr, NxtRdPtr;
-   logic [DEPTH_LOG2-1:0]  WrPtrPlus1, WrPtrPlus2, RdPtrPlus1;
-
-   logic                   dual_stbuf_write_r;
-
-   logic                   isdccmst_m, isdccmst_r;
-   logic [3:0]             stbuf_numvld_any, stbuf_specvld_any;
-   logic [1:0]             stbuf_specvld_m, stbuf_specvld_r;
-
-   logic [pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] cmpaddr_hi_m, cmpaddr_lo_m;
-
-   // variables to detect matching from the store queue
-   logic [DEPTH-1:0]                 stbuf_match_hi, stbuf_match_lo;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0] stbuf_fwdbyteenvec_hi, stbuf_fwdbyteenvec_lo;
-   logic [DATA_WIDTH-1:0]            stbuf_fwddata_hi_pre_m, stbuf_fwddata_lo_pre_m;
-   logic [BYTE_WIDTH-1:0]            stbuf_fwdbyteen_hi_pre_m, stbuf_fwdbyteen_lo_pre_m;
-
-   // logic to detect matching from the pipe - needed for store - load forwarding
-   logic [BYTE_WIDTH-1:0]  ld_byte_rhit_lo_lo, ld_byte_rhit_hi_lo, ld_byte_rhit_lo_hi, ld_byte_rhit_hi_hi;
-   logic                   ld_addr_rhit_lo_lo, ld_addr_rhit_hi_lo, ld_addr_rhit_lo_hi, ld_addr_rhit_hi_hi;
-
-   logic [BYTE_WIDTH-1:0]  ld_byte_hit_lo, ld_byte_rhit_lo;
-   logic [BYTE_WIDTH-1:0]  ld_byte_hit_hi, ld_byte_rhit_hi;
-
-   logic [BYTE_WIDTH-1:0]  ldst_byteen_hi_r;
-   logic [BYTE_WIDTH-1:0]  ldst_byteen_lo_r;
-   // byte_en flowing down
-   logic [7:0]             ldst_byteen_r;
-   logic [7:0]             ldst_byteen_ext_r;
-   // fwd data through the pipe
-   logic [31:0]       ld_fwddata_rpipe_lo;
-   logic [31:0]       ld_fwddata_rpipe_hi;
-
-   // coalescing signals
-   logic [DEPTH-1:0]      store_matchvec_lo_r, store_matchvec_hi_r;
-   logic                  store_coalesce_lo_r, store_coalesce_hi_r;
-
-   //----------------------------------------
-   // Logic starts here
-   //----------------------------------------
-   // Create high/low byte enables
-   assign store_byteen_ext_r[7:0]           = ldst_byteen_r[7:0] << lsu_addr_r[1:0];
-   assign store_byteen_hi_r[BYTE_WIDTH-1:0] = store_byteen_ext_r[7:4] & {4{lsu_pkt_r.store}};
-   assign store_byteen_lo_r[BYTE_WIDTH-1:0] = store_byteen_ext_r[3:0] & {4{lsu_pkt_r.store}};
-
-   assign RdPtrPlus1[DEPTH_LOG2-1:0]     = RdPtr[DEPTH_LOG2-1:0] + 1'b1;
-   assign WrPtrPlus1[DEPTH_LOG2-1:0]     = WrPtr[DEPTH_LOG2-1:0] + 1'b1;
-   assign WrPtrPlus2[DEPTH_LOG2-1:0]     = WrPtr[DEPTH_LOG2-1:0] + 2'b10;
-
-   // ecc error on both hi/lo
-   assign dual_stbuf_write_r   = ldst_dual_r & store_stbuf_reqvld_r;
-   assign ldst_stbuf_reqvld_r  = ((lsu_commit_r | lsu_pkt_r.dma) & store_stbuf_reqvld_r);
-
-  // Store Buffer coalescing
-   for (genvar i=0; i<DEPTH; i++) begin: FindMatchEntry
-       assign store_matchvec_lo_r[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == lsu_addr_r[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & ~stbuf_reset[i];
-       assign store_matchvec_hi_r[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == end_addr_r[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & dual_stbuf_write_r & ~stbuf_reset[i];
-   end: FindMatchEntry
-
-   assign store_coalesce_lo_r = |store_matchvec_lo_r[DEPTH-1:0];
-   assign store_coalesce_hi_r = |store_matchvec_hi_r[DEPTH-1:0];
-
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      // Allocate new in this entry if :
-      // 1. wrptr, single allocate, lo did not coalesce
-      // 2. wrptr, double allocate, lo ^ hi coalesced
-      // 3. wrptr + 1, double alloacte, niether lo or hi coalesced
-      // Also update if there is a hi or a lo coalesce to this entry
-      // Store Buffer instantiation
-      for (genvar i=0; i<DEPTH; i++) begin: GenStBuf
-         assign stbuf_wr_en[i] = ldst_stbuf_reqvld_r & (
-                                   ( (i == WrPtr[DEPTH_LOG2-1:0])      &  ~store_coalesce_lo_r)   |                                                    // Allocate : new Lo
-                                   ( (i == WrPtr[DEPTH_LOG2-1:0])      &  dual_stbuf_write_r & ~store_coalesce_hi_r) |                               // Allocate : only 1 new Write Either
-                                   ( (i == WrPtrPlus1[DEPTH_LOG2-1:0]) &  dual_stbuf_write_r & ~(store_coalesce_lo_r | store_coalesce_hi_r)) |     // Allocate2 : 2 new so Write Hi
-                                   store_matchvec_lo_r[i] | store_matchvec_hi_r[i]);                                                                 // Coalesced Write Lo or Hi
-         assign stbuf_reset[i] = (lsu_stbuf_commit_any | stbuf_reqvld_flushed_any) & (i == RdPtr[DEPTH_LOG2-1:0]);
-
-         // Mux select for start/end address
-         assign sel_lo[i]                         = ((~ldst_dual_r | store_stbuf_reqvld_r) & (i == WrPtr[DEPTH_LOG2-1:0]) & ~store_coalesce_lo_r) |   // lo allocated new entry
-                                                    store_matchvec_lo_r[i];                                                                                                           // lo coalesced in to this entry
-         assign stbuf_addrin[i][pt.LSU_SB_BITS-1:0]  = sel_lo[i] ? lsu_addr_r[pt.LSU_SB_BITS-1:0]       : end_addr_r[pt.LSU_SB_BITS-1:0];
-         assign stbuf_byteenin[i][BYTE_WIDTH-1:0] = sel_lo[i] ? (stbuf_byteen[i][BYTE_WIDTH-1:0] | store_byteen_lo_r[BYTE_WIDTH-1:0])          : (stbuf_byteen[i][BYTE_WIDTH-1:0] | store_byteen_hi_r[BYTE_WIDTH-1:0]);
-         assign stbuf_datain[i][7:0]              = sel_lo[i] ? ((~stbuf_byteen[i][0] | store_byteen_lo_r[0]) ? store_datafn_lo_r[7:0]   : stbuf_data[i][7:0])    :
-                                                                ((~stbuf_byteen[i][0] | store_byteen_hi_r[0]) ? store_datafn_hi_r[7:0]   : stbuf_data[i][7:0]);
-         assign stbuf_datain[i][15:8]             = sel_lo[i] ? ((~stbuf_byteen[i][1] | store_byteen_lo_r[1]) ? store_datafn_lo_r[15:8]  : stbuf_data[i][15:8])    :
-                                                                ((~stbuf_byteen[i][1] | store_byteen_hi_r[1]) ? store_datafn_hi_r[15:8]  : stbuf_data[i][15:8]);
-         assign stbuf_datain[i][23:16]            = sel_lo[i] ? ((~stbuf_byteen[i][2] | store_byteen_lo_r[2]) ? store_datafn_lo_r[23:16] : stbuf_data[i][23:16])    :
-                                                                ((~stbuf_byteen[i][2] | store_byteen_hi_r[2]) ? store_datafn_hi_r[23:16] : stbuf_data[i][23:16]);
-         assign stbuf_datain[i][31:24]            = sel_lo[i] ? ((~stbuf_byteen[i][3] | store_byteen_lo_r[3]) ? store_datafn_lo_r[31:24] : stbuf_data[i][31:24])    :
-                                                                ((~stbuf_byteen[i][3] | store_byteen_hi_r[3]) ? store_datafn_hi_r[31:24] : stbuf_data[i][31:24]);
-
-         rvdffsc #(.WIDTH(1))              stbuf_vldff         (.din(1'b1),                                .dout(stbuf_vld[i]),                      .en(stbuf_wr_en[i]), .clear(stbuf_reset[i]), .clk(lsu_free_c2_clk), .*);
-         rvdffsc #(.WIDTH(1))              stbuf_killff        (.din(1'b1),                                .dout(stbuf_dma_kill[i]),                 .en(stbuf_dma_kill_en[i]), .clear(stbuf_reset[i]), .clk(lsu_free_c2_clk), .*);
-         rvdffe  #(.WIDTH(pt.LSU_SB_BITS)) stbuf_addrff        (.din(stbuf_addrin[i][pt.LSU_SB_BITS-1:0]), .dout(stbuf_addr[i][pt.LSU_SB_BITS-1:0]), .en(stbuf_wr_en[i]), .*);
-         rvdffsc #(.WIDTH(BYTE_WIDTH))     stbuf_byteenff      (.din(stbuf_byteenin[i][BYTE_WIDTH-1:0]),   .dout(stbuf_byteen[i][BYTE_WIDTH-1:0]),   .en(stbuf_wr_en[i]), .clear(stbuf_reset[i]), .clk(lsu_stbuf_c1_clk), .*);
-         rvdffe  #(.WIDTH(DATA_WIDTH))     stbuf_dataff        (.din(stbuf_datain[i][DATA_WIDTH-1:0]),     .dout(stbuf_data[i][DATA_WIDTH-1:0]),     .en(stbuf_wr_en[i]), .*);
-      end
-   end else begin: Gen_dccm_disable
-      assign stbuf_wr_en[DEPTH-1:0] = '0;
-      assign stbuf_reset[DEPTH-1:0] = '0;
-      assign stbuf_vld[DEPTH-1:0]   = '0;
-      assign stbuf_dma_kill[DEPTH-1:0] = '0;
-      assign stbuf_addr[DEPTH-1:0]  = '0;
-      assign stbuf_byteen[DEPTH-1:0] = '0;
-      assign stbuf_data[DEPTH-1:0]   = '0;
-   end
-
-   // Store Buffer drain logic
-   assign stbuf_reqvld_flushed_any            = stbuf_vld[RdPtr] & stbuf_dma_kill[RdPtr];
-   assign stbuf_reqvld_any                    = stbuf_vld[RdPtr] & ~stbuf_dma_kill[RdPtr] & ~(|stbuf_dma_kill_en[DEPTH-1:0]);  // Don't drain if some kill bit is being set this cycle
-   assign stbuf_addr_any[pt.LSU_SB_BITS-1:0]  = stbuf_addr[RdPtr][pt.LSU_SB_BITS-1:0];
-   assign stbuf_data_any[DATA_WIDTH-1:0]      = stbuf_data[RdPtr][DATA_WIDTH-1:0];
-
-   // Update the RdPtr/WrPtr logic
-   // Need to revert the WrPtr for flush cases. Also revert the pipe WrPtrs
-   assign WrPtrEn                  = (ldst_stbuf_reqvld_r  & ~dual_stbuf_write_r & ~(store_coalesce_hi_r | store_coalesce_lo_r))  |  // writing 1 and did not coalesce
-                                     (ldst_stbuf_reqvld_r  &  dual_stbuf_write_r & ~(store_coalesce_hi_r & store_coalesce_lo_r));    // writing 2 and atleast 1 did not coalesce
-   assign NxtWrPtr[DEPTH_LOG2-1:0] = (ldst_stbuf_reqvld_r & dual_stbuf_write_r & ~(store_coalesce_hi_r | store_coalesce_lo_r)) ? WrPtrPlus2[DEPTH_LOG2-1:0] : WrPtrPlus1[DEPTH_LOG2-1:0];
-   assign RdPtrEn                  = lsu_stbuf_commit_any | stbuf_reqvld_flushed_any;
-   assign NxtRdPtr[DEPTH_LOG2-1:0] = RdPtrPlus1[DEPTH_LOG2-1:0];
-
-   always_comb begin
-      stbuf_numvld_any[3:0] = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_numvld_any[3:0] += {3'b0, stbuf_vld[i]};
-      end
-   end
-
-    // These go to store buffer to detect full
-   assign isdccmst_m = lsu_pkt_m.valid & lsu_pkt_m.store & addr_in_dccm_m & ~lsu_pkt_m.dma;
-   assign isdccmst_r = lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_dccm_r & ~lsu_pkt_r.dma;
-
-   assign stbuf_specvld_m[1:0] = {1'b0,isdccmst_m} << (isdccmst_m & ldst_dual_m);
-   assign stbuf_specvld_r[1:0] = {1'b0,isdccmst_r} << (isdccmst_r & ldst_dual_r);
-   assign stbuf_specvld_any[3:0] = stbuf_numvld_any[3:0] +  {2'b0, stbuf_specvld_m[1:0]} + {2'b0, stbuf_specvld_r[1:0]};
-
-   assign lsu_stbuf_full_any  = (~ldst_dual_d & dec_lsu_valid_raw_d) ? (stbuf_specvld_any[3:0] >= DEPTH) : (stbuf_specvld_any[3:0] >= (DEPTH-1));
-   assign lsu_stbuf_empty_any = (stbuf_numvld_any[3:0] == 4'b0);
-
-   // Load forwarding logic from the store queue
-   assign cmpaddr_hi_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] = end_addr_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)];
-
-   assign cmpaddr_lo_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] = lsu_addr_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)];
-
-   always_comb begin: GenLdFwd
-      stbuf_fwdbyteen_hi_pre_m[BYTE_WIDTH-1:0]   = '0;
-      stbuf_fwdbyteen_lo_pre_m[BYTE_WIDTH-1:0]   = '0;
-
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_match_hi[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == cmpaddr_hi_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & addr_in_dccm_m;
-         stbuf_match_lo[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == cmpaddr_lo_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & addr_in_dccm_m;
-
-         // Kill the store buffer entry if there is a dma store since it already updated the dccm
-         stbuf_dma_kill_en[i] = (stbuf_match_hi[i] | stbuf_match_lo[i]) & lsu_pkt_m.valid & lsu_pkt_m.dma & lsu_pkt_m.store;
-
-         for (int j=0; j<BYTE_WIDTH; j++) begin
-            stbuf_fwdbyteenvec_hi[i][j] = stbuf_match_hi[i] & stbuf_byteen[i][j] & stbuf_vld[i];
-            stbuf_fwdbyteen_hi_pre_m[j]  |= stbuf_fwdbyteenvec_hi[i][j];
-
-            stbuf_fwdbyteenvec_lo[i][j] = stbuf_match_lo[i] & stbuf_byteen[i][j] & stbuf_vld[i];
-            stbuf_fwdbyteen_lo_pre_m[j]  |= stbuf_fwdbyteenvec_lo[i][j];
-         end
-      end
-   end // block: GenLdFwd
-
-   always_comb begin: GenLdData
-      stbuf_fwddata_hi_pre_m[31:0]   = '0;
-      stbuf_fwddata_lo_pre_m[31:0]   = '0;
-
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_fwddata_hi_pre_m[31:0] |= {32{stbuf_match_hi[i]}} & stbuf_data[i][31:0];
-         stbuf_fwddata_lo_pre_m[31:0] |= {32{stbuf_match_lo[i]}} & stbuf_data[i][31:0];
-
-      end
-
-   end // block: GenLdData
-
-   // Create Hi/Lo signals - needed for the pipe forwarding
-   assign ldst_byteen_r[7:0] =  ({8{lsu_pkt_r.by}}    & 8'b0000_0001) |
-                                 ({8{lsu_pkt_r.half}}  & 8'b0000_0011) |
-                                 ({8{lsu_pkt_r.word}}  & 8'b0000_1111) |
-                                 ({8{lsu_pkt_r.dword}} & 8'b1111_1111);
-
-   assign ldst_byteen_ext_r[7:0] = ldst_byteen_r[7:0] << lsu_addr_r[1:0];
-
-   assign ldst_byteen_hi_r[3:0]   = ldst_byteen_ext_r[7:4];
-   assign ldst_byteen_lo_r[3:0]   = ldst_byteen_ext_r[3:0];
-
-   assign ld_addr_rhit_lo_lo = (lsu_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma;
-   assign ld_addr_rhit_lo_hi = (end_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma;
-   assign ld_addr_rhit_hi_lo = (lsu_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma & dual_stbuf_write_r;
-   assign ld_addr_rhit_hi_hi = (end_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma & dual_stbuf_write_r;
-
-   for (genvar i=0; i<BYTE_WIDTH; i++) begin
-      assign ld_byte_rhit_lo_lo[i] = ld_addr_rhit_lo_lo & ldst_byteen_lo_r[i];
-      assign ld_byte_rhit_lo_hi[i] = ld_addr_rhit_lo_hi & ldst_byteen_lo_r[i];
-      assign ld_byte_rhit_hi_lo[i] = ld_addr_rhit_hi_lo & ldst_byteen_hi_r[i];
-      assign ld_byte_rhit_hi_hi[i] = ld_addr_rhit_hi_hi & ldst_byteen_hi_r[i];
-
-      assign ld_byte_rhit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_rhit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-       assign ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_lo[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                     ({8{ld_byte_rhit_hi_lo[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-       assign ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_hi[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                     ({8{ld_byte_rhit_hi_hi[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      assign ld_byte_hit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_hit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-      assign stbuf_fwdbyteen_hi_m[i] = ld_byte_hit_hi[i] | stbuf_fwdbyteen_hi_pre_m[i];
-      assign stbuf_fwdbyteen_lo_m[i] = ld_byte_hit_lo[i] | stbuf_fwdbyteen_lo_pre_m[i];
-      // // Pipe vs Store Queue priority
-      assign stbuf_fwddata_lo_m[(8*i)+7:(8*i)] = ld_byte_rhit_lo[i]    ? ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] : stbuf_fwddata_lo_pre_m[(8*i)+7:(8*i)];
-      // // Pipe vs Store Queue priority
-      assign stbuf_fwddata_hi_m[(8*i)+7:(8*i)] = ld_byte_rhit_hi[i]    ? ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] : stbuf_fwddata_hi_pre_m[(8*i)+7:(8*i)];
-   end
-
-   // Flops
-   rvdffs #(.WIDTH(DEPTH_LOG2)) WrPtrff (.din(NxtWrPtr[DEPTH_LOG2-1:0]), .dout(WrPtr[DEPTH_LOG2-1:0]), .en(WrPtrEn), .clk(lsu_stbuf_c1_clk), .*);
-   rvdffs #(.WIDTH(DEPTH_LOG2)) RdPtrff (.din(NxtRdPtr[DEPTH_LOG2-1:0]), .dout(RdPtr[DEPTH_LOG2-1:0]), .en(RdPtrEn), .clk(lsu_stbuf_c1_clk), .*);
-
-`ifdef RV_ASSERT_ON
-
-   assert_stbuf_overflow: assert #0 (stbuf_specvld_any[2:0] <= DEPTH);
-   property stbuf_wren_store_dccm;
-      @(posedge clk)  disable iff(~rst_l) (|stbuf_wr_en[DEPTH-1:0]) |-> (lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_dccm_r);
-   endproperty
-   assert_stbuf_wren_store_dccm: assert property (stbuf_wren_store_dccm) else
-      $display("Illegal store buffer write");
-
-`endif
-
-endmodule
-
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_trigger.sv b/verilog/rtl/BrqRV_EB1/design/eb1_lsu_trigger.sv
deleted file mode 100644
index d3c5058..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_lsu_trigger.sv
+++ /dev/null
@@ -1,68 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: LSU Trigger logic
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_trigger
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   input eb1_trigger_pkt_t [3:0] trigger_pkt_any,            // trigger packet from dec
-   input eb1_lsu_pkt_t           lsu_pkt_m,                  // lsu packet
-   input logic [31:0]             lsu_addr_m,                 // address
-   input logic [31:0]             store_data_m,               // store data
-
-   output logic [3:0]             lsu_trigger_match_m         // match result
-);
-
-   logic               trigger_enable;
-   logic [3:0][31:0]  lsu_match_data;
-   logic [3:0]        lsu_trigger_data_match;
-   logic [31:0]       store_data_trigger_m;
-   logic [31:0]       ldst_addr_trigger_m;
-
-   // Generate the trigger enable (This is for power)
-   always_comb begin
-      trigger_enable = 1'b0;
-      for (int i=0; i<4; i++) begin
-         trigger_enable |= trigger_pkt_any[i].m;
-      end
-   end
-
-   assign store_data_trigger_m[31:0] = {({16{lsu_pkt_m.word}} & store_data_m[31:16]),({8{(lsu_pkt_m.half | lsu_pkt_m.word)}} & store_data_m[15:8]), store_data_m[7:0]} & {32{trigger_enable}};
-   assign ldst_addr_trigger_m[31:0]  = lsu_addr_m[31:0] & {32{trigger_enable}};
-
-
-   for (genvar i=0; i<4; i++) begin
-      assign lsu_match_data[i][31:0] = ({32{~trigger_pkt_any[i].select}} & ldst_addr_trigger_m[31:0]) |
-                                       ({32{trigger_pkt_any[i].select & trigger_pkt_any[i].store}} & store_data_trigger_m[31:0]);
-
-      rvmaskandmatch trigger_match (.mask(trigger_pkt_any[i].tdata2[31:0]), .data(lsu_match_data[i][31:0]), .masken(trigger_pkt_any[i].match), .match(lsu_trigger_data_match[i]));
-
-      assign lsu_trigger_match_m[i] = lsu_pkt_m.valid & ~lsu_pkt_m.dma & trigger_enable &
-                                        ((trigger_pkt_any[i].store & lsu_pkt_m.store) | (trigger_pkt_any[i].load & lsu_pkt_m.load & ~trigger_pkt_any[i].select)) &
-                                        lsu_trigger_data_match[i];
-   end
-
-
-endmodule // eb1_lsu_trigger
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_mem.sv b/verilog/rtl/BrqRV_EB1/design/eb1_mem.sv
deleted file mode 100644
index fb3024a..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_mem.sv
+++ /dev/null
@@ -1,142 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-module eb1_mem
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-(
-
-   input logic         vccd1,
-   input logic		vssd1,
-   input logic         clk,
-   input logic         rst_l,
-   input logic         dccm_clk_override,
-   input logic         icm_clk_override,
-   input logic         dec_tlu_core_ecc_disable,
-
-   //DCCM ports
-   input logic         dccm_wren,
-   input logic         dccm_rden,
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_lo,
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_hi,
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_lo,
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_hi,
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,
-
-
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_lo,
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_hi,
-
-//`ifdef pt.DCCM_ENABLE
-   input eb1_dccm_ext_in_pkt_t  [pt.DCCM_NUM_BANKS-1:0] dccm_ext_in_pkt,
-
-//`endif
-
-   //ICCM ports
-   input eb1_ccm_ext_in_pkt_t   [pt.ICCM_NUM_BANKS-1:0]  iccm_ext_in_pkt,
-
-   input logic [pt.ICCM_BITS-1:1]  iccm_rw_addr,
-   input logic                                        iccm_buf_correct_ecc,                    // ICCM is doing a single bit error correct cycle
-   input logic                                        iccm_correction_state,               // ICCM is doing a single bit error correct cycle
-   input logic         iccm_wren,
-   input logic         iccm_rden,
-   input logic [2:0]   iccm_wr_size,
-   input logic [77:0]  iccm_wr_data,
-
-   output logic [63:0] iccm_rd_data,
-   output logic [77:0] iccm_rd_data_ecc,
-
-   // Icache and Itag Ports
-
-   input  logic [31:1]  ic_rw_addr,
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]   ic_tag_valid,
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]   ic_wr_en,
-   input  logic         ic_rd_en,
-   input  logic [63:0] ic_premux_data,      // Premux data to be muxed with each way of the Icache.
-   input  logic         ic_sel_premux_data, // Premux data sel
-   input eb1_ic_data_ext_in_pkt_t   [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]         ic_data_ext_in_pkt,
-   input eb1_ic_tag_ext_in_pkt_t    [pt.ICACHE_NUM_WAYS-1:0]           ic_tag_ext_in_pkt,
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0][70:0]               ic_wr_data,         // Data to fill to the Icache. With ECC
-   input  logic [70:0]               ic_debug_wr_data,   // Debug wr cache.
-   output logic [70:0]               ic_debug_rd_data ,  // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   input  logic                      ic_debug_rd_en,     // Icache debug rd
-   input  logic                      ic_debug_wr_en,     // Icache debug wr
-   input  logic                      ic_debug_tag_array, // Debug tag array
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-   output logic [63:0]              ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   output logic [25:0]               ictag_debug_rd_data,// Debug icache tag.
-
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    // ecc error per bank
-   output logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,          // parity error per bank
-   output logic [pt.ICACHE_NUM_WAYS-1:0]   ic_rd_hit,
-   output logic         ic_tag_perr,        // Icache Tag parity error
-
-
-   input  logic         scan_mode
-
-);
-
-   logic active_clk;
-   rvoclkhdr active_cg   ( .en(1'b1),         .l1clk(active_clk), .* );
-
-   // DCCM Instantiation
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      eb1_lsu_dccm_mem #(.pt(pt)) dccm (
-         .clk_override(dccm_clk_override),
-         .*
-      );
-   end else begin: Gen_dccm_disable
-      assign dccm_rd_data_lo = '0;
-      assign dccm_rd_data_hi = '0;
-   end
-
-if ( pt.ICACHE_ENABLE ) begin: icache
-   eb1_ifu_ic_mem #(.pt(pt)) icm  (
-      .clk_override(icm_clk_override),
-      .*
-   );
-end
-else  begin
-   assign   ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0] = '0;
-   assign   ic_tag_perr    = '0 ;
-   assign   ic_rd_data  = '0 ;
-   assign   ictag_debug_rd_data  = '0 ;
-end // else: !if( pt.ICACHE_ENABLE )
-
-
-
-if (pt.ICCM_ENABLE) begin : iccm
-   eb1_ifu_iccm_mem  #(.pt(pt)) iccm (.*,
-                  .clk_override(icm_clk_override),
-                  .iccm_rw_addr(iccm_rw_addr[pt.ICCM_BITS-1:1]),
-                  .iccm_rd_data(iccm_rd_data[63:0])
-                   );
-end
-else  begin
-   assign  iccm_rd_data    = '0 ;
-   assign iccm_rd_data_ecc = '0 ;
-end
-
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_param.vh b/verilog/rtl/BrqRV_EB1/design/eb1_param.vh
deleted file mode 100644
index 77adbc4..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_param.vh
+++ /dev/null
@@ -1,175 +0,0 @@
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-}
-// parameter eb1_param_t pt = 2271'h0404020000E0200000000000008081000030400040081E090B040100060210C00000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC103020401C213840103C3C01000000040818428042010840830C2010281840200081002008E0C0801004040800C01002100400606810104100C080C080200810A0AFFFF00000102101800000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF8001080C080818080007806000003C043C04003E02008084021
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_pdef.vh b/verilog/rtl/BrqRV_EB1/design/eb1_pdef.vh
deleted file mode 100644
index af6de1e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_pdef.vh
+++ /dev/null
@@ -1,175 +0,0 @@
-typedef struct packed {
-	bit [7:0]      BHT_ADDR_HI;
-	bit [5:0]      BHT_ADDR_LO;
-	bit [14:0]     BHT_ARRAY_DEPTH;
-	bit [4:0]      BHT_GHR_HASH_1;
-	bit [7:0]      BHT_GHR_SIZE;
-	bit [15:0]     BHT_SIZE;
-	bit [4:0]      BITMANIP_ZBA;
-	bit [4:0]      BITMANIP_ZBB;
-	bit [4:0]      BITMANIP_ZBC;
-	bit [4:0]      BITMANIP_ZBE;
-	bit [4:0]      BITMANIP_ZBF;
-	bit [4:0]      BITMANIP_ZBP;
-	bit [4:0]      BITMANIP_ZBR;
-	bit [4:0]      BITMANIP_ZBS;
-	bit [8:0]      BTB_ADDR_HI;
-	bit [5:0]      BTB_ADDR_LO;
-	bit [12:0]     BTB_ARRAY_DEPTH;
-	bit [4:0]      BTB_BTAG_FOLD;
-	bit [8:0]      BTB_BTAG_SIZE;
-	bit [4:0]      BTB_ENABLE;
-	bit [4:0]      BTB_FOLD2_INDEX_HASH;
-	bit [4:0]      BTB_FULLYA;
-	bit [8:0]      BTB_INDEX1_HI;
-	bit [8:0]      BTB_INDEX1_LO;
-	bit [8:0]      BTB_INDEX2_HI;
-	bit [8:0]      BTB_INDEX2_LO;
-	bit [8:0]      BTB_INDEX3_HI;
-	bit [8:0]      BTB_INDEX3_LO;
-	bit [13:0]     BTB_SIZE;
-	bit [8:0]      BTB_TOFFSET_SIZE;
-	bit            BUILD_AHB_LITE;
-	bit [4:0]      BUILD_AXI4;
-	bit [4:0]      BUILD_AXI_NATIVE;
-	bit [5:0]      BUS_PRTY_DEFAULT;
-	bit [35:0]     DATA_ACCESS_ADDR0;
-	bit [35:0]     DATA_ACCESS_ADDR1;
-	bit [35:0]     DATA_ACCESS_ADDR2;
-	bit [35:0]     DATA_ACCESS_ADDR3;
-	bit [35:0]     DATA_ACCESS_ADDR4;
-	bit [35:0]     DATA_ACCESS_ADDR5;
-	bit [35:0]     DATA_ACCESS_ADDR6;
-	bit [35:0]     DATA_ACCESS_ADDR7;
-	bit [4:0]      DATA_ACCESS_ENABLE0;
-	bit [4:0]      DATA_ACCESS_ENABLE1;
-	bit [4:0]      DATA_ACCESS_ENABLE2;
-	bit [4:0]      DATA_ACCESS_ENABLE3;
-	bit [4:0]      DATA_ACCESS_ENABLE4;
-	bit [4:0]      DATA_ACCESS_ENABLE5;
-	bit [4:0]      DATA_ACCESS_ENABLE6;
-	bit [4:0]      DATA_ACCESS_ENABLE7;
-	bit [35:0]     DATA_ACCESS_MASK0;
-	bit [35:0]     DATA_ACCESS_MASK1;
-	bit [35:0]     DATA_ACCESS_MASK2;
-	bit [35:0]     DATA_ACCESS_MASK3;
-	bit [35:0]     DATA_ACCESS_MASK4;
-	bit [35:0]     DATA_ACCESS_MASK5;
-	bit [35:0]     DATA_ACCESS_MASK6;
-	bit [35:0]     DATA_ACCESS_MASK7;
-	bit [6:0]      DCCM_BANK_BITS;
-	bit [8:0]      DCCM_BITS;
-	bit [6:0]      DCCM_BYTE_WIDTH;
-	bit [9:0]      DCCM_DATA_WIDTH;
-	bit [6:0]      DCCM_ECC_WIDTH;
-	bit [4:0]      DCCM_ENABLE;
-	bit [9:0]      DCCM_FDATA_WIDTH;
-	bit [7:0]      DCCM_INDEX_BITS;
-	bit [8:0]      DCCM_NUM_BANKS;
-	bit [7:0]      DCCM_REGION;
-	bit [35:0]     DCCM_SADR;
-	bit [13:0]     DCCM_SIZE;
-	bit [5:0]      DCCM_WIDTH_BITS;
-	bit [6:0]      DIV_BIT;
-	bit [4:0]      DIV_NEW;
-	bit [6:0]      DMA_BUF_DEPTH;
-	bit [8:0]      DMA_BUS_ID;
-	bit [5:0]      DMA_BUS_PRTY;
-	bit [7:0]      DMA_BUS_TAG;
-	bit [4:0]      FAST_INTERRUPT_REDIRECT;
-	bit [4:0]      ICACHE_2BANKS;
-	bit [6:0]      ICACHE_BANK_BITS;
-	bit [6:0]      ICACHE_BANK_HI;
-	bit [5:0]      ICACHE_BANK_LO;
-	bit [7:0]      ICACHE_BANK_WIDTH;
-	bit [6:0]      ICACHE_BANKS_WAY;
-	bit [7:0]      ICACHE_BEAT_ADDR_HI;
-	bit [7:0]      ICACHE_BEAT_BITS;
-	bit [4:0]      ICACHE_BYPASS_ENABLE;
-	bit [17:0]     ICACHE_DATA_DEPTH;
-	bit [6:0]      ICACHE_DATA_INDEX_LO;
-	bit [10:0]     ICACHE_DATA_WIDTH;
-	bit [4:0]      ICACHE_ECC;
-	bit [4:0]      ICACHE_ENABLE;
-	bit [10:0]     ICACHE_FDATA_WIDTH;
-	bit [8:0]      ICACHE_INDEX_HI;
-	bit [10:0]     ICACHE_LN_SZ;
-	bit [7:0]      ICACHE_NUM_BEATS;
-	bit [7:0]      ICACHE_NUM_BYPASS;
-	bit [7:0]      ICACHE_NUM_BYPASS_WIDTH;
-	bit [6:0]      ICACHE_NUM_WAYS;
-	bit [4:0]      ICACHE_ONLY;
-	bit [7:0]      ICACHE_SCND_LAST;
-	bit [12:0]     ICACHE_SIZE;
-	bit [6:0]      ICACHE_STATUS_BITS;
-	bit [4:0]      ICACHE_TAG_BYPASS_ENABLE;
-	bit [16:0]     ICACHE_TAG_DEPTH;
-	bit [6:0]      ICACHE_TAG_INDEX_LO;
-	bit [8:0]      ICACHE_TAG_LO;
-	bit [7:0]      ICACHE_TAG_NUM_BYPASS;
-	bit [7:0]      ICACHE_TAG_NUM_BYPASS_WIDTH;
-	bit [4:0]      ICACHE_WAYPACK;
-	bit [6:0]      ICCM_BANK_BITS;
-	bit [8:0]      ICCM_BANK_HI;
-	bit [8:0]      ICCM_BANK_INDEX_LO;
-	bit [8:0]      ICCM_BITS;
-	bit [4:0]      ICCM_ENABLE;
-	bit [4:0]      ICCM_ICACHE;
-	bit [7:0]      ICCM_INDEX_BITS;
-	bit [8:0]      ICCM_NUM_BANKS;
-	bit [4:0]      ICCM_ONLY;
-	bit [7:0]      ICCM_REGION;
-	bit [35:0]     ICCM_SADR;
-	bit [13:0]     ICCM_SIZE;
-	bit [4:0]      IFU_BUS_ID;
-	bit [5:0]      IFU_BUS_PRTY;
-	bit [7:0]      IFU_BUS_TAG;
-	bit [35:0]     INST_ACCESS_ADDR0;
-	bit [35:0]     INST_ACCESS_ADDR1;
-	bit [35:0]     INST_ACCESS_ADDR2;
-	bit [35:0]     INST_ACCESS_ADDR3;
-	bit [35:0]     INST_ACCESS_ADDR4;
-	bit [35:0]     INST_ACCESS_ADDR5;
-	bit [35:0]     INST_ACCESS_ADDR6;
-	bit [35:0]     INST_ACCESS_ADDR7;
-	bit [4:0]      INST_ACCESS_ENABLE0;
-	bit [4:0]      INST_ACCESS_ENABLE1;
-	bit [4:0]      INST_ACCESS_ENABLE2;
-	bit [4:0]      INST_ACCESS_ENABLE3;
-	bit [4:0]      INST_ACCESS_ENABLE4;
-	bit [4:0]      INST_ACCESS_ENABLE5;
-	bit [4:0]      INST_ACCESS_ENABLE6;
-	bit [4:0]      INST_ACCESS_ENABLE7;
-	bit [35:0]     INST_ACCESS_MASK0;
-	bit [35:0]     INST_ACCESS_MASK1;
-	bit [35:0]     INST_ACCESS_MASK2;
-	bit [35:0]     INST_ACCESS_MASK3;
-	bit [35:0]     INST_ACCESS_MASK4;
-	bit [35:0]     INST_ACCESS_MASK5;
-	bit [35:0]     INST_ACCESS_MASK6;
-	bit [35:0]     INST_ACCESS_MASK7;
-	bit [4:0]      LOAD_TO_USE_PLUS1;
-	bit [4:0]      LSU2DMA;
-	bit [4:0]      LSU_BUS_ID;
-	bit [5:0]      LSU_BUS_PRTY;
-	bit [7:0]      LSU_BUS_TAG;
-	bit [8:0]      LSU_NUM_NBLOAD;
-	bit [6:0]      LSU_NUM_NBLOAD_WIDTH;
-	bit [8:0]      LSU_SB_BITS;
-	bit [7:0]      LSU_STBUF_DEPTH;
-	bit [4:0]      NO_ICCM_NO_ICACHE;
-	bit [4:0]      PIC_2CYCLE;
-	bit [35:0]     PIC_BASE_ADDR;
-	bit [8:0]      PIC_BITS;
-	bit [7:0]      PIC_INT_WORDS;
-	bit [7:0]      PIC_REGION;
-	bit [12:0]     PIC_SIZE;
-	bit [11:0]     PIC_TOTAL_INT;
-	bit [12:0]     PIC_TOTAL_INT_PLUS1;
-	bit [7:0]      RET_STACK_SIZE;
-	bit [4:0]      SB_BUS_ID;
-	bit [5:0]      SB_BUS_PRTY;
-	bit [7:0]      SB_BUS_TAG;
-	bit [4:0]      TIMER_LEGAL_EN;
-} eb1_param_t;
-
diff --git a/verilog/rtl/BrqRV_EB1/design/eb1_pic_ctrl.sv b/verilog/rtl/BrqRV_EB1/design/eb1_pic_ctrl.sv
deleted file mode 100644
index 5608da4..0000000
--- a/verilog/rtl/BrqRV_EB1/design/eb1_pic_ctrl.sv
+++ /dev/null
@@ -1,640 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Programmable Interrupt Controller
-// Comments:
-//********************************************************************************
-
-module eb1_pic_ctrl #(
-`include "eb1_param.vh"
- )
-                  (
-
-                     input  logic                   clk,                  // Core clock
-                     input  logic                   free_clk,             // free clock
-                     input  logic                   rst_l,                // Reset for all flops
-                     input  logic                   clk_override,         // Clock over-ride for gating
-                     input  logic                   io_clk_override,      // PIC IO  Clock over-ride for gating
-                     input  logic [pt.PIC_TOTAL_INT_PLUS1-1:0]   extintsrc_req,  // Interrupt requests
-                     input  logic [31:0]            picm_rdaddr,          // Address of the register
-                     input  logic [31:0]            picm_wraddr,          // Address of the register
-                     input  logic [31:0]            picm_wr_data,         // Data to be written to the register
-                     input  logic                   picm_wren,            // Write enable to the register
-                     input  logic                   picm_rden,            // Read enable for the register
-                     input  logic                   picm_mken,            // Read the Mask for the register
-                     input  logic [3:0]             meicurpl,             // Current Priority Level
-                     input  logic [3:0]             meipt,                // Current Priority Threshold
-
-                     output logic                   mexintpend,           // External Inerrupt request to the core
-                     output logic [7:0]             claimid,              // Claim Id of the requested interrupt
-                     output logic [3:0]             pl,                   // Priority level of the requested interrupt
-                     output logic [31:0]            picm_rd_data,         // Read data of the register
-                     output logic                   mhwakeup,             // Wake-up interrupt request
-                     input  logic                   scan_mode             // scan mode
-
-);
-
-localparam NUM_LEVELS            = $clog2(pt.PIC_TOTAL_INT_PLUS1);
-localparam INTPRIORITY_BASE_ADDR = pt.PIC_BASE_ADDR ;
-localparam INTPEND_BASE_ADDR     = pt.PIC_BASE_ADDR + 32'h00001000 ;
-localparam INTENABLE_BASE_ADDR   = pt.PIC_BASE_ADDR + 32'h00002000 ;
-localparam EXT_INTR_PIC_CONFIG   = pt.PIC_BASE_ADDR + 32'h00003000 ;
-localparam EXT_INTR_GW_CONFIG    = pt.PIC_BASE_ADDR + 32'h00004000 ;
-localparam EXT_INTR_GW_CLEAR     = pt.PIC_BASE_ADDR + 32'h00005000 ;
-
-
-localparam INTPEND_SIZE          = (pt.PIC_TOTAL_INT_PLUS1 < 32)  ? 32  :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 64)  ? 64  :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 128) ? 128 :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 256) ? 256 :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 512) ? 512 :  1024 ;
-
-localparam INT_GRPS              =   INTPEND_SIZE / 32 ;
-localparam INTPRIORITY_BITS      =  4 ;
-localparam ID_BITS               =  8 ;
-localparam int GW_CONFIG[pt.PIC_TOTAL_INT_PLUS1-1:0] = '{default:0} ;
-
-localparam INT_ENABLE_GRPS       =   (pt.PIC_TOTAL_INT_PLUS1 - 1)  / 4 ;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]           intenable_clk_enable ;
-logic [INT_ENABLE_GRPS:0]                    intenable_clk_enable_grp ;
-logic [INT_ENABLE_GRPS:0]                    gw_clk ;
-
-logic  addr_intpend_base_match;
-
-logic  raddr_config_pic_match ;
-logic  raddr_intenable_base_match;
-logic  raddr_intpriority_base_match;
-logic  raddr_config_gw_base_match ;
-
-logic  waddr_config_pic_match ;
-logic  waddr_intpriority_base_match;
-logic  waddr_intenable_base_match;
-logic  waddr_config_gw_base_match ;
-logic  addr_clear_gw_base_match ;
-
-logic  mexintpend_in;
-logic  mhwakeup_in ;
-logic  intpend_reg_read ;
-
-logic [31:0]                                 picm_rd_data_in, intpend_rd_out;
-logic                                        intenable_rd_out ;
-logic [INTPRIORITY_BITS-1:0]                 intpriority_rd_out;
-logic [1:0]                                  gw_config_rd_out;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [INTPRIORITY_BITS-1:0] intpriority_reg;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [INTPRIORITY_BITS-1:0] intpriority_reg_inv;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intpriority_reg_we;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intpriority_reg_re;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [1:0]                  gw_config_reg;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intenable_reg;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intenable_reg_we;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intenable_reg_re;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        gw_config_reg_we;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        gw_config_reg_re;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        gw_clear_reg_we;
-
-logic [INTPEND_SIZE-1:0]                     intpend_reg_extended;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [INTPRIORITY_BITS-1:0] intpend_w_prior_en;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [ID_BITS-1:0]          intpend_id;
-logic [INTPRIORITY_BITS-1:0]                 maxint;
-logic [INTPRIORITY_BITS-1:0]                 selected_int_priority;
-logic [INT_GRPS-1:0] [31:0]                  intpend_rd_part_out ;
-
-logic                                        config_reg;
-logic                                        intpriord;
-logic                                        config_reg_we ;
-logic                                        config_reg_re ;
-logic                                        config_reg_in ;
-logic                                        prithresh_reg_write , prithresh_reg_read;
-logic                                        intpriority_reg_read ;
-logic                                        intenable_reg_read   ;
-logic                                        gw_config_reg_read   ;
-logic                                        picm_wren_ff , picm_rden_ff ;
-logic [31:0]                                 picm_raddr_ff;
-logic [31:0]                                 picm_waddr_ff;
-logic [31:0]                                 picm_wr_data_ff;
-logic [3:0]                                  mask;
-logic                                        picm_mken_ff;
-logic [ID_BITS-1:0]                          claimid_in ;
-logic [INTPRIORITY_BITS-1:0]                 pl_in ;
-logic [INTPRIORITY_BITS-1:0]                 pl_in_q ;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        extintsrc_req_sync;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        extintsrc_req_gw;
-   logic                                                  picm_bypass_ff;
-
-// clkens
-   logic                                     pic_raddr_c1_clken;
-   logic                                     pic_waddr_c1_clken;
-   logic                                     pic_data_c1_clken;
-   logic                                     pic_pri_c1_clken;
-   logic                                     pic_int_c1_clken;
-   logic                                     gw_config_c1_clken;
-
-// clocks
-   logic                                     pic_raddr_c1_clk;
-   logic                                     pic_data_c1_clk;
-   logic                                     pic_pri_c1_clk;
-   logic                                     pic_int_c1_clk;
-   logic                                     gw_config_c1_clk;
-
-// ---- Clock gating section ------
-// c1 clock enables
-   assign pic_raddr_c1_clken  = picm_mken | picm_rden | clk_override;
-   assign pic_data_c1_clken   = picm_wren | clk_override;
-   assign pic_pri_c1_clken    = (waddr_intpriority_base_match & picm_wren_ff)  | (raddr_intpriority_base_match & picm_rden_ff) | clk_override;
-   assign pic_int_c1_clken    = (waddr_intenable_base_match   & picm_wren_ff)  | (raddr_intenable_base_match   & picm_rden_ff) | clk_override;
-   assign gw_config_c1_clken  = (waddr_config_gw_base_match   & picm_wren_ff)  | (raddr_config_gw_base_match   & picm_rden_ff) | clk_override;
-
-   // C1 - 1 clock pulse for data
-   rvoclkhdr pic_addr_c1_cgc   ( .en(pic_raddr_c1_clken),  .l1clk(pic_raddr_c1_clk), .* );
-   rvoclkhdr pic_data_c1_cgc   ( .en(pic_data_c1_clken),   .l1clk(pic_data_c1_clk), .* );
-   rvoclkhdr pic_pri_c1_cgc    ( .en(pic_pri_c1_clken),    .l1clk(pic_pri_c1_clk),  .* );
-   rvoclkhdr pic_int_c1_cgc    ( .en(pic_int_c1_clken),    .l1clk(pic_int_c1_clk),  .* );
-   rvoclkhdr gw_config_c1_cgc  ( .en(gw_config_c1_clken),  .l1clk(gw_config_c1_clk),  .* );
-
-// ------ end clock gating section ------------------------
-
-assign raddr_intenable_base_match   = (picm_raddr_ff[31:NUM_LEVELS+2] == INTENABLE_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign raddr_intpriority_base_match = (picm_raddr_ff[31:NUM_LEVELS+2] == INTPRIORITY_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign raddr_config_gw_base_match   = (picm_raddr_ff[31:NUM_LEVELS+2] == EXT_INTR_GW_CONFIG[31:NUM_LEVELS+2]) ;
-assign raddr_config_pic_match       = (picm_raddr_ff[31:0]            == EXT_INTR_PIC_CONFIG[31:0]) ;
-
-assign addr_intpend_base_match      = (picm_raddr_ff[31:6]            == INTPEND_BASE_ADDR[31:6]) ;
-
-assign waddr_config_pic_match       = (picm_waddr_ff[31:0]            == EXT_INTR_PIC_CONFIG[31:0]) ;
-assign addr_clear_gw_base_match     = (picm_waddr_ff[31:NUM_LEVELS+2] == EXT_INTR_GW_CLEAR[31:NUM_LEVELS+2]) ;
-assign waddr_intpriority_base_match = (picm_waddr_ff[31:NUM_LEVELS+2] == INTPRIORITY_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign waddr_intenable_base_match   = (picm_waddr_ff[31:NUM_LEVELS+2] == INTENABLE_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign waddr_config_gw_base_match   = (picm_waddr_ff[31:NUM_LEVELS+2] == EXT_INTR_GW_CONFIG[31:NUM_LEVELS+2]) ;
-
-   assign picm_bypass_ff = picm_rden_ff & picm_wren_ff & ( picm_raddr_ff[31:0] == picm_waddr_ff[31:0] );    // pic writes and reads to same address together
-
-
-rvdff #(32) picm_radd_flop  (.*, .din (picm_rdaddr),        .dout(picm_raddr_ff),         .clk(pic_raddr_c1_clk));
-rvdff #(32) picm_wadd_flop  (.*, .din (picm_wraddr),        .dout(picm_waddr_ff),         .clk(pic_data_c1_clk));
-rvdff  #(1) picm_wre_flop   (.*, .din (picm_wren),          .dout(picm_wren_ff),          .clk(free_clk));
-rvdff  #(1) picm_rde_flop   (.*, .din (picm_rden),          .dout(picm_rden_ff),          .clk(free_clk));
-rvdff  #(1) picm_mke_flop   (.*, .din (picm_mken),          .dout(picm_mken_ff),          .clk(free_clk));
-rvdff #(32) picm_dat_flop   (.*, .din (picm_wr_data[31:0]), .dout(picm_wr_data_ff[31:0]), .clk(pic_data_c1_clk));
-
-
-genvar p ;
-for (p=0; p<=INT_ENABLE_GRPS ; p++) begin  : IO_CLK_GRP
-   if (p==INT_ENABLE_GRPS) begin : LAST_GRP
-       assign intenable_clk_enable_grp[p] = |intenable_clk_enable[pt.PIC_TOTAL_INT_PLUS1-1 : p*4] | io_clk_override;
-       rvoclkhdr intenable_c1_cgc   ( .en(intenable_clk_enable_grp[p]),  .l1clk(gw_clk[p]), .* );
-   end else begin :  CLK_GRPS
-       assign intenable_clk_enable_grp[p] = |intenable_clk_enable[p*4+3 : p*4] | io_clk_override;
-       rvoclkhdr intenable_c1_cgc   ( .en(intenable_clk_enable_grp[p]),  .l1clk(gw_clk[p]), .* );
-   end
-end
-
-
-
-genvar i ;
-for (i=0; i<pt.PIC_TOTAL_INT_PLUS1 ; i++) begin  : SETREG
-
- if (i > 0 ) begin : NON_ZERO_INT
-     assign intpriority_reg_we[i] =  waddr_intpriority_base_match & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff;
-     assign intpriority_reg_re[i] =  raddr_intpriority_base_match & (picm_raddr_ff[NUM_LEVELS+1:2] == i) & picm_rden_ff;
-
-     assign intenable_reg_we[i]   =  waddr_intenable_base_match   & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff;
-     assign intenable_reg_re[i]   =  raddr_intenable_base_match   & (picm_raddr_ff[NUM_LEVELS+1:2] == i) & picm_rden_ff;
-
-     assign gw_config_reg_we[i]   =  waddr_config_gw_base_match   & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff;
-     assign gw_config_reg_re[i]   =  raddr_config_gw_base_match   & (picm_raddr_ff[NUM_LEVELS+1:2] == i) & picm_rden_ff;
-
-     assign gw_clear_reg_we[i]    =  addr_clear_gw_base_match     & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff ;
-
-     rvdffs #(INTPRIORITY_BITS) intpriority_ff  (.*, .en( intpriority_reg_we[i]), .din (picm_wr_data_ff[INTPRIORITY_BITS-1:0]), .dout(intpriority_reg[i]), .clk(pic_pri_c1_clk));
-     rvdffs #(1)                 intenable_ff   (.*, .en( intenable_reg_we[i]),   .din (picm_wr_data_ff[0]),                    .dout(intenable_reg[i]),   .clk(pic_int_c1_clk));
-
-     assign intenable_clk_enable[i]  =  gw_config_reg[i][1] | intenable_reg_we[i] | intenable_reg[i] | gw_clear_reg_we[i] ;
-
-     rvsyncss_fpga  #(1) sync_inst
-     (
-      .gw_clk      (gw_clk[i/4]),
-      .rawclk      (clk),
-      .clken       (intenable_clk_enable_grp[i/4]),
-      .dout        (extintsrc_req_sync[i]),
-      .din         (extintsrc_req[i]),
-      .*) ;
-
-
-
-//     if (GW_CONFIG[i]) begin
-
-        rvdffs #(2)                 gw_config_ff   (.*, .en( gw_config_reg_we[i]),   .din (picm_wr_data_ff[1:0]),                  .dout(gw_config_reg[i]),   .clk(gw_config_c1_clk));
-
-        eb1_configurable_gw config_gw_inst(.*,
-                                            .gw_clk(gw_clk[i/4]),
-                                            .rawclk(clk),
-                                            .clken (intenable_clk_enable_grp[i/4]),
-                                            .extintsrc_req_sync(extintsrc_req_sync[i]) ,
-                                            .meigwctrl_polarity(gw_config_reg[i][0]) ,
-                                            .meigwctrl_type(gw_config_reg[i][1]) ,
-                                            .meigwclr(gw_clear_reg_we[i]) ,
-                                            .extintsrc_req_config(extintsrc_req_gw[i])
-                                            );
-
- end else begin : INT_ZERO
-     assign intpriority_reg_we[i] =  1'b0 ;
-     assign intpriority_reg_re[i] =  1'b0 ;
-     assign intenable_reg_we[i]   =  1'b0 ;
-     assign intenable_reg_re[i]   =  1'b0 ;
-
-     assign gw_config_reg_we[i]   =  1'b0 ;
-     assign gw_config_reg_re[i]   =  1'b0 ;
-     assign gw_clear_reg_we[i]    =  1'b0 ;
-
-     assign gw_config_reg[i]    = '0 ;
-
-     assign intpriority_reg[i] = {INTPRIORITY_BITS{1'b0}} ;
-     assign intenable_reg[i]   = 1'b0 ;
-     assign extintsrc_req_gw[i] = 1'b0 ;
-     assign extintsrc_req_sync[i]    = 1'b0 ;
-     assign intenable_clk_enable[i] = 1'b0;
- end
-
-
-    assign intpriority_reg_inv[i] =  intpriord ? ~intpriority_reg[i] : intpriority_reg[i] ;
-
-    assign intpend_w_prior_en[i]  =  {INTPRIORITY_BITS{(extintsrc_req_gw[i] & intenable_reg[i])}} & intpriority_reg_inv[i] ;
-    assign intpend_id[i]          =  i ;
-end
-
-
-        assign pl_in[INTPRIORITY_BITS-1:0]                  =      selected_int_priority[INTPRIORITY_BITS-1:0] ;
-
-
- genvar l, m , j, k;
-
-if (pt.PIC_2CYCLE == 1) begin : genblock
-        logic [NUM_LEVELS/2:0] [pt.PIC_TOTAL_INT_PLUS1+2:0] [INTPRIORITY_BITS-1:0] level_intpend_w_prior_en;
-        logic [NUM_LEVELS/2:0] [pt.PIC_TOTAL_INT_PLUS1+2:0] [ID_BITS-1:0]          level_intpend_id;
-        logic [NUM_LEVELS:NUM_LEVELS/2] [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0] [INTPRIORITY_BITS-1:0] levelx_intpend_w_prior_en;
-        logic [NUM_LEVELS:NUM_LEVELS/2] [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0] [ID_BITS-1:0]          levelx_intpend_id;
-
-        assign level_intpend_w_prior_en[0][pt.PIC_TOTAL_INT_PLUS1+2:0] = {4'b0,4'b0,4'b0,intpend_w_prior_en[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-        assign level_intpend_id[0][pt.PIC_TOTAL_INT_PLUS1+2:0]         = {8'b0,8'b0,8'b0,intpend_id[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-
-        logic [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0] [INTPRIORITY_BITS-1:0] l2_intpend_w_prior_en_ff;
-        logic [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0] [ID_BITS-1:0]          l2_intpend_id_ff;
-
-        assign levelx_intpend_w_prior_en[NUM_LEVELS/2][(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0] = {{1*INTPRIORITY_BITS{1'b0}},l2_intpend_w_prior_en_ff[(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0]} ;
-        assign levelx_intpend_id[NUM_LEVELS/2][(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0]         = {{1*ID_BITS{1'b1}},l2_intpend_id_ff[(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0]} ;
-///  Do the prioritization of the interrupts here  ////////////
- for (l=0; l<NUM_LEVELS/2 ; l++) begin : TOP_LEVEL
-    for (m=0; m<=(pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1)) ; m++) begin : COMPARE
-       if ( m == (pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1))) begin
-            assign level_intpend_w_prior_en[l+1][m+1] = '0 ;
-            assign level_intpend_id[l+1][m+1]         = '0 ;
-       end
-       eb1_cmp_and_mux  #(.ID_BITS(ID_BITS),
-                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l1 (
-                      .a_id(level_intpend_id[l][2*m]),
-                      .a_priority(level_intpend_w_prior_en[l][2*m]),
-                      .b_id(level_intpend_id[l][2*m+1]),
-                      .b_priority(level_intpend_w_prior_en[l][2*m+1]),
-                      .out_id(level_intpend_id[l+1][m]),
-                      .out_priority(level_intpend_w_prior_en[l+1][m])) ;
-
-    end
- end
-
-        for (i=0; i<=pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2) ; i++) begin : MIDDLE_FLOPS
-          rvdff #(INTPRIORITY_BITS) leveb1_intpend_prior_reg  (.*, .din (level_intpend_w_prior_en[NUM_LEVELS/2][i]), .dout(l2_intpend_w_prior_en_ff[i]),  .clk(free_clk));
-          rvdff #(ID_BITS)          leveb1_intpend_id_reg     (.*, .din (level_intpend_id[NUM_LEVELS/2][i]),         .dout(l2_intpend_id_ff[i]),          .clk(free_clk));
-        end
-
- for (j=NUM_LEVELS/2; j<NUM_LEVELS ; j++) begin : BOT_LEVELS
-    for (k=0; k<=(pt.PIC_TOTAL_INT_PLUS1)/(2**(j+1)) ; k++) begin : COMPARE
-       if ( k == (pt.PIC_TOTAL_INT_PLUS1)/(2**(j+1))) begin
-            assign levelx_intpend_w_prior_en[j+1][k+1] = '0 ;
-            assign levelx_intpend_id[j+1][k+1]         = '0 ;
-       end
-            eb1_cmp_and_mux  #(.ID_BITS(ID_BITS),
-                        .INTPRIORITY_BITS(INTPRIORITY_BITS))
-                 cmp_l1 (
-                        .a_id(levelx_intpend_id[j][2*k]),
-                        .a_priority(levelx_intpend_w_prior_en[j][2*k]),
-                        .b_id(levelx_intpend_id[j][2*k+1]),
-                        .b_priority(levelx_intpend_w_prior_en[j][2*k+1]),
-                        .out_id(levelx_intpend_id[j+1][k]),
-                        .out_priority(levelx_intpend_w_prior_en[j+1][k])) ;
-    end
-  end
-        assign claimid_in[ID_BITS-1:0]                      =      levelx_intpend_id[NUM_LEVELS][0] ;   // This is the last level output
-        assign selected_int_priority[INTPRIORITY_BITS-1:0]  =      levelx_intpend_w_prior_en[NUM_LEVELS][0] ;
-end
-else begin : genblock
-
-        logic [NUM_LEVELS:0] [pt.PIC_TOTAL_INT_PLUS1+1:0] [INTPRIORITY_BITS-1:0] level_intpend_w_prior_en;
-        logic [NUM_LEVELS:0] [pt.PIC_TOTAL_INT_PLUS1+1:0] [ID_BITS-1:0]          level_intpend_id;
-
-        assign level_intpend_w_prior_en[0][pt.PIC_TOTAL_INT_PLUS1+1:0] = {{2*INTPRIORITY_BITS{1'b0}},intpend_w_prior_en[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-        assign level_intpend_id[0][pt.PIC_TOTAL_INT_PLUS1+1:0] = {{2*ID_BITS{1'b1}},intpend_id[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-
-///  Do the prioritization of the interrupts here  ////////////
-// genvar l, m , j, k;  already declared outside ifdef
- for (l=0; l<NUM_LEVELS ; l++) begin : LEVEL
-    for (m=0; m<=(pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1)) ; m++) begin : COMPARE
-       if ( m == (pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1))) begin
-            assign level_intpend_w_prior_en[l+1][m+1] = '0 ;
-            assign level_intpend_id[l+1][m+1]         = '0 ;
-       end
-       eb1_cmp_and_mux  #(.ID_BITS(ID_BITS),
-                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l1 (
-                      .a_id(level_intpend_id[l][2*m]),
-                      .a_priority(level_intpend_w_prior_en[l][2*m]),
-                      .b_id(level_intpend_id[l][2*m+1]),
-                      .b_priority(level_intpend_w_prior_en[l][2*m+1]),
-                      .out_id(level_intpend_id[l+1][m]),
-                      .out_priority(level_intpend_w_prior_en[l+1][m])) ;
-
-    end
- end
-        assign claimid_in[ID_BITS-1:0]                      =      level_intpend_id[NUM_LEVELS][0] ;   // This is the last level output
-        assign selected_int_priority[INTPRIORITY_BITS-1:0]  =      level_intpend_w_prior_en[NUM_LEVELS][0] ;
-
-end
-
-
-
-///////////////////////////////////////////////////////////////////////
-// Config Reg`
-///////////////////////////////////////////////////////////////////////
-assign config_reg_we               =  waddr_config_pic_match & picm_wren_ff;
-assign config_reg_re               =  raddr_config_pic_match & picm_rden_ff;
-
-assign config_reg_in  =  picm_wr_data_ff[0] ;   //
-rvdffs #(1) config_reg_ff  (.*, .clk(free_clk), .en(config_reg_we), .din (config_reg_in), .dout(config_reg));
-
-assign intpriord  = config_reg ;
-
-
-
-//////////////////////////////////////////////////////////////////////////
-// Send the interrupt to the core if it is above the thresh-hold
-//////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////
-/// ClaimId  Reg and Corresponding PL
-///////////////////////////////////////////////////////////
-//
-assign pl_in_q[INTPRIORITY_BITS-1:0] = intpriord ? ~pl_in : pl_in ;
-rvdff #(ID_BITS)          claimid_ff  (.*,  .din (claimid_in[ID_BITS-1:00]),     .dout(claimid[ID_BITS-1:00]),    .clk(free_clk));
-rvdff  #(INTPRIORITY_BITS) pl_ff      (.*, .din (pl_in_q[INTPRIORITY_BITS-1:0]), .dout(pl[INTPRIORITY_BITS-1:0]), .clk(free_clk));
-
-logic [INTPRIORITY_BITS-1:0] meipt_inv , meicurpl_inv ;
-assign meipt_inv[INTPRIORITY_BITS-1:0]    = intpriord ? ~meipt[INTPRIORITY_BITS-1:0]    : meipt[INTPRIORITY_BITS-1:0] ;
-assign meicurpl_inv[INTPRIORITY_BITS-1:0] = intpriord ? ~meicurpl[INTPRIORITY_BITS-1:0] : meicurpl[INTPRIORITY_BITS-1:0] ;
-assign mexintpend_in = (( selected_int_priority[INTPRIORITY_BITS-1:0] > meipt_inv[INTPRIORITY_BITS-1:0]) &
-                        ( selected_int_priority[INTPRIORITY_BITS-1:0] > meicurpl_inv[INTPRIORITY_BITS-1:0]) );
-rvdff #(1) mexintpend_ff  (.*, .clk(free_clk), .din (mexintpend_in), .dout(mexintpend));
-
-assign maxint[INTPRIORITY_BITS-1:0]      =  intpriord ? 0 : 15 ;
-assign mhwakeup_in = ( pl_in_q[INTPRIORITY_BITS-1:0] == maxint) ;
-rvdff #(1) wake_up_ff  (.*, .clk(free_clk), .din (mhwakeup_in), .dout(mhwakeup));
-
-
-
-
-
-//////////////////////////////////////////////////////////////////////////
-//  Reads of register.
-//  1- intpending
-//////////////////////////////////////////////////////////////////////////
-
-assign intpend_reg_read     =  addr_intpend_base_match      & picm_rden_ff ;
-assign intpriority_reg_read =  raddr_intpriority_base_match & picm_rden_ff;
-assign intenable_reg_read   =  raddr_intenable_base_match   & picm_rden_ff;
-assign gw_config_reg_read   =  raddr_config_gw_base_match   & picm_rden_ff;
-
-assign intpend_reg_extended[INTPEND_SIZE-1:0]  = {{INTPEND_SIZE-pt.PIC_TOTAL_INT_PLUS1{1'b0}},extintsrc_req_gw[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-
-   for (i=0; i<(INT_GRPS); i++) begin
-            assign intpend_rd_part_out[i] =  (({32{intpend_reg_read & picm_raddr_ff[5:2] == i}}) & intpend_reg_extended[((32*i)+31):(32*i)]) ;
-   end
-
-   always_comb begin : INTPEND_RD
-         intpend_rd_out =  '0 ;
-         for (int i=0; i<INT_GRPS; i++) begin
-               intpend_rd_out |=  intpend_rd_part_out[i] ;
-         end
-   end
-
-   always_comb begin : INTEN_RD
-         intenable_rd_out =  '0 ;
-         intpriority_rd_out =  '0 ;
-         gw_config_rd_out =  '0 ;
-         for (int i=0; i<pt.PIC_TOTAL_INT_PLUS1; i++) begin
-              if (intenable_reg_re[i]) begin
-               intenable_rd_out    =  intenable_reg[i]  ;
-              end
-              if (intpriority_reg_re[i]) begin
-               intpriority_rd_out  =  intpriority_reg[i] ;
-              end
-              if (gw_config_reg_re[i]) begin
-               gw_config_rd_out  =  gw_config_reg[i] ;
-              end
-         end
-   end
-
-
- assign picm_rd_data_in[31:0] = ({32{intpend_reg_read      }} &   intpend_rd_out                                                    ) |
-                                ({32{intpriority_reg_read  }} &  {{32-INTPRIORITY_BITS{1'b0}}, intpriority_rd_out                 } ) |
-                                ({32{intenable_reg_read    }} &  {31'b0 , intenable_rd_out                                        } ) |
-                                ({32{gw_config_reg_read    }} &  {30'b0 , gw_config_rd_out                                        } ) |
-                                ({32{config_reg_re         }} &  {31'b0 , config_reg                                              } ) |
-                                ({32{picm_mken_ff & mask[3]}} &  {30'b0 , 2'b11                                                   } ) |
-                                ({32{picm_mken_ff & mask[2]}} &  {31'b0 , 1'b1                                                    } ) |
-                                ({32{picm_mken_ff & mask[1]}} &  {28'b0 , 4'b1111                                                 } ) |
-                                ({32{picm_mken_ff & mask[0]}} &   32'b0                                                             ) ;
-
-
-assign picm_rd_data[31:0] = picm_bypass_ff ? picm_wr_data_ff[31:0] : picm_rd_data_in[31:0] ;
-
-logic [14:0] address;
-
-assign address[14:0] = picm_raddr_ff[14:0];
-
-// mask[3:0] = { 4'b1000 - 30b mask,4'b0100 - 31b mask, 4'b0010 - 28b mask, 4'b0001 - 32b mask }
-always_comb begin
-  case (address[14:0])
-    15'b011000000000000 : mask[3:0] = 4'b0100;
-    15'b100000000000100 : mask[3:0] = 4'b1000;
-    15'b100000000001000 : mask[3:0] = 4'b1000;
-    15'b100000000001100 : mask[3:0] = 4'b1000;
-    15'b100000000010000 : mask[3:0] = 4'b1000;
-    15'b100000000010100 : mask[3:0] = 4'b1000;
-    15'b100000000011000 : mask[3:0] = 4'b1000;
-    15'b100000000011100 : mask[3:0] = 4'b1000;
-    15'b100000000100000 : mask[3:0] = 4'b1000;
-    15'b100000000100100 : mask[3:0] = 4'b1000;
-    15'b100000000101000 : mask[3:0] = 4'b1000;
-    15'b100000000101100 : mask[3:0] = 4'b1000;
-    15'b100000000110000 : mask[3:0] = 4'b1000;
-    15'b100000000110100 : mask[3:0] = 4'b1000;
-    15'b100000000111000 : mask[3:0] = 4'b1000;
-    15'b100000000111100 : mask[3:0] = 4'b1000;
-    15'b100000001000000 : mask[3:0] = 4'b1000;
-    15'b100000001000100 : mask[3:0] = 4'b1000;
-    15'b100000001001000 : mask[3:0] = 4'b1000;
-    15'b100000001001100 : mask[3:0] = 4'b1000;
-    15'b100000001010000 : mask[3:0] = 4'b1000;
-    15'b100000001010100 : mask[3:0] = 4'b1000;
-    15'b100000001011000 : mask[3:0] = 4'b1000;
-    15'b100000001011100 : mask[3:0] = 4'b1000;
-    15'b100000001100000 : mask[3:0] = 4'b1000;
-    15'b100000001100100 : mask[3:0] = 4'b1000;
-    15'b100000001101000 : mask[3:0] = 4'b1000;
-    15'b100000001101100 : mask[3:0] = 4'b1000;
-    15'b100000001110000 : mask[3:0] = 4'b1000;
-    15'b100000001110100 : mask[3:0] = 4'b1000;
-    15'b100000001111000 : mask[3:0] = 4'b1000;
-    15'b100000001111100 : mask[3:0] = 4'b1000;
-    15'b010000000000100 : mask[3:0] = 4'b0100;
-    15'b010000000001000 : mask[3:0] = 4'b0100;
-    15'b010000000001100 : mask[3:0] = 4'b0100;
-    15'b010000000010000 : mask[3:0] = 4'b0100;
-    15'b010000000010100 : mask[3:0] = 4'b0100;
-    15'b010000000011000 : mask[3:0] = 4'b0100;
-    15'b010000000011100 : mask[3:0] = 4'b0100;
-    15'b010000000100000 : mask[3:0] = 4'b0100;
-    15'b010000000100100 : mask[3:0] = 4'b0100;
-    15'b010000000101000 : mask[3:0] = 4'b0100;
-    15'b010000000101100 : mask[3:0] = 4'b0100;
-    15'b010000000110000 : mask[3:0] = 4'b0100;
-    15'b010000000110100 : mask[3:0] = 4'b0100;
-    15'b010000000111000 : mask[3:0] = 4'b0100;
-    15'b010000000111100 : mask[3:0] = 4'b0100;
-    15'b010000001000000 : mask[3:0] = 4'b0100;
-    15'b010000001000100 : mask[3:0] = 4'b0100;
-    15'b010000001001000 : mask[3:0] = 4'b0100;
-    15'b010000001001100 : mask[3:0] = 4'b0100;
-    15'b010000001010000 : mask[3:0] = 4'b0100;
-    15'b010000001010100 : mask[3:0] = 4'b0100;
-    15'b010000001011000 : mask[3:0] = 4'b0100;
-    15'b010000001011100 : mask[3:0] = 4'b0100;
-    15'b010000001100000 : mask[3:0] = 4'b0100;
-    15'b010000001100100 : mask[3:0] = 4'b0100;
-    15'b010000001101000 : mask[3:0] = 4'b0100;
-    15'b010000001101100 : mask[3:0] = 4'b0100;
-    15'b010000001110000 : mask[3:0] = 4'b0100;
-    15'b010000001110100 : mask[3:0] = 4'b0100;
-    15'b010000001111000 : mask[3:0] = 4'b0100;
-    15'b010000001111100 : mask[3:0] = 4'b0100;
-    15'b000000000000100 : mask[3:0] = 4'b0010;
-    15'b000000000001000 : mask[3:0] = 4'b0010;
-    15'b000000000001100 : mask[3:0] = 4'b0010;
-    15'b000000000010000 : mask[3:0] = 4'b0010;
-    15'b000000000010100 : mask[3:0] = 4'b0010;
-    15'b000000000011000 : mask[3:0] = 4'b0010;
-    15'b000000000011100 : mask[3:0] = 4'b0010;
-    15'b000000000100000 : mask[3:0] = 4'b0010;
-    15'b000000000100100 : mask[3:0] = 4'b0010;
-    15'b000000000101000 : mask[3:0] = 4'b0010;
-    15'b000000000101100 : mask[3:0] = 4'b0010;
-    15'b000000000110000 : mask[3:0] = 4'b0010;
-    15'b000000000110100 : mask[3:0] = 4'b0010;
-    15'b000000000111000 : mask[3:0] = 4'b0010;
-    15'b000000000111100 : mask[3:0] = 4'b0010;
-    15'b000000001000000 : mask[3:0] = 4'b0010;
-    15'b000000001000100 : mask[3:0] = 4'b0010;
-    15'b000000001001000 : mask[3:0] = 4'b0010;
-    15'b000000001001100 : mask[3:0] = 4'b0010;
-    15'b000000001010000 : mask[3:0] = 4'b0010;
-    15'b000000001010100 : mask[3:0] = 4'b0010;
-    15'b000000001011000 : mask[3:0] = 4'b0010;
-    15'b000000001011100 : mask[3:0] = 4'b0010;
-    15'b000000001100000 : mask[3:0] = 4'b0010;
-    15'b000000001100100 : mask[3:0] = 4'b0010;
-    15'b000000001101000 : mask[3:0] = 4'b0010;
-    15'b000000001101100 : mask[3:0] = 4'b0010;
-    15'b000000001110000 : mask[3:0] = 4'b0010;
-    15'b000000001110100 : mask[3:0] = 4'b0010;
-    15'b000000001111000 : mask[3:0] = 4'b0010;
-    15'b000000001111100 : mask[3:0] = 4'b0010;
-    default           : mask[3:0] = 4'b0001;
-  endcase
-end
-
-endmodule
-
-
-module eb1_cmp_and_mux #(parameter ID_BITS=8,
-                               INTPRIORITY_BITS = 4)
-                    (
-                        input  logic [ID_BITS-1:0]       a_id,
-                        input  logic [INTPRIORITY_BITS-1:0] a_priority,
-
-                        input  logic [ID_BITS-1:0]       b_id,
-                        input  logic [INTPRIORITY_BITS-1:0] b_priority,
-
-                        output logic [ID_BITS-1:0]       out_id,
-                        output logic [INTPRIORITY_BITS-1:0] out_priority
-
-                    );
-
-logic   a_is_lt_b ;
-
-assign  a_is_lt_b  = ( a_priority[INTPRIORITY_BITS-1:0] < b_priority[INTPRIORITY_BITS-1:0] ) ;
-
-assign  out_id[ID_BITS-1:0]                = a_is_lt_b ? b_id[ID_BITS-1:0] :
-                                                         a_id[ID_BITS-1:0] ;
-assign  out_priority[INTPRIORITY_BITS-1:0] = a_is_lt_b ? b_priority[INTPRIORITY_BITS-1:0] :
-                                                         a_priority[INTPRIORITY_BITS-1:0] ;
-endmodule // cmp_and_mux
-
-
-module eb1_configurable_gw (
-                             input logic gw_clk,
-                             input logic rawclk,
-                             input logic clken,
-                             input logic rst_l,
-                             input logic extintsrc_req_sync ,
-                             input logic meigwctrl_polarity ,
-                             input logic meigwctrl_type ,
-                             input logic meigwclr ,
-
-                             output logic extintsrc_req_config
-                            );
-
-
-  logic  gw_int_pending_in , gw_int_pending ;
-
-  assign gw_int_pending_in =  (extintsrc_req_sync ^ meigwctrl_polarity) | (gw_int_pending & ~meigwclr) ;
-  rvdff_fpga #(1) int_pend_ff        (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (gw_int_pending_in),     .dout(gw_int_pending));
-
-
-  assign extintsrc_req_config =  meigwctrl_type ? ((extintsrc_req_sync ^  meigwctrl_polarity) | gw_int_pending) : (extintsrc_req_sync ^  meigwctrl_polarity) ;
-
-endmodule // configurable_gw
-
-
-
-
-
-
-
-
-
diff --git a/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu.sv b/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu.sv
deleted file mode 100644
index 5df586a..0000000
--- a/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu.sv
+++ /dev/null
@@ -1,369 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
-)
-  (
-   input logic          clk,                                           // Top level clock
-   input logic          rst_l,                                         // Reset
-   input logic          scan_mode,                                     // Scan control
-
-   input logic  [1:0]   dec_data_en,                                   // Clock enable {x,r}, one cycle pulse
-   input logic  [1:0]   dec_ctl_en,                                    // Clock enable {x,r}, two cycle pulse
-   input logic  [31:0]  dbg_cmd_wrdata,                                // Debug data   to primary I0 RS1
-   input eb1_alu_pkt_t i0_ap,                                         // DEC alu {valid,predecodes}
-
-   input logic          dec_debug_wdata_rs1_d,                         // Debug select to primary I0 RS1
-
-   input eb1_predict_pkt_t dec_i0_predict_p_d,                        // DEC branch predict packet
-   input logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d,                // DEC predict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d,     // DEC predict index
-   input logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d,               // DEC predict branch tag
-
-   input logic  [31:0]  lsu_result_m,                                  // Load result M-stage
-   input logic  [31:0]  lsu_nonblock_load_data,                        // nonblock load data
-   input logic          dec_i0_rs1_en_d,                               // Qualify GPR RS1 data
-   input logic          dec_i0_rs2_en_d,                               // Qualify GPR RS2 data
-   input logic  [31:0]  gpr_i0_rs1_d,                                  // DEC data gpr
-   input logic  [31:0]  gpr_i0_rs2_d,                                  // DEC data gpr
-   input logic  [31:0]  dec_i0_immed_d,                                // DEC data immediate
-   input logic  [31:0]  dec_i0_result_r,                               // DEC result in R-stage
-   input logic  [12:1]  dec_i0_br_immed_d,                             // Branch immediate
-   input logic          dec_i0_alu_decode_d,                           // Valid to X-stage ALU
-   input logic          dec_i0_branch_d,                               // Branch in D-stage
-   input logic          dec_i0_select_pc_d,                            // PC select to RS1
-   input logic  [31:1]  dec_i0_pc_d,                                   // Instruction PC
-   input logic  [3:0]   dec_i0_rs1_bypass_en_d,                        // DEC bypass select  1 - X-stage, 0 - dec bypass data
-   input logic  [3:0]   dec_i0_rs2_bypass_en_d,                        // DEC bypass select  1 - X-stage, 0 - dec bypass data
-   input logic          dec_csr_ren_d,                                 // CSR read select
-   input logic  [31:0]  dec_csr_rddata_d,                              // CSR read data
-
-   input logic          dec_qual_lsu_d,                                // LSU instruction at D.  Use to quiet LSU operands
-   input eb1_mul_pkt_t mul_p,                                         // DEC {valid, operand signs, low, operand bypass}
-   input eb1_div_pkt_t div_p,                                         // DEC {valid, unsigned, rem}
-   input logic          dec_div_cancel,                                // Cancel the divide operation
-
-   input logic  [31:1]  pred_correct_npc_x,                            // DEC NPC for correctly predicted branch
-
-   input logic          dec_tlu_flush_lower_r,                         // Flush divide and secondary ALUs
-   input logic  [31:1]  dec_tlu_flush_path_r,                          // Redirect target
-
-
-   input logic         dec_extint_stall,                               // External stall mux select
-   input logic [31:2]  dec_tlu_meihap,                                 // External stall mux data
-
-
-   output logic [31:0]  exu_lsu_rs1_d,                                 // LSU operand
-   output logic [31:0]  exu_lsu_rs2_d,                                 // LSU operand
-
-   output logic         exu_flush_final,                               // Pipe is being flushed this cycle
-   output logic [31:1]  exu_flush_path_final,                          // Target for the oldest flush source
-
-   output logic [31:0]  exu_i0_result_x,                               // Primary ALU result to DEC
-   output logic [31:1]  exu_i0_pc_x,                                   // Primary PC  result to DEC
-   output logic [31:0]  exu_csr_rs1_x,                                 // RS1 source for a CSR instruction
-
-   output logic [31:1]  exu_npc_r,                                     // Divide NPC
-   output logic [1:0]   exu_i0_br_hist_r,                              // to DEC  I0 branch history
-   output logic         exu_i0_br_error_r,                             // to DEC  I0 branch error
-   output logic         exu_i0_br_start_error_r,                       // to DEC  I0 branch start error
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r,     // to DEC  I0 branch index
-   output logic         exu_i0_br_valid_r,                             // to DEC  I0 branch valid
-   output logic         exu_i0_br_mp_r,                                // to DEC  I0 branch mispredict
-   output logic         exu_i0_br_middle_r,                            // to DEC  I0 branch middle
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_i0_br_fghr_r,               // to DEC  I0 branch fghr
-   output logic         exu_i0_br_way_r,                               // to DEC  I0 branch way
-
-   output eb1_predict_pkt_t exu_mp_pkt,                               // Mispredict branch packet
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_eghr,                    // Mispredict global history
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   output logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-
-   output logic         exu_pmu_i0_br_misp,                            // to PMU - I0 E4 branch mispredict
-   output logic         exu_pmu_i0_br_ataken,                          // to PMU - I0 E4 taken
-   output logic         exu_pmu_i0_pc4,                                // to PMU - I0 E4 PC
-
-
-   output logic [31:0]  exu_div_result,                                // Divide result
-   output logic         exu_div_wren                                   // Divide write enable to GPR
-  );
-
-
-
-
-   logic [31:0]                i0_rs1_bypass_data_d;
-   logic [31:0]                i0_rs2_bypass_data_d;
-   logic                       i0_rs1_bypass_en_d;
-   logic                       i0_rs2_bypass_en_d;
-   logic [31:0]                i0_rs1_d,  i0_rs2_d;
-   logic [31:0]                muldiv_rs1_d;
-   logic [31:1]                pred_correct_npc_r;
-   logic                       i0_pred_correct_upper_r;
-   logic [31:1]                i0_flush_path_upper_r;
-   logic                       x_data_en, x_data_en_q1, x_data_en_q2, r_data_en, r_data_en_q2;
-   logic                       x_ctl_en,  r_ctl_en;
-
-   logic [pt.BHT_GHR_SIZE-1:0] ghr_d_ns, ghr_d;
-   logic [pt.BHT_GHR_SIZE-1:0] ghr_x_ns, ghr_x;
-   logic                       i0_taken_d;
-   logic                       i0_taken_x;
-   logic                       i0_valid_d;
-   logic                       i0_valid_x;
-   logic [pt.BHT_GHR_SIZE-1:0] after_flush_eghr;
-
-   eb1_predict_pkt_t          final_predict_mp;
-   eb1_predict_pkt_t          i0_predict_newp_d;
-
-   logic                       flush_in_d;
-   logic [31:0]                alu_result_x;
-
-   logic                       mul_valid_x;
-   logic [31:0]                mul_result_x;
-
-   eb1_predict_pkt_t          i0_pp_r;
-
-   logic                       i0_flush_upper_d;
-   logic [31:1]                i0_flush_path_d;
-   eb1_predict_pkt_t          i0_predict_p_d;
-   logic                       i0_pred_correct_upper_d;
-
-   logic                       i0_flush_upper_x;
-   logic [31:1]                i0_flush_path_x;
-   eb1_predict_pkt_t          i0_predict_p_x;
-   logic                       i0_pred_correct_upper_x;
-   logic                       i0_branch_x;
-
-   localparam PREDPIPESIZE = pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1+pt.BHT_GHR_SIZE+pt.BTB_BTAG_SIZE;
-   logic [PREDPIPESIZE-1:0]    predpipe_d, predpipe_x, predpipe_r, final_predpipe_mp;
-
-
-
-
-   rvdffpcie #(31)                       i_flush_path_x_ff    (.*, .clk(clk),        .en ( x_data_en     ),  .din ( i0_flush_path_d[31:1]         ),  .dout( i0_flush_path_x[31:1]      ) );
-   rvdffe #(32)                          i_csr_rs1_x_ff       (.*, .clk(clk),        .en ( x_data_en_q1  ),  .din ( i0_rs1_d[31:0]                ),  .dout( exu_csr_rs1_x[31:0]        ) );
-   rvdffppe #($bits(eb1_predict_pkt_t)) i_predictpacket_x_ff (.*, .clk(clk),        .en ( x_data_en     ),  .din ( i0_predict_p_d                ),  .dout( i0_predict_p_x             ) );
-   rvdffe #(PREDPIPESIZE)                i_predpipe_x_ff      (.*, .clk(clk),        .en ( x_data_en_q2  ),  .din ( predpipe_d                    ),  .dout( predpipe_x                 ) );
-   rvdffe #(PREDPIPESIZE)                i_predpipe_r_ff      (.*, .clk(clk),        .en ( r_data_en_q2  ),  .din ( predpipe_x                    ),  .dout( predpipe_r                 ) );
-
-   rvdffe #(4+pt.BHT_GHR_SIZE)          i_x_ff               (.*, .clk(clk),        .en ( x_ctl_en      ),  .din ({i0_valid_d,i0_taken_d,i0_flush_upper_d,i0_pred_correct_upper_d,ghr_x_ns[pt.BHT_GHR_SIZE-1:0]} ),
-                                                                                                            .dout({i0_valid_x,i0_taken_x,i0_flush_upper_x,i0_pred_correct_upper_x,ghr_x[pt.BHT_GHR_SIZE-1:0]}    ) );
-
-   rvdffppe #($bits(eb1_predict_pkt_t)+1) i_r_ff0         (.*, .clk(clk),        .en ( r_ctl_en      ),  .din ({i0_pred_correct_upper_x, i0_predict_p_x}),
-                                                                                                          .dout({i0_pred_correct_upper_r, i0_pp_r       }) );
-
-   rvdffpcie #(31)                      i_flush_r_ff         (.*, .clk(clk),        .en ( r_data_en     ),  .din ( i0_flush_path_x[31:1]         ),  .dout( i0_flush_path_upper_r[31:1]) );
-   rvdffpcie #(31)                      i_npc_r_ff           (.*, .clk(clk),        .en ( r_data_en     ),  .din ( pred_correct_npc_x[31:1]      ),  .dout( pred_correct_npc_r[31:1]   ) );
-
-   rvdffie #(pt.BHT_GHR_SIZE+2,1)       i_misc_ff            (.*, .clk(clk),                                .din ({ghr_d_ns[pt.BHT_GHR_SIZE-1:0], mul_p.valid, dec_i0_branch_d}),
-                                                                                                            .dout({ghr_d[pt.BHT_GHR_SIZE-1:0]   , mul_valid_x, i0_branch_x}) );
-
-
-
-
-
-   assign predpipe_d[PREDPIPESIZE-1:0]
-                                   = {i0_predict_fghr_d, i0_predict_index_d, i0_predict_btag_d};
-
-
-   assign i0_rs1_bypass_en_d       = dec_i0_rs1_bypass_en_d[0] | dec_i0_rs1_bypass_en_d[1] | dec_i0_rs1_bypass_en_d[2] | dec_i0_rs1_bypass_en_d[3];
-   assign i0_rs2_bypass_en_d       = dec_i0_rs2_bypass_en_d[0] | dec_i0_rs2_bypass_en_d[1] | dec_i0_rs2_bypass_en_d[2] | dec_i0_rs2_bypass_en_d[3];
-
-   assign i0_rs1_bypass_data_d[31:0]=({32{dec_i0_rs1_bypass_en_d[0]}} & dec_i0_result_r[31:0]       ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[1]}} & lsu_result_m[31:0]          ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[2]}} & exu_i0_result_x[31:0]       ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[3]}} & lsu_nonblock_load_data[31:0]);
-
-   assign i0_rs2_bypass_data_d[31:0]=({32{dec_i0_rs2_bypass_en_d[0]}} & dec_i0_result_r[31:0]       ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[1]}} & lsu_result_m[31:0]          ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[2]}} & exu_i0_result_x[31:0]       ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[3]}} & lsu_nonblock_load_data[31:0]);
-
-
-   assign i0_rs1_d[31:0]           = ({32{ i0_rs1_bypass_en_d                                           }}             & i0_rs1_bypass_data_d[31:0]) |
-                                     ({32{~i0_rs1_bypass_en_d &  dec_i0_select_pc_d                     }}             & {dec_i0_pc_d[31:1],1'b0}  ) |    // for jal's
-                                     ({32{~i0_rs1_bypass_en_d &  dec_debug_wdata_rs1_d                  }}             & dbg_cmd_wrdata[31:0]      ) |
-                                     ({32{~i0_rs1_bypass_en_d & ~dec_debug_wdata_rs1_d & dec_i0_rs1_en_d}}             & gpr_i0_rs1_d[31:0]        );
-
-   assign i0_rs2_d[31:0]           = ({32{~i0_rs2_bypass_en_d & dec_i0_rs2_en_d}}                                      & gpr_i0_rs2_d[31:0]        ) |
-                                     ({32{~i0_rs2_bypass_en_d                  }}                                      & dec_i0_immed_d[31:0]      ) |
-                                     ({32{ i0_rs2_bypass_en_d                  }}                                      & i0_rs2_bypass_data_d[31:0]);
-
-
-   assign exu_lsu_rs1_d[31:0]      = ({32{~i0_rs1_bypass_en_d & ~dec_extint_stall & dec_i0_rs1_en_d & dec_qual_lsu_d}} & gpr_i0_rs1_d[31:0]        ) |
-                                     ({32{ i0_rs1_bypass_en_d & ~dec_extint_stall                   & dec_qual_lsu_d}} & i0_rs1_bypass_data_d[31:0]) |
-                                     ({32{                       dec_extint_stall                   & dec_qual_lsu_d}} & {dec_tlu_meihap[31:2],2'b0});
-
-   assign exu_lsu_rs2_d[31:0]      = ({32{~i0_rs2_bypass_en_d & ~dec_extint_stall & dec_i0_rs2_en_d & dec_qual_lsu_d}} & gpr_i0_rs2_d[31:0]        ) |
-                                     ({32{ i0_rs2_bypass_en_d & ~dec_extint_stall                   & dec_qual_lsu_d}} & i0_rs2_bypass_data_d[31:0]);
-
-
-   assign muldiv_rs1_d[31:0]       = ({32{~i0_rs1_bypass_en_d & dec_i0_rs1_en_d}}                                      & gpr_i0_rs1_d[31:0]        ) |
-                                     ({32{ i0_rs1_bypass_en_d                  }}                                      & i0_rs1_bypass_data_d[31:0]);
-
-
-   assign x_data_en                =  dec_data_en[1];
-   assign x_data_en_q1             =  dec_data_en[1] & dec_csr_ren_d;
-   assign x_data_en_q2             =  dec_data_en[1] & dec_i0_branch_d;
-   assign r_data_en                =  dec_data_en[0];
-   assign r_data_en_q2             =  dec_data_en[0] & i0_branch_x;
-   assign x_ctl_en                 =  dec_ctl_en[1];
-   assign r_ctl_en                 =  dec_ctl_en[0];
-
-
-
-
-   eb1_exu_alu_ctl #(.pt(pt)) i_alu  (.*,
-                          .enable            ( x_data_en                   ),   // I
-                          .pp_in             ( i0_predict_newp_d           ),   // I
-                          .valid_in          ( dec_i0_alu_decode_d         ),   // I
-                          .flush_upper_x     ( i0_flush_upper_x            ),   // I
-                          .flush_lower_r     ( dec_tlu_flush_lower_r       ),   // I
-                          .a_in              ( i0_rs1_d[31:0]              ),   // I
-                          .b_in              ( i0_rs2_d[31:0]              ),   // I
-                          .pc_in             ( dec_i0_pc_d[31:1]           ),   // I
-                          .brimm_in          ( dec_i0_br_immed_d[12:1]     ),   // I
-                          .ap                ( i0_ap                       ),   // I
-                          .csr_ren_in        ( dec_csr_ren_d               ),   // I
-                          .csr_rddata_in     ( dec_csr_rddata_d[31:0]      ),   // I
-                          .result_ff         ( alu_result_x[31:0]          ),   // O
-                          .flush_upper_out   ( i0_flush_upper_d            ),   // O
-                          .flush_final_out   ( exu_flush_final             ),   // O
-                          .flush_path_out    ( i0_flush_path_d[31:1]       ),   // O
-                          .predict_p_out     ( i0_predict_p_d              ),   // O
-                          .pred_correct_out  ( i0_pred_correct_upper_d     ),   // O
-                          .pc_ff             ( exu_i0_pc_x[31:1]           ));  // O
-
-
-
-   eb1_exu_mul_ctl #(.pt(pt)) i_mul   (.*,
-                          .mul_p             ( mul_p              & {$bits(eb1_mul_pkt_t){mul_p.valid}} ),   // I
-                          .rs1_in            ( muldiv_rs1_d[31:0] & {32{mul_p.valid}}                    ),   // I
-                          .rs2_in            ( i0_rs2_d[31:0]     & {32{mul_p.valid}}                    ),   // I
-                          .result_x          ( mul_result_x[31:0]                                        ));  // O
-
-
-
-   eb1_exu_div_ctl #(.pt(pt)) i_div   (.*,
-                          .cancel            ( dec_div_cancel              ),   // I
-                          .dp                ( div_p                       ),   // I
-                          .dividend          ( muldiv_rs1_d[31:0]          ),   // I
-                          .divisor           ( i0_rs2_d[31:0]              ),   // I
-                          .finish_dly        ( exu_div_wren                ),   // O
-                          .out               ( exu_div_result[31:0]        ));  // O
-
-
-
-   assign exu_i0_result_x[31:0]    =  (mul_valid_x)  ?  mul_result_x[31:0]  :  alu_result_x[31:0];
-
-
-
-
-   always_comb begin
-      i0_predict_newp_d            =  dec_i0_predict_p_d;
-      i0_predict_newp_d.boffset    =  dec_i0_pc_d[1];  // from the start of inst
-   end
-
-
-   assign exu_pmu_i0_br_misp       =  i0_pp_r.misp;
-   assign exu_pmu_i0_br_ataken     =  i0_pp_r.ataken;
-   assign exu_pmu_i0_pc4           =  i0_pp_r.pc4;
-
-
-   assign i0_valid_d               =  i0_predict_p_d.valid  & dec_i0_alu_decode_d & ~dec_tlu_flush_lower_r;
-   assign i0_taken_d               = (i0_predict_p_d.ataken & dec_i0_alu_decode_d);
-
-if(pt.BTB_ENABLE==1) begin
-   // maintain GHR at D
-   assign ghr_d_ns[pt.BHT_GHR_SIZE-1:0]
-                                   = ({pt.BHT_GHR_SIZE{~dec_tlu_flush_lower_r &  i0_valid_d}} & {ghr_d[pt.BHT_GHR_SIZE-2:0], i0_taken_d}) |
-                                     ({pt.BHT_GHR_SIZE{~dec_tlu_flush_lower_r & ~i0_valid_d}} &  ghr_d[pt.BHT_GHR_SIZE-1:0]             ) |
-                                     ({pt.BHT_GHR_SIZE{ dec_tlu_flush_lower_r              }} &  ghr_x[pt.BHT_GHR_SIZE-1:0]             );
-
-   // maintain GHR at X
-   assign ghr_x_ns[pt.BHT_GHR_SIZE-1:0]
-                                   = ({pt.BHT_GHR_SIZE{ i0_valid_x}} & {ghr_x[pt.BHT_GHR_SIZE-2:0], i0_taken_x}) |
-                                     ({pt.BHT_GHR_SIZE{~i0_valid_x}} &  ghr_x[pt.BHT_GHR_SIZE-1:0]             ) ;
-
-
-   assign exu_i0_br_valid_r                                 =  i0_pp_r.valid;
-   assign exu_i0_br_mp_r                                    =  i0_pp_r.misp;
-   assign exu_i0_br_way_r                                   =  i0_pp_r.way;
-   assign exu_i0_br_hist_r[1:0]                             =  {2{i0_pp_r.valid}} & i0_pp_r.hist[1:0];
-   assign exu_i0_br_error_r                                 =  i0_pp_r.br_error;
-   assign exu_i0_br_middle_r                                =  i0_pp_r.pc4 ^ i0_pp_r.boffset;
-   assign exu_i0_br_start_error_r                           =  i0_pp_r.br_start_error;
-
-   assign {exu_i0_br_fghr_r[pt.BHT_GHR_SIZE-1:0],
-           exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]}=  predpipe_r[PREDPIPESIZE-1:pt.BTB_BTAG_SIZE];
-
-
-   assign final_predict_mp                                  = (i0_flush_upper_x)  ?  i0_predict_p_x  :  '0;
-
-   assign final_predpipe_mp[PREDPIPESIZE-1:0]               = (i0_flush_upper_x)  ?  predpipe_x      :  '0;
-
-   assign after_flush_eghr[pt.BHT_GHR_SIZE-1:0]             = (i0_flush_upper_x & ~dec_tlu_flush_lower_r)  ?  ghr_d[pt.BHT_GHR_SIZE-1:0]  :  ghr_x[pt.BHT_GHR_SIZE-1:0];
-
-
-   assign exu_mp_pkt.valid                                  =  final_predict_mp.valid;
-   assign exu_mp_pkt.way                                    =  final_predict_mp.way;
-   assign exu_mp_pkt.misp                                   =  final_predict_mp.misp;
-   assign exu_mp_pkt.pcall                                  =  final_predict_mp.pcall;
-   assign exu_mp_pkt.pja                                    =  final_predict_mp.pja;
-   assign exu_mp_pkt.pret                                   =  final_predict_mp.pret;
-   assign exu_mp_pkt.ataken                                 =  final_predict_mp.ataken;
-   assign exu_mp_pkt.boffset                                =  final_predict_mp.boffset;
-   assign exu_mp_pkt.pc4                                    =  final_predict_mp.pc4;
-   assign exu_mp_pkt.hist[1:0]                              =  final_predict_mp.hist[1:0];
-   assign exu_mp_pkt.toffset[11:0]                          =  final_predict_mp.toffset[11:0];
-
-   assign exu_mp_fghr[pt.BHT_GHR_SIZE-1:0]                  =  after_flush_eghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign {exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],
-           exu_mp_btag[pt.BTB_BTAG_SIZE-1:0]}               =  final_predpipe_mp[PREDPIPESIZE-pt.BHT_GHR_SIZE-1:0];
-
-   assign exu_mp_eghr[pt.BHT_GHR_SIZE-1:0]                  =  final_predpipe_mp[PREDPIPESIZE-1:pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+pt.BTB_BTAG_SIZE+1]; // mp ghr for bht write
-end // if (pt.BTB_ENABLE==1)
-else begin
-   assign ghr_d_ns = '0;
-   assign ghr_x_ns = '0;
-   assign exu_mp_pkt = '0;
-   assign exu_mp_eghr = '0;
-   assign exu_mp_fghr = '0;
-   assign exu_mp_index = '0;
-   assign exu_mp_btag = '0;
-   assign exu_i0_br_hist_r = '0;
-   assign exu_i0_br_error_r = '0;
-   assign exu_i0_br_start_error_r = '0;
-   assign exu_i0_br_index_r = '0;
-   assign exu_i0_br_valid_r = '0;
-   assign exu_i0_br_mp_r = '0;
-   assign exu_i0_br_middle_r = '0;
-   assign exu_i0_br_fghr_r = '0;
-   assign exu_i0_br_way_r = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   assign exu_flush_path_final[31:1] = ( {31{ dec_tlu_flush_lower_r                   }} & dec_tlu_flush_path_r[31:1] ) |
-                                       ( {31{~dec_tlu_flush_lower_r & i0_flush_upper_d}} & i0_flush_path_d[31:1]      );
-
-   assign exu_npc_r[31:1]            = (i0_pred_correct_upper_r)  ?  pred_correct_npc_r[31:1]    :  i0_flush_path_upper_r[31:1];
-
-
-endmodule // eb1_exu
diff --git a/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu_alu_ctl.sv b/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu_alu_ctl.sv
deleted file mode 100644
index 9d05f43..0000000
--- a/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu_alu_ctl.sv
+++ /dev/null
@@ -1,597 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_alu_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
-)
-  (
-   input  logic                  clk,                // Top level clock
-   input  logic                  rst_l,              // Reset
-   input  logic                  scan_mode,          // Scan control
-
-   input  logic                  flush_upper_x,      // Branch flush from previous cycle
-   input  logic                  flush_lower_r,      // Master flush of entire pipeline
-   input  logic                  enable,             // Clock enable
-   input  logic                  valid_in,           // Valid
-   input  eb1_alu_pkt_t         ap,                 // predecodes
-   input  logic                  csr_ren_in,         // CSR select
-   input  logic        [31:0]    csr_rddata_in,      // CSR data
-   input  logic signed [31:0]    a_in,               // A operand
-   input  logic        [31:0]    b_in,               // B operand
-   input  logic        [31:1]    pc_in,              // for pc=pc+2,4 calculations
-   input  eb1_predict_pkt_t     pp_in,              // Predicted branch structure
-   input  logic        [12:1]    brimm_in,           // Branch offset
-
-
-   output logic        [31:0]    result_ff,          // final result
-   output logic                  flush_upper_out,    // Branch flush
-   output logic                  flush_final_out,    // Branch flush or flush entire pipeline
-   output logic        [31:1]    flush_path_out,     // Branch flush PC
-   output logic        [31:1]    pc_ff,              // flopped PC
-   output logic                  pred_correct_out,   // NPC control
-   output eb1_predict_pkt_t     predict_p_out       // Predicted branch structure
-  );
-
-
-   logic               [31:0]    zba_a_in;
-   logic               [31:0]    aout;
-   logic                         cout,ov,neg;
-   logic               [31:0]    lout;
-   logic               [31:0]    sout;
-   logic                         sel_shift;
-   logic                         sel_adder;
-   logic                         slt_one;
-   logic                         actual_taken;
-   logic               [31:1]    pcout;
-   logic                         cond_mispredict;
-   logic                         target_mispredict;
-   logic                         eq, ne, lt, ge;
-   logic                         any_jal;
-   logic               [1:0]     newhist;
-   logic                         sel_pc;
-   logic               [31:0]    csr_write_data;
-   logic               [31:0]    result;
-
-
-
-
-   // *** Start - BitManip ***
-
-   // Zbb
-   logic                  ap_clz;
-   logic                  ap_ctz;
-   logic                  ap_pcnt;
-   logic                  ap_sext_b;
-   logic                  ap_sext_h;
-   logic                  ap_min;
-   logic                  ap_max;
-   logic                  ap_pack;
-   logic                  ap_packu;
-   logic                  ap_packh;
-   logic                  ap_rol;
-   logic                  ap_ror;
-   logic                  ap_rev;
-   logic                  ap_rev8;
-   logic                  ap_orc_b;
-   logic                  ap_orc16;
-   logic                  ap_zbb;
-
-   // Zbs
-   logic                  ap_sbset;
-   logic                  ap_sbclr;
-   logic                  ap_sbinv;
-   logic                  ap_sbext;
-
-   // Zbr
-   logic                  ap_slo;
-   logic                  ap_sro;
-
-   // Zba
-   logic                  ap_sh1add;
-   logic                  ap_sh2add;
-   logic                  ap_sh3add;
-   logic                  ap_zba;
-
-
-
-   if (pt.BITMANIP_ZBB == 1)
-     begin
-       assign ap_clz          =  ap.clz;
-       assign ap_ctz          =  ap.ctz;
-       assign ap_pcnt         =  ap.pcnt;
-       assign ap_sext_b       =  ap.sext_b;
-       assign ap_sext_h       =  ap.sext_h;
-       assign ap_min          =  ap.min;
-       assign ap_max          =  ap.max;
-     end
-   else
-     begin
-       assign ap_clz          =  1'b0;
-       assign ap_ctz          =  1'b0;
-       assign ap_pcnt         =  1'b0;
-       assign ap_sext_b       =  1'b0;
-       assign ap_sext_h       =  1'b0;
-       assign ap_min          =  1'b0;
-       assign ap_max          =  1'b0;
-     end
-
-
-   if ( (pt.BITMANIP_ZBB == 1) | (pt.BITMANIP_ZBP == 1) )
-     begin
-       assign ap_pack         =  ap.pack;
-       assign ap_packu        =  ap.packu;
-       assign ap_packh        =  ap.packh;
-       assign ap_rol          =  ap.rol;
-       assign ap_ror          =  ap.ror;
-       assign ap_rev          =  ap.grev & (b_in[4:0] == 5'b11111);
-       assign ap_rev8         =  ap.grev & (b_in[4:0] == 5'b11000);
-       assign ap_orc_b        =  ap.gorc & (b_in[4:0] == 5'b00111);
-       assign ap_orc16        =  ap.gorc & (b_in[4:0] == 5'b10000);
-       assign ap_zbb          =  ap.zbb;
-     end
-   else
-     begin
-       assign ap_pack         =  1'b0;
-       assign ap_packu        =  1'b0;
-       assign ap_packh        =  1'b0;
-       assign ap_rol          =  1'b0;
-       assign ap_ror          =  1'b0;
-       assign ap_rev          =  1'b0;
-       assign ap_rev8         =  1'b0;
-       assign ap_orc_b        =  1'b0;
-       assign ap_orc16        =  1'b0;
-       assign ap_zbb          =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBS == 1)
-     begin
-       assign ap_sbset        =  ap.sbset;
-       assign ap_sbclr        =  ap.sbclr;
-       assign ap_sbinv        =  ap.sbinv;
-       assign ap_sbext        =  ap.sbext;
-     end
-   else
-     begin
-       assign ap_sbset        =  1'b0;
-       assign ap_sbclr        =  1'b0;
-       assign ap_sbinv        =  1'b0;
-       assign ap_sbext        =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBP == 1)
-     begin
-       assign ap_slo          =  ap.slo;
-       assign ap_sro          =  ap.sro;
-     end
-   else
-     begin
-       assign ap_slo          =  1'b0;
-       assign ap_sro          =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBA == 1)
-     begin
-       assign ap_sh1add       =  ap.sh1add;
-       assign ap_sh2add       =  ap.sh2add;
-       assign ap_sh3add       =  ap.sh3add;
-       assign ap_zba          =  ap.zba;
-     end
-   else
-     begin
-       assign ap_sh1add       =  1'b0;
-       assign ap_sh2add       =  1'b0;
-       assign ap_sh3add       =  1'b0;
-       assign ap_zba          =  1'b0;
-     end
-
-
-
-
-   // *** End   - BitManip ***
-
-
-
-
-   rvdffpcie #(31) i_pc_ff      (.*, .clk(clk), .en(enable),              .din(pc_in[31:1]),    .dout(pc_ff[31:1]));   // any PC is run through here - doesn't have to be alu
-   rvdffe    #(32) i_result_ff  (.*, .clk(clk), .en(enable & valid_in),   .din(result[31:0]),   .dout(result_ff[31:0]));
-
-
-
-   // immediates are just muxed into rs2
-
-   // add    =>  add=1;
-   // sub    =>  add=1; sub=1;
-
-   // and    =>  lctl=3
-   // or     =>  lctl=2
-   // xor    =>  lctl=1
-
-   // sll    =>  sctl=3
-   // srl    =>  sctl=2
-   // sra    =>  sctl=1
-
-   // slt    =>  slt
-
-   // lui    =>  lctl=2; or x0, imm20 previously << 12
-   // auipc  =>  add;   add pc, imm20 previously << 12
-
-   // beq    =>  bctl=4; add; add x0, pc, sext(offset[12:1])
-   // bne    =>  bctl=3; add; add x0, pc, sext(offset[12:1])
-   // blt    =>  bctl=2; add; add x0, pc, sext(offset[12:1])
-   // bge    =>  bctl=1; add; add x0, pc, sext(offset[12:1])
-
-   // jal    =>  rs1=pc {pc[31:1],1'b0},  rs2=sext(offset20:1]);   rd=pc+[2,4]
-   // jalr   =>  rs1=rs1,                 rs2=sext(offset20:1]);   rd=pc+[2,4]
-
-
-
-   assign zba_a_in[31:0]      = ( {32{ ap_sh1add}} & {a_in[30:0],1'b0} ) |
-                                ( {32{ ap_sh2add}} & {a_in[29:0],2'b0} ) |
-                                ( {32{ ap_sh3add}} & {a_in[28:0],3'b0} ) |
-                                ( {32{~ap_zba   }} &  a_in[31:0]       );
-
-   logic        [31:0]    bm;
-
-   assign bm[31:0]            = ( ap.sub )  ?  ~b_in[31:0]  :  b_in[31:0];
-
-   assign {cout, aout[31:0]}  = {1'b0, zba_a_in[31:0]} + {1'b0, bm[31:0]} + {32'b0, ap.sub};
-
-   assign ov                  = (~a_in[31] & ~bm[31] &  aout[31]) |
-                                ( a_in[31] &  bm[31] & ~aout[31] );
-
-   assign lt                  = (~ap.unsign & (neg ^ ov)) |
-                                ( ap.unsign & ~cout);
-
-   assign eq                  = (a_in[31:0] == b_in[31:0]);
-   assign ne                  = ~eq;
-   assign neg                 =  aout[31];
-   assign ge                  = ~lt;
-
-
-
-   assign lout[31:0]          =  ( {32{csr_ren_in       }} &  csr_rddata_in[31:0]       ) |
-                                 ( {32{ap.land & ~ap_zbb}} &  a_in[31:0] &  b_in[31:0]  ) |
-                                 ( {32{ap.lor  & ~ap_zbb}} & (a_in[31:0] |  b_in[31:0]) ) |
-                                 ( {32{ap.lxor & ~ap_zbb}} & (a_in[31:0] ^  b_in[31:0]) ) |
-                                 ( {32{ap.land &  ap_zbb}} &  a_in[31:0] & ~b_in[31:0]  ) |
-                                 ( {32{ap.lor  &  ap_zbb}} & (a_in[31:0] | ~b_in[31:0]) ) |
-                                 ( {32{ap.lxor &  ap_zbb}} & (a_in[31:0] ^ ~b_in[31:0]) );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SLO,SRO      * * * * * * * * * * * * * * * * * *
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ROL,ROR      * * * * * * * * * * * * * * * * * *
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ZBEXT        * * * * * * * * * * * * * * * * * *
-
-   logic        [5:0]     shift_amount;
-   logic        [31:0]    shift_mask;
-   logic        [62:0]    shift_extend;
-   logic        [62:0]    shift_long;
-
-
-   assign shift_amount[5:0]            = ( { 6{ap.sll}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |   // [5] unused
-                                         ( { 6{ap.srl}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap.sra}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_rol}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |
-                                         ( { 6{ap_ror}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_slo}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |
-                                         ( { 6{ap_sro}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_sbext}} &          {1'b0,b_in[4:0]}  );
-
-
-   assign shift_mask[31:0]             = ( 32'hffffffff << ({5{ap.sll | ap_slo}} & b_in[4:0]) );
-
-
-   assign shift_extend[31:0]           =  a_in[31:0];
-
-   assign shift_extend[62:32]          = ( {31{ap.sra}} & {31{a_in[31]}} ) |
-                                         ( {31{ap.sll}} &     a_in[30:0] ) |
-                                         ( {31{ap_rol}} &     a_in[30:0] ) |
-                                         ( {31{ap_ror}} &     a_in[30:0] ) |
-                                         ( {31{ap_slo}} &     a_in[30:0] ) |
-                                         ( {31{ap_sro}} & {31{  1'b1  }} );
-
-
-   assign shift_long[62:0]    = ( shift_extend[62:0] >> shift_amount[4:0] );   // 62-32 unused
-
-   assign sout[31:0]          = ( shift_long[31:0] & shift_mask[31:0] ) | ( {32{ap_slo}} & ~shift_mask[31:0] );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CLZ,CTZ      * * * * * * * * * * * * * * * * * *
-
-   logic                  bitmanip_clz_ctz_sel;
-   logic        [31:0]    bitmanip_a_reverse_ff;
-   logic        [31:0]    bitmanip_lzd_in;
-   logic        [5:0]     bitmanip_dw_lzd_enc;
-   logic        [5:0]     bitmanip_clz_ctz_result;
-
-   assign bitmanip_clz_ctz_sel         =  ap_clz | ap_ctz;
-
-   assign bitmanip_a_reverse_ff[31:0]  = {a_in[0],  a_in[1],  a_in[2],  a_in[3],  a_in[4],  a_in[5],  a_in[6],  a_in[7],
-                                          a_in[8],  a_in[9],  a_in[10], a_in[11], a_in[12], a_in[13], a_in[14], a_in[15],
-                                          a_in[16], a_in[17], a_in[18], a_in[19], a_in[20], a_in[21], a_in[22], a_in[23],
-                                          a_in[24], a_in[25], a_in[26], a_in[27], a_in[28], a_in[29], a_in[30], a_in[31]};
-
-   assign bitmanip_lzd_in[31:0]        = ( {32{ap_clz}} & a_in[31:0]                 ) |
-                                         ( {32{ap_ctz}} & bitmanip_a_reverse_ff[31:0]);
-
-   logic        [31:0]    bitmanip_lzd_os;
-   integer                i;
-   logic                  found;
-
-   always_comb
-     begin
-        bitmanip_lzd_os[31:0]   =  bitmanip_lzd_in[31:0];
-        bitmanip_dw_lzd_enc[5:0]=  6'b0;
-        found = 1'b0;
-
-        for (int i=0; i<32 && found==0; i++) begin
-           if (bitmanip_lzd_os[31] == 1'b0) begin
-              bitmanip_dw_lzd_enc[5:0]=  bitmanip_dw_lzd_enc[5:0] + 6'b00_0001;
-              bitmanip_lzd_os[31:0]   =  bitmanip_lzd_os[31:0] << 1;
-           end
-           else
-              found=1'b1;
-        end
-     end
-
-
-
-   assign bitmanip_clz_ctz_result[5:0] = {6{bitmanip_clz_ctz_sel}} & {bitmanip_dw_lzd_enc[5],( {5{~bitmanip_dw_lzd_enc[5]}} & bitmanip_dw_lzd_enc[4:0] )};
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  PCNT         * * * * * * * * * * * * * * * * * *
-
-   logic        [5:0]     bitmanip_pcnt;
-   logic        [5:0]     bitmanip_pcnt_result;
-
-
-   integer                bitmanip_pcnt_i;
-
-   always_comb
-     begin
-       bitmanip_pcnt[5:0]               =  6'b0;
-
-       for (bitmanip_pcnt_i=0; bitmanip_pcnt_i<32; bitmanip_pcnt_i++)
-         begin
-            bitmanip_pcnt[5:0]          =  bitmanip_pcnt[5:0] + {5'b0,a_in[bitmanip_pcnt_i]};
-         end      // FOR    bitmanip_pcnt_i
-     end          // ALWAYS_COMB
-
-
-   assign bitmanip_pcnt_result[5:0]    =  {6{ap_pcnt}} & bitmanip_pcnt[5:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SEXT_B,SEXT_H  * * * * * * * * * * * * * * * * *
-
-   logic       [31:0]     bitmanip_sext_result;
-
-   assign bitmanip_sext_result[31:0]   = ( {32{ap_sext_b}} & { {24{a_in[7]}} ,a_in[7:0]  } ) |
-                                         ( {32{ap_sext_h}} & { {16{a_in[15]}},a_in[15:0] } );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  MIN,MAX,MINU,MAXU  * * * * * * * * * * * * * * *
-
-   logic                  bitmanip_minmax_sel;
-   logic        [31:0]    bitmanip_minmax_result;
-
-   assign bitmanip_minmax_sel          =  ap_min | ap_max;
-
-
-   logic                  bitmanip_minmax_sel_a;
-
-   assign bitmanip_minmax_sel_a        =  ge  ^ ap_min;
-
-   assign bitmanip_minmax_result[31:0] = ({32{bitmanip_minmax_sel &  bitmanip_minmax_sel_a}}  &  a_in[31:0]) |
-                                         ({32{bitmanip_minmax_sel & ~bitmanip_minmax_sel_a}}  &  b_in[31:0]);
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  PACK, PACKU, PACKH * * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_pack_result;
-   logic        [31:0]    bitmanip_packu_result;
-   logic        [31:0]    bitmanip_packh_result;
-
-   assign bitmanip_pack_result[31:0]   = {32{ap_pack}}  & {b_in[15:0], a_in[15:0]};
-   assign bitmanip_packu_result[31:0]  = {32{ap_packu}} & {b_in[31:16],a_in[31:16]};
-   assign bitmanip_packh_result[31:0]  = {32{ap_packh}} & {16'b0,b_in[7:0],a_in[7:0]};
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  REV, REV8, ORC_B * * * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_rev_result;
-   logic        [31:0]    bitmanip_rev8_result;
-   logic        [31:0]    bitmanip_orc_b_result;
-   logic        [31:0]    bitmanip_orc16_result;
-
-   assign bitmanip_rev_result[31:0]    = {32{ap_rev}}   &
-                                         {a_in[00],a_in[01],a_in[02],a_in[03],a_in[04],a_in[05],a_in[06],a_in[07],
-                                          a_in[08],a_in[09],a_in[10],a_in[11],a_in[12],a_in[13],a_in[14],a_in[15],
-                                          a_in[16],a_in[17],a_in[18],a_in[19],a_in[20],a_in[21],a_in[22],a_in[23],
-                                          a_in[24],a_in[25],a_in[26],a_in[27],a_in[28],a_in[29],a_in[30],a_in[31]};
-
-   assign bitmanip_rev8_result[31:0]   = {32{ap_rev8}}  & {a_in[7:0],a_in[15:8],a_in[23:16],a_in[31:24]};
-
-
-// uint32_t gorc32(uint32_t rs1, uint32_t rs2)
-// {
-//      uint32_t x = rs1;
-//      int shamt = rs2 & 31;                                                        ORC.B  ORC16
-//      if (shamt &  1) x |= ((x & 0x55555555) <<  1) | ((x & 0xAAAAAAAA) >>  1);      1      0
-//      if (shamt &  2) x |= ((x & 0x33333333) <<  2) | ((x & 0xCCCCCCCC) >>  2);      1      0
-//      if (shamt &  4) x |= ((x & 0x0F0F0F0F) <<  4) | ((x & 0xF0F0F0F0) >>  4);      1      0
-//      if (shamt &  8) x |= ((x & 0x00FF00FF) <<  8) | ((x & 0xFF00FF00) >>  8);      0      0
-//      if (shamt & 16) x |= ((x & 0x0000FFFF) << 16) | ((x & 0xFFFF0000) >> 16);      0      1
-//      return x;
-// }
-
-
-// BEFORE              31  ,   30  ,   29  ,   28  ,    27  ,   26,     25,     24
-// shamt[0]  b =    a31|a30,a31|a30,a29|a28,a29|a28, a27|a26,a27|a26,a25|a24,a25|a24
-// shamt[1]  c =    b31|b29,b30|b28,b31|b29,b30|b28, b27|b25,b26|b24,b27|b25,b26|b24
-// shamt[2]  d =    c31|c27,c30|c26,c29|c25,c28|c24, c31|c27,c30|c26,c29|c25,c28|c24
-//
-// Expand d31 =        c31         |         c27;
-//            =   b31   |   b29    |    b27   |   b25;
-//            = a31|a30 | a29|a28  |  a27|a26 | a25|a24
-
-   assign bitmanip_orc_b_result[31:0]  = {32{ap_orc_b}} & { {8{| a_in[31:24]}}, {8{| a_in[23:16]}}, {8{| a_in[15:8]}}, {8{| a_in[7:0]}} };
-
-   assign bitmanip_orc16_result[31:0]  = {32{ap_orc16}} & {     {a_in[31:16] | a_in[15:0]},             {a_in[31:16] | a_in[15:0]}      };
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ZBSET, ZBCLR, ZBINV  * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_sb_1hot;
-   logic        [31:0]    bitmanip_sb_data;
-
-   assign bitmanip_sb_1hot[31:0]       = ( 32'h00000001 << b_in[4:0] );
-
-   assign bitmanip_sb_data[31:0]       = ( {32{ap_sbset}} & ( a_in[31:0] |  bitmanip_sb_1hot[31:0]) ) |
-                                         ( {32{ap_sbclr}} & ( a_in[31:0] & ~bitmanip_sb_1hot[31:0]) ) |
-                                         ( {32{ap_sbinv}} & ( a_in[31:0] ^  bitmanip_sb_1hot[31:0]) );
-
-
-
-
-
-
-   assign sel_shift           =  ap.sll  | ap.srl | ap.sra | ap_slo | ap_sro | ap_rol | ap_ror;
-   assign sel_adder           = (ap.add  | ap.sub | ap_zba) & ~ap.slt & ~ap_min & ~ap_max;
-   assign sel_pc              =  ap.jal  | pp_in.pcall | pp_in.pja | pp_in.pret;
-   assign csr_write_data[31:0]= (ap.csr_imm)  ?  b_in[31:0]  :  a_in[31:0];
-
-   assign slt_one             =  ap.slt & lt;
-
-
-
-   assign result[31:0]        =                        lout[31:0]             |
-                                ({32{sel_shift}}    &  sout[31:0]           ) |
-                                ({32{sel_adder}}    &  aout[31:0]           ) |
-                                ({32{sel_pc}}       & {pcout[31:1],1'b0}    ) |
-                                ({32{ap.csr_write}} &  csr_write_data[31:0] ) |
-                                                      {31'b0, slt_one}        |
-                                ({32{ap_sbext}}     & {31'b0, sout[0]}      ) |
-                                                      {26'b0, bitmanip_clz_ctz_result[5:0]} |
-                                                      {26'b0, bitmanip_pcnt_result[5:0]}    |
-                                                       bitmanip_sext_result[31:0]    |
-                                                       bitmanip_minmax_result[31:0]  |
-                                                       bitmanip_pack_result[31:0]    |
-                                                       bitmanip_packu_result[31:0]   |
-                                                       bitmanip_packh_result[31:0]   |
-                                                       bitmanip_rev_result[31:0]     |
-                                                       bitmanip_rev8_result[31:0]    |
-                                                       bitmanip_orc_b_result[31:0]   |
-                                                       bitmanip_orc16_result[31:0]   |
-                                                       bitmanip_sb_data[31:0];
-
-
-
-   // *** branch handling ***
-
-   assign any_jal             =  ap.jal      |
-                                 pp_in.pcall |
-                                 pp_in.pja   |
-                                 pp_in.pret;
-
-   assign actual_taken        = (ap.beq & eq) |
-                                (ap.bne & ne) |
-                                (ap.blt & lt) |
-                                (ap.bge & ge) |
-                                 any_jal;
-
-   // for a conditional br pcout[] will be the opposite of the branch prediction
-   // for jal or pcall, it will be the link address pc+2 or pc+4
-
-   rvbradder ibradder (
-                     .pc     ( pc_in[31:1]    ),
-                     .offset ( brimm_in[12:1] ),
-                     .dout   ( pcout[31:1]    ));
-
-
-   // pred_correct is for the npc logic
-   // pred_correct indicates not to use the flush_path
-   // for any_jal pred_correct==0
-
-   assign pred_correct_out    = (valid_in & ap.predict_nt & ~actual_taken & ~any_jal) |
-                                (valid_in & ap.predict_t  &  actual_taken & ~any_jal);
-
-
-   // for any_jal adder output is the flush path
-   assign flush_path_out[31:1]= (any_jal) ? aout[31:1] : pcout[31:1];
-
-
-   // pcall and pret are included here
-   assign cond_mispredict     = (ap.predict_t  & ~actual_taken) |
-                                (ap.predict_nt &  actual_taken);
-
-
-   // target mispredicts on ret's
-
-   assign target_mispredict   =  pp_in.pret & (pp_in.prett[31:1] != aout[31:1]);
-
-   assign flush_upper_out     =   (ap.jal | cond_mispredict | target_mispredict) & valid_in & ~flush_upper_x   & ~flush_lower_r;
-   assign flush_final_out     = ( (ap.jal | cond_mispredict | target_mispredict) & valid_in & ~flush_upper_x ) |  flush_lower_r;
-
-
-   // .i 3
-   // .o 2
-   // .ilb hist[1] hist[0] taken
-   // .ob newhist[1] newhist[0]
-   // .type fd
-   //
-   // 00 0 01
-   // 01 0 01
-   // 10 0 00
-   // 11 0 10
-   // 00 1 10
-   // 01 1 00
-   // 10 1 11
-   // 11 1 11
-
-   assign newhist[1]          = ( pp_in.hist[1] &  pp_in.hist[0]) | (~pp_in.hist[0] & actual_taken);
-   assign newhist[0]          = (~pp_in.hist[1] & ~actual_taken)  | ( pp_in.hist[1] & actual_taken);
-
-   always_comb begin
-      predict_p_out           =  pp_in;
-
-      predict_p_out.misp      = ~flush_upper_x & ~flush_lower_r & (cond_mispredict | target_mispredict);
-      predict_p_out.ataken    =  actual_taken;
-      predict_p_out.hist[1]   =  newhist[1];
-      predict_p_out.hist[0]   =  newhist[0];
-
-   end
-
-
-
-endmodule // eb1_exu_alu_ctl
diff --git a/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu_div_ctl.sv b/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu_div_ctl.sv
deleted file mode 100644
index a3b438e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu_div_ctl.sv
+++ /dev/null
@@ -1,1801 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_div_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
-)
-  (
-   input logic           clk,                       // Top level clock
-   input logic           rst_l,                     // Reset
-   input logic           scan_mode,                 // Scan mode
-
-   input eb1_div_pkt_t  dp,                        // valid, sign, rem
-   input logic  [31:0]   dividend,                  // Numerator
-   input logic  [31:0]   divisor,                   // Denominator
-
-   input logic           cancel,                    // Cancel divide
-
-
-   output logic          finish_dly,                // Finish to match data
-   output logic [31:0]   out                        // Result
-  );
-
-
-   logic [31:0]          out_raw;
-
-   assign out[31:0] = {32{finish_dly}} & out_raw[31:0];     // Qualification added to quiet result bus while divide is iterating
-
-
-
-   if (pt.DIV_NEW == 0)
-      begin
-        eb1_exu_div_existing_1bit_cheapshortq   i_existing_1bit_div_cheapshortq (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 1) )
-      begin
-        eb1_exu_div_new_1bit_fullshortq         i_new_1bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 2) )
-      begin
-        eb1_exu_div_new_2bit_fullshortq         i_new_2bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 3) )
-      begin
-        eb1_exu_div_new_3bit_fullshortq         i_new_3bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 4) )
-      begin
-        eb1_exu_div_new_4bit_fullshortq         i_new_4bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-
-endmodule // eb1_exu_div_ctl
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_existing_1bit_cheapshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic         div_clken;
-   logic         run_in, run_state;
-   logic  [5:0]  count_in, count;
-   logic [32:0]  m_ff;
-   logic         qff_enable;
-   logic         aff_enable;
-   logic [32:0]  q_in, q_ff;
-   logic [32:0]  a_in, a_ff;
-   logic [32:0]  m_eff;
-   logic [32:0]  a_shift;
-   logic         dividend_neg_ff, divisor_neg_ff;
-   logic [31:0]  dividend_comp;
-   logic [31:0]  dividend_eff;
-   logic [31:0]  q_ff_comp;
-   logic [31:0]  q_ff_eff;
-   logic [31:0]  a_ff_comp;
-   logic [31:0]  a_ff_eff;
-   logic         sign_ff, sign_eff;
-   logic         rem_ff;
-   logic         add;
-   logic [32:0]  a_eff;
-   logic [64:0]  a_eff_shift;
-   logic         rem_correct;
-   logic         valid_ff_x;
-   logic         valid_x;
-   logic         finish;
-   logic         finish_ff;
-
-   logic         smallnum_case, smallnum_case_ff;
-   logic  [3:0]  smallnum, smallnum_ff;
-   logic         m_already_comp;
-
-   logic [4:0]   a_cls;
-   logic [4:0]   b_cls;
-   logic [5:0]   shortq_shift;
-   logic [5:0]   shortq_shift_ff;
-   logic [5:0]   shortq;
-   logic         shortq_enable;
-   logic         shortq_enable_ff;
-   logic [32:0]  short_dividend;
-   logic [3:0]   shortq_raw;
-   logic [3:0]   shortq_shift_xx;
-
-
-
-   rvdffe #(23) i_misc_ff        (.*, .clk(clk), .en(div_clken),   .din ({valid_in & ~cancel,
-                                                                          finish   & ~cancel,
-                                                                          run_in,
-                                                                          count_in[5:0],
-                                                                          (valid_in & dividend_in[31]) | (~valid_in & dividend_neg_ff),
-                                                                          (valid_in & divisor_in[31] ) | (~valid_in & divisor_neg_ff ),
-                                                                          (valid_in & sign_eff       ) | (~valid_in & sign_ff        ),
-                                                                          (valid_in & rem_in         ) | (~valid_in & rem_ff         ),
-                                                                          smallnum_case,
-                                                                          smallnum[3:0],
-                                                                          shortq_enable,
-                                                                          shortq_shift[3:0]}),
-
-                                                                   .dout({valid_ff_x,
-                                                                          finish_ff,
-                                                                          run_state,
-                                                                          count[5:0],
-                                                                          dividend_neg_ff,
-                                                                          divisor_neg_ff,
-                                                                          sign_ff,
-                                                                          rem_ff,
-                                                                          smallnum_case_ff,
-                                                                          smallnum_ff[3:0],
-                                                                          shortq_enable_ff,
-                                                                          shortq_shift_xx[3:0]}));
-
-
-   rvdffe #(33) mff              (.*, .clk(clk), .en(valid_in),    .din({signed_in & divisor_in[31], divisor_in[31:0]}),   .dout(m_ff[32:0]));
-   rvdffe #(33) qff              (.*, .clk(clk), .en(qff_enable),  .din(q_in[32:0]),                                       .dout(q_ff[32:0]));
-   rvdffe #(33) aff              (.*, .clk(clk), .en(aff_enable),  .din(a_in[32:0]),                                       .dout(a_ff[32:0]));
-
-   rvtwoscomp #(32) i_dividend_comp (.din(q_ff[31:0]),    .dout(dividend_comp[31:0]));
-   rvtwoscomp #(32) i_q_ff_comp     (.din(q_ff[31:0]),    .dout(q_ff_comp[31:0]));
-   rvtwoscomp #(32) i_a_ff_comp     (.din(a_ff[31:0]),    .dout(a_ff_comp[31:0]));
-
-
-   assign valid_x                 = valid_ff_x & ~cancel;
-
-
-   // START - short circuit logic for small numbers {{
-
-   // small number divides - any 4b / 4b is done in 1 cycle (divisor != 0)
-   // to generate espresso equations:
-   // 1.  smalldiv > smalldiv.e
-   // 2.  espresso -Dso -oeqntott smalldiv.e | addassign > smalldiv
-
-   // smallnum case does not cover divide by 0
-   assign smallnum_case           = ((q_ff[31:4] == 28'b0) & (m_ff[31:4] == 28'b0) & (m_ff[31:0] != 32'b0) & ~rem_ff & valid_x) |
-                                    ((q_ff[31:0] == 32'b0) &                         (m_ff[31:0] != 32'b0) & ~rem_ff & valid_x);
-
-
-   assign smallnum[3]             = ( q_ff[3] &                                  ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           );
-
-
-   assign smallnum[2]             = ( q_ff[3] &                                  ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    ( q_ff[2] &                                  ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] & ~m_ff[2]                      );
-
-
-   assign smallnum[1]             = ( q_ff[2] &                                  ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    (                       q_ff[1] &            ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &                                  ~m_ff[3] &            ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] & ~q_ff[2] &                       ~m_ff[3] & ~m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] &  m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &             q_ff[1] & ~m_ff[3] &                       ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &  m_ff[2]                      );
-
-
-   assign smallnum[0]             = (            q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] &  q_ff[0] &            ~m_ff[3] &             m_ff[1] &  m_ff[0]) |
-                                    (            q_ff[2] &                       ~m_ff[3] &            ~m_ff[1] & ~m_ff[0]) |
-                                    (                       q_ff[1] &            ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    (                                  q_ff[0] & ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] & ~q_ff[1] &            ~m_ff[3] & ~m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &                                             ~m_ff[2] & ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] & ~q_ff[2] &                       ~m_ff[3] &  m_ff[2] &  m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &  m_ff[2] & ~m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] &             q_ff[0] & ~m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] & ~q_ff[1] &            ~m_ff[3] &  m_ff[2] &             m_ff[0]) |
-                                    (           ~q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                                             ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] &             q_ff[1] &                       ~m_ff[2] &            ~m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] &  m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                        m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &             q_ff[1] &             m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &                        q_ff[0] &            ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &            ~q_ff[1] &            ~m_ff[3] &  m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &             m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &             m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &             q_ff[0] &  m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] &  q_ff[1] &            ~m_ff[3] &             m_ff[1]           ) |
-                                    ( q_ff[3] &             q_ff[1] &  q_ff[0] &            ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &  q_ff[0] &  m_ff[3]                                 );
-
-
-   // END   - short circuit logic for small numbers }}
-
-
-   // *** Start Short Q *** {{
-
-   assign short_dividend[31:0]    =  q_ff[31:0];
-   assign short_dividend[32]      =  sign_ff & q_ff[31];
-
-
-   //    A       B
-   //   210     210    SH
-   //   ---     ---    --
-   //   1xx     000     0
-   //   1xx     001     8
-   //   1xx     01x    16
-   //   1xx     1xx    24
-   //   01x     000     8
-   //   01x     001    16
-   //   01x     01x    24
-   //   01x     1xx    32
-   //   001     000    16
-   //   001     001    24
-   //   001     01x    32
-   //   001     1xx    32
-   //   000     000    24
-   //   000     001    32
-   //   000     01x    32
-   //   000     1xx    32
-
-   assign a_cls[4:3]              =  2'b0;
-   assign a_cls[2]                =  (~short_dividend[32] & (short_dividend[31:24] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[31:23] != {9{1'b1}}));
-   assign a_cls[1]                =  (~short_dividend[32] & (short_dividend[23:16] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[22:15] != {8{1'b1}}));
-   assign a_cls[0]                =  (~short_dividend[32] & (short_dividend[15:08] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[14:07] != {8{1'b1}}));
-
-   assign b_cls[4:3]              =  2'b0;
-   assign b_cls[2]                =  (~m_ff[32]           & (          m_ff[31:24] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[31:24] != {8{1'b1}}));
-   assign b_cls[1]                =  (~m_ff[32]           & (          m_ff[23:16] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[23:16] != {8{1'b1}}));
-   assign b_cls[0]                =  (~m_ff[32]           & (          m_ff[15:08] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[15:08] != {8{1'b1}}));
-
-   assign shortq_raw[3]           = ( (a_cls[2:1] == 2'b01 ) & (b_cls[2]   == 1'b1  ) ) |   // Shift by 32
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2]   == 1'b1  ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2]   == 1'b1  ) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:0] == 3'b001) );
-
-   assign shortq_raw[2]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2]   == 1'b1  ) ) |   // Shift by 24
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:0] == 3'b001) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:0] == 3'b000) );
-
-   assign shortq_raw[1]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2:1] == 2'b01 ) ) |   // Shift by 16
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:0] == 3'b001) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:0] == 3'b000) );
-
-   assign shortq_raw[0]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2:0] == 3'b001) ) |   // Shift by  8
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:0] == 3'b000) );
-
-
-   assign shortq_enable           =  valid_ff_x & (m_ff[31:0] != 32'b0) & (shortq_raw[3:0] != 4'b0);
-
-   assign shortq_shift[3:0]       = ({4{shortq_enable}} & shortq_raw[3:0]);
-
-   assign shortq[5:0]             =  6'b0;
-   assign shortq_shift[5:4]       =  2'b0;
-   assign shortq_shift_ff[5]      =  1'b0;
-
-   assign shortq_shift_ff[4:0]    = ({5{shortq_shift_xx[3]}} & 5'b1_1111) |   // 31
-                                    ({5{shortq_shift_xx[2]}} & 5'b1_1000) |   // 24
-                                    ({5{shortq_shift_xx[1]}} & 5'b1_0000) |   // 16
-                                    ({5{shortq_shift_xx[0]}} & 5'b0_1000);    //  8
-
-   // *** End   Short *** }}
-
-
-
-
-
-   assign div_clken               =  valid_in | run_state | finish | finish_ff;
-
-   assign run_in                  = (valid_in | run_state) & ~finish & ~cancel;
-
-   assign count_in[5:0]           = {6{run_state & ~finish & ~cancel & ~shortq_enable}} & (count[5:0] + {1'b0,shortq_shift_ff[4:0]} + 6'd1);
-
-
-   assign finish                  = (smallnum_case | ((~rem_ff) ? (count[5:0] == 6'd32) : (count[5:0] == 6'd33)));
-
-   assign valid_out               =  finish_ff & ~cancel;
-
-   assign sign_eff                =  signed_in & (divisor_in[31:0] != 32'b0);
-
-
-   assign q_in[32:0]              = ({33{~run_state                                   }} &  {1'b0,dividend_in[31:0]}) |
-                                    ({33{ run_state &  (valid_ff_x | shortq_enable_ff)}} &  ({dividend_eff[31:0], ~a_in[32]} << shortq_shift_ff[4:0])) |
-                                    ({33{ run_state & ~(valid_ff_x | shortq_enable_ff)}} &  {q_ff[31:0], ~a_in[32]});
-
-   assign qff_enable              =  valid_in | (run_state & ~shortq_enable);
-
-
-
-
-   assign dividend_eff[31:0]      = (sign_ff & dividend_neg_ff) ? dividend_comp[31:0] : q_ff[31:0];
-
-
-   assign m_eff[32:0]             = ( add ) ? m_ff[32:0] : ~m_ff[32:0];
-
-   assign a_eff_shift[64:0]       = {33'b0, dividend_eff[31:0]} << shortq_shift_ff[4:0];
-
-   assign a_eff[32:0]             = ({33{ rem_correct                    }} &  a_ff[32:0]            ) |
-                                    ({33{~rem_correct & ~shortq_enable_ff}} & {a_ff[31:0], q_ff[32]} ) |
-                                    ({33{~rem_correct &  shortq_enable_ff}} &  a_eff_shift[64:32]    );
-
-   assign a_shift[32:0]           = {33{run_state}} & a_eff[32:0];
-
-   assign a_in[32:0]              = {33{run_state}} & (a_shift[32:0] + m_eff[32:0] + {32'b0,~add});
-
-   assign aff_enable              =  valid_in | (run_state & ~shortq_enable & (count[5:0]!=6'd33)) | rem_correct;
-
-
-   assign m_already_comp          = (divisor_neg_ff & sign_ff);
-
-   // if m already complemented, then invert operation add->sub, sub->add
-   assign add                     = (a_ff[32] | rem_correct) ^ m_already_comp;
-
-   assign rem_correct             = (count[5:0] == 6'd33) & rem_ff & a_ff[32];
-
-
-
-   assign q_ff_eff[31:0]          = (sign_ff & (dividend_neg_ff ^ divisor_neg_ff)) ? q_ff_comp[31:0] : q_ff[31:0];
-
-   assign a_ff_eff[31:0]          = (sign_ff &  dividend_neg_ff) ? a_ff_comp[31:0] : a_ff[31:0];
-
-   assign data_out[31:0]          = ({32{ smallnum_case_ff          }} & {28'b0, smallnum_ff[3:0]}) |
-                                    ({32{                     rem_ff}} &  a_ff_eff[31:0]          ) |
-                                    ({32{~smallnum_case_ff & ~rem_ff}} &  q_ff_eff[31:0]          );
-
-
-
-
-endmodule // eb1_exu_div_existing_1bit_cheapshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_1bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in, b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable, r_sign_sel, r_restore_sel, r_adder_sel;
-   logic        [31:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic                   quotient_set;
-   logic        [32:0]     adder_out;
-
-   logic        [63:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(32) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[31:0]),           .dout(r_ff[31:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {6'b0,1'b1} + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[63:0]       = { {32{dividend_sign_ff}} , a_ff[31:0]} << shortq_shift_ff[4:0];
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[30:0],1'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & ~quotient_set & ~shortq_enable_ff;
-   assign r_adder_sel            =  running_state &  quotient_set & ~shortq_enable_ff;
-
-
-   assign r_in[31:0]             = ( {32{r_sign_sel      }} &  32'hffffffff          ) |
-                                   ( {32{r_restore_sel   }} & {r_ff[30:0] ,a_ff[31]} ) |
-                                   ( {32{r_adder_sel     }} &  adder_out[31:0]       ) |
-                                   ( {32{shortq_enable_ff}} &  ar_shifted[63:32]     ) |
-                                   ( {32{by_zero_case    }} &  a_ff[31:0]            );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff       }} & {q_ff[30:0], quotient_set}  ) |
-                                   ( {32{ smallnum_case  }} & {28'b0     , smallnum[3:0]} ) |
-                                   ( {32{ by_zero_case   }} & {32{1'b1}}                  );
-
-
-
-   assign adder_out[32:0]        = {r_ff[31:0],a_ff[31]} + {b_ff[32:0] };
-
-
-   assign quotient_set           = (~adder_out[32] ^ dividend_sign_ff) | ( (a_ff[30:0] == 31'b0) & (adder_out[32:0] == 33'b0) );
-
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:1] ==  4'b1111) & ~cancel;
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  (5'b11111 - shortq[4:0]);
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_1bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_2bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [34:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable, r_sign_sel, r_restore_sel, r_adder1_sel, r_adder2_sel, r_adder3_sel;
-   logic        [31:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic         [3:1]     quotient_raw;
-   logic         [1:0]     quotient_new;
-   logic        [32:0]     adder1_out;
-   logic        [33:0]     adder2_out;
-   logic        [34:0]     adder3_out;
-
-   logic        [63:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:1]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(18) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:1],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:1], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(32) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[31:0]),           .dout(r_ff[31:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {5'b0,2'b10} + {2'b0,shortq_shift_ff[4:1],1'b0});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[63:0]       = { {32{dividend_sign_ff}} , a_ff[31:0]} << {shortq_shift_ff[4:1],1'b0};
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[29:0],2'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[1:0] == 2'b00) & ~shortq_enable_ff;
-   assign r_adder1_sel           =  running_state & (quotient_new[1:0] == 2'b01) & ~shortq_enable_ff;
-   assign r_adder2_sel           =  running_state & (quotient_new[1:0] == 2'b10) & ~shortq_enable_ff;
-   assign r_adder3_sel           =  running_state & (quotient_new[1:0] == 2'b11) & ~shortq_enable_ff;
-
-
-   assign r_in[31:0]             = ( {32{r_sign_sel      }} &  32'hffffffff             ) |
-                                   ( {32{r_restore_sel   }} & {r_ff[29:0] ,a_ff[31:30]} ) |
-                                   ( {32{r_adder1_sel    }} &  adder1_out[31:0]         ) |
-                                   ( {32{r_adder2_sel    }} &  adder2_out[31:0]         ) |
-                                   ( {32{r_adder3_sel    }} &  adder3_out[31:0]         ) |
-                                   ( {32{shortq_enable_ff}} &  ar_shifted[63:32]        ) |
-                                   ( {32{by_zero_case    }} &  a_ff[31:0]               );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff       }} & {q_ff[29:0], quotient_new[1:0]} ) |
-                                   ( {32{ smallnum_case  }} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case   }} & {32{1'b1}}                      );
-
-
-   assign b_ff[34:33]            = {b_ff[32],b_ff[32]};
-
-
-   assign adder1_out[32:0]       = {         r_ff[30:0],a_ff[31:30]}  +                       b_ff[32:0];
-   assign adder2_out[33:0]       = {         r_ff[31:0],a_ff[31:30]}  + {b_ff[32:0],1'b0};
-   assign adder3_out[34:0]       = {r_ff[31],r_ff[31:0],a_ff[31:30]}  + {b_ff[33:0],1'b0}  +  b_ff[34:0];
-
-
-   assign quotient_raw[1]        = (~adder1_out[32] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder1_out[32:0] == 33'b0) );
-   assign quotient_raw[2]        = (~adder2_out[33] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder2_out[33:0] == 34'b0) );
-   assign quotient_raw[3]        = (~adder3_out[34] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder3_out[34:0] == 35'b0) );
-
-   assign quotient_new[1]        = quotient_raw[3] |  quotient_raw[2];
-   assign quotient_new[0]        = quotient_raw[3] |(~quotient_raw[2] & quotient_raw[1]);
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:1] ==  4'b1111) & ~cancel;
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  (5'b11111 - shortq[4:0]);   // [0] is unused
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_2bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_3bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [32:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [36:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable;
-   logic                   r_sign_sel;
-   logic                   r_restore_sel;
-   logic                   r_adder1_sel, r_adder2_sel, r_adder3_sel, r_adder4_sel, r_adder5_sel, r_adder6_sel, r_adder7_sel;
-   logic        [32:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic         [7:1]     quotient_raw;
-   logic         [2:0]     quotient_new;
-   logic        [33:0]     adder1_out;
-   logic        [34:0]     adder2_out;
-   logic        [35:0]     adder3_out;
-   logic        [36:0]     adder4_out;
-   logic        [36:0]     adder5_out;
-   logic        [36:0]     adder6_out;
-   logic        [36:0]     adder7_out;
-
-   logic        [65:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_decode;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(33) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[32:0]),           .dout(a_ff[32:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(33) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[32:0]),           .dout(r_ff[32:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd33);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {5'b0,2'b11} + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[65:0]       = { {33{dividend_sign_ff}} , a_ff[32:0]} << {shortq_shift_ff[4:0]};
-
-   assign a_in[32:0]             = ( {33{~a_shift & ~shortq_enable_ff}} & {signed_in & dividend_in[31],dividend_in[31:0]} ) |
-                                   ( {33{ a_shift                    }} & {a_ff[29:0],3'b0}  ) |
-                                   ( {33{            shortq_enable_ff}} &  ar_shifted[32:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[2:0] == 3'b000) & ~shortq_enable_ff;
-   assign r_adder1_sel           =  running_state & (quotient_new[2:0] == 3'b001) & ~shortq_enable_ff;
-   assign r_adder2_sel           =  running_state & (quotient_new[2:0] == 3'b010) & ~shortq_enable_ff;
-   assign r_adder3_sel           =  running_state & (quotient_new[2:0] == 3'b011) & ~shortq_enable_ff;
-   assign r_adder4_sel           =  running_state & (quotient_new[2:0] == 3'b100) & ~shortq_enable_ff;
-   assign r_adder5_sel           =  running_state & (quotient_new[2:0] == 3'b101) & ~shortq_enable_ff;
-   assign r_adder6_sel           =  running_state & (quotient_new[2:0] == 3'b110) & ~shortq_enable_ff;
-   assign r_adder7_sel           =  running_state & (quotient_new[2:0] == 3'b111) & ~shortq_enable_ff;
-
-
-   assign r_in[32:0]             = ( {33{r_sign_sel      }} & {33{1'b1}}               ) |
-                                   ( {33{r_restore_sel   }} & {r_ff[29:0] ,a_ff[32:30]} ) |
-                                   ( {33{r_adder1_sel    }} &  adder1_out[32:0]         ) |
-                                   ( {33{r_adder2_sel    }} &  adder2_out[32:0]         ) |
-                                   ( {33{r_adder3_sel    }} &  adder3_out[32:0]         ) |
-                                   ( {33{r_adder4_sel    }} &  adder4_out[32:0]         ) |
-                                   ( {33{r_adder5_sel    }} &  adder5_out[32:0]         ) |
-                                   ( {33{r_adder6_sel    }} &  adder6_out[32:0]         ) |
-                                   ( {33{r_adder7_sel    }} &  adder7_out[32:0]         ) |
-                                   ( {33{shortq_enable_ff}} &  ar_shifted[65:33]        ) |
-                                   ( {33{by_zero_case    }} & {1'b0,a_ff[31:0]}         );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff     }} & {q_ff[28:0], quotient_new[2:0]} ) |
-                                   ( {32{ smallnum_case}} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case }} & {32{1'b1}}                      );
-
-
-   assign b_ff[36:33]            = {b_ff[32],b_ff[32],b_ff[32],b_ff[32]};
-
-
-   assign adder1_out[33:0]       = {         r_ff[30:0],a_ff[32:30]}  +                                              b_ff[33:0];
-   assign adder2_out[34:0]       = {         r_ff[31:0],a_ff[32:30]}  +                        {b_ff[33:0],1'b0};
-   assign adder3_out[35:0]       = {         r_ff[32:0],a_ff[32:30]}  +                        {b_ff[34:0],1'b0}  +  b_ff[35:0];
-   assign adder4_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0};
-   assign adder5_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +                        b_ff[36:0];
-   assign adder6_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +  {b_ff[35:0],1'b0};
-   assign adder7_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +  {b_ff[35:0],1'b0}  +  b_ff[36:0];
-
-   assign quotient_raw[1]        = (~adder1_out[33] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder1_out[33:0] == 34'b0) );
-   assign quotient_raw[2]        = (~adder2_out[34] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder2_out[34:0] == 35'b0) );
-   assign quotient_raw[3]        = (~adder3_out[35] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder3_out[35:0] == 36'b0) );
-   assign quotient_raw[4]        = (~adder4_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder4_out[36:0] == 37'b0) );
-   assign quotient_raw[5]        = (~adder5_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder5_out[36:0] == 37'b0) );
-   assign quotient_raw[6]        = (~adder6_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder6_out[36:0] == 37'b0) );
-   assign quotient_raw[7]        = (~adder7_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder7_out[36:0] == 37'b0) );
-
-   assign quotient_new[2]        = quotient_raw[7] |   quotient_raw[6] | quotient_raw[5]  |   quotient_raw[4];
-   assign quotient_new[1]        = quotient_raw[7] |   quotient_raw[6] |                    (~quotient_raw[4] & quotient_raw[3]) | (~quotient_raw[3] & quotient_raw[2]);
-   assign quotient_new[0]        = quotient_raw[7] | (~quotient_raw[6] & quotient_raw[5]) | (~quotient_raw[4] & quotient_raw[3]) | (~quotient_raw[2] & quotient_raw[1]);
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:2] ==  3'b111) & ~cancel;
-
-   assign shortq_decode[4:0]      = ( {5{shortq[4:0] == 5'd31}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd30}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd29}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd28}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd27}} & 5'd03) |
-                                    ( {5{shortq[4:0] == 5'd26}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd25}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd24}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd23}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd22}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd21}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd20}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd19}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd18}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd17}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd16}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd15}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd14}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd13}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd12}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd11}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd10}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd09}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd08}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd07}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd06}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd05}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd04}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd03}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd02}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd01}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd00}} & 5'd27);
-
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  shortq_decode[4:0];
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_3bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_4bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [37:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable;
-   logic                   r_sign_sel;
-   logic                   r_restore_sel;
-   logic                   r_adder01_sel, r_adder02_sel, r_adder03_sel;
-   logic                   r_adder04_sel, r_adder05_sel, r_adder06_sel, r_adder07_sel;
-   logic                   r_adder08_sel, r_adder09_sel, r_adder10_sel, r_adder11_sel;
-   logic                   r_adder12_sel, r_adder13_sel, r_adder14_sel, r_adder15_sel;
-   logic        [32:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic        [15:1]     quotient_raw;
-   logic         [3:0]     quotient_new;
-   logic        [34:0]     adder01_out;
-   logic        [35:0]     adder02_out;
-   logic        [36:0]     adder03_out;
-   logic        [37:0]     adder04_out;
-   logic        [37:0]     adder05_out;
-   logic        [37:0]     adder06_out;
-   logic        [37:0]     adder07_out;
-   logic        [37:0]     adder08_out;
-   logic        [37:0]     adder09_out;
-   logic        [37:0]     adder10_out;
-   logic        [37:0]     adder11_out;
-   logic        [37:0]     adder12_out;
-   logic        [37:0]     adder13_out;
-   logic        [37:0]     adder14_out;
-   logic        [37:0]     adder15_out;
-
-   logic        [64:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_decode;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),     .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                       .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),        .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),        .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(33) i_r_ff           (.*, .clk(clk), .en(rq_enable),       .din(r_in[32:0]),           .dout(r_ff[32:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),       .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + 7'd4 + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[64:0]       = { {33{dividend_sign_ff}} , a_ff[31:0]} << {shortq_shift_ff[4:0]};
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[27:0],4'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[3:0] == 4'd00) & ~shortq_enable_ff;
-   assign r_adder01_sel          =  running_state & (quotient_new[3:0] == 4'd01) & ~shortq_enable_ff;
-   assign r_adder02_sel          =  running_state & (quotient_new[3:0] == 4'd02) & ~shortq_enable_ff;
-   assign r_adder03_sel          =  running_state & (quotient_new[3:0] == 4'd03) & ~shortq_enable_ff;
-   assign r_adder04_sel          =  running_state & (quotient_new[3:0] == 4'd04) & ~shortq_enable_ff;
-   assign r_adder05_sel          =  running_state & (quotient_new[3:0] == 4'd05) & ~shortq_enable_ff;
-   assign r_adder06_sel          =  running_state & (quotient_new[3:0] == 4'd06) & ~shortq_enable_ff;
-   assign r_adder07_sel          =  running_state & (quotient_new[3:0] == 4'd07) & ~shortq_enable_ff;
-   assign r_adder08_sel          =  running_state & (quotient_new[3:0] == 4'd08) & ~shortq_enable_ff;
-   assign r_adder09_sel          =  running_state & (quotient_new[3:0] == 4'd09) & ~shortq_enable_ff;
-   assign r_adder10_sel          =  running_state & (quotient_new[3:0] == 4'd10) & ~shortq_enable_ff;
-   assign r_adder11_sel          =  running_state & (quotient_new[3:0] == 4'd11) & ~shortq_enable_ff;
-   assign r_adder12_sel          =  running_state & (quotient_new[3:0] == 4'd12) & ~shortq_enable_ff;
-   assign r_adder13_sel          =  running_state & (quotient_new[3:0] == 4'd13) & ~shortq_enable_ff;
-   assign r_adder14_sel          =  running_state & (quotient_new[3:0] == 4'd14) & ~shortq_enable_ff;
-   assign r_adder15_sel          =  running_state & (quotient_new[3:0] == 4'd15) & ~shortq_enable_ff;
-
-   assign r_in[32:0]             = ( {33{r_sign_sel      }} & {33{1'b1}}               ) |
-                                   ( {33{r_restore_sel   }} & {r_ff[28:0],a_ff[31:28]} ) |
-                                   ( {33{r_adder01_sel   }} &  adder01_out[32:0]       ) |
-                                   ( {33{r_adder02_sel   }} &  adder02_out[32:0]       ) |
-                                   ( {33{r_adder03_sel   }} &  adder03_out[32:0]       ) |
-                                   ( {33{r_adder04_sel   }} &  adder04_out[32:0]       ) |
-                                   ( {33{r_adder05_sel   }} &  adder05_out[32:0]       ) |
-                                   ( {33{r_adder06_sel   }} &  adder06_out[32:0]       ) |
-                                   ( {33{r_adder07_sel   }} &  adder07_out[32:0]       ) |
-                                   ( {33{r_adder08_sel   }} &  adder08_out[32:0]       ) |
-                                   ( {33{r_adder09_sel   }} &  adder09_out[32:0]       ) |
-                                   ( {33{r_adder10_sel   }} &  adder10_out[32:0]       ) |
-                                   ( {33{r_adder11_sel   }} &  adder11_out[32:0]       ) |
-                                   ( {33{r_adder12_sel   }} &  adder12_out[32:0]       ) |
-                                   ( {33{r_adder13_sel   }} &  adder13_out[32:0]       ) |
-                                   ( {33{r_adder14_sel   }} &  adder14_out[32:0]       ) |
-                                   ( {33{r_adder15_sel   }} &  adder15_out[32:0]       ) |
-                                   ( {33{shortq_enable_ff}} &  ar_shifted[64:32]       ) |
-                                   ( {33{by_zero_case    }} & {1'b0,a_ff[31:0]}        );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff     }} & {q_ff[27:0], quotient_new[3:0]} ) |
-                                   ( {32{ smallnum_case}} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case }} & {32{1'b1}}                      );
-
-
-   assign b_ff[37:33]            = {b_ff[32],b_ff[32],b_ff[32],b_ff[32],b_ff[32]};
-
-
-   assign adder01_out[34:0]      = {         r_ff[30:0],a_ff[31:28]}  +                                                                   b_ff[34:0];
-   assign adder02_out[35:0]      = {         r_ff[31:0],a_ff[31:28]}  +                                             {b_ff[34:0],1'b0};
-   assign adder03_out[36:0]      = {         r_ff[32:0],a_ff[31:28]}  +                                             {b_ff[35:0],1'b0}  +  b_ff[36:0];
-   assign adder04_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0};
-   assign adder05_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +                        b_ff[37:0];
-   assign adder06_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0};
-   assign adder07_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0}  +  b_ff[37:0];
-   assign adder08_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0};
-   assign adder09_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                                              b_ff[37:0];
-   assign adder10_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                        {b_ff[36:0],1'b0};
-   assign adder11_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                        {b_ff[36:0],1'b0}  +  b_ff[37:0];
-   assign adder12_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0};
-   assign adder13_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +                        b_ff[37:0];
-   assign adder14_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0};
-   assign adder15_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0}  +  b_ff[37:0];
-
-   assign quotient_raw[01]       = (~adder01_out[34] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder01_out[34:0] == 35'b0) );
-   assign quotient_raw[02]       = (~adder02_out[35] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder02_out[35:0] == 36'b0) );
-   assign quotient_raw[03]       = (~adder03_out[36] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder03_out[36:0] == 37'b0) );
-   assign quotient_raw[04]       = (~adder04_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder04_out[37:0] == 38'b0) );
-   assign quotient_raw[05]       = (~adder05_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder05_out[37:0] == 38'b0) );
-   assign quotient_raw[06]       = (~adder06_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder06_out[37:0] == 38'b0) );
-   assign quotient_raw[07]       = (~adder07_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder07_out[37:0] == 38'b0) );
-   assign quotient_raw[08]       = (~adder08_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder08_out[37:0] == 38'b0) );
-   assign quotient_raw[09]       = (~adder09_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder09_out[37:0] == 38'b0) );
-   assign quotient_raw[10]       = (~adder10_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder10_out[37:0] == 38'b0) );
-   assign quotient_raw[11]       = (~adder11_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder11_out[37:0] == 38'b0) );
-   assign quotient_raw[12]       = (~adder12_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder12_out[37:0] == 38'b0) );
-   assign quotient_raw[13]       = (~adder13_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder13_out[37:0] == 38'b0) );
-   assign quotient_raw[14]       = (~adder14_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder14_out[37:0] == 38'b0) );
-   assign quotient_raw[15]       = (~adder15_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder15_out[37:0] == 38'b0) );
-
-
-   assign quotient_new[0]        = ( quotient_raw[15:01] == 15'b000_0000_0000_0001 ) |  //  1
-                                   ( quotient_raw[15:03] == 13'b000_0000_0000_01   ) |  //  3
-                                   ( quotient_raw[15:05] == 11'b000_0000_0001      ) |  //  5
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:09] ==  7'b000_0001           ) |  //  9
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[1]        = ( quotient_raw[15:02] == 14'b000_0000_0000_001  ) |  //  2
-                                   ( quotient_raw[15:03] == 13'b000_0000_0000_01   ) |  //  3
-                                   ( quotient_raw[15:06] == 10'b000_0000_001       ) |  //  6
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:10] ==  6'b000_001            ) |  // 10
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[2]        = ( quotient_raw[15:04] == 12'b000_0000_0000_1    ) |  //  4
-                                   ( quotient_raw[15:05] == 11'b000_0000_0001      ) |  //  5
-                                   ( quotient_raw[15:06] == 10'b000_0000_001       ) |  //  6
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:12] ==  4'b000_1              ) |  // 12
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[3]        = ( quotient_raw[15:08] ==  8'b000_0000_1         ) |  //  8
-                                   ( quotient_raw[15:09] ==  7'b000_0001           ) |  //  9
-                                   ( quotient_raw[15:10] ==  6'b000_001            ) |  // 10
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:12] ==  4'b000_1              ) |  // 12
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:2] ==  3'b111) & ~cancel;
-
-   assign shortq_decode[4:0]      = ( {5{shortq[4:0] == 5'd31}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd30}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd29}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd28}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd27}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd26}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd25}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd24}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd23}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd22}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd21}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd20}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd19}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd18}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd17}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd16}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd15}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd14}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd13}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd12}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd11}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd10}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd09}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd08}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd07}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd06}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd05}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd04}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd03}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd02}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd01}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd00}} & 5'd28);
-
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  shortq_decode[4:0];
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_4bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-module eb1_exu_div_cls
-  (
-   input  logic [32:0] operand,
-
-   output logic [4:0]  cls                  // Count leading sign bits - "n" format ignoring [32]
-   );
-
-
-   logic [4:0]   cls_zeros;
-   logic [4:0]   cls_ones;
-
-
-assign cls_zeros[4:0]             = ({5{operand[31]    ==  {           1'b1} }} & 5'd00) |
-                                    ({5{operand[31:30] ==  {{ 1{1'b0}},1'b1} }} & 5'd01) |
-                                    ({5{operand[31:29] ==  {{ 2{1'b0}},1'b1} }} & 5'd02) |
-                                    ({5{operand[31:28] ==  {{ 3{1'b0}},1'b1} }} & 5'd03) |
-                                    ({5{operand[31:27] ==  {{ 4{1'b0}},1'b1} }} & 5'd04) |
-                                    ({5{operand[31:26] ==  {{ 5{1'b0}},1'b1} }} & 5'd05) |
-                                    ({5{operand[31:25] ==  {{ 6{1'b0}},1'b1} }} & 5'd06) |
-                                    ({5{operand[31:24] ==  {{ 7{1'b0}},1'b1} }} & 5'd07) |
-                                    ({5{operand[31:23] ==  {{ 8{1'b0}},1'b1} }} & 5'd08) |
-                                    ({5{operand[31:22] ==  {{ 9{1'b0}},1'b1} }} & 5'd09) |
-                                    ({5{operand[31:21] ==  {{10{1'b0}},1'b1} }} & 5'd10) |
-                                    ({5{operand[31:20] ==  {{11{1'b0}},1'b1} }} & 5'd11) |
-                                    ({5{operand[31:19] ==  {{12{1'b0}},1'b1} }} & 5'd12) |
-                                    ({5{operand[31:18] ==  {{13{1'b0}},1'b1} }} & 5'd13) |
-                                    ({5{operand[31:17] ==  {{14{1'b0}},1'b1} }} & 5'd14) |
-                                    ({5{operand[31:16] ==  {{15{1'b0}},1'b1} }} & 5'd15) |
-                                    ({5{operand[31:15] ==  {{16{1'b0}},1'b1} }} & 5'd16) |
-                                    ({5{operand[31:14] ==  {{17{1'b0}},1'b1} }} & 5'd17) |
-                                    ({5{operand[31:13] ==  {{18{1'b0}},1'b1} }} & 5'd18) |
-                                    ({5{operand[31:12] ==  {{19{1'b0}},1'b1} }} & 5'd19) |
-                                    ({5{operand[31:11] ==  {{20{1'b0}},1'b1} }} & 5'd20) |
-                                    ({5{operand[31:10] ==  {{21{1'b0}},1'b1} }} & 5'd21) |
-                                    ({5{operand[31:09] ==  {{22{1'b0}},1'b1} }} & 5'd22) |
-                                    ({5{operand[31:08] ==  {{23{1'b0}},1'b1} }} & 5'd23) |
-                                    ({5{operand[31:07] ==  {{24{1'b0}},1'b1} }} & 5'd24) |
-                                    ({5{operand[31:06] ==  {{25{1'b0}},1'b1} }} & 5'd25) |
-                                    ({5{operand[31:05] ==  {{26{1'b0}},1'b1} }} & 5'd26) |
-                                    ({5{operand[31:04] ==  {{27{1'b0}},1'b1} }} & 5'd27) |
-                                    ({5{operand[31:03] ==  {{28{1'b0}},1'b1} }} & 5'd28) |
-                                    ({5{operand[31:02] ==  {{29{1'b0}},1'b1} }} & 5'd29) |
-                                    ({5{operand[31:01] ==  {{30{1'b0}},1'b1} }} & 5'd30) |
-                                    ({5{operand[31:00] ==  {{31{1'b0}},1'b1} }} & 5'd31) |
-                                    ({5{operand[31:00] ==  {{32{1'b0}}     } }} & 5'd00);    // Don't care case as it will be handled as special case
-
-
-assign cls_ones[4:0]              = ({5{operand[31:30] ==  {{ 1{1'b1}},1'b0} }} & 5'd00) |
-                                    ({5{operand[31:29] ==  {{ 2{1'b1}},1'b0} }} & 5'd01) |
-                                    ({5{operand[31:28] ==  {{ 3{1'b1}},1'b0} }} & 5'd02) |
-                                    ({5{operand[31:27] ==  {{ 4{1'b1}},1'b0} }} & 5'd03) |
-                                    ({5{operand[31:26] ==  {{ 5{1'b1}},1'b0} }} & 5'd04) |
-                                    ({5{operand[31:25] ==  {{ 6{1'b1}},1'b0} }} & 5'd05) |
-                                    ({5{operand[31:24] ==  {{ 7{1'b1}},1'b0} }} & 5'd06) |
-                                    ({5{operand[31:23] ==  {{ 8{1'b1}},1'b0} }} & 5'd07) |
-                                    ({5{operand[31:22] ==  {{ 9{1'b1}},1'b0} }} & 5'd08) |
-                                    ({5{operand[31:21] ==  {{10{1'b1}},1'b0} }} & 5'd09) |
-                                    ({5{operand[31:20] ==  {{11{1'b1}},1'b0} }} & 5'd10) |
-                                    ({5{operand[31:19] ==  {{12{1'b1}},1'b0} }} & 5'd11) |
-                                    ({5{operand[31:18] ==  {{13{1'b1}},1'b0} }} & 5'd12) |
-                                    ({5{operand[31:17] ==  {{14{1'b1}},1'b0} }} & 5'd13) |
-                                    ({5{operand[31:16] ==  {{15{1'b1}},1'b0} }} & 5'd14) |
-                                    ({5{operand[31:15] ==  {{16{1'b1}},1'b0} }} & 5'd15) |
-                                    ({5{operand[31:14] ==  {{17{1'b1}},1'b0} }} & 5'd16) |
-                                    ({5{operand[31:13] ==  {{18{1'b1}},1'b0} }} & 5'd17) |
-                                    ({5{operand[31:12] ==  {{19{1'b1}},1'b0} }} & 5'd18) |
-                                    ({5{operand[31:11] ==  {{20{1'b1}},1'b0} }} & 5'd19) |
-                                    ({5{operand[31:10] ==  {{21{1'b1}},1'b0} }} & 5'd20) |
-                                    ({5{operand[31:09] ==  {{22{1'b1}},1'b0} }} & 5'd21) |
-                                    ({5{operand[31:08] ==  {{23{1'b1}},1'b0} }} & 5'd22) |
-                                    ({5{operand[31:07] ==  {{24{1'b1}},1'b0} }} & 5'd23) |
-                                    ({5{operand[31:06] ==  {{25{1'b1}},1'b0} }} & 5'd24) |
-                                    ({5{operand[31:05] ==  {{26{1'b1}},1'b0} }} & 5'd25) |
-                                    ({5{operand[31:04] ==  {{27{1'b1}},1'b0} }} & 5'd26) |
-                                    ({5{operand[31:03] ==  {{28{1'b1}},1'b0} }} & 5'd27) |
-                                    ({5{operand[31:02] ==  {{29{1'b1}},1'b0} }} & 5'd28) |
-                                    ({5{operand[31:01] ==  {{30{1'b1}},1'b0} }} & 5'd29) |
-                                    ({5{operand[31:00] ==  {{31{1'b1}},1'b0} }} & 5'd30) |
-                                    ({5{operand[31:00] ==  {{32{1'b1}}     } }} & 5'd31);
-
-
-assign cls[4:0]                   =  operand[32]  ?  cls_ones[4:0]  :  cls_zeros[4:0];
-
-endmodule // eb1_exu_div_cls
diff --git a/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu_mul_ctl.sv b/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu_mul_ctl.sv
deleted file mode 100644
index 345d5f4..0000000
--- a/verilog/rtl/BrqRV_EB1/design/exu/eb1_exu_mul_ctl.sv
+++ /dev/null
@@ -1,627 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_mul_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic          clk,              // Top level clock
-   input logic          rst_l,            // Reset
-   input logic          scan_mode,        // Scan mode
-
-   input eb1_mul_pkt_t mul_p,            // {Valid, RS1 signed operand, RS2 signed operand, Select low 32-bits of result}
-
-   input logic [31:0]   rs1_in,           // A operand
-   input logic [31:0]   rs2_in,           // B operand
-
-
-   output logic [31:0]  result_x          // Result
-  );
-
-
-   logic                mul_x_enable;
-   logic                bit_x_enable;
-   logic signed [32:0]  rs1_ext_in;
-   logic signed [32:0]  rs2_ext_in;
-   logic        [65:0]  prod_x;
-   logic                low_x;
-
-
-
-   // *** Start - BitManip ***
-
-   logic                bitmanip_sel_d;
-   logic                bitmanip_sel_x;
-   logic        [31:0]  bitmanip_d;
-   logic        [31:0]  bitmanip_x;
-
-
-
-   // ZBE
-   logic                ap_bext;
-   logic                ap_bdep;
-
-   // ZBC
-   logic                ap_clmul;
-   logic                ap_clmulh;
-   logic                ap_clmulr;
-
-   // ZBP
-   logic                ap_grev;
-   logic                ap_gorc;
-   logic                ap_shfl;
-   logic                ap_unshfl;
-
-   // ZBR
-   logic                ap_crc32_b;
-   logic                ap_crc32_h;
-   logic                ap_crc32_w;
-   logic                ap_crc32c_b;
-   logic                ap_crc32c_h;
-   logic                ap_crc32c_w;
-
-   // ZBF
-   logic                ap_bfp;
-
-
-   if (pt.BITMANIP_ZBE == 1)
-     begin
-       assign ap_bext         =  mul_p.bext;
-       assign ap_bdep         =  mul_p.bdep;
-     end
-   else
-     begin
-       assign ap_bext         =  1'b0;
-       assign ap_bdep         =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBC == 1)
-     begin
-       assign ap_clmul        =  mul_p.clmul;
-       assign ap_clmulh       =  mul_p.clmulh;
-       assign ap_clmulr       =  mul_p.clmulr;
-     end
-   else
-     begin
-       assign ap_clmul        =  1'b0;
-       assign ap_clmulh       =  1'b0;
-       assign ap_clmulr       =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBP == 1)
-     begin
-       assign ap_grev         =  mul_p.grev;
-       assign ap_gorc         =  mul_p.gorc;
-       assign ap_shfl         =  mul_p.shfl;
-       assign ap_unshfl       =  mul_p.unshfl;
-     end
-   else
-     begin
-       assign ap_grev         =  1'b0;
-       assign ap_gorc         =  1'b0;
-       assign ap_shfl         =  1'b0;
-       assign ap_unshfl       =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBR == 1)
-     begin
-       assign ap_crc32_b      =  mul_p.crc32_b;
-       assign ap_crc32_h      =  mul_p.crc32_h;
-       assign ap_crc32_w      =  mul_p.crc32_w;
-       assign ap_crc32c_b     =  mul_p.crc32c_b;
-       assign ap_crc32c_h     =  mul_p.crc32c_h;
-       assign ap_crc32c_w     =  mul_p.crc32c_w;
-     end
-   else
-     begin
-       assign ap_crc32_b      =  1'b0;
-       assign ap_crc32_h      =  1'b0;
-       assign ap_crc32_w      =  1'b0;
-       assign ap_crc32c_b     =  1'b0;
-       assign ap_crc32c_h     =  1'b0;
-       assign ap_crc32c_w     =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBF == 1)
-     begin
-       assign ap_bfp          =  mul_p.bfp;
-     end
-   else
-     begin
-       assign ap_bfp          =  1'b0;
-     end
-
-
-   // *** End   - BitManip ***
-
-
-
-   assign mul_x_enable           =  mul_p.valid;
-   assign bit_x_enable           =  mul_p.valid;
-
-   assign rs1_ext_in[32]         =  mul_p.rs1_sign & rs1_in[31];
-   assign rs2_ext_in[32]         =  mul_p.rs2_sign & rs2_in[31];
-
-   assign rs1_ext_in[31:0]       =  rs1_in[31:0];
-   assign rs2_ext_in[31:0]       =  rs2_in[31:0];
-
-
-
-   // --------------------------- Multiply       ----------------------------------
-
-
-   logic signed [32:0]  rs1_x;
-   logic signed [32:0]  rs2_x;
-
-   rvdffe #(34) i_a_x_ff         (.*, .clk(clk),  .din({mul_p.low,rs1_ext_in[32:0]}),        .dout({low_x,rs1_x[32:0]}),                 .en(mul_x_enable));
-   rvdffe #(33) i_b_x_ff         (.*, .clk(clk),  .din(           rs2_ext_in[32:0] ),        .dout(       rs2_x[32:0] ),                 .en(mul_x_enable));
-
-
-   assign prod_x[65:0]           =  rs1_x  *  rs2_x;
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  BEXT, BDEP   * * * * * * * * * * * * * * * * * *
-
-
-   // *** BEXT == "gather"  ***
-
-   logic        [31:0]    bext_d;
-   logic                  bext_test_bit_d;
-   integer                bext_i, bext_j;
-
-
-   always_comb
-     begin
-
-       bext_j                    =      0;
-       bext_test_bit_d           =   1'b0;
-       bext_d[31:0]              =  32'b0;
-
-       for (bext_i=0; bext_i<32; bext_i++)
-         begin
-             bext_test_bit_d     =  rs2_in[bext_i];
-             if (bext_test_bit_d)
-               begin
-                  bext_d[bext_j] =  rs1_in[bext_i];
-                  bext_j         =  bext_j + 1;
-               end  // IF  bext_test_bit
-         end        // FOR bext_i
-     end            // ALWAYS_COMB
-
-
-
-   // *** BDEP == "scatter" ***
-
-   logic        [31:0]    bdep_d;
-   logic                  bdep_test_bit_d;
-   integer                bdep_i, bdep_j;
-
-
-   always_comb
-     begin
-
-       bdep_j                    =      0;
-       bdep_test_bit_d           =   1'b0;
-       bdep_d[31:0]              =  32'b0;
-
-       for (bdep_i=0; bdep_i<32; bdep_i++)
-         begin
-             bdep_test_bit_d     =  rs2_in[bdep_i];
-             if (bdep_test_bit_d)
-               begin
-                  bdep_d[bdep_i] =  rs1_in[bdep_j];
-                  bdep_j         =  bdep_j + 1;
-               end  // IF  bdep_test_bit
-         end        // FOR bdep_i
-     end            // ALWAYS_COMB
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CLMUL, CLMULH, CLMULR  * * * * * * * * * * * * *
-
-   logic        [62:0]    clmul_raw_d;
-
-
-   assign clmul_raw_d[62:0]      = ( {63{rs2_in[00]}} & {31'b0,rs1_in[31:0]      } ) ^
-                                   ( {63{rs2_in[01]}} & {30'b0,rs1_in[31:0], 1'b0} ) ^
-                                   ( {63{rs2_in[02]}} & {29'b0,rs1_in[31:0], 2'b0} ) ^
-                                   ( {63{rs2_in[03]}} & {28'b0,rs1_in[31:0], 3'b0} ) ^
-                                   ( {63{rs2_in[04]}} & {27'b0,rs1_in[31:0], 4'b0} ) ^
-                                   ( {63{rs2_in[05]}} & {26'b0,rs1_in[31:0], 5'b0} ) ^
-                                   ( {63{rs2_in[06]}} & {25'b0,rs1_in[31:0], 6'b0} ) ^
-                                   ( {63{rs2_in[07]}} & {24'b0,rs1_in[31:0], 7'b0} ) ^
-                                   ( {63{rs2_in[08]}} & {23'b0,rs1_in[31:0], 8'b0} ) ^
-                                   ( {63{rs2_in[09]}} & {22'b0,rs1_in[31:0], 9'b0} ) ^
-                                   ( {63{rs2_in[10]}} & {21'b0,rs1_in[31:0],10'b0} ) ^
-                                   ( {63{rs2_in[11]}} & {20'b0,rs1_in[31:0],11'b0} ) ^
-                                   ( {63{rs2_in[12]}} & {19'b0,rs1_in[31:0],12'b0} ) ^
-                                   ( {63{rs2_in[13]}} & {18'b0,rs1_in[31:0],13'b0} ) ^
-                                   ( {63{rs2_in[14]}} & {17'b0,rs1_in[31:0],14'b0} ) ^
-                                   ( {63{rs2_in[15]}} & {16'b0,rs1_in[31:0],15'b0} ) ^
-                                   ( {63{rs2_in[16]}} & {15'b0,rs1_in[31:0],16'b0} ) ^
-                                   ( {63{rs2_in[17]}} & {14'b0,rs1_in[31:0],17'b0} ) ^
-                                   ( {63{rs2_in[18]}} & {13'b0,rs1_in[31:0],18'b0} ) ^
-                                   ( {63{rs2_in[19]}} & {12'b0,rs1_in[31:0],19'b0} ) ^
-                                   ( {63{rs2_in[20]}} & {11'b0,rs1_in[31:0],20'b0} ) ^
-                                   ( {63{rs2_in[21]}} & {10'b0,rs1_in[31:0],21'b0} ) ^
-                                   ( {63{rs2_in[22]}} & { 9'b0,rs1_in[31:0],22'b0} ) ^
-                                   ( {63{rs2_in[23]}} & { 8'b0,rs1_in[31:0],23'b0} ) ^
-                                   ( {63{rs2_in[24]}} & { 7'b0,rs1_in[31:0],24'b0} ) ^
-                                   ( {63{rs2_in[25]}} & { 6'b0,rs1_in[31:0],25'b0} ) ^
-                                   ( {63{rs2_in[26]}} & { 5'b0,rs1_in[31:0],26'b0} ) ^
-                                   ( {63{rs2_in[27]}} & { 4'b0,rs1_in[31:0],27'b0} ) ^
-                                   ( {63{rs2_in[28]}} & { 3'b0,rs1_in[31:0],28'b0} ) ^
-                                   ( {63{rs2_in[29]}} & { 2'b0,rs1_in[31:0],29'b0} ) ^
-                                   ( {63{rs2_in[30]}} & { 1'b0,rs1_in[31:0],30'b0} ) ^
-                                   ( {63{rs2_in[31]}} & {      rs1_in[31:0],31'b0} );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  GREV         * * * * * * * * * * * * * * * * * *
-
-   // uint32_t grev32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 31;
-   //
-   //     if (shamt &  1)  x = ( (x & 0x55555555) <<  1) | ( (x & 0xAAAAAAAA) >>  1);
-   //     if (shamt &  2)  x = ( (x & 0x33333333) <<  2) | ( (x & 0xCCCCCCCC) >>  2);
-   //     if (shamt &  4)  x = ( (x & 0x0F0F0F0F) <<  4) | ( (x & 0xF0F0F0F0) >>  4);
-   //     if (shamt &  8)  x = ( (x & 0x00FF00FF) <<  8) | ( (x & 0xFF00FF00) >>  8);
-   //     if (shamt & 16)  x = ( (x & 0x0000FFFF) << 16) | ( (x & 0xFFFF0000) >> 16);
-   //
-   //     return x;
-   //  }
-
-
-   logic        [31:0]    grev1_d;
-   logic        [31:0]    grev2_d;
-   logic        [31:0]    grev4_d;
-   logic        [31:0]    grev8_d;
-   logic        [31:0]    grev_d;
-
-
-   assign grev1_d[31:0]       = (rs2_in[0])  ?  {rs1_in[30],rs1_in[31],rs1_in[28],rs1_in[29],rs1_in[26],rs1_in[27],rs1_in[24],rs1_in[25],
-                                                 rs1_in[22],rs1_in[23],rs1_in[20],rs1_in[21],rs1_in[18],rs1_in[19],rs1_in[16],rs1_in[17],
-                                                 rs1_in[14],rs1_in[15],rs1_in[12],rs1_in[13],rs1_in[10],rs1_in[11],rs1_in[08],rs1_in[09],
-                                                 rs1_in[06],rs1_in[07],rs1_in[04],rs1_in[05],rs1_in[02],rs1_in[03],rs1_in[00],rs1_in[01]}  :  rs1_in[31:0];
-
-   assign grev2_d[31:0]       = (rs2_in[1])  ?  {grev1_d[29:28],grev1_d[31:30],grev1_d[25:24],grev1_d[27:26],
-                                                 grev1_d[21:20],grev1_d[23:22],grev1_d[17:16],grev1_d[19:18],
-                                                 grev1_d[13:12],grev1_d[15:14],grev1_d[09:08],grev1_d[11:10],
-                                                 grev1_d[05:04],grev1_d[07:06],grev1_d[01:00],grev1_d[03:02]}  :  grev1_d[31:0];
-
-   assign grev4_d[31:0]       = (rs2_in[2])  ?  {grev2_d[27:24],grev2_d[31:28],grev2_d[19:16],grev2_d[23:20],
-                                                 grev2_d[11:08],grev2_d[15:12],grev2_d[03:00],grev2_d[07:04]}  :  grev2_d[31:0];
-
-   assign grev8_d[31:0]       = (rs2_in[3])  ?  {grev4_d[23:16],grev4_d[31:24],grev4_d[07:00],grev4_d[15:08]}  :  grev4_d[31:0];
-
-   assign grev_d[31:0]        = (rs2_in[4])  ?  {grev8_d[15:00],grev8_d[31:16]}  :  grev8_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  GORC         * * * * * * * * * * * * * * * * * *
-
-   // uint32_t gorc32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 31;
-   //
-   //     if (shamt &  1)  x |= ( (x & 0x55555555) <<  1) | ( (x & 0xAAAAAAAA) >>  1);
-   //     if (shamt &  2)  x |= ( (x & 0x33333333) <<  2) | ( (x & 0xCCCCCCCC) >>  2);
-   //     if (shamt &  4)  x |= ( (x & 0x0F0F0F0F) <<  4) | ( (x & 0xF0F0F0F0) >>  4);
-   //     if (shamt &  8)  x |= ( (x & 0x00FF00FF) <<  8) | ( (x & 0xFF00FF00) >>  8);
-   //     if (shamt & 16)  x |= ( (x & 0x0000FFFF) << 16) | ( (x & 0xFFFF0000) >> 16);
-   //
-   //     return x;
-   //  }
-
-
-   logic        [31:0]    gorc1_d;
-   logic        [31:0]    gorc2_d;
-   logic        [31:0]    gorc4_d;
-   logic        [31:0]    gorc8_d;
-   logic        [31:0]    gorc_d;
-
-
-   assign gorc1_d[31:0]       = ( {32{rs2_in[0]}} & {rs1_in[30],rs1_in[31],rs1_in[28],rs1_in[29],rs1_in[26],rs1_in[27],rs1_in[24],rs1_in[25],
-                                                     rs1_in[22],rs1_in[23],rs1_in[20],rs1_in[21],rs1_in[18],rs1_in[19],rs1_in[16],rs1_in[17],
-                                                     rs1_in[14],rs1_in[15],rs1_in[12],rs1_in[13],rs1_in[10],rs1_in[11],rs1_in[08],rs1_in[09],
-                                                     rs1_in[06],rs1_in[07],rs1_in[04],rs1_in[05],rs1_in[02],rs1_in[03],rs1_in[00],rs1_in[01]} ) | rs1_in[31:0];
-
-   assign gorc2_d[31:0]       = ( {32{rs2_in[1]}} & {gorc1_d[29:28],gorc1_d[31:30],gorc1_d[25:24],gorc1_d[27:26],
-                                                     gorc1_d[21:20],gorc1_d[23:22],gorc1_d[17:16],gorc1_d[19:18],
-                                                     gorc1_d[13:12],gorc1_d[15:14],gorc1_d[09:08],gorc1_d[11:10],
-                                                     gorc1_d[05:04],gorc1_d[07:06],gorc1_d[01:00],gorc1_d[03:02]} ) | gorc1_d[31:0];
-
-   assign gorc4_d[31:0]       = ( {32{rs2_in[2]}} & {gorc2_d[27:24],gorc2_d[31:28],gorc2_d[19:16],gorc2_d[23:20],
-                                                     gorc2_d[11:08],gorc2_d[15:12],gorc2_d[03:00],gorc2_d[07:04]} ) | gorc2_d[31:0];
-
-   assign gorc8_d[31:0]       = ( {32{rs2_in[3]}} & {gorc4_d[23:16],gorc4_d[31:24],gorc4_d[07:00],gorc4_d[15:08]} ) | gorc4_d[31:0];
-
-   assign gorc_d[31:0]        = ( {32{rs2_in[4]}} & {gorc8_d[15:00],gorc8_d[31:16]} ) | gorc8_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SHFL, UNSHLF * * * * * * * * * * * * * * * * * *
-
-   // uint32_t shuffle32_stage (uint32_t src, uint32_t maskL, uint32_t maskR, int N)
-   // {
-   //     uint32_t x  = src & ~(maskL | maskR);
-   //     x          |= ((src << N) & maskL) | ((src >> N) & maskR);
-   //     return x;
-   // }
-   //
-   //
-   //
-   // uint32_t shfl32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 15
-   //
-   //     if (shamt & 8)  x = shuffle32_stage(x, 0x00ff0000, 0x0000ff00, 8);
-   //     if (shamt & 4)  x = shuffle32_stage(x, 0x0f000f00, 0x00f000f0, 4);
-   //     if (shamt & 2)  x = shuffle32_stage(x, 0x30303030, 0xc0c0c0c0, 2);
-   //     if (shamt & 1)  x = shuffle32_stage(x, 0x44444444, 0x22222222, 1);
-   //
-   //     return x;
-   // }
-
-
-   logic        [31:0]    shfl8_d;
-   logic        [31:0]    shfl4_d;
-   logic        [31:0]    shfl2_d;
-   logic        [31:0]    shfl_d;
-
-
-
-   assign shfl8_d[31:0]       = (rs2_in[3])  ?  {rs1_in[31:24],rs1_in[15:08],rs1_in[23:16],rs1_in[07:00]}      :  rs1_in[31:0];
-
-   assign shfl4_d[31:0]       = (rs2_in[2])  ?  {shfl8_d[31:28],shfl8_d[23:20],shfl8_d[27:24],shfl8_d[19:16],
-                                                 shfl8_d[15:12],shfl8_d[07:04],shfl8_d[11:08],shfl8_d[03:00]}  :  shfl8_d[31:0];
-
-   assign shfl2_d[31:0]       = (rs2_in[1])  ?  {shfl4_d[31:30],shfl4_d[27:26],shfl4_d[29:28],shfl4_d[25:24],
-                                                 shfl4_d[23:22],shfl4_d[19:18],shfl4_d[21:20],shfl4_d[17:16],
-                                                 shfl4_d[15:14],shfl4_d[11:10],shfl4_d[13:12],shfl4_d[09:08],
-                                                 shfl4_d[07:06],shfl4_d[03:02],shfl4_d[05:04],shfl4_d[01:00]}  :  shfl4_d[31:0];
-
-   assign shfl_d[31:0]        = (rs2_in[0])  ?  {shfl2_d[31],shfl2_d[29],shfl2_d[30],shfl2_d[28],shfl2_d[27],shfl2_d[25],shfl2_d[26],shfl2_d[24],
-                                                 shfl2_d[23],shfl2_d[21],shfl2_d[22],shfl2_d[20],shfl2_d[19],shfl2_d[17],shfl2_d[18],shfl2_d[16],
-                                                 shfl2_d[15],shfl2_d[13],shfl2_d[14],shfl2_d[12],shfl2_d[11],shfl2_d[09],shfl2_d[10],shfl2_d[08],
-                                                 shfl2_d[07],shfl2_d[05],shfl2_d[06],shfl2_d[04],shfl2_d[03],shfl2_d[01],shfl2_d[02],shfl2_d[00]}  :  shfl2_d[31:0];
-
-
-
-
-   // uint32_t unshfl32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 15
-   //
-   //     if (shamt & 1)  x = shuffle32_stage(x, 0x44444444, 0x22222222, 1);
-   //     if (shamt & 2)  x = shuffle32_stage(x, 0x30303030, 0xc0c0c0c0, 2);
-   //     if (shamt & 4)  x = shuffle32_stage(x, 0x0f000f00, 0x00f000f0, 4);
-   //     if (shamt & 8)  x = shuffle32_stage(x, 0x00ff0000, 0x0000ff00, 8);
-   //
-   //     return x;
-   // }
-
-
-   logic        [31:0]    unshfl1_d;
-   logic        [31:0]    unshfl2_d;
-   logic        [31:0]    unshfl4_d;
-   logic        [31:0]    unshfl_d;
-
-
-   assign unshfl1_d[31:0]     = (rs2_in[0])  ?  {rs1_in[31],rs1_in[29],rs1_in[30],rs1_in[28],rs1_in[27],rs1_in[25],rs1_in[26],rs1_in[24],
-                                                 rs1_in[23],rs1_in[21],rs1_in[22],rs1_in[20],rs1_in[19],rs1_in[17],rs1_in[18],rs1_in[16],
-                                                 rs1_in[15],rs1_in[13],rs1_in[14],rs1_in[12],rs1_in[11],rs1_in[09],rs1_in[10],rs1_in[08],
-                                                 rs1_in[07],rs1_in[05],rs1_in[06],rs1_in[04],rs1_in[03],rs1_in[01],rs1_in[02],rs1_in[00]}  :  rs1_in[31:0];
-
-   assign unshfl2_d[31:0]     = (rs2_in[1])  ?  {unshfl1_d[31:30],unshfl1_d[27:26],unshfl1_d[29:28],unshfl1_d[25:24],
-                                                 unshfl1_d[23:22],unshfl1_d[19:18],unshfl1_d[21:20],unshfl1_d[17:16],
-                                                 unshfl1_d[15:14],unshfl1_d[11:10],unshfl1_d[13:12],unshfl1_d[09:08],
-                                                 unshfl1_d[07:06],unshfl1_d[03:02],unshfl1_d[05:04],unshfl1_d[01:00]}  :  unshfl1_d[31:0];
-
-   assign unshfl4_d[31:0]     = (rs2_in[2])  ?  {unshfl2_d[31:28],unshfl2_d[23:20],unshfl2_d[27:24],unshfl2_d[19:16],
-                                                 unshfl2_d[15:12],unshfl2_d[07:04],unshfl2_d[11:08],unshfl2_d[03:00]}  :  unshfl2_d[31:0];
-
-   assign unshfl_d[31:0]      = (rs2_in[3])  ?  {unshfl4_d[31:24],unshfl4_d[15:08],unshfl4_d[23:16],unshfl4_d[07:00]}  :  unshfl4_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CRC32, CRC32c  * * * * * * * * * * * * * * * * *
-
-   // ***  computed from   https: //crccalc.com  ***
-   //
-   // "a" is 8'h61 = 8'b0110_0001    (8'h61 ^ 8'hff = 8'h9e)
-   //
-   // Input must first be XORed with 32'hffff_ffff
-   //
-   //
-   // CRC32
-   //
-   // Input    Output        Input      Output
-   // -----   --------      --------   --------
-   // "a"     e8b7be43      ffffff9e   174841bc
-   // "aa"    078a19d7      ffff9e9e   f875e628
-   // "aaaa"  ad98e545      9e9e9e9e   5267a1ba
-   //
-   //
-   //
-   // CRC32c
-   //
-   // Input    Output        Input      Output
-   // -----   --------      --------   --------
-   // "a"     c1d04330      ffffff9e   3e2fbccf
-   // "aa"    f1f2dac2      ffff9e9e   0e0d253d
-   // "aaaa"  6a52eeb0      9e9e9e9e   95ad114f
-
-
-   logic                  crc32_all;
-   logic        [31:0]    crc32_poly_rev;
-   logic        [31:0]    crc32c_poly_rev;
-   integer                crc32_bi, crc32_hi, crc32_wi, crc32c_bi, crc32c_hi, crc32c_wi;
-   logic        [31:0]    crc32_bd, crc32_hd, crc32_wd, crc32c_bd, crc32c_hd, crc32c_wd;
-
-
-   assign crc32_all              =  ap_crc32_b  | ap_crc32_h  | ap_crc32_w | ap_crc32c_b | ap_crc32c_h | ap_crc32c_w;
-
-   assign crc32_poly_rev[31:0]   =  32'hEDB88320;    // bit reverse of 32'h04C11DB7
-   assign crc32c_poly_rev[31:0]  =  32'h82F63B78;    // bit reverse of 32'h1EDC6F41
-
-
-   always_comb
-     begin
-       crc32_bd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_bi=0; crc32_bi<8; crc32_bi++)
-         begin
-            crc32_bd[31:0] = (crc32_bd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_bd[0]}});
-         end      // FOR    crc32_bi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32_hd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_hi=0; crc32_hi<16; crc32_hi++)
-         begin
-            crc32_hd[31:0] = (crc32_hd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_hd[0]}});
-         end      // FOR    crc32_hi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32_wd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_wi=0; crc32_wi<32; crc32_wi++)
-         begin
-            crc32_wd[31:0] = (crc32_wd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_wd[0]}});
-         end      // FOR    crc32_wi
-     end          // ALWAYS_COMB
-
-
-
-
-   always_comb
-     begin
-       crc32c_bd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_bi=0; crc32c_bi<8; crc32c_bi++)
-         begin
-            crc32c_bd[31:0] = (crc32c_bd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_bd[0]}});
-         end      // FOR    crc32c_bi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32c_hd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_hi=0; crc32c_hi<16; crc32c_hi++)
-         begin
-            crc32c_hd[31:0] = (crc32c_hd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_hd[0]}});
-         end      // FOR    crc32c_hi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32c_wd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_wi=0; crc32c_wi<32; crc32c_wi++)
-         begin
-            crc32c_wd[31:0] = (crc32c_wd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_wd[0]}});
-         end      // FOR    crc32c_wi
-     end          // ALWAYS_COMB
-
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  BFP          * * * * * * * * * * * * * * * * * *
-
-   logic        [4:0]     bfp_len;
-   logic        [4:0]     bfp_off;
-   logic        [31:0]    bfp_len_mask_;
-   logic        [15:0]    bfp_preshift_data;
-   logic        [63:0]    bfp_shift_data;
-   logic        [63:0]    bfp_shift_mask;
-   logic        [31:0]    bfp_result_d;
-
-
-   assign bfp_len[3:0]           =  rs2_in[27:24];
-   assign bfp_len[4]             = (bfp_len[3:0] == 4'b0);   // If LEN field is zero, then LEN=16
-   assign bfp_off[4:0]           =  rs2_in[20:16];
-
-   assign bfp_len_mask_[31:0]    =  32'hffff_ffff  <<  bfp_len[4:0];
-   assign bfp_preshift_data[15:0]=  rs2_in[15:0] & ~bfp_len_mask_[15:0];
-
-   assign bfp_shift_data[63:0]   = {16'b0,bfp_preshift_data[15:0], 16'b0,bfp_preshift_data[15:0]}  <<  bfp_off[4:0];
-   assign bfp_shift_mask[63:0]   = {bfp_len_mask_[31:0],           bfp_len_mask_[31:0]}            <<  bfp_off[4:0];
-
-   assign bfp_result_d[31:0]     = bfp_shift_data[63:32] | (rs1_in[31:0] & bfp_shift_mask[63:32]);
-
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  Common logic * * * * * * * * * * * * * * * * * *
-
-
-   assign bitmanip_sel_d         =  ap_bext | ap_bdep | ap_clmul | ap_clmulh | ap_clmulr | ap_grev | ap_gorc | ap_shfl | ap_unshfl | crc32_all | ap_bfp;
-
-   assign bitmanip_d[31:0]       = ( {32{ap_bext}}     &       bext_d[31:0]        ) |
-                                   ( {32{ap_bdep}}     &       bdep_d[31:0]        ) |
-                                   ( {32{ap_clmul}}    &       clmul_raw_d[31:0]   ) |
-                                   ( {32{ap_clmulh}}   & {1'b0,clmul_raw_d[62:32]} ) |
-                                   ( {32{ap_clmulr}}   &       clmul_raw_d[62:31]  ) |
-                                   ( {32{ap_grev}}     &       grev_d[31:0]        ) |
-                                   ( {32{ap_gorc}}     &       gorc_d[31:0]        ) |
-                                   ( {32{ap_shfl}}     &       shfl_d[31:0]        ) |
-                                   ( {32{ap_unshfl}}   &       unshfl_d[31:0]      ) |
-                                   ( {32{ap_crc32_b}}  &       crc32_bd[31:0]      ) |
-                                   ( {32{ap_crc32_h}}  &       crc32_hd[31:0]      ) |
-                                   ( {32{ap_crc32_w}}  &       crc32_wd[31:0]      ) |
-                                   ( {32{ap_crc32c_b}} &       crc32c_bd[31:0]     ) |
-                                   ( {32{ap_crc32c_h}} &       crc32c_hd[31:0]     ) |
-                                   ( {32{ap_crc32c_w}} &       crc32c_wd[31:0]     ) |
-                                   ( {32{ap_bfp}}      &       bfp_result_d[31:0]  );
-
-
-
-   rvdffe #(33) i_bitmanip_ff    (.*, .clk(clk),  .din({bitmanip_sel_d,bitmanip_d[31:0]}),   .dout({bitmanip_sel_x,bitmanip_x[31:0]}),   .en(bit_x_enable));
-
-
-
-
-   assign result_x[31:0]         =  ( {32{~bitmanip_sel_x & ~low_x}} & prod_x[63:32]    ) |
-                                    ( {32{~bitmanip_sel_x &  low_x}} & prod_x[31:0]     ) |
-                                                                       bitmanip_x[31:0];
-
-
-
-endmodule  // eb1_exu_mul_ctl
diff --git a/verilog/rtl/BrqRV_EB1/design/flist.formal b/verilog/rtl/BrqRV_EB1/design/flist.formal
deleted file mode 100644
index b8b0a35..0000000
--- a/verilog/rtl/BrqRV_EB1/design/flist.formal
+++ /dev/null
@@ -1,63 +0,0 @@
-#-*-dotf-*-
-
-$RV_ROOT/design/include/eb1_def.sv
-
-+incdir+$RV_ROOT/design/lib
-+incdir+$RV_ROOT/design/include
-+incdir+$RV_ROOT/design/dmi
-
-//|+incdir+$SYNOPSYS_SYN_ROOT/dw/sim_ver
-//|-y $SYNOPSYS_SYN_ROOT/dw/sim_ver
-//|
-//|$SYNOPSYS_SYN_ROOT/dw/sim_ver/DW01_addsub.v
-//|$SYNOPSYS_SYN_ROOT/dw/sim_ver/DW_lzd.v
-//|$SYNOPSYS_SYN_ROOT/dw/sim_ver/DW_minmax.v
-//|$SYNOPSYS_SYN_ROOT/dw/sim_ver/DW02_mult.v
-
-+incdir+/wdc/apps/mentor/questa/formal/2019.2/share/MODIFIED/dw
-+incdir+/wdc/apps/mentor/questa/formal/2019.2/share/MODIFIED/dw/dw_datapath
-        /wdc/apps/mentor/questa/formal/2019.2/share/MODIFIED/dw/dw.remodel.v
-
-$RV_ROOT/design/eb1_brqrv_wrapper.sv
-$RV_ROOT/design/eb1_mem.sv
-$RV_ROOT/design/eb1_pic_ctrl.sv
-$RV_ROOT/design/eb1_brqrv.sv
-$RV_ROOT/design/eb1_dma_ctrl.sv
-$RV_ROOT/design/ifu/eb1_ifu_aln_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_compress_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_ifc_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_bp_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_ic_mem.sv
-$RV_ROOT/design/ifu/eb1_ifu_mem_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_iccm_mem.sv
-$RV_ROOT/design/ifu/eb1_ifu.sv
-$RV_ROOT/design/dec/eb1_dec_decode_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_gpr_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_ib_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_tlu_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_trigger.sv
-$RV_ROOT/design/dec/eb1_dec.sv
-$RV_ROOT/design/exu/eb1_exu_alu_ctl.sv
-$RV_ROOT/design/exu/eb1_exu_mul_ctl.sv
-$RV_ROOT/design/exu/eb1_exu_div_ctl.sv
-$RV_ROOT/design/exu/eb1_exu.sv
-$RV_ROOT/design/lsu/eb1_lsu.sv
-$RV_ROOT/design/lsu/eb1_lsu_clkdomain.sv
-$RV_ROOT/design/lsu/eb1_lsu_addrcheck.sv
-$RV_ROOT/design/lsu/eb1_lsu_lsc_ctl.sv
-$RV_ROOT/design/lsu/eb1_lsu_stbuf.sv
-$RV_ROOT/design/lsu/eb1_lsu_bus_buffer.sv
-$RV_ROOT/design/lsu/eb1_lsu_bus_intf.sv
-$RV_ROOT/design/lsu/eb1_lsu_ecc.sv
-$RV_ROOT/design/lsu/eb1_lsu_dccm_mem.sv
-$RV_ROOT/design/lsu/eb1_lsu_dccm_ctl.sv
-$RV_ROOT/design/lsu/eb1_lsu_trigger.sv
-$RV_ROOT/design/dbg/eb1_dbg.sv
-$RV_ROOT/design/dmi/dmi_wrapper.v
-$RV_ROOT/design/dmi/dmi_jtag_to_core_sync.v
-$RV_ROOT/design/dmi/rvjtag_tap.v
-$RV_ROOT/design/lib/eb1_lib.sv
-$RV_ROOT/design/lib/beh_lib.sv
-$RV_ROOT/design/lib/mem_lib.sv
-$RV_ROOT/design/lib/ahb_to_axi4.sv
-$RV_ROOT/design/lib/axi4_to_ahb.sv
diff --git a/verilog/rtl/BrqRV_EB1/design/flist.questa b/verilog/rtl/BrqRV_EB1/design/flist.questa
deleted file mode 100644
index 762c201..0000000
--- a/verilog/rtl/BrqRV_EB1/design/flist.questa
+++ /dev/null
@@ -1,61 +0,0 @@
-#-*-dotf-*-
-
-# $RV_ROOT/workspace/work/snapshots/default/common_defines.vh
-# $RV_ROOT/configs/snapshots/default/common_defines.vh
-$RV_ROOT/workspace/work/snapshots/default/common_defines.vh
-
-
-$RV_ROOT/design/include/eb1_def.sv
-
-# +incdir+$RV_ROOT/workspace/work/snapshots/default
-# +incdir+$RV_ROOT/configs/snapshots/default
-+incdir+$RV_ROOT/workspace/work/snapshots/default
-
-+incdir+$RV_ROOT/design/lib
-+incdir+$RV_ROOT/design/include
-+incdir+$RV_ROOT/design/dmi
-+incdir+$SYNOPSYS_SYN_ROOT/dw/sim_ver
--y $SYNOPSYS_SYN_ROOT/dw/sim_ver
-$RV_ROOT/design/eb1_brqrv_wrapper.sv
-$RV_ROOT/design/eb1_mem.sv
-$RV_ROOT/design/eb1_pic_ctrl.sv
-$RV_ROOT/design/eb1_brqrv.sv
-$RV_ROOT/design/eb1_dma_ctrl.sv
-$RV_ROOT/design/ifu/eb1_ifu_aln_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_compress_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_ifc_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_bp_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_ic_mem.sv
-$RV_ROOT/design/ifu/eb1_ifu_mem_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_iccm_mem.sv
-$RV_ROOT/design/ifu/eb1_ifu.sv
-$RV_ROOT/design/dec/eb1_dec_decode_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_gpr_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_ib_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_tlu_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_trigger.sv
-$RV_ROOT/design/dec/eb1_dec.sv
-$RV_ROOT/design/exu/eb1_exu_alu_ctl.sv
-$RV_ROOT/design/exu/eb1_exu_mul_ctl.sv
-$RV_ROOT/design/exu/eb1_exu_div_ctl.sv
-$RV_ROOT/design/exu/eb1_exu.sv
-$RV_ROOT/design/lsu/eb1_lsu.sv
-$RV_ROOT/design/lsu/eb1_lsu_clkdomain.sv
-$RV_ROOT/design/lsu/eb1_lsu_addrcheck.sv
-$RV_ROOT/design/lsu/eb1_lsu_lsc_ctl.sv
-$RV_ROOT/design/lsu/eb1_lsu_stbuf.sv
-$RV_ROOT/design/lsu/eb1_lsu_bus_buffer.sv
-$RV_ROOT/design/lsu/eb1_lsu_bus_intf.sv
-$RV_ROOT/design/lsu/eb1_lsu_ecc.sv
-$RV_ROOT/design/lsu/eb1_lsu_dccm_mem.sv
-$RV_ROOT/design/lsu/eb1_lsu_dccm_ctl.sv
-$RV_ROOT/design/lsu/eb1_lsu_trigger.sv
-$RV_ROOT/design/dbg/eb1_dbg.sv
-$RV_ROOT/design/dmi/dmi_wrapper.v
-$RV_ROOT/design/dmi/dmi_jtag_to_core_sync.v
-$RV_ROOT/design/dmi/rvjtag_tap.v
-$RV_ROOT/design/lib/eb1_lib.sv
-$RV_ROOT/design/lib/beh_lib.sv
-$RV_ROOT/design/lib/mem_lib.sv
-$RV_ROOT/design/lib/ahb_to_axi4.sv
-$RV_ROOT/design/lib/axi4_to_ahb.sv
diff --git a/verilog/rtl/BrqRV_EB1/design/iccm_controller.v b/verilog/rtl/BrqRV_EB1/design/iccm_controller.v
deleted file mode 100644
index c28bc9d..0000000
--- a/verilog/rtl/BrqRV_EB1/design/iccm_controller.v
+++ /dev/null
@@ -1,120 +0,0 @@
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-module eb1_iccm_controller (
-	clk_i,
-	rst_ni,
-	rx_dv_i,
-	rx_byte_i,
-	we_o,
-	addr_o,
-	wdata_o,
-	reset_o
-);
-	input wire clk_i;
-	input wire rst_ni;
-	input wire rx_dv_i;
-	input wire [7:0] rx_byte_i;
-	output wire we_o;
-	output wire [13:0] addr_o;
-	output wire [31:0] wdata_o;
-	output wire reset_o;
-	reg [1:0] ctrl_fsm_cs;
-	reg [1:0] ctrl_fsm_ns;
-	wire [7:0] rx_byte_d;
-	reg [7:0] rx_byte_q0;
-	reg [7:0] rx_byte_q1;
-	reg [7:0] rx_byte_q2;
-	reg [7:0] rx_byte_q3;
-	reg we_q;
-	reg we_d;
-	reg [13:0] addr_q;
-	reg [13:0] addr_d;
-	reg reset_q;
-	reg reset_d;
-	reg [1:0] byte_count;
-	localparam [1:0] DONE = 3;
-	localparam [1:0] LOAD = 1;
-	localparam [1:0] PROG = 2;
-	localparam [1:0] RESET = 0;
-	always @(*) begin
-		we_d = we_q;
-		addr_d = addr_q;
-		reset_d = reset_q;
-		ctrl_fsm_ns = ctrl_fsm_cs;
-		case (ctrl_fsm_cs)
-			RESET: begin
-				we_d = 1'b0;
-				reset_d = 1'b0;
-				if (rx_dv_i)
-					ctrl_fsm_ns = LOAD;
-				else
-					ctrl_fsm_ns = RESET;
-			end
-			LOAD:
-				if (((byte_count == 2'b11) && (rx_byte_q2 != 8'h0f)) && (rx_byte_d != 8'hff)) begin
-					we_d = 1'b1;
-					ctrl_fsm_ns = PROG;
-				end
-				else
-					ctrl_fsm_ns = DONE;
-			PROG: begin
-				we_d = 1'b0;
-				ctrl_fsm_ns = DONE;
-			end
-			DONE:
-				if (wdata_o == 32'h00000fff) begin
-					ctrl_fsm_ns = DONE;
-					reset_d = 1'b1;
-				end
-				else if (rx_dv_i)
-					ctrl_fsm_ns = LOAD;
-				else
-					ctrl_fsm_ns = DONE;
-			default: ctrl_fsm_ns = RESET;
-		endcase
-	end
-	assign rx_byte_d = rx_byte_i;
-	assign we_o = we_q;
-	assign addr_o = addr_q;
-	assign wdata_o = {rx_byte_q0, rx_byte_q1, rx_byte_q2, rx_byte_q3};
-	assign reset_o = reset_q;
-	always @(posedge clk_i or negedge rst_ni)
-		if (!rst_ni) begin
-			we_q <= 1'b0;
-			addr_q <= 14'b00000000000000;
-			rx_byte_q0 <= 8'b00000000;
-			rx_byte_q1 <= 8'b00000000;
-			rx_byte_q2 <= 8'b00000000;
-			rx_byte_q3 <= 8'b00000000;
-			reset_q <= 1'b0;
-			byte_count <= 2'b00;
-			ctrl_fsm_cs <= RESET;
-		end
-		else begin
-			we_q <= we_d;
-			if (ctrl_fsm_cs == LOAD) begin
-				if (byte_count == 2'b00) begin
-					rx_byte_q0 <= rx_byte_d;
-					byte_count <= 2'b01;
-				end
-				else if (byte_count == 2'b01) begin
-					rx_byte_q1 <= rx_byte_d;
-					byte_count <= 2'b10;
-				end
-				else if (byte_count == 2'b10) begin
-					rx_byte_q2 <= rx_byte_d;
-					byte_count <= 2'b11;
-				end
-				else begin
-					rx_byte_q3 <= rx_byte_d;
-					byte_count <= 2'b00;
-				end
-				addr_q <= addr_d;
-			end
-			if (ctrl_fsm_cs == PROG)
-				addr_q <= addr_d + 2'h2;
-			reset_q <= reset_d;
-			ctrl_fsm_cs <= ctrl_fsm_ns;
-		end
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu.sv b/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu.sv
deleted file mode 100644
index 6208094..0000000
--- a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu.sv
+++ /dev/null
@@ -1,371 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-//********************************************************************************
-// Function: Top level file for Icache, Fetch, Branch prediction & Aligner
-// BFF -> F1 -> F2 -> A
-//********************************************************************************
-
-module eb1_ifu
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic free_l2clk,                   // Clock always.                  Through one clock header.  For flops with    second header built in.
-   input logic active_clk,                   // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic clk,                          // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic rst_l,                        // reset, active low
-
-   input logic dec_i0_decode_d,              // Valid instruction at D and not blocked
-
-   input logic exu_flush_final, // flush, includes upper and lower
-   input logic dec_tlu_i0_commit_cmt , // committed i0
-   input logic dec_tlu_flush_err_wb , // flush due to parity error.
-   input logic dec_tlu_flush_noredir_wb, // don't fetch, validated with exu_flush_final
-   input logic [31:1] exu_flush_path_final, // flush fetch address
-
-   input logic [31:0]  dec_tlu_mrac_ff ,// Side_effect , cacheable for each region
-   input logic         dec_tlu_fence_i_wb, // fence.i, invalidate icache, validated with exu_flush_final
-   input logic         dec_tlu_flush_leak_one_wb, // ignore bp for leak one fetches
-
-   input logic                       dec_tlu_bpred_disable,     // disable all branch prediction
-   input logic                       dec_tlu_core_ecc_disable,  // disable ecc checking and flagging
-   input logic                       dec_tlu_force_halt,        // force halt
-
-  //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   output logic                            ifu_axi_bready,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-
-   input  logic                      ifu_bus_clk_en,
-
-   input  logic                      dma_iccm_req,
-   input  logic [31:0]               dma_mem_addr,
-   input  logic [2:0]                dma_mem_sz,
-   input  logic                      dma_mem_write,
-   input  logic [63:0]               dma_mem_wdata,
-   input  logic [2:0]                dma_mem_tag,       //  DMA Buffer entry number
-
-
-   input  logic                      dma_iccm_stall_any,
-   output logic                      iccm_dma_ecc_error,
-   output logic                      iccm_dma_rvalid,
-   output logic [63:0]               iccm_dma_rdata,
-   output logic [2:0]                iccm_dma_rtag,     //   Tag of the DMA req
-   output logic                      iccm_ready,
-
-   output logic       ifu_pmu_instr_aligned,
-   output logic       ifu_pmu_fetch_stall,
-   output logic       ifu_ic_error_start,     // has all of the I$ ecc/parity for data/tag
-
-//   I$ & ITAG Ports
-   output logic [31:1]               ic_rw_addr,         // Read/Write addresss to the Icache.
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_wr_en,           // Icache write enable, when filling the Icache.
-   output logic                      ic_rd_en,           // Icache read  enable.
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0][70:0]               ic_wr_data,         // Data to fill to the Icache. With ECC
-   input  logic [63:0]              ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]              ic_debug_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]                     ictag_debug_rd_data,// Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,   // Debug wr cache.
-
-   output logic [70:0]               ifu_ic_debug_rd_data,
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    //
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-   output logic [63:0]               ic_premux_data,     // Premux data to be muxed with each way of the Icache.
-   output logic                      ic_sel_premux_data, // Select the premux data.
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_tag_valid,       // Valid bits when accessing the Icache. One valid bit per way. F2 stage
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_rd_hit,          // Compare hits from Icache tags. Per way.  F2 stage
-   input  logic                      ic_tag_perr,        // Icache Tag parity error
-
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]               iccm_rw_addr,       // ICCM read/write address.
-   output logic                      iccm_wren,          // ICCM write enable (through the DMA)
-   output logic                      iccm_rden,          // ICCM read enable.
-   output logic [77:0]               iccm_wr_data,       // ICCM write data.
-   output logic [2:0]                iccm_wr_size,       // ICCM write location within DW.
-
-   input  logic [63:0]               iccm_rd_data,       // Data read from ICCM.
-   input  logic [77:0]               iccm_rd_data_ecc,   // Data + ECC read from ICCM.
-
-   output logic                      ifu_iccm_rd_ecc_single_err, // This fetch has a single ICCM ecc  error.
-
-// Perf counter sigs
-   output logic       ifu_pmu_ic_miss, // ic miss
-   output logic       ifu_pmu_ic_hit, // ic hit
-   output logic       ifu_pmu_bus_error, // iside bus error
-   output logic       ifu_pmu_bus_busy,  // iside bus busy
-   output logic       ifu_pmu_bus_trxn, // iside bus transactions
-
-
-   output logic       ifu_i0_icaf,         // Instruction 0 access fault. From Aligner to Decode
-   output logic [1:0] ifu_i0_icaf_type, // Instruction 0 access fault type
-
-   output logic  ifu_i0_valid,        // Instruction 0 valid. From Aligner to Decode
-   output logic  ifu_i0_icaf_second,  // Instruction 0 has access fault on second 2B of 4B inst
-   output logic  ifu_i0_dbecc,        // Instruction 0 has double bit ecc error
-   output logic  iccm_dma_sb_error,   // Single Bit ECC error from a DMA access
-   output logic[31:0] ifu_i0_instr,   // Instruction 0 . From Aligner to Decode
-   output logic[31:1] ifu_i0_pc,      // Instruction 0 pc. From Aligner to Decode
-   output logic ifu_i0_pc4,           // Instruction 0 is 4 byte. From Aligner to Decode
-
-   output logic ifu_miss_state_idle,   // There is no outstanding miss. Cache miss state is idle.
-
-   output eb1_br_pkt_t i0_brp,           // Instruction 0 branch packet. From Aligner to Decode
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index, // BP index
-   output logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr, // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag, // BP tag
-   output logic [$clog2(pt.BTB_SIZE)-1:0]         ifu_i0_fa_index,          // Fully associt btb index
-
-   input eb1_predict_pkt_t  exu_mp_pkt, // mispredict packet
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_mp_eghr, // execute ghr
-   input logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   input logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-   input eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // slot0 update/error pkt
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_i0_br_fghr_r, // fghr to bp
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r, // bp index
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   input dec_tlu_flush_lower_wb,
-
-   output logic [15:0] ifu_i0_cinst,
-
-
-/// Icache debug
-   input  eb1_cache_debug_pkt_t        dec_tlu_ic_diag_pkt ,
-   output logic                    ifu_ic_debug_rd_data_valid,
-   output logic                                iccm_buf_correct_ecc,
-   output logic                                iccm_correction_state,
-
-   input logic scan_mode
-   );
-
-   localparam TAGWIDTH = 2 ;
-   localparam IDWIDTH  = 2 ;
-
-   logic                   ifu_fb_consume1, ifu_fb_consume2;
-   logic [31:1]            ifc_fetch_addr_f;
-   logic [31:1]            ifc_fetch_addr_bf;
-
-   logic [1:0]   ifu_fetch_val;  // valids on a 2B boundary, left justified [7] implies valid fetch
-   logic [31:1]  ifu_fetch_pc;   // starting pc of fetch
-
-   logic iccm_rd_ecc_single_err, ic_error_start;
-   assign ifu_iccm_rd_ecc_single_err = iccm_rd_ecc_single_err;
-   assign ifu_ic_error_start = ic_error_start;
-
-
-   logic        ic_write_stall;
-   logic        ic_dma_active;
-   logic        ifc_dma_access_ok;
-   logic [1:0]  ic_access_fault_f;
-   logic [1:0]  ic_access_fault_type_f;
-   logic        ifu_ic_mb_empty;
-
-   logic ic_hit_f;
-
-   logic [1:0] ifu_bp_way_f; // way indication; right justified
-   logic       ifu_bp_hit_taken_f; // kill next fetch; taken target found
-   logic [31:1] ifu_bp_btb_target_f; //  predicted target PC
-   logic        ifu_bp_inst_mask_f; // tell ic which valids to kill because of a taken branch; right justified
-   logic [1:0]  ifu_bp_hist1_f; // history counters for all 4 potential branches; right justified
-   logic [1:0]  ifu_bp_hist0_f; // history counters for all 4 potential branches; right justified
-   logic [11:0] ifu_bp_poffset_f; // predicted target
-   logic [1:0]  ifu_bp_ret_f; // predicted ret ; right justified
-   logic [1:0]  ifu_bp_pc4_f; // pc4 indication; right justified
-   logic [1:0]  ifu_bp_valid_f; // branch valid, right justified
-   logic [pt.BHT_GHR_SIZE-1:0] ifu_bp_fghr_f;
-   logic [1:0] [$clog2(pt.BTB_SIZE)-1:0] ifu_bp_fa_index_f;
-
-
-   // fetch control
-   eb1_ifu_ifc_ctl #(.pt(pt)) ifc (.*
-                    );
-
-   // branch predictor
-   if (pt.BTB_ENABLE==1) begin  : bpred
-      eb1_ifu_bp_ctl #(.pt(pt)) bp (.*);
-   end
-   else begin : bpred
-      assign ifu_bp_hit_taken_f = '0;
-      // verif wires
-      logic btb_wr_en_way0, btb_wr_en_way1,dec_tlu_error_wb;
-      logic [16+pt.BTB_BTAG_SIZE:0] btb_wr_data;
-      assign btb_wr_en_way0 = '0;
-      assign btb_wr_en_way1 = '0;
-      assign btb_wr_data = '0;
-      assign dec_tlu_error_wb ='0;
-      assign ifu_bp_inst_mask_f = 1'b1;
-   end
-
-
-   logic [1:0]   ic_fetch_val_f;
-   logic [31:0] ic_data_f;
-   logic [31:0] ifu_fetch_data_f;
-   logic ifc_fetch_req_f;
-   logic ifc_fetch_req_f_raw;
-   logic [1:0] iccm_rd_ecc_double_err;  // This fetch has an iccm double error.
-
-   logic ifu_async_error_start;
-
-
-   assign ifu_fetch_data_f[31:0] = ic_data_f[31:0];
-   assign ifu_fetch_val[1:0] = ic_fetch_val_f[1:0];
-   assign ifu_fetch_pc[31:1] = ifc_fetch_addr_f[31:1];
-
- logic                       ifc_fetch_uncacheable_bf;      // The fetch request is uncacheable space. BF stage
- logic                       ifc_fetch_req_bf;              // Fetch request. Comes with the address.  BF stage
- logic                       ifc_fetch_req_bf_raw;          // Fetch request without some qualifications. Used for clock-gating. BF stage
- logic                       ifc_iccm_access_bf;            // This request is to the ICCM. Do not generate misses to the bus.
- logic                       ifc_region_acc_fault_bf;       // Access fault. in ICCM region but offset is outside defined ICCM.
-
-   // aligner
-
-   eb1_ifu_aln_ctl #(.pt(pt)) aln (
-                                    .*
-                                    );
-
-
-   // icache
-   eb1_ifu_mem_ctl #(.pt(pt)) mem_ctl
-     (.*,
-      .ic_data_f(ic_data_f[31:0])
-      );
-
-
-
-   // Performance debug info
-   //
-   //
-`ifdef DUMP_BTB_ON
-   logic              exu_mp_valid; // conditional branch mispredict
-   logic exu_mp_way; // conditional branch mispredict
-   logic exu_mp_ataken; // direction is actual taken
-   logic exu_mp_boffset; // branch offsett
-   logic exu_mp_pc4; // branch is a 4B inst
-   logic exu_mp_call; // branch is a call inst
-   logic exu_mp_ret; // branch is a ret inst
-   logic exu_mp_ja; // branch is a jump always
-   logic [1:0] exu_mp_hist; // new history
-   logic [11:0] exu_mp_tgt; // target offset
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_addr; // BTB/BHT address
-
-   assign exu_mp_valid = exu_mp_pkt.misp; // conditional branch mispredict
-   assign exu_mp_ataken = exu_mp_pkt.ataken;  // direction is actual taken
-   assign exu_mp_boffset = exu_mp_pkt.boffset;  // branch offset
-   assign exu_mp_pc4 = exu_mp_pkt.pc4;  // branch is a 4B inst
-   assign exu_mp_call = exu_mp_pkt.pcall;  // branch is a call inst
-   assign exu_mp_ret = exu_mp_pkt.pret;  // branch is a ret inst
-   assign exu_mp_ja = exu_mp_pkt.pja;  // branch is a jump always
-   assign exu_mp_way = exu_mp_pkt.way;  // branch is a jump always
-   assign exu_mp_hist[1:0] = exu_mp_pkt.hist[1:0];  // new history
-   assign exu_mp_tgt[11:0]  = exu_mp_pkt.toffset[11:0] ;  // target offset
-   assign exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  = exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ;  // BTB/BHT address
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] btb_rd_addr_f;
- `define DEC `CPU_TOP.dec
- `define EXU `CPU_TOP.exu
-   eb1_btb_addr_hash f2hash(.pc(ifc_fetch_addr_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-   logic [31:0] mppc_ns, mppc;
-   logic        exu_flush_final_d1;
-   assign mppc_ns[31:1] = `EXU.i0_flush_upper_x ? `EXU.exu_i0_pc_x : `EXU.dec_i0_pc_d;
-   assign mppc_ns[0] = 1'b0;
-   rvdff #(33)  junk_ff (.*, .clk(active_clk), .din({mppc_ns[31:0], exu_flush_final}), .dout({mppc[31:0], exu_flush_final_d1}));
-   logic  tmp_bnk;
-   assign tmp_bnk = bpred.bp.btb_sel_f[1];
-
-   always @(negedge clk) begin
-      if(`DEC.tlu.mcyclel[31:0] == 32'h0000_0010) begin
-         $display("BTB_CONFIG: %d",pt.BTB_SIZE);
-         `ifndef BP_NOGSHARE
-         $display("BHT_CONFIG: %d gshare: 1",pt.BHT_SIZE);
-         `else
-         $display("BHT_CONFIG: %d gshare: 0",pt.BHT_SIZE);
-         `endif
-         $display("RS_CONFIG: %d", pt.RET_STACK_SIZE);
-      end
-       if(exu_flush_final_d1 & ~(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error) & (exu_mp_pkt.misp | exu_mp_pkt.ataken))
-         $display("%7d BTB_MP  : index: %0h bank: %0h call: %b ret: %b ataken: %b hist: %h valid: %b tag: %h targ: %h eghr: %b pred: %b ghr_index: %h brpc: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha, exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO], 1'b0, exu_mp_call, exu_mp_ret, exu_mp_ataken, exu_mp_hist[1:0], exu_mp_valid, exu_mp_btag[pt.BTB_BTAG_SIZE-1:0], {exu_flush_path_final[31:1], 1'b0}, exu_mp_eghr[pt.BHT_GHR_SIZE-1:0], exu_mp_valid, bpred.bp.bht_wr_addr0, mppc[31:0], exu_mp_pkt.way);
-
-     for(int i = 0; i < 8; i++) begin
-      if(ifu_bp_valid_f[i] & ifc_fetch_req_f)
-        $display("%7d BTB_HIT : index: %0h bank: %0h call: %b ret: %b taken: %b strength: %b tag: %h targ: %0h ghr: %4b ghr_index: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],bpred.bp.btb_sel_f[1], bpred.bp.btb_rd_call_f, bpred.bp.btb_rd_ret_f, ifu_bp_hist1_f[tmp_bnk], ifu_bp_hist0_f[tmp_bnk], bpred.bp.fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0], {ifu_bp_btb_target_f[31:1], 1'b0}, bpred.bp.fghr[pt.BHT_GHR_SIZE-1:0], bpred.bp.bht_rd_addr_f, ifu_bp_way_f[tmp_bnk]);
-     end
-      if(dec_tlu_br0_r_pkt.valid & ~(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error))
-        $display("%7d BTB_UPD0: ghr_index: %0h bank: %0h hist: %h  way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,bpred.bp.br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO],{dec_tlu_br0_r_pkt.middle}, dec_tlu_br0_r_pkt.hist, dec_tlu_br0_r_pkt.way);
-
-      if(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error)
-        $display("%7d BTB_ERR0: index: %0h bank: %0h start: %b rfpc: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],1'b0, dec_tlu_br0_r_pkt.br_start_error, {exu_flush_path_final[31:1], 1'b0}, dec_tlu_br0_r_pkt.way);
-   end // always @ (negedge clk)
-      function [1:0] encode4_2;
-      input [3:0] in;
-
-      encode4_2[1] = in[3] | in[2];
-      encode4_2[0] = in[3] | in[1];
-
-   endfunction
-`endif
-endmodule // eb1_ifu
diff --git a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_aln_ctl.sv b/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_aln_ctl.sv
deleted file mode 100644
index 2d4e822..0000000
--- a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_aln_ctl.sv
+++ /dev/null
@@ -1,700 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Instruction aligner
-//********************************************************************************
-module eb1_ifu_aln_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-
-   input logic                                    scan_mode,                // Flop scan mode control
-   input logic                                    rst_l,                    // reset, active low
-   input logic                                    clk,                      // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                                    active_clk,               // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-
-   input logic                                    ifu_async_error_start,    // ecc/parity related errors with current fetch - not sent down the pipe
-
-   input logic [1:0]                              iccm_rd_ecc_double_err,   // This fetch has a double ICCM ecc  error.
-
-   input logic [1:0]                              ic_access_fault_f,        // Instruction access fault for the current fetch.
-   input logic [1:0]                              ic_access_fault_type_f,   // Instruction access fault types
-
-   input logic                                    exu_flush_final,          // Flush from the pipeline.
-
-   input logic                                    dec_i0_decode_d,          // Valid instruction at D-stage and not blocked
-
-   input logic [31:0]                             ifu_fetch_data_f,         // fetch data in memory format - not right justified
-
-   input logic [1:0]                              ifu_fetch_val,            // valids on a 2B boundary, right justified
-   input logic [31:1]                             ifu_fetch_pc,             // starting pc of fetch
-
-
-
-   output logic                                   ifu_i0_valid,             // Instruction 0 is valid
-   output logic                                   ifu_i0_icaf,              // Instruction 0 has access fault
-   output logic [1:0]                             ifu_i0_icaf_type,         // Instruction 0 access fault type
-   output logic                                   ifu_i0_icaf_second,       // Instruction 0 has access fault on second 2B of 4B inst
-
-   output logic                                   ifu_i0_dbecc,             // Instruction 0 has double bit ecc error
-   output logic [31:0]                            ifu_i0_instr,             // Instruction 0
-   output logic [31:1]                            ifu_i0_pc,                // Instruction 0 PC
-   output logic                                   ifu_i0_pc4,
-
-   output logic                                   ifu_fb_consume1,          // Consumed one buffer. To fetch control fetch for buffer mass balance
-   output logic                                   ifu_fb_consume2,          // Consumed two buffers.To fetch control fetch for buffer mass balance
-
-
-   input logic [pt.BHT_GHR_SIZE-1:0]              ifu_bp_fghr_f,            // fetch GHR
-   input logic [31:1]                             ifu_bp_btb_target_f,      // predicted RET target
-   input logic [11:0]                             ifu_bp_poffset_f,         // predicted target offset
-   input logic [1:0] [$clog2(pt.BTB_SIZE)-1:0]    ifu_bp_fa_index_f,        // predicted branch index (fully associative option)
-
-   input logic [1:0]                              ifu_bp_hist0_f,           // history counters for all 4 potential branches, bit 1, right justified
-   input logic [1:0]                              ifu_bp_hist1_f,           // history counters for all 4 potential branches, bit 1, right justified
-   input logic [1:0]                              ifu_bp_pc4_f,             // pc4 indication, right justified
-   input logic [1:0]                              ifu_bp_way_f,             // way indication, right justified
-   input logic [1:0]                              ifu_bp_valid_f,           // branch valid, right justified
-   input logic [1:0]                              ifu_bp_ret_f,             // predicted ret indication, right justified
-
-
-   output eb1_br_pkt_t                           i0_brp,                   // Branch packet for I0.
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]   ifu_i0_bp_index,          // BP index
-   output logic [pt.BHT_GHR_SIZE-1:0]             ifu_i0_bp_fghr,           // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0]            ifu_i0_bp_btag,           // BP tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0]         ifu_i0_fa_index,          // Fully associt btb index
-
-   output logic                                   ifu_pmu_instr_aligned,    // number of inst aligned this cycle
-
-   output logic [15:0]                            ifu_i0_cinst              // 16b compress inst for i0
-   );
-
-
-
-   logic                                          ifvalid;
-   logic                                          shift_f1_f0, shift_f2_f0, shift_f2_f1;
-   logic                                          fetch_to_f0, fetch_to_f1, fetch_to_f2;
-
-   logic [1:0]                                    f2val_in, f2val;
-   logic [1:0]                                    f1val_in, f1val;
-   logic [1:0]                                    f0val_in, f0val;
-   logic [1:0]                                    sf1val, sf0val;
-
-   logic [31:0]                                   aligndata;
-   logic                                          first4B, first2B;
-
-   logic [31:0]                                   uncompress0;
-   logic                                          i0_shift;
-   logic                                          shift_2B, shift_4B;
-   logic                                          f1_shift_2B;
-   logic                                          f2_valid, sf1_valid, sf0_valid;
-
-   logic [31:0]                                   ifirst;
-   logic [1:0]                                    alignval;
-   logic [31:1]                                   firstpc, secondpc;
-
-   logic [11:0]                                   f1poffset;
-   logic [11:0]                                   f0poffset;
-   logic [pt.BHT_GHR_SIZE-1:0]                    f1fghr;
-   logic [pt.BHT_GHR_SIZE-1:0]                    f0fghr;
-   logic [1:0]                                    f1hist1;
-   logic [1:0]                                    f0hist1;
-   logic [1:0]                                    f1hist0;
-   logic [1:0]                                    f0hist0;
-
-   logic [1:0][$clog2(pt.BTB_SIZE)-1:0]           f0index, f1index, alignindex;
-
-   logic [1:0]                                    f1ictype;
-   logic [1:0]                                    f0ictype;
-
-   logic [1:0]                                    f1pc4;
-   logic [1:0]                                    f0pc4;
-
-   logic [1:0]                                    f1ret;
-   logic [1:0]                                    f0ret;
-   logic [1:0]                                    f1way;
-   logic [1:0]                                    f0way;
-
-   logic [1:0]                                    f1brend;
-   logic [1:0]                                    f0brend;
-
-   logic [1:0]                                    alignbrend;
-   logic [1:0]                                    alignpc4;
-
-   logic [1:0]                                    alignret;
-   logic [1:0]                                    alignway;
-   logic [1:0]                                    alignhist1;
-   logic [1:0]                                    alignhist0;
-   logic [1:1]                                    alignfromf1;
-   logic                                          i0_ends_f1;
-   logic                                          i0_br_start_error;
-
-   logic [31:1]                                   f1prett;
-   logic [31:1]                                   f0prett;
-   logic [1:0]                                    f1dbecc;
-   logic [1:0]                                    f0dbecc;
-   logic [1:0]                                    f1icaf;
-   logic [1:0]                                    f0icaf;
-
-   logic [1:0]                                    aligndbecc;
-   logic [1:0]                                    alignicaf;
-   logic                                          i0_brp_pc4;
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]          firstpc_hash, secondpc_hash;
-
-   logic                                          first_legal;
-
-   logic [1:0]                                    wrptr, wrptr_in;
-   logic [1:0]                                    rdptr, rdptr_in;
-   logic [2:0]                                    qwen;
-   logic [31:0]                                   q2,q1,q0;
-   logic                                          q2off_in, q2off;
-   logic                                          q1off_in, q1off;
-   logic                                          q0off_in, q0off;
-   logic                                          f0_shift_2B;
-
-   logic [31:0]                                   q0eff;
-   logic [31:0]                                   q0final;
-   logic                                          q0ptr;
-   logic [1:0]                                    q0sel;
-
-   logic [31:0]                                   q1eff;
-   logic [15:0]                                   q1final;
-   logic                                          q1ptr;
-   logic [1:0]                                    q1sel;
-
-   logic [2:0]                                    qren;
-
-   logic                                          consume_fb1, consume_fb0;
-   logic [1:0]                                    icaf_eff;
-
-   localparam                                     BRDATA_SIZE  = pt.BTB_ENABLE ? 16+($clog2(pt.BTB_SIZE)*2*pt.BTB_FULLYA) : 2;
-   localparam                                     BRDATA_WIDTH = pt.BTB_ENABLE ? 8+($clog2(pt.BTB_SIZE)*pt.BTB_FULLYA) : 1;
-   logic [BRDATA_SIZE-1:0]                        brdata_in, brdata2, brdata1, brdata0;
-   logic [BRDATA_SIZE-1:0]                        brdata1eff, brdata0eff;
-   logic [BRDATA_SIZE-1:0]                        brdata1final, brdata0final;
-
-   localparam                                     MHI   = 1+(pt.BTB_ENABLE * (43+pt.BHT_GHR_SIZE));
-   localparam                                     MSIZE = 2+(pt.BTB_ENABLE * (43+pt.BHT_GHR_SIZE));
-
-   logic [MHI:0]                                  misc_data_in, misc2, misc1, misc0;
-   logic [MHI:0]                                  misc1eff, misc0eff;
-
-   logic [pt.BTB_BTAG_SIZE-1:0]                  firstbrtag_hash, secondbrtag_hash;
-
-   logic                                         error_stall_in, error_stall;
-
-   assign error_stall_in = (error_stall | ifu_async_error_start) & ~exu_flush_final;
-
-   rvdff #(.WIDTH(7))  bundle1ff (.*,
-                                  .clk(active_clk),
-                                  .din ({wrptr_in[1:0],rdptr_in[1:0],q2off_in,q1off_in,q0off_in}),
-                                  .dout({wrptr[1:0],   rdptr[1:0],   q2off,   q1off,   q0off})
-                                  );
-
-   rvdffie #(.WIDTH(7),.OVERRIDE(1))  bundle2ff (.*,
-                                                 .din ({error_stall_in,f2val_in[1:0],f1val_in[1:0],f0val_in[1:0]}),
-                                                 .dout({error_stall,   f2val[1:0],   f1val[1:0],   f0val[1:0]   })
-                                                 );
-
-if(pt.BTB_ENABLE==1) begin
-   rvdffe #(BRDATA_SIZE)  brdata2ff   (.*, .clk(clk), .en(qwen[2]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata2[BRDATA_SIZE-1:0]));
-   rvdffe #(BRDATA_SIZE)  brdata1ff   (.*, .clk(clk), .en(qwen[1]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata1[BRDATA_SIZE-1:0]));
-   rvdffe #(BRDATA_SIZE)  brdata0ff   (.*, .clk(clk), .en(qwen[0]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata0[BRDATA_SIZE-1:0]));
-   rvdffe #(MSIZE)        misc2ff     (.*, .clk(clk), .en(qwen[2]),        .din(misc_data_in[MHI:0]),        .dout(misc2[MHI:0]));
-   rvdffe #(MSIZE)        misc1ff     (.*, .clk(clk), .en(qwen[1]),        .din(misc_data_in[MHI:0]),        .dout(misc1[MHI:0]));
-   rvdffe #(MSIZE)        misc0ff     (.*, .clk(clk), .en(qwen[0]),        .din(misc_data_in[MHI:0]),        .dout(misc0[MHI:0]));
-end
-else begin
-
-   rvdffie #((MSIZE*3)+(BRDATA_SIZE*3))    miscff      (.*,
-                                                        .din({qwen[2] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc2[MHI:0], brdata2[BRDATA_SIZE-1:0]},
-                                                              qwen[1] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc1[MHI:0], brdata1[BRDATA_SIZE-1:0]},
-                                                              qwen[0] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc0[MHI:0], brdata0[BRDATA_SIZE-1:0]}}),
-                                                        .dout({misc2[MHI:0],misc1[MHI:0],misc0[MHI:0],
-                                                               brdata2[BRDATA_SIZE-1:0], brdata1[BRDATA_SIZE-1:0], brdata0[BRDATA_SIZE-1:0]})
-                                                        );
-end
-
-  logic [31:1] q2pc, q1pc, q0pc;
-
-   rvdffe #(31)           q2pcff        (.*, .clk(clk), .en(qwen[2]),        .din(ifu_fetch_pc[31:1]),     .dout(q2pc[31:1]));
-   rvdffe #(31)           q1pcff        (.*, .clk(clk), .en(qwen[1]),        .din(ifu_fetch_pc[31:1]),     .dout(q1pc[31:1]));
-   rvdffe #(31)           q0pcff        (.*, .clk(clk), .en(qwen[0]),        .din(ifu_fetch_pc[31:1]),     .dout(q0pc[31:1]));
-
-   rvdffe #(32)           q2ff        (.*, .clk(clk), .en(qwen[2]),        .din(ifu_fetch_data_f[31:0]),     .dout(q2[31:0]));
-   rvdffe #(32)           q1ff        (.*, .clk(clk), .en(qwen[1]),        .din(ifu_fetch_data_f[31:0]),     .dout(q1[31:0]));
-   rvdffe #(32)           q0ff        (.*, .clk(clk), .en(qwen[0]),        .din(ifu_fetch_data_f[31:0]),     .dout(q0[31:0]));
-
-
-   // new queue control logic
-
-   assign qren[2:0]          = {  rdptr[1:0] == 2'b10,
-                                  rdptr[1:0] == 2'b01,
-                                  rdptr[1:0] == 2'b00 };
-
-   assign qwen[2:0]          = { (wrptr[1:0] == 2'b10) & ifvalid,
-                                 (wrptr[1:0] == 2'b01) & ifvalid,
-                                 (wrptr[1:0] == 2'b00) & ifvalid };
-
-
-   assign rdptr_in[1:0]      = ({2{ qren[0]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{ qren[1]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qren[2]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{ qren[0]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qren[1]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{ qren[2]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{~ifu_fb_consume1 & ~ifu_fb_consume2 & ~exu_flush_final}} & rdptr[1:0]);
-
-   assign wrptr_in[1:0]      = ({2{ qwen[0] & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{ qwen[1] & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qwen[2] & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{~ifvalid & ~exu_flush_final}} & wrptr[1:0]);
-
-
-
-   assign q2off_in          = ( ~qwen[2] & (rdptr[1:0]==2'd2)  &  (q2off | f0_shift_2B) ) |
-                              ( ~qwen[2] & (rdptr[1:0]==2'd1)  &  (q2off | f1_shift_2B) ) |
-                              ( ~qwen[2] & (rdptr[1:0]==2'd0)  &   q2off                );
-
-   assign q1off_in          = ( ~qwen[1] & (rdptr[1:0]==2'd1)  &  (q1off | f0_shift_2B) ) |
-                              ( ~qwen[1] & (rdptr[1:0]==2'd0)  &  (q1off | f1_shift_2B) ) |
-                              ( ~qwen[1] & (rdptr[1:0]==2'd2)  &   q1off                );
-
-   assign q0off_in          = ( ~qwen[0] & (rdptr[1:0]==2'd0)  &  (q0off | f0_shift_2B) ) |
-                              ( ~qwen[0] & (rdptr[1:0]==2'd2)  &  (q0off | f1_shift_2B) ) |
-                              ( ~qwen[0] & (rdptr[1:0]==2'd1)  &   q0off                );
-
-
-
-   assign q0ptr              = ( (rdptr[1:0]==2'b00) & q0off ) |
-                               ( (rdptr[1:0]==2'b01) & q1off ) |
-                               ( (rdptr[1:0]==2'b10) & q2off );
-
-   assign q1ptr              = ( (rdptr[1:0]==2'b00) & q1off ) |
-                               ( (rdptr[1:0]==2'b01) & q2off ) |
-                               ( (rdptr[1:0]==2'b10) & q0off );
-
-   assign q0sel[1:0]         = {q0ptr,~q0ptr};
-
-   assign q1sel[1:0]         = {q1ptr,~q1ptr};
-
-   // end new queue control logic
-
-
-   // misc data that is associated with each fetch buffer
-
-   if(pt.BTB_ENABLE==1)
-     assign misc_data_in[MHI:0] = {
-
-                                    ic_access_fault_type_f[1:0],
-                                    ifu_bp_btb_target_f[31:1],
-                                    ifu_bp_poffset_f[11:0],
-                                    ifu_bp_fghr_f[pt.BHT_GHR_SIZE-1:0]
-                                    };
-   else
-     assign misc_data_in[MHI:0] = {
-                                    ic_access_fault_type_f[1:0]
-                                    };
-
-
-   assign {misc1eff[MHI:0],misc0eff[MHI:0]} = (({MSIZE*2{qren[0]}} & {misc1[MHI:0],misc0[MHI:0]}) |
-                                               ({MSIZE*2{qren[1]}} & {misc2[MHI:0],misc1[MHI:0]}) |
-                                               ({MSIZE*2{qren[2]}} & {misc0[MHI:0],misc2[MHI:0]}));
-
-   if(pt.BTB_ENABLE==1) begin
-   assign {
-            f1ictype[1:0],
-            f1prett[31:1],
-            f1poffset[11:0],
-            f1fghr[pt.BHT_GHR_SIZE-1:0]
-            } = misc1eff[MHI:0];
-
-   assign {
-            f0ictype[1:0],
-            f0prett[31:1],
-            f0poffset[11:0],
-            f0fghr[pt.BHT_GHR_SIZE-1:0]
-            } = misc0eff[MHI:0];
-
-      if(pt.BTB_FULLYA) begin
-         assign brdata_in[BRDATA_SIZE-1:0] = {
-                                               ifu_bp_fa_index_f[1], iccm_rd_ecc_double_err[1],ic_access_fault_f[1],ifu_bp_hist1_f[1],ifu_bp_hist0_f[1],ifu_bp_pc4_f[1],ifu_bp_way_f[1],ifu_bp_valid_f[1],ifu_bp_ret_f[1],
-                                               ifu_bp_fa_index_f[0], iccm_rd_ecc_double_err[0],ic_access_fault_f[0],ifu_bp_hist1_f[0],ifu_bp_hist0_f[0],ifu_bp_pc4_f[0],ifu_bp_way_f[0],ifu_bp_valid_f[0],ifu_bp_ret_f[0]
-                                               };
-         assign {f0index[1],f0dbecc[1],f0icaf[1],f0hist1[1],f0hist0[1],f0pc4[1],f0way[1],f0brend[1],f0ret[1],
-                 f0index[0],f0dbecc[0],f0icaf[0],f0hist1[0],f0hist0[0],f0pc4[0],f0way[0],f0brend[0],f0ret[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-         assign {f1index[1],f1dbecc[1],f1icaf[1],f1hist1[1],f1hist0[1],f1pc4[1],f1way[1],f1brend[1],f1ret[1],
-                 f1index[0],f1dbecc[0],f1icaf[0],f1hist1[0],f1hist0[0],f1pc4[0],f1way[0],f1brend[0],f1ret[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      end
-      else begin
-         assign brdata_in[BRDATA_SIZE-1:0] = {
-                                               iccm_rd_ecc_double_err[1],ic_access_fault_f[1],ifu_bp_hist1_f[1],ifu_bp_hist0_f[1],ifu_bp_pc4_f[1],ifu_bp_way_f[1],ifu_bp_valid_f[1],ifu_bp_ret_f[1],
-                                               iccm_rd_ecc_double_err[0],ic_access_fault_f[0],ifu_bp_hist1_f[0],ifu_bp_hist0_f[0],ifu_bp_pc4_f[0],ifu_bp_way_f[0],ifu_bp_valid_f[0],ifu_bp_ret_f[0]
-                                               };
-         assign {f0dbecc[1],f0icaf[1],f0hist1[1],f0hist0[1],f0pc4[1],f0way[1],f0brend[1],f0ret[1],
-                 f0dbecc[0],f0icaf[0],f0hist1[0],f0hist0[0],f0pc4[0],f0way[0],f0brend[0],f0ret[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-         assign {f1dbecc[1],f1icaf[1],f1hist1[1],f1hist0[1],f1pc4[1],f1way[1],f1brend[1],f1ret[1],
-                 f1dbecc[0],f1icaf[0],f1hist1[0],f1hist0[0],f1pc4[0],f1way[0],f1brend[0],f1ret[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      end
-
-
-
-
-   assign {brdata1eff[BRDATA_SIZE-1:0],brdata0eff[BRDATA_SIZE-1:0]} = (({BRDATA_SIZE*2{qren[0]}} & {brdata1[BRDATA_SIZE-1:0],brdata0[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[1]}} & {brdata2[BRDATA_SIZE-1:0],brdata1[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[2]}} & {brdata0[BRDATA_SIZE-1:0],brdata2[BRDATA_SIZE-1:0]}));
-
-   assign brdata0final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q0sel[0]}} & {                     brdata0eff[2*BRDATA_WIDTH-1:0]}) |
-                                           ({BRDATA_SIZE{q0sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata0eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   assign brdata1final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q1sel[0]}} & {                     brdata1eff[2*BRDATA_WIDTH-1:0]}) |
-                                           ({BRDATA_SIZE{q1sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata1eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   end // if (pt.BTB_ENABLE==1)
-   else begin
-      assign {
-               f1ictype[1:0]
-               } = misc1eff[MHI:0];
-
-      assign {
-               f0ictype[1:0]
-               } = misc0eff[MHI:0];
-
-      assign brdata_in[BRDATA_SIZE-1:0] = {
-                                            iccm_rd_ecc_double_err[1],ic_access_fault_f[1],
-                                            iccm_rd_ecc_double_err[0],ic_access_fault_f[0]
-                                            };
-      assign {f0dbecc[1],f0icaf[1],
-              f0dbecc[0],f0icaf[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-      assign {f1dbecc[1],f1icaf[1],
-              f1dbecc[0],f1icaf[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      assign {brdata1eff[BRDATA_SIZE-1:0],brdata0eff[BRDATA_SIZE-1:0]} = (({BRDATA_SIZE*2{qren[0]}} & {brdata1[BRDATA_SIZE-1:0],brdata0[BRDATA_SIZE-1:0]}) |
-                                                                          ({BRDATA_SIZE*2{qren[1]}} & {brdata2[BRDATA_SIZE-1:0],brdata1[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[2]}} & {brdata0[BRDATA_SIZE-1:0],brdata2[BRDATA_SIZE-1:0]}));
-
-      assign brdata0final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q0sel[0]}} & {                     brdata0eff[2*BRDATA_WIDTH-1:0]}) |
-                                              ({BRDATA_SIZE{q0sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata0eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-      assign brdata1final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q1sel[0]}} & {                     brdata1eff[2*BRDATA_WIDTH-1:0]}) |
-                                              ({BRDATA_SIZE{q1sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata1eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   end // else: !if(pt.BTB_ENABLE==1)
-
-
-   // possible states of { sf0_valid, sf1_valid, f2_valid }
-   //
-   // 000    if->f0
-   // 100    if->f1
-   // 101    illegal
-   // 010    if->f1, f1->f0
-   // 110    if->f2
-   // 001    if->f1, f2->f0
-   // 011    if->f2, f2->f1, f1->f0
-   // 111   !if,     no shift
-
-   assign f2_valid           =  f2val[0];
-   assign sf1_valid          =  sf1val[0];
-   assign sf0_valid          =  sf0val[0];
-
-   // interface to fetch
-
-   assign consume_fb0        = ~sf0val[0] & f0val[0];
-
-   assign consume_fb1        = ~sf1val[0] & f1val[0];
-
-   assign ifu_fb_consume1    =  consume_fb0 & ~consume_fb1 & ~exu_flush_final;
-   assign ifu_fb_consume2    =  consume_fb0 &  consume_fb1 & ~exu_flush_final;
-
-   assign ifvalid            =  ifu_fetch_val[0];
-
-   assign shift_f1_f0        =  ~sf0_valid &  sf1_valid;
-   assign shift_f2_f0        =  ~sf0_valid & ~sf1_valid &  f2_valid;
-   assign shift_f2_f1        =  ~sf0_valid &  sf1_valid &  f2_valid;
-
-   assign fetch_to_f0        =  ~sf0_valid & ~sf1_valid & ~f2_valid & ifvalid;
-
-   assign fetch_to_f1        = (~sf0_valid & ~sf1_valid &  f2_valid & ifvalid)  |
-                               (~sf0_valid &  sf1_valid & ~f2_valid & ifvalid)  |
-                               ( sf0_valid & ~sf1_valid & ~f2_valid & ifvalid);
-
-   assign fetch_to_f2        = (~sf0_valid &  sf1_valid &  f2_valid & ifvalid)  |
-                               ( sf0_valid &  sf1_valid & ~f2_valid & ifvalid);
-
-
-   assign f2val_in[1:0]      = ({2{ fetch_to_f2 &                               ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{~fetch_to_f2 & ~shift_f2_f1 & ~shift_f2_f0 & ~exu_flush_final}} & f2val[1:0]        );
-
-
-   assign sf1val[1:0]        = ({2{ f1_shift_2B}} & {1'b0,f1val[1]}) |
-                               ({2{~f1_shift_2B}} & f1val[1:0]     );
-
-   assign f1val_in[1:0]      = ({2{ fetch_to_f1                               & ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{                shift_f2_f1                & ~exu_flush_final}} & f2val[1:0]        ) |
-                               ({2{~fetch_to_f1 & ~shift_f2_f1 & ~shift_f1_f0 & ~exu_flush_final}} & sf1val[1:0]       );
-
-
-
-   assign sf0val[1:0]        = ({2{ shift_2B            }} & {1'b0,f0val[1]}) |
-                               ({2{~shift_2B & ~shift_4B}} & f0val[1:0]);
-
-   assign f0val_in[1:0]      = ({2{fetch_to_f0                                & ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{                shift_f2_f0                & ~exu_flush_final}} & f2val[1:0]        ) |
-                               ({2{                               shift_f1_f0 & ~exu_flush_final}} & sf1val[1:0]       ) |
-                               ({2{~fetch_to_f0 & ~shift_f2_f0 & ~shift_f1_f0 & ~exu_flush_final}} & sf0val[1:0]       );
-
-   assign {q1eff[31:0],q0eff[31:0]} = (({64{qren[0]}} & {q1[31:0],q0[31:0]}) |
-                                       ({64{qren[1]}} & {q2[31:0],q1[31:0]}) |
-                                       ({64{qren[2]}} & {q0[31:0],q2[31:0]}));
-
-   assign q0final[31:0]      = ({32{q0sel[0]}} & {      q0eff[31:0]}) |
-                               ({32{q0sel[1]}} & {16'b0,q0eff[31:16]});
-
-   assign q1final[15:0]      = ({16{q1sel[0]}} & q1eff[15:0] ) |
-                               ({16{q1sel[1]}} & q1eff[31:16]);
-   logic [31:1] q0pceff, q0pcfinal;
-   logic [31:1] q1pceff;
-
-   assign {q1pceff[31:1],q0pceff[31:1]} = (({62{qren[0]}} & {q1pc[31:1],q0pc[31:1]}) |
-                                           ({62{qren[1]}} & {q2pc[31:1],q1pc[31:1]}) |
-                                           ({62{qren[2]}} & {q0pc[31:1],q2pc[31:1]}));
-
-
-   assign q0pcfinal[31:1]      = ({31{q0sel[0]}} & ( q0pceff[31:1])) |
-                                 ({31{q0sel[1]}} & ( q0pceff[31:1] + 31'd1));
-
-   assign aligndata[31:0]    = ({32{ f0val[1]           }} & {q0final[31:0]}) |
-                               ({32{~f0val[1] & f0val[0]}} & {q1final[15:0],q0final[15:0]});
-
-   assign alignval[1:0]      = ({ 2{ f0val[1]           }} & {2'b11}) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1val[0],1'b1});
-
-   assign alignicaf[1:0]    = ({ 2{ f0val[1]           }} &  f0icaf[1:0]          ) |
-                              ({ 2{~f0val[1] & f0val[0]}} & {f1icaf[0],f0icaf[0]});
-
-   assign aligndbecc[1:0]    = ({ 2{ f0val[1]           }} &  f0dbecc[1:0]          ) |
-                              ({ 2{~f0val[1] & f0val[0]}} & {f1dbecc[0],f0dbecc[0]});
-
-   if (pt.BTB_ENABLE==1) begin
-
-   // for branch prediction
-
-   assign alignbrend[1:0]    = ({ 2{ f0val[1]           }} &  f0brend[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1brend[0],f0brend[0]});
-
-   assign alignpc4[1:0]      = ({ 2{ f0val[1]           }} &  f0pc4[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1pc4[0],f0pc4[0]});
-
-      if(pt.BTB_FULLYA) begin
-         assign alignindex[0]      = f0index[0];
-         assign alignindex[1]      = f0val[1] ? f0index[1] : f1index[0];
-      end
-
-   assign alignret[1:0]      = ({ 2{ f0val[1]           }} &  f0ret[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1ret[0],f0ret[0]});
-
-   assign alignway[1:0]      = ({ 2{ f0val[1]           }} &  f0way[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1way[0],f0way[0]});
-
-   assign alignhist1[1:0]    = ({ 2{ f0val[1]           }} &  f0hist1[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1hist1[0],f0hist1[0]});
-
-   assign alignhist0[1:0]    = ({ 2{ f0val[1]           }} &  f0hist0[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1hist0[0],f0hist0[0]});
-
-   assign secondpc[31:1]     = ({31{ f0val[1]           }} &  (q0pceff[31:1] + 31'd1)) |
-                               // you need the base pc for 2nd one only (4B max, 2B for the 1st and 2B for the 2nd)
-                               ({31{~f0val[1] & f0val[0]}} &   q1pceff[31:1]      );
-
-
-   assign firstpc[31:1]      =  q0pcfinal[31:1];
-      end // if (pt.BTB_ENABLE==1)
-
-   assign alignfromf1[1]     =      ~f0val[1] & f0val[0];
-
-
-   assign ifu_i0_pc[31:1]    =  q0pcfinal[31:1];
-
-
-   assign ifu_i0_pc4         =  first4B;
-
-
-   assign ifu_i0_cinst[15:0] = aligndata[15:0];
-
-   assign first4B            = (aligndata[1:0] == 2'b11);
-   assign first2B            = ~first4B;
-
-   assign ifu_i0_valid       = (first4B & alignval[1]) |
-                               (first2B & alignval[0]);
-
-   // inst access fault on any byte of inst results in access fault for the inst
-   assign ifu_i0_icaf        = (first4B & (|alignicaf[1:0])) |
-                               (first2B &   alignicaf[0]   );
-
-   assign ifu_i0_icaf_type[1:0] = (first4B & ~f0val[1] & f0val[0] & ~alignicaf[0] & ~aligndbecc[0]) ? f1ictype[1:0] : f0ictype[1:0];
-
-
-   assign icaf_eff[1:0] = alignicaf[1:0] | aligndbecc[1:0];
-
-   assign ifu_i0_icaf_second = first4B & ~icaf_eff[0] & icaf_eff[1];
-
-   assign ifu_i0_dbecc       = (first4B & (|aligndbecc[1:0])) |
-                               (first2B &   aligndbecc[0]   );
-
-
-   assign ifirst[31:0]       =  aligndata[31:0];
-
-
-   assign ifu_i0_instr[31:0] = ({32{first4B & alignval[1]}} & ifirst[31:0]) |
-                               ({32{first2B & alignval[0]}} & uncompress0[31:0]);
-
-if(pt.BTB_ENABLE==1) begin
-
-   // if you detect br does not start on instruction boundary
-
-   eb1_btb_addr_hash #(.pt(pt)) firsthash (.pc(firstpc [pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]),
-                                            .hash(firstpc_hash [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-   eb1_btb_addr_hash #(.pt(pt)) secondhash(.pc(secondpc[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]),
-                                            .hash(secondpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-   if(pt.BTB_FULLYA) begin
-      assign firstbrtag_hash = firstpc;
-      assign secondbrtag_hash = secondpc;
-   end
-   else begin
-      if(pt.BTB_BTAG_FOLD) begin : btbfold
-         eb1_btb_tag_hash_fold #(.pt(pt)) first_brhash (.pc(firstpc [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                         .hash(firstbrtag_hash [pt.BTB_BTAG_SIZE-1:0]));
-         eb1_btb_tag_hash_fold #(.pt(pt)) second_brhash(.pc(secondpc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                         .hash(secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0]));
-      end
-      else begin
-         eb1_btb_tag_hash #(.pt(pt)) first_brhash (.pc(firstpc [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                    .hash(firstbrtag_hash [pt.BTB_BTAG_SIZE-1:0]));
-         eb1_btb_tag_hash #(.pt(pt)) second_brhash(.pc(secondpc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                    .hash(secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0]));
-      end
-   end // else: !if(pt.BTB_FULLYA)
-
-
-   // start_indexing - you want pc to be based on where the end of branch is prediction
-   // normal indexing pc based that's incorrect now for pc4 cases it's pc4 + 2
-
-   always_comb begin
-
-      i0_brp                 = '0;
-
-      i0_br_start_error      = (first4B & alignval[1] & alignbrend[0]);
-
-      i0_brp.valid           = (first2B & alignbrend[0]) |
-                               (first4B & alignbrend[1]) |
-                                i0_br_start_error;
-
-      i0_brp_pc4             = (first2B & alignpc4[0]) |
-                               (first4B & alignpc4[1]);
-
-      i0_brp.ret             = (first2B & alignret[0]) |
-                               (first4B & alignret[1]);
-
-      i0_brp.way             = (first2B | alignbrend[0])  ?  alignway[0]  :  alignway[1];
-
-      i0_brp.hist[1]         = (first2B & alignhist1[0]) |
-                               (first4B & alignhist1[1]);
-
-      i0_brp.hist[0]         = (first2B & alignhist0[0]) |
-                               (first4B & alignhist0[1]);
-
-      i0_ends_f1             =  first4B & alignfromf1[1];
-
-      i0_brp.toffset[11:0]   = (i0_ends_f1)  ?  f1poffset[11:0]  :  f0poffset[11:0];
-
-      i0_brp.prett[31:1]     = (i0_ends_f1)  ?  f1prett[31:1]    :  f0prett[31:1];
-
-      i0_brp.br_start_error  = i0_br_start_error;
-
-      i0_brp.bank            = (first2B | alignbrend[0])  ?  firstpc[1]  :  secondpc[1];
-
-      i0_brp.br_error        = (i0_brp.valid &  i0_brp_pc4 &  first2B) |
-                               (i0_brp.valid & ~i0_brp_pc4 &  first4B);
-
-      if(pt.BTB_FULLYA)
-        ifu_i0_fa_index = (first2B | alignbrend[0])  ?  alignindex[0]  :  alignindex[1];
-      else
-        ifu_i0_fa_index = '0;
-
- end
-
-
-   assign ifu_i0_bp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = (first2B | alignbrend[0])  ?  firstpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  :
-                                                                                         secondpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign ifu_i0_bp_fghr[pt.BHT_GHR_SIZE-1:0]            = (i0_ends_f1)               ?  f1fghr[pt.BHT_GHR_SIZE-1:0]  :
-                                                                                         f0fghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign ifu_i0_bp_btag[pt.BTB_BTAG_SIZE-1:0]           = (first2B | alignbrend[0])  ?  firstbrtag_hash[pt.BTB_BTAG_SIZE-1:0]  :
-                                                                                         secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0];
-end
-else begin
-   assign i0_brp = '0;
-   assign ifu_i0_bp_index = '0;
-   assign ifu_i0_bp_fghr = '0;
-   assign ifu_i0_bp_btag = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   // decompress
-
-   // quiet inputs for 4B inst
-   eb1_ifu_compress_ctl compress0 (.din((first2B) ? aligndata[15:0] : '0), .dout(uncompress0[31:0]));
-
-
-
-   assign i0_shift           =  dec_i0_decode_d & ~error_stall;
-
-   assign ifu_pmu_instr_aligned = i0_shift;
-
-
-   // compute how many bytes are being shifted from f0
-
-   assign shift_2B           =  i0_shift & first2B;
-
-   assign shift_4B           =  i0_shift & first4B;
-
-   // exact equations for the queue logic
-   assign f0_shift_2B        = (shift_2B & f0val[0]            ) |
-                               (shift_4B & f0val[0] & ~f0val[1]);
-
-
-   // f0 valid states
-   //     11
-   //     10
-   //     00
-
-   assign f1_shift_2B        =  f0val[0] & ~f0val[1] & shift_4B;
-
-
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_bp_ctl.sv b/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_bp_ctl.sv
deleted file mode 100644
index eae8a4e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_bp_ctl.sv
+++ /dev/null
@@ -1,884 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Branch predictor
-// Comments:
-//
-//
-//  Bank3 : Bank2 : Bank1 : Bank0
-//  FA  C       8       4       0
-//********************************************************************************
-
-module eb1_ifu_bp_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-
-   input logic clk,
-   input logic rst_l,
-
-   input logic ic_hit_f,      // Icache hit, enables F address capture
-
-   input logic [31:1] ifc_fetch_addr_f, // look up btb address
-   input logic ifc_fetch_req_f,  // F1 valid
-
-   input eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // BP commit update packet, includes errors
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_i0_br_fghr_r, // fghr to bp
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r, // bp index
-
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associative btb error index
-
-   input logic dec_tlu_flush_lower_wb, // used to move EX4 RS to EX1 and F
-   input logic dec_tlu_flush_leak_one_wb, // don't hit for leak one fetches
-
-   input logic dec_tlu_bpred_disable, // disable all branch prediction
-
-   input eb1_predict_pkt_t  exu_mp_pkt, // mispredict packet
-
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_mp_eghr, // execute ghr (for patching fghr)
-   input logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   input logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-   input logic exu_flush_final, // all flushes
-
-   output logic ifu_bp_hit_taken_f, // btb hit, select target
-   output logic [31:1] ifu_bp_btb_target_f, //  predicted target PC
-   output logic ifu_bp_inst_mask_f, // tell ic which valids to kill because of a taken branch, right justified
-
-   output logic [pt.BHT_GHR_SIZE-1:0] ifu_bp_fghr_f, // fetch ghr
-
-   output logic [1:0] ifu_bp_way_f, // way
-   output logic [1:0] ifu_bp_ret_f, // predicted ret
-   output logic [1:0] ifu_bp_hist1_f, // history counters for all 4 potential branches, bit 1, right justified
-   output logic [1:0] ifu_bp_hist0_f, // history counters for all 4 potential branches, bit 0, right justified
-   output logic [1:0] ifu_bp_pc4_f, // pc4 indication, right justified
-   output logic [1:0] ifu_bp_valid_f, // branch valid, right justified
-   output logic [11:0] ifu_bp_poffset_f, // predicted target
-
-   output logic [1:0] [$clog2(pt.BTB_SIZE)-1:0]    ifu_bp_fa_index_f, // predicted branch index (fully associative option)
-
-   input  logic       scan_mode
-   );
-
-
-   localparam BTB_DWIDTH =  pt.BTB_TOFFSET_SIZE+pt.BTB_BTAG_SIZE+5;
-   localparam BTB_DWIDTH_TOP =  int'(pt.BTB_TOFFSET_SIZE)+int'(pt.BTB_BTAG_SIZE)+4;
-   localparam BTB_FA_INDEX = $clog2(pt.BTB_SIZE)-1;
-   localparam FA_CMP_LOWER = $clog2(pt.ICACHE_LN_SZ);
-   localparam FA_TAG_END_UPPER= 5+int'(pt.BTB_TOFFSET_SIZE)+int'(FA_CMP_LOWER)-1; // must cast to int or vcs build fails
-   localparam FA_TAG_START_LOWER = 3+int'(pt.BTB_TOFFSET_SIZE)+int'(FA_CMP_LOWER);
-   localparam FA_TAG_END_LOWER = 5+int'(pt.BTB_TOFFSET_SIZE);
-
-   localparam TAG_START=BTB_DWIDTH-1;
-   localparam PC4=4;
-   localparam BOFF=3;
-   localparam CALL=2;
-   localparam RET=1;
-   localparam BV=0;
-
-   localparam LRU_SIZE=pt.BTB_ARRAY_DEPTH;
-   localparam NUM_BHT_LOOP = (pt.BHT_ARRAY_DEPTH > 16 ) ? 16 : pt.BHT_ARRAY_DEPTH;
-   localparam NUM_BHT_LOOP_INNER_HI =  (pt.BHT_ARRAY_DEPTH > 16 ) ?pt.BHT_ADDR_LO+3 : pt.BHT_ADDR_HI;
-   localparam NUM_BHT_LOOP_OUTER_LO =  (pt.BHT_ARRAY_DEPTH > 16 ) ?pt.BHT_ADDR_LO+4 : pt.BHT_ADDR_LO;
-   localparam BHT_NO_ADDR_MATCH  = ( pt.BHT_ARRAY_DEPTH <= 16 );
-
-
-   logic exu_mp_valid_write;
-   logic exu_mp_ataken;
-   logic exu_mp_valid; // conditional branch mispredict
-   logic exu_mp_boffset; // branch offsett
-   logic exu_mp_pc4; // branch is a 4B inst
-   logic exu_mp_call; // branch is a call inst
-   logic exu_mp_ret; // branch is a ret inst
-   logic exu_mp_ja; // branch is a jump always
-   logic [1:0] exu_mp_hist; // new history
-   logic [11:0] exu_mp_tgt; // target offset
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_addr; // BTB/BHT address
-   logic                                   dec_tlu_br0_v_wb; // WB stage history update
-   logic [1:0]                             dec_tlu_br0_hist_wb; // new history
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_tlu_br0_addr_wb; // addr
-   logic                                   dec_tlu_br0_error_wb; // error; invalidate bank
-   logic                                   dec_tlu_br0_start_error_wb; // error; invalidate all 4 banks in fg
-   logic [pt.BHT_GHR_SIZE-1:0]             exu_i0_br_fghr_wb;
-
-   logic use_mp_way, use_mp_way_p1;
-   logic [pt.RET_STACK_SIZE-1:0][31:0] rets_out, rets_in;
-   logic [pt.RET_STACK_SIZE-1:0]        rsenable;
-
-
-   logic [11:0]       btb_rd_tgt_f;
-   logic              btb_rd_pc4_f, btb_rd_call_f, btb_rd_ret_f;
-   logic [1:1]        bp_total_branch_offset_f;
-
-   logic [31:1]       bp_btb_target_adder_f;
-   logic [31:1]       bp_rs_call_target_f;
-   logic              rs_push, rs_pop, rs_hold;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] btb_rd_addr_p1_f, btb_wr_addr, btb_rd_addr_f;
-   logic [pt.BTB_BTAG_SIZE-1:0] btb_wr_tag, fetch_rd_tag_f, fetch_rd_tag_p1_f;
-   logic [BTB_DWIDTH-1:0]        btb_wr_data;
-   logic               btb_wr_en_way0, btb_wr_en_way1;
-
-
-   logic               dec_tlu_error_wb, btb_valid, dec_tlu_br0_middle_wb;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]        btb_error_addr_wb;
-   logic branch_error_collision_f, fetch_mp_collision_f, branch_error_collision_p1_f, fetch_mp_collision_p1_f;
-
-   logic  branch_error_bank_conflict_f;
-   logic [pt.BHT_GHR_SIZE-1:0] merged_ghr, fghr_ns, fghr;
-   logic [1:0] num_valids;
-   logic [LRU_SIZE-1:0] btb_lru_b0_f, btb_lru_b0_hold, btb_lru_b0_ns,
-                        fetch_wrindex_dec, fetch_wrindex_p1_dec, fetch_wrlru_b0, fetch_wrlru_p1_b0,
-                        mp_wrindex_dec, mp_wrlru_b0;
-   logic                btb_lru_rd_f, btb_lru_rd_p1_f, lru_update_valid_f;
-   logic  tag_match_way0_f, tag_match_way1_f;
-   logic [1:0] way_raw, bht_dir_f, btb_sel_f, wayhit_f, vwayhit_f, wayhit_p1_f;
-   logic [1:0] bht_valid_f, bht_force_taken_f;
-
-   logic leak_one_f, leak_one_f_d1;
-
-   logic [LRU_SIZE-1:0][BTB_DWIDTH-1:0]  btb_bank0_rd_data_way0_out ;
-
-   logic [LRU_SIZE-1:0][BTB_DWIDTH-1:0]  btb_bank0_rd_data_way1_out ;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way0_f ;
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way1_f ;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way0_p1_f ;
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way1_p1_f ;
-
-   logic                [BTB_DWIDTH-1:0] btb_vbank0_rd_data_f, btb_vbank1_rd_data_f;
-
-   logic                                         final_h;
-   logic                                         btb_fg_crossing_f;
-   logic                                         middle_of_bank;
-
-
-   logic [1:0]                                   bht_vbank0_rd_data_f, bht_vbank1_rd_data_f;
-   logic                                         branch_error_bank_conflict_p1_f;
-   logic                                         tag_match_way0_p1_f, tag_match_way1_p1_f;
-
-   logic [1:0]                                   btb_vlru_rd_f, fetch_start_f, tag_match_vway1_expanded_f, tag_match_way0_expanded_p1_f, tag_match_way1_expanded_p1_f;
-   logic [31:2] fetch_addr_p1_f;
-
-
-   logic exu_mp_way, exu_mp_way_f, dec_tlu_br0_way_wb, dec_tlu_way_wb;
-   logic                [BTB_DWIDTH-1:0] btb_bank0e_rd_data_f, btb_bank0e_rd_data_p1_f;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0o_rd_data_f;
-
-   logic [1:0] tag_match_way0_expanded_f, tag_match_way1_expanded_f;
-
-
-    logic [1:0]                                  bht_bank0_rd_data_f;
-    logic [1:0]                                  bht_bank1_rd_data_f;
-    logic [1:0]                                  bht_bank0_rd_data_p1_f;
-   genvar                                        j, i;
-
-   assign exu_mp_valid = exu_mp_pkt.misp & ~leak_one_f; // conditional branch mispredict
-   assign exu_mp_boffset = exu_mp_pkt.boffset;  // branch offset
-   assign exu_mp_pc4 = exu_mp_pkt.pc4;  // branch is a 4B inst
-   assign exu_mp_call = exu_mp_pkt.pcall;  // branch is a call inst
-   assign exu_mp_ret = exu_mp_pkt.pret;  // branch is a ret inst
-   assign exu_mp_ja = exu_mp_pkt.pja;  // branch is a jump always
-   assign exu_mp_way = exu_mp_pkt.way;  // repl way
-   assign exu_mp_hist[1:0] = exu_mp_pkt.hist[1:0];  // new history
-   assign exu_mp_tgt[11:0]  = exu_mp_pkt.toffset[11:0] ;  // target offset
-   assign exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  = exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ;  // BTB/BHT address
-   assign exu_mp_ataken = exu_mp_pkt.ataken;
-
-
-   assign dec_tlu_br0_v_wb = dec_tlu_br0_r_pkt.valid;
-   assign dec_tlu_br0_hist_wb[1:0]  = dec_tlu_br0_r_pkt.hist[1:0];
-   assign dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-   assign dec_tlu_br0_error_wb = dec_tlu_br0_r_pkt.br_error;
-   assign dec_tlu_br0_middle_wb = dec_tlu_br0_r_pkt.middle;
-   assign dec_tlu_br0_way_wb = dec_tlu_br0_r_pkt.way;
-   assign dec_tlu_br0_start_error_wb = dec_tlu_br0_r_pkt.br_start_error;
-   assign exu_i0_br_fghr_wb[pt.BHT_GHR_SIZE-1:0] = exu_i0_br_fghr_r[pt.BHT_GHR_SIZE-1:0];
-
-
-
-
-   // ----------------------------------------------------------------------
-   // READ
-   // ----------------------------------------------------------------------
-
-   // hash the incoming fetch PC, first guess at hashing algorithm
-   eb1_btb_addr_hash #(.pt(pt)) f1hash(.pc(ifc_fetch_addr_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-
-   assign fetch_addr_p1_f[31:2] = ifc_fetch_addr_f[31:2] + 30'b1;
-   eb1_btb_addr_hash #(.pt(pt)) f1hash_p1(.pc(fetch_addr_p1_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-   assign btb_sel_f[1] = ~bht_dir_f[0];
-   assign btb_sel_f[0] =  bht_dir_f[0];
-
-   assign fetch_start_f[1:0] = {ifc_fetch_addr_f[1], ~ifc_fetch_addr_f[1]};
-
-   // Errors colliding with fetches must kill the btb/bht hit.
-
-   assign branch_error_collision_f = dec_tlu_error_wb & (btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]);
-   assign branch_error_collision_p1_f = dec_tlu_error_wb & (btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]);
-
-   assign branch_error_bank_conflict_f = branch_error_collision_f & dec_tlu_error_wb;
-   assign branch_error_bank_conflict_p1_f = branch_error_collision_p1_f & dec_tlu_error_wb;
-
-   // set on leak one, hold until next flush without leak one
-   assign leak_one_f = (dec_tlu_flush_leak_one_wb & dec_tlu_flush_lower_wb) | (leak_one_f_d1 & ~dec_tlu_flush_lower_wb);
-
-logic exu_flush_final_d1;
-
- if(!pt.BTB_FULLYA) begin
-   assign fetch_mp_collision_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                                    exu_mp_valid & ifc_fetch_req_f &
-                                    (exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO])
-                                    );
-   assign fetch_mp_collision_p1_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                                       exu_mp_valid & ifc_fetch_req_f &
-                                       (exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO])
-                                       );
-   // 2 -way SA, figure out the way hit and mux accordingly
-   assign tag_match_way0_f = btb_bank0_rd_data_way0_f[BV] & (btb_bank0_rd_data_way0_f[TAG_START:17] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way1_f = btb_bank0_rd_data_way1_f[BV] & (btb_bank0_rd_data_way1_f[TAG_START:17] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way0_p1_f = btb_bank0_rd_data_way0_p1_f[BV] & (btb_bank0_rd_data_way0_p1_f[TAG_START:17] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_p1_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way1_p1_f = btb_bank0_rd_data_way1_p1_f[BV] & (btb_bank0_rd_data_way1_p1_f[TAG_START:17] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_p1_f) & ifc_fetch_req_f & ~leak_one_f;
-
-
-   // Both ways could hit, use the offset bit to reorder
-
-   assign tag_match_way0_expanded_f[1:0] = {tag_match_way0_f &  (btb_bank0_rd_data_way0_f[BOFF] ^ btb_bank0_rd_data_way0_f[PC4]),
-                                             tag_match_way0_f & ~(btb_bank0_rd_data_way0_f[BOFF] ^ btb_bank0_rd_data_way0_f[PC4])};
-
-   assign tag_match_way1_expanded_f[1:0] = {tag_match_way1_f &  (btb_bank0_rd_data_way1_f[BOFF] ^ btb_bank0_rd_data_way1_f[PC4]),
-                                             tag_match_way1_f & ~(btb_bank0_rd_data_way1_f[BOFF] ^ btb_bank0_rd_data_way1_f[PC4])};
-
-   assign tag_match_way0_expanded_p1_f[1:0] = {tag_match_way0_p1_f &  (btb_bank0_rd_data_way0_p1_f[BOFF] ^ btb_bank0_rd_data_way0_p1_f[PC4]),
-                                                tag_match_way0_p1_f & ~(btb_bank0_rd_data_way0_p1_f[BOFF] ^ btb_bank0_rd_data_way0_p1_f[PC4])};
-
-   assign tag_match_way1_expanded_p1_f[1:0] = {tag_match_way1_p1_f &  (btb_bank0_rd_data_way1_p1_f[BOFF] ^ btb_bank0_rd_data_way1_p1_f[PC4]),
-                                                tag_match_way1_p1_f & ~(btb_bank0_rd_data_way1_p1_f[BOFF] ^ btb_bank0_rd_data_way1_p1_f[PC4])};
-
-   assign wayhit_f[1:0] = tag_match_way0_expanded_f[1:0] | tag_match_way1_expanded_f[1:0];
-   assign wayhit_p1_f[1:0] = tag_match_way0_expanded_p1_f[1:0] | tag_match_way1_expanded_p1_f[1:0];
-
-   assign btb_bank0o_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_f[1]}} & btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_f[1]}} & btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0]) );
-   assign btb_bank0e_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_f[0]}} & btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_f[0]}} & btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0]) );
-
-   assign btb_bank0e_rd_data_p1_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_p1_f[0]}} & btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0]) |
-                                                               ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_p1_f[0]}} & btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0]) );
-
-   // virtual bank order
-
-   assign btb_vbank0_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{fetch_start_f[0]}} &  btb_bank0e_rd_data_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{fetch_start_f[1]}} &  btb_bank0o_rd_data_f[BTB_DWIDTH-1:0]) );
-   assign btb_vbank1_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{fetch_start_f[0]}} &  btb_bank0o_rd_data_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{fetch_start_f[1]}} &  btb_bank0e_rd_data_p1_f[BTB_DWIDTH-1:0]) );
-
-   assign way_raw[1:0] =  tag_match_vway1_expanded_f[1:0] | (~vwayhit_f[1:0] & btb_vlru_rd_f[1:0]);
-
-   // --------------------------------------------------------------------------------
-   // --------------------------------------------------------------------------------
-   // update lru
-   // mp
-
-   // create a onehot lru write vector
-   assign mp_wrindex_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   // fetch
-   assign fetch_wrindex_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-   assign fetch_wrindex_p1_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign mp_wrlru_b0[LRU_SIZE-1:0] = mp_wrindex_dec[LRU_SIZE-1:0] & {LRU_SIZE{exu_mp_valid}};
-
-
-   assign btb_lru_b0_hold[LRU_SIZE-1:0] = ~mp_wrlru_b0[LRU_SIZE-1:0] & ~fetch_wrlru_b0[LRU_SIZE-1:0];
-
-   // Forward the mp lru information to the fetch, avoids multiple way hits later
-   assign use_mp_way = fetch_mp_collision_f;
-   assign use_mp_way_p1 = fetch_mp_collision_p1_f;
-
-   assign lru_update_valid_f = (vwayhit_f[0] | vwayhit_f[1]) & ifc_fetch_req_f & ~leak_one_f;
-
-
-   assign fetch_wrlru_b0[LRU_SIZE-1:0] = fetch_wrindex_dec[LRU_SIZE-1:0] &
-                                         {LRU_SIZE{lru_update_valid_f}};
-   assign fetch_wrlru_p1_b0[LRU_SIZE-1:0] = fetch_wrindex_p1_dec[LRU_SIZE-1:0] &
-                                         {LRU_SIZE{lru_update_valid_f}};
-
-   assign btb_lru_b0_ns[LRU_SIZE-1:0] = ( (btb_lru_b0_hold[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]) |
-                                          (mp_wrlru_b0[LRU_SIZE-1:0] & {LRU_SIZE{~exu_mp_way}}) |
-                                          (fetch_wrlru_b0[LRU_SIZE-1:0] & {LRU_SIZE{tag_match_way0_f}}) |
-                                          (fetch_wrlru_p1_b0[LRU_SIZE-1:0] & {LRU_SIZE{tag_match_way0_p1_f}}) );
-
-
-
-   assign btb_lru_rd_f = use_mp_way ? exu_mp_way_f : |(fetch_wrindex_dec[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]);
-
-   assign btb_lru_rd_p1_f = use_mp_way_p1 ? exu_mp_way_f : |(fetch_wrindex_p1_dec[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]);
-
-   // rotated
-   assign btb_vlru_rd_f[1:0] = ( ({2{fetch_start_f[0]}} & {btb_lru_rd_f, btb_lru_rd_f}) |
-                                  ({2{fetch_start_f[1]}} & {btb_lru_rd_p1_f, btb_lru_rd_f}));
-
-   assign tag_match_vway1_expanded_f[1:0] = ( ({2{fetch_start_f[0]}} & {tag_match_way1_expanded_f[1:0]}) |
-                                               ({2{fetch_start_f[1]}} & {tag_match_way1_expanded_p1_f[0], tag_match_way1_expanded_f[1]}) );
-
-
-   rvdffe #(LRU_SIZE) btb_lru_ff (.*, .en(ifc_fetch_req_f | exu_mp_valid),
-                                    .din(btb_lru_b0_ns[(LRU_SIZE)-1:0]),
-                                   .dout(btb_lru_b0_f[(LRU_SIZE)-1:0]));
-
- end // if (!pt.BTB_FULLYA)
-   // Detect end of cache line and mask as needed
-   logic eoc_near;
-   logic eoc_mask;
-   assign eoc_near = &ifc_fetch_addr_f[pt.ICACHE_BEAT_ADDR_HI:3];
-   assign eoc_mask = ~eoc_near| (|(~ifc_fetch_addr_f[2:1]));
-
-
-
-   // --------------------------------------------------------------------------------
-   // --------------------------------------------------------------------------------
-
-   // mux out critical hit bank for pc computation
-   // This is only useful for the first taken branch in the fetch group
-   logic [16:1] btb_sel_data_f;
-
-   assign btb_rd_tgt_f[11:0] = btb_sel_data_f[16:5];
-   assign btb_rd_pc4_f       = btb_sel_data_f[4];
-   assign btb_rd_call_f      = btb_sel_data_f[2];
-   assign btb_rd_ret_f       = btb_sel_data_f[1];
-
-   assign btb_sel_data_f[16:1] = ( ({16{btb_sel_f[1]}} & btb_vbank1_rd_data_f[16:1]) |
-                                    ({16{btb_sel_f[0]}} & btb_vbank0_rd_data_f[16:1]) );
-
-
-   logic [1:0] hist0_raw, hist1_raw, pc4_raw, pret_raw;
-
-   // a valid taken target needs to kill the next fetch as we compute the target address
-   assign ifu_bp_hit_taken_f = |(vwayhit_f[1:0] & hist1_raw[1:0]) & ifc_fetch_req_f & ~leak_one_f_d1 & ~dec_tlu_bpred_disable;
-
-
-   // Don't put calls/rets/ja in the predictor, force the bht taken instead
-   assign bht_force_taken_f[1:0] = {(btb_vbank1_rd_data_f[CALL] | btb_vbank1_rd_data_f[RET]),
-                                     (btb_vbank0_rd_data_f[CALL] | btb_vbank0_rd_data_f[RET])};
-
-
-   // taken and valid, otherwise, branch errors must clear the bht
-   assign bht_valid_f[1:0] = vwayhit_f[1:0];
-
-   assign bht_vbank0_rd_data_f[1:0] = ( ({2{fetch_start_f[0]}} & bht_bank0_rd_data_f[1:0]) |
-                                         ({2{fetch_start_f[1]}} & bht_bank1_rd_data_f[1:0]) );
-
-   assign bht_vbank1_rd_data_f[1:0] = ( ({2{fetch_start_f[0]}} & bht_bank1_rd_data_f[1:0]) |
-                                         ({2{fetch_start_f[1]}} & bht_bank0_rd_data_p1_f[1:0]) );
-
-
-   assign bht_dir_f[1:0] = {(bht_force_taken_f[1] | bht_vbank1_rd_data_f[1]) & bht_valid_f[1],
-                             (bht_force_taken_f[0] | bht_vbank0_rd_data_f[1]) & bht_valid_f[0]};
-
-   assign ifu_bp_inst_mask_f = (ifu_bp_hit_taken_f & btb_sel_f[1]) | ~ifu_bp_hit_taken_f;
-
-
-
-
-   // Branch prediction info is sent with the 2byte lane associated with the end of the branch.
-   // Cases
-   //       BANK1         BANK0
-   // -------------------------------
-   // |      :       |      :       |
-   // -------------------------------
-   //         <------------>                   : PC4 branch, offset, should be in B1 (indicated on [2])
-   //                <------------>            : PC4 branch, no offset, indicate PC4, VALID, HIST on [1]
-   //                       <------------>     : PC4 branch, offset, indicate PC4, VALID, HIST on [0]
-   //                <------>                  : PC2 branch, offset, indicate VALID, HIST on [1]
-   //                       <------>           : PC2 branch, no offset, indicate VALID, HIST on [0]
-   //
-
-
-
-   assign hist1_raw[1:0] = bht_force_taken_f[1:0] | {bht_vbank1_rd_data_f[1],
-                                                      bht_vbank0_rd_data_f[1]};
-
-   assign hist0_raw[1:0] = {bht_vbank1_rd_data_f[0],
-                            bht_vbank0_rd_data_f[0]};
-
-
-   assign pc4_raw[1:0] = {vwayhit_f[1] & btb_vbank1_rd_data_f[PC4],
-                          vwayhit_f[0] & btb_vbank0_rd_data_f[PC4]};
-
-   assign pret_raw[1:0] = {vwayhit_f[1] & ~btb_vbank1_rd_data_f[CALL] & btb_vbank1_rd_data_f[RET],
-                           vwayhit_f[0] & ~btb_vbank0_rd_data_f[CALL] & btb_vbank0_rd_data_f[RET]};
-
-   // GHR
-
-
-  // count the valids with masking based on first taken
-   assign num_valids[1:0] = countones(bht_valid_f[1:0]);
-
-   // Note that the following property holds
-   // P: prior ghr, H: history bit of last valid branch in line (could be 1 or 0)
-   // Num valid branches   What new GHR must be
-   // 2                    0H
-   // 1                    PH
-   // 0                    PP
-
-   assign final_h = |(btb_sel_f[1:0] & bht_dir_f[1:0]);
-
-   assign merged_ghr[pt.BHT_GHR_SIZE-1:0] = (
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h2}} & {fghr[pt.BHT_GHR_SIZE-3:0], 1'b0, final_h}) | // 0H
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h1}} & {fghr[pt.BHT_GHR_SIZE-2:0], final_h}) | // PH
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h0}} & {fghr[pt.BHT_GHR_SIZE-1:0]}) ); // PP
-
-   logic [pt.BHT_GHR_SIZE-1:0] exu_flush_ghr;
-   assign exu_flush_ghr[pt.BHT_GHR_SIZE-1:0] = exu_mp_fghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign fghr_ns[pt.BHT_GHR_SIZE-1:0] = ( ({pt.BHT_GHR_SIZE{exu_flush_final_d1}} & exu_flush_ghr[pt.BHT_GHR_SIZE-1:0]) |
-                                         ({pt.BHT_GHR_SIZE{~exu_flush_final_d1 & ifc_fetch_req_f & ic_hit_f & ~leak_one_f_d1}} & merged_ghr[pt.BHT_GHR_SIZE-1:0]) |
-                                         ({pt.BHT_GHR_SIZE{~exu_flush_final_d1 & ~(ifc_fetch_req_f & ic_hit_f & ~leak_one_f_d1)}} & fghr[pt.BHT_GHR_SIZE-1:0]));
-
-   rvdffie #(.WIDTH(pt.BHT_GHR_SIZE+3),.OVERRIDE(1)) fetchghr (.*,
-                                          .din ({exu_flush_final, exu_mp_way, leak_one_f, fghr_ns[pt.BHT_GHR_SIZE-1:0]}),
-                                          .dout({exu_flush_final_d1, exu_mp_way_f, leak_one_f_d1, fghr[pt.BHT_GHR_SIZE-1:0]}));
-
-   assign ifu_bp_fghr_f[pt.BHT_GHR_SIZE-1:0] = fghr[pt.BHT_GHR_SIZE-1:0];
-
-
-   assign ifu_bp_way_f[1:0] = way_raw[1:0];
-   assign ifu_bp_hist1_f[1:0]    = hist1_raw[1:0];
-   assign ifu_bp_hist0_f[1:0]    = hist0_raw[1:0];
-   assign ifu_bp_pc4_f[1:0]     = pc4_raw[1:0];
-
-   assign ifu_bp_valid_f[1:0]   = vwayhit_f[1:0] & ~{2{dec_tlu_bpred_disable}};
-   assign ifu_bp_ret_f[1:0]     = pret_raw[1:0];
-
-
-   // compute target
-   // Form the fetch group offset based on the btb hit location and the location of the branch within the 4 byte chunk
-
-//  .i 5
-//  .o 3
-//  .ilb bht_dir_f[1] bht_dir_f[0] fetch_start_f[1] fetch_start_f[0] btb_rd_pc4_f
-//  .ob bloc_f[1] bloc_f[0] use_fa_plus
-//  .type fr
-//
-//
-//  ## rotdir[1:0]  fs   pc4  off fapl
-//    -1            01 -  01  0
-//    10            01 -  10  0
-//
-//    -1            10 -  10  0
-//    10            10 0  01  1
-//    10            10 1  01  0
-logic [1:0] bloc_f;
-logic use_fa_plus;
-assign bloc_f[1] = (bht_dir_f[0] & ~fetch_start_f[0]) | (~bht_dir_f[0]
-     & fetch_start_f[0]);
-assign bloc_f[0] = (bht_dir_f[0] & fetch_start_f[0]) | (~bht_dir_f[0]
-     & ~fetch_start_f[0]);
-assign use_fa_plus = (~bht_dir_f[0] & ~fetch_start_f[0] & ~btb_rd_pc4_f);
-
-
-
-
-    assign btb_fg_crossing_f = fetch_start_f[0] & btb_sel_f[0] & btb_rd_pc4_f;
-
-   assign bp_total_branch_offset_f =  bloc_f[1] ^ btb_rd_pc4_f;
-
-   logic [31:2] adder_pc_in_f, ifc_fetch_adder_prior;
-   rvdfflie #(.WIDTH(30), .LEFT(19)) faddrf_ff (.*, .en(ifc_fetch_req_f & ~ifu_bp_hit_taken_f & ic_hit_f), .din(ifc_fetch_addr_f[31:2]), .dout(ifc_fetch_adder_prior[31:2]));
-
-
-   assign ifu_bp_poffset_f[11:0] = btb_rd_tgt_f[11:0];
-
-   assign adder_pc_in_f[31:2] = ( ({30{ use_fa_plus}} & fetch_addr_p1_f[31:2]) |
-                                   ({30{ btb_fg_crossing_f}} & ifc_fetch_adder_prior[31:2]) |
-                                   ({30{~btb_fg_crossing_f & ~use_fa_plus}} & ifc_fetch_addr_f[31:2]));
-
-   rvbradder predtgt_addr (.pc({adder_pc_in_f[31:2], bp_total_branch_offset_f}),
-                         .offset(btb_rd_tgt_f[11:0]),
-                         .dout(bp_btb_target_adder_f[31:1])
-                         );
-   // mux in the return stack address here for a predicted return assuming the RS is valid, quite if no prediction
-   assign ifu_bp_btb_target_f[31:1] = (({31{btb_rd_ret_f & ~btb_rd_call_f & rets_out[0][0] & ifu_bp_hit_taken_f}} & rets_out[0][31:1]) |
-                                       ({31{~(btb_rd_ret_f & ~btb_rd_call_f & rets_out[0][0]) & ifu_bp_hit_taken_f}} & bp_btb_target_adder_f[31:1]) );
-
-
-   // ----------------------------------------------------------------------
-   // Return Stack
-   // ----------------------------------------------------------------------
-
-   rvbradder rs_addr (.pc({adder_pc_in_f[31:2], bp_total_branch_offset_f}),
-                    .offset({11'b0,  ~btb_rd_pc4_f}),
-                    .dout(bp_rs_call_target_f[31:1])
-                         );
-
-   assign rs_push = (btb_rd_call_f & ~btb_rd_ret_f & ifu_bp_hit_taken_f);
-   assign rs_pop = (btb_rd_ret_f & ~btb_rd_call_f & ifu_bp_hit_taken_f);
-   assign rs_hold = ~rs_push & ~rs_pop;
-
-
-
-   // Fetch based (bit 0 is a valid)
-   assign rets_in[0][31:0] = ( ({32{rs_push}} & {bp_rs_call_target_f[31:1], 1'b1}) | // target[31:1], valid
-                               ({32{rs_pop}}  & rets_out[1][31:0]) );
-
-   assign rsenable[0] = ~rs_hold;
-
-   for (i=0; i<pt.RET_STACK_SIZE; i++) begin : retstack
-
-      // for the last entry in the stack, we don't have a pop position
-      if(i==pt.RET_STACK_SIZE-1) begin
-         assign rets_in[i][31:0] = rets_out[i-1][31:0];
-         assign rsenable[i] = rs_push;
-      end
-      else if(i>0) begin
-        assign rets_in[i][31:0] = ( ({32{rs_push}} & rets_out[i-1][31:0]) |
-                                    ({32{rs_pop}}  & rets_out[i+1][31:0]) );
-         assign rsenable[i] = rs_push | rs_pop;
-      end
-      rvdffe #(32) rets_ff (.*, .en(rsenable[i]), .din(rets_in[i][31:0]), .dout(rets_out[i][31:0]));
-
-   end : retstack
-
-   // ----------------------------------------------------------------------
-   // WRITE
-   // ----------------------------------------------------------------------
-
-
-   assign dec_tlu_error_wb = dec_tlu_br0_start_error_wb | dec_tlu_br0_error_wb;
-
-   assign btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign dec_tlu_way_wb = dec_tlu_br0_way_wb;
-
-   assign btb_valid = exu_mp_valid & ~dec_tlu_error_wb;
-
-   assign btb_wr_tag[pt.BTB_BTAG_SIZE-1:0] = exu_mp_btag[pt.BTB_BTAG_SIZE-1:0];
-
-   if(!pt.BTB_FULLYA) begin
-
-      if(pt.BTB_BTAG_FOLD) begin : btbfold
-         eb1_btb_tag_hash_fold #(.pt(pt)) rdtagf  (.hash(fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]),
-                                                    .pc({ifc_fetch_addr_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-         eb1_btb_tag_hash_fold #(.pt(pt)) rdtagp1f(.hash(fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]),
-                                                    .pc({fetch_addr_p1_f[ pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-      end
-      else begin
-         eb1_btb_tag_hash #(.pt(pt)) rdtagf(.hash(fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]),
-                                             .pc({ifc_fetch_addr_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-         eb1_btb_tag_hash #(.pt(pt)) rdtagp1f(.hash(fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]),
-                                               .pc({fetch_addr_p1_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-      end
-
-      assign btb_wr_en_way0 = ( ({{~exu_mp_way & exu_mp_valid_write & ~dec_tlu_error_wb}}) |
-                                ({{~dec_tlu_way_wb & dec_tlu_error_wb}}));
-
-      assign btb_wr_en_way1 = ( ({{exu_mp_way & exu_mp_valid_write & ~dec_tlu_error_wb}}) |
-                                ({{dec_tlu_way_wb & dec_tlu_error_wb}}));
-      assign btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = dec_tlu_error_wb ? btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] : exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-
-      assign vwayhit_f[1:0] = ( ({2{fetch_start_f[0]}} & {wayhit_f[1:0]}) |
-                                ({2{fetch_start_f[1]}} & {wayhit_p1_f[0], wayhit_f[1]})) & {eoc_mask, 1'b1};
-
-   end // if (!pt.BTB_FULLYA)
-
-   assign btb_wr_data[BTB_DWIDTH-1:0] = {btb_wr_tag[pt.BTB_BTAG_SIZE-1:0], exu_mp_tgt[pt.BTB_TOFFSET_SIZE-1:0], exu_mp_pc4, exu_mp_boffset,
-                                                exu_mp_call | exu_mp_ja, exu_mp_ret | exu_mp_ja, btb_valid} ;
-
-   assign exu_mp_valid_write = exu_mp_valid & exu_mp_ataken & ~exu_mp_pkt.valid;
-   logic [1:0] bht_wr_data0, bht_wr_data2;
-   logic [1:0] bht_wr_en0, bht_wr_en2;
-
-   assign middle_of_bank = exu_mp_pc4 ^ exu_mp_boffset;
-   assign bht_wr_en0[1:0] = {2{exu_mp_valid & ~exu_mp_call & ~exu_mp_ret & ~exu_mp_ja}} & {middle_of_bank, ~middle_of_bank};
-   assign bht_wr_en2[1:0] = {2{dec_tlu_br0_v_wb}} & {dec_tlu_br0_middle_wb, ~dec_tlu_br0_middle_wb} ;
-
-   // Experiments show this is the best priority scheme for same bank/index writes at the same time.
-   assign bht_wr_data0[1:0] = exu_mp_hist[1:0]; // lowest priority
-   assign bht_wr_data2[1:0] = dec_tlu_br0_hist_wb[1:0]; // highest priority
-
-
-
-   logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] bht_rd_addr_f, bht_rd_addr_p1_f, bht_wr_addr0, bht_wr_addr2;
-
-   logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] mp_hashed, br0_hashed_wb, bht_rd_addr_hashed_f, bht_rd_addr_hashed_p1_f;
-   eb1_btb_ghr_hash #(.pt(pt)) mpghrhs  (.hashin(exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(exu_mp_eghr[pt.BHT_GHR_SIZE-1:0]), .hash(mp_hashed[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) br0ghrhs (.hashin(dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(exu_i0_br_fghr_wb[pt.BHT_GHR_SIZE-1:0]), .hash(br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) fghrhs (.hashin(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(fghr[pt.BHT_GHR_SIZE-1:0]), .hash(bht_rd_addr_hashed_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) fghrhs_p1 (.hashin(btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(fghr[pt.BHT_GHR_SIZE-1:0]), .hash(bht_rd_addr_hashed_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-
-   assign bht_wr_addr0[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = mp_hashed[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_wr_addr2[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_rd_addr_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = bht_rd_addr_hashed_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_rd_addr_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = bht_rd_addr_hashed_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-
-
-   // ----------------------------------------------------------------------
-   // Structures. Using FLOPS
-   // ----------------------------------------------------------------------
-   // BTB
-   // Entry -> tag[pt.BTB_BTAG_SIZE-1:0], toffset[11:0], pc4, boffset, call, ret, valid
-
-   if(!pt.BTB_FULLYA) begin
-
-      for (j=0 ; j<LRU_SIZE ; j++) begin : BTB_FLOPS
-         // Way 0
-         rvdffe #(17+pt.BTB_BTAG_SIZE) btb_bank0_way0 (.*,
-                    .en(((btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == j) & btb_wr_en_way0)),
-                    .din        (btb_wr_data[BTB_DWIDTH-1:0]),
-                    .dout       (btb_bank0_rd_data_way0_out[j]));
-
-         // Way 1
-         rvdffe #(17+pt.BTB_BTAG_SIZE) btb_bank0_way1 (.*,
-                    .en(((btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == j) & btb_wr_en_way1)),
-                    .din        (btb_wr_data[BTB_DWIDTH-1:0]),
-                    .dout       (btb_bank0_rd_data_way1_out[j]));
-
-      end
-
-
-    always_comb begin : BTB_rd_mux
-        btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0] = '0 ;
-
-        for (int j=0; j< LRU_SIZE; j++) begin
-          if (btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == (pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1)'(j)) begin
-
-           btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way0_out[j];
-           btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way1_out[j];
-
-          end
-        end
-        for (int j=0; j< LRU_SIZE; j++) begin
-          if (btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == (pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1)'(j)) begin
-
-           btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way0_out[j];
-           btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way1_out[j];
-
-          end
-        end
-    end
-end // if (!pt.BTB_FULLYA)
-
-
-
-
-
-      if(pt.BTB_FULLYA) begin : fa
-
-         logic found1, hit0, hit1;
-         logic btb_used_reset, write_used;
-         logic [$clog2(pt.BTB_SIZE)-1:0] btb_fa_wr_addr0, hit0_index, hit1_index;
-
-         logic [pt.BTB_SIZE-1:0]         btb_tag_hit, btb_offset_0, btb_offset_1, btb_used_ns, btb_used,
-                                         wr0_en, btb_upper_hit;
-         logic [pt.BTB_SIZE-1:0][BTB_DWIDTH-1:0] btbdata;
-
-         // Fully Associative tag hash uses bits 31:3. Bits 2:1 are the offset bits used for the 4 tag comp banks
-         // Full tag used to speed up lookup. There is one 31:3 cmp per entry, and 4 2:1 cmps per entry.
-
-         logic [FA_CMP_LOWER-1:1]  ifc_fetch_addr_p1_f;
-
-
-         assign ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1] = ifc_fetch_addr_f[FA_CMP_LOWER-1:1] + 1'b1;
-
-         assign fetch_mp_collision_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == ifc_fetch_addr_f[31:1]) &
-                                      exu_mp_valid & ifc_fetch_req_f & ~exu_mp_pkt.way);
-         assign fetch_mp_collision_p1_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == {ifc_fetch_addr_f[31:FA_CMP_LOWER], ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1]}) &
-                                      exu_mp_valid & ifc_fetch_req_f & ~exu_mp_pkt.way);
-
-      always_comb begin
-         btb_vbank0_rd_data_f = '0;
-         btb_vbank1_rd_data_f = '0;
-         btb_tag_hit = '0;
-         btb_upper_hit = '0;
-         btb_offset_0 = '0;
-         btb_offset_1 = '0;
-
-         found1 = 1'b0;
-         hit0 = 1'b0;
-         hit1 = 1'b0;
-         hit0_index = '0;
-         hit1_index = '0;
-         btb_fa_wr_addr0 = '0;
-
-         for(int i=0; i<pt.BTB_SIZE; i++) begin
-            // Break the cmp into chunks for lower area.
-            // Chunk1: FA 31:6 or 31:5 depending on icache line size
-            // Chunk2: FA 5:1 or 4:1 depending on icache line size
-            btb_upper_hit[i] = (btbdata[i][BTB_DWIDTH_TOP:FA_TAG_END_UPPER] == ifc_fetch_addr_f[31:FA_CMP_LOWER]) & btbdata[i][0] & ~wr0_en[i];
-            btb_offset_0[i] = (btbdata[i][FA_TAG_START_LOWER:FA_TAG_END_LOWER] == ifc_fetch_addr_f[FA_CMP_LOWER-1:1]) & btb_upper_hit[i];
-            btb_offset_1[i] = (btbdata[i][FA_TAG_START_LOWER:FA_TAG_END_LOWER] == ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1]) & btb_upper_hit[i];
-
-            if(~hit0) begin
-               if(btb_offset_0[i]) begin
-                  hit0_index[BTB_FA_INDEX:0] = (BTB_FA_INDEX+1)'(i);
-                  // hit unless we are also writing this entry at the same time
-                  hit0 = 1'b1;
-               end
-            end
-            if(~hit1) begin
-               if(btb_offset_1[i]) begin
-                  hit1_index[BTB_FA_INDEX:0] = (BTB_FA_INDEX+1)'(i);
-                  hit1 = 1'b1;
-               end
-            end
-
-
-            // Mux out the 2 potential branches
-            if(btb_offset_0[i] == 1'b1)
-              btb_vbank0_rd_data_f[BTB_DWIDTH-1:0] = fetch_mp_collision_f ? btb_wr_data : btbdata[i];
-            if(btb_offset_1[i] == 1'b1)
-              btb_vbank1_rd_data_f[BTB_DWIDTH-1:0] = fetch_mp_collision_p1_f ? btb_wr_data : btbdata[i];
-
-            // find the first zero from bit zero in the used vector, this is the write address
-            if(~found1) begin
-               if(~btb_used[i]) begin
-                  btb_fa_wr_addr0[BTB_FA_INDEX:0] = i[BTB_FA_INDEX:0];
-                  found1 = 1'b1;
-               end
-            end
-         end
-      end // always_comb begin
-
-`ifdef RV_ASSERT_ON
-   btbhitonehot0: assert #0 ($onehot0(btb_offset_0));
-   btbhitonehot1: assert #0 ($onehot0(btb_offset_1));
-`endif
-
-   assign vwayhit_f[1:0] = {hit1, hit0} & {eoc_mask, 1'b1};
-
-   // way bit is reused as the predicted bit
-   assign way_raw[1:0] =  vwayhit_f[1:0] | {fetch_mp_collision_p1_f, fetch_mp_collision_f};
-
-   for (j=0 ; j<pt.BTB_SIZE ; j++) begin : BTB_FAFLOPS
-
-      assign wr0_en[j] = ((btb_fa_wr_addr0[BTB_FA_INDEX:0] == j) & (exu_mp_valid_write & ~exu_mp_pkt.way)) |
-                         ((dec_fa_error_index == j) & dec_tlu_error_wb);
-
-      rvdffe #(BTB_DWIDTH) btb_fa (.*, .clk(clk),
-                                   .en  (wr0_en[j]),
-                                   .din (btb_wr_data[BTB_DWIDTH-1:0]),
-                                   .dout(btbdata[j]));
-   end // block: BTB_FAFLOPS
-
-   assign ifu_bp_fa_index_f[1] = hit1 ? hit1_index : '0;
-   assign ifu_bp_fa_index_f[0] = hit0 ? hit0_index : '0;
-
-   assign btb_used_reset = &btb_used[pt.BTB_SIZE-1:0];
-   assign btb_used_ns[pt.BTB_SIZE-1:0] = ({pt.BTB_SIZE{vwayhit_f[1]}} & (32'b1 << hit1_index[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{vwayhit_f[0]}} & (32'b1 << hit0_index[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{exu_mp_valid_write & ~exu_mp_pkt.way & ~dec_tlu_error_wb}} & (32'b1 << btb_fa_wr_addr0[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{btb_used_reset}} & {pt.BTB_SIZE{1'b0}}) |
-                                         ({pt.BTB_SIZE{~btb_used_reset & dec_tlu_error_wb}} & (btb_used[pt.BTB_SIZE-1:0] & ~(32'b1 << dec_fa_error_index[BTB_FA_INDEX:0]))) |
-                                         (~{pt.BTB_SIZE{btb_used_reset | dec_tlu_error_wb}} & btb_used[pt.BTB_SIZE-1:0]);
-
-   assign write_used = btb_used_reset | ifu_bp_hit_taken_f | exu_mp_valid_write | dec_tlu_error_wb;
-
-
-   rvdffe #(pt.BTB_SIZE) btb_usedf (.*, .clk(clk),
-                    .en  (write_used),
-                    .din (btb_used_ns[pt.BTB_SIZE-1:0]),
-                    .dout(btb_used[pt.BTB_SIZE-1:0]));
-
-end // block: fa
-
-
-   //-----------------------------------------------------------------------------
-   // BHT
-   // 2 bit Entry -> direction, strength
-   //
-   //-----------------------------------------------------------------------------
-
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0][NUM_BHT_LOOP-1:0][1:0]      bht_bank_wr_data ;
-   logic [1:0] [pt.BHT_ARRAY_DEPTH-1:0] [1:0]                bht_bank_rd_data_out ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0]                 bht_bank_clken ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0]                 bht_bank_clk   ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0][NUM_BHT_LOOP-1:0]           bht_bank_sel   ;
-
-   for ( i=0; i<2; i++) begin : BANKS
-     for (genvar k=0 ; k < (pt.BHT_ARRAY_DEPTH)/NUM_BHT_LOOP ; k++) begin : BHT_CLK_GROUP
-     assign bht_bank_clken[i][k]  = (bht_wr_en0[i] & ((bht_wr_addr0[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) |  BHT_NO_ADDR_MATCH)) |
-                                    (bht_wr_en2[i] & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) |  BHT_NO_ADDR_MATCH));
-`ifndef RV_FPGA_OPTIMIZE
-     rvclkhdr bht_bank_grp_cgc ( .en(bht_bank_clken[i][k]), .l1clk(bht_bank_clk[i][k]), .* ); // ifndef RV_FPGA_OPTIMIZE
-`endif
-
-     for (j=0 ; j<NUM_BHT_LOOP ; j++) begin : BHT_FLOPS
-       assign   bht_bank_sel[i][k][j]    = (bht_wr_en0[i] & (bht_wr_addr0[NUM_BHT_LOOP_INNER_HI :pt.BHT_ADDR_LO] == j) & ((bht_wr_addr0[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) |
-                                           (bht_wr_en2[i] & (bht_wr_addr2[NUM_BHT_LOOP_INNER_HI :pt.BHT_ADDR_LO] == j) & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) ;
-
-       assign bht_bank_wr_data[i][k][j]  = (bht_wr_en2[i] & (bht_wr_addr2[NUM_BHT_LOOP_INNER_HI:pt.BHT_ADDR_LO] == j) & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) ? bht_wr_data2[1:0] :
-                                                                                                                      bht_wr_data0[1:0]   ;
-
-
-          rvdffs_fpga #(2) bht_bank (.*,
-                    .clk        (bht_bank_clk[i][k]),
-                    .en         (bht_bank_sel[i][k][j]),
-                    .rawclk     (clk),
-                    .clken      (bht_bank_sel[i][k][j]),
-                    .din        (bht_bank_wr_data[i][k][j]),
-                    .dout       (bht_bank_rd_data_out[i][(16*k)+j]));
-
-      end // block: BHT_FLOPS
-   end // block: BHT_CLK_GROUP
- end // block: BANKS
-
-    always_comb begin : BHT_rd_mux
-     bht_bank0_rd_data_f[1:0] = '0 ;
-     bht_bank1_rd_data_f[1:0] = '0 ;
-     bht_bank0_rd_data_p1_f[1:0] = '0 ;
-     for (int j=0; j< pt.BHT_ARRAY_DEPTH; j++) begin
-       if (bht_rd_addr_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] == (pt.BHT_ADDR_HI-pt.BHT_ADDR_LO+1)'(j)) begin
-         bht_bank0_rd_data_f[1:0] = bht_bank_rd_data_out[0][j];
-         bht_bank1_rd_data_f[1:0] = bht_bank_rd_data_out[1][j];
-       end
-       if (bht_rd_addr_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] == (pt.BHT_ADDR_HI-pt.BHT_ADDR_LO+1)'(j)) begin
-         bht_bank0_rd_data_p1_f[1:0] = bht_bank_rd_data_out[0][j];
-       end
-      end
-    end // block: BHT_rd_mux
-
-
-function [1:0] countones;
-      input [1:0] valid;
-
-      begin
-
-countones[1:0] = {2'b0, valid[1]} +
-                 {2'b0, valid[0]};
-      end
-   endfunction
-endmodule // eb1_ifu_bp_ctl
-
diff --git a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_compress_ctl.sv b/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_compress_ctl.sv
deleted file mode 100644
index a55e30f..0000000
--- a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_compress_ctl.sv
+++ /dev/null
@@ -1,383 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-// purpose of this file is to convert 16b RISCV compressed instruction into 32b equivalent
-
-module eb1_ifu_compress_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input  logic [15:0] din,        // 16-bit   compressed instruction
-   output logic [31:0] dout        // 32-bit uncompressed instruction
-   );
-
-
-   logic               legal;
-
-   logic [15:0]  i;
-
-   logic [31:0]  o,l1,l2,l3;
-
-
-   assign i[15:0] = din[15:0];
-
-
-   logic [4:0]   rs2d,rdd,rdpd,rs2pd;
-
-   logic rdrd;
-   logic rdrs1;
-   logic rs2rs2;
-   logic rdprd;
-   logic rdprs1;
-   logic rs2prs2;
-   logic rs2prd;
-   logic uimm9_2;
-   logic ulwimm6_2;
-   logic ulwspimm7_2;
-   logic rdeq2;
-   logic rdeq1;
-   logic rs1eq2;
-   logic sbroffset8_1;
-   logic simm9_4;
-   logic simm5_0;
-   logic sjaloffset11_1;
-   logic sluimm17_12;
-   logic uimm5_0;
-   logic uswimm6_2;
-   logic uswspimm7_2;
-
-
-
-   // form the opcodes
-
-   // formats
-   //
-   // c.add rd 11:7 rs2  6:2
-   // c.and rdp 9:7 rs2p 4:2
-   //
-   // add rs2 24:20 rs1 19:15  rd 11:7
-
-   assign rs2d[4:0] = i[6:2];
-
-   assign rdd[4:0] = i[11:7];
-
-   assign rdpd[4:0] = {2'b01, i[9:7]};
-
-   assign rs2pd[4:0] = {2'b01, i[4:2]};
-
-
-
-   // merge in rd, rs1, rs2
-
-
-   // rd
-   assign l1[6:0] = o[6:0];
-
-   assign l1[11:7] = o[11:7] |
-                     ({5{rdrd}} & rdd[4:0]) |
-                     ({5{rdprd}} & rdpd[4:0]) |
-                     ({5{rs2prd}} & rs2pd[4:0]) |
-                     ({5{rdeq1}} & 5'd1) |
-                     ({5{rdeq2}} & 5'd2);
-
-
-   // rs1
-   assign l1[14:12] = o[14:12];
-   assign l1[19:15] = o[19:15] |
-                      ({5{rdrs1}} & rdd[4:0]) |
-                      ({5{rdprs1}} & rdpd[4:0]) |
-                      ({5{rs1eq2}} & 5'd2);
-
-
-   // rs2
-   assign l1[24:20] = o[24:20] |
-                      ({5{rs2rs2}} & rs2d[4:0]) |
-                      ({5{rs2prs2}} & rs2pd[4:0]);
-
-   assign l1[31:25] = o[31:25];
-
-   logic [5:0] simm5d;
-   logic [9:2] uimm9d;
-
-   logic [9:4] simm9d;
-   logic [6:2] ulwimm6d;
-   logic [7:2] ulwspimm7d;
-   logic [5:0] uimm5d;
-   logic [20:1] sjald;
-
-   logic [31:12] sluimmd;
-
-   // merge in immediates + jal offset
-
-   assign simm5d[5:0] = { i[12], i[6:2] };
-
-   assign uimm9d[9:2] = { i[10:7], i[12:11], i[5], i[6] };
-
-   assign simm9d[9:4] = { i[12], i[4:3], i[5], i[2], i[6] };
-
-   assign ulwimm6d[6:2] = { i[5], i[12:10], i[6] };
-
-   assign ulwspimm7d[7:2] = { i[3:2], i[12], i[6:4] };
-
-   assign uimm5d[5:0] = { i[12], i[6:2] };
-
-   assign sjald[11:1] = { i[12], i[8], i[10:9], i[6], i[7], i[2], i[11], i[5:4], i[3] };
-
-   assign sjald[20:12] =  {9{i[12]}};
-
-
-
-   assign sluimmd[31:12] = { {15{i[12]}}, i[6:2] };
-
-
-   assign l2[31:20] = ( l1[31:20] ) |
-                      ( {12{simm5_0}}   &  {{7{simm5d[5]}},simm5d[4:0]} ) |
-                      ( {12{uimm9_2}}   &  {2'b0,uimm9d[9:2],2'b0} ) |
-                      ( {12{simm9_4}}   &   {{3{simm9d[9]}},simm9d[8:4],4'b0} ) |
-                      ( {12{ulwimm6_2}} &   {5'b0,ulwimm6d[6:2],2'b0} ) |
-                      ( {12{ulwspimm7_2}}  & {4'b0,ulwspimm7d[7:2],2'b0} ) |
-                      ( {12{uimm5_0}}      &    {6'b0,uimm5d[5:0]} ) |
-                      ( {12{sjaloffset11_1}} &  {sjald[20],sjald[10:1],sjald[11]} ) |
-                      ( {12{sluimm17_12}}    &  sluimmd[31:20] );
-
-
-
-   assign l2[19:12] = ( l1[19:12] ) |
-                      ( {8{sjaloffset11_1}} & sjald[19:12] ) |
-                      ( {8{sluimm17_12}} & sluimmd[19:12] );
-
-
-   assign l2[11:0] = l1[11:0];
-
-
-   // merge in branch offset and store immediates
-
-   logic [8:1]   sbr8d;
-   logic [6:2]   uswimm6d;
-   logic [7:2]   uswspimm7d;
-
-
-   assign sbr8d[8:1] =   { i[12], i[6], i[5], i[2], i[11], i[10], i[4], i[3] };
-
-   assign uswimm6d[6:2] = { i[5], i[12:10], i[6] };
-
-   assign uswspimm7d[7:2] = { i[8:7], i[12:9] };
-
-   assign l3[31:25] = ( l2[31:25] ) |
-                      ( {7{sbroffset8_1}} & { {4{sbr8d[8]}},sbr8d[7:5] } ) |
-                      ( {7{uswimm6_2}}    & { 5'b0, uswimm6d[6:5] } ) |
-                      ( {7{uswspimm7_2}} & { 4'b0, uswspimm7d[7:5] } );
-
-
-   assign l3[24:12] = l2[24:12];
-
-   assign l3[11:7] = ( l2[11:7] ) |
-                     ( {5{sbroffset8_1}} & { sbr8d[4:1], sbr8d[8] } ) |
-                     ( {5{uswimm6_2}} & { uswimm6d[4:2], 2'b0 } ) |
-                     ( {5{uswspimm7_2}} & { uswspimm7d[4:2], 2'b0 } );
-
-   assign l3[6:0] = l2[6:0];
-
-
-   assign dout[31:0] = l3[31:0] & {32{legal}};
-
-
-// file "cdecode" is human readable file that has all of the compressed instruction decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "cdecode" except legal equation:
-
-// 1) coredecode -in cdecode > cdecode.e
-
-// 2) espresso -Dso -oeqntott cdecode.e | addassign > compress_equations
-
-// to generate the legal (16b compressed instruction is legal)  equation below:
-
-// 1) coredecode -in cdecode -legal > clegal.e
-
-// 2) espresso -Dso -oeqntott clegal.e | addassign > clegal_equation
-
-
-
-
-
-// espresso decodes
-assign rdrd = (!i[14]&i[6]&i[1]) | (!i[15]&i[14]&i[11]&i[0]) | (!i[14]&i[5]&i[1]) | (
-    !i[15]&i[14]&i[10]&i[0]) | (!i[14]&i[4]&i[1]) | (!i[15]&i[14]&i[9]
-    &i[0]) | (!i[14]&i[3]&i[1]) | (!i[15]&i[14]&!i[8]&i[0]) | (!i[14]
-    &i[2]&i[1]) | (!i[15]&i[14]&i[7]&i[0]) | (!i[15]&i[1]) | (!i[15]
-    &!i[13]&i[0]);
-
-assign rdrs1 = (!i[14]&i[12]&i[11]&i[1]) | (!i[14]&i[12]&i[10]&i[1]) | (!i[14]
-    &i[12]&i[9]&i[1]) | (!i[14]&i[12]&i[8]&i[1]) | (!i[14]&i[12]&i[7]
-    &i[1]) | (!i[14]&!i[12]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[6]&i[1]) | (!i[14]&i[12]&i[5]&i[1]) | (!i[14]&i[12]&i[4]
-    &i[1]) | (!i[14]&i[12]&i[3]&i[1]) | (!i[14]&i[12]&i[2]&i[1]) | (
-    !i[15]&!i[14]&!i[13]&i[0]) | (!i[15]&!i[14]&i[1]);
-
-assign rs2rs2 = (i[15]&i[6]&i[1]) | (i[15]&i[5]&i[1]) | (i[15]&i[4]&i[1]) | (
-    i[15]&i[3]&i[1]) | (i[15]&i[2]&i[1]) | (i[15]&i[14]&i[1]);
-
-assign rdprd = (i[15]&!i[14]&!i[13]&i[0]);
-
-assign rdprs1 = (i[15]&!i[13]&i[0]) | (i[15]&i[14]&i[0]) | (i[14]&!i[1]&!i[0]);
-
-assign rs2prs2 = (i[15]&!i[14]&!i[13]&i[11]&i[10]&i[0]) | (i[15]&!i[1]&!i[0]);
-
-assign rs2prd = (!i[15]&!i[1]&!i[0]);
-
-assign uimm9_2 = (!i[14]&!i[1]&!i[0]);
-
-assign ulwimm6_2 = (!i[15]&i[14]&!i[1]&!i[0]);
-
-assign ulwspimm7_2 = (!i[15]&i[14]&i[1]);
-
-assign rdeq2 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]);
-
-assign rdeq1 = (!i[14]&i[12]&i[11]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[10]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[9]
-    &!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[8]&!i[6]&!i[5]
-    &!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[7]&!i[6]&!i[5]&!i[4]&!i[3]
-    &!i[2]&i[1]) | (!i[15]&!i[14]&i[13]);
-
-assign rs1eq2 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]) | (i[14]
-    &i[1]) | (!i[14]&!i[1]&!i[0]);
-
-assign sbroffset8_1 = (i[15]&i[14]&i[0]);
-
-assign simm9_4 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]);
-
-assign simm5_0 = (!i[14]&!i[13]&i[11]&!i[10]&i[0]) | (!i[15]&!i[13]&i[0]);
-
-assign sjaloffset11_1 = (!i[14]&i[13]);
-
-assign sluimm17_12 = (!i[15]&i[14]&i[13]&i[7]) | (!i[15]&i[14]&i[13]&!i[8]) | (
-    !i[15]&i[14]&i[13]&i[9]) | (!i[15]&i[14]&i[13]&i[10]) | (!i[15]&i[14]
-    &i[13]&i[11]);
-
-assign uimm5_0 = (i[15]&!i[14]&!i[13]&!i[11]&i[0]) | (!i[15]&!i[14]&i[1]);
-
-assign uswimm6_2 = (i[15]&!i[1]&!i[0]);
-
-assign uswspimm7_2 = (i[15]&i[14]&i[1]);
-
-assign o[31]  = 1'b0;
-
-assign o[30] = (i[15]&!i[14]&!i[13]&i[10]&!i[6]&!i[5]&i[0]) | (i[15]&!i[14]
-    &!i[13]&!i[11]&i[10]&i[0]);
-
-assign o[29]  = 1'b0;
-
-assign o[28]  = 1'b0;
-
-assign o[27]  = 1'b0;
-
-assign o[26]  = 1'b0;
-
-assign o[25]  = 1'b0;
-
-assign o[24]  = 1'b0;
-
-assign o[23]  = 1'b0;
-
-assign o[22]  = 1'b0;
-
-assign o[21]  = 1'b0;
-
-assign o[20] = (!i[14]&i[12]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]
-    &!i[3]&!i[2]&i[1]);
-
-assign o[19]  = 1'b0;
-
-assign o[18]  = 1'b0;
-
-assign o[17]  = 1'b0;
-
-assign o[16]  = 1'b0;
-
-assign o[15]  = 1'b0;
-
-assign o[14] = (i[15]&!i[14]&!i[13]&!i[11]&i[0]) | (i[15]&!i[14]&!i[13]&!i[10]
-    &i[0]) | (i[15]&!i[14]&!i[13]&i[6]&i[0]) | (i[15]&!i[14]&!i[13]&i[5]
-    &i[0]);
-
-assign o[13] = (i[15]&!i[14]&!i[13]&i[11]&!i[10]&i[0]) | (i[15]&!i[14]&!i[13]
-    &i[11]&i[6]&i[0]) | (i[14]&!i[0]);
-
-assign o[12] = (i[15]&!i[14]&!i[13]&i[6]&i[5]&i[0]) | (i[15]&!i[14]&!i[13]&!i[11]
-    &i[0]) | (i[15]&!i[14]&!i[13]&!i[10]&i[0]) | (!i[15]&!i[14]&i[1]) | (
-    i[15]&i[14]&i[13]);
-
-assign o[11]  = 1'b0;
-
-assign o[10]  = 1'b0;
-
-assign o[9]  = 1'b0;
-
-assign o[8]  = 1'b0;
-
-assign o[7]  = 1'b0;
-
-assign o[6] = (i[15]&!i[14]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&!i[0]) | (!i[14]&i[13]) | (
-    i[15]&i[14]&i[0]);
-
-assign o[5] = (i[15]&!i[0]) | (i[15]&i[11]&i[10]) | (i[13]&!i[8]) | (i[13]&i[7]) | (
-    i[13]&i[9]) | (i[13]&i[10]) | (i[13]&i[11]) | (!i[14]&i[13]) | (
-    i[15]&i[14]);
-
-assign o[4] = (!i[14]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[0]) | (!i[15]&!i[14]
-    &!i[0]) | (!i[14]&i[6]&!i[0]) | (!i[15]&i[14]&i[0]) | (!i[14]&i[5]
-    &!i[0]) | (!i[14]&i[4]&!i[0]) | (!i[14]&!i[13]&i[0]) | (!i[14]&i[3]
-    &!i[0]) | (!i[14]&i[2]&!i[0]);
-
-assign o[3] = (!i[14]&i[13]);
-
-assign o[2] = (!i[14]&i[12]&i[11]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[10]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[9]
-    &!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[8]&!i[6]&!i[5]
-    &!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[7]&!i[6]&!i[5]&!i[4]&!i[3]
-    &!i[2]&i[1]) | (i[15]&!i[14]&!i[12]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]
-    &!i[0]) | (!i[15]&i[13]&!i[8]) | (!i[15]&i[13]&i[7]) | (!i[15]&i[13]
-    &i[9]) | (!i[15]&i[13]&i[10]) | (!i[15]&i[13]&i[11]) | (!i[14]&i[13]);
-
-// 32b instruction has lower two bits 2'b11
-
-assign o[1]  = 1'b1;
-
-assign o[0]  = 1'b1;
-
-assign legal = (!i[13]&!i[12]&i[11]&i[1]&!i[0]) | (!i[13]&!i[12]&i[6]&i[1]&!i[0]) | (
-    !i[15]&!i[13]&i[11]&!i[1]) | (!i[13]&!i[12]&i[5]&i[1]&!i[0]) | (
-    !i[13]&!i[12]&i[10]&i[1]&!i[0]) | (!i[15]&!i[13]&i[6]&!i[1]) | (
-    i[15]&!i[12]&!i[1]&i[0]) | (!i[13]&!i[12]&i[9]&i[1]&!i[0]) | (!i[12]
-    &i[6]&!i[1]&i[0]) | (!i[15]&!i[13]&i[5]&!i[1]) | (!i[13]&!i[12]&i[8]
-    &i[1]&!i[0]) | (!i[12]&i[5]&!i[1]&i[0]) | (!i[15]&!i[13]&i[10]&!i[1]) | (
-    !i[13]&!i[12]&i[7]&i[1]&!i[0]) | (i[12]&i[11]&!i[10]&!i[1]&i[0]) | (
-    !i[15]&!i[13]&i[9]&!i[1]) | (!i[13]&!i[12]&i[4]&i[1]&!i[0]) | (i[13]
-    &i[12]&!i[1]&i[0]) | (!i[15]&!i[13]&i[8]&!i[1]) | (!i[13]&!i[12]&i[3]
-    &i[1]&!i[0]) | (i[13]&i[4]&!i[1]&i[0]) | (!i[13]&!i[12]&i[2]&i[1]
-    &!i[0]) | (!i[15]&!i[13]&i[7]&!i[1]) | (i[13]&i[3]&!i[1]&i[0]) | (
-    i[13]&i[2]&!i[1]&i[0]) | (i[14]&!i[13]&!i[1]) | (!i[14]&!i[12]&!i[1]
-    &i[0]) | (i[15]&!i[13]&i[12]&i[1]&!i[0]) | (!i[15]&!i[13]&!i[12]&i[1]
-    &!i[0]) | (!i[15]&!i[13]&i[12]&!i[1]) | (i[14]&!i[13]&!i[0]);
-
-
-
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_ic_mem.sv b/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_ic_mem.sv
deleted file mode 100644
index f849bc0..0000000
--- a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_ic_mem.sv
+++ /dev/null
@@ -1,1458 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-////////////////////////////////////////////////////
-//   ICACHE DATA & TAG MODULE WRAPPER              //
-/////////////////////////////////////////////////////
-module eb1_ifu_ic_mem
-import eb1_pkg::*;
- #(
-`include "eb1_param.vh"
- )
-  (
-      input logic                                   clk,                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-      input logic                                   active_clk,         // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-      input logic                                   rst_l,              // reset, active low
-      input logic                                   clk_override,       // Override non-functional clock gating
-      input logic                                   dec_tlu_core_ecc_disable,  // Disable ECC checking
-
-      input logic [31:1]                            ic_rw_addr,
-      input logic [pt.ICACHE_NUM_WAYS-1:0]          ic_wr_en  ,         // Which way to write
-      input logic                                   ic_rd_en  ,         // Read enable
-      input logic [pt.ICACHE_INDEX_HI:3]            ic_debug_addr,      // Read/Write addresss to the Icache.
-      input logic                                   ic_debug_rd_en,     // Icache debug rd
-      input logic                                   ic_debug_wr_en,     // Icache debug wr
-      input logic                                   ic_debug_tag_array, // Debug tag array
-      input logic [pt.ICACHE_NUM_WAYS-1:0]          ic_debug_way,       // Debug way. Rd or Wr.
-      input logic [63:0]                            ic_premux_data,     // Premux data to be muxed with each way of the Icache.
-      input logic                                   ic_sel_premux_data, // Select the pre_muxed data
-
-      input  logic [pt.ICACHE_BANKS_WAY-1:0][70:0]  ic_wr_data,         // Data to fill to the Icache. With ECC
-      output logic [63:0]                           ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-      output logic [70:0]                           ic_debug_rd_data ,  // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-      output logic [25:0]                           ictag_debug_rd_data,// Debug icache tag.
-      input logic  [70:0]                           ic_debug_wr_data,   // Debug wr cache.
-
-      output logic [pt.ICACHE_BANKS_WAY-1:0]        ic_eccerr,          // ecc error per bank
-      output logic [pt.ICACHE_BANKS_WAY-1:0]        ic_parerr,          // ecc error per bank
-      input logic [pt.ICACHE_NUM_WAYS-1:0]          ic_tag_valid,       // Valid from the I$ tag valid outside (in flops).
-      input eb1_ic_data_ext_in_pkt_t [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] ic_data_ext_in_pkt,   // this is being driven by the top level for soc testing/etc
-      input eb1_ic_tag_ext_in_pkt_t  [pt.ICACHE_NUM_WAYS-1:0]                          ic_tag_ext_in_pkt,    // this is being driven by the top level for soc testing/etc
-
-      output logic [pt.ICACHE_NUM_WAYS-1:0]         ic_rd_hit,          // ic_rd_hit[3:0]
-      output logic                                  ic_tag_perr,        // Tag Parity error
-      input  logic                                  scan_mode           // Flop scan mode control
-      ) ;
-
-
-
-
-   eb1_IC_TAG #(.pt(pt)) ic_tag_inst
-          (
-           .*,
-           .ic_wr_en     (ic_wr_en[pt.ICACHE_NUM_WAYS-1:0]),
-           .ic_debug_addr(ic_debug_addr[pt.ICACHE_INDEX_HI:3]),
-           .ic_rw_addr   (ic_rw_addr[31:3])
-           ) ;
-
-   eb1_IC_DATA #(.pt(pt)) ic_data_inst
-          (
-           .*,
-           .ic_wr_en     (ic_wr_en[pt.ICACHE_NUM_WAYS-1:0]),
-           .ic_debug_addr(ic_debug_addr[pt.ICACHE_INDEX_HI:3]),
-           .ic_rw_addr   (ic_rw_addr[31:1])
-           ) ;
-
- endmodule
-
-
-/////////////////////////////////////////////////
-////// ICACHE DATA MODULE    ////////////////////
-/////////////////////////////////////////////////
-module eb1_IC_DATA
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-     (
-      input logic clk,
-      input logic active_clk,
-      input logic rst_l,
-      input logic clk_override,
-
-      input logic [31:1]                  ic_rw_addr,
-      input logic [pt.ICACHE_NUM_WAYS-1:0]ic_wr_en,
-      input logic                          ic_rd_en,           // Read enable
-
-      input  logic [pt.ICACHE_BANKS_WAY-1:0][70:0]    ic_wr_data,         // Data to fill to the Icache. With ECC
-      output logic [63:0]                             ic_rd_data ,                                 // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-      input  logic [70:0]                             ic_debug_wr_data,   // Debug wr cache.
-      output logic [70:0]                             ic_debug_rd_data ,  // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-      output logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-      output logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    // ecc error per bank
-      input logic [pt.ICACHE_INDEX_HI:3]     ic_debug_addr,     // Read/Write addresss to the Icache.
-      input logic                            ic_debug_rd_en,      // Icache debug rd
-      input logic                            ic_debug_wr_en,      // Icache debug wr
-      input logic                            ic_debug_tag_array,  // Debug tag array
-      input logic [pt.ICACHE_NUM_WAYS-1:0]   ic_debug_way,        // Debug way. Rd or Wr.
-      input logic [63:0]                     ic_premux_data,      // Premux data to be muxed with each way of the Icache.
-      input logic                            ic_sel_premux_data,  // Select the pre_muxed data
-
-      input logic [pt.ICACHE_NUM_WAYS-1:0]ic_rd_hit,
-      input eb1_ic_data_ext_in_pkt_t  [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] ic_data_ext_in_pkt,   // this is being driven by the top level for soc testing/etc
-      input  logic                         scan_mode
-
-      ) ;
-
-   logic [pt.ICACHE_TAG_INDEX_LO-1:1]                                             ic_rw_addr_ff;
-   logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_WAYS-1:0]                        ic_b_sb_wren;    //bank x ways
-   logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_WAYS-1:0]                        ic_b_sb_rden;    //bank x ways
-
-
-   logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_rden;       //bank
-   logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_rden_ff;    //bank
-   logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_debug_sel_sb;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][70:0]                  wb_dout ;       //  ways x bank
-   logic [pt.ICACHE_BANKS_WAY-1:0][70:0]                                          ic_sb_wr_data, ic_bank_wr_data, wb_dout_ecc_bank;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [141:0]                                         wb_dout_way_pre;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [63:0]                                          wb_dout_way, wb_dout_way_with_premux;
-   logic [141:0]                                                                  wb_dout_ecc;
-
-   logic [pt.ICACHE_BANKS_WAY-1:0]                                                bank_check_en;
-
-   logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_WAYS-1:0]                        ic_bank_way_clken;
-   logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_bank_way_clken_final;
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                        ic_bank_way_clken_final_up;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                 ic_debug_rd_way_en;    // debug wr_way
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                 ic_debug_rd_way_en_ff; // debug wr_way
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                 ic_debug_wr_way_en;    // debug wr_way
-   logic [pt.ICACHE_INDEX_HI:1]                                                   ic_rw_addr_q;
-
-   logic [pt.ICACHE_BANKS_WAY-1:0]       [pt.ICACHE_INDEX_HI : pt.ICACHE_DATA_INDEX_LO] ic_rw_addr_bank_q;
-
-   logic [pt.ICACHE_TAG_LO-1 : pt.ICACHE_DATA_INDEX_LO]                           ic_rw_addr_q_inc;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                 ic_rd_hit_q;
-
-
-
-      logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_sram_en;
-      logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_read_en;
-      logic [pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_write_en;
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0] [31 : pt.ICACHE_DATA_INDEX_LO]  wb_index_hold;
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 write_bypass_en;     //bank
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 write_bypass_en_ff;  //bank
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 index_valid;  //bank
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_clear_en;
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_addr_match;
-      logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_addr_match_index_only;
-
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_sram_en_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_read_en_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                                                ic_b_write_en_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0] [31 : pt.ICACHE_DATA_INDEX_LO]  wb_index_hold_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 write_bypass_en_up;     //bank
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 write_bypass_en_ff_up;  //bank
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 index_valid_up;  //bank
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_clear_en_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_addr_match_up;
-      logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                                 ic_b_addr_match_index_only_up;
-
-
-   logic [pt.ICACHE_BANKS_WAY-1:0]                 [31 : pt.ICACHE_DATA_INDEX_LO] ic_b_rw_addr;
-   logic [pt.ICACHE_BANKS_WAY-1:0]                 [31 : pt.ICACHE_DATA_INDEX_LO] ic_b_rw_addr_index_only;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                 [31 : pt.ICACHE_DATA_INDEX_LO] ic_b_rw_addr_up;
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                 [31 : pt.ICACHE_DATA_INDEX_LO] ic_b_rw_addr_index_only_up;
-
-
-
-   logic                                                                          ic_rd_en_with_debug;
-   logic                                                                          ic_rw_addr_wrap, ic_cacheline_wrap_ff;
-   logic                                                                          ic_debug_rd_en_ff;
-
-
-//-----------------------------------------------------------
-// ----------- Logic section starts here --------------------
-//-----------------------------------------------------------
-   assign  ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0] =  {pt.ICACHE_NUM_WAYS{ic_debug_rd_en & ~ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-   assign  ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0] =  {pt.ICACHE_NUM_WAYS{ic_debug_wr_en & ~ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-
-   logic end_of_cache_line;
-   assign end_of_cache_line = (pt.ICACHE_LN_SZ==7'h40) ? (&ic_rw_addr_q[5:4]) : ic_rw_addr_q[4];
-   always_comb begin : clkens
-      ic_bank_way_clken  = '0;
-
-      for ( int i=0; i<pt.ICACHE_BANKS_WAY; i++) begin: wr_ens
-       ic_b_sb_wren[i]        =  ic_wr_en[pt.ICACHE_NUM_WAYS-1:0]  |
-                                       (ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0] & {pt.ICACHE_NUM_WAYS{ic_debug_addr[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == i}}) ;
-       ic_debug_sel_sb[i]     = (ic_debug_addr[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == i );
-       ic_sb_wr_data[i]       = (ic_debug_sel_sb[i] & ic_debug_wr_en) ? ic_debug_wr_data : ic_bank_wr_data[i] ;
-       ic_b_rden[i]           =  ic_rd_en_with_debug & ( ( ~ic_rw_addr_q[pt.ICACHE_BANK_HI] & (i==0)) |
-                                                        (( ic_rw_addr_q[pt.ICACHE_BANK_HI] & ic_rw_addr_q[2:1] == 2'b11) & (i==0) & ~end_of_cache_line) |
-                                                         (  ic_rw_addr_q[pt.ICACHE_BANK_HI] & (i==1)) |
-                                                         ((~ic_rw_addr_q[pt.ICACHE_BANK_HI] & ic_rw_addr_q[2:1] == 2'b11) & (i==1)) ) ;
-
-
-
-       ic_b_sb_rden[i]        =  {pt.ICACHE_NUM_WAYS{ic_b_rden[i]}}   ;
-
-       for ( int j=0; j<pt.ICACHE_NUM_WAYS; j++) begin: way_clkens
-         ic_bank_way_clken[i][j] |= ic_b_sb_rden[i][j] | clk_override | ic_b_sb_wren[i][j];
-       end
-     end // block: wr_ens
-   end // block: clkens
-
-// bank read enables
-  assign ic_rd_en_with_debug                          = (ic_rd_en   | ic_debug_rd_en ) & ~(|ic_wr_en);
-  assign ic_rw_addr_q[pt.ICACHE_INDEX_HI:1] = (ic_debug_rd_en | ic_debug_wr_en) ?
-                                              {ic_debug_addr[pt.ICACHE_INDEX_HI:3],2'b0} :
-                                              ic_rw_addr[pt.ICACHE_INDEX_HI:1] ;
-
-   assign ic_rw_addr_q_inc[pt.ICACHE_TAG_LO-1:pt.ICACHE_DATA_INDEX_LO] = ic_rw_addr_q[pt.ICACHE_TAG_LO-1 : pt.ICACHE_DATA_INDEX_LO] + 1 ;
-   assign ic_rw_addr_wrap                                        = ic_rw_addr_q[pt.ICACHE_BANK_HI] & (ic_rw_addr_q[2:1] == 2'b11) & ic_rd_en_with_debug & ~(|ic_wr_en[pt.ICACHE_NUM_WAYS-1:0]);
-   assign ic_cacheline_wrap_ff                                   = ic_rw_addr_ff[pt.ICACHE_TAG_INDEX_LO-1:pt.ICACHE_BANK_LO] == {(pt.ICACHE_TAG_INDEX_LO - pt.ICACHE_BANK_LO){1'b1}};
-
-
-   assign ic_rw_addr_bank_q[0] = ~ic_rw_addr_wrap ? ic_rw_addr_q[pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO] : {ic_rw_addr_q[pt.ICACHE_INDEX_HI: pt.ICACHE_TAG_INDEX_LO] , ic_rw_addr_q_inc[pt.ICACHE_TAG_INDEX_LO-1: pt.ICACHE_DATA_INDEX_LO] } ;
-   assign ic_rw_addr_bank_q[1] = ic_rw_addr_q[pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO];
-
-
-   rvdffie #(.WIDTH(int'(pt.ICACHE_TAG_INDEX_LO+pt.ICACHE_BANKS_WAY+pt.ICACHE_NUM_WAYS)),.OVERRIDE(1)) miscff
-            (.*,
-             .din({ ic_b_rden[pt.ICACHE_BANKS_WAY-1:0],   ic_rw_addr_q[pt.ICACHE_TAG_INDEX_LO-1:1], ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0],   ic_debug_rd_en}),
-             .dout({ic_b_rden_ff[pt.ICACHE_BANKS_WAY-1:0],ic_rw_addr_ff[pt.ICACHE_TAG_INDEX_LO-1:1],ic_debug_rd_way_en_ff[pt.ICACHE_NUM_WAYS-1:0],ic_debug_rd_en_ff})
-             );
-
- if (pt.ICACHE_WAYPACK == 0 ) begin : PACKED_0
-
-
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS_WIDTH-1:0] wrptr_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS_WIDTH-1:0] wrptr_in_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]       sel_bypass_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]       sel_bypass_ff_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][(71*pt.ICACHE_NUM_WAYS)-1:0]    sel_bypass_data_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                                 any_bypass_up;
-    logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]                                 any_addr_match_up;
-
-`define eb1_IC_DATA_SRAM(depth,width)                                                                               \
-           ram_``depth``x``width ic_bank_sb_way_data (                                                               \
-                                     .ME(ic_bank_way_clken_final_up[i][k]),                                          \
-                                     .WE (ic_b_sb_wren[k][i]),                                                       \
-                                     .D  (ic_sb_wr_data[k][``width-1:0]),                                            \
-                                     .ADR(ic_rw_addr_bank_q[k][pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO]),         \
-                                     .Q  (wb_dout_pre_up[i][k]),                                                     \
-                                     .CLK (clk),                                                                     \
-                                     .ROP ( ),                                                                       \
-                                     .TEST1(ic_data_ext_in_pkt[i][k].TEST1),                                         \
-                                     .RME(ic_data_ext_in_pkt[i][k].RME),                                             \
-                                     .RM(ic_data_ext_in_pkt[i][k].RM),                                               \
-                                                                                                                     \
-                                     .LS(ic_data_ext_in_pkt[i][k].LS),                                               \
-                                     .DS(ic_data_ext_in_pkt[i][k].DS),                                               \
-                                     .SD(ic_data_ext_in_pkt[i][k].SD),                                               \
-                                                                                                                     \
-                                     .TEST_RNM(ic_data_ext_in_pkt[i][k].TEST_RNM),                                   \
-                                     .BC1(ic_data_ext_in_pkt[i][k].BC1),                                             \
-                                     .BC2(ic_data_ext_in_pkt[i][k].BC2)                                              \
-                                    );  \
-if (pt.ICACHE_BYPASS_ENABLE == 1) begin \
-                 assign wrptr_in_up[i][k] = (wrptr_up[i][k] == (pt.ICACHE_NUM_BYPASS-1)) ? '0 : (wrptr_up[i][k] + 1'd1);                                    \
-                 rvdffs  #(pt.ICACHE_NUM_BYPASS_WIDTH)  wrptr_ff(.*, .clk(active_clk),  .en(|write_bypass_en_up[i][k]), .din (wrptr_in_up[i][k]), .dout(wrptr_up[i][k])) ;     \
-                 assign ic_b_sram_en_up[i][k]              = ic_bank_way_clken[k][i];                             \
-                 assign ic_b_read_en_up[i][k]              =  ic_b_sram_en_up[i][k] &   ic_b_sb_rden[k][i];       \
-                 assign ic_b_write_en_up[i][k]             =  ic_b_sram_en_up[i][k] &   ic_b_sb_wren[k][i];       \
-                 assign ic_bank_way_clken_final_up[i][k]   =  ic_b_sram_en_up[i][k] &    ~(|sel_bypass_up[i][k]); \
-                 assign ic_b_rw_addr_up[i][k] = {ic_rw_addr[31:pt.ICACHE_INDEX_HI+1],ic_rw_addr_bank_q[k]};       \
-                 assign ic_b_rw_addr_index_only_up[i][k] = ic_rw_addr_bank_q[k];                                  \
-                 always_comb begin                                                                                \
-                    any_addr_match_up[i][k] = '0;                                                                 \
-                    for (int l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin                                              \
-                       any_addr_match_up[i][k] |= ic_b_addr_match_up[i][k][l];                                    \
-                    end                                                                                           \
-                 end                                                                                              \
-                // it is an error to ever have 2 entries with the same index and both valid                       \
-                for (genvar l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin: BYPASS                                       \
-                   // full match up to bit 31                                                                     \
-                   assign ic_b_addr_match_up[i][k][l] = (wb_index_hold_up[i][k][l] ==  ic_b_rw_addr_up[i][k]) & index_valid_up[i][k][l];            \
-                   assign ic_b_addr_match_index_only_up[i][k][l] = (wb_index_hold_up[i][k][l][pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO] ==  ic_b_rw_addr_index_only_up[i][k]) & index_valid_up[i][k][l];            \
-                                                                                                                                                    \
-                   assign ic_b_clear_en_up[i][k][l]   = ic_b_write_en_up[i][k] &   ic_b_addr_match_index_only_up[i][k][l];                                     \
-                                                                                                                                                    \
-                   assign sel_bypass_up[i][k][l]      = ic_b_read_en_up[i][k]  &   ic_b_addr_match_up[i][k][l] ;                                    \
-                                                                                                                                                    \
-                   assign write_bypass_en_up[i][k][l] = ic_b_read_en_up[i][k]  &  ~any_addr_match_up[i][k] & (wrptr_up[i][k] == l);                 \
-                                                                                                                                                    \
-                   rvdff  #(1)  write_bypass_ff (.*, .clk(active_clk),                                                                 .din(write_bypass_en_up[i][k][l]), .dout(write_bypass_en_ff_up[i][k][l])) ; \
-                   rvdffs #(1)  index_val_ff    (.*, .clk(active_clk), .en(write_bypass_en_up[i][k][l] | ic_b_clear_en_up[i][k][l]),   .din(~ic_b_clear_en_up[i][k][l]),  .dout(index_valid_up[i][k][l])) ;       \
-                   rvdff  #(1)  sel_hold_ff     (.*, .clk(active_clk),                                                                 .din(sel_bypass_up[i][k][l]),      .dout(sel_bypass_ff_up[i][k][l])) ;     \
-                   rvdffe #((31-pt.ICACHE_DATA_INDEX_LO+1)) ic_addr_index    (.*, .en(write_bypass_en_up[i][k][l]),    .din (ic_b_rw_addr_up[i][k]), .dout(wb_index_hold_up[i][k][l]));         \
-                   rvdffe #(``width)                             rd_data_hold_ff  (.*, .en(write_bypass_en_ff_up[i][k][l]), .din (wb_dout_pre_up[i][k]),  .dout(wb_dout_hold_up[i][k][l]));     \
-                end                                                                                                                       \
-                always_comb begin                                                                                                         \
-                 any_bypass_up[i][k] = '0;                                                                                                \
-                 sel_bypass_data_up[i][k] = '0;                                                                                           \
-                 for (int l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin                                                                         \
-                    any_bypass_up[i][k]      |=  sel_bypass_ff_up[i][k][l];                                                               \
-                    sel_bypass_data_up[i][k] |= (sel_bypass_ff_up[i][k][l]) ? wb_dout_hold_up[i][k][l] : '0;                              \
-                 end                                                                                                                      \
-                 wb_dout[i][k]   =   any_bypass_up[i][k] ?  sel_bypass_data_up[i][k] :  wb_dout_pre_up[i][k] ;                            \
-                 end                                                                                                                      \
-             end                                                                                                                          \
-             else begin                                                                                                                   \
-                 assign wb_dout[i][k]                      =   wb_dout_pre_up[i][k] ;                                                     \
-                 assign ic_bank_way_clken_final_up[i][k]   =  ic_bank_way_clken[i][k];                                                    \
-             end
-
-
-   for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: WAYS
-      for (genvar k=0; k<pt.ICACHE_BANKS_WAY; k++) begin: BANKS_WAY   // 16B subbank
-      if (pt.ICACHE_ECC) begin : ECC1
-        logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] [71-1:0]        wb_dout_pre_up;           // data and its bit enables
-        logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] [pt.ICACHE_NUM_BYPASS-1:0] [71-1:0]  wb_dout_hold_up;
-
-        if ($clog2(pt.ICACHE_DATA_DEPTH) == 13 )   begin : size_8192
-           `eb1_IC_DATA_SRAM(8192,71)
-        end
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 12 )   begin : size_4096
-           `eb1_IC_DATA_SRAM(4096,71)
-        end
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 11 ) begin : size_2048
-           `eb1_IC_DATA_SRAM(2048,71)
-        end
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 10 ) begin : size_1024
-           `eb1_IC_DATA_SRAM(1024,71)
-        end
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 9 ) begin : size_512
-           `eb1_IC_DATA_SRAM(512,71)
-        end
-         else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 8 ) begin : size_256
-           `eb1_IC_DATA_SRAM(256,71)
-         end
-         else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 7 ) begin : size_128
-           `eb1_IC_DATA_SRAM(128,71)
-         end
-         else  begin : size_64
-           `eb1_IC_DATA_SRAM(64,71)
-         end
-      end // if (pt.ICACHE_ECC)
-
-     else  begin  : ECC0
-        logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] [68-1:0]        wb_dout_pre_up;           // data and its bit enables
-        logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] [pt.ICACHE_NUM_BYPASS-1:0] [68-1:0]  wb_dout_hold_up;
-        if ($clog2(pt.ICACHE_DATA_DEPTH) == 13 )   begin : size_8192
-           `eb1_IC_DATA_SRAM(8192,68)
-        end
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 12 )   begin : size_4096
-           `eb1_IC_DATA_SRAM(4096,68)
-        end
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 11 ) begin : size_2048
-           `eb1_IC_DATA_SRAM(2048,68)
-        end
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 10 ) begin : size_1024
-           `eb1_IC_DATA_SRAM(1024,68)
-        end
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 9 ) begin : size_512
-           `eb1_IC_DATA_SRAM(512,68)
-        end
-         else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 8 ) begin : size_256
-           `eb1_IC_DATA_SRAM(256,68)
-         end
-         else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 7 ) begin : size_128
-           `eb1_IC_DATA_SRAM(128,68)
-         end
-         else  begin : size_64
-           `eb1_IC_DATA_SRAM(64,68)
-         end
-      end // else: !if(pt.ICACHE_ECC)
-      end // block: BANKS_WAY
-   end // block: WAYS
-
- end // block: PACKED_0
-
- // WAY PACKED
- else begin : PACKED_1
-
-    logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS_WIDTH-1:0] wrptr;
-    logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS_WIDTH-1:0] wrptr_in;
-    logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                       sel_bypass;
-    logic [pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0]                       sel_bypass_ff;
-
-
-    logic [pt.ICACHE_BANKS_WAY-1:0][(71*pt.ICACHE_NUM_WAYS)-1:0]  sel_bypass_data;
-    logic [pt.ICACHE_BANKS_WAY-1:0]                               any_bypass;
-    logic [pt.ICACHE_BANKS_WAY-1:0]                               any_addr_match;
-
-
-// SRAM macros
-
-`define eb1_PACKED_IC_DATA_SRAM(depth,width,waywidth)                                                                                                 \
-            ram_be_``depth``x``width  ic_bank_sb_way_data (                                                                                           \
-                            .CLK   (clk),                                                                                                             \
-                            .WE    (|ic_b_sb_wren[k]),                                                    // OR of all the ways in the bank           \
-                            .WEM   (ic_b_sb_bit_en_vec[k]),                                               // 284 bits of bit enables                  \
-                            .D     ({pt.ICACHE_NUM_WAYS{ic_sb_wr_data[k][``waywidth-1:0]}}),                                                          \
-                            .ADR   (ic_rw_addr_bank_q[k][pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO]),                                                \
-                            .Q     (wb_packeddout_pre[k]),                                                                                            \
-                            .ME    (|ic_bank_way_clken_final[k]),                                                                                     \
-                            .ROP   ( ),                                                                                                               \
-                            .TEST1  (ic_data_ext_in_pkt[0][k].TEST1),                                                                                 \
-                            .RME   (ic_data_ext_in_pkt[0][k].RME),                                                                                    \
-                            .RM    (ic_data_ext_in_pkt[0][k].RM),                                                                                     \
-                                                                                                                                                      \
-                            .LS    (ic_data_ext_in_pkt[0][k].LS),                                                                                     \
-                            .DS    (ic_data_ext_in_pkt[0][k].DS),                                                                                     \
-                            .SD    (ic_data_ext_in_pkt[0][k].SD),                                                                                     \
-                                                                                                                                                      \
-                            .TEST_RNM (ic_data_ext_in_pkt[0][k].TEST_RNM),                                                                            \
-                            .BC1      (ic_data_ext_in_pkt[0][k].BC1),                                                                                 \
-                            .BC2      (ic_data_ext_in_pkt[0][k].BC2)                                                                                  \
-                           );                                                                                                                         \
-                                                                                                                                                      \
-              if (pt.ICACHE_BYPASS_ENABLE == 1) begin                                                                                                                                                 \
-                                                                                                                                                                                                      \
-                 assign wrptr_in[k] = (wrptr[k] == (pt.ICACHE_NUM_BYPASS-1)) ? '0 : (wrptr[k] + 1'd1);                                                                                                \
-                                                                                                                                                                                                      \
-                 rvdffs  #(pt.ICACHE_NUM_BYPASS_WIDTH)  wrptr_ff(.*, .clk(active_clk), .en(|write_bypass_en[k]), .din (wrptr_in[k]), .dout(wrptr[k])) ;                                                                       \
-                                                                                                                                                                                                      \
-                 assign ic_b_sram_en[k]              = |ic_bank_way_clken[k];                                                                                                                         \
-                                                                                                                                                                                                      \
-                                                                                                                                                                                                      \
-                 assign ic_b_read_en[k]              =  ic_b_sram_en[k]  &  (|ic_b_sb_rden[k]) ;                                                                                                              \
-                 assign ic_b_write_en[k]             =  ic_b_sram_en[k] &   (|ic_b_sb_wren[k]);                                                                                                       \
-                 assign ic_bank_way_clken_final[k]   =  ic_b_sram_en[k] &    ~(|sel_bypass[k]);                                                                                                       \
-                                                                                                                                                                                                      \
-                 assign ic_b_rw_addr[k] = {ic_rw_addr[31:pt.ICACHE_INDEX_HI+1],ic_rw_addr_bank_q[k]};                                                                                                 \
-                 assign ic_b_rw_addr_index_only[k] = ic_rw_addr_bank_q[k];                                                                                                    \
-                                                                                                                                                                                                      \
-                 always_comb begin                                                                                                                                                                    \
-                    any_addr_match[k] = '0;                                                                                                                                                           \
-                                                                                                                                                                                                      \
-                    for (int l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin                                                                                                                                  \
-                       any_addr_match[k] |= ic_b_addr_match[k][l];                                                                                                                                    \
-                    end                                                                                                                                                                               \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                // it is an error to ever have 2 entries with the same index and both valid                                                                                                           \
-                for (genvar l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin: BYPASS                                                                                                                           \
-                                                                                                                                                                                                      \
-                   // full match up to bit 31                                                                                                                                                         \
-                   assign ic_b_addr_match[k][l] = (wb_index_hold[k][l] ==  ic_b_rw_addr[k]) & index_valid[k][l];                                                                                      \
-                   assign ic_b_addr_match_index_only[k][l] = (wb_index_hold[k][l][pt.ICACHE_INDEX_HI:pt.ICACHE_DATA_INDEX_LO] ==  ic_b_rw_addr_index_only[k]) & index_valid[k][l];                    \
-                                                                                                                                                                                                      \
-                   assign ic_b_clear_en[k][l]   = ic_b_write_en[k] &   ic_b_addr_match_index_only[k][l];                                                                                                              \
-                                                                                                                                                                                                      \
-                   assign sel_bypass[k][l]      = ic_b_read_en[k]  &   ic_b_addr_match[k][l] ;                                                                                                        \
-                                                                                                                                                                                                      \
-                   assign write_bypass_en[k][l] = ic_b_read_en[k]  &  ~any_addr_match[k] & (wrptr[k] == l);                                                                                           \
-                                                                                                                                                                                                      \
-                   rvdff  #(1)  write_bypass_ff (.*, .clk(active_clk),                                                     .din(write_bypass_en[k][l]), .dout(write_bypass_en_ff[k][l])) ;                            \
-                   rvdffs #(1)  index_val_ff    (.*, .clk(active_clk), .en(write_bypass_en[k][l] | ic_b_clear_en[k][l]),   .din(~ic_b_clear_en[k][l]),  .dout(index_valid[k][l])) ;                                   \
-                   rvdff  #(1)  sel_hold_ff     (.*, .clk(active_clk),                                                     .din(sel_bypass[k][l]),      .dout(sel_bypass_ff[k][l])) ;                                 \
-                                                                                                                                                                                                      \
-                   rvdffe #((31-pt.ICACHE_DATA_INDEX_LO+1)) ic_addr_index    (.*, .en(write_bypass_en[k][l]),    .din (ic_b_rw_addr[k]),      .dout(wb_index_hold[k][l]));                            \
-                   rvdffe #((``waywidth*pt.ICACHE_NUM_WAYS))        rd_data_hold_ff  (.*, .en(write_bypass_en_ff[k][l]), .din (wb_packeddout_pre[k]), .dout(wb_packeddout_hold[k][l]));                       \
-                                                                                                                                                                                                      \
-                end // block: BYPASS                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                always_comb begin                                                                                                                                                                     \
-                 any_bypass[k] = '0;                                                                                                                                                                  \
-                 sel_bypass_data[k] = '0;                                                                                                                                                             \
-                                                                                                                                                                                                      \
-                 for (int l=0; l<pt.ICACHE_NUM_BYPASS; l++) begin                                                                                                                                     \
-                    any_bypass[k]      |=  sel_bypass_ff[k][l];                                                                                                                                       \
-                      sel_bypass_data[k] |= (sel_bypass_ff[k][l]) ? wb_packeddout_hold[k][l] : '0;                                                                                                    \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                   wb_packeddout[k]   =   any_bypass[k] ?  sel_bypass_data[k] :  wb_packeddout_pre[k] ;                                                                                               \
-                end // always_comb begin                                                                                                                                                              \
-                                                                                                                                                                                                      \
-             end // if (pt.ICACHE_BYPASS_ENABLE == 1)                                                                                                                                                 \
-             else begin                                                                                                                                                                               \
-                 assign wb_packeddout[k]   =   wb_packeddout_pre[k] ;                                                                                                                                 \
-                 assign ic_bank_way_clken_final[k]   =  |ic_bank_way_clken[k] ;                                                                                                                       \
-             end
-
- // generate IC DATA PACKED SRAMS for 2/4 ways
-  for (genvar k=0; k<pt.ICACHE_BANKS_WAY; k++) begin: BANKS_WAY   // 16B subbank
-     if (pt.ICACHE_ECC) begin : ECC1
-        logic [pt.ICACHE_BANKS_WAY-1:0] [(71*pt.ICACHE_NUM_WAYS)-1:0]        wb_packeddout, ic_b_sb_bit_en_vec, wb_packeddout_pre;           // data and its bit enables
-
-        logic [pt.ICACHE_BANKS_WAY-1:0] [pt.ICACHE_NUM_BYPASS-1:0] [(71*pt.ICACHE_NUM_WAYS)-1:0]  wb_packeddout_hold;
-
-        for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: BITEN
-           assign ic_b_sb_bit_en_vec[k][(71*i)+70:71*i] = {71{ic_b_sb_wren[k][i]}};
-        end
-
-        // SRAMS with ECC (single/double detect; no correct)
-        if ($clog2(pt.ICACHE_DATA_DEPTH) == 13 )   begin : size_8192
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(8192,284,71)    // 64b data + 7b ecc
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(8192,142,71)
-           end // block: WAYS
-        end // block: size_8192
-
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 12 )   begin : size_4096
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(4096,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(4096,142,71)
-           end // block: WAYS
-        end // block: size_4096
-
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 11 ) begin : size_2048
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(2048,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(2048,142,71)
-           end // block: WAYS
-        end // block: size_2048
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 10 ) begin : size_1024
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(1024,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(1024,142,71)
-           end // block: WAYS
-        end // block: size_1024
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 9 ) begin : size_512
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(512,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(512,142,71)
-           end // block: WAYS
-        end // block: size_512
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 8 ) begin : size_256
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(256,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(256,142,71)
-           end // block: WAYS
-        end // block: size_256
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 7 ) begin : size_128
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(128,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(128,142,71)
-           end // block: WAYS
-        end // block: size_128
-
-        else  begin : size_64
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(64,284,71)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(64,142,71)
-           end // block: WAYS
-        end // block: size_64
-
-
-       for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: WAYS
-          assign wb_dout[i][k][70:0]  = wb_packeddout[k][(71*i)+70:71*i];
-       end : WAYS
-
-       end // if (pt.ICACHE_ECC)
-
-
-     else  begin  : ECC0
-        logic [pt.ICACHE_BANKS_WAY-1:0] [(68*pt.ICACHE_NUM_WAYS)-1:0]        wb_packeddout, ic_b_sb_bit_en_vec, wb_packeddout_pre;           // data and its bit enables
-
-        logic [pt.ICACHE_BANKS_WAY-1:0] [pt.ICACHE_NUM_BYPASS-1:0] [(68*pt.ICACHE_NUM_WAYS)-1:0]  wb_packeddout_hold;
-
-        for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: BITEN
-           assign ic_b_sb_bit_en_vec[k][(68*i)+67:68*i] = {68{ic_b_sb_wren[k][i]}};
-        end
-
-        // SRAMs with parity
-        if ($clog2(pt.ICACHE_DATA_DEPTH) == 13 )   begin : size_8192
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(8192,272,68)    // 64b data + 4b parity
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(8192,136,68)
-           end // block: WAYS
-        end // block: size_8192
-
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 12 )   begin : size_4096
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(4096,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(4096,136,68)
-           end // block: WAYS
-        end // block: size_4096
-
-        else if ($clog2(pt.ICACHE_DATA_DEPTH) == 11 ) begin : size_2048
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(2048,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(2048,136,68)
-           end // block: WAYS
-        end // block: size_2048
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 10 ) begin : size_1024
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(1024,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(1024,136,68)
-           end // block: WAYS
-        end // block: size_1024
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 9 ) begin : size_512
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(512,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(512,136,68)
-           end // block: WAYS
-        end // block: size_512
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 8 ) begin : size_256
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(256,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(256,136,68)
-           end // block: WAYS
-        end // block: size_256
-
-        else if ( $clog2(pt.ICACHE_DATA_DEPTH) == 7 ) begin : size_128
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(128,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(128,136,68)
-           end // block: WAYS
-        end // block: size_128
-
-        else  begin : size_64
-           if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(64,272,68)
-           end // block: WAYS
-           else   begin : WAYS
-              `eb1_PACKED_IC_DATA_SRAM(64,136,68)
-           end // block: WAYS
-        end // block: size_64
-
-       for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: WAYS
-          assign wb_dout[i][k][67:0]  = wb_packeddout[k][(68*i)+67:68*i];
-       end
-     end // block: ECC0
-     end // block: BANKS_WAY
- end // block: PACKED_1
-
-
-   assign ic_rd_hit_q[pt.ICACHE_NUM_WAYS-1:0] = ic_debug_rd_en_ff ? ic_debug_rd_way_en_ff[pt.ICACHE_NUM_WAYS-1:0] : ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0] ;
-
-
- if ( pt.ICACHE_ECC ) begin : ECC1_MUX
-
-   assign ic_bank_wr_data[1] = ic_wr_data[1][70:0];
-   assign ic_bank_wr_data[0] = ic_wr_data[0][70:0];
-
-    always_comb begin : rd_mux
-      wb_dout_way_pre[pt.ICACHE_NUM_WAYS-1:0] = '0;
-
-      for ( int i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways
-        for ( int j=0; j<pt.ICACHE_BANKS_WAY; j++) begin : banks
-         wb_dout_way_pre[i][70:0]      |=  ({71{(ic_rw_addr_ff[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == (pt.ICACHE_BANK_BITS)'(j))}}   &  wb_dout[i][j]);
-         wb_dout_way_pre[i][141 : 71]  |=  ({71{(ic_rw_addr_ff[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == (pt.ICACHE_BANK_BITS)'(j-1))}} &  wb_dout[i][j]);
-        end
-      end
-    end
-
-    for ( genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways_mux1
-      assign wb_dout_way[i][63:0] = (ic_rw_addr_ff[2:1] == 2'b00) ? wb_dout_way_pre[i][63:0]   :
-                                    (ic_rw_addr_ff[2:1] == 2'b01) ?{wb_dout_way_pre[i][86:71], wb_dout_way_pre[i][63:16]} :
-                                    (ic_rw_addr_ff[2:1] == 2'b10) ?{wb_dout_way_pre[i][102:71],wb_dout_way_pre[i][63:32]} :
-                                                                   {wb_dout_way_pre[i][119:71],wb_dout_way_pre[i][63:48]};
-
-      assign wb_dout_way_with_premux[i][63:0]  =  ic_sel_premux_data ? ic_premux_data[63:0] : wb_dout_way[i][63:0] ;
-   end
-
-   always_comb begin : rd_out
-      ic_debug_rd_data[70:0]     = '0;
-      ic_rd_data[63:0]           = '0;
-      wb_dout_ecc[141:0]         = '0;
-      for ( int i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways_mux2
-         ic_rd_data[63:0]       |= ({64{ic_rd_hit_q[i] | ic_sel_premux_data}}) &  wb_dout_way_with_premux[i][63:0];
-         ic_debug_rd_data[70:0] |= ({71{ic_rd_hit_q[i]}}) & wb_dout_way_pre[i][70:0];
-         wb_dout_ecc[141:0]     |= {142{ic_rd_hit_q[i]}}  & wb_dout_way_pre[i];
-      end
-   end
-
-
- for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_ecc_error
-    assign bank_check_en[i]    = |ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0] & ((i==0) | (~ic_cacheline_wrap_ff & (ic_b_rden_ff[pt.ICACHE_BANKS_WAY-1:0] == {pt.ICACHE_BANKS_WAY{1'b1}})));  // always check the lower address bank, and drop the upper address bank on a CL wrap
-    assign wb_dout_ecc_bank[i] = wb_dout_ecc[(71*i)+70:(71*i)];
-
-   rvecc_decode_64  ecc_decode_64 (
-                           .en               (bank_check_en[i]),
-                           .din              (wb_dout_ecc_bank[i][63 : 0]),                // [134:71],  [63:0]
-                           .ecc_in           (wb_dout_ecc_bank[i][70 : 64]),               // [141:135] [70:64]
-                           .ecc_error        (ic_eccerr[i]));
-
-   // or the sb and db error detects into 1 signal called aligndataperr[i] where i corresponds to 2B position
-  assign  ic_parerr[i]  = '0 ;
-  end // block: ic_ecc_error
-
-end // if ( pt.ICACHE_ECC )
-
-else  begin : ECC0_MUX
-   assign ic_bank_wr_data[1] = ic_wr_data[1][70:0];
-   assign ic_bank_wr_data[0] = ic_wr_data[0][70:0];
-
-   always_comb begin : rd_mux
-      wb_dout_way_pre[pt.ICACHE_NUM_WAYS-1:0] = '0;
-
-   for ( int i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways
-     for ( int j=0; j<pt.ICACHE_BANKS_WAY; j++) begin : banks
-         wb_dout_way_pre[i][67:0]         |=  ({68{(ic_rw_addr_ff[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == (pt.ICACHE_BANK_BITS)'(j))}}   &  wb_dout[i][j][67:0]);
-         wb_dout_way_pre[i][135 : 68]     |=  ({68{(ic_rw_addr_ff[pt.ICACHE_BANK_HI : pt.ICACHE_BANK_LO] == (pt.ICACHE_BANK_BITS)'(j-1))}} &  wb_dout[i][j][67:0]);
-      end
-     end
-   end
-   // When we straddle the banks like this - the ECC we capture is not correct ??
-   for ( genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways_mux1
-      assign wb_dout_way[i][63:0] = (ic_rw_addr_ff[2:1] == 2'b00) ? wb_dout_way_pre[i][63:0]   :
-                                    (ic_rw_addr_ff[2:1] == 2'b01) ?{wb_dout_way_pre[i][83:68],  wb_dout_way_pre[i][63:16]} :
-                                    (ic_rw_addr_ff[2:1] == 2'b10) ?{wb_dout_way_pre[i][99:68],  wb_dout_way_pre[i][63:32]} :
-                                                                   {wb_dout_way_pre[i][115:68], wb_dout_way_pre[i][63:48]};
-
-      assign wb_dout_way_with_premux[i][63:0]      =  ic_sel_premux_data ? ic_premux_data[63:0]  : wb_dout_way[i][63:0] ;
-   end
-
-   always_comb begin : rd_out
-      ic_rd_data[63:0]   = '0;
-      ic_debug_rd_data[70:0]   = '0;
-      wb_dout_ecc[135:0] = '0;
-
-      for ( int i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : num_ways_mux2
-         ic_rd_data[63:0]   |= ({64{ic_rd_hit_q[i] | ic_sel_premux_data}} &  wb_dout_way_with_premux[i][63:0]);
-         ic_debug_rd_data[70:0] |= ({71{ic_rd_hit_q[i]}}) & {3'b0,wb_dout_way_pre[i][67:0]};
-         wb_dout_ecc[135:0] |= {136{ic_rd_hit_q[i]}}  & wb_dout_way_pre[i][135:0];
-      end
-   end
-
-   assign wb_dout_ecc_bank[0] =  wb_dout_ecc[67:0];
-   assign wb_dout_ecc_bank[1] =  wb_dout_ecc[135:68];
-
-   logic [pt.ICACHE_BANKS_WAY-1:0][3:0] ic_parerr_bank;
-
-  for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_par_error
-    assign bank_check_en[i]    = |ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0] & ((i==0) | (~ic_cacheline_wrap_ff & (ic_b_rden_ff[pt.ICACHE_BANKS_WAY-1:0] == {pt.ICACHE_BANKS_WAY{1'b1}})));  // always check the lower address bank, and drop the upper address bank on a CL wrap
-     for (genvar j=0; j<4; j++)  begin : parity
-      rveven_paritycheck pchk (
-                           .data_in   (wb_dout_ecc_bank[i][16*(j+1)-1: 16*j]),
-                           .parity_in (wb_dout_ecc_bank[i][64+j]),
-                           .parity_err(ic_parerr_bank[i][j] )
-                           );
-        end
-     assign ic_eccerr [i] = '0 ;
-  end
-
-     assign ic_parerr[1] = (|ic_parerr_bank[1][3:0]) & bank_check_en[1];
-     assign ic_parerr[0] = (|ic_parerr_bank[0][3:0]) & bank_check_en[0];
-
-end // else: !if( pt.ICACHE_ECC )
-
-
-endmodule // eb1_IC_DATA
-
-//=============================================================================================================================================================
-///\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ END OF IC DATA MODULE \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
-//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
-//=============================================================================================================================================================
-
-/////////////////////////////////////////////////
-////// ICACHE TAG MODULE     ////////////////////
-/////////////////////////////////////////////////
-module eb1_IC_TAG
-import eb1_pkg::*;
- #(
-`include "eb1_param.vh"
- )
-     (
-      input logic                                                   clk,
-      input logic                                                   active_clk,
-      input logic                                                   rst_l,
-      input logic                                                   clk_override,
-      input logic                                                   dec_tlu_core_ecc_disable,
-
-      input logic [31:3]                                            ic_rw_addr,
-
-      input logic [pt.ICACHE_NUM_WAYS-1:0]                         ic_wr_en,             // way
-      input logic [pt.ICACHE_NUM_WAYS-1:0]                         ic_tag_valid,
-      input logic                                                  ic_rd_en,
-
-      input logic [pt.ICACHE_INDEX_HI:3]                           ic_debug_addr,        // Read/Write addresss to the Icache.
-      input logic                                                  ic_debug_rd_en,       // Icache debug rd
-      input logic                                                  ic_debug_wr_en,       // Icache debug wr
-      input logic                                                  ic_debug_tag_array,   // Debug tag array
-      input logic [pt.ICACHE_NUM_WAYS-1:0]                         ic_debug_way,         // Debug way. Rd or Wr.
-      input eb1_ic_tag_ext_in_pkt_t   [pt.ICACHE_NUM_WAYS-1:0]    ic_tag_ext_in_pkt,
-
-      output logic [25:0]                                          ictag_debug_rd_data,
-      input  logic [70:0]                                          ic_debug_wr_data,     // Debug wr cache.
-
-      output logic [pt.ICACHE_NUM_WAYS-1:0]                        ic_rd_hit,
-      output logic                                                 ic_tag_perr,
-      input  logic                                                 scan_mode
-   ) ;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0] [25:0]                           ic_tag_data_raw;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [25:0]                           ic_tag_data_raw_pre;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [36:pt.ICACHE_TAG_LO]            w_tout;
-   logic [25:0]                                                    ic_tag_wr_data ;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [31:0]                           ic_tag_corrected_data_unc;
-   logic [pt.ICACHE_NUM_WAYS-1:0] [06:0]                           ic_tag_corrected_ecc_unc;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_single_ecc_error;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_double_ecc_error;
-   logic [6:0]                                                     ic_tag_ecc;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_way_perr ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_debug_rd_way_en ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_debug_rd_way_en_ff ;
-
-   logic [pt.ICACHE_INDEX_HI: pt.ICACHE_TAG_INDEX_LO]              ic_rw_addr_q;
-   logic [31:pt.ICACHE_TAG_LO]                                     ic_rw_addr_ff;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_rden_q;          // way
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_wren;          // way
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_wren_q;        // way
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_tag_clken;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                  ic_debug_wr_way_en;   // debug wr_way
-   logic                                                           ic_rd_en_ff;
-   logic                                                           ic_tag_parity;
-
-
-   assign  ic_tag_wren [pt.ICACHE_NUM_WAYS-1:0]  = ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] & {pt.ICACHE_NUM_WAYS{(ic_rw_addr[pt.ICACHE_BEAT_ADDR_HI:4] == {pt.ICACHE_BEAT_BITS-1{1'b1}})}} ;
-   assign  ic_tag_clken[pt.ICACHE_NUM_WAYS-1:0]  = {pt.ICACHE_NUM_WAYS{ic_rd_en | clk_override}} | ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] | ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0] | ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0];
-
-   rvdff #(1) rd_en_ff (.*, .clk(active_clk),
-                    .din (ic_rd_en),
-                    .dout(ic_rd_en_ff)) ;
-
-
-   rvdffie #(32-pt.ICACHE_TAG_LO) adr_ff (.*,
-                                          .din ({ic_rw_addr[31:pt.ICACHE_TAG_LO]}),
-                                          .dout({ic_rw_addr_ff[31:pt.ICACHE_TAG_LO]})
-                                          );
-
-   localparam PAD_BITS = 21 - (32 - pt.ICACHE_TAG_LO);  // sizing for a max tag width.
-
-   // tags
-   assign  ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0] =  {pt.ICACHE_NUM_WAYS{ic_debug_rd_en & ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-   assign  ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0] =  {pt.ICACHE_NUM_WAYS{ic_debug_wr_en & ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-
-   assign  ic_tag_wren_q[pt.ICACHE_NUM_WAYS-1:0]  =  ic_tag_wren[pt.ICACHE_NUM_WAYS-1:0]          |
-                                  ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0]   ;
-
-   assign  ic_tag_rden_q[pt.ICACHE_NUM_WAYS-1:0]  =  ({pt.ICACHE_NUM_WAYS{ic_rd_en }}  | ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0] ) &  {pt.ICACHE_NUM_WAYS{~(|ic_wr_en)  & ~ic_debug_wr_en}};
-
-if (pt.ICACHE_TAG_LO == 11) begin: SMALLEST
- if (pt.ICACHE_ECC) begin : ECC1_W
-           rvecc_encode  tag_ecc_encode (
-                                  .din    ({{pt.ICACHE_TAG_LO{1'b0}}, ic_rw_addr[31:pt.ICACHE_TAG_LO]}),
-                                  .ecc_out({ ic_tag_ecc[6:0]}));
-
-   assign  ic_tag_wr_data[25:0] = (ic_debug_wr_en & ic_debug_tag_array) ?
-                                  {ic_debug_wr_data[68:64], ic_debug_wr_data[31:11]} :
-                                  {ic_tag_ecc[4:0], ic_rw_addr[31:pt.ICACHE_TAG_LO]} ;
- end
-
- else begin : ECC0_W
-           rveven_paritygen #(32-pt.ICACHE_TAG_LO) pargen  (.data_in   (ic_rw_addr[31:pt.ICACHE_TAG_LO]),
-                                                 .parity_out(ic_tag_parity));
-
-   assign  ic_tag_wr_data[21:0] = (ic_debug_wr_en & ic_debug_tag_array) ?
-                                  {ic_debug_wr_data[64], ic_debug_wr_data[31:11]} :
-                                  {ic_tag_parity, ic_rw_addr[31:pt.ICACHE_TAG_LO]} ;
- end // else: !if(pt.ICACHE_ECC)
-
-end // block: SMALLEST
-
-
-else begin: OTHERS
-  if(pt.ICACHE_ECC) begin :ECC1_W
-           rvecc_encode  tag_ecc_encode (
-                                  .din    ({{pt.ICACHE_TAG_LO{1'b0}}, ic_rw_addr[31:pt.ICACHE_TAG_LO]}),
-                                  .ecc_out({ ic_tag_ecc[6:0]}));
-
-   assign  ic_tag_wr_data[25:0] = (ic_debug_wr_en & ic_debug_tag_array) ?
-                                  {ic_debug_wr_data[68:64],ic_debug_wr_data[31:11]} :
-                                  {ic_tag_ecc[4:0], {PAD_BITS{1'b0}},ic_rw_addr[31:pt.ICACHE_TAG_LO]} ;
-
-  end
-  else  begin :ECC0_W
-   logic   ic_tag_parity ;
-           rveven_paritygen #(32-pt.ICACHE_TAG_LO) pargen  (.data_in   (ic_rw_addr[31:pt.ICACHE_TAG_LO]),
-                                                 .parity_out(ic_tag_parity));
-   assign  ic_tag_wr_data[21:0] = (ic_debug_wr_en & ic_debug_tag_array) ?
-                                  {ic_debug_wr_data[64], ic_debug_wr_data[31:11]} :
-                                  {ic_tag_parity, {PAD_BITS{1'b0}},ic_rw_addr[31:pt.ICACHE_TAG_LO]} ;
-  end // else: !if(pt.ICACHE_ECC)
-
-end // block: OTHERS
-
-
-    assign ic_rw_addr_q[pt.ICACHE_INDEX_HI: pt.ICACHE_TAG_INDEX_LO] = (ic_debug_rd_en | ic_debug_wr_en) ?
-                                                ic_debug_addr[pt.ICACHE_INDEX_HI: pt.ICACHE_TAG_INDEX_LO] :
-                                                ic_rw_addr[pt.ICACHE_INDEX_HI: pt.ICACHE_TAG_INDEX_LO] ;
-
-   rvdff #(pt.ICACHE_NUM_WAYS) tag_rd_wy_ff (.*, .clk(active_clk),
-                    .din ({ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0]}),
-                    .dout({ic_debug_rd_way_en_ff[pt.ICACHE_NUM_WAYS-1:0]}));
-
- if (pt.ICACHE_WAYPACK == 0 ) begin : PACKED_0
-
-   logic [pt.ICACHE_NUM_WAYS-1:0] ic_b_sram_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                                               ic_b_read_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                                                                               ic_b_write_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0] [pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]   wb_index_hold;
-   logic [pt.ICACHE_NUM_WAYS-1:0]                               [pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]   ic_b_rw_addr;
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 write_bypass_en;     //bank
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 write_bypass_en_ff;  //bank
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 index_valid;  //bank
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 ic_b_clear_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 ic_b_addr_match;
-
-
-
-
-    logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS_WIDTH-1:0] wrptr;
-    logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS_WIDTH-1:0] wrptr_in;
-    logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS-1:0]       sel_bypass;
-    logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS-1:0]       sel_bypass_ff;
-
-
-
-    logic [pt.ICACHE_NUM_WAYS-1:0][25:0]  sel_bypass_data;
-    logic [pt.ICACHE_NUM_WAYS-1:0]        any_bypass;
-    logic [pt.ICACHE_NUM_WAYS-1:0]        any_addr_match;
-    logic [pt.ICACHE_NUM_WAYS-1:0]        ic_tag_clken_final;
-
-      `define eb1_IC_TAG_SRAM(depth,width)                                                                                                      \
-                                  ram_``depth``x``width  ic_way_tag (                                                                           \
-                                .ME(ic_tag_clken_final[i]),                                                                                     \
-                                .WE (ic_tag_wren_q[i]),                                                                                         \
-                                .D  (ic_tag_wr_data[``width-1:0]),                                                                              \
-                                .ADR(ic_rw_addr_q[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]),                                                  \
-                                .Q  (ic_tag_data_raw_pre[i][``width-1:0]),                                                                      \
-                                .CLK (clk),                                                                                                     \
-                                .ROP ( ),                                                                                                       \
-                                                                                                                                                \
-                                .TEST1(ic_tag_ext_in_pkt[i].TEST1),                                                                             \
-                                .RME(ic_tag_ext_in_pkt[i].RME),                                                                                 \
-                                .RM(ic_tag_ext_in_pkt[i].RM),                                                                                   \
-                                                                                                                                                \
-                                .LS(ic_tag_ext_in_pkt[i].LS),                                                                                   \
-                                .DS(ic_tag_ext_in_pkt[i].DS),                                                                                   \
-                                .SD(ic_tag_ext_in_pkt[i].SD),                                                                                   \
-                                                                                                                                                \
-                                .TEST_RNM(ic_tag_ext_in_pkt[i].TEST_RNM),                                                                       \
-                                .BC1(ic_tag_ext_in_pkt[i].BC1),                                                                                 \
-                                .BC2(ic_tag_ext_in_pkt[i].BC2)                                                                                  \
-                                                                                                                                                \
-                               );                                                                                                               \
-                                                                                                                                                \
-                                                                                                                                                \
-                                                                                                                                                \
-                                                                                                                                                \
-              if (pt.ICACHE_TAG_BYPASS_ENABLE == 1) begin                                                                                                                                             \
-                                                                                                                                                                                                      \
-                 assign wrptr_in[i] = (wrptr[i] == (pt.ICACHE_TAG_NUM_BYPASS-1)) ? '0 : (wrptr[i] + 1'd1);                                                                                            \
-                                                                                                                                                                                                      \
-                 rvdffs  #(pt.ICACHE_TAG_NUM_BYPASS_WIDTH)  wrptr_ff(.*, .clk(active_clk), .en(|write_bypass_en[i]), .din (wrptr_in[i]), .dout(wrptr[i])) ;                                           \
-                                                                                                                                                                                                      \
-                 assign ic_b_sram_en[i]              = ic_tag_clken[i];                                                                                                                               \
-                                                                                                                                                                                                      \
-                 assign ic_b_read_en[i]              =  ic_b_sram_en[i] &   (ic_tag_rden_q[i]);                                                                                                       \
-                 assign ic_b_write_en[i]             =  ic_b_sram_en[i] &   (ic_tag_wren_q[i]);                                                                                                       \
-                 assign ic_tag_clken_final[i]        =  ic_b_sram_en[i] &    ~(|sel_bypass[i]);                                                                                                       \
-                                                                                                                                                                                                      \
-                 // LSB is pt.ICACHE_TAG_INDEX_LO]                                                                                                                                                    \
-                 assign ic_b_rw_addr[i] = {ic_rw_addr_q};                                                                                                                                             \
-                                                                                                                                                                                                      \
-                 always_comb begin                                                                                                                                                                    \
-                    any_addr_match[i] = '0;                                                                                                                                                           \
-                                                                                                                                                                                                      \
-                    for (int l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin                                                                                                                              \
-                       any_addr_match[i] |= (ic_b_addr_match[i][l] & index_valid[i][l]);                                                                                                              \
-                    end                                                                                                                                                                               \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                // it is an error to ever have 2 entries with the same index and both valid                                                                                                           \
-                for (genvar l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin: BYPASS                                                                                                                       \
-                                                                                                                                                                                                      \
-                   assign ic_b_addr_match[i][l] = (wb_index_hold[i][l] ==  ic_b_rw_addr[i]) & index_valid[i][l];                                                                                      \
-                                                                                                                                                                                                      \
-                   assign ic_b_clear_en[i][l]   = ic_b_write_en[i] &   ic_b_addr_match[i][l];                                                                                                         \
-                                                                                                                                                                                                      \
-                   assign sel_bypass[i][l]      = ic_b_read_en[i]  &   ic_b_addr_match[i][l] ;                                                                                                        \
-                                                                                                                                                                                                      \
-                   assign write_bypass_en[i][l] = ic_b_read_en[i]  &  ~any_addr_match[i] & (wrptr[i] == l);                                                                                           \
-                                                                                                                                                                                                      \
-                   rvdff  #(1)  write_bypass_ff (.*, .clk(active_clk),                                                     .din(write_bypass_en[i][l]), .dout(write_bypass_en_ff[i][l])) ;                            \
-                   rvdffs #(1)  index_val_ff    (.*, .clk(active_clk), .en(write_bypass_en[i][l] | ic_b_clear_en[i][l]),         .din(~ic_b_clear_en[i][l]),  .dout(index_valid[i][l])) ;                             \
-                   rvdff  #(1)  sel_hold_ff     (.*, .clk(active_clk),                                                     .din(sel_bypass[i][l]),      .dout(sel_bypass_ff[i][l])) ;                                 \
-                                                                                                                                                                                                      \
-                   rvdffe #(.WIDTH(pt.ICACHE_INDEX_HI-pt.ICACHE_TAG_INDEX_LO+1),.OVERRIDE(1))  ic_addr_index   (.*, .en(write_bypass_en[i][l]),    .din (ic_b_rw_addr[i]),        .dout(wb_index_hold[i][l]));   \
-                   rvdffe #(``width)                                                           rd_data_hold_ff (.*, .en(write_bypass_en_ff[i][l]), .din (ic_tag_data_raw_pre[i][``width-1:0]), .dout(wb_dout_hold[i][l]));            \
-                                                                                                                                                                                                      \
-                end // block: BYPASS                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                always_comb begin                                                                                                                                                                     \
-                 any_bypass[i] = '0;                                                                                                                                                                  \
-                 sel_bypass_data[i] = '0;                                                                                                                                                             \
-                                                                                                                                                                                                      \
-                 for (int l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin                                                                                                                                 \
-                    any_bypass[i]      |=  sel_bypass_ff[i][l];                                                                                                                                       \
-                    sel_bypass_data[i] |= (sel_bypass_ff[i][l]) ? wb_dout_hold[i][l] : '0;                                                                                                            \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                   ic_tag_data_raw[i]   =   any_bypass[i] ?  sel_bypass_data[i] :  ic_tag_data_raw_pre[i] ;                                                                                           \
-                end // always_comb begin                                                                                                                                                              \
-                                                                                                                                                                                                      \
-             end // if (pt.ICACHE_BYPASS_ENABLE == 1)                                                                                                                                                 \
-             else begin                                                                                                                                                                               \
-                 assign ic_tag_data_raw[i]   =   ic_tag_data_raw_pre[i] ;                                                                                                                             \
-                 assign ic_tag_clken_final[i]       =   ic_tag_clken[i];                                                                                                                              \
-             end
-   for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: WAYS
-
-   if (pt.ICACHE_ECC) begin  : ECC1
-      logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS-1:0][25 :0] wb_dout_hold;
-
-      if (pt.ICACHE_TAG_DEPTH == 32)   begin : size_32
-                 `eb1_IC_TAG_SRAM(32,26)
-      end // if (pt.ICACHE_TAG_DEPTH == 32)
-      if (pt.ICACHE_TAG_DEPTH == 64)   begin : size_64
-                 `eb1_IC_TAG_SRAM(64,26)
-      end // if (pt.ICACHE_TAG_DEPTH == 64)
-      if (pt.ICACHE_TAG_DEPTH == 128)   begin : size_128
-                 `eb1_IC_TAG_SRAM(128,26)
-      end // if (pt.ICACHE_TAG_DEPTH == 128)
-       if (pt.ICACHE_TAG_DEPTH == 256)   begin : size_256
-                 `eb1_IC_TAG_SRAM(256,26)
-       end // if (pt.ICACHE_TAG_DEPTH == 256)
-       if (pt.ICACHE_TAG_DEPTH == 512)   begin : size_512
-                 `eb1_IC_TAG_SRAM(512,26)
-       end // if (pt.ICACHE_TAG_DEPTH == 512)
-       if (pt.ICACHE_TAG_DEPTH == 1024)   begin : size_1024
-                 `eb1_IC_TAG_SRAM(1024,26)
-       end // if (pt.ICACHE_TAG_DEPTH == 1024)
-       if (pt.ICACHE_TAG_DEPTH == 2048)   begin : size_2048
-                 `eb1_IC_TAG_SRAM(2048,26)
-       end // if (pt.ICACHE_TAG_DEPTH == 2048)
-       if (pt.ICACHE_TAG_DEPTH == 4096)   begin  : size_4096
-                 `eb1_IC_TAG_SRAM(4096,26)
-       end // if (pt.ICACHE_TAG_DEPTH == 4096)
-
-         assign w_tout[i][31:pt.ICACHE_TAG_LO] = ic_tag_data_raw[i][31-pt.ICACHE_TAG_LO:0] ;
-         assign w_tout[i][36:32]              = ic_tag_data_raw[i][25:21] ;
-
-         rvecc_decode  ecc_decode (
-                           .en(~dec_tlu_core_ecc_disable & ic_rd_en_ff),
-                           .sed_ded ( 1'b1 ),    // 1 : means only detection
-                           .din({11'b0,ic_tag_data_raw[i][20:0]}),
-                           .ecc_in({2'b0, ic_tag_data_raw[i][25:21]}),
-                           .dout(ic_tag_corrected_data_unc[i][31:0]),
-                           .ecc_out(ic_tag_corrected_ecc_unc[i][6:0]),
-                           .single_ecc_error(ic_tag_single_ecc_error[i]),
-                           .double_ecc_error(ic_tag_double_ecc_error[i]));
-
-          assign ic_tag_way_perr[i]= ic_tag_single_ecc_error[i] | ic_tag_double_ecc_error[i]  ;
-      end
-      else  begin : ECC0
-      logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_NUM_BYPASS-1:0][21 :0] wb_dout_hold;
-      assign ic_tag_data_raw_pre[i][25:22] = '0 ;
-
-      if (pt.ICACHE_TAG_DEPTH == 32)   begin : size_32
-                 `eb1_IC_TAG_SRAM(32,22)
-      end // if (pt.ICACHE_TAG_DEPTH == 32)
-      if (pt.ICACHE_TAG_DEPTH == 64)   begin : size_64
-                 `eb1_IC_TAG_SRAM(64,22)
-      end // if (pt.ICACHE_TAG_DEPTH == 64)
-      if (pt.ICACHE_TAG_DEPTH == 128)   begin : size_128
-                 `eb1_IC_TAG_SRAM(128,22)
-      end // if (pt.ICACHE_TAG_DEPTH == 128)
-       if (pt.ICACHE_TAG_DEPTH == 256)   begin : size_256
-                 `eb1_IC_TAG_SRAM(256,22)
-       end // if (pt.ICACHE_TAG_DEPTH == 256)
-       if (pt.ICACHE_TAG_DEPTH == 512)   begin : size_512
-                 `eb1_IC_TAG_SRAM(512,22)
-       end // if (pt.ICACHE_TAG_DEPTH == 512)
-       if (pt.ICACHE_TAG_DEPTH == 1024)   begin : size_1024
-                 `eb1_IC_TAG_SRAM(1024,22)
-       end // if (pt.ICACHE_TAG_DEPTH == 1024)
-       if (pt.ICACHE_TAG_DEPTH == 2048)   begin : size_2048
-                 `eb1_IC_TAG_SRAM(2048,22)
-       end // if (pt.ICACHE_TAG_DEPTH == 2048)
-       if (pt.ICACHE_TAG_DEPTH == 4096)   begin  : size_4096
-                 `eb1_IC_TAG_SRAM(4096,22)
-       end // if (pt.ICACHE_TAG_DEPTH == 4096)
-
-         assign w_tout[i][31:pt.ICACHE_TAG_LO] = ic_tag_data_raw[i][31-pt.ICACHE_TAG_LO:0] ;
-         assign w_tout[i][32]                 = ic_tag_data_raw[i][21] ;
-
-         rveven_paritycheck #(32-pt.ICACHE_TAG_LO) parcheck(.data_in   (w_tout[i][31:pt.ICACHE_TAG_LO]),
-                                                   .parity_in (w_tout[i][32]),
-                                                   .parity_err(ic_tag_way_perr[i]));
-      end // else: !if(pt.ICACHE_ECC)
-
-   end // block: WAYS
- end // block: PACKED_0
-
-
- else begin : PACKED_1
-
-
-   logic                                                                                ic_b_sram_en;
-   logic                                                                                ic_b_read_en;
-   logic                                                                                ic_b_write_en;
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0] [pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]   wb_index_hold;
-   logic                                [pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]   ic_b_rw_addr;
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 write_bypass_en;     //bank
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 write_bypass_en_ff;  //bank
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 index_valid;  //bank
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 ic_b_clear_en;
-   logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]                                                 ic_b_addr_match;
-
-
-
-
-    logic [pt.ICACHE_TAG_NUM_BYPASS_WIDTH-1:0]  wrptr;
-    logic [pt.ICACHE_TAG_NUM_BYPASS_WIDTH-1:0]  wrptr_in;
-    logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]        sel_bypass;
-    logic [pt.ICACHE_TAG_NUM_BYPASS-1:0]        sel_bypass_ff;
-
-
-
-    logic [(26*pt.ICACHE_NUM_WAYS)-1:0]  sel_bypass_data;
-    logic                                any_bypass;
-    logic                                any_addr_match;
-    logic                                ic_tag_clken_final;
-
-`define eb1_IC_TAG_PACKED_SRAM(depth,width)                                                               \
-                  ram_be_``depth``x``width  ic_way_tag (                                                   \
-                                .ME  ( ic_tag_clken_final),                                                \
-                                .WE  (|ic_tag_wren_q[pt.ICACHE_NUM_WAYS-1:0]),                             \
-                                .WEM (ic_tag_wren_biten_vec[``width-1:0]),                                 \
-                                                                                                           \
-                                .D   ({pt.ICACHE_NUM_WAYS{ic_tag_wr_data[``width/pt.ICACHE_NUM_WAYS-1:0]}}), \
-                                .ADR (ic_rw_addr_q[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]),            \
-                                .Q   (ic_tag_data_raw_packed_pre[``width-1:0]),                            \
-                                .CLK (clk),                                                                \
-                                .ROP ( ),                                                                  \
-                                                                                                           \
-                                .TEST1     (ic_tag_ext_in_pkt[0].TEST1),                                   \
-                                .RME      (ic_tag_ext_in_pkt[0].RME),                                      \
-                                .RM       (ic_tag_ext_in_pkt[0].RM),                                       \
-                                                                                                           \
-                                .LS       (ic_tag_ext_in_pkt[0].LS),                                       \
-                                .DS       (ic_tag_ext_in_pkt[0].DS),                                       \
-                                .SD       (ic_tag_ext_in_pkt[0].SD),                                       \
-                                                                                                           \
-                                .TEST_RNM (ic_tag_ext_in_pkt[0].TEST_RNM),                                 \
-                                .BC1      (ic_tag_ext_in_pkt[0].BC1),                                      \
-                                .BC2      (ic_tag_ext_in_pkt[0].BC2)                                       \
-                                                                                                           \
-                               );                                                                          \
-                                                                                                           \
-              if (pt.ICACHE_TAG_BYPASS_ENABLE == 1) begin                                                                                                                                             \
-                                                                                                                                                                                                      \
-                 assign wrptr_in = (wrptr == (pt.ICACHE_TAG_NUM_BYPASS-1)) ? '0 : (wrptr + 1'd1);                                                                                                     \
-                                                                                                                                                                                                      \
-                 rvdffs  #(pt.ICACHE_TAG_NUM_BYPASS_WIDTH)  wrptr_ff(.*, .clk(active_clk), .en(|write_bypass_en), .din (wrptr_in), .dout(wrptr)) ;                                                    \
-                                                                                                                                                                                                      \
-                 assign ic_b_sram_en              = |ic_tag_clken;                                                                                                                                    \
-                                                                                                                                                                                                      \
-                 assign ic_b_read_en              =  ic_b_sram_en &   (|ic_tag_rden_q);                                                                                                               \
-                 assign ic_b_write_en             =  ic_b_sram_en &   (|ic_tag_wren_q);                                                                                                               \
-                 assign ic_tag_clken_final        =  ic_b_sram_en &    ~(|sel_bypass);                                                                                                                \
-                                                                                                                                                                                                      \
-                 // LSB is pt.ICACHE_TAG_INDEX_LO]                                                                                                                                                    \
-                 assign ic_b_rw_addr = {ic_rw_addr_q};                                                                                                                                                \
-                                                                                                                                                                                                      \
-                 always_comb begin                                                                                                                                                                    \
-                    any_addr_match = '0;                                                                                                                                                              \
-                                                                                                                                                                                                      \
-                    for (int l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin                                                                                                                              \
-                       any_addr_match |= ic_b_addr_match[l];                                                                                                                                          \
-                    end                                                                                                                                                                               \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                // it is an error to ever have 2 entries with the same index and both valid                                                                                                           \
-                for (genvar l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin: BYPASS                                                                                                                       \
-                                                                                                                                                                                                      \
-                   assign ic_b_addr_match[l] = (wb_index_hold[l] ==  ic_b_rw_addr) & index_valid[l];                                                                                                  \
-                                                                                                                                                                                                      \
-                   assign ic_b_clear_en[l]   = ic_b_write_en &   ic_b_addr_match[l];                                                                                                                  \
-                                                                                                                                                                                                      \
-                   assign sel_bypass[l]      = ic_b_read_en  &   ic_b_addr_match[l] ;                                                                                                                 \
-                                                                                                                                                                                                      \
-                   assign write_bypass_en[l] = ic_b_read_en  &  ~any_addr_match & (wrptr == l);                                                                                                       \
-                                                                                                                                                                                                      \
-                   rvdff  #(1)  write_bypass_ff (.*, .clk(active_clk),                                                     .din(write_bypass_en[l]), .dout(write_bypass_en_ff[l])) ;                                  \
-                   rvdffs #(1)  index_val_ff    (.*, .clk(active_clk), .en(write_bypass_en[l] | ic_b_clear_en[l]),         .din(~ic_b_clear_en[l]),  .dout(index_valid[l])) ;                                         \
-                   rvdff  #(1)  sel_hold_ff     (.*, .clk(active_clk),                                                     .din(sel_bypass[l]),      .dout(sel_bypass_ff[l])) ;                                               \
-                                                                                                                                                                                                      \
-                   rvdffe #(.WIDTH(pt.ICACHE_INDEX_HI-pt.ICACHE_TAG_INDEX_LO+1),.OVERRIDE(1)) ic_addr_index    (.*, .en(write_bypass_en[l]),    .din (ic_b_rw_addr),               .dout(wb_index_hold[l]));          \
-                   rvdffe #(``width)                                                          rd_data_hold_ff  (.*, .en(write_bypass_en_ff[l]), .din (ic_tag_data_raw_packed_pre[``width-1:0]), .dout(wb_packeddout_hold[l]));        \
-                                                                                                                                                                                                      \
-                end // block: BYPASS                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                always_comb begin                                                                                                                                                                     \
-                 any_bypass = '0;                                                                                                                                                                     \
-                 sel_bypass_data = '0;                                                                                                                                                                \
-                                                                                                                                                                                                      \
-                 for (int l=0; l<pt.ICACHE_TAG_NUM_BYPASS; l++) begin                                                                                                                                 \
-                    any_bypass      |=  sel_bypass_ff[l];                                                                                                                                             \
-                    sel_bypass_data |= (sel_bypass_ff[l]) ? wb_packeddout_hold[l] : '0;                                                                                                               \
-                 end                                                                                                                                                                                  \
-                                                                                                                                                                                                      \
-                   ic_tag_data_raw_packed   =   any_bypass ?  sel_bypass_data :  ic_tag_data_raw_packed_pre ;                                                                                         \
-                end // always_comb begin                                                                                                                                                              \
-                                                                                                                                                                                                      \
-             end // if (pt.ICACHE_BYPASS_ENABLE == 1)                                                                                                                                                 \
-             else begin                                                                                                                                                                               \
-                 assign ic_tag_data_raw_packed   =   ic_tag_data_raw_packed_pre ;                                                                                                                     \
-                 assign ic_tag_clken_final       =   |ic_tag_clken;                                                                                                                                   \
-             end
-
-   if (pt.ICACHE_ECC) begin  : ECC1
-    logic [(26*pt.ICACHE_NUM_WAYS)-1 :0]  ic_tag_data_raw_packed, ic_tag_wren_biten_vec, ic_tag_data_raw_packed_pre;           // data and its bit enables
-    logic [pt.ICACHE_TAG_NUM_BYPASS-1:0][(26*pt.ICACHE_NUM_WAYS)-1 :0] wb_packeddout_hold;
-    for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: BITEN
-        assign ic_tag_wren_biten_vec[(26*i)+25:26*i] = {26{ic_tag_wren_q[i]}};
-     end
-      if (pt.ICACHE_TAG_DEPTH == 32)   begin : size_32
-        if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(32,104)
-        end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(32,52)
-        end // block: WAYS
-      end // if (pt.ICACHE_TAG_DEPTH == 32
-
-      if (pt.ICACHE_TAG_DEPTH == 64)   begin : size_64
-        if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(64,104)
-        end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(64,52)
-        end // block: WAYS
-      end // block: size_64
-
-      if (pt.ICACHE_TAG_DEPTH == 128)   begin : size_128
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(128,104)
-      end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(128,52)
-      end // block: WAYS
-
-      end // block: size_128
-
-      if (pt.ICACHE_TAG_DEPTH == 256)   begin : size_256
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(256,104)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(256,52)
-        end // block: WAYS
-      end // block: size_256
-
-      if (pt.ICACHE_TAG_DEPTH == 512)   begin : size_512
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(512,104)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(512,52)
-        end // block: WAYS
-      end // block: size_512
-
-      if (pt.ICACHE_TAG_DEPTH == 1024)   begin : size_1024
-         if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(1024,104)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(1024,52)
-        end // block: WAYS
-      end // block: size_1024
-
-      if (pt.ICACHE_TAG_DEPTH == 2048)   begin : size_2048
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(2048,104)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(2048,52)
-        end // block: WAYS
-      end // block: size_2048
-
-      if (pt.ICACHE_TAG_DEPTH == 4096)   begin  : size_4096
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(4096,104)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(4096,52)
-        end // block: WAYS
-      end // block: size_4096
-
-        for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin
-          assign ic_tag_data_raw[i]  = ic_tag_data_raw_packed[(26*i)+25:26*i];
-          assign w_tout[i][31:pt.ICACHE_TAG_LO] = ic_tag_data_raw[i][31-pt.ICACHE_TAG_LO:0] ;
-          assign w_tout[i][36:32]              = ic_tag_data_raw[i][25:21] ;
-          rvecc_decode  ecc_decode (
-                           .en(~dec_tlu_core_ecc_disable & ic_rd_en_ff),
-                           .sed_ded ( 1'b1 ),    // 1 : means only detection
-                           .din({11'b0,ic_tag_data_raw[i][20:0]}),
-                           .ecc_in({2'b0, ic_tag_data_raw[i][25:21]}),
-                           .dout(ic_tag_corrected_data_unc[i][31:0]),
-                           .ecc_out(ic_tag_corrected_ecc_unc[i][6:0]),
-                           .single_ecc_error(ic_tag_single_ecc_error[i]),
-                           .double_ecc_error(ic_tag_double_ecc_error[i]));
-
-          assign ic_tag_way_perr[i]= ic_tag_single_ecc_error[i] | ic_tag_double_ecc_error[i]  ;
-     end // for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++)
-
-   end // block: ECC1
-
-
-   else  begin : ECC0
-    logic [(22*pt.ICACHE_NUM_WAYS)-1 :0]  ic_tag_data_raw_packed, ic_tag_wren_biten_vec, ic_tag_data_raw_packed_pre;           // data and its bit enables
-    logic [pt.ICACHE_TAG_NUM_BYPASS-1:0][(22*pt.ICACHE_NUM_WAYS)-1 :0] wb_packeddout_hold;
-    for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin: BITEN
-        assign ic_tag_wren_biten_vec[(22*i)+21:22*i] = {22{ic_tag_wren_q[i]}};
-     end
-      if (pt.ICACHE_TAG_DEPTH == 32)   begin : size_32
-        if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(32,88)
-        end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(32,44)
-        end // block: WAYS
-      end // if (pt.ICACHE_TAG_DEPTH == 32
-
-      if (pt.ICACHE_TAG_DEPTH == 64)   begin : size_64
-        if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(64,88)
-        end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(64,44)
-        end // block: WAYS
-      end // block: size_64
-
-      if (pt.ICACHE_TAG_DEPTH == 128)   begin : size_128
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(128,88)
-      end // block: WAYS
-      else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(128,44)
-      end // block: WAYS
-
-      end // block: size_128
-
-      if (pt.ICACHE_TAG_DEPTH == 256)   begin : size_256
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(256,88)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(256,44)
-        end // block: WAYS
-      end // block: size_256
-
-      if (pt.ICACHE_TAG_DEPTH == 512)   begin : size_512
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(512,88)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(512,44)
-        end // block: WAYS
-      end // block: size_512
-
-      if (pt.ICACHE_TAG_DEPTH == 1024)   begin : size_1024
-         if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(1024,88)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(1024,44)
-        end // block: WAYS
-      end // block: size_1024
-
-      if (pt.ICACHE_TAG_DEPTH == 2048)   begin : size_2048
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(2048,88)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(2048,44)
-        end // block: WAYS
-      end // block: size_2048
-
-      if (pt.ICACHE_TAG_DEPTH == 4096)   begin  : size_4096
-       if (pt.ICACHE_NUM_WAYS == 4) begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(4096,88)
-        end // block: WAYS
-       else begin : WAYS
-                 `eb1_IC_TAG_PACKED_SRAM(4096,44)
-        end // block: WAYS
-      end // block: size_4096
-
-      for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin
-          assign ic_tag_data_raw[i]  = ic_tag_data_raw_packed[(22*i)+21:22*i];
-          assign w_tout[i][31:pt.ICACHE_TAG_LO] = ic_tag_data_raw[i][31-pt.ICACHE_TAG_LO:0] ;
-          assign w_tout[i][32]                 = ic_tag_data_raw[i][21] ;
-          assign w_tout[i][36:33]              = '0 ;
-
-
-          rveven_paritycheck #(32-pt.ICACHE_TAG_LO) parcheck(.data_in   (w_tout[i][31:pt.ICACHE_TAG_LO]),
-                                                   .parity_in (w_tout[i][32]),
-                                                   .parity_err(ic_tag_way_perr[i]));
-      end
-
-
-   end // block: ECC0
- end // block: PACKED_1
-
-
-   always_comb begin : tag_rd_out
-      ictag_debug_rd_data[25:0] = '0;
-      for ( int j=0; j<pt.ICACHE_NUM_WAYS; j++) begin: debug_rd_out
-         ictag_debug_rd_data[25:0] |=  pt.ICACHE_ECC ? ({26{ic_debug_rd_way_en_ff[j]}} & ic_tag_data_raw[j] ) : {4'b0, ({22{ic_debug_rd_way_en_ff[j]}} & ic_tag_data_raw[j][21:0])};
-      end
-   end
-
-
-   for ( genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin : ic_rd_hit_loop
-      assign ic_rd_hit[i] = (w_tout[i][31:pt.ICACHE_TAG_LO] == ic_rw_addr_ff[31:pt.ICACHE_TAG_LO]) & ic_tag_valid[i];
-   end
-
-   assign  ic_tag_perr  = | (ic_tag_way_perr[pt.ICACHE_NUM_WAYS-1:0] & ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0] ) ;
-endmodule // eb1_IC_TAG
diff --git a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_iccm_mem.sv b/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_iccm_mem.sv
deleted file mode 100644
index 8b1bdf4..0000000
--- a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_iccm_mem.sv
+++ /dev/null
@@ -1,525 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Icache closely coupled memory --- ICCM
-//********************************************************************************
-
-module eb1_ifu_iccm_mem
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
- `ifdef USE_POWER_PINS
-   input logic 					vccd1,
-   input logic						vssd1,
- `endif
-   input logic                                        clk,                                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                                        active_clk,                          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                                        rst_l,                               // reset, active low
-   input logic                                        clk_override,                        // Override non-functional clock gating
-
-   input logic                                        iccm_wren,                           // ICCM write enable
-   input logic                                        iccm_rden,                           // ICCM read enable
-   input logic [pt.ICCM_BITS-1:1]                     iccm_rw_addr,                        // ICCM read/write address
-   input logic                                        iccm_buf_correct_ecc,                // ICCM is doing a single bit error correct cycle
-   input logic                                        iccm_correction_state,               // ICCM under a correction - This is needed to guard replacements when hit
-   input logic [2:0]                                  iccm_wr_size,                        // ICCM write size
-   input logic [77:0]                                 iccm_wr_data,                        // ICCM write data
-
-   input eb1_ccm_ext_in_pkt_t [pt.ICCM_NUM_BANKS-1:0] iccm_ext_in_pkt,                    // External packet
-
-   output logic [63:0]                                iccm_rd_data,                        // ICCM read data
-   output logic [77:0]                                iccm_rd_data_ecc,                    // ICCM read ecc
-   input  logic                                       scan_mode                            // Scan mode control
-
-);
-
-
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                wren_bank;
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                rden_bank;
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                iccm_clken;
-   logic [pt.ICCM_NUM_BANKS-1:0] [pt.ICCM_BITS-1:pt.ICCM_BANK_INDEX_LO] addr_bank;
-
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_dout, iccm_bank_dout_fn;
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_wr_data;
-   logic [pt.ICCM_BITS-1:1]              addr_bank_inc;
-   logic [pt.ICCM_BANK_HI : 2]           iccm_rd_addr_hi_q;
-   logic [pt.ICCM_BANK_HI : 1]           iccm_rd_addr_lo_q;
-   logic             [63:0]              iccm_rd_data_pre;
-   logic             [63:0]              iccm_data;
-   logic [1:0]                           addr_incr;
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_wr_data_vec;
-
-   // logic to handle hard persisten faults
-   logic [1:0] [pt.ICCM_BITS-1:2]        redundant_address;
-   logic [1:0] [38:0]                    redundant_data;
-   logic [1:0]                           redundant_valid;
-   logic [pt.ICCM_NUM_BANKS-1:0]         sel_red1, sel_red0, sel_red1_q, sel_red0_q;
-
-
-   logic [38:0]                          redundant_data0_in, redundant_data1_in;
-   logic                                 redundant_lru, redundant_lru_in, redundant_lru_en;
-   logic                                 redundant_data0_en;
-   logic                                 redundant_data1_en;
-   logic                                 r0_addr_en, r1_addr_en;
-
-   // Testing persistent flip
-   //   logic [3:0]                              not_iccm_bank_dout;
-   //   logic [15:3]                     ecc_insert_flip_in, ecc_insert_flip;
-   //   logic                                 flip_en, flip_match, flip_match_q;
-   //
-   //   assign      flip_in = (iccm_rw_addr[3:2] != 2'b00);    // dont flip when bank0 - this is to make some progress in DMA streaming cases
-   //   assign      flip_en = iccm_rden;
-   //
-   //   rvdffs #(1) flipmatch  (.*,
-   //                   .clk(clk),
-   //                   .din(flip_in),
-   //                   .en(flip_en),
-   //                   .dout(flip_match_q));
-   //
-   // end of testing flip
-
-
-   assign addr_incr[1:0]                    = (iccm_wr_size[1:0] == 2'b11) ?  2'b10: 2'b01;
-   assign addr_bank_inc[pt.ICCM_BITS-1 : 1] = iccm_rw_addr[pt.ICCM_BITS-1 : 1] + addr_incr[1:0];
-
-   for (genvar i=0; i<pt.ICCM_NUM_BANKS/2; i++) begin: mem_bank_data
-      assign iccm_bank_wr_data_vec[(2*i)]   = iccm_wr_data[38:0];
-      assign iccm_bank_wr_data_vec[(2*i)+1] = iccm_wr_data[77:39];
-   end
-
-   for (genvar i=0; i<pt.ICCM_NUM_BANKS; i++) begin: mem_bank
-      assign wren_bank[i]         = iccm_wren & ((iccm_rw_addr[pt.ICCM_BANK_HI:2] == i) | (addr_bank_inc[pt.ICCM_BANK_HI:2] == i));
-      assign iccm_bank_wr_data[i] = iccm_bank_wr_data_vec[i];
-      assign rden_bank[i]         = iccm_rden & ( (iccm_rw_addr[pt.ICCM_BANK_HI:2] == i) | (addr_bank_inc[pt.ICCM_BANK_HI:2] == i));
-      assign iccm_clken[i]        =  wren_bank[i] | rden_bank[i] | clk_override;
-      assign addr_bank[i][pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] = wren_bank[i] ? iccm_rw_addr[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] :
-                                                                                      ((addr_bank_inc[pt.ICCM_BANK_HI:2] == i) ?
-                                                                                                    addr_bank_inc[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] :
-                                                                                                    iccm_rw_addr[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO]);
- `ifdef VERILATOR
-
-    /*eb1_ram #(.depth(1<<pt.ICCM_INDEX_BITS), .width(39)) iccm_bank (
-                                     // Primary ports
-                                     .ME(iccm_clken[i]),
-                                     .CLK(clk),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );*/
-                                      sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~iccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(iccm_bank_wr_data[i]),
-									.dout0(iccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-  					);
-                                    
- `else
-
-     if (pt.ICCM_INDEX_BITS == 6 ) begin : iccm
-               ram_64x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-
-   else if (pt.ICCM_INDEX_BITS == 7 ) begin : iccm
-               ram_128x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-
-     else if (pt.ICCM_INDEX_BITS == 8 ) begin : iccm
-               /*ram_256x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );*/
-                                      sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~iccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(iccm_bank_wr_data[i][31:0]),
-									.dout0(iccm_bank_dout[i][31:0]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-  					);
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 9 ) begin : iccm
-               ram_512x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 10 ) begin : iccm
-              /* ram_1024x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-                                     );*/
-                                     
-                                     sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~iccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(iccm_bank_wr_data[i]),
-									.dout0(iccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-  					);
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 11 ) begin : iccm
-               ram_2048x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 12 ) begin : iccm
-               ram_4096x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 13 ) begin : iccm
-               ram_8192x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 14 ) begin : iccm
-               ram_16384x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else begin : iccm
-               ram_32768x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-`endif
-
-   // match the redundant rows
-   assign sel_red1[i]  = (redundant_valid[1]  & (((iccm_rw_addr[pt.ICCM_BITS-1:2] == redundant_address[1][pt.ICCM_BITS-1:2]) & (iccm_rw_addr[3:2] == i)) |
-                                                 ((addr_bank_inc[pt.ICCM_BITS-1:2]== redundant_address[1][pt.ICCM_BITS-1:2]) & (addr_bank_inc[3:2] == i))));
-
-   assign sel_red0[i]  = (redundant_valid[0]  & (((iccm_rw_addr[pt.ICCM_BITS-1:2] == redundant_address[0][pt.ICCM_BITS-1:2]) & (iccm_rw_addr[3:2] == i)) |
-                                                 ((addr_bank_inc[pt.ICCM_BITS-1:2]== redundant_address[0][pt.ICCM_BITS-1:2]) & (addr_bank_inc[3:2] == i))));
-
-   rvdff #(1) selred0  (.*,
-                   .clk(active_clk),
-                   .din(sel_red0[i]),
-                   .dout(sel_red0_q[i]));
-
-   rvdff #(1) selred1  (.*,
-                   .clk(active_clk),
-                   .din(sel_red1[i]),
-                   .dout(sel_red1_q[i]));
-
-
-  // muxing out the memory data with the redundant data if the address matches
-   assign iccm_bank_dout_fn[i][38:0] = ({39{sel_red1_q[i]}}                         & redundant_data[1][38:0]) |
-                                       ({39{sel_red0_q[i]}}                         & redundant_data[0][38:0]) |
-                                       ({39{~sel_red0_q[i] & ~sel_red1_q[i]}}       & iccm_bank_dout[i][38:0]);
-
-  end : mem_bank
-// This section does the redundancy for tolerating single bit errors
-// 2x 39 bit data values with address[hi:2] and a valid bit is needed to CAM and sub out the reads/writes to the particular locations
-// Also a LRU flop is kept to decide which of the redundant element to replace.
-   assign r0_addr_en              = ~redundant_lru & iccm_buf_correct_ecc;
-   assign r1_addr_en              = redundant_lru  & iccm_buf_correct_ecc;
-   assign redundant_lru_en         = iccm_buf_correct_ecc | (((|sel_red0[pt.ICCM_NUM_BANKS-1:0]) | (|sel_red1[pt.ICCM_NUM_BANKS-1:0])) & iccm_rden & iccm_correction_state);
-   assign redundant_lru_in        = iccm_buf_correct_ecc ? ~redundant_lru : (|sel_red0[pt.ICCM_NUM_BANKS-1:0]) ? 1'b1 : 1'b0;
-
-   rvdffs #() red_lru  (.*,                               // LRU flop for the redundant replacements
-                   .clk(active_clk),
-                   .en(redundant_lru_en),
-                   .din(redundant_lru_in),
-                   .dout(redundant_lru));
-
-    rvdffs #(pt.ICCM_BITS-2) r0_address  (.*,                 // Redundant Row 0 address
-                   .clk(active_clk),
-                   .en(r0_addr_en),
-                   .din(iccm_rw_addr[pt.ICCM_BITS-1:2]),
-                   .dout(redundant_address[0][pt.ICCM_BITS-1:2]));
-
-   rvdffs #(pt.ICCM_BITS-2) r1_address  (.*,                   // Redundant Row 0 address
-                   .clk(active_clk),
-                   .en(r1_addr_en),
-                   .din(iccm_rw_addr[pt.ICCM_BITS-1:2]),
-                   .dout(redundant_address[1][pt.ICCM_BITS-1:2]));
-
-    rvdffs #(1) r0_valid  (.*,
-                   .clk(active_clk),                                  // Redundant Row 0 Valid
-                   .en(r0_addr_en),
-                   .din(1'b1),
-                   .dout(redundant_valid[0]));
-
-   rvdffs #(1) r1_valid  (.*,                                   // Redundant Row 1 Valid
-                   .clk(active_clk),
-                   .en(r1_addr_en),
-                   .din(1'b1),
-                   .dout(redundant_valid[1]));
-
-
-
-   // We will have to update the Redundant copies in addition to the memory on subsequent writes to this memory location.
-   // The data gets updated on : 1) correction cycle, 2) Future writes - this could be W writes from DMA ( match up till addr[2]) or DW writes ( match till address[3])
-   // The data to pick also depends on the current address[2], size and the addr[2] stored in the address field of the redundant flop. Correction cycle is always W write and the data is splat on both legs, so choosing lower Word
-
-    assign redundant_data0_en      = ((iccm_rw_addr[pt.ICCM_BITS-1:3] == redundant_address[0][pt.ICCM_BITS-1:3]) & ((iccm_rw_addr[2] == redundant_address[0][2]) | (iccm_wr_size[1:0] == 2'b11)) & redundant_valid[0] & iccm_wren) |
-                                      (~redundant_lru & iccm_buf_correct_ecc);
-
-    assign redundant_data0_in[38:0] = (((iccm_rw_addr[2] == redundant_address[0][2]) & iccm_rw_addr[2]) | (redundant_address[0][2] & (iccm_wr_size[1:0] == 2'b11))) ? iccm_wr_data[77:39]  : iccm_wr_data[38:0];
-
-    rvdffs #(39) r0_data  (.*,                                 // Redundant Row 1 data
-                   .clk(active_clk),
-                   .en(redundant_data0_en),
-                   .din(redundant_data0_in[38:0]),
-                   .dout(redundant_data[0][38:0]));
-
-   assign redundant_data1_en      =  ((iccm_rw_addr[pt.ICCM_BITS-1:3] == redundant_address[1][pt.ICCM_BITS-1:3]) & ((iccm_rw_addr[2] == redundant_address[1][2]) | (iccm_wr_size[1:0] == 2'b11)) & redundant_valid[1] & iccm_wren) |
-                                     (redundant_lru & iccm_buf_correct_ecc);
-
-   assign redundant_data1_in[38:0] = (((iccm_rw_addr[2] == redundant_address[1][2]) & iccm_rw_addr[2]) | (redundant_address[1][2] & (iccm_wr_size[1:0] == 2'b11))) ? iccm_wr_data[77:39]  : iccm_wr_data[38:0];
-
-    rvdffs #(39) r1_data  (.*,                                  // Redundant Row 1 data
-                   .clk(active_clk),
-                   .en(redundant_data1_en),
-                   .din(redundant_data1_in[38:0]),
-                   .dout(redundant_data[1][38:0]));
-
-
-   rvdffs  #(pt.ICCM_BANK_HI)   rd_addr_lo_ff (.*, .clk(active_clk), .din(iccm_rw_addr [pt.ICCM_BANK_HI:1]), .dout(iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:1]), .en(1'b1));   // bit 0 of address is always 0
-   rvdffs  #(pt.ICCM_BANK_BITS) rd_addr_hi_ff (.*, .clk(active_clk), .din(addr_bank_inc[pt.ICCM_BANK_HI:2]), .dout(iccm_rd_addr_hi_q[pt.ICCM_BANK_HI:2]), .en(1'b1));
-
-   assign iccm_rd_data_pre[63:0] = {iccm_bank_dout_fn[iccm_rd_addr_hi_q][31:0], iccm_bank_dout_fn[iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:2]][31:0]};
-   assign iccm_data[63:0]        = 64'({16'b0, (iccm_rd_data_pre[63:0] >> (16*iccm_rd_addr_lo_q[1]))});
-   assign iccm_rd_data[63:0]     = {iccm_data[63:0]};
-   assign iccm_rd_data_ecc[77:0] = {iccm_bank_dout_fn[iccm_rd_addr_hi_q][38:0], iccm_bank_dout_fn[iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:2]][38:0]};
-
-endmodule // eb1_ifu_iccm_mem
diff --git a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_ifc_ctl.sv b/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_ifc_ctl.sv
deleted file mode 100644
index d5f59a8..0000000
--- a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_ifc_ctl.sv
+++ /dev/null
@@ -1,246 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// eb1_ifu_ifc_ctl.sv
-// Function: Fetch pipe control
-//
-// Comments:
-//********************************************************************************
-
-module eb1_ifu_ifc_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic clk,                         // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic free_l2clk,                  // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic rst_l, // reset enable, from core pin
-   input logic scan_mode, // scan
-
-   input logic ic_hit_f,      // Icache hit
-   input logic ifu_ic_mb_empty, // Miss buffer empty
-
-   input logic ifu_fb_consume1,  // Aligner consumed 1 fetch buffer
-   input logic ifu_fb_consume2,  // Aligner consumed 2 fetch buffers
-
-   input logic dec_tlu_flush_noredir_wb, // Don't fetch on flush
-   input logic exu_flush_final, // FLush
-   input logic [31:1] exu_flush_path_final, // Flush path
-
-   input logic ifu_bp_hit_taken_f, // btb hit, select the target path
-   input logic [31:1] ifu_bp_btb_target_f, //  predicted target PC
-
-   input logic ic_dma_active, // IC DMA active, stop fetching
-   input logic ic_write_stall, // IC is writing, stop fetching
-   input logic dma_iccm_stall_any, // force a stall in the fetch pipe for DMA ICCM access
-
-   input logic [31:0]  dec_tlu_mrac_ff ,   // side_effect and cacheable for each region
-
-   output logic [31:1] ifc_fetch_addr_f, // fetch addr F
-   output logic [31:1] ifc_fetch_addr_bf, // fetch addr BF
-
-   output logic  ifc_fetch_req_f,  // fetch request valid F
-
-   output logic  ifu_pmu_fetch_stall, // pmu event measuring fetch stall
-
-   output logic                       ifc_fetch_uncacheable_bf,      // The fetch request is uncacheable space. BF stage
-   output logic                      ifc_fetch_req_bf,              // Fetch request. Comes with the address.  BF stage
-   output logic                       ifc_fetch_req_bf_raw,          // Fetch request without some qualifications. Used for clock-gating. BF stage
-   output logic                       ifc_iccm_access_bf,            // This request is to the ICCM. Do not generate misses to the bus.
-   output logic                       ifc_region_acc_fault_bf,       // Access fault. in ICCM region but offset is outside defined ICCM.
-
-   output logic  ifc_dma_access_ok // fetch is not accessing the ICCM, DMA can proceed
-
-   
-
-   );
-
-   logic [31:1]  fetch_addr_bf;
-   logic [31:1]  fetch_addr_next;
-   logic [3:0]   fb_write_f, fb_write_ns;
-
-   logic     fb_full_f_ns, fb_full_f;
-   logic     fb_right, fb_right2, fb_left, wfm, idle;
-   logic     sel_last_addr_bf, sel_next_addr_bf;
-   logic     miss_f, miss_a;
-   logic     flush_fb, dma_iccm_stall_any_f;
-   logic     mb_empty_mod, goto_idle, leave_idle;
-   logic     fetch_bf_en;
-   logic         line_wrap;
-   logic         fetch_addr_next_1;
-
-   // FSM assignment
-    typedef enum logic [1:0] { IDLE  = 2'b00 ,
-                               FETCH = 2'b01 ,
-                               STALL = 2'b10 ,
-                               WFM   = 2'b11   } state_t ;
-   state_t state      ;
-   state_t next_state ;
-
-   logic     dma_stall;
-   assign dma_stall = ic_dma_active | dma_iccm_stall_any_f;
-
-
-
-   // Fetch address mux
-   // - flush
-   // - Miss *or* flush during WFM (icache miss buffer is blocking)
-   // - Sequential
-
-if(pt.BTB_ENABLE==1) begin
-   logic sel_btb_addr_bf;
-
-   assign sel_last_addr_bf = ~exu_flush_final & (~ifc_fetch_req_f | ~ic_hit_f);
-   assign sel_btb_addr_bf  = ~exu_flush_final & ifc_fetch_req_f & ifu_bp_hit_taken_f & ic_hit_f;
-   assign sel_next_addr_bf = ~exu_flush_final & ifc_fetch_req_f & ~ifu_bp_hit_taken_f & ic_hit_f;
-
-
-   assign fetch_addr_bf[31:1] = ( ({31{exu_flush_final}} &  exu_flush_path_final[31:1]) | // FLUSH path
-                  ({31{sel_last_addr_bf}} & ifc_fetch_addr_f[31:1]) | // MISS path
-                  ({31{sel_btb_addr_bf}} & {ifu_bp_btb_target_f[31:1]})| // BTB target
-                  ({31{sel_next_addr_bf}} & {fetch_addr_next[31:1]})); // SEQ path
-
-
-end // if (pt.BTB_ENABLE=1)
-   else begin
-   assign sel_last_addr_bf = ~exu_flush_final & (~ifc_fetch_req_f | ~ic_hit_f);
-   assign sel_next_addr_bf = ~exu_flush_final & ifc_fetch_req_f & ic_hit_f;
-
-
-   assign fetch_addr_bf[31:1] = ( ({31{exu_flush_final}} &  exu_flush_path_final[31:1]) | // FLUSH path
-                  ({31{sel_last_addr_bf}} & ifc_fetch_addr_f[31:1]) | // MISS path
-                  ({31{sel_next_addr_bf}} & {fetch_addr_next[31:1]})); // SEQ path
-
-end
-   assign fetch_addr_next[31:1] = {({ifc_fetch_addr_f[31:2]} + 31'b1), fetch_addr_next_1 };
-   assign line_wrap = (fetch_addr_next[pt.ICACHE_TAG_INDEX_LO] ^ ifc_fetch_addr_f[pt.ICACHE_TAG_INDEX_LO]);
-
-   assign fetch_addr_next_1 = line_wrap ? 1'b0 : ifc_fetch_addr_f[1];
-
-   assign ifc_fetch_req_bf_raw = ~idle;
-   assign ifc_fetch_req_bf =  ifc_fetch_req_bf_raw &
-
-                 ~(fb_full_f_ns & ~(ifu_fb_consume2 | ifu_fb_consume1)) &
-                 ~dma_stall &
-                 ~ic_write_stall &
-                 ~dec_tlu_flush_noredir_wb ;
-
-
-   assign fetch_bf_en = exu_flush_final | ifc_fetch_req_f;
-
-   assign miss_f = ifc_fetch_req_f & ~ic_hit_f & ~exu_flush_final;
-
-   assign mb_empty_mod = (ifu_ic_mb_empty | exu_flush_final) & ~dma_stall & ~miss_f & ~miss_a;
-
-   // Halt flushes and takes us to IDLE
-   assign goto_idle = exu_flush_final & dec_tlu_flush_noredir_wb;
-   // If we're in IDLE, and we get a flush, goto FETCH
-   assign leave_idle = exu_flush_final & ~dec_tlu_flush_noredir_wb & idle;
-
-//.i 7
-//.o 2
-//.ilb state[1] state[0] reset_delayed miss_f mb_empty_mod  goto_idle leave_idle
-//.ob next_state[1] next_state[0]
-//.type fr
-//
-//# fetch 01, stall 10, wfm 11, idle 00
-//-- 1---- 01
-//-- 0--1- 00
-//00 0--00 00
-//00 0--01 01
-//
-//01 01-0- 11
-//01 00-0- 01
-//
-//11 0-10- 01
-//11 0-00- 11
-
-   assign next_state[1] = (~state[1] & state[0] & miss_f & ~goto_idle) |
-              (state[1] & ~mb_empty_mod & ~goto_idle);
-
-   assign next_state[0] = (~goto_idle & leave_idle) | (state[0] & ~goto_idle);
-
-   assign flush_fb = exu_flush_final;
-
-   // model fb write logic to mass balance the fetch buffers
-   assign fb_right = ( ifu_fb_consume1 & ~ifu_fb_consume2 & (~ifc_fetch_req_f | miss_f)) | // Consumed and no new fetch
-              (ifu_fb_consume2 &  ifc_fetch_req_f); // Consumed 2 and new fetch
-
-
-   assign fb_right2 = (ifu_fb_consume2 & (~ifc_fetch_req_f | miss_f)); // Consumed 2 and no new fetch
-
-   assign fb_left = ifc_fetch_req_f & ~(ifu_fb_consume1 | ifu_fb_consume2) & ~miss_f;
-
-// CBH
-   assign fb_write_ns[3:0] = ( ({4{(flush_fb)}} & 4'b0001) |
-                   ({4{~flush_fb & fb_right }} & {1'b0, fb_write_f[3:1]}) |
-                   ({4{~flush_fb & fb_right2}} & {2'b0, fb_write_f[3:2]}) |
-                   ({4{~flush_fb & fb_left  }} & {fb_write_f[2:0], 1'b0}) |
-                   ({4{~flush_fb & ~fb_right & ~fb_right2 & ~fb_left}}  & fb_write_f[3:0]));
-
-
-   assign fb_full_f_ns = fb_write_ns[3];
-
-   assign idle     = state      == IDLE  ;
-   assign wfm      = state      == WFM   ;
-
-   rvdffie #(10) fbwrite_ff (.*, .clk(free_l2clk),
-                          .din( {dma_iccm_stall_any, miss_f, ifc_fetch_req_bf, next_state[1:0], fb_full_f_ns, fb_write_ns[3:0]}),
-                          .dout({dma_iccm_stall_any_f, miss_a, ifc_fetch_req_f, state[1:0], fb_full_f, fb_write_f[3:0]}));
-
-   assign ifu_pmu_fetch_stall = wfm | 
-                (ifc_fetch_req_bf_raw & ( (fb_full_f & ~(ifu_fb_consume2 | ifu_fb_consume1 | exu_flush_final)) |
-                  dma_stall));
-
-
-
-   assign ifc_fetch_addr_bf[31:1] = fetch_addr_bf[31:1];
-
-   rvdffpcie #(31) faddrf1_ff  (.*, .en(fetch_bf_en), .din(fetch_addr_bf[31:1]), .dout(ifc_fetch_addr_f[31:1]));
-
-
- if (pt.ICCM_ENABLE)  begin
-   logic iccm_acc_in_region_bf;
-   logic iccm_acc_in_range_bf;
-   rvrangecheck #( .CCM_SADR    (pt.ICCM_SADR),
-                   .CCM_SIZE    (pt.ICCM_SIZE) ) iccm_rangecheck (
-                                     .addr     ({ifc_fetch_addr_bf[31:1],1'b0}) ,
-                                     .in_range (iccm_acc_in_range_bf) ,
-                                     .in_region(iccm_acc_in_region_bf)
-                                     );
-
-   assign ifc_iccm_access_bf = iccm_acc_in_range_bf ;
-
-  assign ifc_dma_access_ok = ( (~ifc_iccm_access_bf |
-                 (fb_full_f & ~(ifu_fb_consume2 | ifu_fb_consume1)) |
-                 (wfm  & ~ifc_fetch_req_bf) |
-                 idle ) & ~exu_flush_final) |
-                  dma_iccm_stall_any_f;
-
-  assign ifc_region_acc_fault_bf = ~iccm_acc_in_range_bf & iccm_acc_in_region_bf ;
- end
- else  begin
-   assign ifc_iccm_access_bf = 1'b0 ;
-   assign ifc_dma_access_ok  = 1'b0 ;
-   assign ifc_region_acc_fault_bf  = 1'b0 ;
- end
-
-   assign ifc_fetch_uncacheable_bf =  ~dec_tlu_mrac_ff[{ifc_fetch_addr_bf[31:28] , 1'b0 }]  ; // bit 0 of each region description is the cacheable bit
-
-endmodule // eb1_ifu_ifc_ctl
-
diff --git a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_mem_ctl.sv b/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_mem_ctl.sv
deleted file mode 100644
index 77c9ebd..0000000
--- a/verilog/rtl/BrqRV_EB1/design/ifu/eb1_ifu_mem_ctl.sv
+++ /dev/null
@@ -1,1672 +0,0 @@
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-
-//********************************************************************************
-// Function: Icache , iccm  control
-// BFF -> F1 -> F2 -> A
-//********************************************************************************
-
-module eb1_ifu_mem_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic clk,                                                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic active_clk,                                          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic free_l2clk,                                          // Clock always.                  Through one clock header.  For flops with    second header built in.
-   input logic rst_l,                                               // reset, active low
-
-   input logic                       exu_flush_final,               // Flush from the pipeline., includes flush lower
-   input logic                       dec_tlu_flush_lower_wb,        // Flush lower from the pipeline.
-   input logic                       dec_tlu_flush_err_wb,          // Flush from the pipeline due to perr.
-   input logic                       dec_tlu_i0_commit_cmt,         // committed i0 instruction
-   input logic                       dec_tlu_force_halt,            // force halt.
-
-   input logic [31:1]                ifc_fetch_addr_bf,             // Fetch Address byte aligned always.      F1 stage.
-   input logic                       ifc_fetch_uncacheable_bf,      // The fetch request is uncacheable space. F1 stage
-   input logic                       ifc_fetch_req_bf,              // Fetch request. Comes with the address.  F1 stage
-   input logic                       ifc_fetch_req_bf_raw,          // Fetch request without some qualifications. Used for clock-gating. F1 stage
-   input logic                       ifc_iccm_access_bf,            // This request is to the ICCM. Do not generate misses to the bus.
-   input logic                       ifc_region_acc_fault_bf,       // Access fault. in ICCM region but offset is outside defined ICCM.
-   input logic                       ifc_dma_access_ok,             // It is OK to give dma access to the ICCM. (ICCM is not busy this cycle).
-   input logic                       dec_tlu_fence_i_wb,            // Fence.i instruction is committing. Clear all Icache valids.
-   input logic                       ifu_bp_hit_taken_f,            // Branch is predicted taken. Kill the fetch next cycle.
-
-   input logic                       ifu_bp_inst_mask_f,            // tell ic which valids to kill because of a taken branch, right justified
-
-   output logic                      ifu_miss_state_idle,           // No icache misses are outstanding.
-   output logic                      ifu_ic_mb_empty,               // Continue with normal fetching. This does not mean that miss is finished.
-   output logic                      ic_dma_active  ,               // In the middle of servicing dma request to ICCM. Do not make any new requests.
-   output logic                      ic_write_stall,                // Stall fetch the cycle we are writing the cache.
-
-/// PMU signals
-   output logic                      ifu_pmu_ic_miss,               // IC miss event
-   output logic                      ifu_pmu_ic_hit,                // IC hit event
-   output logic                      ifu_pmu_bus_error,             // Bus error event
-   output logic                      ifu_pmu_bus_busy,              // Bus busy event
-   output logic                      ifu_pmu_bus_trxn,              // Bus transaction
-
-  //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   output logic                            ifu_axi_bready,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-
-    input  logic                     ifu_bus_clk_en,
-
-
-   input  logic                      dma_iccm_req,      //  dma iccm command (read or write)
-   input  logic [31:0]               dma_mem_addr,      //  dma address
-   input  logic [2:0]                dma_mem_sz,        //  size
-   input  logic                      dma_mem_write,     //  write
-   input  logic [63:0]               dma_mem_wdata,     //  write data
-   input  logic [2:0]                dma_mem_tag,       //  DMA Buffer entry number
-
-   output logic                      iccm_dma_ecc_error,//   Data read from iccm has an ecc error
-   output logic                      iccm_dma_rvalid,   //   Data read from iccm is valid
-   output logic [63:0]               iccm_dma_rdata,    //   dma data read from iccm
-   output logic [2:0]                iccm_dma_rtag,     //   Tag of the DMA req
-   output logic                      iccm_ready,        //   iccm ready to accept new command.
-
-
-//   I$ & ITAG Ports
-   output logic [31:1]               ic_rw_addr,         // Read/Write addresss to the Icache.
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_wr_en,           // Icache write enable, when filling the Icache.
-   output logic                      ic_rd_en,           // Icache read  enable.
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0] [70:0]               ic_wr_data,           // Data to fill to the Icache. With ECC
-   input  logic [63:0]               ic_rd_data ,          // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]               ic_debug_rd_data ,          // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]               ictag_debug_rd_data,  // Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,     // Debug wr cache.
-   output logic [70:0]               ifu_ic_debug_rd_data, // debug data read
-
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    //
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_tag_valid,       // Valid bits when accessing the Icache. One valid bit per way. F2 stage
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_rd_hit,          // Compare hits from Icache tags. Per way.  F2 stage
-   input  logic                      ic_tag_perr,        // Icache Tag parity error
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]  iccm_rw_addr,       // ICCM read/write address.
-   output logic                      iccm_wren,          // ICCM write enable (through the DMA)
-   output logic                      iccm_rden,          // ICCM read enable.
-   output logic [77:0]               iccm_wr_data,       // ICCM write data.
-   output logic [2:0]                iccm_wr_size,       // ICCM write location within DW.
-
-   input  logic [63:0]               iccm_rd_data,       // Data read from ICCM.
-   input  logic [77:0]               iccm_rd_data_ecc,   // Data + ECC read from ICCM.
-   input  logic [1:0]                ifu_fetch_val,
-   // IFU control signals
-   output logic                      ic_hit_f,               // Hit in Icache(if Icache access) or ICCM access( ICCM always has ic_hit_f)
-   output logic [1:0]                ic_access_fault_f,      // Access fault (bus error or ICCM access in region but out of offset range).
-   output logic [1:0]                ic_access_fault_type_f, // Access fault types
-   output logic                      iccm_rd_ecc_single_err, // This fetch has a single ICCM ecc  error.
-   output logic [1:0]                iccm_rd_ecc_double_err, // This fetch has a double ICCM ecc  error.
-   output logic                      ic_error_start,         // This has any I$ errors ( data/tag/ecc/parity )
-
-   output logic                      ifu_async_error_start,  // Or of the sb iccm, and all the icache errors sent to aligner to stop
-   output logic                      iccm_dma_sb_error,      // Single Bit ECC error from a DMA access
-   output logic [1:0]                ic_fetch_val_f,         // valid bytes for fetch. To the Aligner.
-   output logic [31:0]               ic_data_f,              // Data read from Icache or ICCM. To the Aligner.
-   output logic [63:0]               ic_premux_data,         // Premuxed data to be muxed with Icache data
-   output logic                      ic_sel_premux_data,     // Select premux data.
-
-/////  Debug
-   input  eb1_cache_debug_pkt_t     dec_tlu_ic_diag_pkt ,       // Icache/tag debug read/write packet
-   input  logic                      dec_tlu_core_ecc_disable,   // disable the ecc checking and flagging
-   output logic                      ifu_ic_debug_rd_data_valid, // debug data valid.
-   output logic                      iccm_buf_correct_ecc,
-   output logic                      iccm_correction_state,
-
-
-   input  logic         scan_mode
-   );
-
-//  Create different defines for ICACHE and ICCM enable combinations
-
- localparam   NUM_OF_BEATS = 8 ;
-
-
-
-   logic [31:3]    ifu_ic_req_addr_f;
-   logic           uncacheable_miss_in ;
-   logic           uncacheable_miss_ff;
-
-
-
-   logic           bus_ifu_wr_en     ;
-   logic           bus_ifu_wr_en_ff  ;
-   logic           bus_ifu_wr_en_ff_q  ;
-   logic           bus_ifu_wr_en_ff_wo_err  ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     bus_ic_wr_en ;
-
-   logic           reset_tag_valid_for_miss  ;
-
-
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_mb_in;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_rep_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_mb_ff;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_hit_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_new_w_debug;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     tagv_mb_in;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     tagv_mb_ff;
-
-
-   logic           ifu_wr_data_comb_err ;
-   logic           ifu_byp_data_err_new;
-   logic  [1:0]    ifu_byp_data_err_f;
-   logic           ifu_wr_cumulative_err_data;
-   logic           ifu_wr_cumulative_err;
-   logic           ifu_wr_data_comb_err_ff;
-   logic           scnd_miss_index_match ;
-
-
-   logic           ifc_dma_access_q_ok;
-   logic           ifc_iccm_access_f ;
-   logic           ifc_region_acc_fault_f;
-   logic           ifc_region_acc_fault_final_f;
-   logic  [1:0]    ifc_bus_acc_fault_f;
-   logic           ic_act_miss_f;
-   logic           ic_miss_under_miss_f;
-   logic           ic_ignore_2nd_miss_f;
-   logic           ic_act_hit_f;
-   logic           miss_pending;
-   logic [31:1]    imb_in , imb_ff  ;
-   logic [31:pt.ICACHE_BEAT_ADDR_HI+1]    miss_addr_in , miss_addr  ;
-   logic           miss_wrap_f ;
-   logic           flush_final_f;
-   logic           ifc_fetch_req_f;
-   logic           ifc_fetch_req_f_raw;
-   logic           fetch_req_f_qual   ;
-   logic           ifc_fetch_req_qual_bf ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     replace_way_mb_any;
-   logic           last_beat;
-   logic           reset_beat_cnt  ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]     ic_req_addr_bits_hi_3 ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]     ic_wr_addr_bits_hi_3 ;
-   logic [31:1]    ifu_fetch_addr_int_f ;
-   logic [31:1]    ifu_ic_rw_int_addr ;
-   logic           crit_wd_byp_ok_ff ;
-   logic           ic_crit_wd_rdy_new_ff;
-   logic   [79:0]  ic_byp_data_only_pre_new;
-   logic   [79:0]  ic_byp_data_only_new;
-   logic           ic_byp_hit_f ;
-   logic           ic_valid ;
-   logic           ic_valid_ff;
-   logic           reset_all_tags;
-   logic           ic_valid_w_debug;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ifu_tag_wren,ifu_tag_wren_ff;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ic_debug_tag_wr_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ifu_tag_wren_w_debug;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ic_debug_way_ff;
-   logic           ic_debug_rd_en_ff   ;
-   logic           fetch_bf_f_c1_clken ;
-   logic           fetch_bf_f_c1_clk;
-   logic           debug_c1_clken;
-   logic           debug_c1_clk;
-
-   logic           reset_ic_in ;
-   logic           reset_ic_ff ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:1]     vaddr_f ;
-   logic [31:1]    ifu_status_wr_addr;
-   logic           sel_mb_addr ;
-   logic           sel_mb_addr_ff ;
-   logic           sel_mb_status_addr ;
-   logic [63:0]    ic_final_data;
-
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_ic_rw_int_addr_ff ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_status_wr_addr_ff ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_ic_rw_int_addr_w_debug ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_status_wr_addr_w_debug ;
-
-   logic [pt.ICACHE_STATUS_BITS-1:0]                              way_status_new_ff ;
-   logic                                    way_status_wr_en_ff ;
-   logic [pt.ICACHE_TAG_DEPTH-1:0][pt.ICACHE_STATUS_BITS-1:0]        way_status_out ;
-   logic [1:0]                              ic_debug_way_enc;
-
-   logic [pt.IFU_BUS_TAG-1:0]             ifu_bus_rid_ff;
-
-   logic         fetch_req_icache_f;
-   logic         fetch_req_iccm_f;
-   logic         ic_iccm_hit_f;
-   logic         fetch_uncacheable_ff;
-   logic         way_status_wr_en;
-   logic         sel_byp_data;
-   logic         sel_ic_data;
-   logic         sel_iccm_data;
-   logic         ic_rd_parity_final_err;
-   logic         ic_act_miss_f_delayed;
-   logic         bus_ifu_wr_data_error;
-   logic         bus_ifu_wr_data_error_ff;
-   logic         way_status_wr_en_w_debug;
-   logic         ic_debug_tag_val_rd_out;
-   logic         ifu_pmu_ic_miss_in;
-   logic         ifu_pmu_ic_hit_in;
-   logic         ifu_pmu_bus_error_in;
-   logic         ifu_pmu_bus_trxn_in;
-   logic         ifu_pmu_bus_busy_in;
-   logic         ic_debug_ict_array_sel_in;
-   logic         ic_debug_ict_array_sel_ff;
-   logic         debug_data_clken;
-   logic         last_data_recieved_in ;
-   logic         last_data_recieved_ff ;
-
-   logic                          ifu_bus_rvalid           ;
-   logic                          ifu_bus_rvalid_ff        ;
-   logic                          ifu_bus_rvalid_unq_ff    ;
-   logic                          ifu_bus_arready_unq       ;
-   logic                          ifu_bus_arready_unq_ff    ;
-   logic                          ifu_bus_arvalid           ;
-   logic                          ifu_bus_arvalid_ff        ;
-   logic                          ifu_bus_arready           ;
-   logic                          ifu_bus_arready_ff        ;
-   logic [63:0]                   ifu_bus_rdata_ff        ;
-   logic [1:0]                    ifu_bus_rresp_ff          ;
-   logic                          ifu_bus_rsp_valid ;
-   logic                          ifu_bus_rsp_ready ;
-   logic [pt.IFU_BUS_TAG-1:0]     ifu_bus_rsp_tag;
-   logic [63:0]                   ifu_bus_rsp_rdata;
-   logic [1:0]                    ifu_bus_rsp_opc;
-
-   logic [pt.ICACHE_NUM_BEATS-1:0]    write_fill_data;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    wr_data_c1_clk;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_valid_in;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_valid;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_error_in;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_error;
-   logic [pt.ICACHE_BEAT_ADDR_HI:1]    byp_fetch_index;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_0;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_1;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]    byp_fetch_index_inc;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_inc_0;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_inc_1;
-   logic          miss_buff_hit_unq_f ;
-   logic          stream_hit_f ;
-   logic          stream_miss_f ;
-   logic          stream_eol_f ;
-   logic          crit_byp_hit_f ;
-   logic [pt.IFU_BUS_TAG-1:0] other_tag ;
-   logic [(2*pt.ICACHE_NUM_BEATS)-1:0] [31:0] ic_miss_buff_data;
-   logic [63:0] ic_miss_buff_half;
-   logic        scnd_miss_req, scnd_miss_req_q;
-   logic        scnd_miss_req_in;
-
-
-   logic [pt.ICCM_BITS-1:2]                iccm_ecc_corr_index_ff;
-   logic [pt.ICCM_BITS-1:2]                iccm_ecc_corr_index_in;
-   logic [38:0]                         iccm_ecc_corr_data_ff;
-   logic                                iccm_ecc_write_status     ;
-   logic                                iccm_rd_ecc_single_err_ff   ;
-   logic                                iccm_error_start;     // start the error fsm
-   logic                                perr_state_en;
-   logic                                miss_state_en;
-
-   logic        busclk;
-   logic        busclk_force;
-   logic        busclk_reset;
-   logic        bus_ifu_bus_clk_en_ff;
-   logic        bus_ifu_bus_clk_en ;
-
-   logic        ifc_bus_ic_req_ff_in;
-   logic        ifu_bus_cmd_valid ;
-   logic        ifu_bus_cmd_ready ;
-
-   logic        bus_inc_data_beat_cnt     ;
-   logic        bus_reset_data_beat_cnt   ;
-   logic        bus_hold_data_beat_cnt    ;
-
-   logic        bus_inc_cmd_beat_cnt     ;
-   logic        bus_reset_cmd_beat_cnt_0   ;
-   logic        bus_reset_cmd_beat_cnt_secondlast   ;
-   logic        bus_hold_cmd_beat_cnt    ;
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_data_beat_count  ;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_data_beat_count      ;
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_cmd_beat_count  ;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_cmd_beat_count      ;
-
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_rd_addr_count;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_rd_addr_count;
-
-
-   logic        bus_cmd_sent           ;
-   logic        bus_last_data_beat     ;
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]       bus_wren            ;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]       bus_wren_last       ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]       wren_reset_miss      ;
-   logic        ifc_dma_access_ok_d;
-   logic        ifc_dma_access_ok_prev;
-
-   logic   bus_cmd_req_in ;
-   logic   bus_cmd_req_hold ;
-
-   logic   second_half_available ;
-   logic   write_ic_16_bytes ;
-
-   logic   ifc_region_acc_fault_final_bf;
-   logic   ifc_region_acc_fault_memory_bf;
-   logic   ifc_region_acc_fault_memory_f;
-   logic   ifc_region_acc_okay;
-
-   logic   iccm_correct_ecc;
-   logic   dma_sb_err_state, dma_sb_err_state_ff;
-   logic   two_byte_instr;
-
-   typedef enum logic [2:0] {IDLE=3'b000, CRIT_BYP_OK=3'b001, HIT_U_MISS=3'b010, MISS_WAIT=3'b011,CRIT_WRD_RDY=3'b100,SCND_MISS=3'b101,STREAM=3'b110 , STALL_SCND_MISS=3'b111} miss_state_t;
-   miss_state_t miss_state, miss_nxtstate;
-
-   typedef enum logic [1:0] {ERR_STOP_IDLE=2'b00, ERR_FETCH1=2'b01 , ERR_FETCH2=2'b10 , ERR_STOP_FETCH=2'b11} err_stop_state_t;
-   err_stop_state_t err_stop_state, err_stop_nxtstate;
-   logic   err_stop_state_en ;
-   logic   err_stop_fetch ;
-
-   logic   ic_crit_wd_rdy;         // Critical fetch is ready to be bypassed.
-
-   logic   ifu_bp_hit_taken_q_f;
-   logic   ifu_bus_rvalid_unq;
-   logic   bus_cmd_beat_en;
-
-
-// ---- Clock gating section -----
-// c1 clock enables
-
-
-   assign fetch_bf_f_c1_clken  = ifc_fetch_req_bf_raw | ifc_fetch_req_f | miss_pending | exu_flush_final | scnd_miss_req;
-   assign debug_c1_clken       = ic_debug_rd_en | ic_debug_wr_en ;
-   // C1 - 1 clock pulse for data
-`ifdef RV_FPGA_OPTIMIZE
-   assign fetch_bf_f_c1_clk = 1'b0;
-   assign debug_c1_clk      = 1'b0;
-`else
-   rvclkhdr fetch_bf_f_c1_cgc    ( .en(fetch_bf_f_c1_clken),     .l1clk(fetch_bf_f_c1_clk), .* );
-   rvclkhdr debug_c1_cgc         ( .en(debug_c1_clken),          .l1clk(debug_c1_clk), .* );
-`endif
-
-
-// ------ end clock gating section ------------------------
-
-   logic [1:0]    iccm_single_ecc_error;
-   logic          dma_iccm_req_f ;
-   assign iccm_dma_sb_error     = (|iccm_single_ecc_error[1:0] )  & dma_iccm_req_f ;
-   assign ifu_async_error_start = iccm_rd_ecc_single_err | ic_error_start;
-
-
-   typedef enum logic [2:0] {ERR_IDLE=3'b000, IC_WFF=3'b001 , ECC_WFF=3'b010 , ECC_CORR=3'b011, DMA_SB_ERR=3'b100} perr_state_t;
-   perr_state_t perr_state, perr_nxtstate;
-
-
-   assign ic_dma_active = iccm_correct_ecc | (perr_state == DMA_SB_ERR) | (err_stop_state == ERR_STOP_FETCH) | err_stop_fetch |
-                          dec_tlu_flush_err_wb; // The last term is to give a error-correction a chance to finish before refetch starts
-
-   assign scnd_miss_req_in     = ifu_bus_rsp_valid & bus_ifu_bus_clk_en & ifu_bus_rsp_ready &
-                                 (&bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]) &
-                                 ~uncacheable_miss_ff &  ((miss_state == SCND_MISS) | (miss_nxtstate == SCND_MISS)) & ~exu_flush_final;
-
-   assign ifu_bp_hit_taken_q_f = ifu_bp_hit_taken_f & ic_hit_f ;
-
-   //////////////////////////////////// Create Miss State Machine ///////////////////////
-   //                                   Create Miss State Machine                      //
-   //                                   Create Miss State Machine                      //
-   //                                   Create Miss State Machine                      //
-   //////////////////////////////////// Create Miss State Machine ///////////////////////
-   // FIFO state machine
-   always_comb begin : MISS_SM
-      miss_nxtstate   = IDLE;
-      miss_state_en   = 1'b0;
-      case (miss_state)
-         IDLE: begin : idle
-                  miss_nxtstate = (ic_act_miss_f & ~exu_flush_final) ? CRIT_BYP_OK : HIT_U_MISS ;
-                  miss_state_en = ic_act_miss_f & ~dec_tlu_force_halt ;
-         end
-         CRIT_BYP_OK: begin : crit_byp_ok
-                  miss_nxtstate =  (dec_tlu_force_halt ) ?                                                                             IDLE :
-                                  ( ic_byp_hit_f &  (last_data_recieved_ff | (bus_ifu_wr_en_ff & last_beat)) &  uncacheable_miss_ff) ? IDLE :
-                                  ( ic_byp_hit_f &  ~last_data_recieved_ff                                &  uncacheable_miss_ff) ? MISS_WAIT :
-                                  (~ic_byp_hit_f &  ~exu_flush_final &  (bus_ifu_wr_en_ff & last_beat)       &  uncacheable_miss_ff) ? CRIT_WRD_RDY :
-                                  (                                      (bus_ifu_wr_en_ff & last_beat)       & ~uncacheable_miss_ff) ? IDLE :
-                                  ( ic_byp_hit_f  &  ~exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat)       & ~ifu_bp_hit_taken_q_f   & ~uncacheable_miss_ff) ? STREAM :
-                                  ( bus_ifu_wr_en_ff &  ~exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat)       & ~ifu_bp_hit_taken_q_f   & ~uncacheable_miss_ff) ? STREAM :
-                                  (~ic_byp_hit_f  &  ~exu_flush_final &  (bus_ifu_wr_en_ff & last_beat)       & ~uncacheable_miss_ff) ? IDLE :
-                                  ( (exu_flush_final | ifu_bp_hit_taken_q_f)  & ~(bus_ifu_wr_en_ff & last_beat)                      ) ? HIT_U_MISS : IDLE;
-                  miss_state_en =  dec_tlu_force_halt | exu_flush_final | ic_byp_hit_f | ifu_bp_hit_taken_q_f | (bus_ifu_wr_en_ff & last_beat) | (bus_ifu_wr_en_ff & ~uncacheable_miss_ff)  ;
-         end
-         CRIT_WRD_RDY: begin : crit_wrd_rdy
-                  miss_nxtstate =  IDLE ;
-                  miss_state_en =  exu_flush_final | flush_final_f | ic_byp_hit_f | dec_tlu_force_halt  ;
-         end
-         STREAM: begin : stream
-                  miss_nxtstate =  ((exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f ) & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt) ? HIT_U_MISS  : IDLE ;
-                  miss_state_en =    exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f   |  (bus_ifu_wr_en_ff & last_beat) | dec_tlu_force_halt ;
-         end
-         MISS_WAIT: begin : miss_wait
-                  miss_nxtstate =  (exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt) ? HIT_U_MISS  : IDLE ;
-                  miss_state_en =   exu_flush_final | (bus_ifu_wr_en_ff & last_beat) | dec_tlu_force_halt ;
-         end
-         HIT_U_MISS: begin : hit_u_miss
-                  miss_nxtstate =  ic_miss_under_miss_f & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt ? SCND_MISS :
-                                   ic_ignore_2nd_miss_f & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt ? STALL_SCND_MISS : IDLE  ;
-                  miss_state_en = (bus_ifu_wr_en_ff & last_beat) | ic_miss_under_miss_f | ic_ignore_2nd_miss_f | dec_tlu_force_halt;
-         end
-         SCND_MISS: begin : scnd_miss
-                  miss_nxtstate   = dec_tlu_force_halt ? IDLE  :
-                                    exu_flush_final ?  ((bus_ifu_wr_en_ff & last_beat) ? IDLE : HIT_U_MISS) : CRIT_BYP_OK;
-                  miss_state_en   = (bus_ifu_wr_en_ff & last_beat) | exu_flush_final | dec_tlu_force_halt;
-         end
-         STALL_SCND_MISS: begin : stall_scnd_miss
-                  miss_nxtstate   =  dec_tlu_force_halt ? IDLE  :
-                                     exu_flush_final ?  ((bus_ifu_wr_en_ff & last_beat) ? IDLE : HIT_U_MISS) : IDLE;
-                  miss_state_en   = (bus_ifu_wr_en_ff & last_beat) | exu_flush_final | dec_tlu_force_halt;
-         end
-         default: begin : def_case
-                  miss_nxtstate   = IDLE;
-                  miss_state_en   = 1'b0;
-         end
-      endcase
-   end
-   rvdffs #(($bits(miss_state_t))) miss_state_ff (.clk(active_clk), .din(miss_nxtstate), .dout({miss_state}), .en(miss_state_en),   .*);
-
-  logic    sel_hold_imb     ;
-
-   assign miss_pending       =  (miss_state != IDLE) ;
-   assign crit_wd_byp_ok_ff  =  (miss_state == CRIT_BYP_OK) | ((miss_state == CRIT_WRD_RDY) & ~flush_final_f);
-   assign sel_hold_imb       =  (miss_pending & ~(bus_ifu_wr_en_ff & last_beat) & ~((miss_state == CRIT_WRD_RDY) & exu_flush_final) &
-                              ~((miss_state == CRIT_WRD_RDY) & crit_byp_hit_f) ) | ic_act_miss_f |
-                                (miss_pending & (miss_nxtstate == CRIT_WRD_RDY)) ;
-
-
-   logic         sel_hold_imb_scnd;
-   logic  [31:1] imb_scnd_in;
-   logic  [31:1] imb_scnd_ff;
-   logic         uncacheable_miss_scnd_in ;
-   logic         uncacheable_miss_scnd_ff ;
-
-   logic  [pt.ICACHE_NUM_WAYS-1:0] tagv_mb_scnd_in;
-   logic  [pt.ICACHE_NUM_WAYS-1:0] tagv_mb_scnd_ff;
-
-   logic  [pt.ICACHE_STATUS_BITS-1:0] way_status_mb_scnd_in;
-   logic  [pt.ICACHE_STATUS_BITS-1:0] way_status_mb_scnd_ff;
-
-   assign sel_hold_imb_scnd                                =((miss_state == SCND_MISS) | ic_miss_under_miss_f) & ~flush_final_f ;
-   assign way_status_mb_scnd_in[pt.ICACHE_STATUS_BITS-1:0] = (miss_state == SCND_MISS) ? way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0] : {way_status[pt.ICACHE_STATUS_BITS-1:0]} ;
-   assign tagv_mb_scnd_in[pt.ICACHE_NUM_WAYS-1:0]          = (miss_state == SCND_MISS) ? tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0]          : ({ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0]} & {pt.ICACHE_NUM_WAYS{~reset_all_tags & ~exu_flush_final}});
-   assign uncacheable_miss_scnd_in   = sel_hold_imb_scnd ? uncacheable_miss_scnd_ff : ifc_fetch_uncacheable_bf ;
-
-
-   rvdff_fpga #(1)  unc_miss_scnd_ff    (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din (uncacheable_miss_scnd_in), .dout(uncacheable_miss_scnd_ff));
-   rvdffpcie #(31) imb_f_scnd_ff       (.*, .en(fetch_bf_f_c1_clken),  .din ({imb_scnd_in[31:1]}), .dout({imb_scnd_ff[31:1]}));
-   rvdff_fpga #(pt.ICACHE_STATUS_BITS)  mb_rep_wayf2_scnd_ff (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din ({way_status_mb_scnd_in[pt.ICACHE_STATUS_BITS-1:0]}), .dout({way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0]}));
-   rvdff_fpga #(pt.ICACHE_NUM_WAYS)     mb_tagv_scnd_ff      (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din ({tagv_mb_scnd_in[pt.ICACHE_NUM_WAYS-1:0]}), .dout({tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0]}));
-
-
-
-
-   assign ic_req_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] = bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] ;
-   assign ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3]  = ifu_bus_rid_ff[pt.ICACHE_BEAT_BITS-1:0] & {pt.ICACHE_BEAT_BITS{bus_ifu_wr_en_ff}};
-   // NOTE: Cacheline size is 16 bytes in this example.
-   // Tag     Index  Bank Offset
-   // [31:16] [15:5] [4]  [3:0]
-
-
-   assign fetch_req_icache_f   = ifc_fetch_req_f & ~ifc_iccm_access_f & ~ifc_region_acc_fault_final_f;
-   assign fetch_req_iccm_f     = ifc_fetch_req_f &  ifc_iccm_access_f;
-
-   assign ic_iccm_hit_f        = fetch_req_iccm_f  &  (~miss_pending | (miss_state==HIT_U_MISS) | (miss_state==STREAM));
-   assign ic_byp_hit_f         = (crit_byp_hit_f | stream_hit_f)  & fetch_req_icache_f &  miss_pending ;
-   assign ic_act_hit_f         = (|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) & fetch_req_icache_f & ~reset_all_tags & (~miss_pending | (miss_state==HIT_U_MISS)) & ~sel_mb_addr_ff;
-   assign ic_act_miss_f        = (((~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & ~miss_pending) | scnd_miss_req) & ~ifc_region_acc_fault_final_f;
-   assign ic_miss_under_miss_f = (~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & (miss_state == HIT_U_MISS) &
-                                   (imb_ff[31:pt.ICACHE_TAG_INDEX_LO] != ifu_fetch_addr_int_f[31:pt.ICACHE_TAG_INDEX_LO]) & ~uncacheable_miss_ff & ~sel_mb_addr_ff & ~ifc_region_acc_fault_final_f;
-   assign ic_ignore_2nd_miss_f = (~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & (miss_state == HIT_U_MISS) &
-                                   ((imb_ff[31:pt.ICACHE_TAG_INDEX_LO] == ifu_fetch_addr_int_f[31:pt.ICACHE_TAG_INDEX_LO])  |   uncacheable_miss_ff) ;
-   assign ic_hit_f             =  ic_act_hit_f | ic_byp_hit_f | ic_iccm_hit_f | (ifc_region_acc_fault_final_f & ifc_fetch_req_f);
-
-   assign uncacheable_miss_in   = scnd_miss_req ? uncacheable_miss_scnd_ff : sel_hold_imb ? uncacheable_miss_ff : ifc_fetch_uncacheable_bf ;
-   assign imb_in[31:1]          = scnd_miss_req ? imb_scnd_ff[31:1]        : sel_hold_imb ? imb_ff[31:1] : {ifc_fetch_addr_bf[31:1]} ;
-
-   assign imb_scnd_in[31:1]     = sel_hold_imb_scnd ? imb_scnd_ff[31:1] : {ifc_fetch_addr_bf[31:1]} ;
-
-   assign scnd_miss_index_match  =  (imb_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == imb_scnd_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]) & scnd_miss_req & ~ifu_wr_cumulative_err_data;
-   assign way_status_mb_in[pt.ICACHE_STATUS_BITS-1:0] = (scnd_miss_req & ~scnd_miss_index_match) ? way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0] :
-                                                        (scnd_miss_req &  scnd_miss_index_match) ? way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] :
-                                                         miss_pending                            ? way_status_mb_ff[pt.ICACHE_STATUS_BITS-1:0] :
-                                                                                                  {way_status[pt.ICACHE_STATUS_BITS-1:0]} ;
-   assign tagv_mb_in[pt.ICACHE_NUM_WAYS-1:0]          = scnd_miss_req ? (tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0] | ({pt.ICACHE_NUM_WAYS {scnd_miss_index_match}} & replace_way_mb_any[pt.ICACHE_NUM_WAYS-1:0])) :
-                                                         miss_pending ? tagv_mb_ff[pt.ICACHE_NUM_WAYS-1:0]  : ({ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0]} & {pt.ICACHE_NUM_WAYS{~reset_all_tags & ~exu_flush_final}}) ;
-
-   assign reset_ic_in           = miss_pending & ~scnd_miss_req_q &  (reset_all_tags |  reset_ic_ff) ;
-
-
-
-   rvdffpcie #(31) ifu_fetch_addr_f_ff (.*, .en(fetch_bf_f_c1_clken), .din ({ifc_fetch_addr_bf[31:1]}), .dout({ifu_fetch_addr_int_f[31:1]}));
-
-   assign vaddr_f[pt.ICACHE_BEAT_ADDR_HI:1] = ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:1] ;
-
-   rvdffpcie #(31) imb_f_ff        (.*, .en(fetch_bf_f_c1_clken), .din (imb_in[31:1]), .dout(imb_ff[31:1]));
-   rvdff_fpga #(1) unc_miss_ff     (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ( uncacheable_miss_in),               .dout( uncacheable_miss_ff));
-
-
-   assign miss_addr_in[31:pt.ICACHE_BEAT_ADDR_HI+1]      = (~miss_pending                    ) ? imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] :
-                                                           (                scnd_miss_req_q  ) ? imb_scnd_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] : miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1] ;
-
-
-   rvdfflie #(.WIDTH(31-pt.ICACHE_BEAT_ADDR_HI),.LEFT(31-pt.ICACHE_BEAT_ADDR_HI-8)) miss_f_ff       (.*, .en(bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .din ({miss_addr_in[31:pt.ICACHE_BEAT_ADDR_HI+1]}), .dout({miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1]}));
-
-
-
-
-
-   rvdff_fpga #(pt.ICACHE_STATUS_BITS)  mb_rep_wayf2_ff (.*, .clk(fetch_bf_f_c1_clk),  .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ({way_status_mb_in[pt.ICACHE_STATUS_BITS-1:0]}), .dout({way_status_mb_ff[pt.ICACHE_STATUS_BITS-1:0]}));
-   rvdff_fpga #(pt.ICACHE_NUM_WAYS)     mb_tagv_ff      (.*, .clk(fetch_bf_f_c1_clk),  .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ({tagv_mb_in[pt.ICACHE_NUM_WAYS-1:0]}), .dout({tagv_mb_ff[pt.ICACHE_NUM_WAYS-1:0]}));
-
-   assign ifc_fetch_req_qual_bf  = ifc_fetch_req_bf  & ~((miss_state == CRIT_WRD_RDY) & flush_final_f) & ~stream_miss_f ;// & ~exu_flush_final ;
-
-   assign ifc_fetch_req_f       = ifc_fetch_req_f_raw & ~exu_flush_final ;
-
-   rvdff_fpga #(1) ifu_iccm_acc_ff     (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_iccm_access_bf),      .dout(ifc_iccm_access_f));
-   rvdff_fpga #(1) ifu_iccm_reg_acc_ff (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_region_acc_fault_final_bf), .dout(ifc_region_acc_fault_final_f));
-   rvdff_fpga #(1) rgn_acc_ff          (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_region_acc_fault_bf),       .dout(ifc_region_acc_fault_f));
-
-
-   assign ifu_ic_req_addr_f[31:3]  = {miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_req_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] };
-   assign ifu_ic_mb_empty          = (((miss_state == HIT_U_MISS) | (miss_state == STREAM)) & ~(bus_ifu_wr_en_ff & last_beat)) |  ~miss_pending ;
-   assign ifu_miss_state_idle      = (miss_state == IDLE) ;
-
-
-   assign sel_mb_addr  = ((miss_pending & write_ic_16_bytes & ~uncacheable_miss_ff) | reset_tag_valid_for_miss) ;
-   assign ifu_ic_rw_int_addr[31:1] = ({31{ sel_mb_addr}}  &  {imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] , imb_ff[2:1]})  |
-                                     ({31{~sel_mb_addr}}  &  ifc_fetch_addr_bf[31:1] )   ;
-
-   assign sel_mb_status_addr  = ((miss_pending & write_ic_16_bytes & ~uncacheable_miss_ff & last_beat & bus_ifu_wr_en_ff_q) | reset_tag_valid_for_miss) ;
-   assign ifu_status_wr_addr[31:1] = ({31{ sel_mb_status_addr}}  &  {imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] , imb_ff[2:1]})  |
-                                     ({31{~sel_mb_status_addr}}  &  ifu_fetch_addr_int_f[31:1] )   ;
-
-
-  assign ic_rw_addr[31:1]      = ifu_ic_rw_int_addr[31:1] ;
-
-
-if (pt.ICACHE_ECC == 1) begin: icache_ecc_1
-   logic [6:0]       ic_wr_ecc;
-   logic [6:0]       ic_miss_buff_ecc;
-   logic [141:0]     ic_wr_16bytes_data ;
-   logic [70:0]      ifu_ic_debug_rd_data_in   ;
-
-                rvecc_encode_64  ic_ecc_encode_64_bus (
-                           .din    (ifu_bus_rdata_ff[63:0]),
-                           .ecc_out(ic_wr_ecc[6:0]));
-                rvecc_encode_64  ic_ecc_encode_64_buff (
-                           .din    (ic_miss_buff_half[63:0]),
-                           .ecc_out(ic_miss_buff_ecc[6:0]));
-
-   for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_wr_data_loop
-      assign ic_wr_data[i][70:0]  =  ic_wr_16bytes_data[((71*i)+70): (71*i)];
-   end
-
-
-   assign ic_debug_wr_data[70:0]   = {dec_tlu_ic_diag_pkt.icache_wrdata[70:0]} ;
-   assign ic_error_start           = ((|ic_eccerr[pt.ICACHE_BANKS_WAY-1:0]) & ic_act_hit_f)  | ic_rd_parity_final_err;
-
-
-
-  assign ifu_ic_debug_rd_data_in[70:0] = ic_debug_ict_array_sel_ff ? {2'b0,ictag_debug_rd_data[25:21],32'b0,ictag_debug_rd_data[20:0],{7-pt.ICACHE_STATUS_BITS{1'b0}}, way_status[pt.ICACHE_STATUS_BITS-1:0],3'b0,ic_debug_tag_val_rd_out} :
-                                                                     ic_debug_rd_data[70:0];
-
-  rvdffe #(71) ifu_debug_data_ff (.*,
-                                  .en (debug_data_clken),
-                                  .din ({
-                                         ifu_ic_debug_rd_data_in[70:0]
-                                         }),
-                                  .dout({
-                                         ifu_ic_debug_rd_data[70:0]
-                                         })
-                                  );
-
-  assign ic_wr_16bytes_data[141:0] =  ifu_bus_rid_ff[0] ? {ic_wr_ecc[6:0] , ifu_bus_rdata_ff[63:0] ,  ic_miss_buff_ecc[6:0] , ic_miss_buff_half[63:0] } :
-                                                        {ic_miss_buff_ecc[6:0] ,  ic_miss_buff_half[63:0] , ic_wr_ecc[6:0] , ifu_bus_rdata_ff[63:0] } ;
-
-
-end
-else begin : icache_parity_1
-   logic [3:0]   ic_wr_parity;
-   logic [3:0]   ic_miss_buff_parity;
-   logic [135:0] ic_wr_16bytes_data ;
-   logic [70:0]  ifu_ic_debug_rd_data_in   ;
-    for (genvar i=0 ; i < 4 ; i++) begin : DATA_PGEN
-       rveven_paritygen #(16) par_bus  (.data_in   (ifu_bus_rdata_ff[((16*i)+15):(16*i)]),
-                                      .parity_out(ic_wr_parity[i]));
-       rveven_paritygen #(16) par_buff  (.data_in   (ic_miss_buff_half[((16*i)+15):(16*i)]),
-                                      .parity_out(ic_miss_buff_parity[i]));
-    end
-
-
-   for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_wr_data_loop
-      assign ic_wr_data[i][70:0]  =  {3'b0, ic_wr_16bytes_data[((68*i)+67): (68*i)]};
-   end
-
-
-
-
-
-   assign ic_debug_wr_data[70:0]   = {dec_tlu_ic_diag_pkt.icache_wrdata[70:0]} ;
-   assign ic_error_start           = ((|ic_parerr[pt.ICACHE_BANKS_WAY-1:0]) & ic_act_hit_f) | ic_rd_parity_final_err;
-
-   assign ifu_ic_debug_rd_data_in[70:0] = ic_debug_ict_array_sel_ff ? {6'b0,ictag_debug_rd_data[21],32'b0,ictag_debug_rd_data[20:0],{7-pt.ICACHE_STATUS_BITS{1'b0}},way_status[pt.ICACHE_STATUS_BITS-1:0],3'b0,ic_debug_tag_val_rd_out} :
-                                                                      ic_debug_rd_data[70:0] ;
-
-   rvdffe #(71) ifu_debug_data_ff (.*,
-                                   .en (debug_data_clken),
-                                   .din ({
-                                          ifu_ic_debug_rd_data_in[70:0]
-                                          }),
-                                   .dout({
-                                          ifu_ic_debug_rd_data[70:0]
-                                          })
-                                   );
-
-   assign ic_wr_16bytes_data[135:0] =  ifu_bus_rid_ff[0] ? {ic_wr_parity[3:0] , ifu_bus_rdata_ff[63:0] ,  ic_miss_buff_parity[3:0] , ic_miss_buff_half[63:0] } :
-                                                        {ic_miss_buff_parity[3:0] ,  ic_miss_buff_half[63:0] , ic_wr_parity[3:0] , ifu_bus_rdata_ff[63:0] } ;
-
-end
-
-
-  assign ifu_wr_data_comb_err       =  bus_ifu_wr_data_error_ff ;
-  assign ifu_wr_cumulative_err      = (ifu_wr_data_comb_err | ifu_wr_data_comb_err_ff) & ~reset_beat_cnt;
-  assign ifu_wr_cumulative_err_data =  ifu_wr_data_comb_err | ifu_wr_data_comb_err_ff ;
-
-
-  assign sel_byp_data     =  (ic_crit_wd_rdy | (miss_state == STREAM) | (miss_state == CRIT_BYP_OK));
-  assign sel_ic_data      = ~(ic_crit_wd_rdy | (miss_state == STREAM) | (miss_state == CRIT_BYP_OK) | (miss_state == MISS_WAIT)) & ~fetch_req_iccm_f & ~ifc_region_acc_fault_final_f;
-
- if (pt.ICCM_ICACHE==1) begin: iccm_icache
-  assign sel_iccm_data    =  fetch_req_iccm_f  ;
-
-  assign ic_final_data[63:0]  = ({64{sel_byp_data | sel_iccm_data | sel_ic_data}} & {ic_rd_data[63:0]} ) ;
-
-  assign ic_premux_data[63:0] = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) |
-                          ({64{sel_iccm_data}} & {iccm_rd_data[63:0]});
-
-  assign ic_sel_premux_data = sel_iccm_data | sel_byp_data ;
- end
-
-if (pt.ICCM_ONLY == 1 ) begin: iccm_only
-  assign sel_iccm_data    =  fetch_req_iccm_f  ;
-  assign ic_final_data[63:0]  = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) |
-                          ({64{sel_iccm_data}} & {iccm_rd_data[63:0]});
-  assign ic_premux_data = '0 ;
-  assign ic_sel_premux_data = '0 ;
-end
-
-if (pt.ICACHE_ONLY == 1 ) begin: icache_only
-  assign ic_final_data[63:0]  = ({64{sel_byp_data | sel_ic_data}} & {ic_rd_data[63:0]} ) ;
-  assign ic_premux_data[63:0] = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) ;
-  assign ic_sel_premux_data =  sel_byp_data ;
-end
-
-
-if (pt.NO_ICCM_NO_ICACHE == 1 ) begin: no_iccm_no_icache
-  assign ic_final_data[63:0]  = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) ;
-  assign ic_premux_data = 0 ;
-  assign ic_sel_premux_data = '0 ;
-end
-
-
-  assign ifc_bus_acc_fault_f[1:0]   =  {2{ic_byp_hit_f}} & ifu_byp_data_err_f[1:0] ;
-  assign ic_data_f[31:0]      = ic_final_data[31:0];
-
-
-
-assign fetch_req_f_qual       = ic_hit_f & ~exu_flush_final;
-assign ic_access_fault_f[1:0]  = ({2{ifc_region_acc_fault_final_f}} | ifc_bus_acc_fault_f[1:0])  & {2{~exu_flush_final}};
-assign ic_access_fault_type_f[1:0] = |iccm_rd_ecc_double_err       ? 2'b01 :
-                                     ifc_region_acc_fault_f        ? 2'b10 :
-                                     ifc_region_acc_fault_memory_f ? 2'b11 :  2'b00 ;
-
-  // right justified
-
-assign ic_fetch_val_f[1] = fetch_req_f_qual & ifu_bp_inst_mask_f & ~(vaddr_f[pt.ICACHE_BEAT_ADDR_HI:1] == {pt.ICACHE_BEAT_ADDR_HI{1'b1}}) & (err_stop_state != ERR_FETCH2);
-assign ic_fetch_val_f[0] = fetch_req_f_qual ;
-assign two_byte_instr    =  (ic_data_f[1:0] != 2'b11 )  ;
-
-/////////////////////////////////////////////////////////////////////////////////////
-//  Create full buffer...                                                          //
-/////////////////////////////////////////////////////////////////////////////////////
-     logic [63:0]       ic_miss_buff_data_in;
-     assign ic_miss_buff_data_in[63:0] = ifu_bus_rsp_rdata[63:0];
-
-     for (genvar i=0; i<pt.ICACHE_NUM_BEATS; i++) begin :  wr_flop
-
-        assign write_fill_data[i]        =   bus_ifu_wr_en & (  (pt.IFU_BUS_TAG)'(i)  == ifu_bus_rsp_tag[pt.IFU_BUS_TAG-1:0]);
-
-        rvdffe #(32) byp_data_0_ff (.*,
-                                    .en (write_fill_data[i]),
-                                    .din (ic_miss_buff_data_in[31:0]),
-                                    .dout(ic_miss_buff_data[i*2][31:0])
-                                    );
-
-        rvdffe #(32) byp_data_1_ff (.*,
-                                    .en (write_fill_data[i]),
-                                    .din (ic_miss_buff_data_in[63:32]),
-                                    .dout(ic_miss_buff_data[i*2+1][31:0])
-                                    );
-
-        assign ic_miss_buff_data_valid_in[i]  = write_fill_data[i] ? 1'b1  : (ic_miss_buff_data_valid[i]  & ~ic_act_miss_f) ;
-
-        rvdff #(1) byp_data_valid_ff (.*,
-                  .clk (active_clk),
-                  .din (ic_miss_buff_data_valid_in[i]),
-                  .dout(ic_miss_buff_data_valid[i]));
-
-        assign ic_miss_buff_data_error_in[i]  = write_fill_data[i] ? bus_ifu_wr_data_error  : (ic_miss_buff_data_error[i]  & ~ic_act_miss_f) ;
-
-        rvdff #(1) byp_data_error_ff (.*,
-                  .clk (active_clk),
-                  .din (ic_miss_buff_data_error_in[i] ),
-                  .dout(ic_miss_buff_data_error[i]));
-     end
-
-/////////////////////////////////////////////////////////////////////////////////////
-// New bypass ready                                                                //
-/////////////////////////////////////////////////////////////////////////////////////
-   logic   [pt.ICACHE_BEAT_ADDR_HI:1]  bypass_index;
-   logic   [pt.ICACHE_BEAT_ADDR_HI:3]  bypass_index_5_3_inc;
-   logic   bypass_data_ready_in;
-   logic   ic_crit_wd_rdy_new_in;
-
-   assign bypass_index[pt.ICACHE_BEAT_ADDR_HI:1] = imb_ff[pt.ICACHE_BEAT_ADDR_HI:1] ;
-   assign bypass_index_5_3_inc[pt.ICACHE_BEAT_ADDR_HI:3] = bypass_index[pt.ICACHE_BEAT_ADDR_HI:3] + 1 ;
-
-
-   assign bypass_data_ready_in = ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      & ~bypass_index[2] & ~bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      & ~bypass_index[2] &  bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      &  bypass_index[2] & ~bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]] & ic_miss_buff_data_valid_in[bypass_index_5_3_inc[pt.ICACHE_BEAT_ADDR_HI:3]] &  bypass_index[2] & bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]] & (bypass_index[pt.ICACHE_BEAT_ADDR_HI:3] == {pt.ICACHE_BEAT_ADDR_HI{1'b1}})))   ;
-
-
-
-   assign    ic_crit_wd_rdy_new_in = ( bypass_data_ready_in & crit_wd_byp_ok_ff   &  uncacheable_miss_ff &  ~exu_flush_final & ~ifu_bp_hit_taken_q_f) |
-                                     (                        crit_wd_byp_ok_ff   & ~uncacheable_miss_ff &  ~exu_flush_final & ~ifu_bp_hit_taken_q_f) |
-                                     (ic_crit_wd_rdy_new_ff & ~fetch_req_icache_f & crit_wd_byp_ok_ff    &  ~exu_flush_final) ;
-
-
-  assign byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:1]          =    ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:1]       ;
-  assign byp_fetch_index_0[pt.ICACHE_BEAT_ADDR_HI:2]        =   {ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3],1'b0} ;
-  assign byp_fetch_index_1[pt.ICACHE_BEAT_ADDR_HI:2]        =   {ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3],1'b1} ;
-  assign byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]      =    ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3]+1'b1 ;
-  assign byp_fetch_index_inc_0[pt.ICACHE_BEAT_ADDR_HI:2]    =   {byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3], 1'b0} ;
-  assign byp_fetch_index_inc_1[pt.ICACHE_BEAT_ADDR_HI:2]    =   {byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3], 1'b1} ;
-
-  assign  ifu_byp_data_err_new = (~ifu_fetch_addr_int_f[2] &  ~ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 (~ifu_fetch_addr_int_f[2] &   ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 ( ifu_fetch_addr_int_f[2] &  ~ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 ( ifu_fetch_addr_int_f[2] &   ifu_fetch_addr_int_f[1] & (ic_miss_buff_data_error[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]] | ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )) ;
-
-  assign  ifu_byp_data_err_f[1:0]  =   (ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  ? 2'b11 :
-                                      ( ifu_fetch_addr_int_f[2] &  ifu_fetch_addr_int_f[1] &   ~(ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] ) & (~miss_wrap_f & ic_miss_buff_data_error[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]])) ? 2'b10 : 2'b00;
-
-
-
-
-
-  assign ic_byp_data_only_pre_new[79:0] =  ({80{~ifu_fetch_addr_int_f[2]}} &   {ic_miss_buff_data[byp_fetch_index_inc_0][15:0],ic_miss_buff_data[byp_fetch_index_1][31:0]     , ic_miss_buff_data[byp_fetch_index_0][31:0]}) |
-                                           ({80{ ifu_fetch_addr_int_f[2]}} &   {ic_miss_buff_data[byp_fetch_index_inc_1][15:0],ic_miss_buff_data[byp_fetch_index_inc_0][31:0] , ic_miss_buff_data[byp_fetch_index_1][31:0]}) ;
-
-  assign ic_byp_data_only_new[79:0]      = ~ifu_fetch_addr_int_f[1] ? {ic_byp_data_only_pre_new[79:0]} :
-                                                                      {16'b0,ic_byp_data_only_pre_new[79:16]} ;
-
-  assign miss_wrap_f      =  (imb_ff[pt.ICACHE_TAG_INDEX_LO] != ifu_fetch_addr_int_f[pt.ICACHE_TAG_INDEX_LO] ) ;
-
-  assign miss_buff_hit_unq_f  = ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     & ~byp_fetch_index[2] & ~byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     & ~byp_fetch_index[2] &  byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     &  byp_fetch_index[2] & ~byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] & ic_miss_buff_data_valid[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]] &  byp_fetch_index[2] &  byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] &  (byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3] == {pt.ICACHE_BEAT_BITS{1'b1}})))   ;
-
-  assign stream_hit_f     =  (miss_buff_hit_unq_f & ~miss_wrap_f ) & (miss_state==STREAM) ;
-  assign stream_miss_f    = ~(miss_buff_hit_unq_f & ~miss_wrap_f ) & (miss_state==STREAM) & ifc_fetch_req_f;
-  assign stream_eol_f     =  (byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:2] == {pt.ICACHE_BEAT_BITS+1{1'b1}}) & ifc_fetch_req_f & stream_hit_f;
-
-  assign crit_byp_hit_f   =  (miss_buff_hit_unq_f ) & ((miss_state == CRIT_WRD_RDY) | (miss_state==CRIT_BYP_OK)) ;
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Figure out if you have the data to write.                                       //
-/////////////////////////////////////////////////////////////////////////////////////
-
-assign other_tag[pt.IFU_BUS_TAG-1:0] = {ifu_bus_rid_ff[pt.IFU_BUS_TAG-1:1] , ~ifu_bus_rid_ff[0] } ;
-assign second_half_available      = ic_miss_buff_data_valid[other_tag] ;
-assign write_ic_16_bytes          = second_half_available & bus_ifu_wr_en_ff ;
-assign ic_miss_buff_half[63:0]    = {ic_miss_buff_data[{other_tag,1'b1}],ic_miss_buff_data[{other_tag,1'b0}] } ;
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Parity checking logic for Icache logic.                                         //
-/////////////////////////////////////////////////////////////////////////////////////
-
-
-assign ic_rd_parity_final_err = ic_tag_perr & ~exu_flush_final & sel_ic_data & ~(ifc_region_acc_fault_final_f | (|ifc_bus_acc_fault_f)) &
-                                      (fetch_req_icache_f & ~reset_all_tags & (~miss_pending | (miss_state==HIT_U_MISS)) & ~sel_mb_addr_ff);
-
-logic [pt.ICACHE_NUM_WAYS-1:0]                   perr_err_inv_way;
-logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]   perr_ic_index_ff;
-logic                                         perr_sel_invalidate;
-logic                                         perr_sb_write_status   ;
-
-
-
-   rvdffe #(.WIDTH(pt.ICACHE_INDEX_HI-pt.ICACHE_TAG_INDEX_LO+1),.OVERRIDE(1)) perr_dat_ff    (.din(ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]), .dout(perr_ic_index_ff[pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]), .en(perr_sb_write_status),  .*);
-
-   assign perr_err_inv_way[pt.ICACHE_NUM_WAYS-1:0]   =  {pt.ICACHE_NUM_WAYS{perr_sel_invalidate}} ;
-   assign iccm_correct_ecc     = (perr_state == ECC_CORR);
-   assign dma_sb_err_state     = (perr_state == DMA_SB_ERR);
-   assign iccm_buf_correct_ecc = iccm_correct_ecc & ~dma_sb_err_state_ff;
-
-
-
-   //////////////////////////////////// Create Parity Error State Machine ///////////////////////
-   //                                   Create Parity Error State Machine                      //
-   //                                   Create Parity Error State Machine                      //
-   //                                   Create Parity Error State Machine                      //
-   //////////////////////////////////// Create Parity Error State Machine ///////////////////////
-
-
-   // FIFO state machine
-   always_comb begin  : ERROR_SM
-      perr_nxtstate            = ERR_IDLE;
-      perr_state_en            = 1'b0;
-      perr_sb_write_status     = 1'b0;
-      perr_sel_invalidate      = 1'b0;
-
-      case (perr_state)
-         ERR_IDLE: begin : err_idle
-                  perr_nxtstate         =  iccm_dma_sb_error ? DMA_SB_ERR : (ic_error_start & ~exu_flush_final) ? IC_WFF : ECC_WFF;
-                  perr_state_en         =  (((iccm_error_start | ic_error_start) & ~exu_flush_final) | iccm_dma_sb_error) & ~dec_tlu_force_halt;
-                  perr_sb_write_status  =  perr_state_en;
-         end
-         IC_WFF: begin : icache_wff    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  perr_nxtstate       =  ERR_IDLE ;
-                  perr_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_force_halt ;
-                  perr_sel_invalidate =  (dec_tlu_flush_err_wb &  dec_tlu_flush_lower_wb);
-         end
-         ECC_WFF: begin : ecc_wff
-                  perr_nxtstate       =  ((~dec_tlu_flush_err_wb &  dec_tlu_flush_lower_wb ) | dec_tlu_force_halt) ? ERR_IDLE : ECC_CORR ;
-                  perr_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_force_halt  ;
-         end
-         DMA_SB_ERR : begin : dma_sb_ecc
-                 perr_nxtstate       = dec_tlu_force_halt ? ERR_IDLE : ECC_CORR;
-                 perr_state_en       = 1'b1;
-         end
-         ECC_CORR: begin : ecc_corr
-                  perr_nxtstate       =  ERR_IDLE  ;
-                  perr_state_en       =   1'b1   ;
-         end
-         default: begin : def_case
-                  perr_nxtstate            = ERR_IDLE;
-                  perr_state_en            = 1'b0;
-                  perr_sb_write_status     = 1'b0;
-                  perr_sel_invalidate      = 1'b0;
-         end
-      endcase
-   end
-
-   rvdffs #(($bits(perr_state_t))) perr_state_ff (.clk(active_clk), .din(perr_nxtstate), .dout({perr_state}), .en(perr_state_en),   .*);
-
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   always_comb begin  : ERROR_STOP_FETCH
-      err_stop_nxtstate            = ERR_STOP_IDLE;
-      err_stop_state_en            = 1'b0;
-      err_stop_fetch               = 1'b0;
-      iccm_correction_state        = 1'b0;
-
-      case (err_stop_state)
-         ERR_STOP_IDLE: begin : err_stop_idle
-                  err_stop_nxtstate         =  ERR_FETCH1;
-                  err_stop_state_en         =  dec_tlu_flush_err_wb & (perr_state  == ECC_WFF) & ~dec_tlu_force_halt;
-         end
-         ERR_FETCH1: begin : err_fetch1    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  err_stop_nxtstate       =  (dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : ((ifu_fetch_val[1:0] == 2'b11) | (ifu_fetch_val[0] & two_byte_instr))   ?  ERR_STOP_FETCH : ifu_fetch_val[0] ? ERR_FETCH2 :  ERR_FETCH1;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | ifu_fetch_val[0] | ifu_bp_hit_taken_q_f | dec_tlu_force_halt;
-                  err_stop_fetch          =   ((ifu_fetch_val[1:0] == 2'b11) | (ifu_fetch_val[0] & two_byte_instr))  & ~(exu_flush_final | dec_tlu_i0_commit_cmt);
-                  iccm_correction_state   = 1'b1;
-
-        end
-         ERR_FETCH2: begin : err_fetch2    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  err_stop_nxtstate       =  (dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : ifu_fetch_val[0] ?  ERR_STOP_FETCH : ERR_FETCH2;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | ifu_fetch_val[0] | dec_tlu_force_halt ;
-                  err_stop_fetch          =   ifu_fetch_val[0] & ~exu_flush_final & ~dec_tlu_i0_commit_cmt ;
-                  iccm_correction_state   = 1'b1;
-
-         end
-         ERR_STOP_FETCH: begin : ecc_wff
-                  err_stop_nxtstate       =  ( (dec_tlu_flush_lower_wb & ~dec_tlu_flush_err_wb) | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : dec_tlu_flush_err_wb ? ERR_FETCH1 : ERR_STOP_FETCH ;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb |  dec_tlu_i0_commit_cmt | dec_tlu_force_halt   ;
-                  err_stop_fetch          =  1'b1;
-                  iccm_correction_state   = 1'b1;
-
-         end
-         default: begin : def_case
-                  err_stop_nxtstate            = ERR_STOP_IDLE;
-                  err_stop_state_en            = 1'b0;
-                  err_stop_fetch               = 1'b0 ;
-                  iccm_correction_state   = 1'b1;
-
-         end
-      endcase
-   end
-   rvdffs #(($bits(err_stop_state_t))) err_stop_state_ff (.clk(active_clk), .din(err_stop_nxtstate), .dout({err_stop_state}), .en(err_stop_state_en),   .*);
-
-
-
-   assign bus_ifu_bus_clk_en =  ifu_bus_clk_en ;
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign busclk = 1'b0;
-   assign busclk_force = 1'b0;
-`else
-   rvclkhdr bus_clk_f(.en(bus_ifu_bus_clk_en), .l1clk(busclk), .*);
-   rvclkhdr bus_clk(.en(bus_ifu_bus_clk_en | dec_tlu_force_halt), .l1clk(busclk_force), .*);
-`endif
-
-
-
-   assign  scnd_miss_req = scnd_miss_req_q & ~exu_flush_final;
-
-   assign  ifc_bus_ic_req_ff_in  = (ic_act_miss_f | bus_cmd_req_hold | ifu_bus_cmd_valid) & ~dec_tlu_force_halt & ~((bus_cmd_beat_count== {pt.ICACHE_BEAT_BITS{1'b1}}) & ifu_bus_cmd_valid & ifu_bus_cmd_ready & miss_pending);
-
-   rvdff_fpga #(1) bus_ic_req_ff2(.*, .clk(busclk_force), .clken(bus_ifu_bus_clk_en | dec_tlu_force_halt), .rawclk(clk), .din(ifc_bus_ic_req_ff_in), .dout(ifu_bus_cmd_valid));
-
-   assign    bus_cmd_req_in  = (ic_act_miss_f | bus_cmd_req_hold) & ~bus_cmd_sent & ~dec_tlu_force_halt ; // hold until first command sent
-
-
-
-    // AXI command signals
-    //  Read Channel
-    assign ifu_axi_arvalid               =  ifu_bus_cmd_valid ;
-    assign ifu_axi_arid[pt.IFU_BUS_TAG-1:0] = ((pt.IFU_BUS_TAG)'(bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0])) & {pt.IFU_BUS_TAG{ifu_bus_cmd_valid}};
-    assign ifu_axi_araddr[31:0]          =   {ifu_ic_req_addr_f[31:3],3'b0}  & {32{ifu_bus_cmd_valid}};
-    assign ifu_axi_arsize[2:0]           =  3'b011;
-    assign ifu_axi_arprot[2:0]           = 3'b101;
-    assign ifu_axi_arcache[3:0]          = 4'b1111;
-    assign ifu_axi_arregion[3:0]         = ifu_ic_req_addr_f[31:28];
-    assign ifu_axi_arlen[7:0]            = '0;
-    assign ifu_axi_arburst[1:0]          = 2'b01;
-    assign ifu_axi_arqos[3:0]            = '0;
-    assign ifu_axi_arlock                = '0;
-    assign ifu_axi_rready                = 1'b1;
-
-    //  Write Channel
-    assign ifu_axi_awvalid                  = '0 ;
-    assign ifu_axi_awid[pt.IFU_BUS_TAG-1:0] = '0 ;
-    assign ifu_axi_awaddr[31:0]             = '0 ;
-    assign ifu_axi_awsize[2:0]              = '0 ;
-    assign ifu_axi_awprot[2:0]              = '0;
-    assign ifu_axi_awcache[3:0]             = '0 ;
-    assign ifu_axi_awregion[3:0]            = '0 ;
-    assign ifu_axi_awlen[7:0]               = '0;
-    assign ifu_axi_awburst[1:0]             = '0 ;
-    assign ifu_axi_awqos[3:0]               = '0;
-    assign ifu_axi_awlock                   = '0;
-
-    assign ifu_axi_wvalid                =  '0;
-    assign ifu_axi_wstrb[7:0]            =  '0;
-    assign ifu_axi_wdata[63:0]           =  '0;
-    assign ifu_axi_wlast                 =  '0;
-    assign ifu_axi_bready                =  '0;
-
-
-   assign ifu_bus_arready_unq     =  ifu_axi_arready ;
-   assign ifu_bus_rvalid_unq      =  ifu_axi_rvalid ;
-   assign ifu_bus_arvalid         =  ifu_axi_arvalid ;
-
-   rvdff_fpga #(1)               bus_rdy_ff      (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_arready_unq),            .dout(ifu_bus_arready_unq_ff));
-   rvdff_fpga #(1)               bus_rsp_vld_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_rvalid_unq),             .dout(ifu_bus_rvalid_unq_ff));
-   rvdff_fpga #(1)               bus_cmd_ff      (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_arvalid),                .dout(ifu_bus_arvalid_ff));
-   rvdff_fpga #(2)               bus_rsp_cmd_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_axi_rresp[1:0]),             .dout(ifu_bus_rresp_ff[1:0]));
-   rvdff_fpga #(pt.IFU_BUS_TAG)  bus_rsp_tag_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_axi_rid[pt.IFU_BUS_TAG-1:0]),.dout(ifu_bus_rid_ff[pt.IFU_BUS_TAG-1:0]));
-   rvdffe #(64)                  bus_data_ff     (.*, .clk(clk),     .din(ifu_axi_rdata[63:0]),            .dout(ifu_bus_rdata_ff[63:0]), .en(ifu_bus_clk_en & ifu_axi_rvalid));
-
-   assign ifu_bus_cmd_ready = ifu_axi_arready ;
-   assign ifu_bus_rsp_valid = ifu_axi_rvalid ;
-   assign ifu_bus_rsp_ready = ifu_axi_rready ;
-   assign ifu_bus_rsp_tag[pt.IFU_BUS_TAG-1:0] = ifu_axi_rid[pt.IFU_BUS_TAG-1:0] ;
-   assign ifu_bus_rsp_rdata[63:0] = ifu_axi_rdata[63:0] ;
-   assign ifu_bus_rsp_opc[1:0] = {ifu_axi_rresp[1:0]} ;
-
-
-
-
-
-
-
-
-
-   // Create write signals so we can write to the miss-buffer directly from the bus.
-
-   assign ifu_bus_rvalid            =  ifu_bus_rsp_valid & bus_ifu_bus_clk_en ;
-
-
-
-   assign ifu_bus_arready            =  ifu_bus_arready_unq    & bus_ifu_bus_clk_en    ;
-   assign ifu_bus_arready_ff         =  ifu_bus_arready_unq_ff & bus_ifu_bus_clk_en_ff ;
-
-   assign ifu_bus_rvalid_ff          =  ifu_bus_rvalid_unq_ff & bus_ifu_bus_clk_en_ff ;
-   assign bus_cmd_sent               =  ifu_bus_arvalid & ifu_bus_arready & miss_pending & ~dec_tlu_force_halt;
-   assign bus_inc_data_beat_cnt      = (bus_ifu_wr_en_ff & ~bus_last_data_beat & ~dec_tlu_force_halt) ;
-   assign bus_reset_data_beat_cnt    =  ic_act_miss_f | (bus_ifu_wr_en_ff &  bus_last_data_beat) | dec_tlu_force_halt;
-   assign bus_hold_data_beat_cnt     = ~bus_inc_data_beat_cnt & ~bus_reset_data_beat_cnt ;
-
-   assign bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] = ({pt.ICACHE_BEAT_BITS{bus_reset_data_beat_cnt}} & (pt.ICACHE_BEAT_BITS)'(0)) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_inc_data_beat_cnt}}   & (bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] + {{pt.ICACHE_BEAT_BITS-1{1'b0}},1'b1})) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_hold_data_beat_cnt}}  &  bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]);
-
-
-   assign last_data_recieved_in =  (bus_ifu_wr_en_ff &  bus_last_data_beat & ~scnd_miss_req) | (last_data_recieved_ff & ~ic_act_miss_f) ;
-
-
-
-// Request Address Count
-   assign bus_new_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] = (~miss_pending                    ) ? imb_ff[pt.ICACHE_BEAT_ADDR_HI:3] :
-                                                           (                scnd_miss_req_q  ) ? imb_scnd_ff[pt.ICACHE_BEAT_ADDR_HI:3] :
-                                                           ( bus_cmd_sent                    ) ? (bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] + 3'b001) :
-                                                                                                  bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0];
-
-   rvdff_fpga #(pt.ICACHE_BEAT_BITS)  bus_rd_addr_ff (.*,  .clk(busclk_reset),  .clken (bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .rawclk(clk), .din ({bus_new_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0]}), .dout({bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0]}));
-
-
-
-// command beat Count
-   assign bus_inc_cmd_beat_cnt              =  ifu_bus_cmd_valid    &  ifu_bus_cmd_ready & miss_pending & ~dec_tlu_force_halt;
-   assign bus_reset_cmd_beat_cnt_0          =  (ic_act_miss_f        & ~uncacheable_miss_in) | dec_tlu_force_halt ;
-   assign bus_reset_cmd_beat_cnt_secondlast =  ic_act_miss_f        &  uncacheable_miss_in ;
-   assign bus_hold_cmd_beat_cnt             = ~bus_inc_cmd_beat_cnt & ~(ic_act_miss_f | scnd_miss_req | dec_tlu_force_halt) ;
-   assign bus_cmd_beat_en                   =  bus_inc_cmd_beat_cnt | ic_act_miss_f | dec_tlu_force_halt;
-
-   assign bus_new_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0] =  ({pt.ICACHE_BEAT_BITS{bus_reset_cmd_beat_cnt_0}}       & (pt.ICACHE_BEAT_BITS)'(0) ) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_reset_cmd_beat_cnt_secondlast}} & (pt.ICACHE_BEAT_BITS)'(pt.ICACHE_SCND_LAST)) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_inc_cmd_beat_cnt}}              & (bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0] + {{pt.ICACHE_BEAT_BITS-1{1'b0}}, 1'b1})) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_hold_cmd_beat_cnt}}             &  bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]) ;
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign busclk_reset = 1'b0;
-`else
-   rvclkhdr bus_clk_reset(.en(bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .l1clk(busclk_reset), .*);
-`endif
-
-
-
-   rvdffs_fpga #(pt.ICACHE_BEAT_BITS)  bus_cmd_beat_ff (.*, .clk(busclk_reset), .clken (bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .rawclk(clk), .en (bus_cmd_beat_en), .din ({bus_new_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]}),
-                    .dout({bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]}));
-
-
-    assign bus_last_data_beat     =  uncacheable_miss_ff ? (bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] == {{pt.ICACHE_BEAT_BITS-1{1'b0}},1'b1}) : (&bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]);
-
-   assign  bus_ifu_wr_en            =  ifu_bus_rvalid     & miss_pending ;
-   assign  bus_ifu_wr_en_ff         =  ifu_bus_rvalid_ff  & miss_pending ;
-   assign  bus_ifu_wr_en_ff_q       =  ifu_bus_rvalid_ff  & miss_pending & ~uncacheable_miss_ff & ~(|ifu_bus_rresp_ff[1:0]) & write_ic_16_bytes; // qualify with no-error conditions ;
-   assign  bus_ifu_wr_en_ff_wo_err  =  ifu_bus_rvalid_ff & miss_pending &  ~uncacheable_miss_ff;
-
-
-   rvdffie #(10) misc_ff
-       ( .*,
-         .clk(free_l2clk),
-         .din( {ic_act_miss_f,        ifu_wr_cumulative_err,exu_flush_final,  ic_crit_wd_rdy_new_in,bus_ifu_bus_clk_en,   scnd_miss_req_in,bus_cmd_req_in,  last_data_recieved_in,
-ifc_dma_access_ok_d,   dma_iccm_req}),
-         .dout({ic_act_miss_f_delayed,ifu_wr_data_comb_err_ff,  flush_final_f,ic_crit_wd_rdy_new_ff,bus_ifu_bus_clk_en_ff,scnd_miss_req_q, bus_cmd_req_hold,last_data_recieved_ff,
-ifc_dma_access_ok_prev,dma_iccm_req_f})
-         );
-
-   rvdffie #(.WIDTH(pt.ICACHE_BEAT_BITS+5),.OVERRIDE(1)) misc1_ff
-       ( .*,
-         .clk(free_l2clk),
-         .din( {reset_ic_in,sel_mb_addr,   bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0],ifc_region_acc_fault_memory_bf,ic_debug_rd_en,       ic_debug_rd_en_ff}),
-         .dout({reset_ic_ff,sel_mb_addr_ff,bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0],    ifc_region_acc_fault_memory_f, ic_debug_rd_en_ff,ifu_ic_debug_rd_data_valid})
-         );
-
-   assign    reset_tag_valid_for_miss = ic_act_miss_f_delayed & (miss_state == CRIT_BYP_OK) & ~uncacheable_miss_ff;
-   assign    bus_ifu_wr_data_error    = |ifu_bus_rsp_opc[1:0] &  ifu_bus_rvalid  & miss_pending;
-   assign    bus_ifu_wr_data_error_ff = |ifu_bus_rresp_ff[1:0] &  ifu_bus_rvalid_ff  & miss_pending;
-
-
-   assign ic_crit_wd_rdy   =  ic_crit_wd_rdy_new_in | ic_crit_wd_rdy_new_ff ;
-   assign last_beat        =  bus_last_data_beat & bus_ifu_wr_en_ff;
-   assign reset_beat_cnt    = bus_reset_data_beat_cnt ;
-
-// DMA
-   // Making sure that the dma_access is allowed when we have 2 back to back dma_access_ok. Also gating with current state == idle
-   assign ifc_dma_access_ok_d  = ifc_dma_access_ok &  ~iccm_correct_ecc & ~iccm_dma_sb_error;
-   assign ifc_dma_access_q_ok  = ifc_dma_access_ok &  ~iccm_correct_ecc & ifc_dma_access_ok_prev &  (perr_state == ERR_IDLE)  & ~iccm_dma_sb_error;
-   assign iccm_ready           = ifc_dma_access_q_ok ;
-
-   logic [1:0]        iccm_ecc_word_enable;
-
-    if (pt.ICCM_ENABLE == 1 ) begin: iccm_enabled
-         logic  [3:2] dma_mem_addr_ff  ;
-         logic  iccm_dma_rden    ;
-
-         logic  iccm_dma_ecc_error_in;
-         logic  [13:0] dma_mem_ecc;
-         logic  [63:0] iccm_dma_rdata_in;
-         logic  [31:0] iccm_dma_rdata_1_muxed;
-         logic [1:0] [31:0] iccm_corrected_data;
-         logic [1:0] [06:0] iccm_corrected_ecc;
-
-
-         logic [1:0]        iccm_double_ecc_error;
-
-
-         logic [pt.ICCM_BITS-1:2]       iccm_rw_addr_f;
-
-         logic [31:0]       iccm_corrected_data_f_mux;
-         logic [06:0]       iccm_corrected_ecc_f_mux;
-         logic              iccm_dma_rvalid_in;
-         logic [77:0]       iccm_rdmux_data;
-         logic              iccm_rd_ecc_single_err_hold_in ;
-         logic [2:0]        dma_mem_tag_ff;
-
-
-
-
-         assign iccm_wren          =  (ifc_dma_access_q_ok & dma_iccm_req &  dma_mem_write) | iccm_correct_ecc;
-         assign iccm_rden          =  (ifc_dma_access_q_ok & dma_iccm_req & ~dma_mem_write) | (ifc_iccm_access_bf & ifc_fetch_req_bf);
-         assign iccm_dma_rden      =  (ifc_dma_access_q_ok & dma_iccm_req & ~dma_mem_write)                     ;
-         assign iccm_wr_size[2:0]  =  {3{dma_iccm_req}}    & dma_mem_sz[2:0] ;
-
-         rvecc_encode  iccm_ecc_encode0 (
-                           .din(dma_mem_wdata[31:0]),
-                           .ecc_out(dma_mem_ecc[6:0]));
-
-         rvecc_encode  iccm_ecc_encode1 (
-                           .din(dma_mem_wdata[63:32]),
-                           .ecc_out(dma_mem_ecc[13:7]));
-
-        assign iccm_wr_data[77:0]   =  (iccm_correct_ecc & ~(ifc_dma_access_q_ok & dma_iccm_req)) ?  {iccm_ecc_corr_data_ff[38:0], iccm_ecc_corr_data_ff[38:0]} :
-                                       {dma_mem_ecc[13:7],dma_mem_wdata[63:32], dma_mem_ecc[6:0],dma_mem_wdata[31:0]};
-
-         assign iccm_dma_rdata_1_muxed[31:0] = dma_mem_addr_ff[2] ?  iccm_corrected_data[0][31:0] : iccm_corrected_data[1][31:0] ;
-         assign iccm_dma_rdata_in[63:0]      = iccm_dma_ecc_error_in ? {2{dma_mem_addr[31:0]}} : {iccm_dma_rdata_1_muxed[31:0], iccm_corrected_data[0]};
-         assign iccm_dma_ecc_error_in   =   |(iccm_double_ecc_error[1:0]);
-
-         rvdffe    #(64) dma_data_ff      (.*, .clk(clk), .en(iccm_dma_rvalid_in),  .din(iccm_dma_rdata_in[63:0]), .dout(iccm_dma_rdata[63:0]));
-         rvdffie   #(11) dma_misc_bits    (.*, .clk(free_l2clk), .din({dma_mem_tag[2:0],
-                                                                       dma_mem_tag_ff[2:0],
-                                                                       dma_mem_addr[3:2],
-                                                                       iccm_dma_rden,
-                                                                       iccm_dma_rvalid_in,
-                                                                       iccm_dma_ecc_error_in }),
-                                                                .dout({dma_mem_tag_ff[2:0],
-                                                                       iccm_dma_rtag[2:0],
-                                                                       dma_mem_addr_ff[3:2],
-                                                                       iccm_dma_rvalid_in,
-                                                                       iccm_dma_rvalid,
-                                                                       iccm_dma_ecc_error }));
-
-         assign iccm_rw_addr[pt.ICCM_BITS-1:1]    = (  ifc_dma_access_q_ok & dma_iccm_req  & ~iccm_correct_ecc) ? dma_mem_addr[pt.ICCM_BITS-1:1] :
-                                                 (~(ifc_dma_access_q_ok & dma_iccm_req) &  iccm_correct_ecc) ? {iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2],1'b0} : ifc_fetch_addr_bf[pt.ICCM_BITS-1:1] ;
-
-
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// ECC checking logic for ICCM data.                                               //
-/////////////////////////////////////////////////////////////////////////////////////
-
-  logic [3:0] ic_fetch_val_int_f;
-  logic [3:0] ic_fetch_val_shift_right;
-  assign ic_fetch_val_int_f[3:0] = {2'b00 , ic_fetch_val_f[1:0] } ;
-  assign ic_fetch_val_shift_right[3:0] = {ic_fetch_val_int_f << ifu_fetch_addr_int_f[1] } ;
-
-   assign iccm_rdmux_data[77:0] = iccm_rd_data_ecc[77:0];
-   for (genvar i=0; i < 2 ; i++) begin : ICCM_ECC_CHECK
-      assign iccm_ecc_word_enable[i] = ((|ic_fetch_val_shift_right[(2*i+1):(2*i)] & ~exu_flush_final & sel_iccm_data) | iccm_dma_rvalid_in) & ~dec_tlu_core_ecc_disable;
-   rvecc_decode  ecc_decode (
-                           .en(iccm_ecc_word_enable[i]),
-                           .sed_ded ( 1'b0 ),    // 1 : means only detection
-                           .din(iccm_rdmux_data[(39*i+31):(39*i)]),
-                           .ecc_in(iccm_rdmux_data[(39*i+38):(39*i+32)]),
-                           .dout(iccm_corrected_data[i][31:0]),
-                           .ecc_out(iccm_corrected_ecc[i][6:0]),
-                           .single_ecc_error(iccm_single_ecc_error[i]),
-                           .double_ecc_error(iccm_double_ecc_error[i]));
-end
-
-  assign iccm_rd_ecc_single_err  = (|iccm_single_ecc_error[1:0] ) & ifc_iccm_access_f & ifc_fetch_req_f;
-  assign iccm_rd_ecc_double_err[1:0]  = ~ifu_fetch_addr_int_f[1] ? ({iccm_double_ecc_error[0], iccm_double_ecc_error[0]} ) & {2{ifc_iccm_access_f}} :
-                                                                   ({iccm_double_ecc_error[1], iccm_double_ecc_error[0]} ) & {2{ifc_iccm_access_f}} ;
-
-  assign iccm_corrected_data_f_mux[31:0] = iccm_single_ecc_error[0] ? iccm_corrected_data[0] : iccm_corrected_data[1];
-  assign iccm_corrected_ecc_f_mux[6:0]   = iccm_single_ecc_error[0] ? iccm_corrected_ecc[0]  : iccm_corrected_ecc[1];
-
-  assign iccm_ecc_write_status           = ((iccm_rd_ecc_single_err & ~iccm_rd_ecc_single_err_ff)  & ~exu_flush_final) | iccm_dma_sb_error;
-  assign iccm_rd_ecc_single_err_hold_in  = (iccm_rd_ecc_single_err | iccm_rd_ecc_single_err_ff) & ~exu_flush_final ;
-  assign iccm_error_start                =  iccm_rd_ecc_single_err;
-  assign iccm_ecc_corr_index_in[pt.ICCM_BITS-1:2] = iccm_single_ecc_error[0] ? iccm_rw_addr_f[pt.ICCM_BITS-1:2] : iccm_rw_addr_f[pt.ICCM_BITS-1:2] + 1'b1 ;
-
-   rvdffie #(pt.ICCM_BITS-1) iccm_index_f   (.*, .clk(free_l2clk), .din({iccm_rw_addr[pt.ICCM_BITS-1:2],
-                                                                         iccm_rd_ecc_single_err_hold_in
-                                                                                                       }),
-                                                                  .dout({iccm_rw_addr_f[pt.ICCM_BITS-1:2],
-                                                                         iccm_rd_ecc_single_err_ff}));
-
-   rvdffe #((39+(pt.ICCM_BITS-2)))      ecc_dat0_ff  (
-                                                      .clk(clk),
-                                                      .din({iccm_corrected_ecc_f_mux[6:0],  iccm_corrected_data_f_mux[31:0],iccm_ecc_corr_index_in[pt.ICCM_BITS-1:2]}),
-                                                      .dout({iccm_ecc_corr_data_ff[38:0]   ,iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2]}),
-                                                      .en(iccm_ecc_write_status),
-                                                      .*
-                                                      );
-
-     end else begin : iccm_disabled
-         assign iccm_dma_rvalid = 1'b0 ;
-         assign iccm_dma_ecc_error = 1'b0 ;
-         assign iccm_dma_rdata[63:0] = '0 ;
-         assign iccm_single_ecc_error = '0 ;
-         assign iccm_dma_rtag         = '0 ;
-
-
-
-
-
-
-         assign iccm_rd_ecc_single_err                 = 1'b0 ;
-         assign iccm_rd_ecc_double_err                 = '0 ;
-         assign iccm_rd_ecc_single_err_ff              = 1'b0 ;
-         assign iccm_error_start                         = 1'b0;
-         assign iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2]  =  '0;
-         assign iccm_ecc_corr_data_ff[38:0]            =  '0;
-         assign iccm_ecc_write_status                  =  '0;
-
-
-
-
-
-
-    end
-
-
-////// ICCM signals
-
-
- assign   ic_rd_en    =  (ifc_fetch_req_bf & ~ifc_fetch_uncacheable_bf & ~ifc_iccm_access_bf  &
-                            ~(((miss_state == STREAM) & ~miss_state_en)                                       |
-                              ((miss_state == CRIT_BYP_OK) & ~miss_state_en)                                  |
-                              ((miss_state == STALL_SCND_MISS) & ~miss_state_en)                              |
-                              ((miss_state == MISS_WAIT) & ~miss_state_en)                                    |
-                              ((miss_state == CRIT_WRD_RDY) & ~miss_state_en)  |
-                              ((miss_state == CRIT_BYP_OK) &  miss_state_en &  (miss_nxtstate == MISS_WAIT))  ))  |
-                             ( ifc_fetch_req_bf & exu_flush_final  & ~ifc_fetch_uncacheable_bf & ~ifc_iccm_access_bf )     ;
-
-logic   ic_real_rd_wp_unused;
-assign  ic_real_rd_wp_unused  =  (ifc_fetch_req_bf &  ~ifc_iccm_access_bf  &  ~ifc_region_acc_fault_final_bf & ~dec_tlu_fence_i_wb & ~stream_miss_f & ~ic_act_miss_f &
-                            ~(((miss_state == STREAM) & ~miss_state_en) |
-                              ((miss_state == CRIT_BYP_OK) & ~miss_state_en & ~(miss_nxtstate == MISS_WAIT)) |
-                              ((miss_state == CRIT_BYP_OK) &  miss_state_en &  (miss_nxtstate == MISS_WAIT)) |
-                              ((miss_state == MISS_WAIT) & ~miss_state_en) |
-                              ((miss_state == STALL_SCND_MISS) & ~miss_state_en)  |
-                              ((miss_state == CRIT_WRD_RDY) & ~miss_state_en)  |
-                              ((miss_nxtstate == STREAM) &  miss_state_en)  |
-                              ((miss_state == SCND_MISS) & ~miss_state_en))) |
-                          (ifc_fetch_req_bf &  ~ifc_iccm_access_bf  &  ~ifc_region_acc_fault_final_bf & ~dec_tlu_fence_i_wb & ~stream_miss_f & exu_flush_final)  ;
-
-
-assign ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] = bus_ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] & {pt.ICACHE_NUM_WAYS{write_ic_16_bytes}};
-assign ic_write_stall                =  write_ic_16_bytes &  ~((((miss_state== CRIT_BYP_OK) | ((miss_state==STREAM) & ~(exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f ))) & ~(bus_ifu_wr_en_ff & last_beat & ~uncacheable_miss_ff)));
-
-
-
-
-///////////////////////////////////////////////////////////////
-// Icache status and LRU
-///////////////////////////////////////////////////////////////
-logic [pt.ICACHE_NUM_WAYS-1:0] ic_tag_valid_unq;
-if (pt.ICACHE_ENABLE == 1 ) begin: icache_enabled
-   assign  ic_valid  = ~ifu_wr_cumulative_err_data & ~(reset_ic_in | reset_ic_ff) & ~reset_tag_valid_for_miss;
-
-   assign ifu_status_wr_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] = ((ic_debug_rd_en | ic_debug_wr_en ) & ic_debug_tag_array) ?
-                                                                           ic_debug_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] :
-                                                                           ifu_status_wr_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO];
-
-   // status
-
-         assign way_status_wr_en_w_debug = way_status_wr_en | (ic_debug_wr_en  & ic_debug_tag_array);
-
-         assign way_status_new_w_debug[pt.ICACHE_STATUS_BITS-1:0]  = (ic_debug_wr_en  & ic_debug_tag_array) ? (pt.ICACHE_STATUS_BITS == 1) ? ic_debug_wr_data[4] : ic_debug_wr_data[6:4] :
-                                                way_status_new[pt.ICACHE_STATUS_BITS-1:0] ;
-
-   rvdffie #(.WIDTH(pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO+1+pt.ICACHE_STATUS_BITS),.OVERRIDE(1))  status_misc_ff
-     (.*,
-      .clk(free_l2clk),
-      .din({ ifu_status_wr_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO], way_status_wr_en_w_debug, way_status_new_w_debug[pt.ICACHE_STATUS_BITS-1:0]}),
-      .dout({ifu_status_wr_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],      way_status_wr_en_ff,      way_status_new_ff[pt.ICACHE_STATUS_BITS-1:0]} )
-      );
-
-   logic [(pt.ICACHE_TAG_DEPTH/8)-1 : 0] way_status_clken;
-   logic [(pt.ICACHE_TAG_DEPTH/8)-1 : 0] way_status_clk;
-
-   for (genvar i=0 ; i<pt.ICACHE_TAG_DEPTH/8 ; i++) begin : CLK_GRP_WAY_STATUS
-      assign way_status_clken[i] = (ifu_status_wr_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+3] == i );
-     `ifdef RV_FPGA_OPTIMIZE
-        assign way_status_clk[i] = 1'b0;
-     `else
-           rvclkhdr way_status_cgc ( .en(way_status_clken[i]),   .l1clk(way_status_clk[i]), .* );
-     `endif
-
-
-      for (genvar j=0 ; j<8 ; j++) begin : WAY_STATUS
-         rvdffs_fpga #(pt.ICACHE_STATUS_BITS) ic_way_status (.*,
-                   .clk(way_status_clk[i]),
-                   .clken(way_status_clken[i]),
-                   .rawclk(clk),
-                   .en(((ifu_status_wr_addr_ff[pt.ICACHE_TAG_INDEX_LO+2:pt.ICACHE_TAG_INDEX_LO] == j) & way_status_wr_en_ff)),
-                   .din(way_status_new_ff[pt.ICACHE_STATUS_BITS-1:0]),
-                   .dout(way_status_out[8*i+j]));
-      end  // WAY_STATUS
-   end  // CLK_GRP_WAY_STATUS
-
-  always_comb begin : way_status_out_mux
-      way_status[pt.ICACHE_STATUS_BITS-1:0] = '0 ;
-      for (int j=0; j< pt.ICACHE_TAG_DEPTH; j++) begin : status_mux_loop
-        if (ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO)'(j)) begin : mux_out
-         way_status[pt.ICACHE_STATUS_BITS-1:0] =  way_status_out[j];
-        end
-      end
-  end
-
-         assign ifu_ic_rw_int_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] = ((ic_debug_rd_en | ic_debug_wr_en ) & ic_debug_tag_array) ?
-                                                                        ic_debug_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] :
-                                                                        ifu_ic_rw_int_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO];
-         assign ifu_tag_wren_w_debug[pt.ICACHE_NUM_WAYS-1:0] = ifu_tag_wren[pt.ICACHE_NUM_WAYS-1:0] | ic_debug_tag_wr_en[pt.ICACHE_NUM_WAYS-1:0] ;
-
-         assign ic_valid_w_debug = (ic_debug_wr_en & ic_debug_tag_array) ? ic_debug_wr_data[0] : ic_valid;
-
-         rvdffie #(pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO+pt.ICACHE_NUM_WAYS+1) tag_addr_ff (.*,
-                                                                                              .clk(free_l2clk),
-                                                                                              .din({ifu_ic_rw_int_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],
-                                                                                                    ifu_tag_wren_w_debug[pt.ICACHE_NUM_WAYS-1:0],
-                                                                                                    ic_valid_w_debug}),
-                                                                                              .dout({ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],
-                                                                                                     ifu_tag_wren_ff[pt.ICACHE_NUM_WAYS-1:0],
-                                                                                                     ic_valid_ff})
-                                                                                              );
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_DEPTH-1:0] ic_tag_valid_out ;
-
-   logic [(pt.ICACHE_TAG_DEPTH/32)-1:0] [pt.ICACHE_NUM_WAYS-1:0] tag_valid_clken ;
-   logic [(pt.ICACHE_TAG_DEPTH/32)-1:0] [pt.ICACHE_NUM_WAYS-1:0] tag_valid_clk   ;
-
-   for (genvar i=0 ; i<pt.ICACHE_TAG_DEPTH/32 ; i++) begin : CLK_GRP_TAG_VALID
-      for (genvar j=0; j<pt.ICACHE_NUM_WAYS; j++) begin : way_clken
-      if (pt.ICACHE_TAG_DEPTH == 32 ) begin
-        assign tag_valid_clken[i][j] =  ifu_tag_wren_ff[j] | perr_err_inv_way[j] | reset_all_tags;
-      end else begin
-         assign tag_valid_clken[i][j] = (((ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+5] == i ) &  ifu_tag_wren_ff[j] ) |
-                                        ((perr_ic_index_ff     [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+5] == i ) &  perr_err_inv_way[j]) | reset_all_tags);
-      end
-
-     `ifdef RV_FPGA_OPTIMIZE
-        assign tag_valid_clk[i][j]  = 1'b0;
-     `else
-           rvclkhdr way_status_cgc ( .en(tag_valid_clken[i][j]),   .l1clk(tag_valid_clk[i][j]), .* );
-     `endif
-
-
-
-      for (genvar k=0 ; k<32 ; k++) begin : TAG_VALID
-         rvdffs_fpga #(1) ic_way_tagvalid_dup (.*,
-                   .clk(tag_valid_clk[i][j]),
-                   .clken(tag_valid_clken[i][j]),
-                   .rawclk(clk),
-                   .en(((ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (k + 32*i)) & ifu_tag_wren_ff[j] ) |
-                       ((perr_ic_index_ff     [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (k + 32*i)) & perr_err_inv_way[j]) | reset_all_tags),
-                   .din(ic_valid_ff & ~reset_all_tags & ~perr_sel_invalidate),
-                   .dout(ic_tag_valid_out[j][32*i+k]));
-      end
-      end
-   end
-
-
-  always_comb begin : tag_valid_out_mux
-      ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0] = '0;
-      for (int j=0; j< pt.ICACHE_TAG_DEPTH; j++) begin : tag_valid_loop
-        if (ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO)'(j)) begin : valid_out
-           for ( int k=0; k<pt.ICACHE_NUM_WAYS; k++) begin
-             ic_tag_valid_unq[k] |= ic_tag_valid_out[k][j];
-        end
-      end
-      end
-  end
-   //   four-way set associative - three bits
-//   each bit represents one branch point in a binary decision tree; let 1
-//   represent that the left side has been referenced more recently than the
-//   right side, and 0 vice-versa
-//
-//              are all 4 ways valid?
-//                   /       \
-//                  |        no, use an invalid way.
-//                  |
-//                  |
-//             bit_0 == 0?             state | replace      ref to | next state
-//               /       \             ------+--------      -------+-----------
-//              y         n             x00  |  way_0      way_0 |    _11
-//             /           \            x10  |  way_1      way_1 |    _01
-//      bit_1 == 0?    bit_2 == 0?      0x1  |  way_2      way_2 |    1_0
-//        /    \          /    \        1x1  |  way_3      way_3 |    0_0
-//       y      n        y      n
-//      /        \      /        \        ('x' means don't care       ('_' means unchanged)
-//    way_0    way_1  way_2     way_3      don't care)
-
-   if (pt.ICACHE_NUM_WAYS == 4) begin: four_way_plru
-   assign replace_way_mb_any[3] = ( way_status_mb_ff[2]  & way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[3]& tagv_mb_ff[2] &  tagv_mb_ff[1] &  tagv_mb_ff[0]) ;
-   assign replace_way_mb_any[2] = (~way_status_mb_ff[2]  & way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[2]& tagv_mb_ff[1] &  tagv_mb_ff[0]) ;
-   assign replace_way_mb_any[1] = ( way_status_mb_ff[1] & ~way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[1]& tagv_mb_ff[0] ) ;
-   assign replace_way_mb_any[0] = (~way_status_mb_ff[1] & ~way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[0] ) ;
-
-   assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = ({3{~exu_flush_final & ic_rd_hit[0]}} & {way_status[2] , 1'b1 , 1'b1}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[1]}} & {way_status[2] , 1'b0 , 1'b1}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[2]}} & {1'b1 ,way_status[1]  , 1'b0}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[3]}} & {1'b0 ,way_status[1]  , 1'b0}) ;
-
-  assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = ({3{replace_way_mb_any[0]}} & {way_status_mb_ff[2] , 1'b1 , 1'b1}) |
-                                   ({3{replace_way_mb_any[1]}} & {way_status_mb_ff[2] , 1'b0 , 1'b1}) |
-                                   ({3{replace_way_mb_any[2]}} & {1'b1 ,way_status_mb_ff[1]  , 1'b0}) |
-                                   ({3{replace_way_mb_any[3]}} & {1'b0 ,way_status_mb_ff[1]  , 1'b0}) ;
-  end
-   else begin : two_ways_plru
-      assign replace_way_mb_any[0]                      = (~way_status_mb_ff  & tagv_mb_ff[0] & tagv_mb_ff[1]) | ~tagv_mb_ff[0];
-      assign replace_way_mb_any[1]                      = ( way_status_mb_ff  & tagv_mb_ff[0] & tagv_mb_ff[1]) | ~tagv_mb_ff[1] & tagv_mb_ff[0];
-      assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = ic_rd_hit[0];
-      assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = replace_way_mb_any[0];
-
-   end
-  // Make sure to select the way_status_hit_new even when in hit_under_miss.
-  assign way_status_new[pt.ICACHE_STATUS_BITS-1:0]     = (bus_ifu_wr_en_ff_q  & last_beat )  ? way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] :
-                                                          way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] ;
-
-
-  assign way_status_wr_en  = (bus_ifu_wr_en_ff_q  & last_beat) | ic_act_hit_f;
-
-   for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin  : bus_wren_loop
-      assign bus_wren[i]           = bus_ifu_wr_en_ff_q & replace_way_mb_any[i] & miss_pending ;
-      assign bus_wren_last[i]      = bus_ifu_wr_en_ff_wo_err & replace_way_mb_any[i] & miss_pending & bus_last_data_beat;
-      assign ifu_tag_wren[i]       = bus_wren_last[i] | wren_reset_miss[i];
-      assign wren_reset_miss[i]    = replace_way_mb_any[i] & reset_tag_valid_for_miss ;
-
-   end
-   assign bus_ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] = bus_wren[pt.ICACHE_NUM_WAYS-1:0];
-
-
-end else begin: icache_disabled
-   assign ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0]      = '0;
-   assign way_status[pt.ICACHE_STATUS_BITS-1:0]         = '0;
-   assign replace_way_mb_any[pt.ICACHE_NUM_WAYS-1:0]    = '0;
-   assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = '0;
-   assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = '0;
-   assign way_status_new[pt.ICACHE_STATUS_BITS-1:0]     = '0;
-   assign way_status_wr_en                           = '0;
-   assign bus_wren[pt.ICACHE_NUM_WAYS-1:0]              = '0;
-
-end
-
-   assign ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0] = ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0]   & {pt.ICACHE_NUM_WAYS{(~fetch_uncacheable_ff & ifc_fetch_req_f_raw) }} ;
-   assign ic_debug_tag_val_rd_out           = |(ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0] &  ic_debug_way_ff[pt.ICACHE_NUM_WAYS-1:0]   & {pt.ICACHE_NUM_WAYS{ic_debug_rd_en_ff}}) ;
-///////////////////////////////////////////
-// PMU signals
-///////////////////////////////////////////
-
- assign ifu_pmu_ic_miss_in   = ic_act_miss_f ;
- assign ifu_pmu_ic_hit_in    = ic_act_hit_f  ;
- assign ifu_pmu_bus_error_in = |ifc_bus_acc_fault_f;
- assign ifu_pmu_bus_trxn_in  = bus_cmd_sent ;
- assign ifu_pmu_bus_busy_in  = ifu_bus_arvalid_ff & ~ifu_bus_arready_ff & miss_pending ;
-
-   rvdffie #(9) ifu_pmu_sigs_ff (.*,
-                    .clk (free_l2clk),
-                    .din ({ifc_fetch_uncacheable_bf, ifc_fetch_req_qual_bf, dma_sb_err_state, dec_tlu_fence_i_wb,
-                           ifu_pmu_ic_miss_in,
-                           ifu_pmu_ic_hit_in,
-                           ifu_pmu_bus_error_in,
-                           ifu_pmu_bus_busy_in,
-                           ifu_pmu_bus_trxn_in
-                          }),
-                    .dout({fetch_uncacheable_ff, ifc_fetch_req_f_raw, dma_sb_err_state_ff, reset_all_tags,
-                           ifu_pmu_ic_miss,
-                           ifu_pmu_ic_hit,
-                           ifu_pmu_bus_error,
-                           ifu_pmu_bus_busy,
-                           ifu_pmu_bus_trxn
-                           }));
-
-
-///////////////////////////////////////////////////////
-// Cache debug logic                                 //
-///////////////////////////////////////////////////////
-assign ic_debug_addr[pt.ICACHE_INDEX_HI:3] = dec_tlu_ic_diag_pkt.icache_dicawics[pt.ICACHE_INDEX_HI-3:0] ;
-assign ic_debug_way_enc[01:00]             = dec_tlu_ic_diag_pkt.icache_dicawics[15:14] ;
-
-
-assign ic_debug_tag_array       = dec_tlu_ic_diag_pkt.icache_dicawics[16] ;
-assign ic_debug_rd_en           = dec_tlu_ic_diag_pkt.icache_rd_valid ;
-assign ic_debug_wr_en           = dec_tlu_ic_diag_pkt.icache_wr_valid ;
-
-
-assign ic_debug_way[pt.ICACHE_NUM_WAYS-1:0]        = {(ic_debug_way_enc[1:0] == 2'b11),
-                                                      (ic_debug_way_enc[1:0] == 2'b10),
-                                                      (ic_debug_way_enc[1:0] == 2'b01),
-                                                      (ic_debug_way_enc[1:0] == 2'b00) };
-
-assign ic_debug_tag_wr_en[pt.ICACHE_NUM_WAYS-1:0] = {pt.ICACHE_NUM_WAYS{ic_debug_wr_en & ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-
-assign ic_debug_ict_array_sel_in      =  ic_debug_rd_en & ic_debug_tag_array ;
-
-rvdff_fpga #(01+pt.ICACHE_NUM_WAYS) ifu_debug_sel_ff (.*, .clk (debug_c1_clk),
-                    .clken(debug_c1_clken), .rawclk(clk),
-                    .din ({ic_debug_ict_array_sel_in,
-                           ic_debug_way[pt.ICACHE_NUM_WAYS-1:0]
-                          }),
-                    .dout({ic_debug_ict_array_sel_ff,
-                           ic_debug_way_ff[pt.ICACHE_NUM_WAYS-1:0]
-                           }));
-
-
-
-
-assign debug_data_clken  =  ic_debug_rd_en_ff;
-
-
-
-
-// memory protection  - equation to look identical to the LSU equation
-   assign ifc_region_acc_okay = (~(|{pt.INST_ACCESS_ENABLE0,pt.INST_ACCESS_ENABLE1,pt.INST_ACCESS_ENABLE2,pt.INST_ACCESS_ENABLE3,pt.INST_ACCESS_ENABLE4,pt.INST_ACCESS_ENABLE5,pt.INST_ACCESS_ENABLE6,pt.INST_ACCESS_ENABLE7})) |
-                               (pt.INST_ACCESS_ENABLE0 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK0)) == (pt.INST_ACCESS_ADDR0 | pt.INST_ACCESS_MASK0)) |
-                               (pt.INST_ACCESS_ENABLE1 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK1)) == (pt.INST_ACCESS_ADDR1 | pt.INST_ACCESS_MASK1)) |
-                               (pt.INST_ACCESS_ENABLE2 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK2)) == (pt.INST_ACCESS_ADDR2 | pt.INST_ACCESS_MASK2)) |
-                               (pt.INST_ACCESS_ENABLE3 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK3)) == (pt.INST_ACCESS_ADDR3 | pt.INST_ACCESS_MASK3)) |
-                               (pt.INST_ACCESS_ENABLE4 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK4)) == (pt.INST_ACCESS_ADDR4 | pt.INST_ACCESS_MASK4)) |
-                               (pt.INST_ACCESS_ENABLE5 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK5)) == (pt.INST_ACCESS_ADDR5 | pt.INST_ACCESS_MASK5)) |
-                               (pt.INST_ACCESS_ENABLE6 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK6)) == (pt.INST_ACCESS_ADDR6 | pt.INST_ACCESS_MASK6)) |
-                               (pt.INST_ACCESS_ENABLE7 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK7)) == (pt.INST_ACCESS_ADDR7 | pt.INST_ACCESS_MASK7));
-
-   assign ifc_region_acc_fault_memory_bf   =  ~ifc_iccm_access_bf & ~ifc_region_acc_okay & ifc_fetch_req_bf;
-
-   assign ifc_region_acc_fault_final_bf = ifc_region_acc_fault_bf | ifc_region_acc_fault_memory_bf;
-
-
-
-
-endmodule  // eb1_ifu_mem_ctl
diff --git a/verilog/rtl/BrqRV_EB1/design/include/eb1_def.sv b/verilog/rtl/BrqRV_EB1/design/include/eb1_def.sv
deleted file mode 100644
index 15df549..0000000
--- a/verilog/rtl/BrqRV_EB1/design/include/eb1_def.sv
+++ /dev/null
@@ -1,405 +0,0 @@
-// performance monitor stuff
-//`ifndef eb1_DEF_SV
-//`define eb1_DEF_SV
-package eb1_pkg;
-
-typedef struct packed {
-                       logic  trace_rv_i_valid_ip;
-                       logic [31:0] trace_rv_i_insn_ip;
-                       logic [31:0] trace_rv_i_address_ip;
-                       logic  trace_rv_i_exception_ip;
-                       logic [4:0] trace_rv_i_ecause_ip;
-                       logic  trace_rv_i_interrupt_ip;
-                       logic [31:0] trace_rv_i_tval_ip;
-                       } eb1_trace_pkt_t;
-
-
-typedef enum logic [3:0] {
-                          NULL     = 4'b0000,
-                          MUL      = 4'b0001,
-                          LOAD     = 4'b0010,
-                          STORE    = 4'b0011,
-                          ALU      = 4'b0100,
-                          CSRREAD  = 4'b0101,
-                          CSRWRITE = 4'b0110,
-                          CSRRW    = 4'b0111,
-                          EBREAK   = 4'b1000,
-                          ECALL    = 4'b1001,
-                          FENCE    = 4'b1010,
-                          FENCEI   = 4'b1011,
-                          MRET     = 4'b1100,
-                          CONDBR   = 4'b1101,
-                          JAL      = 4'b1110,
-                          BITMANIPU = 4'b1111
-                          } eb1_inst_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic wb;
-                       logic [2:0] tag;
-                       logic [4:0] rd;
-                       } eb1_load_cam_pkt_t;
-
-typedef struct packed {
-                       logic pc0_call;
-                       logic pc0_ret;
-                       logic pc0_pc4;
-                       } eb1_rets_pkt_t;
-typedef struct packed {
-                       logic valid;
-                       logic [11:0] toffset;
-                       logic [1:0] hist;
-                       logic br_error;
-                       logic br_start_error;
-                       logic  bank;
-                       logic [31:1] prett;  // predicted ret target
-                       logic way;
-                       logic ret;
-                       } eb1_br_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic [1:0] hist;
-                       logic br_error;
-                       logic br_start_error;
-                       logic way;
-                       logic middle;
-                       } eb1_br_tlu_pkt_t;
-
-typedef struct packed {
-                       logic misp;
-                       logic ataken;
-                       logic boffset;
-                       logic pc4;
-                       logic [1:0] hist;
-                       logic [11:0] toffset;
-                       logic valid;
-                       logic br_error;
-                       logic br_start_error;
-                       logic pcall;
-                       logic pja;
-                       logic way;
-                       logic pret;
-                       // for power use the pret bit to clock the prett field
-                       logic [31:1] prett;
-                       } eb1_predict_pkt_t;
-
-typedef struct packed {
-                       // unlikely to change
-                       logic icaf;
-                       logic icaf_second;
-                       logic [1:0] icaf_type;
-                       logic fence_i;
-                       logic [3:0] i0trigger;
-                       logic pmu_i0_br_unpred;     // pmu
-                       logic pmu_divide;
-                       // likely to change
-                       logic legal;
-                       logic pmu_lsu_misaligned;
-                       eb1_inst_pkt_t pmu_i0_itype;        // pmu - instruction type
-                       } eb1_trap_pkt_t;
-
-typedef struct packed {
-                       // unlikely to change
-                       logic i0div;
-                       logic csrwen;
-                       logic csrwonly;
-                       logic [11:0] csrwaddr;
-                       // likely to change
-                       logic [4:0] i0rd;
-                       logic i0load;
-                       logic i0store;
-                       logic i0v;
-                       logic i0valid;
-                       } eb1_dest_pkt_t;
-
-typedef struct packed {
-                       logic mul;
-                       logic load;
-                       logic alu;
-                       } eb1_class_pkt_t;
-
-typedef struct packed {
-                       logic [4:0] rs1;
-                       logic [4:0] rs2;
-                       logic [4:0] rd;
-                       } eb1_reg_pkt_t;
-
-
-typedef struct packed {
-                       logic clz;
-                       logic ctz;
-                       logic pcnt;
-                       logic sext_b;
-                       logic sext_h;
-                       logic slo;
-                       logic sro;
-                       logic min;
-                       logic max;
-                       logic pack;
-                       logic packu;
-                       logic packh;
-                       logic rol;
-                       logic ror;
-                       logic grev;
-                       logic gorc;
-                       logic zbb;
-                       logic sbset;
-                       logic sbclr;
-                       logic sbinv;
-                       logic sbext;
-                       logic sh1add;
-                       logic sh2add;
-                       logic sh3add;
-                       logic zba;
-                       logic land;
-                       logic lor;
-                       logic lxor;
-                       logic sll;
-                       logic srl;
-                       logic sra;
-                       logic beq;
-                       logic bne;
-                       logic blt;
-                       logic bge;
-                       logic add;
-                       logic sub;
-                       logic slt;
-                       logic unsign;
-                       logic jal;
-                       logic predict_t;
-                       logic predict_nt;
-                       logic csr_write;
-                       logic csr_imm;
-                       } eb1_alu_pkt_t;
-
-typedef struct packed {
-                       logic fast_int;
-/* verilator lint_off SYMRSVDWORD */
-                       logic stack;
-/* verilator lint_on SYMRSVDWORD */
-                       logic by;
-                       logic half;
-                       logic word;
-                       logic dword;  // for dma
-                       logic load;
-                       logic store;
-                       logic unsign;
-                       logic dma;    // dma pkt
-                       logic store_data_bypass_d;
-                       logic load_ldst_bypass_d;
-                       logic store_data_bypass_m;
-                       logic valid;
-                       } eb1_lsu_pkt_t;
-
-typedef struct packed {
-                      logic inst_type;   //0: Load, 1: Store
-                      //logic dma_valid;
-                      logic exc_type;    //0: MisAligned, 1: Access Fault
-                      logic [3:0] mscause;
-                      logic [31:0] addr;
-                      logic single_ecc_error;
-                      logic exc_valid;
-                      } eb1_lsu_error_pkt_t;
-
-typedef struct packed {
-                       logic clz;
-                       logic ctz;
-                       logic pcnt;
-                       logic sext_b;
-                       logic sext_h;
-                       logic slo;
-                       logic sro;
-                       logic min;
-                       logic max;
-                       logic pack;
-                       logic packu;
-                       logic packh;
-                       logic rol;
-                       logic ror;
-                       logic grev;
-                       logic gorc;
-                       logic zbb;
-                       logic sbset;
-                       logic sbclr;
-                       logic sbinv;
-                       logic sbext;
-                       logic zbs;
-                       logic bext;
-                       logic bdep;
-                       logic zbe;
-                       logic clmul;
-                       logic clmulh;
-                       logic clmulr;
-                       logic zbc;
-                       logic shfl;
-                       logic unshfl;
-                       logic zbp;
-                       logic crc32_b;
-                       logic crc32_h;
-                       logic crc32_w;
-                       logic crc32c_b;
-                       logic crc32c_h;
-                       logic crc32c_w;
-                       logic zbr;
-                       logic bfp;
-                       logic zbf;
-                       logic sh1add;
-                       logic sh2add;
-                       logic sh3add;
-                       logic zba;
-                       logic alu;
-                       logic rs1;
-                       logic rs2;
-                       logic imm12;
-                       logic rd;
-                       logic shimm5;
-                       logic imm20;
-                       logic pc;
-                       logic load;
-                       logic store;
-                       logic lsu;
-                       logic add;
-                       logic sub;
-                       logic land;
-                       logic lor;
-                       logic lxor;
-                       logic sll;
-                       logic sra;
-                       logic srl;
-                       logic slt;
-                       logic unsign;
-                       logic condbr;
-                       logic beq;
-                       logic bne;
-                       logic bge;
-                       logic blt;
-                       logic jal;
-                       logic by;
-                       logic half;
-                       logic word;
-                       logic csr_read;
-                       logic csr_clr;
-                       logic csr_set;
-                       logic csr_write;
-                       logic csr_imm;
-                       logic presync;
-                       logic postsync;
-                       logic ebreak;
-                       logic ecall;
-                       logic mret;
-                       logic mul;
-                       logic rs1_sign;
-                       logic rs2_sign;
-                       logic low;
-                       logic div;
-                       logic rem;
-                       logic fence;
-                       logic fence_i;
-                       logic pm_alu;
-                       logic legal;
-                       } eb1_dec_pkt_t;
-
-
-typedef struct packed {
-                       logic valid;
-                       logic rs1_sign;
-                       logic rs2_sign;
-                       logic low;
-                       logic bext;
-                       logic bdep;
-                       logic clmul;
-                       logic clmulh;
-                       logic clmulr;
-                       logic grev;
-                       logic gorc;
-                       logic shfl;
-                       logic unshfl;
-                       logic crc32_b;
-                       logic crc32_h;
-                       logic crc32_w;
-                       logic crc32c_b;
-                       logic crc32c_h;
-                       logic crc32c_w;
-                       logic bfp;
-                       } eb1_mul_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic unsign;
-                       logic rem;
-                       } eb1_div_pkt_t;
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ccm_ext_in_pkt_t;
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_dccm_ext_in_pkt_t;
-
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ic_data_ext_in_pkt_t;
-
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ic_tag_ext_in_pkt_t;
-
-
-
-typedef struct packed {
-                        logic        select;
-                        logic        match;
-                        logic        store;
-                        logic        load;
-                        logic        execute;
-                        logic        m;
-                        logic [31:0] tdata2;
-            } eb1_trigger_pkt_t;
-
-
-typedef struct packed {
-                        logic [70:0]  icache_wrdata; // {dicad1[1:0], dicad0h[31:0], dicad0[31:0]}
-                        logic [16:0]  icache_dicawics; // Arraysel:24, Waysel:21:20, Index:16:3
-                        logic         icache_rd_valid;
-                        logic         icache_wr_valid;
-            } eb1_cache_debug_pkt_t;
-//`endif
-
-endpackage // eb1_pkg
diff --git a/verilog/rtl/BrqRV_EB1/design/lib/ahb_to_axi4.sv b/verilog/rtl/BrqRV_EB1/design/lib/ahb_to_axi4.sv
deleted file mode 100644
index 190ed8b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lib/ahb_to_axi4.sv
+++ /dev/null
@@ -1,289 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-// $Id$
-//
-// Owner:
-// Function: AHB to AXI4 Bridge
-// Comments:
-//
-//********************************************************************************
-module ahb_to_axi4
-import eb1_pkg::*;
-#(
-   TAG = 1,
-   `include "eb1_param.vh"
-)
-//   ,TAG  = 1)
-(
-   input                   clk,
-   input                   rst_l,
-   input                   scan_mode,
-   input                   bus_clk_en,
-   input                   clk_override,
-
-   // AXI signals
-   // AXI Write Channels
-   output logic            axi_awvalid,
-   input  logic            axi_awready,
-   output logic [TAG-1:0]  axi_awid,
-   output logic [31:0]     axi_awaddr,
-   output logic [2:0]      axi_awsize,
-   output logic [2:0]      axi_awprot,
-   output logic [7:0]      axi_awlen,
-   output logic [1:0]      axi_awburst,
-
-   output logic            axi_wvalid,
-   input  logic            axi_wready,
-   output logic [63:0]     axi_wdata,
-   output logic [7:0]      axi_wstrb,
-   output logic            axi_wlast,
-
-   input  logic            axi_bvalid,
-   output logic            axi_bready,
-   input  logic [1:0]      axi_bresp,
-   input  logic [TAG-1:0]  axi_bid,
-
-   // AXI Read Channels
-   output logic            axi_arvalid,
-   input  logic            axi_arready,
-   output logic [TAG-1:0]  axi_arid,
-   output logic [31:0]     axi_araddr,
-   output logic [2:0]      axi_arsize,
-   output logic [2:0]      axi_arprot,
-   output logic [7:0]      axi_arlen,
-   output logic [1:0]      axi_arburst,
-
-   input  logic            axi_rvalid,
-   output logic            axi_rready,
-   input  logic [TAG-1:0]  axi_rid,
-   input  logic [63:0]     axi_rdata,
-   input  logic [1:0]      axi_rresp,
-
-   // AHB-Lite signals
-   input logic [31:0]      ahb_haddr,     // ahb bus address
-   input logic [2:0]       ahb_hburst,    // tied to 0
-   input logic             ahb_hmastlock, // tied to 0
-   input logic [3:0]       ahb_hprot,     // tied to 4'b0011
-   input logic [2:0]       ahb_hsize,     // size of bus transaction (possible values 0,1,2,3)
-   input logic [1:0]       ahb_htrans,    // Transaction type (possible values 0,2 only right now)
-   input logic             ahb_hwrite,    // ahb bus write
-   input logic [63:0]      ahb_hwdata,    // ahb bus write data
-   input logic             ahb_hsel,      // this slave was selected
-   input logic             ahb_hreadyin,  // previous hready was accepted or not
-
-   output logic [63:0]      ahb_hrdata,      // ahb bus read data
-   output logic             ahb_hreadyout,   // slave ready to accept transaction
-   output logic             ahb_hresp        // slave response (high indicates erro)
-
-);
-
-   logic [7:0]       master_wstrb;
-
- typedef enum logic [1:0] {   IDLE   = 2'b00,    // Nothing in the buffer. No commands yet recieved
-                              WR     = 2'b01,    // Write Command recieved
-                              RD     = 2'b10,    // Read Command recieved
-                              PEND   = 2'b11     // Waiting on Read Data from core
-                            } state_t;
-   state_t      buf_state, buf_nxtstate;
-   logic        buf_state_en;
-
-   // Buffer signals (one entry buffer)
-   logic                    buf_read_error_in, buf_read_error;
-   logic [63:0]             buf_rdata;
-
-   logic                    ahb_hready;
-   logic                    ahb_hready_q;
-   logic [1:0]              ahb_htrans_in, ahb_htrans_q;
-   logic [2:0]              ahb_hsize_q;
-   logic                    ahb_hwrite_q;
-   logic [31:0]             ahb_haddr_q;
-   logic [63:0]             ahb_hwdata_q;
-   logic                    ahb_hresp_q;
-
-    //Miscellaneous signals
-   logic                    ahb_addr_in_dccm, ahb_addr_in_iccm, ahb_addr_in_pic;
-   logic                    ahb_addr_in_dccm_region_nc, ahb_addr_in_iccm_region_nc, ahb_addr_in_pic_region_nc;
-   // signals needed for the read data coming back from the core and to block any further commands as AHB is a blocking bus
-   logic                    buf_rdata_en;
-
-   logic                    ahb_addr_clk_en, buf_rdata_clk_en;
-   logic                    bus_clk, ahb_addr_clk, buf_rdata_clk;
-   // Command buffer is the holding station where we convert to AXI and send to core
-   logic                    cmdbuf_wr_en, cmdbuf_rst;
-   logic                    cmdbuf_full;
-   logic                    cmdbuf_vld, cmdbuf_write;
-   logic [1:0]              cmdbuf_size;
-   logic [7:0]              cmdbuf_wstrb;
-   logic [31:0]             cmdbuf_addr;
-   logic [63:0]             cmdbuf_wdata;
-
-// FSM to control the bus states and when to block the hready and load the command buffer
-   always_comb begin
-      buf_nxtstate      = IDLE;
-      buf_state_en      = 1'b0;
-      buf_rdata_en      = 1'b0;              // signal to load the buffer when the core sends read data back
-      buf_read_error_in = 1'b0;              // signal indicating that an error came back with the read from the core
-      cmdbuf_wr_en      = 1'b0;              // all clear from the gasket to load the buffer with the command for reads, command/dat for writes
-      case (buf_state)
-         IDLE: begin  // No commands recieved
-                  buf_nxtstate      = ahb_hwrite ? WR : RD;
-                  buf_state_en      = ahb_hready & ahb_htrans[1] & ahb_hsel;                 // only transition on a valid hrtans
-          end
-         WR: begin // Write command recieved last cycle
-                  buf_nxtstate      = (ahb_hresp | (ahb_htrans[1:0] == 2'b0) | ~ahb_hsel) ? IDLE : ahb_hwrite  ? WR : RD;
-                  buf_state_en      = (~cmdbuf_full | ahb_hresp) ;
-                  cmdbuf_wr_en      = ~cmdbuf_full & ~(ahb_hresp | ((ahb_htrans[1:0] == 2'b01) & ahb_hsel));   // Dont send command to the buffer in case of an error or when the master is not ready with the data now.
-         end
-         RD: begin // Read command recieved last cycle.
-                 buf_nxtstate      = ahb_hresp ? IDLE :PEND;                                       // If error go to idle, else wait for read data
-                 buf_state_en      = (~cmdbuf_full | ahb_hresp);                                   // only when command can go, or if its an error
-                 cmdbuf_wr_en      = ~ahb_hresp & ~cmdbuf_full;                                    // send command only when no error
-         end
-         PEND: begin // Read Command has been sent. Waiting on Data.
-                 buf_nxtstate      = IDLE;                                                          // go back for next command and present data next cycle
-                 buf_state_en      = axi_rvalid & ~cmdbuf_write;                                    // read data is back
-                 buf_rdata_en      = buf_state_en;                                                  // buffer the read data coming back from core
-                 buf_read_error_in = buf_state_en & |axi_rresp[1:0];                                // buffer error flag if return has Error ( ECC )
-         end
-     endcase
-   end // always_comb begin
-
-    rvdffs_fpga #($bits(state_t)) state_reg (.*, .din(buf_nxtstate), .dout({buf_state}), .en(buf_state_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk));
-
-   assign master_wstrb[7:0]   = ({8{ahb_hsize_q[2:0] == 3'b0}}  & (8'b1    << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b1}}  & (8'b11   << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b10}} & (8'b1111 << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b11}} & 8'b1111_1111);
-
-   // AHB signals
-   assign ahb_hreadyout       = ahb_hresp ? (ahb_hresp_q & ~ahb_hready_q) :
-                                         ((~cmdbuf_full | (buf_state == IDLE)) & ~(buf_state == RD | buf_state == PEND)  & ~buf_read_error);
-
-   assign ahb_hready          = ahb_hreadyout & ahb_hreadyin;
-   assign ahb_htrans_in[1:0]  = {2{ahb_hsel}} & ahb_htrans[1:0];
-   assign ahb_hrdata[63:0]    = buf_rdata[63:0];
-   assign ahb_hresp        = ((ahb_htrans_q[1:0] != 2'b0) & (buf_state != IDLE)  &
-
-                             ((~(ahb_addr_in_dccm | ahb_addr_in_iccm)) |                                                                                   // request not for ICCM or DCCM
-                             ((ahb_addr_in_iccm | (ahb_addr_in_dccm &  ahb_hwrite_q)) & ~((ahb_hsize_q[1:0] == 2'b10) | (ahb_hsize_q[1:0] == 2'b11))) |    // ICCM Rd/Wr OR DCCM Wr not the right size
-                             ((ahb_hsize_q[2:0] == 3'h1) & ahb_haddr_q[0])   |                                                                             // HW size but unaligned
-                             ((ahb_hsize_q[2:0] == 3'h2) & (|ahb_haddr_q[1:0])) |                                                                          // W size but unaligned
-                             ((ahb_hsize_q[2:0] == 3'h3) & (|ahb_haddr_q[2:0])))) |                                                                        // DW size but unaligned
-                             buf_read_error |                                                                                                              // Read ECC error
-                             (ahb_hresp_q & ~ahb_hready_q);
-
-   // Buffer signals - needed for the read data and ECC error response
-   rvdff_fpga  #(.WIDTH(64)) buf_rdata_ff     (.din(axi_rdata[63:0]),   .dout(buf_rdata[63:0]), .clk(buf_rdata_clk), .clken(buf_rdata_clk_en), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))  buf_read_error_ff(.din(buf_read_error_in), .dout(buf_read_error),  .clk(bus_clk),       .clken(bus_clk_en),       .rawclk(clk), .*);          // buf_read_error will be high only one cycle
-
-   // All the Master signals are captured before presenting it to the command buffer. We check for Hresp before sending it to the cmd buffer.
-   rvdff_fpga #(.WIDTH(1))  hresp_ff  (.din(ahb_hresp),          .dout(ahb_hresp_q),       .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hready_ff (.din(ahb_hready),         .dout(ahb_hready_q),      .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(2))  htrans_ff (.din(ahb_htrans_in[1:0]), .dout(ahb_htrans_q[1:0]), .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(3))  hsize_ff  (.din(ahb_hsize[2:0]),     .dout(ahb_hsize_q[2:0]),  .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hwrite_ff (.din(ahb_hwrite),         .dout(ahb_hwrite_q),      .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(32)) haddr_ff  (.din(ahb_haddr[31:0]),    .dout(ahb_haddr_q[31:0]), .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-
-   // Address check  dccm
-   rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                  .CCM_SIZE(pt.DCCM_SIZE)) addr_dccm_rangecheck (
-      .addr(ahb_haddr_q[31:0]),
-      .in_range(ahb_addr_in_dccm),
-      .in_region(ahb_addr_in_dccm_region_nc)
-   );
-
-   // Address check  iccm
-   if (pt.ICCM_ENABLE == 1) begin: GenICCM
-      rvrangecheck #(.CCM_SADR(pt.ICCM_SADR),
-                     .CCM_SIZE(pt.ICCM_SIZE)) addr_iccm_rangecheck (
-         .addr(ahb_haddr_q[31:0]),
-         .in_range(ahb_addr_in_iccm),
-         .in_region(ahb_addr_in_iccm_region_nc)
-      );
-   end else begin: GenNoICCM
-      assign ahb_addr_in_iccm = '0;
-      assign ahb_addr_in_iccm_region_nc = '0;
-   end
-
-   // PIC memory address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) addr_pic_rangecheck (
-      .addr(ahb_haddr_q[31:0]),
-      .in_range(ahb_addr_in_pic),
-      .in_region(ahb_addr_in_pic_region_nc)
-   );
-
-   // Command Buffer - Holding for the commands to be sent for the AXI. It will be converted to the AXI signals.
-   assign cmdbuf_rst         = (((axi_awvalid & axi_awready) | (axi_arvalid & axi_arready)) & ~cmdbuf_wr_en) | (ahb_hresp & ~cmdbuf_write);
-   assign cmdbuf_full        = (cmdbuf_vld & ~((axi_awvalid & axi_awready) | (axi_arvalid & axi_arready)));
-
-   rvdffsc_fpga #(.WIDTH(1))  cmdbuf_vldff      (.din(1'b1),              .dout(cmdbuf_vld),         .en(cmdbuf_wr_en), .clear(cmdbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(1))  cmdbuf_writeff    (.din(ahb_hwrite_q),      .dout(cmdbuf_write),       .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(2))  cmdbuf_sizeff     (.din(ahb_hsize_q[1:0]),  .dout(cmdbuf_size[1:0]),   .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(8))  cmdbuf_wstrbff    (.din(master_wstrb[7:0]), .dout(cmdbuf_wstrb[7:0]),  .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32)) cmdbuf_addrff     (.din(ahb_haddr_q[31:0]), .dout(cmdbuf_addr[31:0]),  .en(cmdbuf_wr_en & bus_clk_en),        .clk(clk), .*);
-   rvdffe       #(.WIDTH(64)) cmdbuf_wdataff    (.din(ahb_hwdata[63:0]),  .dout(cmdbuf_wdata[63:0]), .en(cmdbuf_wr_en & bus_clk_en),        .clk(clk), .*);
-
-   // AXI Write Command Channel
-   assign axi_awvalid           = cmdbuf_vld & cmdbuf_write;
-   assign axi_awid[TAG-1:0]     = '0;
-   assign axi_awaddr[31:0]      = cmdbuf_addr[31:0];
-   assign axi_awsize[2:0]       = {1'b0, cmdbuf_size[1:0]};
-   assign axi_awprot[2:0]       = 3'b0;
-   assign axi_awlen[7:0]        = '0;
-   assign axi_awburst[1:0]      = 2'b01;
-   // AXI Write Data Channel - This is tied to the command channel as we only write the command buffer once we have the data.
-   assign axi_wvalid            = cmdbuf_vld & cmdbuf_write;
-   assign axi_wdata[63:0]       = cmdbuf_wdata[63:0];
-   assign axi_wstrb[7:0]        = cmdbuf_wstrb[7:0];
-   assign axi_wlast             = 1'b1;
-  // AXI Write Response - Always ready. AHB does not require a write response.
-   assign axi_bready            = 1'b1;
-   // AXI Read Channels
-   assign axi_arvalid           = cmdbuf_vld & ~cmdbuf_write;
-   assign axi_arid[TAG-1:0]     = '0;
-   assign axi_araddr[31:0]      = cmdbuf_addr[31:0];
-   assign axi_arsize[2:0]       = {1'b0, cmdbuf_size[1:0]};
-   assign axi_arprot            = 3'b0;
-   assign axi_arlen[7:0]        = '0;
-   assign axi_arburst[1:0]      = 2'b01;
-   // AXI Read Response Channel - Always ready as AHB reads are blocking and the the buffer is available for the read coming back always.
-   assign axi_rready            = 1'b1;
-
-   // Clock header logic
-   assign ahb_addr_clk_en = bus_clk_en & (ahb_hready & ahb_htrans[1]);
-   assign buf_rdata_clk_en    = bus_clk_en & buf_rdata_en;
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign bus_clk = 1'b0;
-   assign ahb_addr_clk = 1'b0;
-   assign buf_rdata_clk = 1'b0;
-`else
-   rvclkhdr bus_cgc       (.en(bus_clk_en),       .l1clk(bus_clk),       .*);
-   rvclkhdr ahb_addr_cgc  (.en(ahb_addr_clk_en),  .l1clk(ahb_addr_clk),  .*);
-   rvclkhdr buf_rdata_cgc (.en(buf_rdata_clk_en), .l1clk(buf_rdata_clk), .*);
-`endif
-
-`ifdef RV_ASSERT_ON
-   property ahb_error_protocol;
-      @(posedge bus_clk) (ahb_hready & ahb_hresp) |-> (~$past(ahb_hready) & $past(ahb_hresp));
-   endproperty
-   assert_ahb_error_protocol: assert property (ahb_error_protocol) else
-      $display("Bus Error with hReady isn't preceded with Bus Error without hready");
-
-`endif
-
-endmodule // ahb_to_axi4
\ No newline at end of file
diff --git a/verilog/rtl/BrqRV_EB1/design/lib/axi4_to_ahb.sv b/verilog/rtl/BrqRV_EB1/design/lib/axi4_to_ahb.sv
deleted file mode 100644
index 18e5313..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lib/axi4_to_ahb.sv
+++ /dev/null
@@ -1,477 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Owner:
-// Function: AXI4 -> AHB Bridge
-// Comments:
-//
-//********************************************************************************
-module axi4_to_ahb
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
-,parameter TAG  = 1) (
-
-   input                   clk,
-   input                   free_clk,
-   input                   rst_l,
-   input                   scan_mode,
-   input                   bus_clk_en,
-   input                   clk_override,
-   input                   dec_tlu_force_halt,
-
-   // AXI signals
-   // AXI Write Channels
-   input  logic            axi_awvalid,
-   output logic            axi_awready,
-   input  logic [TAG-1:0]  axi_awid,
-   input  logic [31:0]     axi_awaddr,
-   input  logic [2:0]      axi_awsize,
-   input  logic [2:0]      axi_awprot,
-
-   input  logic            axi_wvalid,
-   output logic            axi_wready,
-   input  logic [63:0]     axi_wdata,
-   input  logic [7:0]      axi_wstrb,
-   input  logic            axi_wlast,
-
-   output logic            axi_bvalid,
-   input  logic            axi_bready,
-   output logic [1:0]      axi_bresp,
-   output logic [TAG-1:0]  axi_bid,
-
-   // AXI Read Channels
-   input  logic            axi_arvalid,
-   output logic            axi_arready,
-   input  logic [TAG-1:0]  axi_arid,
-   input  logic [31:0]     axi_araddr,
-   input  logic [2:0]      axi_arsize,
-   input  logic [2:0]      axi_arprot,
-
-   output logic            axi_rvalid,
-   input  logic            axi_rready,
-   output logic [TAG-1:0]  axi_rid,
-   output logic [63:0]     axi_rdata,
-   output logic [1:0]      axi_rresp,
-   output logic            axi_rlast,
-
-   // AHB-Lite signals
-   output logic [31:0]     ahb_haddr,       // ahb bus address
-   output logic [2:0]      ahb_hburst,      // tied to 0
-   output logic            ahb_hmastlock,   // tied to 0
-   output logic [3:0]      ahb_hprot,       // tied to 4'b0011
-   output logic [2:0]      ahb_hsize,       // size of bus transaction (possible values 0,1,2,3)
-   output logic [1:0]      ahb_htrans,      // Transaction type (possible values 0,2 only right now)
-   output logic            ahb_hwrite,      // ahb bus write
-   output logic [63:0]     ahb_hwdata,      // ahb bus write data
-
-   input logic [63:0]      ahb_hrdata,      // ahb bus read data
-   input logic             ahb_hready,      // slave ready to accept transaction
-   input logic             ahb_hresp        // slave response (high indicates erro)
-
-);
-
-   localparam ID   = 1;
-   localparam PRTY = 1;
-   typedef enum logic [2:0] {IDLE=3'b000, CMD_RD=3'b001, CMD_WR=3'b010, DATA_RD=3'b011, DATA_WR=3'b100, DONE=3'b101, STREAM_RD=3'b110, STREAM_ERR_RD=3'b111} state_t;
-   state_t buf_state, buf_nxtstate;
-
-   logic             slave_valid;
-   logic             slave_ready;
-   logic [TAG-1:0]   slave_tag;
-   logic [63:0]      slave_rdata;
-   logic [3:0]       slave_opc;
-
-   logic             wrbuf_en, wrbuf_data_en;
-   logic             wrbuf_cmd_sent, wrbuf_rst;
-   logic             wrbuf_vld;
-   logic             wrbuf_data_vld;
-   logic [TAG-1:0]   wrbuf_tag;
-   logic [2:0]       wrbuf_size;
-   logic [31:0]      wrbuf_addr;
-   logic [63:0]      wrbuf_data;
-   logic [7:0]       wrbuf_byteen;
-
-   logic             master_valid;
-   logic             master_ready;
-   logic [TAG-1:0]   master_tag;
-   logic [31:0]      master_addr;
-   logic [63:0]      master_wdata;
-   logic [2:0]       master_size;
-   logic [2:0]       master_opc;
-   logic [7:0]       master_byteen;
-
-   // Buffer signals (one entry buffer)
-   logic [31:0]                buf_addr;
-   logic [1:0]                 buf_size;
-   logic                       buf_write;
-   logic [7:0]                 buf_byteen;
-   logic                       buf_aligned;
-   logic [63:0]                buf_data;
-   logic [TAG-1:0]             buf_tag;
-
-   //Miscellaneous signals
-   logic                       buf_rst;
-   logic [TAG-1:0]             buf_tag_in;
-   logic [31:0]                buf_addr_in;
-   logic [7:0]                 buf_byteen_in;
-   logic [63:0]                buf_data_in;
-   logic                       buf_write_in;
-   logic                       buf_aligned_in;
-   logic [2:0]                 buf_size_in;
-
-   logic                       buf_state_en;
-   logic                       buf_wr_en;
-   logic                       buf_data_wr_en;
-   logic                       slvbuf_error_en;
-   logic                       wr_cmd_vld;
-
-   logic                       cmd_done_rst, cmd_done, cmd_doneQ;
-   logic                       trxn_done;
-   logic [2:0]                 buf_cmd_byte_ptr, buf_cmd_byte_ptrQ, buf_cmd_nxtbyte_ptr;
-   logic                       buf_cmd_byte_ptr_en;
-   logic                       found;
-
-   logic                       slave_valid_pre;
-   logic                       ahb_hready_q;
-   logic                       ahb_hresp_q;
-   logic [1:0]                 ahb_htrans_q;
-   logic                       ahb_hwrite_q;
-   logic [63:0]                ahb_hrdata_q;
-
-
-   logic                       slvbuf_write;
-   logic                       slvbuf_error;
-   logic [TAG-1:0]             slvbuf_tag;
-
-   logic                       slvbuf_error_in;
-   logic                       slvbuf_wr_en;
-   logic                       bypass_en;
-   logic                       rd_bypass_idle;
-
-   logic                       last_addr_en;
-   logic [31:0]                last_bus_addr;
-
-   // Clocks
-   logic                       buf_clken;
-   logic                       ahbm_data_clken;
-
-   logic                       buf_clk;
-   logic                       bus_clk;
-   logic                       ahbm_data_clk;
-
-   logic                       dec_tlu_force_halt_bus, dec_tlu_force_halt_bus_ns, dec_tlu_force_halt_bus_q;
-
-   // Function to get the length from byte enable
-   function automatic logic [1:0] get_write_size;
-      input logic [7:0] byteen;
-
-      logic [1:0]       size;
-
-      size[1:0] = (2'b11 & {2{(byteen[7:0] == 8'hff)}}) |
-                  (2'b10 & {2{((byteen[7:0] == 8'hf0) | (byteen[7:0] == 8'h0f))}}) |
-                  (2'b01 & {2{((byteen[7:0] == 8'hc0) | (byteen[7:0] == 8'h30) | (byteen[7:0] == 8'h0c) | (byteen[7:0] == 8'h03))}});
-
-      return size[1:0];
-   endfunction // get_write_size
-
-   // Function to get the length from byte enable
-   function automatic logic [2:0] get_write_addr;
-      input logic [7:0] byteen;
-
-      logic [2:0]       addr;
-
-      addr[2:0] = (3'h0 & {3{((byteen[7:0] == 8'hff) | (byteen[7:0] == 8'h0f) | (byteen[7:0] == 8'h03))}}) |
-                  (3'h2 & {3{(byteen[7:0] == 8'h0c)}})                                                     |
-                  (3'h4 & {3{((byteen[7:0] == 8'hf0) | (byteen[7:0] == 8'h03))}})                          |
-                  (3'h6 & {3{(byteen[7:0] == 8'hc0)}});
-
-      return addr[2:0];
-   endfunction // get_write_addr
-
-   // Function to get the next byte pointer
-   function automatic logic [2:0] get_nxtbyte_ptr (logic [2:0] current_byte_ptr, logic [7:0] byteen, logic get_next);
-      logic [2:0] start_ptr;
-      logic       found;
-      found = '0;
-      //get_nxtbyte_ptr[2:0] = current_byte_ptr[2:0];
-      start_ptr[2:0] = get_next ? (current_byte_ptr[2:0] + 3'b1) : current_byte_ptr[2:0];
-      for (int j=0; j<8; j++) begin
-         if (~found) begin
-            get_nxtbyte_ptr[2:0] = 3'(j);
-            found |= (byteen[j] & (3'(j) >= start_ptr[2:0])) ;
-         end
-      end
-   endfunction // get_nextbyte_ptr
-
-   // Create bus synchronized version of force halt
-   assign dec_tlu_force_halt_bus = dec_tlu_force_halt | dec_tlu_force_halt_bus_q;
-   assign dec_tlu_force_halt_bus_ns = ~bus_clk_en & dec_tlu_force_halt_bus;
-   rvdff  #(.WIDTH(1))   force_halt_busff(.din(dec_tlu_force_halt_bus_ns), .dout(dec_tlu_force_halt_bus_q), .clk(free_clk), .*);
-
-   // Write buffer
-   assign wrbuf_en       = axi_awvalid & axi_awready & master_ready;
-   assign wrbuf_data_en  = axi_wvalid & axi_wready & master_ready;
-   assign wrbuf_cmd_sent = master_valid & master_ready & (master_opc[2:1] == 2'b01);
-   assign wrbuf_rst      = (wrbuf_cmd_sent & ~wrbuf_en) | dec_tlu_force_halt_bus;
-
-   assign axi_awready = ~(wrbuf_vld & ~wrbuf_cmd_sent) & master_ready;
-   assign axi_wready  = ~(wrbuf_data_vld & ~wrbuf_cmd_sent) & master_ready;
-   assign axi_arready = ~(wrbuf_vld & wrbuf_data_vld) & master_ready;
-   assign axi_rlast   = 1'b1;
-
-   assign wr_cmd_vld          = (wrbuf_vld & wrbuf_data_vld);
-   assign master_valid        = wr_cmd_vld | axi_arvalid;
-   assign master_tag[TAG-1:0] = wr_cmd_vld ? wrbuf_tag[TAG-1:0] : axi_arid[TAG-1:0];
-   assign master_opc[2:0]     = wr_cmd_vld ? 3'b011 : 3'b0;
-   assign master_addr[31:0]   = wr_cmd_vld ? wrbuf_addr[31:0] : axi_araddr[31:0];
-   assign master_size[2:0]    = wr_cmd_vld ? wrbuf_size[2:0] : axi_arsize[2:0];
-   assign master_byteen[7:0]  = wrbuf_byteen[7:0];
-   assign master_wdata[63:0]  = wrbuf_data[63:0];
-
-   // AXI response channel signals
-   assign axi_bvalid       = slave_valid & slave_ready & slave_opc[3];
-   assign axi_bresp[1:0]   = slave_opc[0] ? 2'b10 : (slave_opc[1] ? 2'b11 : 2'b0);
-   assign axi_bid[TAG-1:0] = slave_tag[TAG-1:0];
-
-   assign axi_rvalid       = slave_valid & slave_ready & (slave_opc[3:2] == 2'b0);
-   assign axi_rresp[1:0]   = slave_opc[0] ? 2'b10 : (slave_opc[1] ? 2'b11 : 2'b0);
-   assign axi_rid[TAG-1:0] = slave_tag[TAG-1:0];
-   assign axi_rdata[63:0]  = slave_rdata[63:0];
-   assign slave_ready        = axi_bready & axi_rready;
-
- // FIFO state machine
-   always_comb begin
-      buf_nxtstate   = IDLE;
-      buf_state_en   = 1'b0;
-      buf_wr_en      = 1'b0;
-      buf_data_wr_en = 1'b0;
-      slvbuf_error_in   = 1'b0;
-      slvbuf_error_en   = 1'b0;
-      buf_write_in   = 1'b0;
-      cmd_done       = 1'b0;
-      trxn_done      = 1'b0;
-      buf_cmd_byte_ptr_en = 1'b0;
-      buf_cmd_byte_ptr[2:0] = '0;
-      slave_valid_pre   = 1'b0;
-      master_ready   = 1'b0;
-      ahb_htrans[1:0]  = 2'b0;
-      slvbuf_wr_en     = 1'b0;
-      bypass_en        = 1'b0;
-      rd_bypass_idle   = 1'b0;
-
-      case (buf_state)
-         IDLE: begin
-                  master_ready   = 1'b1;
-                  buf_write_in = (master_opc[2:1] == 2'b01);
-                  buf_nxtstate = buf_write_in ? CMD_WR : CMD_RD;
-                  buf_state_en = master_valid & master_ready;
-                  buf_wr_en    = buf_state_en;
-                  buf_data_wr_en = buf_state_en & (buf_nxtstate == CMD_WR);
-                  buf_cmd_byte_ptr_en   = buf_state_en;
-                  buf_cmd_byte_ptr[2:0] = buf_write_in ? get_nxtbyte_ptr(3'b0,buf_byteen_in[7:0],1'b0) : master_addr[2:0];
-                  bypass_en       = buf_state_en;
-                  rd_bypass_idle  = bypass_en & (buf_nxtstate == CMD_RD);
-                  ahb_htrans[1:0] = {2{bypass_en}} & 2'b10;
-          end
-         CMD_RD: begin
-                  buf_nxtstate    = (master_valid & (master_opc[2:0] == 3'b000))? STREAM_RD : DATA_RD;
-                  buf_state_en    = ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) & ~ahb_hwrite_q;
-                  cmd_done        = buf_state_en & ~master_valid;
-                  slvbuf_wr_en    = buf_state_en;
-                  master_ready  = buf_state_en & (buf_nxtstate == STREAM_RD);
-                  buf_wr_en       = master_ready;
-                  bypass_en       = master_ready & master_valid;
-                  buf_cmd_byte_ptr[2:0] = bypass_en ? master_addr[2:0] : buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~buf_state_en | bypass_en}};
-         end
-         STREAM_RD: begin
-                  master_ready  =  (ahb_hready_q & ~ahb_hresp_q) & ~(master_valid & master_opc[2:1] == 2'b01);
-                  buf_wr_en       = (master_valid & master_ready & (master_opc[2:0] == 3'b000)); // update the fifo if we are streaming the read commands
-                  buf_nxtstate    = ahb_hresp_q ? STREAM_ERR_RD : (buf_wr_en ? STREAM_RD : DATA_RD);            // assuming that the master accpets the slave response right away.
-                  buf_state_en    = (ahb_hready_q | ahb_hresp_q);
-                  buf_data_wr_en  = buf_state_en;
-                  slvbuf_error_in = ahb_hresp_q;
-                  slvbuf_error_en = buf_state_en;
-                  slave_valid_pre  = buf_state_en & ~ahb_hresp_q;             // send a response right away if we are not going through an error response.
-                  cmd_done        = buf_state_en & ~master_valid;                     // last one of the stream should not send a htrans
-                  bypass_en       = master_ready & master_valid & (buf_nxtstate == STREAM_RD) & buf_state_en;
-                  buf_cmd_byte_ptr[2:0] = bypass_en ? master_addr[2:0] : buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~((buf_nxtstate != STREAM_RD) & buf_state_en)}};
-                  slvbuf_wr_en    = buf_wr_en;                                         // shifting the contents from the buf to slv_buf for streaming cases
-         end // case: STREAM_RD
-         STREAM_ERR_RD: begin
-                  buf_nxtstate = DATA_RD;
-                  buf_state_en = ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) & ~ahb_hwrite_q;
-                  slave_valid_pre = buf_state_en;
-                  slvbuf_wr_en   = buf_state_en;     // Overwrite slvbuf with buffer
-                  buf_cmd_byte_ptr[2:0] = buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~buf_state_en}};
-         end
-         DATA_RD: begin
-                  buf_nxtstate   = DONE;
-                  buf_state_en   = (ahb_hready_q | ahb_hresp_q);
-                  buf_data_wr_en = buf_state_en;
-                  slvbuf_error_in= ahb_hresp_q;
-                  slvbuf_error_en= buf_state_en;
-                  slvbuf_wr_en   = buf_state_en;
-
-         end
-         CMD_WR: begin
-                  buf_nxtstate = DATA_WR;
-                  trxn_done    = ahb_hready_q & ahb_hwrite_q & (ahb_htrans_q[1:0] != 2'b0);
-                  buf_state_en = trxn_done;
-                  buf_cmd_byte_ptr_en = buf_state_en;
-                  slvbuf_wr_en    = buf_state_en;
-                  buf_cmd_byte_ptr    = trxn_done ? get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1) : buf_cmd_byte_ptrQ;
-                  cmd_done            = trxn_done & (buf_aligned | (buf_cmd_byte_ptrQ == 3'b111) |
-                                                     (buf_byteen[get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1)] == 1'b0));
-                  ahb_htrans[1:0] = {2{~(cmd_done | cmd_doneQ)}} & 2'b10;
-         end
-         DATA_WR: begin
-                  buf_state_en = (cmd_doneQ & ahb_hready_q) | ahb_hresp_q;
-                  master_ready = buf_state_en & ~ahb_hresp_q & slave_ready;   // Ready to accept new command if current command done and no error
-                  buf_nxtstate = (ahb_hresp_q | ~slave_ready) ? DONE :
-                                  ((master_valid & master_ready) ? ((master_opc[2:1] == 2'b01) ? CMD_WR : CMD_RD) : IDLE);
-                  slvbuf_error_in = ahb_hresp_q;
-                  slvbuf_error_en = buf_state_en;
-
-                  buf_write_in = (master_opc[2:1] == 2'b01);
-                  buf_wr_en = buf_state_en & ((buf_nxtstate == CMD_WR) | (buf_nxtstate == CMD_RD));
-                  buf_data_wr_en = buf_wr_en;
-
-                  cmd_done     = (ahb_hresp_q | (ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) &
-                                 ((buf_cmd_byte_ptrQ == 3'b111) | (buf_byteen[get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1)] == 1'b0))));
-                  bypass_en       = buf_state_en & buf_write_in & (buf_nxtstate == CMD_WR);   // Only bypass for writes for the time being
-                  ahb_htrans[1:0] = {2{(~(cmd_done | cmd_doneQ) | bypass_en)}} & 2'b10;
-                  slave_valid_pre  = buf_state_en & (buf_nxtstate != DONE);
-
-                  trxn_done = ahb_hready_q & ahb_hwrite_q & (ahb_htrans_q[1:0] != 2'b0);
-                  buf_cmd_byte_ptr_en = trxn_done | bypass_en;
-                  buf_cmd_byte_ptr = bypass_en ? get_nxtbyte_ptr(3'b0,buf_byteen_in[7:0],1'b0) :
-                                                 trxn_done ? get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1) : buf_cmd_byte_ptrQ;
-            end
-         DONE: begin
-                  buf_nxtstate = IDLE;
-                  buf_state_en = slave_ready;
-                  slvbuf_error_en = 1'b1;
-                  slave_valid_pre = 1'b1;
-         end
-      endcase
-   end
-
-   assign buf_rst              = dec_tlu_force_halt_bus;
-   assign cmd_done_rst         = slave_valid_pre;
-   assign buf_addr_in[31:3]    = master_addr[31:3];
-   assign buf_addr_in[2:0]     = (buf_aligned_in & (master_opc[2:1] == 2'b01)) ? get_write_addr(master_byteen[7:0]) : master_addr[2:0];
-   assign buf_tag_in[TAG-1:0]  = master_tag[TAG-1:0];
-   assign buf_byteen_in[7:0]   = wrbuf_byteen[7:0];
-   assign buf_data_in[63:0]    = (buf_state == DATA_RD) ? ahb_hrdata_q[63:0] : master_wdata[63:0];
-   assign buf_size_in[1:0]     = (buf_aligned_in & (master_size[1:0] == 2'b11) & (master_opc[2:1] == 2'b01)) ? get_write_size(master_byteen[7:0]) : master_size[1:0];
-   assign buf_aligned_in       = (master_opc[2:0] == 3'b0)    |   // reads are always aligned since they are either DW or sideeffects
-                                 (master_size[1:0] == 2'b0) |  (master_size[1:0] == 2'b01) | (master_size[1:0] == 2'b10) | // Always aligned for Byte/HW/Word since they can be only for non-idempotent. IFU/SB are always aligned
-                                 ((master_size[1:0] == 2'b11) &
-                                  ((master_byteen[7:0] == 8'h3)  | (master_byteen[7:0] == 8'hc)   | (master_byteen[7:0] == 8'h30) | (master_byteen[7:0] == 8'hc0) |
-                                   (master_byteen[7:0] == 8'hf)  | (master_byteen[7:0] == 8'hf0)  | (master_byteen[7:0] == 8'hff)));
-
-   // Generate the ahb signals
-   assign ahb_haddr[31:3] = bypass_en ? master_addr[31:3]  : buf_addr[31:3];
-   assign ahb_haddr[2:0]  = {3{(ahb_htrans == 2'b10)}} & buf_cmd_byte_ptr[2:0];    // Trxn should be aligned during IDLE
-   assign ahb_hsize[2:0]  = bypass_en ? {1'b0, ({2{buf_aligned_in}} & buf_size_in[1:0])} :
-                                        {1'b0, ({2{buf_aligned}} & buf_size[1:0])};   // Send the full size for aligned trxn
-   assign ahb_hburst[2:0] = 3'b0;
-   assign ahb_hmastlock   = 1'b0;
-   assign ahb_hprot[3:0]  = {3'b001,~axi_arprot[2]};
-   assign ahb_hwrite      = bypass_en ? (master_opc[2:1] == 2'b01) : buf_write;
-   assign ahb_hwdata[63:0] = buf_data[63:0];
-
-   assign slave_valid          = slave_valid_pre;// & (~slvbuf_posted_write | slvbuf_error);
-   assign slave_opc[3:2]       = slvbuf_write ? 2'b11 : 2'b00;
-   assign slave_opc[1:0]       = {2{slvbuf_error}} & 2'b10;
-   assign slave_rdata[63:0]    = slvbuf_error ? {2{last_bus_addr[31:0]}} : ((buf_state == DONE) ? buf_data[63:0] : ahb_hrdata_q[63:0]);
-   assign slave_tag[TAG-1:0]   = slvbuf_tag[TAG-1:0];
-
-   assign last_addr_en = (ahb_htrans[1:0] != 2'b0) & ahb_hready & ahb_hwrite ;
-
-
-   rvdffsc_fpga #(.WIDTH(1))   wrbuf_vldff     (.din(1'b1),              .dout(wrbuf_vld),          .en(wrbuf_en),      .clear(wrbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffsc_fpga #(.WIDTH(1))   wrbuf_data_vldff(.din(1'b1),              .dout(wrbuf_data_vld),     .en(wrbuf_data_en), .clear(wrbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(TAG)) wrbuf_tagff     (.din(axi_awid[TAG-1:0]), .dout(wrbuf_tag[TAG-1:0]), .en(wrbuf_en),                         .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(3))   wrbuf_sizeff    (.din(axi_awsize[2:0]),   .dout(wrbuf_size[2:0]),    .en(wrbuf_en),                         .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32))  wrbuf_addrff    (.din(axi_awaddr[31:0]),  .dout(wrbuf_addr[31:0]),   .en(wrbuf_en & bus_clk_en),            .clk(clk), .*);
-   rvdffe       #(.WIDTH(64))  wrbuf_dataff    (.din(axi_wdata[63:0]),   .dout(wrbuf_data[63:0]),   .en(wrbuf_data_en & bus_clk_en),       .clk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(8))   wrbuf_byteenff  (.din(axi_wstrb[7:0]),    .dout(wrbuf_byteen[7:0]),  .en(wrbuf_data_en),                    .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffs_fpga #(.WIDTH(32))   last_bus_addrff (.din(ahb_haddr[31:0]),   .dout(last_bus_addr[31:0]), .en(last_addr_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffsc_fpga #(.WIDTH($bits(state_t))) buf_state_ff  (.din(buf_nxtstate),        .dout({buf_state}),      .en(buf_state_en), .clear(buf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))               buf_writeff   (.din(buf_write_in),        .dout(buf_write),        .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(TAG))             buf_tagff     (.din(buf_tag_in[TAG-1:0]), .dout(buf_tag[TAG-1:0]), .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(32))              buf_addrff    (.din(buf_addr_in[31:0]),   .dout(buf_addr[31:0]),   .en(buf_wr_en & bus_clk_en),        .clk(clk), .*);
-   rvdffs_fpga #(.WIDTH(2))               buf_sizeff    (.din(buf_size_in[1:0]),    .dout(buf_size[1:0]),    .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))               buf_alignedff (.din(buf_aligned_in),      .dout(buf_aligned),      .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(8))               buf_byteenff  (.din(buf_byteen_in[7:0]),  .dout(buf_byteen[7:0]),  .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(64))              buf_dataff    (.din(buf_data_in[63:0]),   .dout(buf_data[63:0]),   .en(buf_data_wr_en & bus_clk_en),   .clk(clk), .*);
-
-
-   rvdffs_fpga #(.WIDTH(1))   slvbuf_writeff  (.din(buf_write),        .dout(slvbuf_write),        .en(slvbuf_wr_en),    .clk(buf_clk), .clken(buf_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(TAG)) slvbuf_tagff    (.din(buf_tag[TAG-1:0]), .dout(slvbuf_tag[TAG-1:0]), .en(slvbuf_wr_en),    .clk(buf_clk), .clken(buf_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))   slvbuf_errorff  (.din(slvbuf_error_in),  .dout(slvbuf_error),        .en(slvbuf_error_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffsc_fpga #(.WIDTH(1)) buf_cmd_doneff     (.din(1'b1),                  .dout(cmd_doneQ),              .en(cmd_done),            .clear(cmd_done_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(3))  buf_cmd_byte_ptrff (.din(buf_cmd_byte_ptr[2:0]), .dout(buf_cmd_byte_ptrQ[2:0]), .en(buf_cmd_byte_ptr_en),                       .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdff_fpga #(.WIDTH(1))  hready_ff (.din(ahb_hready),       .dout(ahb_hready_q),       .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(2))  htrans_ff (.din(ahb_htrans[1:0]),  .dout(ahb_htrans_q[1:0]),  .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hwrite_ff (.din(ahb_hwrite),       .dout(ahb_hwrite_q),       .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hresp_ff  (.din(ahb_hresp),        .dout(ahb_hresp_q),        .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(64)) hrdata_ff (.din(ahb_hrdata[63:0]), .dout(ahb_hrdata_q[63:0]), .clk(ahbm_data_clk), .clken(ahbm_data_clken), .rawclk(clk), .*);
-
-   // Clock headers
-   // clock enables for ahbm addr/data
-   assign buf_clken       = bus_clk_en & (buf_wr_en | slvbuf_wr_en | clk_override);
-   assign ahbm_data_clken = bus_clk_en & ((buf_state != IDLE) | clk_override);
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign bus_clk = 1'b0;
-   assign buf_clk = 1'b0;
-   assign ahbm_data_clk = 1'b0;
-`else
-   rvclkhdr bus_cgc       (.en(bus_clk_en),      .l1clk(bus_clk),       .*);
-   rvclkhdr buf_cgc       (.en(buf_clken),       .l1clk(buf_clk), .*);
-   rvclkhdr ahbm_data_cgc (.en(ahbm_data_clken), .l1clk(ahbm_data_clk), .*);
-`endif
-
-`ifdef RV_ASSERT_ON
-   property ahb_trxn_aligned;
-     @(posedge bus_clk) ahb_htrans[1]  |-> ((ahb_hsize[2:0] == 3'h0)                              |
-                                        ((ahb_hsize[2:0] == 3'h1) & (ahb_haddr[0] == 1'b0))   |
-                                        ((ahb_hsize[2:0] == 3'h2) & (ahb_haddr[1:0] == 2'b0)) |
-                                        ((ahb_hsize[2:0] == 3'h3) & (ahb_haddr[2:0] == 3'b0)));
-   endproperty
-   assert_ahb_trxn_aligned: assert property (ahb_trxn_aligned) else
-     $display("Assertion ahb_trxn_aligned failed: ahb_htrans=2'h%h, ahb_hsize=3'h%h, ahb_haddr=32'h%h",ahb_htrans[1:0], ahb_hsize[2:0], ahb_haddr[31:0]);
-
-   property ahb_error_protocol;
-      @(posedge bus_clk) (ahb_hready & ahb_hresp) |-> (~$past(ahb_hready) & $past(ahb_hresp));
-   endproperty
-   assert_ahb_error_protocol: assert property (ahb_error_protocol) else
-      $display("Bus Error with hReady isn't preceded with Bus Error without hready");
-`endif
-
-endmodule // axi4_to_ahb
diff --git a/verilog/rtl/BrqRV_EB1/design/lib/beh_lib.sv b/verilog/rtl/BrqRV_EB1/design/lib/beh_lib.sv
deleted file mode 100644
index 1cffe5b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lib/beh_lib.sv
+++ /dev/null
@@ -1,819 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// all flops call the rvdff flop
-
-`include "common_defines.vh"
-
-module rvdff #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic           clk,
-     input logic                   rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-`ifdef RV_CLOCKGATE
-   always @(posedge tb_top.clk) begin
-      #0 $strobe("CG: %0t %m din %x dout %x clk %b width %d",$time,din,dout,clk,WIDTH);
-   end
-`endif
-
-   always_ff @(posedge clk or negedge rst_l) begin
-      if (rst_l == 0)
-        dout[WIDTH-1:0] <= 0;
-      else
-        dout[WIDTH-1:0] <= din[WIDTH-1:0];
-   end
-
-end
-endmodule
-
-// rvdff with 2:1 input mux to flop din iff sel==1
-module rvdffs #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic           clk,
-     input logic                   rst_l,
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin : genblock
-   assign dout = din;
-end
-else begin : genblock
-   rvdff #(WIDTH) dffs (.din((en) ? din[WIDTH-1:0] : dout[WIDTH-1:0]), .*);
-end
-
-endmodule
-
-// rvdff with en and clear
-module rvdffsc #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic             clear,
-     input logic           clk,
-     input logic                   rst_l,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:0]          din_new;
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-   assign din_new = {WIDTH{~clear}} & (en ? din[WIDTH-1:0] : dout[WIDTH-1:0]);
-   rvdff #(WIDTH) dffsc (.din(din_new[WIDTH-1:0]), .*);
-end
-endmodule
-
-// _fpga versions
-module rvdff_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic           clk,
-     input logic           clken,
-     input logic           rawclk,
-     input logic           rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-   `ifdef RV_FPGA_OPTIMIZE
-    rvdffs #(WIDTH) dffs (.clk(rawclk), .en(clken), .*);
-`else
-    rvdff #(WIDTH)  dff (.*);
-`endif
-end
-endmodule
-
-// rvdff with 2:1 input mux to flop din iff sel==1
-module rvdffs_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic           clk,
-     input logic           clken,
-     input logic           rawclk,
-     input logic           rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin : genblock
-   assign dout = din;
-end
-else begin : genblock
-`ifdef RV_FPGA_OPTIMIZE
-   rvdffs #(WIDTH)   dffs (.clk(rawclk), .en(clken & en), .*);
-`else
-   rvdffs #(WIDTH)   dffs (.*);
-`endif
-end
-
-endmodule
-
-// rvdff with en and clear
-module rvdffsc_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic             clear,
-     input logic             clk,
-     input logic             clken,
-     input logic             rawclk,
-     input logic             rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:0]          din_new;
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-`ifdef RV_FPGA_OPTIMIZE
-   rvdffs  #(WIDTH)   dffs  (.clk(rawclk), .din(din[WIDTH-1:0] & {WIDTH{~clear}}),.en((en | clear) & clken), .*);
-`else
-   rvdffsc #(WIDTH)   dffsc (.*);
-`endif
-end
-endmodule
-
-
-module rvdffe #( parameter WIDTH=1, SHORT=0, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic           en,
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-
-if (SHORT == 1) begin : genblock
-   if (1) begin : genblock
-      assign dout = din;
-   end
-end
-else begin : genblock
-
-`ifndef RV_PHYSICAL
-   if (WIDTH >= 8 || OVERRIDE==1) begin: genblock
-`endif
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .* );
-`else
-      rvclkhdr clkhdr ( .* );
-      rvdff #(WIDTH) dff (.*, .clk(l1clk));
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-      $error("%m: rvdffe must be WIDTH >= 8");
-`endif
-end // else: !if(SHORT == 1)
-
-endmodule // rvdffe
-
-
-module rvdffpcie #( parameter WIDTH=31 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-
-
-`ifndef RV_PHYSICAL
-   if (WIDTH == 31) begin: genblock
-`endif
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .* );
-`else
-
-      rvdfflie #(.WIDTH(WIDTH), .LEFT(19)) dff (.*);
-
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-      $error("%m: rvdffpcie width must be 31");
-`endif
-endmodule
-
-// format: { LEFT, EXTRA }
-// LEFT # of bits will be done with rvdffie, all else EXTRA with rvdffe
-module rvdfflie #( parameter WIDTH=16, LEFT=8 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   localparam EXTRA = WIDTH-LEFT;
-
-
-
-
-
-
-
-   localparam LMSB = WIDTH-1;
-   localparam LLSB = LMSB-LEFT+1;
-   localparam XMSB = LLSB-1;
-   localparam XLSB = LLSB-EXTRA;
-
-
-`ifndef RV_PHYSICAL
-   if (WIDTH >= 16 && LEFT >= 8 && EXTRA >= 8) begin: genblock
-`endif
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .* );
-`else
-
-      rvdffiee #(LEFT)  dff_left  (.*, .din(din[LMSB:LLSB]), .dout(dout[LMSB:LLSB]));
-
-
-      rvdffe  #(EXTRA)  dff_extra (.*, .din(din[XMSB:XLSB]), .dout(dout[XMSB:XLSB]));
-
-
-
-
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-      $error("%m: rvdfflie musb be WIDTH >= 16 && LEFT >= 8 && EXTRA >= 8");
-`endif
-endmodule
-
-
-
-
-// special power flop for predict packet
-// format: { LEFT, RIGHT==31 }
-// LEFT # of bits will be done with rvdffe; RIGHT is enabled by LEFT[LSB] & en
-module rvdffppe #( parameter WIDTH=32 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   localparam RIGHT = 31;
-   localparam LEFT = WIDTH - RIGHT;
-
-   localparam LMSB = WIDTH-1;
-   localparam LLSB = LMSB-LEFT+1;
-   localparam RMSB = LLSB-1;
-   localparam RLSB = LLSB-RIGHT;
-
-
-`ifndef RV_PHYSICAL
-   if (WIDTH>=32 && LEFT>=8 && RIGHT>=8) begin: genblock
-`endif
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .* );
-`else
-      rvdffe #(LEFT)     dff_left (.*, .din(din[LMSB:LLSB]), .dout(dout[LMSB:LLSB]));
-
-      rvdffe #(RIGHT)   dff_right (.*, .din(din[RMSB:RLSB]), .dout(dout[RMSB:RLSB]), .en(en & din[LLSB]));  // qualify with pret
-
-
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-      $error("%m: must be WIDTH>=32 && LEFT>=8 && RIGHT>=8");
-`endif
-endmodule
-
-
-
-
-module rvdffie #( parameter WIDTH=1, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-   logic                      en;
-
-
-
-
-
-
-
-
-`ifndef RV_PHYSICAL
-   if (WIDTH >= 8 || OVERRIDE==1) begin: genblock
-`endif
-
-      assign en = |(din ^ dout);
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .* );
-`else
-      rvclkhdr clkhdr ( .* );
-      rvdff #(WIDTH) dff (.*, .clk(l1clk));
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-     $error("%m: rvdffie must be WIDTH >= 8");
-`endif
-
-
-endmodule
-
-// ie flop but it has an .en input
-module rvdffiee #( parameter WIDTH=1, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic           scan_mode,
-     input  logic           en,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-   logic                      final_en;
-
-`ifndef RV_PHYSICAL
-   if (WIDTH >= 8 || OVERRIDE==1) begin: genblock
-`endif
-
-      assign final_en = (|(din ^ dout)) & en;
-
-`ifdef RV_FPGA_OPTIMIZE
-      rvdffs #(WIDTH) dff ( .*, .en(final_en) );
-`else
-      rvdffe #(WIDTH) dff (.*,  .en(final_en));
-`endif
-
-`ifndef RV_PHYSICAL
-   end
-   else
-      $error("%m: rvdffie width must be >= 8");
-`endif
-
-endmodule
-
-
-
-module rvsyncss #(parameter WIDTH = 251)
-   (
-     input  logic                 clk,
-     input  logic                 rst_l,
-     input  logic [WIDTH-1:0]     din,
-     output logic [WIDTH-1:0]     dout
-     );
-
-   logic [WIDTH-1:0]              din_ff1;
-
-   rvdff #(WIDTH) sync_ff1  (.*, .din (din[WIDTH-1:0]),     .dout(din_ff1[WIDTH-1:0]));
-   rvdff #(WIDTH) sync_ff2  (.*, .din (din_ff1[WIDTH-1:0]), .dout(dout[WIDTH-1:0]));
-
-endmodule // rvsyncss
-
-module rvsyncss_fpga #(parameter WIDTH = 251)
-   (
-     input  logic                 gw_clk,
-     input  logic                 rawclk,
-     input  logic                 clken,
-     input  logic                 rst_l,
-     input  logic [WIDTH-1:0]     din,
-     output logic [WIDTH-1:0]     dout
-     );
-
-   logic [WIDTH-1:0]              din_ff1;
-
-   rvdff_fpga #(WIDTH) sync_ff1  (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (din[WIDTH-1:0]),     .dout(din_ff1[WIDTH-1:0]));
-   rvdff_fpga #(WIDTH) sync_ff2  (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (din_ff1[WIDTH-1:0]), .dout(dout[WIDTH-1:0]));
-
-endmodule // rvsyncss
-
-module rvlsadder
-  (
-    input logic [31:0] rs1,
-    input logic [11:0] offset,
-
-    output logic [31:0] dout
-    );
-
-   logic                cout;
-   logic                sign;
-
-   logic [31:12]        rs1_inc;
-   logic [31:12]        rs1_dec;
-
-   assign {cout,dout[11:0]} = {1'b0,rs1[11:0]} + {1'b0,offset[11:0]};
-
-   assign rs1_inc[31:12] = rs1[31:12] + 1;
-
-   assign rs1_dec[31:12] = rs1[31:12] - 1;
-
-   assign sign = offset[11];
-
-   assign dout[31:12] = ({20{  sign ^~  cout}} &     rs1[31:12]) |
-                        ({20{ ~sign &   cout}}  & rs1_inc[31:12]) |
-                        ({20{  sign &  ~cout}}  & rs1_dec[31:12]);
-
-endmodule // rvlsadder
-
-// assume we only maintain pc[31:1] in the pipe
-
-module rvbradder
-  (
-    input [31:1] pc,
-    input [12:1] offset,
-
-    output [31:1] dout
-    );
-
-   logic          cout;
-   logic          sign;
-
-   logic [31:13]  pc_inc;
-   logic [31:13]  pc_dec;
-
-   assign {cout,dout[12:1]} = {1'b0,pc[12:1]} + {1'b0,offset[12:1]};
-
-   assign pc_inc[31:13] = pc[31:13] + 1;
-
-   assign pc_dec[31:13] = pc[31:13] - 1;
-
-   assign sign = offset[12];
-
-
-   assign dout[31:13] = ({19{  sign ^~  cout}} &     pc[31:13]) |
-                        ({19{ ~sign &   cout}}  & pc_inc[31:13]) |
-                        ({19{  sign &  ~cout}}  & pc_dec[31:13]);
-
-
-endmodule // rvbradder
-
-
-// 2s complement circuit
-module rvtwoscomp #( parameter WIDTH=32 )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:1]          dout_temp;   // holding for all other bits except for the lsb. LSB is always din
-
-   genvar                     i;
-
-   for ( i = 1; i < WIDTH; i++ )  begin : flip_after_first_one
-      assign dout_temp[i] = (|din[i-1:0]) ? ~din[i] : din[i];
-   end : flip_after_first_one
-
-   assign dout[WIDTH-1:0]  = { dout_temp[WIDTH-1:1], din[0] };
-
-endmodule  // 2'scomp
-
-// find first
-module rvfindfirst1 #( parameter WIDTH=32, SHIFT=$clog2(WIDTH) )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [SHIFT-1:0] dout
-     );
-   logic                      done;
-
-   always_comb begin
-      dout[SHIFT-1:0] = {SHIFT{1'b0}};
-      done    = 1'b0;
-
-      for ( int i = WIDTH-1; i > 0; i-- )  begin : find_first_one
-         done |= din[i];
-         dout[SHIFT-1:0] += done ? 1'b0 : 1'b1;
-      end : find_first_one
-   end
-endmodule // rvfindfirst1
-
-module rvfindfirst1hot #( parameter WIDTH=32 )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [WIDTH-1:0] dout
-     );
-   logic                      done;
-
-   always_comb begin
-      dout[WIDTH-1:0] = {WIDTH{1'b0}};
-      done    = 1'b0;
-      for ( int i = 0; i < WIDTH; i++ )  begin : find_first_one
-         dout[i] = ~done & din[i];
-         done   |= din[i];
-      end : find_first_one
-   end
-endmodule // rvfindfirst1hot
-
-// mask and match function matches bits after finding the first 0 position
-// find first starting from LSB. Skip that location and match the rest of the bits
-module rvmaskandmatch #( parameter WIDTH=32 )
-   (
-     input  logic [WIDTH-1:0] mask,     // this will have the mask in the lower bit positions
-     input  logic [WIDTH-1:0] data,     // this is what needs to be matched on the upper bits with the mask's upper bits
-     input  logic             masken,   // when 1 : do mask. 0 : full match
-     output logic             match
-     );
-
-   logic [WIDTH-1:0]          matchvec;
-   logic                      masken_or_fullmask;
-
-   assign masken_or_fullmask = masken &  ~(&mask[WIDTH-1:0]);
-
-   assign matchvec[0]        = masken_or_fullmask | (mask[0] == data[0]);
-   genvar                     i;
-
-   for ( i = 1; i < WIDTH; i++ )  begin : match_after_first_zero
-      assign matchvec[i] = (&mask[i-1:0] & masken_or_fullmask) ? 1'b1 : (mask[i] == data[i]);
-   end : match_after_first_zero
-
-   assign match  = &matchvec[WIDTH-1:0];    // all bits either matched or were masked off
-
-endmodule // rvmaskandmatch
-
-
-
-
-// Check if the S_ADDR <= addr < E_ADDR
-module rvrangecheck  #(CCM_SADR = 32'h0,
-                       CCM_SIZE  = 128) (
-   input  logic [31:0]   addr,                             // Address to be checked for range
-   output logic          in_range,                            // S_ADDR <= start_addr < E_ADDR
-   output logic          in_region
-);
-
-   localparam REGION_BITS = 4;
-   localparam MASK_BITS = 10 + $clog2(CCM_SIZE);
-
-   logic [31:0]          start_addr;
-   logic [3:0]           region;
-
-   assign start_addr[31:0]        = CCM_SADR;
-   assign region[REGION_BITS-1:0] = start_addr[31:(32-REGION_BITS)];
-
-   assign in_region = (addr[31:(32-REGION_BITS)] == region[REGION_BITS-1:0]);
-   if (CCM_SIZE  == 48)
-    assign in_range  = (addr[31:MASK_BITS] == start_addr[31:MASK_BITS]) & ~(&addr[MASK_BITS-1 : MASK_BITS-2]);
-   else
-    assign in_range  = (addr[31:MASK_BITS] == start_addr[31:MASK_BITS]);
-
-endmodule  // rvrangechecker
-
-// 16 bit even parity generator
-module rveven_paritygen #(WIDTH = 16)  (
-                                         input  logic [WIDTH-1:0]  data_in,         // Data
-                                         output logic              parity_out       // generated even parity
-                                         );
-
-   assign  parity_out =  ^(data_in[WIDTH-1:0]) ;
-
-endmodule  // rveven_paritygen
-
-module rveven_paritycheck #(WIDTH = 16)  (
-                                           input  logic [WIDTH-1:0]  data_in,         // Data
-                                           input  logic              parity_in,
-                                           output logic              parity_err       // Parity error
-                                           );
-
-   assign  parity_err =  ^(data_in[WIDTH-1:0]) ^ parity_in ;
-
-endmodule  // rveven_paritycheck
-
-module rvecc_encode  (
-                      input [31:0] din,
-                      output [6:0] ecc_out
-                      );
-logic [5:0] ecc_out_temp;
-
-   assign ecc_out_temp[0] = din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30];
-   assign ecc_out_temp[1] = din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31];
-   assign ecc_out_temp[2] = din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31];
-   assign ecc_out_temp[3] = din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_out_temp[4] = din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_out_temp[5] = din[26]^din[27]^din[28]^din[29]^din[30]^din[31];
-
-   assign ecc_out[6:0] = {(^din[31:0])^(^ecc_out_temp[5:0]),ecc_out_temp[5:0]};
-
-endmodule // rvecc_encode
-
-module rvecc_decode  (
-                      input         en,
-                      input [31:0]  din,
-                      input [6:0]   ecc_in,
-                      input         sed_ded,    // only do detection and no correction. Used for the I$
-                      output [31:0] dout,
-                      output [6:0]  ecc_out,
-                      output        single_ecc_error,
-                      output        double_ecc_error
-
-                      );
-
-   logic [6:0]                      ecc_check;
-   logic [38:0]                     error_mask;
-   logic [38:0]                     din_plus_parity, dout_plus_parity;
-
-   // Generate the ecc bits
-   assign ecc_check[0] = ecc_in[0]^din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30];
-   assign ecc_check[1] = ecc_in[1]^din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31];
-   assign ecc_check[2] = ecc_in[2]^din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31];
-   assign ecc_check[3] = ecc_in[3]^din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_check[4] = ecc_in[4]^din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_check[5] = ecc_in[5]^din[26]^din[27]^din[28]^din[29]^din[30]^din[31];
-
-   // This is the parity bit
-   assign ecc_check[6] = ((^din[31:0])^(^ecc_in[6:0])) & ~sed_ded;
-
-   assign single_ecc_error = en & (ecc_check[6:0] != 0) & ecc_check[6];   // this will never be on for sed_ded
-   assign double_ecc_error = en & (ecc_check[6:0] != 0) & ~ecc_check[6];  // all errors in the sed_ded case will be recorded as DE
-
-   // Generate the mask for error correctiong
-   for (genvar i=1; i<40; i++) begin
-      assign error_mask[i-1] = (ecc_check[5:0] == i);
-   end
-
-   // Generate the corrected data
-   assign din_plus_parity[38:0] = {ecc_in[6], din[31:26], ecc_in[5], din[25:11], ecc_in[4], din[10:4], ecc_in[3], din[3:1], ecc_in[2], din[0], ecc_in[1:0]};
-
-   assign dout_plus_parity[38:0] = single_ecc_error ? (error_mask[38:0] ^ din_plus_parity[38:0]) : din_plus_parity[38:0];
-   assign dout[31:0]             = {dout_plus_parity[37:32], dout_plus_parity[30:16], dout_plus_parity[14:8], dout_plus_parity[6:4], dout_plus_parity[2]};
-   assign ecc_out[6:0]           = {(dout_plus_parity[38] ^ (ecc_check[6:0] == 7'b1000000)), dout_plus_parity[31], dout_plus_parity[15], dout_plus_parity[7], dout_plus_parity[3], dout_plus_parity[1:0]};
-
-endmodule // rvecc_decode
-
-module rvecc_encode_64  (
-                      input [63:0] din,
-                      output [6:0] ecc_out
-                      );
-  assign ecc_out[0] = din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30]^din[32]^din[34]^din[36]^din[38]^din[40]^din[42]^din[44]^din[46]^din[48]^din[50]^din[52]^din[54]^din[56]^din[57]^din[59]^din[61]^din[63];
-
-   assign ecc_out[1] = din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31]^din[32]^din[35]^din[36]^din[39]^din[40]^din[43]^din[44]^din[47]^din[48]^din[51]^din[52]^din[55]^din[56]^din[58]^din[59]^din[62]^din[63];
-
-   assign ecc_out[2] = din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31]^din[32]^din[37]^din[38]^din[39]^din[40]^din[45]^din[46]^din[47]^din[48]^din[53]^din[54]^din[55]^din[56]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_out[3] = din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[4] = din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[5] = din[26]^din[27]^din[28]^din[29]^din[30]^din[31]^din[32]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[6] = din[57]^din[58]^din[59]^din[60]^din[61]^din[62]^din[63];
-
-endmodule // rvecc_encode_64
-
-
-module rvecc_decode_64  (
-                      input         en,
-                      input [63:0]  din,
-                      input [6:0]   ecc_in,
-                      output        ecc_error
-                      );
-
-   logic [6:0]                      ecc_check;
-
-   // Generate the ecc bits
-   assign ecc_check[0] = ecc_in[0]^din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30]^din[32]^din[34]^din[36]^din[38]^din[40]^din[42]^din[44]^din[46]^din[48]^din[50]^din[52]^din[54]^din[56]^din[57]^din[59]^din[61]^din[63];
-
-   assign ecc_check[1] = ecc_in[1]^din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31]^din[32]^din[35]^din[36]^din[39]^din[40]^din[43]^din[44]^din[47]^din[48]^din[51]^din[52]^din[55]^din[56]^din[58]^din[59]^din[62]^din[63];
-
-   assign ecc_check[2] = ecc_in[2]^din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31]^din[32]^din[37]^din[38]^din[39]^din[40]^din[45]^din[46]^din[47]^din[48]^din[53]^din[54]^din[55]^din[56]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_check[3] = ecc_in[3]^din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[4] = ecc_in[4]^din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[5] = ecc_in[5]^din[26]^din[27]^din[28]^din[29]^din[30]^din[31]^din[32]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[6] = ecc_in[6]^din[57]^din[58]^din[59]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_error = en & (ecc_check[6:0] != 0);  // all errors in the sed_ded case will be recorded as DE
-
- endmodule // rvecc_decode_64
-
-// Skywater cell
-//sky130_fd_sc_hd__dlclkp_1 CG( .CLK(clk), .GCLK(l1clk), .GATE(en_i | test_en_i));
-
-
-/*module `TEC_RV_ICG 
-  (
-   input logic SE, EN, CK,
-   output Q
-   );
-
-   logic  en_ff;
-   logic  enable;
-
-   assign      enable = EN | SE;
-
-`ifdef VERILATOR
-   always @(negedge CK) begin
-      en_ff <= enable;
-   end
-`else
-   always @(CK, enable) begin
-      if(!CK)
-        en_ff = enable;
-   end
-`endif
-   assign Q = CK & en_ff;
-
-endmodule
-*/
-
-`ifndef RV_FPGA_OPTIMIZE
-module rvclkhdr
-  (
-   input  logic en,
-   input  logic clk,
-   input  logic scan_mode,
-   output logic l1clk
-   );
-
-   logic   SE;
-   assign       SE = 0;
-
-   sky130_fd_sc_hd__dlclkp_1 clkhdr( .CLK(clk), .GCLK(l1clk), .GATE(en)); /*clkhdr ( .*, .EN(en), .CK(clk), .Q(l1clk));*/
-
-endmodule // rvclkhdr
-`endif
-
-module rvoclkhdr
-  (
-   input  logic en,
-   input  logic clk,
-   input  logic scan_mode,
-   output logic l1clk
-   );
-
-   logic   SE;
-   assign       SE = 0;
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign l1clk = clk;
-`else
-   sky130_fd_sc_hd__dlclkp_1 clkhdr( .CLK(clk), .GCLK(l1clk), .GATE(en)); //clkhdr ( .*, .EN(en), .CK(clk), .Q(l1clk));
-`endif
-
-endmodule
-
-
-
diff --git a/verilog/rtl/BrqRV_EB1/design/lib/eb1_lib.sv b/verilog/rtl/BrqRV_EB1/design/lib/eb1_lib.sv
deleted file mode 100644
index 3aee6f3..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lib/eb1_lib.sv
+++ /dev/null
@@ -1,64 +0,0 @@
-module eb1_btb_tag_hash #(
-`include "eb1_param.vh"
- ) (
-                       input logic [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1] pc,
-                       output logic [pt.BTB_BTAG_SIZE-1:0] hash
-                       );
-
-    assign hash = {(pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1])};
-endmodule
-
-module eb1_btb_tag_hash_fold  #(
-`include "eb1_param.vh"
- )(
-                       input logic [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1] pc,
-                       output logic [pt.BTB_BTAG_SIZE-1:0] hash
-                       );
-
-    assign hash = {(
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1])};
-
-endmodule
-
-module eb1_btb_addr_hash  #(
-`include "eb1_param.vh"
- )(
-                        input logic [pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO] pc,
-                        output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] hash
-                        );
-
-
-if(pt.BTB_FOLD2_INDEX_HASH) begin : fold2
-   assign hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = pc[pt.BTB_INDEX1_HI:pt.BTB_INDEX1_LO] ^
-                                                pc[pt.BTB_INDEX3_HI:pt.BTB_INDEX3_LO];
-end
-   else begin
-   assign hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = pc[pt.BTB_INDEX1_HI:pt.BTB_INDEX1_LO] ^
-                                                pc[pt.BTB_INDEX2_HI:pt.BTB_INDEX2_LO] ^
-                                                pc[pt.BTB_INDEX3_HI:pt.BTB_INDEX3_LO];
-end
-
-endmodule
-
-module eb1_btb_ghr_hash  #(
-`include "eb1_param.vh"
- )(
-                       input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] hashin,
-                       input logic [pt.BHT_GHR_SIZE-1:0] ghr,
-                       output logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] hash
-                       );
-
-   // The hash function is too complex to write in verilog for all cases.
-   // The config script generates the logic string based on the bp config.
-   if(pt.BHT_GHR_HASH_1) begin : ghrhash_cfg1
-     assign hash[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = { ghr[pt.BHT_GHR_SIZE-1:pt.BTB_INDEX1_HI-1], hashin[pt.BTB_INDEX1_HI:2]^ghr[pt.BTB_INDEX1_HI-2:0]};
-   end
-   else begin : ghrhash_cfg2
-     assign hash[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = { hashin[pt.BHT_GHR_SIZE+1:2]^ghr[pt.BHT_GHR_SIZE-1:0]};
-   end
-
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/lib/mem_lib.sv b/verilog/rtl/BrqRV_EB1/design/lib/mem_lib.sv
deleted file mode 100644
index a3eb4c5..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lib/mem_lib.sv
+++ /dev/null
@@ -1,242 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or it's affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-`define eb1_LOCAL_RAM_TEST_IO          \
-input logic WE,              \
-input logic ME,              \
-input logic CLK,             \
-input logic TEST1,           \
-input logic RME,             \
-input logic  [3:0] RM,       \
-input logic LS,              \
-input logic DS,              \
-input logic SD,              \
-input logic TEST_RNM,        \
-input logic BC1,             \
-input logic BC2,             \
-output logic ROP
-
-`define eb1_RAM(depth, width)              \
-module ram_``depth``x``width(               \
-   input logic [$clog2(depth)-1:0] ADR,     \
-   input logic [(width-1):0] D,             \
-   output logic [(width-1):0] Q,            \
-    `eb1_LOCAL_RAM_TEST_IO                 \
-);                                          \
-reg [(width-1):0] ram_core [(depth-1):0];   \
-`ifdef GTLSIM                               \
-integer i;                                  \
-initial begin                               \
-   for (i=0; i<depth; i=i+1)                \
-     ram_core[i] = '0;                      \
-end                                         \
-`endif                                      \
-always @(posedge CLK) begin                 \
-`ifdef GTLSIM                               \
-   if (ME && WE) ram_core[ADR] <= D;        \
-`else                                       \
-   if (ME && WE) begin ram_core[ADR] <= D; Q <= 'x; end  \
-`endif                                      \
-   if (ME && ~WE) Q <= ram_core[ADR];       \
-end                                         \
-assign ROP = ME;                            \
-                                            \
-endmodule
-
-`define eb1_RAM_BE(depth, width)           \
-module ram_be_``depth``x``width(            \
-   input logic [$clog2(depth)-1:0] ADR,     \
-   input logic [(width-1):0] D, WEM,        \
-   output logic [(width-1):0] Q,            \
-    `eb1_LOCAL_RAM_TEST_IO                 \
-);                                          \
-reg [(width-1):0] ram_core [(depth-1):0];   \
-`ifdef GTLSIM                               \
-integer i;                                  \
-initial begin                               \
-   for (i=0; i<depth; i=i+1)                \
-     ram_core[i] = '0;                      \
-end                                         \
-`endif                                      \
-always @(posedge CLK) begin                 \
-`ifdef GTLSIM                               \
-   if (ME && WE)       ram_core[ADR] <= D & WEM | ~WEM & ram_core[ADR];      \
-`else                                       \
-   if (ME && WE) begin ram_core[ADR] <= D & WEM | ~WEM & ram_core[ADR]; Q <= 'x; end  \
-`endif                                      \
-   if (ME && ~WE) Q <= ram_core[ADR];          \
-end                                         \
-assign ROP = ME;                            \
-                                            \
-endmodule
-
-// parameterizable RAM for verilator sims
-module eb1_ram #(depth=4096, width=39) (
-input logic [$clog2(depth)-1:0] ADR,
-input logic [(width-1):0] D,
-output logic [(width-1):0] Q,
- `eb1_LOCAL_RAM_TEST_IO
-);
-reg [(width-1):0] ram_core [(depth-1):0];
-
-always @(posedge CLK) begin
-`ifdef GTLSIM
-   if (ME && WE)       ram_core[ADR] <= D;
-`else
-   if (ME && WE) begin ram_core[ADR] <= D; Q <= 'x; end
-`endif
-   if (ME && ~WE) Q <= ram_core[ADR];
-end
-endmodule
-
-//=========================================================================================================================
-//=================================== START OF CCM  =======================================================================
-//============= Possible sram sizes for a 39 bit wide memory ( 4 bytes + 7 bits ECC ) =====================================
-//-------------------------------------------------------------------------------------------------------------------------
-`eb1_RAM(32768, 39)
-`eb1_RAM(16384, 39)
-`eb1_RAM(8192, 39)
-`eb1_RAM(4096, 39)
-`eb1_RAM(3072, 39)
-`eb1_RAM(2048, 39)
-`eb1_RAM(1536, 39)     // need this for the 48KB DCCM option)
-`eb1_RAM(1024, 39)
-`eb1_RAM(768, 39)
-`eb1_RAM(512, 39)
-`eb1_RAM(256, 39)
-`eb1_RAM(128, 39)
-`eb1_RAM(1024, 20)
-`eb1_RAM(512, 20)
-`eb1_RAM(256, 20)
-`eb1_RAM(128, 20)
-`eb1_RAM(64, 20)
-`eb1_RAM(4096, 34)
-`eb1_RAM(2048, 34)
-`eb1_RAM(1024, 34)
-`eb1_RAM(512, 34)
-`eb1_RAM(256, 34)
-`eb1_RAM(128, 34)
-`eb1_RAM(64, 34)
-`eb1_RAM(8192, 68)
-`eb1_RAM(4096, 68)
-`eb1_RAM(2048, 68)
-`eb1_RAM(1024, 68)
-`eb1_RAM(512, 68)
-`eb1_RAM(256, 68)
-`eb1_RAM(128, 68)
-`eb1_RAM(64, 68)
-`eb1_RAM(8192, 71)
-`eb1_RAM(4096, 71)
-`eb1_RAM(2048, 71)
-`eb1_RAM(1024, 71)
-`eb1_RAM(512, 71)
-`eb1_RAM(256, 71)
-`eb1_RAM(128, 71)
-`eb1_RAM(64, 71)
-`eb1_RAM(4096, 42)
-`eb1_RAM(2048, 42)
-`eb1_RAM(1024, 42)
-`eb1_RAM(512, 42)
-`eb1_RAM(256, 42)
-`eb1_RAM(128, 42)
-`eb1_RAM(64, 42)
-`eb1_RAM(4096, 22)
-`eb1_RAM(2048, 22)
-`eb1_RAM(1024, 22)
-`eb1_RAM(512, 22)
-`eb1_RAM(256, 22)
-`eb1_RAM(128, 22)
-`eb1_RAM(64, 22)
-`eb1_RAM(1024, 26)
-`eb1_RAM(4096, 26)
-`eb1_RAM(2048, 26)
-`eb1_RAM(512, 26)
-`eb1_RAM(256, 26)
-`eb1_RAM(128, 26)
-`eb1_RAM(64, 26)
-`eb1_RAM(32, 26)
-`eb1_RAM(32, 22)
-`eb1_RAM_BE(8192, 142)
-`eb1_RAM_BE(4096, 142)
-`eb1_RAM_BE(2048, 142)
-`eb1_RAM_BE(1024, 142)
-`eb1_RAM_BE(512, 142)
-`eb1_RAM_BE(256, 142)
-`eb1_RAM_BE(128, 142)
-`eb1_RAM_BE(64, 142)
-`eb1_RAM_BE(8192, 284)
-`eb1_RAM_BE(4096, 284)
-`eb1_RAM_BE(2048, 284)
-`eb1_RAM_BE(1024, 284)
-`eb1_RAM_BE(512, 284)
-`eb1_RAM_BE(256, 284)
-`eb1_RAM_BE(128, 284)
-`eb1_RAM_BE(64, 284)
-`eb1_RAM_BE(8192, 136)
-`eb1_RAM_BE(4096, 136)
-`eb1_RAM_BE(2048, 136)
-`eb1_RAM_BE(1024, 136)
-`eb1_RAM_BE(512, 136)
-`eb1_RAM_BE(256, 136)
-`eb1_RAM_BE(128, 136)
-`eb1_RAM_BE(64, 136)
-`eb1_RAM_BE(8192, 272)
-`eb1_RAM_BE(4096, 272)
-`eb1_RAM_BE(2048, 272)
-`eb1_RAM_BE(1024, 272)
-`eb1_RAM_BE(512, 272)
-`eb1_RAM_BE(256, 272)
-`eb1_RAM_BE(128, 272)
-`eb1_RAM_BE(64, 272)
-`eb1_RAM_BE(4096, 52)
-`eb1_RAM_BE(2048, 52)
-`eb1_RAM_BE(1024, 52)
-`eb1_RAM_BE(512, 52)
-`eb1_RAM_BE(256, 52)
-`eb1_RAM_BE(128, 52)
-`eb1_RAM_BE(64, 52)
-`eb1_RAM_BE(32, 52)
-`eb1_RAM_BE(4096, 104)
-`eb1_RAM_BE(2048, 104)
-`eb1_RAM_BE(1024, 104)
-`eb1_RAM_BE(512, 104)
-`eb1_RAM_BE(256, 104)
-`eb1_RAM_BE(128, 104)
-`eb1_RAM_BE(64, 104)
-`eb1_RAM_BE(32, 104)
-`eb1_RAM_BE(4096, 44)
-`eb1_RAM_BE(2048, 44)
-`eb1_RAM_BE(1024, 44)
-`eb1_RAM_BE(512, 44)
-`eb1_RAM_BE(256, 44)
-`eb1_RAM_BE(128, 44)
-`eb1_RAM_BE(64, 44)
-`eb1_RAM_BE(32, 44)
-`eb1_RAM_BE(4096, 88)
-`eb1_RAM_BE(2048, 88)
-`eb1_RAM_BE(1024, 88)
-`eb1_RAM_BE(512, 88)
-`eb1_RAM_BE(256, 88)
-`eb1_RAM_BE(128, 88)
-`eb1_RAM_BE(64, 88)
-`eb1_RAM_BE(32, 88)
-`eb1_RAM(64, 39)
-
-
-`undef eb1_RAM
-`undef eb1_RAM_BE
-`undef eb1_LOCAL_RAM_TEST_IO
-
-
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu.sv
deleted file mode 100644
index 31d1148..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu.sv
+++ /dev/null
@@ -1,425 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Function: Top level file for load store unit
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-
-module eb1_lsu
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-(
-
-   input logic                             clk_override,             // Override non-functional clock gating
-   input logic                             dec_tlu_flush_lower_r,    // I0/I1 writeback flush. This is used to flush the old packets only
-   input logic                             dec_tlu_i0_kill_writeb_r, // I0 is flushed, don't writeback any results to arch state
-   input logic                             dec_tlu_force_halt,       // This will be high till TLU goes to debug halt
-
-   // chicken signals
-   input logic                             dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                             dec_tlu_wb_coalescing_disable,     // disable the write buffer coalesce
-   input logic                             dec_tlu_sideeffect_posted_disable, // disable the posted sideeffect load store to the bus
-   input logic                             dec_tlu_core_ecc_disable,          // disable the generation of the ecc
-
-   input logic [31:0]                      exu_lsu_rs1_d,        // address rs operand
-   input logic [31:0]                      exu_lsu_rs2_d,        // store data
-   input logic [11:0]                      dec_lsu_offset_d,     // address offset operand
-
-   input                                   eb1_lsu_pkt_t lsu_p,  // lsu control packet
-   input logic                             dec_lsu_valid_raw_d,   // Raw valid for address computation
-   input logic [31:0]                      dec_tlu_mrac_ff,       // CSR for memory region control
-
-   output logic [31:0]                     lsu_result_m,          // lsu load data
-   output logic [31:0]                     lsu_result_corr_r,     // This is the ECC corrected data going to RF
-   output logic                            lsu_load_stall_any,    // This is for blocking loads in the decode
-   output logic                            lsu_store_stall_any,   // This is for blocking stores in the decode
-   output logic                            lsu_fastint_stall_any, // Stall the fastint in decode-1 stage
-   output logic                            lsu_idle_any,          // lsu buffers are empty and no instruction in the pipeline. Doesn't include DMA
-   output logic                            lsu_active,            // Used to turn off top level clk
-
-   output logic [31:1]                     lsu_fir_addr,        // fast interrupt address
-   output logic [1:0]                      lsu_fir_error,       // Error during fast interrupt lookup
-
-   output logic                            lsu_single_ecc_error_incr,     // Increment the ecc counter
-   output eb1_lsu_error_pkt_t             lsu_error_pkt_r,               // lsu exception packet
-   output logic                            lsu_imprecise_error_load_any,  // bus load imprecise error
-   output logic                            lsu_imprecise_error_store_any, // bus store imprecise error
-   output logic [31:0]                     lsu_imprecise_error_addr_any,  // bus store imprecise error address
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,      // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,        // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,        // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r,    // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,   // the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,   // non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,     // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,         // Data of the non block load
-
-   output logic                            lsu_pmu_load_external_m,        // PMU : Bus loads
-   output logic                            lsu_pmu_store_external_m,       // PMU : Bus loads
-   output logic                            lsu_pmu_misaligned_m,           // PMU : misaligned
-   output logic                            lsu_pmu_bus_trxn,               // PMU : bus transaction
-   output logic                            lsu_pmu_bus_misaligned,         // PMU : misaligned access going to the bus
-   output logic                            lsu_pmu_bus_error,              // PMU : bus sending error back
-   output logic                            lsu_pmu_bus_busy,               // PMU : bus is not ready
-
-   // Trigger signals
-   input                                   eb1_trigger_pkt_t [3:0] trigger_pkt_any, // Trigger info from the decode
-   output logic [3:0]                      lsu_trigger_match_m,                      // lsu trigger hit (one bit per trigger)
-
-   // DCCM ports
-   output logic                            dccm_wren,       // DCCM write enable
-   output logic                            dccm_rden,       // DCCM read enable
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo, // DCCM write address low bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi, // DCCM write address hi bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo, // DCCM read address low bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi, // DCCM read address hi bank (hi and low same if aligned read)
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo, // DCCM write data for lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi, // DCCM write data for hi bank
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_lo, // DCCM read data low bank
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_hi, // DCCM read data hi bank
-
-   // PIC ports
-   output logic                            picm_wren,    // PIC memory write enable
-   output logic                            picm_rden,    // PIC memory read enable
-   output logic                            picm_mken,    // Need to read the mask for stores to determine which bits to write/forward
-   output logic [31:0]                     picm_rdaddr,  // address for pic read access
-   output logic [31:0]                     picm_wraddr,  // address for pic write access
-   output logic [31:0]                     picm_wr_data, // PIC memory write data
-   input logic [31:0]                      picm_rd_data, // PIC memory read/mask data
-
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-   input  logic                            lsu_axi_rlast,
-
-   input logic                             lsu_bus_clk_en,    // external drives a clock_en to control bus ratio
-
-   // DMA slave
-   input logic                             dma_dccm_req,       // DMA read/write to dccm
-   input logic [2:0]                       dma_mem_tag,        // DMA request tag
-   input logic [31:0]                      dma_mem_addr,       // DMA address
-   input logic [2:0]                       dma_mem_sz,         // DMA access size
-   input logic                             dma_mem_write,      // DMA access is a write
-   input logic [63:0]                      dma_mem_wdata,      // DMA write data
-
-   output logic                            dccm_dma_rvalid,     // lsu data valid for DMA dccm read
-   output logic                            dccm_dma_ecc_error,  // DMA load had ecc error
-   output logic [2:0]                      dccm_dma_rtag,       // DMA request tag
-   output logic [63:0]                     dccm_dma_rdata,      // lsu data for DMA dccm read
-   output logic                            dccm_ready,          // lsu ready for DMA access
-
-   input logic                             scan_mode,           // scan mode
-   input logic                             clk,                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                             active_clk,          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                             rst_l                // reset, active low
-
-   );
-
-
-   logic        lsu_dccm_rden_m;
-   logic        lsu_dccm_rden_r;
-   logic [31:0] store_data_m;
-   logic [31:0] store_data_r;
-   logic [31:0] store_data_hi_r, store_data_lo_r;
-   logic [31:0] store_datafn_hi_r, store_datafn_lo_r;
-   logic [31:0] sec_data_lo_m, sec_data_hi_m;
-   logic [31:0] sec_data_lo_r, sec_data_hi_r;
-
-   logic [31:0] lsu_ld_data_m;
-   logic [31:0] dccm_rdata_hi_m, dccm_rdata_lo_m;
-   logic [6:0]  dccm_data_ecc_hi_m, dccm_data_ecc_lo_m;
-   logic        lsu_single_ecc_error_m;
-   logic        lsu_double_ecc_error_m;
-
-   logic [31:0] lsu_ld_data_r;
-   logic [31:0] lsu_ld_data_corr_r;
-   logic [31:0] dccm_rdata_hi_r, dccm_rdata_lo_r;
-   logic [6:0]  dccm_data_ecc_hi_r, dccm_data_ecc_lo_r;
-   logic        single_ecc_error_hi_r, single_ecc_error_lo_r;
-   logic        lsu_single_ecc_error_r;
-   logic        lsu_double_ecc_error_r;
-   logic        ld_single_ecc_error_r, ld_single_ecc_error_r_ff;
-
-   logic [31:0] picm_mask_data_m;
-
-   logic [31:0] lsu_addr_d, lsu_addr_m, lsu_addr_r;
-   logic [31:0] end_addr_d, end_addr_m, end_addr_r;
-
-   eb1_lsu_pkt_t    lsu_pkt_d, lsu_pkt_m, lsu_pkt_r;
-   logic        lsu_i0_valid_d, lsu_i0_valid_m, lsu_i0_valid_r;
-
-   // Store Buffer signals
-   logic        store_stbuf_reqvld_r;
-   logic        ldst_stbuf_reqvld_r;
-
-   logic        lsu_commit_r;
-   logic        lsu_exc_m;
-
-   logic        addr_in_dccm_d, addr_in_dccm_m, addr_in_dccm_r;
-   logic        addr_in_pic_d, addr_in_pic_m, addr_in_pic_r;
-   logic        ldst_dual_d, ldst_dual_m, ldst_dual_r;
-   logic        addr_external_m;
-
-   logic                          stbuf_reqvld_any;
-   logic                          stbuf_reqvld_flushed_any;
-   logic [pt.LSU_SB_BITS-1:0]     stbuf_addr_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_data_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  stbuf_ecc_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r_ff, sec_data_hi_r_ff;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_hi_r_ff, sec_data_ecc_lo_r_ff;
-
-   logic                          lsu_cmpen_m;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_hi_m;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_lo_m;
-   logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_hi_m;
-   logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_lo_m;
-
-   logic        lsu_stbuf_commit_any;
-   logic        lsu_stbuf_empty_any;   // This is for blocking loads
-   logic        lsu_stbuf_full_any;
-
-    // Bus signals
-   logic        lsu_busreq_r;
-   logic        lsu_bus_buffer_pend_any;
-   logic        lsu_bus_buffer_empty_any;
-   logic        lsu_bus_buffer_full_any;
-   logic        lsu_busreq_m;
-   logic [31:0] bus_read_data_m;
-
-   logic        flush_m_up, flush_r;
-   logic        is_sideeffects_m;
-   logic [2:0]  dma_mem_tag_d, dma_mem_tag_m;
-   logic        ldst_nodma_mtor;
-   logic        dma_dccm_wen, dma_pic_wen;
-   logic [31:0] dma_dccm_wdata_lo, dma_dccm_wdata_hi;
-   logic [pt.DCCM_ECC_WIDTH-1:0] dma_dccm_wdata_ecc_lo, dma_dccm_wdata_ecc_hi;
-
-   // Clocks
-   logic        lsu_busm_clken;
-   logic        lsu_bus_obuf_c1_clken;
-   logic        lsu_c1_m_clk, lsu_c1_r_clk;
-   logic        lsu_c2_m_clk, lsu_c2_r_clk;
-   logic        lsu_store_c1_m_clk, lsu_store_c1_r_clk;
-
-   logic        lsu_stbuf_c1_clk;
-   logic        lsu_bus_ibuf_c1_clk, lsu_bus_obuf_c1_clk, lsu_bus_buf_c1_clk;
-   logic        lsu_busm_clk;
-   logic        lsu_free_c2_clk;
-
-   logic        lsu_raw_fwd_lo_m, lsu_raw_fwd_hi_m;
-   logic        lsu_raw_fwd_lo_r, lsu_raw_fwd_hi_r;
-
-   assign       lsu_raw_fwd_lo_m = (|stbuf_fwdbyteen_lo_m[pt.DCCM_BYTE_WIDTH-1:0]);
-   assign       lsu_raw_fwd_hi_m = (|stbuf_fwdbyteen_hi_m[pt.DCCM_BYTE_WIDTH-1:0]);
-
-   eb1_lsu_lsc_ctl #(.pt(pt)) lsu_lsc_ctl (.*);
-
-   // block stores in decode  - for either bus or stbuf reasons
-   assign lsu_store_stall_any = lsu_stbuf_full_any | lsu_bus_buffer_full_any | ld_single_ecc_error_r_ff;
-   assign lsu_load_stall_any = lsu_bus_buffer_full_any | ld_single_ecc_error_r_ff;
-   assign lsu_fastint_stall_any = ld_single_ecc_error_r;    // Stall the fastint in decode-1 stage
-
-   // Ready to accept dma trxns
-   // There can't be any inpipe forwarding from non-dma packet to dma packet since they can be flushed so we can't have st in r when dma is in m
-   assign dma_mem_tag_d[2:0]   = dma_mem_tag[2:0];
-   assign ldst_nodma_mtor = (lsu_pkt_m.valid & ~lsu_pkt_m.dma & (addr_in_dccm_m | addr_in_pic_m) & lsu_pkt_m.store);
-
-   assign dccm_ready = ~(dec_lsu_valid_raw_d | ldst_nodma_mtor | ld_single_ecc_error_r_ff);
-
-   assign dma_dccm_wen = dma_dccm_req & dma_mem_write & addr_in_dccm_d & dma_mem_sz[1];   // Perform DMA writes only for word/dword
-   assign dma_pic_wen  = dma_dccm_req & dma_mem_write & addr_in_pic_d;
-   assign {dma_dccm_wdata_hi[31:0], dma_dccm_wdata_lo[31:0]} = dma_mem_wdata[63:0] >> {dma_mem_addr[2:0], 3'b000};   // Shift the dma data to lower bits to make it consistent to lsu stores
-
-
-   // Generate per cycle flush signals
-   assign flush_m_up = dec_tlu_flush_lower_r;
-   assign flush_r    = dec_tlu_i0_kill_writeb_r;
-
-   // lsu idle
-   // lsu halt idle. This is used for entering the halt mode. Also, DMA accesses are allowed during fence.
-   // Indicates non-idle if there is a instruction valid in d-r or read/write buffers are non-empty since they can come with error
-   // Store buffer now have only non-dma dccm stores
-   // stbuf_empty not needed since it has only dccm stores
-   assign lsu_idle_any = ~((lsu_pkt_m.valid & ~lsu_pkt_m.dma) |
-                           (lsu_pkt_r.valid & ~lsu_pkt_r.dma)) &
-                           lsu_bus_buffer_empty_any;
-
-   assign lsu_active = (lsu_pkt_m.valid | lsu_pkt_r.valid | ld_single_ecc_error_r_ff) | ~lsu_bus_buffer_empty_any;  // This includes DMA. Used for gating top clock
-
-   // Instantiate the store buffer
-   assign store_stbuf_reqvld_r = lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_dccm_r & ~flush_r & (~lsu_pkt_r.dma | ((lsu_pkt_r.by | lsu_pkt_r.half) & ~lsu_double_ecc_error_r));
-
-   // Disable Forwarding for now
-   assign lsu_cmpen_m = lsu_pkt_m.valid & (lsu_pkt_m.load | lsu_pkt_m.store) & (addr_in_dccm_m | addr_in_pic_m);
-
-   // Bus signals
-   assign lsu_busreq_m = lsu_pkt_m.valid & ((lsu_pkt_m.load | lsu_pkt_m.store) & addr_external_m) & ~flush_m_up & ~lsu_exc_m & ~lsu_pkt_m.fast_int;
-
-   // Dual signals
-   assign ldst_dual_d  = (lsu_addr_d[2] != end_addr_d[2]);
-   assign ldst_dual_m  = (lsu_addr_m[2] != end_addr_m[2]);
-   assign ldst_dual_r  = (lsu_addr_r[2] != end_addr_r[2]);
-
-   // PMU signals
-   assign lsu_pmu_misaligned_m     = lsu_pkt_m.valid & ((lsu_pkt_m.half & lsu_addr_m[0]) | (lsu_pkt_m.word & (|lsu_addr_m[1:0])));
-   assign lsu_pmu_load_external_m  = lsu_pkt_m.valid & lsu_pkt_m.load & addr_external_m;
-   assign lsu_pmu_store_external_m = lsu_pkt_m.valid & lsu_pkt_m.store & addr_external_m;
-
-   eb1_lsu_dccm_ctl #(.pt(pt)) dccm_ctl (
-      .lsu_addr_d(lsu_addr_d[31:0]),
-      .end_addr_d(end_addr_d[pt.DCCM_BITS-1:0]),
-      .lsu_addr_m(lsu_addr_m[pt.DCCM_BITS-1:0]),
-      .lsu_addr_r(lsu_addr_r[31:0]),
-
-      .end_addr_m(end_addr_m[pt.DCCM_BITS-1:0]),
-      .end_addr_r(end_addr_r[pt.DCCM_BITS-1:0]),
-      .*
-   );
-
-   eb1_lsu_stbuf #(.pt(pt)) stbuf (
-      .lsu_addr_d(lsu_addr_d[pt.LSU_SB_BITS-1:0]),
-      .end_addr_d(end_addr_d[pt.LSU_SB_BITS-1:0]),
-
-      .*
-
-   );
-
-   eb1_lsu_ecc #(.pt(pt)) ecc (
-      .lsu_addr_r(lsu_addr_r[pt.DCCM_BITS-1:0]),
-      .end_addr_r(end_addr_r[pt.DCCM_BITS-1:0]),
-      .lsu_addr_m(lsu_addr_m[pt.DCCM_BITS-1:0]),
-      .end_addr_m(end_addr_m[pt.DCCM_BITS-1:0]),
-      .*
-   );
-
-   eb1_lsu_trigger #(.pt(pt)) trigger (
-      .store_data_m(store_data_m[31:0]),
-      .*
-   );
-
-   // Clk domain
-   eb1_lsu_clkdomain #(.pt(pt)) clkdomain (.*);
-
-   // Bus interface
-   eb1_lsu_bus_intf #(.pt(pt)) bus_intf (
-      .lsu_addr_m(lsu_addr_m[31:0] & {32{addr_external_m & lsu_pkt_m.valid}}),
-      .lsu_addr_r(lsu_addr_r[31:0] & {32{lsu_busreq_r}}),
-
-      .end_addr_m(end_addr_m[31:0] & {32{addr_external_m & lsu_pkt_m.valid}}),
-      .end_addr_r(end_addr_r[31:0] & {32{lsu_busreq_r}}),
-
-      .store_data_r(store_data_r[31:0] & {32{lsu_busreq_r}}),
-      .*
-   );
-
-   //Flops
-   rvdff #(3) dma_mem_tag_mff     (.*, .din(dma_mem_tag_d[2:0]), .dout(dma_mem_tag_m[2:0]), .clk(lsu_c1_m_clk));
-   rvdff #(2) lsu_raw_fwd_r_ff    (.*, .din({lsu_raw_fwd_hi_m, lsu_raw_fwd_lo_m}),     .dout({lsu_raw_fwd_hi_r, lsu_raw_fwd_lo_r}),     .clk(lsu_c2_r_clk));
-
-`ifdef RV_ASSERT_ON
-   logic [1:0] store_data_bypass_sel;
-   assign store_data_bypass_sel[1:0] =  {lsu_p.store_data_bypass_d, lsu_p.store_data_bypass_m};
-
-   property exception_no_lsu_flush;
-      @(posedge clk)  disable iff(~rst_l) lsu_lsc_ctl.lsu_error_pkt_m.exc_valid |-> ##[1:2] (flush_r );
-   endproperty
-   assert_exception_no_lsu_flush: assert property (exception_no_lsu_flush) else
-      $display("No flush within 2 cycles of exception");
-
-   // offset should be zero for fast interrupt
-   property offset_0_fastint;
-      @(posedge clk) disable iff(~rst_l) (lsu_p.valid & lsu_p.fast_int) |-> (dec_lsu_offset_d[11:0] == 12'b0);
-   endproperty
-   assert_offset_0_fastint: assert property (offset_0_fastint) else
-      $display("dec_tlu_offset_d not zero for fast interrupt redirect");
-
-   // DMA req should assert dccm rden/wren
-   property dmareq_dccm_wren_or_rden;
-      @(posedge clk) disable iff(~rst_l) dma_dccm_req |-> (dccm_rden | dccm_wren | addr_in_pic_d);
-   endproperty
-   assert_dmareq_dccm_wren_or_rden: assert property(dmareq_dccm_wren_or_rden) else
-      $display("dccm rden or wren not asserted during DMA request");
-
-   // fastint_stall should cause load/store stall next cycle
-   property fastint_stall_imply_loadstore_stall;
-      @(posedge clk) disable iff(~rst_l) (lsu_fastint_stall_any & (lsu_commit_r | lsu_pkt_r.dma)) |-> ##1 ((lsu_load_stall_any | lsu_store_stall_any) | ~ld_single_ecc_error_r_ff);
-   endproperty
-   assert_fastint_stall_imply_loadstore_stall: assert property (fastint_stall_imply_loadstore_stall) else
-      $display("fastint_stall should be followed by lsu_load/store_stall_any");
-
-   // Single ECC error implies rfnpc flush
-   property single_ecc_error_rfnpc_flush;
-      @(posedge clk) disable iff(~rst_l) (lsu_error_pkt_r.single_ecc_error & lsu_pkt_r.load) |=> ~lsu_commit_r;
-   endproperty
-   assert_single_ecc_error_rfnpc_flush: assert property (single_ecc_error_rfnpc_flush) else
-     $display("LSU commit next cycle after single ecc error");
-
-`endif
-
-endmodule // eb1_lsu
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_addrcheck.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_addrcheck.sv
deleted file mode 100644
index 010779b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_addrcheck.sv
+++ /dev/null
@@ -1,191 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Checks the memory map for the address
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_addrcheck
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   input logic          lsu_c2_m_clk,              // clock
-   input logic          rst_l,                     // reset
-
-   input logic [31:0]   start_addr_d,              // start address for lsu
-   input logic [31:0]   end_addr_d,                // end address for lsu
-   input eb1_lsu_pkt_t lsu_pkt_d,                 // packet in d
-   input logic [31:0]   dec_tlu_mrac_ff,           // CSR read
-   input logic [3:0]    rs1_region_d,              // address rs operand [31:28]
-
-   input logic [31:0]   rs1_d,                     // address rs operand
-
-   output logic         is_sideeffects_m,          // is sideffects space
-   output logic         addr_in_dccm_d,            // address in dccm
-   output logic         addr_in_pic_d,             // address in pic
-   output logic         addr_external_d,           // address in external
-
-   output logic         access_fault_d,            // access fault
-   output logic         misaligned_fault_d,        // misaligned
-   output logic [3:0]   exc_mscause_d,             // mscause for access/misaligned faults
-
-   output logic         fir_dccm_access_error_d,   // Fast interrupt dccm access error
-   output logic         fir_nondccm_access_error_d,// Fast interrupt dccm access error
-
-   input  logic         scan_mode                  // Scan mode
-);
-
-
-   logic        non_dccm_access_ok;
-   logic        is_sideeffects_d, is_aligned_d;
-   logic        start_addr_in_dccm_d, end_addr_in_dccm_d;
-   logic        start_addr_in_dccm_region_d, end_addr_in_dccm_region_d;
-   logic        start_addr_in_pic_d, end_addr_in_pic_d;
-   logic        start_addr_in_pic_region_d, end_addr_in_pic_region_d;
-   logic [4:0]  csr_idx;
-   logic        addr_in_iccm;
-   logic        start_addr_dccm_or_pic;
-   logic        base_reg_dccm_or_pic;
-   logic        unmapped_access_fault_d, mpu_access_fault_d, picm_access_fault_d, regpred_access_fault_d;
-   logic        regcross_misaligned_fault_d, sideeffect_misaligned_fault_d;
-   logic [3:0]  access_fault_mscause_d;
-   logic [3:0]  misaligned_fault_mscause_d;
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      // Start address check
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) start_addr_dccm_rangecheck (
-         .addr(start_addr_d[31:0]),
-         .in_range(start_addr_in_dccm_d),
-         .in_region(start_addr_in_dccm_region_d)
-      );
-
-      // End address check
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) end_addr_dccm_rangecheck (
-         .addr(end_addr_d[31:0]),
-         .in_range(end_addr_in_dccm_d),
-         .in_region(end_addr_in_dccm_region_d)
-      );
-   end else begin: Gen_dccm_disable // block: Gen_dccm_enable
-      assign start_addr_in_dccm_d = '0;
-      assign start_addr_in_dccm_region_d = '0;
-      assign end_addr_in_dccm_d = '0;
-      assign end_addr_in_dccm_region_d = '0;
-   end
-
-   if (pt.ICCM_ENABLE == 1) begin : check_iccm
-      assign addr_in_iccm =  (start_addr_d[31:28] == pt.ICCM_REGION);
-   end else begin
-     assign addr_in_iccm = 1'b0;
-   end
-
-   // PIC memory check
-   // Start address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) start_addr_pic_rangecheck (
-      .addr(start_addr_d[31:0]),
-      .in_range(start_addr_in_pic_d),
-      .in_region(start_addr_in_pic_region_d)
-   );
-
-   // End address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) end_addr_pic_rangecheck (
-      .addr(end_addr_d[31:0]),
-      .in_range(end_addr_in_pic_d),
-      .in_region(end_addr_in_pic_region_d)
-   );
-
-   assign start_addr_dccm_or_pic  = start_addr_in_dccm_region_d | start_addr_in_pic_region_d;
-   assign base_reg_dccm_or_pic    = ((rs1_region_d[3:0] == pt.DCCM_REGION) & pt.DCCM_ENABLE) | (rs1_region_d[3:0] == pt.PIC_REGION);
-   assign addr_in_dccm_d          = (start_addr_in_dccm_d & end_addr_in_dccm_d);
-   assign addr_in_pic_d           = (start_addr_in_pic_d & end_addr_in_pic_d);
-
-   assign addr_external_d   = ~(start_addr_in_dccm_region_d | start_addr_in_pic_region_d);
-   assign csr_idx[4:0]       = {start_addr_d[31:28], 1'b1};
-   assign is_sideeffects_d = dec_tlu_mrac_ff[csr_idx] & ~(start_addr_in_dccm_region_d | start_addr_in_pic_region_d | addr_in_iccm) & lsu_pkt_d.valid & (lsu_pkt_d.store | lsu_pkt_d.load);  //every region has the 2 LSB indicating ( 1: sideeffects/no_side effects, and 0: cacheable ). Ignored in internal regions
-   assign is_aligned_d    = (lsu_pkt_d.word & (start_addr_d[1:0] == 2'b0)) |
-                              (lsu_pkt_d.half & (start_addr_d[0] == 1'b0)) |
-                              lsu_pkt_d.by;
-
-   assign non_dccm_access_ok = (~(|{pt.DATA_ACCESS_ENABLE0,pt.DATA_ACCESS_ENABLE1,pt.DATA_ACCESS_ENABLE2,pt.DATA_ACCESS_ENABLE3,pt.DATA_ACCESS_ENABLE4,pt.DATA_ACCESS_ENABLE5,pt.DATA_ACCESS_ENABLE6,pt.DATA_ACCESS_ENABLE7})) |
-                               (((pt.DATA_ACCESS_ENABLE0 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK0)) == (pt.DATA_ACCESS_ADDR0 | pt.DATA_ACCESS_MASK0)) |
-                                 (pt.DATA_ACCESS_ENABLE1 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK1)) == (pt.DATA_ACCESS_ADDR1 | pt.DATA_ACCESS_MASK1)) |
-                                 (pt.DATA_ACCESS_ENABLE2 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK2)) == (pt.DATA_ACCESS_ADDR2 | pt.DATA_ACCESS_MASK2)) |
-                                 (pt.DATA_ACCESS_ENABLE3 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK3)) == (pt.DATA_ACCESS_ADDR3 | pt.DATA_ACCESS_MASK3)) |
-                                 (pt.DATA_ACCESS_ENABLE4 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK4)) == (pt.DATA_ACCESS_ADDR4 | pt.DATA_ACCESS_MASK4)) |
-                                 (pt.DATA_ACCESS_ENABLE5 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK5)) == (pt.DATA_ACCESS_ADDR5 | pt.DATA_ACCESS_MASK5)) |
-                                 (pt.DATA_ACCESS_ENABLE6 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK6)) == (pt.DATA_ACCESS_ADDR6 | pt.DATA_ACCESS_MASK6)) |
-                                 (pt.DATA_ACCESS_ENABLE7 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK7)) == (pt.DATA_ACCESS_ADDR7 | pt.DATA_ACCESS_MASK7)))   &
-                                ((pt.DATA_ACCESS_ENABLE0 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK0)) == (pt.DATA_ACCESS_ADDR0 | pt.DATA_ACCESS_MASK0)) |
-                                 (pt.DATA_ACCESS_ENABLE1 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK1)) == (pt.DATA_ACCESS_ADDR1 | pt.DATA_ACCESS_MASK1)) |
-                                 (pt.DATA_ACCESS_ENABLE2 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK2)) == (pt.DATA_ACCESS_ADDR2 | pt.DATA_ACCESS_MASK2)) |
-                                 (pt.DATA_ACCESS_ENABLE3 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK3)) == (pt.DATA_ACCESS_ADDR3 | pt.DATA_ACCESS_MASK3)) |
-                                 (pt.DATA_ACCESS_ENABLE4 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK4)) == (pt.DATA_ACCESS_ADDR4 | pt.DATA_ACCESS_MASK4)) |
-                                 (pt.DATA_ACCESS_ENABLE5 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK5)) == (pt.DATA_ACCESS_ADDR5 | pt.DATA_ACCESS_MASK5)) |
-                                 (pt.DATA_ACCESS_ENABLE6 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK6)) == (pt.DATA_ACCESS_ADDR6 | pt.DATA_ACCESS_MASK6)) |
-                                 (pt.DATA_ACCESS_ENABLE7 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK7)) == (pt.DATA_ACCESS_ADDR7 | pt.DATA_ACCESS_MASK7))));
-
-   // Access fault logic
-   // 0. Unmapped local memory : Addr in dccm region but not in dccm offset OR Addr in picm region but not in picm offset OR DCCM -> PIC cross when DCCM/PIC in same region
-   // 1. Uncorrectable (double bit) ECC error
-   // 3. Address is not in a populated non-dccm region
-   // 5. Region predication access fault: Base Address in DCCM/PIC and Final address in non-DCCM/non-PIC region or vice versa
-   // 6. Ld/St access to picm are not word aligned or word size
-   assign regpred_access_fault_d  = (start_addr_dccm_or_pic ^ base_reg_dccm_or_pic);                   // 5. Region predication access fault: Base Address in DCCM/PIC and Final address in non-DCCM/non-PIC region or vice versa
-   assign picm_access_fault_d     = (addr_in_pic_d & ((start_addr_d[1:0] != 2'b0) | ~lsu_pkt_d.word));                                               // 6. Ld/St access to picm are not word aligned or word size
-
-   if (pt.DCCM_ENABLE & (pt.DCCM_REGION == pt.PIC_REGION)) begin
-      assign unmapped_access_fault_d = ((start_addr_in_dccm_region_d & ~(start_addr_in_dccm_d | start_addr_in_pic_d)) |   // 0. Addr in dccm/pic region but not in dccm/pic offset
-                                        (end_addr_in_dccm_region_d & ~(end_addr_in_dccm_d | end_addr_in_pic_d))       |   // 0. Addr in dccm/pic region but not in dccm/pic offset
-                                        (start_addr_in_dccm_d & end_addr_in_pic_d)                                    |   // 0. DCCM -> PIC cross when DCCM/PIC in same region
-                                        (start_addr_in_pic_d  & end_addr_in_dccm_d));                                     // 0. DCCM -> PIC cross when DCCM/PIC in same region
-      assign mpu_access_fault_d      = (~start_addr_in_dccm_region_d & ~non_dccm_access_ok);                              // 3. Address is not in a populated non-dccm region
-   end else begin
-      assign unmapped_access_fault_d = ((start_addr_in_dccm_region_d & ~start_addr_in_dccm_d)                              |   // 0. Addr in dccm region but not in dccm offset
-                                        (end_addr_in_dccm_region_d & ~end_addr_in_dccm_d)                                  |   // 0. Addr in dccm region but not in dccm offset
-                                        (start_addr_in_pic_region_d & ~start_addr_in_pic_d)                                |   // 0. Addr in picm region but not in picm offset
-                                        (end_addr_in_pic_region_d & ~end_addr_in_pic_d));                                      // 0. Addr in picm region but not in picm offset
-      assign mpu_access_fault_d      = (~start_addr_in_pic_region_d & ~start_addr_in_dccm_region_d & ~non_dccm_access_ok);     // 3. Address is not in a populated non-dccm region
-   end
-
-   assign access_fault_d = (unmapped_access_fault_d | mpu_access_fault_d | picm_access_fault_d | regpred_access_fault_d) & lsu_pkt_d.valid & ~lsu_pkt_d.dma;
-   assign access_fault_mscause_d[3:0] = unmapped_access_fault_d ? 4'h2 : mpu_access_fault_d ? 4'h3 : regpred_access_fault_d ? 4'h5 : picm_access_fault_d ? 4'h6 : 4'h0;
-
-   // Misaligned happens due to 2 reasons
-   // 0. Region cross
-   // 1. sideeffects access which are not aligned
-   assign regcross_misaligned_fault_d = (start_addr_d[31:28] != end_addr_d[31:28]);
-   assign sideeffect_misaligned_fault_d = (is_sideeffects_d & ~is_aligned_d);
-   assign misaligned_fault_d = (regcross_misaligned_fault_d | (sideeffect_misaligned_fault_d & addr_external_d)) & lsu_pkt_d.valid & ~lsu_pkt_d.dma;
-   assign misaligned_fault_mscause_d[3:0] = regcross_misaligned_fault_d ? 4'h2 : sideeffect_misaligned_fault_d ? 4'h1 : 4'h0;
-
-   assign exc_mscause_d[3:0] = misaligned_fault_d ? misaligned_fault_mscause_d[3:0] : access_fault_mscause_d[3:0];
-
-   // Fast interrupt error logic
-   assign fir_dccm_access_error_d    = ((start_addr_in_dccm_region_d & ~start_addr_in_dccm_d) |
-                                        (end_addr_in_dccm_region_d   & ~end_addr_in_dccm_d)) & lsu_pkt_d.valid & lsu_pkt_d.fast_int;
-   assign fir_nondccm_access_error_d = ~(start_addr_in_dccm_region_d & end_addr_in_dccm_region_d) & lsu_pkt_d.valid & lsu_pkt_d.fast_int;
-
-   rvdff #(.WIDTH(1))   is_sideeffects_mff (.din(is_sideeffects_d), .dout(is_sideeffects_m), .clk(lsu_c2_m_clk), .*);
-
-endmodule // eb1_lsu_addrcheck
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_bus_buffer.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_bus_buffer.sv
deleted file mode 100644
index 1293f6e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_bus_buffer.sv
+++ /dev/null
@@ -1,936 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: lsu interface with interface queue
-// Comments:
-//
-//********************************************************************************
-
-module eb1_lsu_bus_buffer
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   input logic                          clk,                                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                          clk_override,                       // Override non-functional clock gating
-   input logic                          rst_l,                              // reset, active low
-   input logic                          scan_mode,                          // scan mode
-   input logic                          dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                          dec_tlu_wb_coalescing_disable,      // disable write buffer coalescing
-   input logic                          dec_tlu_sideeffect_posted_disable,  // Don't block the sideeffect load store to the bus
-   input logic                          dec_tlu_force_halt,
-
-   // various clocks needed for the bus reads and writes
-   input logic                          lsu_bus_obuf_c1_clken,
-   input logic                          lsu_busm_clken,
-   input logic                          lsu_c2_r_clk,
-   input logic                          lsu_bus_ibuf_c1_clk,
-   input logic                          lsu_bus_obuf_c1_clk,
-   input logic                          lsu_bus_buf_c1_clk,
-   input logic                          lsu_free_c2_clk,
-   input logic                          lsu_busm_clk,
-
-
-   input logic                          dec_lsu_valid_raw_d,            // Raw valid for address computation
-   input eb1_lsu_pkt_t                 lsu_pkt_m,                      // lsu packet flowing down the pipe
-   input eb1_lsu_pkt_t                 lsu_pkt_r,                      // lsu packet flowing down the pipe
-
-   input logic [31:0]                   lsu_addr_m,                     // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_m,                     // lsu address flowing down the pipe
-   input logic [31:0]                   lsu_addr_r,                     // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_r,                     // lsu address flowing down the pipe
-   input logic [31:0]                   store_data_r,                   // store data flowing down the pipe
-
-   input logic                          no_word_merge_r,                // r store doesn't need to wait in ibuf since it will not coalesce
-   input logic                          no_dword_merge_r,               // r store doesn't need to wait in ibuf since it will not coalesce
-   input logic                          lsu_busreq_m,                   // bus request is in m
-   output logic                         lsu_busreq_r,                   // bus request is in r
-   input logic                          ld_full_hit_m,                  // load can get all its byte from a write buffer entry
-   input logic                          flush_m_up,                     // flush
-   input logic                          flush_r,                        // flush
-   input logic                          lsu_commit_r,                   // lsu instruction in r commits
-   input logic                          is_sideeffects_r,               // lsu attribute is side_effects
-   input logic                          ldst_dual_d,                    // load/store is unaligned at 32 bit boundary
-   input logic                          ldst_dual_m,                    // load/store is unaligned at 32 bit boundary
-   input logic                          ldst_dual_r,                    // load/store is unaligned at 32 bit boundary
-
-   input logic [7:0]                    ldst_byteen_ext_m,              // HI and LO signals
-
-   output logic                         lsu_bus_buffer_pend_any,          // bus buffer has a pending bus entry
-   output logic                         lsu_bus_buffer_full_any,          // bus buffer is full
-   output logic                         lsu_bus_buffer_empty_any,         // bus buffer is empty
-
-   output logic [3:0]                   ld_byte_hit_buf_lo, ld_byte_hit_buf_hi,    // Byte enables for forwarding data
-   output logic [31:0]                  ld_fwddata_buf_lo, ld_fwddata_buf_hi,      // load forwarding data
-
-   output logic                         lsu_imprecise_error_load_any,     // imprecise load bus error
-   output logic                         lsu_imprecise_error_store_any,    // imprecise store bus error
-   output logic [31:0]                  lsu_imprecise_error_addr_any,     // address of the imprecise error
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,     // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,       // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,       // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r,   // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,  // the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,  // non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,    // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,        // Data of the non block load
-
-   // PMU events
-   output logic                         lsu_pmu_bus_trxn,
-   output logic                         lsu_pmu_bus_misaligned,
-   output logic                         lsu_pmu_bus_error,
-   output logic                         lsu_pmu_bus_busy,
-
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-
-   input logic                             lsu_bus_clk_en,
-   input logic                             lsu_bus_clk_en_q
-
-);
-
-   // For Ld: IDLE -> WAIT -> CMD -> RESP -> DONE_PARTIAL(?) -> DONE_WAIT(?) -> DONE -> IDLE
-   // For St: IDLE -> WAIT -> CMD -> RESP(?) -> IDLE
-   typedef enum logic [2:0] {IDLE=3'b000, WAIT=3'b001, CMD=3'b010, RESP=3'b011, DONE_PARTIAL=3'b100, DONE_WAIT=3'b101, DONE=3'b110} state_t;
-
-   localparam DEPTH     = pt.LSU_NUM_NBLOAD;
-   localparam DEPTH_LOG2 = pt.LSU_NUM_NBLOAD_WIDTH;
-   localparam TIMER     = 8;   // This can be only power of 2
-   localparam TIMER_MAX = TIMER - 1;  // Maximum value of timer
-   localparam TIMER_LOG2 = (TIMER < 2) ? 1 : $clog2(TIMER);
-
-   logic [3:0]                          ldst_byteen_hi_m, ldst_byteen_lo_m;
-   logic [DEPTH-1:0]                    ld_addr_hitvec_lo, ld_addr_hitvec_hi;
-   logic [3:0][DEPTH-1:0]               ld_byte_hitvec_lo, ld_byte_hitvec_hi;
-   logic [3:0][DEPTH-1:0]               ld_byte_hitvecfn_lo, ld_byte_hitvecfn_hi;
-
-   logic                                ld_addr_ibuf_hit_lo, ld_addr_ibuf_hit_hi;
-   logic [3:0]                          ld_byte_ibuf_hit_lo, ld_byte_ibuf_hit_hi;
-
-   logic [3:0]                          ldst_byteen_r;
-   logic [3:0]                          ldst_byteen_hi_r, ldst_byteen_lo_r;
-   logic [31:0]                         store_data_hi_r, store_data_lo_r;
-   logic                                is_aligned_r;                   // Aligned load/store
-   logic                                ldst_samedw_r;
-
-   logic                                lsu_nonblock_load_valid_r;
-   logic [31:0]                         lsu_nonblock_load_data_hi, lsu_nonblock_load_data_lo, lsu_nonblock_data_unalgn;
-   logic [1:0]                          lsu_nonblock_addr_offset;
-   logic [1:0]                          lsu_nonblock_sz;
-   logic                                lsu_nonblock_unsign;
-   logic                                lsu_nonblock_load_data_ready;
-
-   logic [DEPTH-1:0]                    CmdPtr0Dec, CmdPtr1Dec;
-   logic [DEPTH-1:0]                    RspPtrDec;
-   logic [DEPTH_LOG2-1:0]               CmdPtr0, CmdPtr1;
-   logic [DEPTH_LOG2-1:0]               RspPtr;
-   logic [DEPTH_LOG2-1:0]               WrPtr0_m, WrPtr0_r;
-   logic [DEPTH_LOG2-1:0]               WrPtr1_m, WrPtr1_r;
-   logic                                found_wrptr0, found_wrptr1, found_cmdptr0, found_cmdptr1;
-   logic [3:0]                          buf_numvld_any, buf_numvld_wrcmd_any, buf_numvld_cmd_any, buf_numvld_pend_any;
-   logic                                any_done_wait_state;
-   logic                                bus_sideeffect_pend;
-   logic                                bus_coalescing_disable;
-
-   logic                                bus_addr_match_pending;
-   logic                                bus_cmd_sent, bus_cmd_ready;
-   logic                                bus_wcmd_sent, bus_wdata_sent;
-   logic                                bus_rsp_read, bus_rsp_write;
-   logic [pt.LSU_BUS_TAG-1:0]           bus_rsp_read_tag, bus_rsp_write_tag;
-   logic                                bus_rsp_read_error, bus_rsp_write_error;
-   logic [63:0]                         bus_rsp_rdata;
-
-   // Bus buffer signals
-   state_t [DEPTH-1:0]                  buf_state;
-   logic   [DEPTH-1:0][1:0]             buf_sz;
-   logic   [DEPTH-1:0][31:0]            buf_addr;
-   logic   [DEPTH-1:0][3:0]             buf_byteen;
-   logic   [DEPTH-1:0]                  buf_sideeffect;
-   logic   [DEPTH-1:0]                  buf_write;
-   logic   [DEPTH-1:0]                  buf_unsign;
-   logic   [DEPTH-1:0]                  buf_dual;
-   logic   [DEPTH-1:0]                  buf_samedw;
-   logic   [DEPTH-1:0]                  buf_nomerge;
-   logic   [DEPTH-1:0]                  buf_dualhi;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_dualtag;
-   logic   [DEPTH-1:0]                  buf_ldfwd;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_ldfwdtag;
-   logic   [DEPTH-1:0]                  buf_error;
-   logic   [DEPTH-1:0][31:0]            buf_data;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_age, buf_age_younger;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage, buf_rsp_pickage;
-
-   state_t [DEPTH-1:0]                  buf_nxtstate;
-   logic   [DEPTH-1:0]                  buf_rst;
-   logic   [DEPTH-1:0]                  buf_state_en;
-   logic   [DEPTH-1:0]                  buf_cmd_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_resp_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_dual_in;
-   logic   [DEPTH-1:0]                  buf_samedw_in;
-   logic   [DEPTH-1:0]                  buf_nomerge_in;
-   logic   [DEPTH-1:0]                  buf_sideeffect_in;
-   logic   [DEPTH-1:0]                  buf_unsign_in;
-   logic   [DEPTH-1:0][1:0]             buf_sz_in;
-   logic   [DEPTH-1:0]                  buf_write_in;
-   logic   [DEPTH-1:0]                  buf_wr_en;
-   logic   [DEPTH-1:0]                  buf_dualhi_in;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_dualtag_in;
-   logic   [DEPTH-1:0]                  buf_ldfwd_en;
-   logic   [DEPTH-1:0]                  buf_ldfwd_in;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_ldfwdtag_in;
-   logic   [DEPTH-1:0][3:0]             buf_byteen_in;
-   logic   [DEPTH-1:0][31:0]            buf_addr_in;
-   logic   [DEPTH-1:0][31:0]            buf_data_in;
-   logic   [DEPTH-1:0]                  buf_error_en;
-   logic   [DEPTH-1:0]                  buf_data_en;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_age_in;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_ageQ;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage_set;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage_in;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspageQ;
-
-   // Input buffer signals
-   logic                               ibuf_valid;
-   logic                               ibuf_dual;
-   logic                               ibuf_samedw;
-   logic                               ibuf_nomerge;
-   logic [DEPTH_LOG2-1:0]              ibuf_tag;
-   logic [DEPTH_LOG2-1:0]              ibuf_dualtag;
-   logic                               ibuf_sideeffect;
-   logic                               ibuf_unsign;
-   logic                               ibuf_write;
-   logic [1:0]                         ibuf_sz;
-   logic [3:0]                         ibuf_byteen;
-   logic [31:0]                        ibuf_addr;
-   logic [31:0]                        ibuf_data;
-   logic [TIMER_LOG2-1:0]              ibuf_timer;
-
-   logic                               ibuf_byp;
-   logic                               ibuf_wr_en;
-   logic                               ibuf_rst;
-   logic                               ibuf_force_drain;
-   logic                               ibuf_drain_vld;
-   logic [DEPTH-1:0]                   ibuf_drainvec_vld;
-   logic [DEPTH_LOG2-1:0]              ibuf_tag_in;
-   logic [DEPTH_LOG2-1:0]              ibuf_dualtag_in;
-   logic [1:0]                         ibuf_sz_in;
-   logic [31:0]                        ibuf_addr_in;
-   logic [3:0]                         ibuf_byteen_in;
-   logic [31:0]                        ibuf_data_in;
-   logic [TIMER_LOG2-1:0]              ibuf_timer_in;
-   logic [3:0]                         ibuf_byteen_out;
-   logic [31:0]                        ibuf_data_out;
-   logic                               ibuf_merge_en, ibuf_merge_in;
-
-   // Output buffer signals
-   logic                               obuf_valid;
-   logic                               obuf_write;
-   logic                               obuf_nosend;
-   logic                               obuf_rdrsp_pend;
-   logic                               obuf_sideeffect;
-   logic [31:0]                        obuf_addr;
-   logic [63:0]                        obuf_data;
-   logic [1:0]                         obuf_sz;
-   logic [7:0]                         obuf_byteen;
-   logic                               obuf_merge;
-   logic                               obuf_cmd_done, obuf_data_done;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag0;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag1;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_rdrsp_tag;
-
-   logic                               ibuf_buf_byp;
-   logic                               obuf_force_wr_en;
-   logic                               obuf_wr_wait;
-   logic                               obuf_wr_en, obuf_wr_enQ;
-   logic                               obuf_rst;
-   logic                               obuf_write_in;
-   logic                               obuf_nosend_in;
-   logic                               obuf_rdrsp_pend_en;
-   logic                               obuf_rdrsp_pend_in;
-   logic                               obuf_sideeffect_in;
-   logic                               obuf_aligned_in;
-   logic [31:0]                        obuf_addr_in;
-   logic [63:0]                        obuf_data_in;
-   logic [1:0]                         obuf_sz_in;
-   logic [7:0]                         obuf_byteen_in;
-   logic                               obuf_merge_in;
-   logic                               obuf_cmd_done_in, obuf_data_done_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag0_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag1_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_rdrsp_tag_in;
-
-   logic                               obuf_merge_en;
-   logic [TIMER_LOG2-1:0]              obuf_wr_timer, obuf_wr_timer_in;
-   logic [7:0]                         obuf_byteen0_in, obuf_byteen1_in;
-   logic [63:0]                        obuf_data0_in, obuf_data1_in;
-
-   logic                               lsu_axi_awvalid_q, lsu_axi_awready_q;
-   logic                               lsu_axi_wvalid_q, lsu_axi_wready_q;
-   logic                               lsu_axi_arvalid_q, lsu_axi_arready_q;
-   logic                               lsu_axi_bvalid_q, lsu_axi_bready_q;
-   logic                               lsu_axi_rvalid_q, lsu_axi_rready_q;
-   logic [pt.LSU_BUS_TAG-1:0]          lsu_axi_bid_q, lsu_axi_rid_q;
-   logic [1:0]                         lsu_axi_bresp_q, lsu_axi_rresp_q;
-   logic [pt.LSU_BUS_TAG-1:0]          lsu_imprecise_error_store_tag;
-   logic [63:0]                        lsu_axi_rdata_q;
-
-   //------------------------------------------------------------------------------
-   // Load forwarding logic start
-   //------------------------------------------------------------------------------
-
-   // Function to do 8 to 3 bit encoding
-   function automatic logic [2:0] f_Enc8to3;
-      input logic [7:0] Dec_value;
-
-      logic [2:0]       Enc_value;
-      Enc_value[0] = Dec_value[1] | Dec_value[3] | Dec_value[5] | Dec_value[7];
-      Enc_value[1] = Dec_value[2] | Dec_value[3] | Dec_value[6] | Dec_value[7];
-      Enc_value[2] = Dec_value[4] | Dec_value[5] | Dec_value[6] | Dec_value[7];
-
-      return Enc_value[2:0];
-   endfunction // f_Enc8to3
-
-   // Buffer hit logic for bus load forwarding
-   assign ldst_byteen_hi_m[3:0]   = ldst_byteen_ext_m[7:4];
-   assign ldst_byteen_lo_m[3:0]   = ldst_byteen_ext_m[3:0];
-   for (genvar i=0; i<DEPTH; i++) begin
-      assign ld_addr_hitvec_lo[i] = (lsu_addr_m[31:2] == buf_addr[i][31:2]) & buf_write[i] & (buf_state[i] != IDLE) & lsu_busreq_m;
-      assign ld_addr_hitvec_hi[i] = (end_addr_m[31:2] == buf_addr[i][31:2]) & buf_write[i] & (buf_state[i] != IDLE) & lsu_busreq_m;
-   end
-
-   for (genvar j=0; j<4; j++) begin
-     assign ld_byte_hit_buf_lo[j] = |(ld_byte_hitvecfn_lo[j]) | ld_byte_ibuf_hit_lo[j];
-     assign ld_byte_hit_buf_hi[j] = |(ld_byte_hitvecfn_hi[j]) | ld_byte_ibuf_hit_hi[j];
-     for (genvar i=0; i<DEPTH; i++) begin
-         assign ld_byte_hitvec_lo[j][i] = ld_addr_hitvec_lo[i] & buf_byteen[i][j] & ldst_byteen_lo_m[j];
-         assign ld_byte_hitvec_hi[j][i] = ld_addr_hitvec_hi[i] & buf_byteen[i][j] & ldst_byteen_hi_m[j];
-
-         assign ld_byte_hitvecfn_lo[j][i] = ld_byte_hitvec_lo[j][i] & ~(|(ld_byte_hitvec_lo[j] & buf_age_younger[i])) & ~ld_byte_ibuf_hit_lo[j];  // Kill the byte enable if younger entry exists or byte exists in ibuf
-         assign ld_byte_hitvecfn_hi[j][i] = ld_byte_hitvec_hi[j][i] & ~(|(ld_byte_hitvec_hi[j] & buf_age_younger[i])) & ~ld_byte_ibuf_hit_hi[j];  // Kill the byte enable if younger entry exists or byte exists in ibuf
-      end
-   end
-
-   // Hit in the ibuf
-   assign ld_addr_ibuf_hit_lo = (lsu_addr_m[31:2] == ibuf_addr[31:2]) & ibuf_write & ibuf_valid & lsu_busreq_m;
-   assign ld_addr_ibuf_hit_hi = (end_addr_m[31:2] == ibuf_addr[31:2]) & ibuf_write & ibuf_valid & lsu_busreq_m;
-
-   for (genvar i=0; i<4; i++) begin
-      assign ld_byte_ibuf_hit_lo[i] = ld_addr_ibuf_hit_lo & ibuf_byteen[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_ibuf_hit_hi[i] = ld_addr_ibuf_hit_hi & ibuf_byteen[i] & ldst_byteen_hi_m[i];
-   end
-
-   always_comb begin
-      ld_fwddata_buf_lo[31:0] = {{8{ld_byte_ibuf_hit_lo[3]}},{8{ld_byte_ibuf_hit_lo[2]}},{8{ld_byte_ibuf_hit_lo[1]}},{8{ld_byte_ibuf_hit_lo[0]}}} & ibuf_data[31:0];
-      ld_fwddata_buf_hi[31:0] = {{8{ld_byte_ibuf_hit_hi[3]}},{8{ld_byte_ibuf_hit_hi[2]}},{8{ld_byte_ibuf_hit_hi[1]}},{8{ld_byte_ibuf_hit_hi[0]}}} & ibuf_data[31:0];
-      for (int i=0; i<DEPTH; i++) begin
-         ld_fwddata_buf_lo[7:0]   |= {8{ld_byte_hitvecfn_lo[0][i]}} & buf_data[i][7:0];
-         ld_fwddata_buf_lo[15:8]  |= {8{ld_byte_hitvecfn_lo[1][i]}} & buf_data[i][15:8];
-         ld_fwddata_buf_lo[23:16] |= {8{ld_byte_hitvecfn_lo[2][i]}} & buf_data[i][23:16];
-         ld_fwddata_buf_lo[31:24] |= {8{ld_byte_hitvecfn_lo[3][i]}} & buf_data[i][31:24];
-
-         ld_fwddata_buf_hi[7:0]   |= {8{ld_byte_hitvecfn_hi[0][i]}} & buf_data[i][7:0];
-         ld_fwddata_buf_hi[15:8]  |= {8{ld_byte_hitvecfn_hi[1][i]}} & buf_data[i][15:8];
-         ld_fwddata_buf_hi[23:16] |= {8{ld_byte_hitvecfn_hi[2][i]}} & buf_data[i][23:16];
-         ld_fwddata_buf_hi[31:24] |= {8{ld_byte_hitvecfn_hi[3][i]}} & buf_data[i][31:24];
-      end
-   end
-
-   //------------------------------------------------------------------------------
-   // Load forwarding logic end
-   //------------------------------------------------------------------------------
-
-   assign bus_coalescing_disable = dec_tlu_wb_coalescing_disable | pt.BUILD_AHB_LITE;
-
-   // Get the hi/lo byte enable
-   assign ldst_byteen_r[3:0] = ({4{lsu_pkt_r.by}}   & 4'b0001) |
-                                 ({4{lsu_pkt_r.half}} & 4'b0011) |
-                                 ({4{lsu_pkt_r.word}} & 4'b1111);
-
-   assign {ldst_byteen_hi_r[3:0], ldst_byteen_lo_r[3:0]} = {4'b0,ldst_byteen_r[3:0]} << lsu_addr_r[1:0];
-   assign {store_data_hi_r[31:0], store_data_lo_r[31:0]} = {32'b0,store_data_r[31:0]} << 8*lsu_addr_r[1:0];
-   assign ldst_samedw_r    = (lsu_addr_r[3] == end_addr_r[3]);
-   assign is_aligned_r    = (lsu_pkt_r.word & (lsu_addr_r[1:0] == 2'b0)) |
-                            (lsu_pkt_r.half & (lsu_addr_r[0] == 1'b0))   |
-                            lsu_pkt_r.by;
-
-   //------------------------------------------------------------------------------
-   // Input buffer logic starts here
-   //------------------------------------------------------------------------------
-
-   assign ibuf_byp = lsu_busreq_r & (lsu_pkt_r.load | no_word_merge_r) & ~ibuf_valid;
-   assign ibuf_wr_en = lsu_busreq_r & lsu_commit_r & ~ibuf_byp;
-   assign ibuf_rst   = (ibuf_drain_vld & ~ibuf_wr_en) | dec_tlu_force_halt;
-   assign ibuf_force_drain = lsu_busreq_m & ~lsu_busreq_r & ibuf_valid & (lsu_pkt_m.load | (ibuf_addr[31:2] != lsu_addr_m[31:2]));  // Move the ibuf to buf if there is a non-colaescable ld/st in m but nothing in r
-   assign ibuf_drain_vld = ibuf_valid & (((ibuf_wr_en | (ibuf_timer == TIMER_MAX)) & ~(ibuf_merge_en & ibuf_merge_in)) | ibuf_byp | ibuf_force_drain | ibuf_sideeffect | ~ibuf_write | bus_coalescing_disable);
-   assign ibuf_tag_in[DEPTH_LOG2-1:0] = (ibuf_merge_en & ibuf_merge_in) ? ibuf_tag[DEPTH_LOG2-1:0] : (ldst_dual_r ? WrPtr1_r : WrPtr0_r);
-   assign ibuf_dualtag_in[DEPTH_LOG2-1:0] = WrPtr0_r;
-   assign ibuf_sz_in[1:0]   = {lsu_pkt_r.word, lsu_pkt_r.half};
-   assign ibuf_addr_in[31:0] = ldst_dual_r ? end_addr_r[31:0] : lsu_addr_r[31:0];
-   assign ibuf_byteen_in[3:0] = (ibuf_merge_en & ibuf_merge_in) ? (ibuf_byteen[3:0] | ldst_byteen_lo_r[3:0]) : (ldst_dual_r ? ldst_byteen_hi_r[3:0] : ldst_byteen_lo_r[3:0]);
-   for (genvar i=0; i<4; i++) begin
-      assign ibuf_data_in[(8*i)+7:(8*i)] = (ibuf_merge_en & ibuf_merge_in) ? (ldst_byteen_lo_r[i] ? store_data_lo_r[(8*i)+7:(8*i)] : ibuf_data[(8*i)+7:(8*i)]) :
-                                                                             (ldst_dual_r ? store_data_hi_r[(8*i)+7:(8*i)] : store_data_lo_r[(8*i)+7:(8*i)]);
-   end
-   assign ibuf_timer_in = ibuf_wr_en ? '0 : (ibuf_timer < TIMER_MAX) ? (ibuf_timer + 1'b1) : ibuf_timer;
-
-
-   assign ibuf_merge_en = lsu_busreq_r & lsu_commit_r & lsu_pkt_r.store & ibuf_valid & ibuf_write & (lsu_addr_r[31:2] == ibuf_addr[31:2]) & ~is_sideeffects_r & ~bus_coalescing_disable;
-   assign ibuf_merge_in = ~ldst_dual_r;   // If it's a unaligned store, merge needs to happen on the way out of ibuf
-
-   // ibuf signals going to bus buffer after merging
-   for (genvar i=0; i<4; i++) begin
-      assign ibuf_byteen_out[i] = (ibuf_merge_en & ~ibuf_merge_in) ? (ibuf_byteen[i] | ldst_byteen_lo_r[i]) : ibuf_byteen[i];
-      assign ibuf_data_out[(8*i)+7:(8*i)] = (ibuf_merge_en & ~ibuf_merge_in) ? (ldst_byteen_lo_r[i] ? store_data_lo_r[(8*i)+7:(8*i)] : ibuf_data[(8*i)+7:(8*i)]) :
-                                                                                                        ibuf_data[(8*i)+7:(8*i)];
-   end
-
-   rvdffsc #(.WIDTH(1))              ibuf_valid_ff     (.din(1'b1),                      .dout(ibuf_valid),      .en(ibuf_wr_en), .clear(ibuf_rst), .clk(lsu_free_c2_clk), .*);
-   rvdffs  #(.WIDTH(DEPTH_LOG2))     ibuf_tagff        (.din(ibuf_tag_in),               .dout(ibuf_tag),        .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(DEPTH_LOG2))     ibuf_dualtagff    (.din(ibuf_dualtag_in),           .dout(ibuf_dualtag),    .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_dualff       (.din(ldst_dual_r),               .dout(ibuf_dual),       .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_samedwff     (.din(ldst_samedw_r),             .dout(ibuf_samedw),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_nomergeff    (.din(no_dword_merge_r),          .dout(ibuf_nomerge),    .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_sideeffectff (.din(is_sideeffects_r),          .dout(ibuf_sideeffect), .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_unsignff     (.din(lsu_pkt_r.unsign),          .dout(ibuf_unsign),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_writeff      (.din(lsu_pkt_r.store),           .dout(ibuf_write),      .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(2))              ibuf_szff         (.din(ibuf_sz_in[1:0]),           .dout(ibuf_sz),         .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffe  #(.WIDTH(32))             ibuf_addrff       (.din(ibuf_addr_in[31:0]),        .dout(ibuf_addr),       .en(ibuf_wr_en),                                              .*);
-   rvdffs  #(.WIDTH(4))              ibuf_byteenff     (.din(ibuf_byteen_in[3:0]),       .dout(ibuf_byteen),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffe  #(.WIDTH(32))             ibuf_dataff       (.din(ibuf_data_in[31:0]),        .dout(ibuf_data),       .en(ibuf_wr_en),                                              .*);
-   rvdff   #(.WIDTH(TIMER_LOG2))     ibuf_timerff      (.din(ibuf_timer_in),             .dout(ibuf_timer),                                         .clk(lsu_free_c2_clk),     .*);
-
-
-   //------------------------------------------------------------------------------
-   // Input buffer logic ends here
-   //------------------------------------------------------------------------------
-
-
-   //------------------------------------------------------------------------------
-   // Output buffer logic starts here
-   //------------------------------------------------------------------------------
-
-   assign obuf_wr_wait = (buf_numvld_wrcmd_any[3:0] == 4'b1) & (buf_numvld_cmd_any[3:0] == 4'b1) & (obuf_wr_timer != TIMER_MAX) &
-                         ~bus_coalescing_disable & ~buf_nomerge[CmdPtr0] & ~buf_sideeffect[CmdPtr0] & ~obuf_force_wr_en;
-   assign obuf_wr_timer_in = obuf_wr_en ? 3'b0: (((buf_numvld_cmd_any > 4'b0) & (obuf_wr_timer < TIMER_MAX)) ? (obuf_wr_timer + 1'b1) : obuf_wr_timer);
-   assign obuf_force_wr_en = lsu_busreq_m & ~lsu_busreq_r & ~ibuf_valid & (buf_numvld_cmd_any[3:0] == 4'b1) & (lsu_addr_m[31:2] != buf_addr[CmdPtr0][31:2]);   // Entry in m can't merge with entry going to obuf and there is no entry in between
-   assign ibuf_buf_byp = ibuf_byp & (buf_numvld_pend_any[3:0] == 4'b0) & (~lsu_pkt_r.store | no_dword_merge_r);
-
-   assign obuf_wr_en = ((ibuf_buf_byp & lsu_commit_r & ~(is_sideeffects_r & bus_sideeffect_pend)) |
-                        ((buf_state[CmdPtr0] == CMD) & found_cmdptr0 & ~buf_cmd_state_bus_en[CmdPtr0] & ~(buf_sideeffect[CmdPtr0] & bus_sideeffect_pend) &
-                         (~(buf_dual[CmdPtr0] & buf_samedw[CmdPtr0] & ~buf_write[CmdPtr0]) | found_cmdptr1 | buf_nomerge[CmdPtr0] | obuf_force_wr_en))) &
-                       (bus_cmd_ready | ~obuf_valid | obuf_nosend) & ~obuf_wr_wait  & ~bus_addr_match_pending & lsu_bus_clk_en;
-
-   assign obuf_rst   = ((bus_cmd_sent | (obuf_valid & obuf_nosend)) & ~obuf_wr_en & lsu_bus_clk_en) | dec_tlu_force_halt;
-
-   assign obuf_write_in      = ibuf_buf_byp ? lsu_pkt_r.store : buf_write[CmdPtr0];
-   assign obuf_sideeffect_in = ibuf_buf_byp ? is_sideeffects_r : buf_sideeffect[CmdPtr0];
-   assign obuf_addr_in[31:0] = ibuf_buf_byp ? lsu_addr_r[31:0] : buf_addr[CmdPtr0];
-   assign obuf_sz_in[1:0]    = ibuf_buf_byp ? {lsu_pkt_r.word, lsu_pkt_r.half} : buf_sz[CmdPtr0];
-   assign obuf_merge_in      = obuf_merge_en;
-   assign obuf_tag0_in[pt.LSU_BUS_TAG-1:0] = ibuf_buf_byp ? (pt.LSU_BUS_TAG)'(WrPtr0_r) : (pt.LSU_BUS_TAG)'(CmdPtr0);
-   assign obuf_tag1_in[pt.LSU_BUS_TAG-1:0] = ibuf_buf_byp ? (pt.LSU_BUS_TAG)'(WrPtr1_r) : (pt.LSU_BUS_TAG)'(CmdPtr1);
-
-   assign obuf_cmd_done_in    = ~(obuf_wr_en | obuf_rst) & (obuf_cmd_done | bus_wcmd_sent);
-   assign obuf_data_done_in   = ~(obuf_wr_en | obuf_rst) & (obuf_data_done | bus_wdata_sent);
-
-   assign obuf_aligned_in    = ibuf_buf_byp ? is_aligned_r : ((obuf_sz_in[1:0] == 2'b0) |
-                                                              (obuf_sz_in[0] & ~obuf_addr_in[0]) |
-                                                              (obuf_sz_in[1] & ~(|obuf_addr_in[1:0])));
-
-   assign obuf_rdrsp_pend_in  = ((~(obuf_wr_en & ~obuf_nosend_in) & obuf_rdrsp_pend & ~(bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag))) | (bus_cmd_sent & ~obuf_write)) & ~dec_tlu_force_halt;
-   assign obuf_rdrsp_pend_en  = lsu_bus_clk_en | dec_tlu_force_halt;
-   assign obuf_rdrsp_tag_in[pt.LSU_BUS_TAG-1:0] = (bus_cmd_sent & ~obuf_write) ? obuf_tag0[pt.LSU_BUS_TAG-1:0] : obuf_rdrsp_tag[pt.LSU_BUS_TAG-1:0];
-   // No ld to ld fwd for aligned
-   assign obuf_nosend_in      = (obuf_addr_in[31:3] == obuf_addr[31:3]) & obuf_aligned_in & ~obuf_sideeffect & ~obuf_write & ~obuf_write_in & ~dec_tlu_external_ldfwd_disable &
-                                ((obuf_valid & ~obuf_nosend) | (obuf_rdrsp_pend & ~(bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag))));
-
-   assign obuf_byteen0_in[7:0] = ibuf_buf_byp ? (lsu_addr_r[2] ? {ldst_byteen_lo_r[3:0],4'b0} : {4'b0,ldst_byteen_lo_r[3:0]}) :
-                                                (buf_addr[CmdPtr0][2] ? {buf_byteen[CmdPtr0],4'b0} : {4'b0,buf_byteen[CmdPtr0]});
-   assign obuf_byteen1_in[7:0] = ibuf_buf_byp ? (end_addr_r[2] ? {ldst_byteen_hi_r[3:0],4'b0} : {4'b0,ldst_byteen_hi_r[3:0]}) :
-                                                (buf_addr[CmdPtr1][2] ? {buf_byteen[CmdPtr1],4'b0} : {4'b0,buf_byteen[CmdPtr1]});
-   assign obuf_data0_in[63:0]  = ibuf_buf_byp ? (lsu_addr_r[2] ? {store_data_lo_r[31:0],32'b0} : {32'b0,store_data_lo_r[31:0]}) :
-                                                (buf_addr[CmdPtr0][2] ? {buf_data[CmdPtr0],32'b0} : {32'b0,buf_data[CmdPtr0]});
-   assign obuf_data1_in[63:0]  = ibuf_buf_byp ? (end_addr_r[2] ? {store_data_hi_r[31:0],32'b0} :{32'b0,store_data_hi_r[31:0]}) :
-                                                (buf_addr[CmdPtr1][2] ? {buf_data[CmdPtr1],32'b0} : {32'b0,buf_data[CmdPtr1]});
-
-   for (genvar i=0 ;i<8; i++) begin
-      assign obuf_byteen_in[i] = obuf_byteen0_in[i] | (obuf_merge_en & obuf_byteen1_in[i]);
-      assign obuf_data_in[(8*i)+7:(8*i)] = (obuf_merge_en & obuf_byteen1_in[i]) ? obuf_data1_in[(8*i)+7:(8*i)] : obuf_data0_in[(8*i)+7:(8*i)];
-   end
-
-   // No store obuf merging for AXI since all stores are sent non-posted. Can't track the second id right now
-   assign obuf_merge_en = ((CmdPtr0 != CmdPtr1) & found_cmdptr0 & found_cmdptr1 & (buf_state[CmdPtr0] == CMD) & (buf_state[CmdPtr1] == CMD) &
-                           ~buf_cmd_state_bus_en[CmdPtr0] & ~buf_sideeffect[CmdPtr0] &
-                           (~buf_write[CmdPtr0] & buf_dual[CmdPtr0] & ~buf_dualhi[CmdPtr0] & buf_samedw[CmdPtr0])) |  // CmdPtr0/CmdPtr1 are for same load which is within a DW
-                          (ibuf_buf_byp & ldst_samedw_r & ldst_dual_r);
-
-
-   rvdff_fpga  #(.WIDTH(1))              obuf_wren_ff      (.din(obuf_wr_en),                  .dout(obuf_wr_enQ),                                        .clk(lsu_busm_clk),        .clken(lsu_busm_clken), .rawclk(clk),        .*);
-   rvdffsc     #(.WIDTH(1))              obuf_valid_ff     (.din(1'b1),                        .dout(obuf_valid),      .en(obuf_wr_en), .clear(obuf_rst), .clk(lsu_free_c2_clk),                                                  .*);
-   rvdffs      #(.WIDTH(1))              obuf_nosend_ff    (.din(obuf_nosend_in),              .dout(obuf_nosend),     .en(obuf_wr_en),                   .clk(lsu_free_c2_clk),                                                  .*);
-   rvdffs      #(.WIDTH(1))              obuf_rdrsp_pend_ff(.din(obuf_rdrsp_pend_in),          .dout(obuf_rdrsp_pend), .en(obuf_rdrsp_pend_en),           .clk(lsu_free_c2_clk),                                                  .*);
-   rvdff_fpga  #(.WIDTH(1))              obuf_cmd_done_ff  (.din(obuf_cmd_done_in),            .dout(obuf_cmd_done),                                      .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              obuf_data_done_ff (.din(obuf_data_done_in),           .dout(obuf_data_done),                                     .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) obuf_rdrsp_tagff  (.din(obuf_rdrsp_tag_in),           .dout(obuf_rdrsp_tag),                                     .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(pt.LSU_BUS_TAG)) obuf_tag0ff       (.din(obuf_tag0_in),                .dout(obuf_tag0),       .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(pt.LSU_BUS_TAG)) obuf_tag1ff       (.din(obuf_tag1_in),                .dout(obuf_tag1),       .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_mergeff      (.din(obuf_merge_in),               .dout(obuf_merge),      .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_writeff      (.din(obuf_write_in),               .dout(obuf_write),      .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_sideeffectff (.din(obuf_sideeffect_in),          .dout(obuf_sideeffect), .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(2))              obuf_szff         (.din(obuf_sz_in[1:0]),             .dout(obuf_sz),         .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(8))              obuf_byteenff     (.din(obuf_byteen_in[7:0]),         .dout(obuf_byteen),     .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffe     #(.WIDTH(32))              obuf_addrff       (.din(obuf_addr_in[31:0]),          .dout(obuf_addr),       .en(obuf_wr_en),                                                                                           .*);
-   rvdffe     #(.WIDTH(64))              obuf_dataff       (.din(obuf_data_in[63:0]),          .dout(obuf_data),       .en(obuf_wr_en),                                                                                           .*);
-   rvdff_fpga #(.WIDTH(TIMER_LOG2))      obuf_timerff      (.din(obuf_wr_timer_in),            .dout(obuf_wr_timer),                                      .clk(lsu_busm_clk),        .clken(lsu_busm_clken), .rawclk(clk),        .*);
-
-
-   //------------------------------------------------------------------------------
-   // Output buffer logic ends here
-   //------------------------------------------------------------------------------
-
-   // Find the entry to allocate and entry to send
-   always_comb begin
-      WrPtr0_m[DEPTH_LOG2-1:0] = '0;
-      WrPtr1_m[DEPTH_LOG2-1:0] = '0;
-      found_wrptr0  = '0;
-      found_wrptr1  = '0;
-
-      // Find first write pointer
-      for (int i=0; i<DEPTH; i++) begin
-         if (~found_wrptr0) begin
-            WrPtr0_m[DEPTH_LOG2-1:0] = DEPTH_LOG2'(i);
-            found_wrptr0 = (buf_state[i] == IDLE) & ~((ibuf_valid & (ibuf_tag == i))                                               |
-                                                      (lsu_busreq_r & ((WrPtr0_r == i) | (ldst_dual_r & (WrPtr1_r == i)))));
-         end
-      end
-
-      // Find second write pointer
-      for (int i=0; i<DEPTH; i++) begin
-         if (~found_wrptr1) begin
-            WrPtr1_m[DEPTH_LOG2-1:0] = DEPTH_LOG2'(i);
-            found_wrptr1 = (buf_state[i] == IDLE) & ~((ibuf_valid & (ibuf_tag == i))                                               |
-                                                      (lsu_busreq_m & (WrPtr0_m == i))                                         |
-                                                      (lsu_busreq_r & ((WrPtr0_r == i) | (ldst_dual_r & (WrPtr1_r == i)))));
-         end
-      end
-   end
-
-   // Get the command ptr
-   for (genvar i=0; i<DEPTH; i++) begin
-      // These should be one-hot
-      assign CmdPtr0Dec[i] = ~(|buf_age[i]) & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i];
-      assign CmdPtr1Dec[i] = ~(|(buf_age[i] & ~CmdPtr0Dec)) & ~CmdPtr0Dec[i] & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i];
-      assign RspPtrDec[i]  = ~(|buf_rsp_pickage[i]) & (buf_state[i] == DONE_WAIT);
-   end
-
-   assign found_cmdptr0 = |CmdPtr0Dec;
-   assign found_cmdptr1 = |CmdPtr1Dec;
-   assign CmdPtr0 = f_Enc8to3(8'(CmdPtr0Dec[DEPTH-1:0]));
-   assign CmdPtr1 = f_Enc8to3(8'(CmdPtr1Dec[DEPTH-1:0]));
-   assign RspPtr  = f_Enc8to3(8'(RspPtrDec[DEPTH-1:0]));
-
-   // Age vector
-   for (genvar i=0; i<DEPTH; i++) begin: GenAgeVec
-      for (genvar j=0; j<DEPTH; j++) begin
-         assign buf_age_in[i][j] = (((buf_state[i] == IDLE) & buf_state_en[i]) &
-                                    (((buf_state[j] == WAIT) | ((buf_state[j] == CMD) & ~buf_cmd_state_bus_en[j]))                   |       // Set age bit for older entries
-                                     (ibuf_drain_vld & lsu_busreq_r & (ibuf_byp | ldst_dual_r) & (i == WrPtr0_r) & (j == ibuf_tag))  |       // Set case for dual lo
-                                     (ibuf_byp & lsu_busreq_r & ldst_dual_r & (i == WrPtr1_r) & (j == WrPtr0_r))))                      |     // ibuf bypass case
-                                   buf_age[i][j];
-
-
-         assign buf_age[i][j]    = buf_ageQ[i][j] & ~((buf_state[j] == CMD) & buf_cmd_state_bus_en[j]) & ~dec_tlu_force_halt;  // Reset case
-
-         assign buf_age_younger[i][j] = (i == j) ? 1'b0: (~buf_age[i][j] & (buf_state[j] != IDLE));   // Younger entries
-      end
-   end
-
-   // Age vector for responses
-   for (genvar i=0; i<DEPTH; i++) begin: GenRspAgeVec
-      for (genvar j=0; j<DEPTH; j++) begin
-         assign buf_rspage_set[i][j] = ((buf_state[i] == IDLE) & buf_state_en[i]) &
-                                           (~((buf_state[j] == IDLE) | (buf_state[j] == DONE))                                         |       // Set age bit for older entries
-                                            (ibuf_drain_vld & lsu_busreq_r & (ibuf_byp | ldst_dual_r) & (DEPTH_LOG2'(i) == WrPtr0_r) & (DEPTH_LOG2'(j) == ibuf_tag))  |       // Set case for dual lo
-                                            (ibuf_byp & lsu_busreq_r & ldst_dual_r & (DEPTH_LOG2'(i) == WrPtr1_r) & (DEPTH_LOG2'(j) == WrPtr0_r)));
-         assign buf_rspage_in[i][j] = buf_rspage_set[i][j] | buf_rspage[i][j];
-         assign buf_rspage[i][j]    = buf_rspageQ[i][j] & ~((buf_state[j] == DONE) | (buf_state[j] == IDLE)) & ~dec_tlu_force_halt;  // Reset case
-         assign buf_rsp_pickage[i][j] = buf_rspageQ[i][j] & (buf_state[j] == DONE_WAIT);
-     end
-   end
-
-   //------------------------------------------------------------------------------
-   // Buffer logic
-   //------------------------------------------------------------------------------
-   for (genvar i=0; i<DEPTH; i++) begin
-
-      assign ibuf_drainvec_vld[i] = (ibuf_drain_vld & (i == ibuf_tag));
-      assign buf_byteen_in[i]     = ibuf_drainvec_vld[i] ? ibuf_byteen_out[3:0] : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? ldst_byteen_hi_r[3:0] : ldst_byteen_lo_r[3:0]);
-      assign buf_addr_in[i]       = ibuf_drainvec_vld[i] ? ibuf_addr[31:0] : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? end_addr_r[31:0] : lsu_addr_r[31:0]);
-      assign buf_dual_in[i]       = ibuf_drainvec_vld[i] ? ibuf_dual : ldst_dual_r;
-      assign buf_samedw_in[i]     = ibuf_drainvec_vld[i] ? ibuf_samedw : ldst_samedw_r;
-      assign buf_nomerge_in[i]    = ibuf_drainvec_vld[i] ? (ibuf_nomerge | ibuf_force_drain) : no_dword_merge_r;
-      assign buf_dualhi_in[i]     = ibuf_drainvec_vld[i] ? ibuf_dual : (ibuf_byp & ldst_dual_r & (i == WrPtr1_r));   // If it's dual, ibuf will always have the high
-      assign buf_dualtag_in[i]    = ibuf_drainvec_vld[i] ? ibuf_dualtag : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? WrPtr0_r : WrPtr1_r);
-      assign buf_sideeffect_in[i] = ibuf_drainvec_vld[i] ? ibuf_sideeffect : is_sideeffects_r;
-      assign buf_unsign_in[i]     = ibuf_drainvec_vld[i] ? ibuf_unsign : lsu_pkt_r.unsign;
-      assign buf_sz_in[i]         = ibuf_drainvec_vld[i] ? ibuf_sz : {lsu_pkt_r.word, lsu_pkt_r.half};
-      assign buf_write_in[i]      = ibuf_drainvec_vld[i] ? ibuf_write : lsu_pkt_r.store;
-
-      // Buffer entry state machine
-      always_comb begin
-         buf_nxtstate[i]          = IDLE;
-         buf_state_en[i]          = '0;
-         buf_resp_state_bus_en[i] = '0;
-         buf_state_bus_en[i]      = '0;
-         buf_wr_en[i]             = '0;
-         buf_data_in[i]           = '0;
-         buf_data_en[i]           = '0;
-         buf_error_en[i]          = '0;
-         buf_rst[i]               = dec_tlu_force_halt;
-         buf_ldfwd_en[i]          = dec_tlu_force_halt;
-         buf_ldfwd_in[i]          = '0;
-         buf_ldfwdtag_in[i]       = '0;
-
-         case (buf_state[i])
-            IDLE: begin
-                     buf_nxtstate[i] = lsu_bus_clk_en ? CMD : WAIT;
-                     buf_state_en[i] = (lsu_busreq_r & lsu_commit_r & (((ibuf_byp | ldst_dual_r) & ~ibuf_merge_en & (i == WrPtr0_r)) | (ibuf_byp & ldst_dual_r & (i == WrPtr1_r)))) |
-                                       (ibuf_drain_vld & (i == ibuf_tag));
-                     buf_wr_en[i]    = buf_state_en[i];
-                     buf_data_en[i]  = buf_state_en[i];
-                     buf_data_in[i]   = (ibuf_drain_vld & (i == ibuf_tag)) ? ibuf_data_out[31:0] : store_data_lo_r[31:0];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            WAIT: begin
-                     buf_nxtstate[i] = dec_tlu_force_halt ? IDLE : CMD;
-                     buf_state_en[i] = lsu_bus_clk_en | dec_tlu_force_halt;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            CMD: begin
-                     buf_nxtstate[i]          = dec_tlu_force_halt ? IDLE : (obuf_nosend & bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag)) ? DONE_WAIT : RESP;
-                     buf_cmd_state_bus_en[i]  = ((obuf_tag0 == i) | (obuf_merge & (obuf_tag1 == i))) & obuf_valid & obuf_wr_enQ;  // Just use the recently written obuf_valid
-                     buf_state_bus_en[i]      = buf_cmd_state_bus_en[i];
-                     buf_state_en[i]          = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_ldfwd_in[i]          = 1'b1;
-                     buf_ldfwd_en[i]          = buf_state_en[i] & ~buf_write[i] & obuf_nosend & ~dec_tlu_force_halt;
-                     buf_ldfwdtag_in[i]       = DEPTH_LOG2'(obuf_rdrsp_tag[pt.LSU_BUS_TAG-2:0]);
-                     buf_data_en[i]           = buf_state_bus_en[i] & lsu_bus_clk_en & obuf_nosend & bus_rsp_read;
-                     buf_error_en[i]          = buf_state_bus_en[i] & lsu_bus_clk_en & obuf_nosend & bus_rsp_read_error;
-                     buf_data_in[i]           = buf_error_en[i] ? bus_rsp_rdata[31:0] : (buf_addr[i][2] ? bus_rsp_rdata[63:32] : bus_rsp_rdata[31:0]);
-            end
-            RESP: begin
-                     buf_nxtstate[i]           = (dec_tlu_force_halt | (buf_write[i] & ~bus_rsp_write_error)) ? IDLE :    // Side-effect writes will be non-posted
-                                                      (buf_dual[i] & ~buf_samedw[i] & ~buf_write[i] & (buf_state[buf_dualtag[i]] != DONE_PARTIAL)) ? DONE_PARTIAL : // Goto DONE_PARTIAL if this is the first return of dual
-                                                           (buf_ldfwd[i] | any_done_wait_state |
-                                                            (buf_dual[i] & ~buf_samedw[i] & ~buf_write[i] & buf_ldfwd[buf_dualtag[i]] &
-                                                             (buf_state[buf_dualtag[i]] == DONE_PARTIAL) & any_done_wait_state)) ? DONE_WAIT : DONE;
-                     buf_resp_state_bus_en[i]  = (bus_rsp_write & (bus_rsp_write_tag == (pt.LSU_BUS_TAG)'(i))) |
-                                                 (bus_rsp_read  & ((bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(i)) |
-                                                                   (buf_ldfwd[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[i]))) |
-                                                                   (buf_dual[i] & buf_dualhi[i] & ~buf_write[i] & buf_samedw[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_dualtag[i])))));
-                     buf_state_bus_en[i]       = buf_resp_state_bus_en[i];
-                     buf_state_en[i]           = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_data_en[i]            = buf_state_bus_en[i] & bus_rsp_read & lsu_bus_clk_en;
-                      // Need to capture the error for stores as well for AXI
-                     buf_error_en[i]           = buf_state_bus_en[i] & lsu_bus_clk_en & ((bus_rsp_read_error  & (bus_rsp_read_tag  == (pt.LSU_BUS_TAG)'(i))) |
-                                                                                         (bus_rsp_read_error  & buf_ldfwd[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[i]))) |
-                                                                                         (bus_rsp_write_error & (bus_rsp_write_tag == (pt.LSU_BUS_TAG)'(i))));
-                     buf_data_in[i][31:0]      = (buf_state_en[i] & ~buf_error_en[i]) ? (buf_addr[i][2] ? bus_rsp_rdata[63:32] : bus_rsp_rdata[31:0]) : bus_rsp_rdata[31:0];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE_PARTIAL: begin   // Other part of dual load hasn't returned
-                     buf_nxtstate[i]           = dec_tlu_force_halt ? IDLE : (buf_ldfwd[i] | buf_ldfwd[buf_dualtag[i]] | any_done_wait_state) ? DONE_WAIT : DONE;
-                     buf_state_bus_en[i]       = bus_rsp_read & ((bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_dualtag[i])) |
-                                                                 (buf_ldfwd[buf_dualtag[i]] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[buf_dualtag[i]]))));
-                     buf_state_en[i]           = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE_WAIT: begin  // WAIT state if there are multiple outstanding nb returns
-                      buf_nxtstate[i]           = dec_tlu_force_halt ? IDLE : DONE;
-                      buf_state_en[i]           = ((RspPtr == DEPTH_LOG2'(i)) | (buf_dual[i] & (buf_dualtag[i] == RspPtr))) | dec_tlu_force_halt;
-                      buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE: begin
-                     buf_nxtstate[i]           = IDLE;
-                     buf_rst[i]                = 1'b1;
-                     buf_state_en[i]           = 1'b1;
-                     buf_ldfwd_in[i]           = 1'b0;
-                     buf_ldfwd_en[i]           = buf_state_en[i];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            default : begin
-                     buf_nxtstate[i]          = IDLE;
-                     buf_state_en[i]          = '0;
-                     buf_resp_state_bus_en[i] = '0;
-                     buf_state_bus_en[i]      = '0;
-                     buf_wr_en[i]             = '0;
-                     buf_data_in[i]           = '0;
-                     buf_data_en[i]           = '0;
-                     buf_error_en[i]          = '0;
-                     buf_rst[i]               = '0;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-         endcase
-      end
-
-      rvdffs  #(.WIDTH($bits(state_t))) buf_state_ff     (.din(buf_nxtstate[i]),             .dout({buf_state[i]}),    .en(buf_state_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdff   #(.WIDTH(DEPTH))          buf_ageff        (.din(buf_age_in[i]),               .dout(buf_ageQ[i]),                                                                    .clk(lsu_bus_buf_c1_clk), .*);
-      rvdff   #(.WIDTH(DEPTH))          buf_rspageff     (.din(buf_rspage_in[i]),            .dout(buf_rspageQ[i]),                                                                 .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(DEPTH_LOG2))     buf_dualtagff    (.din(buf_dualtag_in[i]),           .dout(buf_dualtag[i]),    .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_dualff       (.din(buf_dual_in[i]),              .dout(buf_dual[i]),       .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_samedwff     (.din(buf_samedw_in[i]),            .dout(buf_samedw[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_nomergeff    (.din(buf_nomerge_in[i]),           .dout(buf_nomerge[i]),    .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_dualhiff     (.din(buf_dualhi_in[i]),            .dout(buf_dualhi[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_ldfwdff      (.din(buf_ldfwd_in[i]),             .dout(buf_ldfwd[i]),      .en(buf_ldfwd_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(DEPTH_LOG2))     buf_ldfwdtagff   (.din(buf_ldfwdtag_in[i]),          .dout(buf_ldfwdtag[i]),   .en(buf_ldfwd_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_sideeffectff (.din(buf_sideeffect_in[i]),        .dout(buf_sideeffect[i]), .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_unsignff     (.din(buf_unsign_in[i]),            .dout(buf_unsign[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_writeff      (.din(buf_write_in[i]),             .dout(buf_write[i]),      .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(2))              buf_szff         (.din(buf_sz_in[i]),                .dout(buf_sz[i]),         .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffe  #(.WIDTH(32))             buf_addrff       (.din(buf_addr_in[i][31:0]),        .dout(buf_addr[i]),       .en(buf_wr_en[i]),                                                                     .*);
-      rvdffs  #(.WIDTH(4))              buf_byteenff     (.din(buf_byteen_in[i][3:0]),       .dout(buf_byteen[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffe  #(.WIDTH(32))             buf_dataff       (.din(buf_data_in[i][31:0]),        .dout(buf_data[i]),       .en(buf_data_en[i]),                                                                   .*);
-      rvdffsc #(.WIDTH(1))              buf_errorff      (.din(1'b1),                        .dout(buf_error[i]),      .en(buf_error_en[i]),                    .clear(buf_rst[i]), .clk(lsu_bus_buf_c1_clk), .*);
-
-   end
-
-   // buffer full logic
-   always_comb begin
-      buf_numvld_any[3:0] =  ({1'b0,lsu_busreq_m} << ldst_dual_m) +
-                             ({1'b0,lsu_busreq_r} << ldst_dual_r) +
-                             ibuf_valid;
-      buf_numvld_wrcmd_any[3:0] = 4'b0;
-      buf_numvld_cmd_any[3:0] = 4'b0;
-      buf_numvld_pend_any[3:0] = 4'b0;
-      any_done_wait_state = 1'b0;
-      for (int i=0; i<DEPTH; i++) begin
-         buf_numvld_any[3:0] += {3'b0, (buf_state[i] != IDLE)};
-         buf_numvld_wrcmd_any[3:0] += {3'b0, (buf_write[i] & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i])};
-         buf_numvld_cmd_any[3:0]   += {3'b0, ((buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i])};
-         buf_numvld_pend_any[3:0]   += {3'b0, ((buf_state[i] == WAIT) | ((buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i]))};
-         any_done_wait_state |= (buf_state[i] == DONE_WAIT);
-      end
-   end
-
-   assign lsu_bus_buffer_pend_any = (buf_numvld_pend_any != 0);
-   assign lsu_bus_buffer_full_any = (ldst_dual_d & dec_lsu_valid_raw_d) ? (buf_numvld_any[3:0] >= (DEPTH-1)) : (buf_numvld_any[3:0] == DEPTH);
-   assign lsu_bus_buffer_empty_any = ~(|buf_state[DEPTH-1:0]) & ~ibuf_valid & ~obuf_valid;
-
-
-   // Non blocking ports
-   assign lsu_nonblock_load_valid_m = lsu_busreq_m & lsu_pkt_m.valid & lsu_pkt_m.load & ~flush_m_up & ~ld_full_hit_m;
-   assign lsu_nonblock_load_tag_m[DEPTH_LOG2-1:0] = WrPtr0_m[DEPTH_LOG2-1:0];
-   assign lsu_nonblock_load_inv_r = lsu_nonblock_load_valid_r & ~lsu_commit_r;
-   assign lsu_nonblock_load_inv_tag_r[DEPTH_LOG2-1:0] = WrPtr0_r[DEPTH_LOG2-1:0];      // r tag needs to be accurate even if there is no invalidate
-
-   always_comb begin
-      lsu_nonblock_load_data_ready = '0;
-      lsu_nonblock_load_data_error = '0;
-      lsu_nonblock_load_data_tag[DEPTH_LOG2-1:0] = '0;
-      lsu_nonblock_load_data_lo[31:0] = '0;
-      lsu_nonblock_load_data_hi[31:0] = '0;
-      for (int i=0; i<DEPTH; i++) begin
-          // Use buf_rst[i] instead of buf_state_en[i] for timing
-          lsu_nonblock_load_data_ready      |= (buf_state[i] == DONE) & ~buf_write[i];
-          lsu_nonblock_load_data_error      |= (buf_state[i] == DONE) & buf_error[i] & ~buf_write[i];
-          lsu_nonblock_load_data_tag[DEPTH_LOG2-1:0]   |= DEPTH_LOG2'(i) & {DEPTH_LOG2{((buf_state[i] == DONE) & ~buf_write[i] & (~buf_dual[i] | ~buf_dualhi[i]))}};
-          lsu_nonblock_load_data_lo[31:0]     |= buf_data[i][31:0] & {32{((buf_state[i] == DONE) & ~buf_write[i] & (~buf_dual[i] | ~buf_dualhi[i]))}};
-          lsu_nonblock_load_data_hi[31:0]     |= buf_data[i][31:0] & {32{((buf_state[i] == DONE) & ~buf_write[i] & (buf_dual[i] & buf_dualhi[i]))}};
-      end
-   end
-
-   assign lsu_nonblock_addr_offset[1:0] = buf_addr[lsu_nonblock_load_data_tag][1:0];
-   assign lsu_nonblock_sz[1:0]          = buf_sz[lsu_nonblock_load_data_tag][1:0];
-   assign lsu_nonblock_unsign           = buf_unsign[lsu_nonblock_load_data_tag];
-   assign lsu_nonblock_data_unalgn[31:0] = 32'({lsu_nonblock_load_data_hi[31:0], lsu_nonblock_load_data_lo[31:0]} >> 8*lsu_nonblock_addr_offset[1:0]);
-
-   assign lsu_nonblock_load_data_valid = lsu_nonblock_load_data_ready & ~lsu_nonblock_load_data_error;
-   assign lsu_nonblock_load_data[31:0] = ({32{ lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b00)}} & {24'b0,lsu_nonblock_data_unalgn[7:0]}) |
-                                         ({32{ lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b01)}} & {16'b0,lsu_nonblock_data_unalgn[15:0]}) |
-                                         ({32{~lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b00)}} & {{24{lsu_nonblock_data_unalgn[7]}}, lsu_nonblock_data_unalgn[7:0]}) |
-                                         ({32{~lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b01)}} & {{16{lsu_nonblock_data_unalgn[15]}},lsu_nonblock_data_unalgn[15:0]}) |
-                                         ({32{(lsu_nonblock_sz[1:0] == 2'b10)}} & lsu_nonblock_data_unalgn[31:0]);
-
-   // Determine if there is a pending return to sideeffect load/store
-   always_comb begin
-      bus_sideeffect_pend = obuf_valid & obuf_sideeffect & dec_tlu_sideeffect_posted_disable;
-      for (int i=0; i<DEPTH; i++) begin
-         bus_sideeffect_pend |= ((buf_state[i] == RESP) & buf_sideeffect[i] & dec_tlu_sideeffect_posted_disable);
-      end
-   end
-
-   // We have no ordering rules for AXI. Need to check outstanding trxns to same address for AXI
-   always_comb begin
-      bus_addr_match_pending = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         bus_addr_match_pending |= (obuf_valid & (obuf_addr[31:3] == buf_addr[i][31:3]) & (buf_state[i] == RESP) & ~((obuf_tag0 == (pt.LSU_BUS_TAG)'(i)) | (obuf_merge & (obuf_tag1 == (pt.LSU_BUS_TAG)'(i)))));
-      end
-   end
-
-   // Generic bus signals
-   assign bus_cmd_ready                      = obuf_write ? ((obuf_cmd_done | obuf_data_done) ? (obuf_cmd_done ? lsu_axi_wready : lsu_axi_awready) : (lsu_axi_awready & lsu_axi_wready)) : lsu_axi_arready;
-   assign bus_wcmd_sent                      = lsu_axi_awvalid & lsu_axi_awready;
-   assign bus_wdata_sent                     = lsu_axi_wvalid & lsu_axi_wready;
-   assign bus_cmd_sent                       = ((obuf_cmd_done | bus_wcmd_sent) & (obuf_data_done | bus_wdata_sent)) | (lsu_axi_arvalid & lsu_axi_arready);
-
-   assign bus_rsp_read                       = lsu_axi_rvalid & lsu_axi_rready;
-   assign bus_rsp_write                      = lsu_axi_bvalid & lsu_axi_bready;
-   assign bus_rsp_read_tag[pt.LSU_BUS_TAG-1:0]  = lsu_axi_rid[pt.LSU_BUS_TAG-1:0];
-   assign bus_rsp_write_tag[pt.LSU_BUS_TAG-1:0] = lsu_axi_bid[pt.LSU_BUS_TAG-1:0];
-   assign bus_rsp_write_error                = bus_rsp_write & (lsu_axi_bresp[1:0] != 2'b0);
-   assign bus_rsp_read_error                 = bus_rsp_read  & (lsu_axi_rresp[1:0] != 2'b0);
-   assign bus_rsp_rdata[63:0]                = lsu_axi_rdata[63:0];
-
-   // AXI command signals
-   assign lsu_axi_awvalid               = obuf_valid & obuf_write & ~obuf_cmd_done & ~bus_addr_match_pending;
-   assign lsu_axi_awid[pt.LSU_BUS_TAG-1:0] = (pt.LSU_BUS_TAG)'(obuf_tag0);
-   assign lsu_axi_awaddr[31:0]          = obuf_sideeffect ? obuf_addr[31:0] : {obuf_addr[31:3],3'b0};
-   assign lsu_axi_awsize[2:0]           = obuf_sideeffect ? {1'b0, obuf_sz[1:0]} : 3'b011;
-   assign lsu_axi_awprot[2:0]           = 3'b001;
-   assign lsu_axi_awcache[3:0]          = obuf_sideeffect ? 4'b0 : 4'b1111;
-   assign lsu_axi_awregion[3:0]         = obuf_addr[31:28];
-   assign lsu_axi_awlen[7:0]            = '0;
-   assign lsu_axi_awburst[1:0]          = 2'b01;
-   assign lsu_axi_awqos[3:0]            = '0;
-   assign lsu_axi_awlock                = '0;
-
-   assign lsu_axi_wvalid                = obuf_valid & obuf_write & ~obuf_data_done & ~bus_addr_match_pending;
-   assign lsu_axi_wstrb[7:0]            = obuf_byteen[7:0] & {8{obuf_write}};
-   assign lsu_axi_wdata[63:0]           = obuf_data[63:0];
-   assign lsu_axi_wlast                 = '1;
-
-   assign lsu_axi_arvalid               = obuf_valid & ~obuf_write & ~obuf_nosend & ~bus_addr_match_pending;
-   assign lsu_axi_arid[pt.LSU_BUS_TAG-1:0] = (pt.LSU_BUS_TAG)'(obuf_tag0);
-   assign lsu_axi_araddr[31:0]          = obuf_sideeffect ? obuf_addr[31:0] : {obuf_addr[31:3],3'b0};
-   assign lsu_axi_arsize[2:0]           = obuf_sideeffect ? {1'b0, obuf_sz[1:0]} : 3'b011;
-   assign lsu_axi_arprot[2:0]           = 3'b001;
-   assign lsu_axi_arcache[3:0]          = obuf_sideeffect ? 4'b0 : 4'b1111;
-   assign lsu_axi_arregion[3:0]         = obuf_addr[31:28];
-   assign lsu_axi_arlen[7:0]            = '0;
-   assign lsu_axi_arburst[1:0]          = 2'b01;
-   assign lsu_axi_arqos[3:0]            = '0;
-   assign lsu_axi_arlock                = '0;
-
-   assign lsu_axi_bready = 1;
-   assign lsu_axi_rready = 1;
-
-   always_comb begin
-      lsu_imprecise_error_store_any = '0;
-      lsu_imprecise_error_store_tag = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         lsu_imprecise_error_store_any |= lsu_bus_clk_en_q & (buf_state[i] == DONE) & buf_error[i] & buf_write[i];
-         lsu_imprecise_error_store_tag |= DEPTH_LOG2'(i) & {DEPTH_LOG2{((buf_state[i] == DONE) & buf_error[i] & buf_write[i])}};
-      end
-   end
-   assign lsu_imprecise_error_load_any       = lsu_nonblock_load_data_error & ~lsu_imprecise_error_store_any;   // This is to make sure we send only one imprecise error for load/store
-   assign lsu_imprecise_error_addr_any[31:0] = lsu_imprecise_error_store_any ? buf_addr[lsu_imprecise_error_store_tag] : buf_addr[lsu_nonblock_load_data_tag];
-
-   // PMU signals
-   assign lsu_pmu_bus_trxn  = (lsu_axi_awvalid & lsu_axi_awready) | (lsu_axi_wvalid & lsu_axi_wready) | (lsu_axi_arvalid & lsu_axi_arready);
-   assign lsu_pmu_bus_misaligned = lsu_busreq_r & ldst_dual_r & lsu_commit_r;
-   assign lsu_pmu_bus_error = lsu_imprecise_error_load_any | lsu_imprecise_error_store_any;
-   assign lsu_pmu_bus_busy  = (lsu_axi_awvalid & ~lsu_axi_awready) | (lsu_axi_wvalid & ~lsu_axi_wready) | (lsu_axi_arvalid & ~lsu_axi_arready);
-
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_awvalid_ff (.din(lsu_axi_awvalid),                .dout(lsu_axi_awvalid_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_awready_ff (.din(lsu_axi_awready),                .dout(lsu_axi_awready_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_wvalid_ff  (.din(lsu_axi_wvalid),                 .dout(lsu_axi_wvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_wready_ff  (.din(lsu_axi_wready),                 .dout(lsu_axi_wready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_arvalid_ff (.din(lsu_axi_arvalid),                .dout(lsu_axi_arvalid_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_arready_ff (.din(lsu_axi_arready),                .dout(lsu_axi_arready_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_bvalid_ff  (.din(lsu_axi_bvalid),                 .dout(lsu_axi_bvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_bready_ff  (.din(lsu_axi_bready),                 .dout(lsu_axi_bready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(2))              lsu_axi_bresp_ff   (.din(lsu_axi_bresp[1:0]),             .dout(lsu_axi_bresp_q[1:0]),             .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) lsu_axi_bid_ff     (.din(lsu_axi_bid[pt.LSU_BUS_TAG-1:0]),.dout(lsu_axi_bid_q[pt.LSU_BUS_TAG-1:0]),.clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(64))             lsu_axi_rdata_ff   (.din(lsu_axi_rdata[63:0]),            .dout(lsu_axi_rdata_q[63:0]),            .en((lsu_axi_rvalid | clk_override) & lsu_bus_clk_en), .*);
-
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_rvalid_ff  (.din(lsu_axi_rvalid),                 .dout(lsu_axi_rvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_rready_ff  (.din(lsu_axi_rready),                 .dout(lsu_axi_rready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(2))              lsu_axi_rresp_ff   (.din(lsu_axi_rresp[1:0]),             .dout(lsu_axi_rresp_q[1:0]),             .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) lsu_axi_rid_ff     (.din(lsu_axi_rid[pt.LSU_BUS_TAG-1:0]),.dout(lsu_axi_rid_q[pt.LSU_BUS_TAG-1:0]),.clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-
-   rvdff #(.WIDTH(DEPTH_LOG2)) lsu_WrPtr0_rff (.din(WrPtr0_m), .dout(WrPtr0_r), .clk(lsu_c2_r_clk), .*);
-   rvdff #(.WIDTH(DEPTH_LOG2)) lsu_WrPtr1_rff (.din(WrPtr1_m), .dout(WrPtr1_r), .clk(lsu_c2_r_clk), .*);
-
-   rvdff #(.WIDTH(1)) lsu_busreq_rff (.din(lsu_busreq_m & ~flush_r & ~ld_full_hit_m),      .dout(lsu_busreq_r), .clk(lsu_c2_r_clk), .*);
-   rvdff #(.WIDTH(1)) lsu_nonblock_load_valid_rff  (.din(lsu_nonblock_load_valid_m),  .dout(lsu_nonblock_load_valid_r), .clk(lsu_c2_r_clk), .*);
-
-`ifdef RV_ASSERT_ON
-
-   for (genvar i=0; i<4; i++) begin: GenByte
-      assert_ld_byte_hitvecfn_lo_onehot: assert #0 ($onehot0(ld_byte_hitvecfn_lo[i][DEPTH-1:0]));
-      assert_ld_byte_hitvecfn_hi_onehot: assert #0 ($onehot0(ld_byte_hitvecfn_hi[i][DEPTH-1:0]));
-   end
-
-   for (genvar i=0; i<DEPTH; i++) begin: GenAssertAge
-      assert_bufempty_agevec: assert #0 (~(lsu_bus_buffer_empty_any & |(buf_age[i])));
-   end
-
-   assert_CmdPtr0Dec_onehot: assert #0 ($onehot0(CmdPtr0Dec[DEPTH-1:0] & ~{DEPTH{dec_tlu_force_halt}}));
-   assert_CmdPtr1Dec_onehot: assert #0 ($onehot0(CmdPtr1Dec[DEPTH-1:0] & ~{DEPTH{dec_tlu_force_halt}}));
-
-`endif
-
-endmodule // eb1_lsu_bus_buffer
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_bus_intf.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_bus_intf.sv
deleted file mode 100644
index fe80ab0..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_bus_intf.sv
+++ /dev/null
@@ -1,365 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: lsu interface with interface queue
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_bus_intf
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   input logic                          clk,                                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                          clk_override,                       // Override non-functional clock gating
-   input logic                          rst_l,                              // reset, active low
-   input logic                          scan_mode,                          // scan mode
-   input logic                          dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                          dec_tlu_wb_coalescing_disable,      // disable write buffer coalescing
-   input logic                          dec_tlu_sideeffect_posted_disable,  // disable the posted sideeffect load store to the bus
-
-   // various clocks needed for the bus reads and writes
-   input logic                          lsu_bus_obuf_c1_clken,              // obuf clock enable
-   input logic                          lsu_busm_clken,                     // bus clock enable
-
-   input logic                          lsu_c1_r_clk,                       // r pipe single pulse clock
-   input logic                          lsu_c2_r_clk,                       // r pipe double pulse clock
-   input logic                          lsu_bus_ibuf_c1_clk,                // ibuf single pulse clock
-   input logic                          lsu_bus_obuf_c1_clk,                // obuf single pulse clock
-   input logic                          lsu_bus_buf_c1_clk,                 // buf  single pulse clock
-   input logic                          lsu_free_c2_clk,                    // free clock double pulse clock
-   input logic                          active_clk,                         // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                          lsu_busm_clk,                       // bus clock
-
-   input logic                          dec_lsu_valid_raw_d,               // Raw valid for address computation
-   input logic                          lsu_busreq_m,                      // bus request is in m
-
-   input                                eb1_lsu_pkt_t lsu_pkt_m,          // lsu packet flowing down the pipe
-   input                                eb1_lsu_pkt_t lsu_pkt_r,          // lsu packet flowing down the pipe
-
-   input logic [31:0]                   lsu_addr_m,                        // lsu address flowing down the pipe
-   input logic [31:0]                   lsu_addr_r,                        // lsu address flowing down the pipe
-
-   input logic [31:0]                   end_addr_m,                        // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_r,                        // lsu address flowing down the pipe
-
-   input logic [31:0]                   store_data_r,                      // store data flowing down the pipe
-   input logic                          dec_tlu_force_halt,
-
-   input logic                          lsu_commit_r,                      // lsu instruction in r commits
-   input logic                          is_sideeffects_m,                  // lsu attribute is side_effects
-   input logic                          flush_m_up,                        // flush
-   input logic                          flush_r,                           // flush
-   input logic                          ldst_dual_d, ldst_dual_m, ldst_dual_r,
-
-   output logic                         lsu_busreq_r,                      // bus request is in r
-   output logic                         lsu_bus_buffer_pend_any,           // bus buffer has a pending bus entry
-   output logic                         lsu_bus_buffer_full_any,           // write buffer is full
-   output logic                         lsu_bus_buffer_empty_any,          // write buffer is empty
-   output logic [31:0]                  bus_read_data_m,                   // the bus return data
-
-
-   output logic                         lsu_imprecise_error_load_any,      // imprecise load bus error
-   output logic                         lsu_imprecise_error_store_any,     // imprecise store bus error
-   output logic [31:0]                  lsu_imprecise_error_addr_any,      // address of the imprecise error
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,   // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,     // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,     // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r, // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,// the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,// non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,  // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,      // Data of the non block load
-
-   // PMU events
-   output logic                         lsu_pmu_bus_trxn,
-   output logic                         lsu_pmu_bus_misaligned,
-   output logic                         lsu_pmu_bus_error,
-   output logic                         lsu_pmu_bus_busy,
-
-   // AXI Write Channels
-   output logic                        lsu_axi_awvalid,
-   input  logic                        lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_awid,
-   output logic [31:0]                 lsu_axi_awaddr,
-   output logic [3:0]                  lsu_axi_awregion,
-   output logic [7:0]                  lsu_axi_awlen,
-   output logic [2:0]                  lsu_axi_awsize,
-   output logic [1:0]                  lsu_axi_awburst,
-   output logic                        lsu_axi_awlock,
-   output logic [3:0]                  lsu_axi_awcache,
-   output logic [2:0]                  lsu_axi_awprot,
-   output logic [3:0]                  lsu_axi_awqos,
-
-   output logic                        lsu_axi_wvalid,
-   input  logic                        lsu_axi_wready,
-   output logic [63:0]                 lsu_axi_wdata,
-   output logic [7:0]                  lsu_axi_wstrb,
-   output logic                        lsu_axi_wlast,
-
-   input  logic                        lsu_axi_bvalid,
-   output logic                        lsu_axi_bready,
-   input  logic [1:0]                  lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                        lsu_axi_arvalid,
-   input  logic                        lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_arid,
-   output logic [31:0]                 lsu_axi_araddr,
-   output logic [3:0]                  lsu_axi_arregion,
-   output logic [7:0]                  lsu_axi_arlen,
-   output logic [2:0]                  lsu_axi_arsize,
-   output logic [1:0]                  lsu_axi_arburst,
-   output logic                        lsu_axi_arlock,
-   output logic [3:0]                  lsu_axi_arcache,
-   output logic [2:0]                  lsu_axi_arprot,
-   output logic [3:0]                  lsu_axi_arqos,
-
-   input  logic                        lsu_axi_rvalid,
-   output logic                        lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_rid,
-   input  logic [63:0]                 lsu_axi_rdata,
-   input  logic [1:0]                  lsu_axi_rresp,
-
-   input logic                         lsu_bus_clk_en
-
-);
-
-
-
-   logic              lsu_bus_clk_en_q;
-
-   logic [3:0]        ldst_byteen_m, ldst_byteen_r;
-   logic [7:0]        ldst_byteen_ext_m, ldst_byteen_ext_r;
-   logic [3:0]        ldst_byteen_hi_m, ldst_byteen_hi_r;
-   logic [3:0]        ldst_byteen_lo_m, ldst_byteen_lo_r;
-   logic              is_sideeffects_r;
-
-   logic [63:0]       store_data_ext_r;
-   logic [31:0]       store_data_hi_r;
-   logic [31:0]       store_data_lo_r;
-
-   logic              addr_match_dw_lo_r_m;
-   logic              addr_match_word_lo_r_m;
-   logic              no_word_merge_r, no_dword_merge_r;
-
-   logic              ld_addr_rhit_lo_lo, ld_addr_rhit_hi_lo, ld_addr_rhit_lo_hi, ld_addr_rhit_hi_hi;
-   logic [3:0]        ld_byte_rhit_lo_lo, ld_byte_rhit_hi_lo, ld_byte_rhit_lo_hi, ld_byte_rhit_hi_hi;
-
-   logic [3:0]        ld_byte_hit_lo, ld_byte_rhit_lo;
-   logic [3:0]        ld_byte_hit_hi, ld_byte_rhit_hi;
-
-   logic [31:0]       ld_fwddata_rpipe_lo;
-   logic [31:0]       ld_fwddata_rpipe_hi;
-
-   logic [3:0]        ld_byte_hit_buf_lo, ld_byte_hit_buf_hi;
-   logic [31:0]       ld_fwddata_buf_lo, ld_fwddata_buf_hi;
-
-   logic [63:0]       ld_fwddata_lo, ld_fwddata_hi;
-   logic [63:0]       ld_fwddata_m;
-
-   logic              ld_full_hit_hi_m, ld_full_hit_lo_m;
-   logic              ld_full_hit_m;
-
-   assign ldst_byteen_m[3:0] = ({4{lsu_pkt_m.by}}   & 4'b0001) |
-                                 ({4{lsu_pkt_m.half}} & 4'b0011) |
-                                 ({4{lsu_pkt_m.word}} & 4'b1111);
-
-   // Read/Write Buffer
-   eb1_lsu_bus_buffer #(.pt(pt)) bus_buffer (
-      .*
-   );
-
-   // Logic to determine if dc5 store can be coalesced or not with younger stores. Bypass ibuf if cannot colaesced
-   assign addr_match_dw_lo_r_m = (lsu_addr_r[31:3] == lsu_addr_m[31:3]);
-   assign addr_match_word_lo_r_m = addr_match_dw_lo_r_m & ~(lsu_addr_r[2]^lsu_addr_m[2]);
-
-   assign no_word_merge_r  = lsu_busreq_r & ~ldst_dual_r & lsu_busreq_m & (lsu_pkt_m.load | ~addr_match_word_lo_r_m);
-   assign no_dword_merge_r = lsu_busreq_r & ~ldst_dual_r & lsu_busreq_m & (lsu_pkt_m.load | ~addr_match_dw_lo_r_m);
-
-   // Create Hi/Lo signals
-   assign ldst_byteen_ext_m[7:0] = {4'b0,ldst_byteen_m[3:0]} << lsu_addr_m[1:0];
-   assign ldst_byteen_ext_r[7:0] = {4'b0,ldst_byteen_r[3:0]} << lsu_addr_r[1:0];
-
-   assign store_data_ext_r[63:0] = {32'b0,store_data_r[31:0]} << {lsu_addr_r[1:0],3'b0};
-
-   assign ldst_byteen_hi_m[3:0]   = ldst_byteen_ext_m[7:4];
-   assign ldst_byteen_lo_m[3:0]   = ldst_byteen_ext_m[3:0];
-   assign ldst_byteen_hi_r[3:0]   = ldst_byteen_ext_r[7:4];
-   assign ldst_byteen_lo_r[3:0]   = ldst_byteen_ext_r[3:0];
-
-   assign store_data_hi_r[31:0]   = store_data_ext_r[63:32];
-   assign store_data_lo_r[31:0]   = store_data_ext_r[31:0];
-
-   assign ld_addr_rhit_lo_lo = (lsu_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_lo_hi = (end_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_hi_lo = (lsu_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_hi_hi = (end_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-
-   for (genvar i=0; i<4; i++) begin: GenBusBufFwd
-      assign ld_byte_rhit_lo_lo[i] = ld_addr_rhit_lo_lo & ldst_byteen_lo_r[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_rhit_lo_hi[i] = ld_addr_rhit_lo_hi & ldst_byteen_lo_r[i] & ldst_byteen_hi_m[i];
-      assign ld_byte_rhit_hi_lo[i] = ld_addr_rhit_hi_lo & ldst_byteen_hi_r[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_rhit_hi_hi[i] = ld_addr_rhit_hi_hi & ldst_byteen_hi_r[i] & ldst_byteen_hi_m[i];
-
-      assign ld_byte_hit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i] |
-                                 ld_byte_hit_buf_lo[i];
-
-      assign ld_byte_hit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i] |
-                                 ld_byte_hit_buf_hi[i];
-
-      assign ld_byte_rhit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_rhit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-      assign ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_lo[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                    ({8{ld_byte_rhit_hi_lo[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      assign ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_hi[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                    ({8{ld_byte_rhit_hi_hi[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      // Final muxing between m/r
-      assign ld_fwddata_lo[(8*i)+7:(8*i)] = ld_byte_rhit_lo[i]    ? ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] : ld_fwddata_buf_lo[(8*i)+7:(8*i)];
-
-      assign ld_fwddata_hi[(8*i)+7:(8*i)] = ld_byte_rhit_hi[i]    ? ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] : ld_fwddata_buf_hi[(8*i)+7:(8*i)];
-
-   end
-
-   always_comb begin
-      ld_full_hit_lo_m = 1'b1;
-      ld_full_hit_hi_m = 1'b1;
-      for (int i=0; i<4; i++) begin
-         ld_full_hit_lo_m &= (ld_byte_hit_lo[i] | ~ldst_byteen_lo_m[i]);
-         ld_full_hit_hi_m &= (ld_byte_hit_hi[i] | ~ldst_byteen_hi_m[i]);
-      end
-   end
-
-   // This will be high if all the bytes of load hit the stores in pipe/write buffer (m/r/wrbuf)
-   assign ld_full_hit_m = ld_full_hit_lo_m & ld_full_hit_hi_m & lsu_busreq_m & lsu_pkt_m.load & ~is_sideeffects_m;
-
-   assign ld_fwddata_m[63:0] = {ld_fwddata_hi[31:0], ld_fwddata_lo[31:0]} >> (8*lsu_addr_m[1:0]);
-   assign bus_read_data_m[31:0]                        = ld_fwddata_m[31:0];
-
-   // Fifo flops
-
-   rvdff #(.WIDTH(1)) clken_ff (.din(lsu_bus_clk_en), .dout(lsu_bus_clk_en_q), .clk(active_clk), .*);
-
-   rvdff #(.WIDTH(1)) is_sideeffects_rff (.din(is_sideeffects_m), .dout(is_sideeffects_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(4) lsu_byten_rff (.*, .din(ldst_byteen_m[3:0]), .dout(ldst_byteen_r[3:0]), .clk(lsu_c1_r_clk));
-
-`ifdef RV_ASSERT_ON
-
-  // Assertion to check AXI write address is aligned to size
-  property lsu_axi_awaddr_aligned;
-    @(posedge lsu_busm_clk) disable iff(~rst_l) lsu_axi_awvalid |-> ((lsu_axi_awsize[2:0] == 3'h0)                                   |
-                                                                     ((lsu_axi_awsize[2:0] == 3'h1) & (lsu_axi_awaddr[0] == 1'b0))   |
-                                                                     ((lsu_axi_awsize[2:0] == 3'h2) & (lsu_axi_awaddr[1:0] == 2'b0)) |
-                                                                     ((lsu_axi_awsize[2:0] == 3'h3) & (lsu_axi_awaddr[2:0] == 3'b0)));
-  endproperty
-  assert_lsu_axi_awaddr_aligned: assert property (lsu_axi_awaddr_aligned) else
-    $display("Assertion lsu_axi_awaddr_aligned failed: lsu_axi_awvalid=1'b%b, lsu_axi_awsize=3'h%h, lsu_axi_awaddr=32'h%h",lsu_axi_awvalid, lsu_axi_awsize[2:0], lsu_axi_awaddr[31:0]);
-  // Assertion to check awvalid stays stable during entire bus clock
-
-  // Assertion to check AXI read address is aligned to size
-  property lsu_axi_araddr_aligned;
-    @(posedge lsu_busm_clk) disable iff(~rst_l) lsu_axi_arvalid |-> ((lsu_axi_arsize[2:0] == 3'h0)                                   |
-                                                                     ((lsu_axi_arsize[2:0] == 3'h1) & (lsu_axi_araddr[0] == 1'b0))   |
-                                                                     ((lsu_axi_arsize[2:0] == 3'h2) & (lsu_axi_araddr[1:0] == 2'b0)) |
-                                                                     ((lsu_axi_arsize[2:0] == 3'h3) & (lsu_axi_araddr[2:0] == 3'b0)));
-  endproperty
-  assert_lsu_axi_araddr_aligned: assert property (lsu_axi_araddr_aligned) else
-    $display("Assertion lsu_axi_araddr_aligned failed: lsu_axi_awvalid=1'b%b, lsu_axi_awsize=3'h%h, lsu_axi_araddr=32'h%h",lsu_axi_awvalid, lsu_axi_awsize[2:0], lsu_axi_araddr[31:0]);
-
-  // Assertion to check awvalid stays stable during entire bus clock
- property lsu_axi_awvalid_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_awvalid != $past(lsu_axi_awvalid)) |-> ($past(lsu_bus_clk_en) | dec_tlu_force_halt);
-  endproperty
-  assert_lsu_axi_awvalid_stable: assert property (lsu_axi_awvalid_stable) else
-     $display("LSU AXI awvalid changed in middle of bus clock");
-
-  // Assertion to check awid stays stable during entire bus clock
-  property lsu_axi_awid_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_awvalid & (lsu_axi_awid[pt.LSU_BUS_TAG-1:0] != $past(lsu_axi_awid[pt.LSU_BUS_TAG-1:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_awid_stable: assert property (lsu_axi_awid_stable) else
-     $display("LSU AXI awid changed in middle of bus clock");
-
-  // Assertion to check awaddr stays stable during entire bus clock
-  property lsu_axi_awaddr_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_awvalid & (lsu_axi_awaddr[31:0] != $past(lsu_axi_awaddr[31:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_awaddr_stable: assert property (lsu_axi_awaddr_stable) else
-     $display("LSU AXI awaddr changed in middle of bus clock");
-
-  // Assertion to check awsize stays stable during entire bus clock
-  property lsu_axi_awsize_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_awvalid & (lsu_axi_awsize[2:0] != $past(lsu_axi_awsize[2:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_awsize_stable: assert property (lsu_axi_awsize_stable) else
-     $display("LSU AXI awsize changed in middle of bus clock");
-
-  // Assertion to check wstrb stays stable during entire bus clock
-  property lsu_axi_wstrb_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_wvalid & (lsu_axi_wstrb[7:0] != $past(lsu_axi_wstrb[7:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_wstrb_stable: assert property (lsu_axi_wstrb_stable) else
-     $display("LSU AXI wstrb changed in middle of bus clock");
-
-  // Assertion to check wdata stays stable during entire bus clock
-  property lsu_axi_wdata_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_wvalid & (lsu_axi_wdata[63:0] != $past(lsu_axi_wdata[63:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_wdata_stable: assert property (lsu_axi_wdata_stable) else
-     $display("LSU AXI wdata changed in middle of bus clock");
-
-  // Assertion to check awvalid stays stable during entire bus clock
-  property lsu_axi_arvalid_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_arvalid != $past(lsu_axi_arvalid)) |-> ($past(lsu_bus_clk_en) | dec_tlu_force_halt);
-  endproperty
-  assert_lsu_axi_arvalid_stable: assert property (lsu_axi_arvalid_stable) else
-     $display("LSU AXI awvalid changed in middle of bus clock");
-
-  // Assertion to check awid stays stable during entire bus clock
-  property lsu_axi_arid_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_arvalid & (lsu_axi_arid[pt.LSU_BUS_TAG-1:0] != $past(lsu_axi_arid[pt.LSU_BUS_TAG-1:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_arid_stable: assert property (lsu_axi_arid_stable) else
-     $display("LSU AXI awid changed in middle of bus clock");
-
-  // Assertion to check awaddr stays stable during entire bus clock
-  property lsu_axi_araddr_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_arvalid & (lsu_axi_araddr[31:0] != $past(lsu_axi_araddr[31:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_araddr_stable: assert property (lsu_axi_araddr_stable) else
-     $display("LSU AXI awaddr changed in middle of bus clock");
-
-  // Assertion to check awsize stays stable during entire bus clock
-  property lsu_axi_arsize_stable;
-     @(posedge clk) disable iff(~rst_l)  (lsu_axi_awvalid & (lsu_axi_arsize[2:0] != $past(lsu_axi_arsize[2:0]))) |-> $past(lsu_bus_clk_en);
-  endproperty
-  assert_lsu_axi_arsize_stable: assert property (lsu_axi_arsize_stable) else
-     $display("LSU AXI awsize changed in middle of bus clock");
-
-`endif
-
-endmodule // eb1_lsu_bus_intf
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_clkdomain.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_clkdomain.sv
deleted file mode 100644
index afa1be9..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_clkdomain.sv
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Clock Generation Block
-// Comments: All the clocks are generate here
-//
-// //********************************************************************************
-
-
-module eb1_lsu_clkdomain
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
-)(
-   input logic      clk,                               // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic      active_clk,                        // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic      rst_l,                             // reset, active low
-   input logic      dec_tlu_force_halt,                // This will be high till TLU goes to debug halt
-
-   // Inputs
-   input logic      clk_override,                      // chciken bit to turn off clock gating
-   input logic      dma_dccm_req,                      // dma is active
-   input logic      ldst_stbuf_reqvld_r,               // allocating in to the store queue
-
-   input logic      stbuf_reqvld_any,                  // stbuf is draining
-   input logic      stbuf_reqvld_flushed_any,          // instruction going to stbuf is flushed
-   input logic      lsu_busreq_r,                      // busreq in r
-   input logic      lsu_bus_buffer_pend_any,           // bus buffer has a pending bus entry
-   input logic      lsu_bus_buffer_empty_any,          // external bus buffer is empty
-   input logic      lsu_stbuf_empty_any,               // stbuf is empty
-
-   input logic      lsu_bus_clk_en,                    // bus clock enable
-
-   input eb1_lsu_pkt_t  lsu_p,                        // lsu packet in decode
-   input eb1_lsu_pkt_t  lsu_pkt_d,                    // lsu packet in d
-   input eb1_lsu_pkt_t  lsu_pkt_m,                    // lsu packet in m
-   input eb1_lsu_pkt_t  lsu_pkt_r,                    // lsu packet in r
-
-   // Outputs
-   output logic     lsu_bus_obuf_c1_clken,             // obuf clock enable
-   output logic     lsu_busm_clken,                    // bus clock enable
-
-   output logic     lsu_c1_m_clk,                      // m pipe single pulse clock
-   output logic     lsu_c1_r_clk,                      // r pipe single pulse clock
-
-   output logic     lsu_c2_m_clk,                      // m pipe double pulse clock
-   output logic     lsu_c2_r_clk,                      // r pipe double pulse clock
-
-   output logic     lsu_store_c1_m_clk,                // store in m
-   output logic     lsu_store_c1_r_clk,                // store in r
-
-   output logic     lsu_stbuf_c1_clk,
-   output logic     lsu_bus_obuf_c1_clk,               // ibuf clock
-   output logic     lsu_bus_ibuf_c1_clk,               // ibuf clock
-   output logic     lsu_bus_buf_c1_clk,                // ibuf clock
-   output logic     lsu_busm_clk,                      // bus clock
-
-   output logic     lsu_free_c2_clk,                   // free double pulse clock
-
-   input  logic     scan_mode                          // Scan mode
-);
-
-   logic lsu_c1_m_clken, lsu_c1_r_clken;
-   logic lsu_c2_m_clken, lsu_c2_r_clken;
-   logic lsu_c1_m_clken_q, lsu_c1_r_clken_q;
-   logic lsu_store_c1_m_clken, lsu_store_c1_r_clken;
-
-
-   logic lsu_stbuf_c1_clken;
-   logic lsu_bus_ibuf_c1_clken, lsu_bus_buf_c1_clken;
-
-   logic lsu_free_c1_clken, lsu_free_c1_clken_q, lsu_free_c2_clken;
-
-   //-------------------------------------------------------------------------------------------
-   // Clock Enable logic
-   //-------------------------------------------------------------------------------------------
-
-   assign lsu_c1_m_clken = lsu_p.valid | dma_dccm_req | clk_override;
-   assign lsu_c1_r_clken = lsu_pkt_m.valid | lsu_c1_m_clken_q | clk_override;
-
-   assign lsu_c2_m_clken = lsu_c1_m_clken | lsu_c1_m_clken_q | clk_override;
-   assign lsu_c2_r_clken = lsu_c1_r_clken | lsu_c1_r_clken_q | clk_override;
-
-   assign lsu_store_c1_m_clken = ((lsu_c1_m_clken & lsu_pkt_d.store) | clk_override) ;
-   assign lsu_store_c1_r_clken = ((lsu_c1_r_clken & lsu_pkt_m.store) | clk_override) ;
-
-   assign lsu_stbuf_c1_clken = ldst_stbuf_reqvld_r | stbuf_reqvld_any | stbuf_reqvld_flushed_any | clk_override;
-   assign lsu_bus_ibuf_c1_clken = lsu_busreq_r | clk_override;
-   assign lsu_bus_obuf_c1_clken = (lsu_bus_buffer_pend_any | lsu_busreq_r | clk_override) & lsu_bus_clk_en;
-   assign lsu_bus_buf_c1_clken  = ~lsu_bus_buffer_empty_any | lsu_busreq_r | dec_tlu_force_halt | clk_override;
-
-   assign lsu_free_c1_clken = (lsu_p.valid | lsu_pkt_d.valid | lsu_pkt_m.valid | lsu_pkt_r.valid) |
-                              ~lsu_bus_buffer_empty_any | ~lsu_stbuf_empty_any | clk_override;
-   assign lsu_free_c2_clken = lsu_free_c1_clken | lsu_free_c1_clken_q | clk_override;
-
-    // Flops
-   rvdff #(1) lsu_free_c1_clkenff (.din(lsu_free_c1_clken), .dout(lsu_free_c1_clken_q), .clk(active_clk), .*);
-
-   rvdff #(1) lsu_c1_m_clkenff (.din(lsu_c1_m_clken), .dout(lsu_c1_m_clken_q), .clk(lsu_free_c2_clk), .*);
-   rvdff #(1) lsu_c1_r_clkenff (.din(lsu_c1_r_clken), .dout(lsu_c1_r_clken_q), .clk(lsu_free_c2_clk), .*);
-
-   // Clock Headers
-   rvoclkhdr lsu_c1m_cgc ( .en(lsu_c1_m_clken), .l1clk(lsu_c1_m_clk), .* );
-   rvoclkhdr lsu_c1r_cgc ( .en(lsu_c1_r_clken), .l1clk(lsu_c1_r_clk), .* );
-
-   rvoclkhdr lsu_c2m_cgc ( .en(lsu_c2_m_clken), .l1clk(lsu_c2_m_clk), .* );
-   rvoclkhdr lsu_c2r_cgc ( .en(lsu_c2_r_clken), .l1clk(lsu_c2_r_clk), .* );
-
-   rvoclkhdr lsu_store_c1m_cgc (.en(lsu_store_c1_m_clken), .l1clk(lsu_store_c1_m_clk), .*);
-   rvoclkhdr lsu_store_c1r_cgc (.en(lsu_store_c1_r_clken), .l1clk(lsu_store_c1_r_clk), .*);
-
-   rvoclkhdr lsu_stbuf_c1_cgc ( .en(lsu_stbuf_c1_clken), .l1clk(lsu_stbuf_c1_clk), .* );
-   rvoclkhdr lsu_bus_ibuf_c1_cgc ( .en(lsu_bus_ibuf_c1_clken), .l1clk(lsu_bus_ibuf_c1_clk), .* );
-   rvoclkhdr lsu_bus_buf_c1_cgc  ( .en(lsu_bus_buf_c1_clken),  .l1clk(lsu_bus_buf_c1_clk), .* );
-
-   assign lsu_busm_clken = (~lsu_bus_buffer_empty_any | lsu_busreq_r | clk_override) & lsu_bus_clk_en;
-
-`ifdef RV_FPGA_OPTIMIZE
-   assign lsu_busm_clk = 1'b0;
-   assign lsu_bus_obuf_c1_clk = 1'b0;
-`else
-   rvclkhdr  lsu_bus_obuf_c1_cgc ( .en(lsu_bus_obuf_c1_clken), .l1clk(lsu_bus_obuf_c1_clk), .* );
-   rvclkhdr  lsu_busm_cgc (.en(lsu_busm_clken), .l1clk(lsu_busm_clk), .*);
-`endif
-
-   rvoclkhdr lsu_free_cgc (.en(lsu_free_c2_clken), .l1clk(lsu_free_c2_clk), .*);
-
-endmodule
-
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_dccm_ctl.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_dccm_ctl.sv
deleted file mode 100644
index ba070bc..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_dccm_ctl.sv
+++ /dev/null
@@ -1,425 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DCCM for LSU pipe
-// Comments: Single ported memory
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-module eb1_lsu_dccm_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-  (
-   input logic                             lsu_c2_m_clk,            // clocks
-   input logic                             lsu_c2_r_clk,            // clocks
-   input logic                             lsu_c1_r_clk,            // clocks
-   input logic                             lsu_store_c1_r_clk,      // clocks
-   input logic                             lsu_free_c2_clk,         // clocks
-   input logic                             clk_override,            // Override non-functional clock gating
-   input logic                             clk,                     // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-
-   input logic                             rst_l,                   // reset, active low
-
-   input                                   eb1_lsu_pkt_t lsu_pkt_r,// lsu packets
-   input                                   eb1_lsu_pkt_t lsu_pkt_m,// lsu packets
-   input                                   eb1_lsu_pkt_t lsu_pkt_d,// lsu packets
-   input logic                             addr_in_dccm_d,          // address maps to dccm
-   input logic                             addr_in_pic_d,           // address maps to pic
-   input logic                             addr_in_pic_m,           // address maps to pic
-   input logic                             addr_in_dccm_m, addr_in_dccm_r,   // address in dccm per pipe stage
-   input logic                             addr_in_pic_r,                    // address in pic  per pipe stage
-   input logic                             lsu_raw_fwd_lo_r, lsu_raw_fwd_hi_r,
-   input logic                             lsu_commit_r,            // lsu instruction in r commits
-   input logic                             ldst_dual_m, ldst_dual_r,// load/store is unaligned at 32 bit boundary per pipe stage
-
-   // lsu address down the pipe
-   input logic [31:0]                      lsu_addr_d,
-   input logic [pt.DCCM_BITS-1:0]          lsu_addr_m,
-   input logic [31:0]                      lsu_addr_r,
-
-   // lsu address down the pipe - needed to check unaligned
-   input logic [pt.DCCM_BITS-1:0]          end_addr_d,
-   input logic [pt.DCCM_BITS-1:0]          end_addr_m,
-   input logic [pt.DCCM_BITS-1:0]          end_addr_r,
-
-
-   input logic                             stbuf_reqvld_any,        // write enable
-   input logic [pt.LSU_SB_BITS-1:0]        stbuf_addr_any,          // stbuf address (aligned)
-
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_data_any,          // the read out from stbuf
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     stbuf_ecc_any,           // the encoded data with ECC bits
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_fwddata_hi_m,      // stbuf fowarding to load
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_fwddata_lo_m,      // stbuf fowarding to load
-   input logic [pt.DCCM_BYTE_WIDTH-1:0]    stbuf_fwdbyteen_hi_m,    // stbuf fowarding to load
-   input logic [pt.DCCM_BYTE_WIDTH-1:0]    stbuf_fwdbyteen_lo_m,    // stbuf fowarding to load
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_hi_r,         // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_lo_r,         // data from the dccm
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_hi_r,      // data from the dccm + ecc
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_lo_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_r,           // right justified, ie load byte will have data at 7:0
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_corr_r,      // right justified & ECC corrected, ie load byte will have data at 7:0
-
-   input logic                             lsu_double_ecc_error_r,  // lsu has a DED
-   input logic                             single_ecc_error_hi_r,   // sec detected on hi dccm bank
-   input logic                             single_ecc_error_lo_r,   // sec detected on lower dccm bank
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_r,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_r,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_r_ff,        // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_r_ff,        // corrected dccm data
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     sec_data_ecc_hi_r_ff,    // the encoded data with ECC bits
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     sec_data_ecc_lo_r_ff,    // the encoded data with ECC bits
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_hi_m,         // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_lo_m,         // data from the dccm
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_hi_m,      // data from the dccm + ecc
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_lo_m,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_m,           // right justified, ie load byte will have data at 7:0
-
-   input logic                             lsu_double_ecc_error_m,  // lsu has a DED
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_m,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_m,           // corrected dccm data
-
-   input logic [31:0]                      store_data_m,            // Store data M-stage
-   input logic                             dma_dccm_wen,            // Perform DMA writes only for word/dword
-   input logic                             dma_pic_wen,             // Perform PIC writes
-   input logic [2:0]                       dma_mem_tag_m,           // DMA Buffer entry number M-stage
-   input logic [31:0]                      dma_mem_addr,            // DMA request address
-   input logic [63:0]                      dma_mem_wdata,           // DMA write data
-   input logic [31:0]                      dma_dccm_wdata_lo,       // Shift the dma data to lower bits to make it consistent to lsu stores
-   input logic [31:0]                      dma_dccm_wdata_hi,       // Shift the dma data to lower bits to make it consistent to lsu stores
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     dma_dccm_wdata_ecc_hi,   // ECC bits for the DMA wdata
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     dma_dccm_wdata_ecc_lo,   // ECC bits for the DMA wdata
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_data_hi_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_data_lo_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_datafn_hi_r,       // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_datafn_lo_r,       // data from the dccm
-   output logic [31:0]                     store_data_r,            // raw store data to be sent to bus
-   output logic                            ld_single_ecc_error_r,
-   output logic                            ld_single_ecc_error_r_ff,
-
-   output logic [31:0]                     picm_mask_data_m,        // pic data to stbuf
-   output logic                            lsu_stbuf_commit_any,    // stbuf wins the dccm port or is to pic
-   output logic                            lsu_dccm_rden_m,         // dccm read
-   output logic                            lsu_dccm_rden_r,         // dccm read
-
-   output logic                            dccm_dma_rvalid,         // dccm serviving the dma load
-   output logic                            dccm_dma_ecc_error,      // DMA load had ecc error
-   output logic [2:0]                      dccm_dma_rtag,           // DMA return tag
-   output logic [63:0]                     dccm_dma_rdata,          // dccm data to dma request
-
-   // DCCM ports
-   output logic                            dccm_wren,               // dccm interface -- write
-   output logic                            dccm_rden,               // dccm interface -- write
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo,         // dccm interface -- wr addr for lo bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi,         // dccm interface -- wr addr for hi bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo,         // dccm interface -- read address for lo bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi,         // dccm interface -- read address for hi bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,         // dccm write data for lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,         // dccm write data for hi bank
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_lo,         // dccm read data back from the dccm
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_hi,         // dccm read data back from the dccm
-
-   // PIC ports
-   output logic                            picm_wren,               // write to pic
-   output logic                            picm_rden,               // read to pick
-   output logic                            picm_mken,               // write to pic need a mask
-   output logic [31:0]                     picm_rdaddr,             // address for pic read access
-   output logic [31:0]                     picm_wraddr,             // address for pic write access
-   output logic [31:0]                     picm_wr_data,            // write data
-   input logic [31:0]                      picm_rd_data,            // read data
-
-   input logic                             scan_mode                // scan mode
-);
-
-
-   localparam DCCM_WIDTH_BITS = $clog2(pt.DCCM_BYTE_WIDTH);
-
-   logic                           lsu_dccm_rden_d, lsu_dccm_wren_d;
-   logic                           ld_single_ecc_error_lo_r, ld_single_ecc_error_hi_r;
-   logic                           ld_single_ecc_error_lo_r_ns, ld_single_ecc_error_hi_r_ns;
-   logic                           ld_single_ecc_error_lo_r_ff, ld_single_ecc_error_hi_r_ff;
-   logic                           lsu_double_ecc_error_r_ff;
-   logic [pt.DCCM_BITS-1:0]        ld_sec_addr_lo_r_ff, ld_sec_addr_hi_r_ff;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_lo_r_in, store_data_hi_r_in ;
-   logic [63:0]                    picm_rd_data_m;
-
-   logic                           dccm_wr_bypass_d_m_hi, dccm_wr_bypass_d_r_hi;
-   logic                           dccm_wr_bypass_d_m_lo, dccm_wr_bypass_d_r_lo;
-   logic                           kill_ecc_corr_lo_r, kill_ecc_corr_hi_r;
-
-    // byte_en flowing down
-   logic [3:0]                     store_byteen_m ,store_byteen_r;
-   logic [7:0]                     store_byteen_ext_m, store_byteen_ext_r;
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic [63:0]  lsu_rdata_r, lsu_rdata_corr_r;
-      logic [63:0]  dccm_rdata_r, dccm_rdata_corr_r;
-      logic [63:0]  stbuf_fwddata_r;
-      logic [7:0]   stbuf_fwdbyteen_r;
-      logic [31:0]  stbuf_fwddata_lo_r, stbuf_fwddata_hi_r;
-      logic [3:0]   stbuf_fwdbyteen_lo_r, stbuf_fwdbyteen_hi_r;
-      logic [31:0]  lsu_rdata_lo_r, lsu_rdata_hi_r;
-      logic [63:0]  picm_rd_data_r;
-      logic [63:32] lsu_ld_data_r_nc, lsu_ld_data_corr_r_nc;
-      logic [2:0]   dma_mem_tag_r;
-      logic         stbuf_fwddata_en;
-
-      assign dccm_dma_rvalid      = lsu_pkt_r.valid & lsu_pkt_r.load & lsu_pkt_r.dma;
-      assign dccm_dma_ecc_error   = lsu_double_ecc_error_r;
-      assign dccm_dma_rtag[2:0]   = dma_mem_tag_r[2:0];
-      assign dccm_dma_rdata[63:0] = ldst_dual_r ? lsu_rdata_corr_r[63:0] : {2{lsu_rdata_corr_r[31:0]}};
-      assign {lsu_ld_data_r_nc[63:32], lsu_ld_data_r[31:0]}           = lsu_rdata_r[63:0] >> 8*lsu_addr_r[1:0];
-      assign {lsu_ld_data_corr_r_nc[63:32], lsu_ld_data_corr_r[31:0]} = lsu_rdata_corr_r[63:0] >> 8*lsu_addr_r[1:0];
-
-      assign picm_rd_data_r[63:32]   = picm_rd_data_r[31:0];
-      assign dccm_rdata_r[63:0]      = {dccm_rdata_hi_r[31:0],dccm_rdata_lo_r[31:0]};
-      assign dccm_rdata_corr_r[63:0] = {sec_data_hi_r[31:0],sec_data_lo_r[31:0]};
-      assign stbuf_fwddata_r[63:0]   = {stbuf_fwddata_hi_r[31:0], stbuf_fwddata_lo_r[31:0]};
-      assign stbuf_fwdbyteen_r[7:0]  = {stbuf_fwdbyteen_hi_r[3:0], stbuf_fwdbyteen_lo_r[3:0]};
-      assign stbuf_fwddata_en        = (|stbuf_fwdbyteen_hi_m[3:0]) | (|stbuf_fwdbyteen_lo_m[3:0]) | clk_override;
-
-      for (genvar i=0; i<8; i++) begin: GenDMAData
-         assign lsu_rdata_corr_r[(8*i)+7:8*i]  = stbuf_fwdbyteen_r[i] ? stbuf_fwddata_r[(8*i)+7:8*i] :
-                                                                        (addr_in_pic_r ? picm_rd_data_r[(8*i)+7:8*i] :  ({8{addr_in_dccm_r}} & dccm_rdata_corr_r[(8*i)+7:8*i]));
-
-         assign lsu_rdata_r[(8*i)+7:8*i]       = stbuf_fwdbyteen_r[i] ? stbuf_fwddata_r[(8*i)+7:8*i] :
-                                                                        (addr_in_pic_r ? picm_rd_data_r[(8*i)+7:8*i] :  ({8{addr_in_dccm_r}} & dccm_rdata_r[(8*i)+7:8*i]));
-      end
-      rvdffe #(pt.DCCM_DATA_WIDTH) dccm_rdata_hi_r_ff    (.*, .din(dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(dccm_rdata_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en((lsu_dccm_rden_m & ldst_dual_m) | clk_override));
-      rvdffe #(pt.DCCM_DATA_WIDTH) dccm_rdata_lo_r_ff    (.*, .din(dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(dccm_rdata_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_dccm_rden_m | clk_override));
-      rvdffe #(2*pt.DCCM_ECC_WIDTH)  dccm_data_ecc_r_ff  (.*, .din({dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0], dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0]}),
-                                                              .dout({dccm_data_ecc_hi_r[pt.DCCM_ECC_WIDTH-1:0], dccm_data_ecc_lo_r[pt.DCCM_ECC_WIDTH-1:0]}),                                  .en(lsu_dccm_rden_m | clk_override));
-      rvdff #(8)                   stbuf_fwdbyteen_ff    (.*, .din({stbuf_fwdbyteen_hi_m[3:0], stbuf_fwdbyteen_lo_m[3:0]}), .dout({stbuf_fwdbyteen_hi_r[3:0], stbuf_fwdbyteen_lo_r[3:0]}), .clk(lsu_c2_r_clk));
-      rvdffe #(64)                 stbuf_fwddata_ff      (.*, .din({stbuf_fwddata_hi_m[31:0], stbuf_fwddata_lo_m[31:0]}),   .dout({stbuf_fwddata_hi_r[31:0], stbuf_fwddata_lo_r[31:0]}),   .en(stbuf_fwddata_en));
-      rvdffe #(32)                 picm_rddata_rff       (.*, .din(picm_rd_data_m[31:0]),                                   .dout(picm_rd_data_r[31:0]),                                   .en(addr_in_pic_m | clk_override));
-      rvdff #(3)                   dma_mem_tag_rff       (.*, .din(dma_mem_tag_m[2:0]),                                     .dout(dma_mem_tag_r[2:0]),                                     .clk(lsu_c1_r_clk));
-
-   end else begin: L2U_Plus1_0
-
-      logic [63:0]  lsu_rdata_m, lsu_rdata_corr_m;
-      logic [63:0]  dccm_rdata_m, dccm_rdata_corr_m;
-      logic [63:0]  stbuf_fwddata_m;
-      logic [7:0]   stbuf_fwdbyteen_m;
-      logic [63:32] lsu_ld_data_m_nc, lsu_ld_data_corr_m_nc;
-      logic [31:0]  lsu_ld_data_corr_m;
-
-      assign dccm_dma_rvalid      = lsu_pkt_m.valid & lsu_pkt_m.load & lsu_pkt_m.dma;
-      assign dccm_dma_ecc_error   = lsu_double_ecc_error_m;
-      assign dccm_dma_rtag[2:0]   = dma_mem_tag_m[2:0];
-      assign dccm_dma_rdata[63:0] = ldst_dual_m ? lsu_rdata_corr_m[63:0] : {2{lsu_rdata_corr_m[31:0]}};
-      assign {lsu_ld_data_m_nc[63:32], lsu_ld_data_m[31:0]} = lsu_rdata_m[63:0] >> 8*lsu_addr_m[1:0];
-      assign {lsu_ld_data_corr_m_nc[63:32], lsu_ld_data_corr_m[31:0]} = lsu_rdata_corr_m[63:0] >> 8*lsu_addr_m[1:0];
-
-      assign dccm_rdata_m[63:0]      = {dccm_rdata_hi_m[31:0],dccm_rdata_lo_m[31:0]};
-      assign dccm_rdata_corr_m[63:0] = {sec_data_hi_m[31:0],sec_data_lo_m[31:0]};
-      assign stbuf_fwddata_m[63:0]   = {stbuf_fwddata_hi_m[31:0], stbuf_fwddata_lo_m[31:0]};
-      assign stbuf_fwdbyteen_m[7:0]  = {stbuf_fwdbyteen_hi_m[3:0], stbuf_fwdbyteen_lo_m[3:0]};
-
-      for (genvar i=0; i<8; i++) begin: GenLoop
-         assign lsu_rdata_corr_m[(8*i)+7:8*i] = stbuf_fwdbyteen_m[i] ? stbuf_fwddata_m[(8*i)+7:8*i] :
-                                                                       (addr_in_pic_m ? picm_rd_data_m[(8*i)+7:8*i] : ({8{addr_in_dccm_m}} & dccm_rdata_corr_m[(8*i)+7:8*i]));
-
-         assign lsu_rdata_m[(8*i)+7:8*i]      = stbuf_fwdbyteen_m[i] ? stbuf_fwddata_m[(8*i)+7:8*i] :
-                                                                       (addr_in_pic_m ? picm_rd_data_m[(8*i)+7:8*i] : ({8{addr_in_dccm_m}} & dccm_rdata_m[(8*i)+7:8*i]));
-      end
-
-      rvdffe #(32) lsu_ld_data_corr_rff(.*, .din(lsu_ld_data_corr_m[31:0]), .dout(lsu_ld_data_corr_r[31:0]), .en((lsu_pkt_m.valid & lsu_pkt_m.load & (addr_in_pic_m | addr_in_dccm_m)) | clk_override));
-   end
-
-   assign kill_ecc_corr_lo_r = (((lsu_addr_d[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_d[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_d.valid & lsu_pkt_d.store & lsu_pkt_d.dma & addr_in_dccm_d) |
-                               (((lsu_addr_m[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_m[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_m.valid & lsu_pkt_m.store & lsu_pkt_m.dma & addr_in_dccm_m);
-
-   assign kill_ecc_corr_hi_r = (((lsu_addr_d[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_d[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_d.valid & lsu_pkt_d.store & lsu_pkt_d.dma & addr_in_dccm_d) |
-                               (((lsu_addr_m[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_m[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_m.valid & lsu_pkt_m.store & lsu_pkt_m.dma & addr_in_dccm_m);
-
-   assign ld_single_ecc_error_lo_r = lsu_pkt_r.load & single_ecc_error_lo_r & ~lsu_raw_fwd_lo_r;
-   assign ld_single_ecc_error_hi_r = lsu_pkt_r.load & single_ecc_error_hi_r & ~lsu_raw_fwd_hi_r;
-   assign ld_single_ecc_error_r    = (ld_single_ecc_error_lo_r | ld_single_ecc_error_hi_r) & ~lsu_double_ecc_error_r;
-
-   assign ld_single_ecc_error_lo_r_ns = ld_single_ecc_error_lo_r & (lsu_commit_r | lsu_pkt_r.dma) & ~kill_ecc_corr_lo_r;
-   assign ld_single_ecc_error_hi_r_ns = ld_single_ecc_error_hi_r & (lsu_commit_r | lsu_pkt_r.dma) & ~kill_ecc_corr_hi_r;
-   assign ld_single_ecc_error_r_ff = (ld_single_ecc_error_lo_r_ff | ld_single_ecc_error_hi_r_ff) & ~lsu_double_ecc_error_r_ff;
-
-   assign lsu_stbuf_commit_any = stbuf_reqvld_any &
-                                 (~(lsu_dccm_rden_d | lsu_dccm_wren_d | ld_single_ecc_error_r_ff) |
-                                  (lsu_dccm_rden_d & ~((stbuf_addr_any[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] == lsu_addr_d[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]) |
-                                                       (stbuf_addr_any[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] == end_addr_d[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]))));
-
-   // No need to read for aligned word/dword stores since ECC will come by new data completely
-   assign lsu_dccm_rden_d = lsu_pkt_d.valid & (lsu_pkt_d.load | (lsu_pkt_d.store & (~(lsu_pkt_d.word | lsu_pkt_d.dword) | (lsu_addr_d[1:0] != 2'b0)))) & addr_in_dccm_d;
-
-   // DMA will read/write in decode stage
-   assign lsu_dccm_wren_d = dma_dccm_wen;
-
-   // DCCM inputs
-   assign dccm_wren                             = lsu_dccm_wren_d | lsu_stbuf_commit_any | ld_single_ecc_error_r_ff;
-   assign dccm_rden                             = lsu_dccm_rden_d & addr_in_dccm_d;
-   assign dccm_wr_addr_lo[pt.DCCM_BITS-1:0]     = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_lo_r_ff ? ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0] : ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0]) :
-                                                                             lsu_dccm_wren_d ? lsu_addr_d[pt.DCCM_BITS-1:0] : stbuf_addr_any[pt.DCCM_BITS-1:0];
-   assign dccm_wr_addr_hi[pt.DCCM_BITS-1:0]     = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_hi_r_ff ? ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0] : ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0]) :
-                                                                             lsu_dccm_wren_d ? end_addr_d[pt.DCCM_BITS-1:0] : stbuf_addr_any[pt.DCCM_BITS-1:0];
-   assign dccm_rd_addr_lo[pt.DCCM_BITS-1:0]     = lsu_addr_d[pt.DCCM_BITS-1:0];
-   assign dccm_rd_addr_hi[pt.DCCM_BITS-1:0]     = end_addr_d[pt.DCCM_BITS-1:0];
-   assign dccm_wr_data_lo[pt.DCCM_FDATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_lo_r_ff ? {sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                               {sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]}) :
-                                                                                (dma_dccm_wen ? {dma_dccm_wdata_ecc_lo[pt.DCCM_ECC_WIDTH-1:0],dma_dccm_wdata_lo[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                {stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0],stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]});
-   assign dccm_wr_data_hi[pt.DCCM_FDATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_hi_r_ff ? {sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                               {sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]}) :
-                                                                                (dma_dccm_wen ? {dma_dccm_wdata_ecc_hi[pt.DCCM_ECC_WIDTH-1:0],dma_dccm_wdata_hi[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                {stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0],stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]});
-
-   // DCCM outputs
-   assign store_byteen_m[3:0] = {4{lsu_pkt_m.store}} &
-                                (({4{lsu_pkt_m.by}}    & 4'b0001) |
-                                 ({4{lsu_pkt_m.half}}  & 4'b0011) |
-                                 ({4{lsu_pkt_m.word}}  & 4'b1111));
-
-   assign store_byteen_r[3:0] =  {4{lsu_pkt_r.store}} &
-                                 (({4{lsu_pkt_r.by}}    & 4'b0001) |
-                                  ({4{lsu_pkt_r.half}}  & 4'b0011) |
-                                  ({4{lsu_pkt_r.word}}  & 4'b1111));
-
-   assign store_byteen_ext_m[7:0] = {4'b0,store_byteen_m[3:0]} << lsu_addr_m[1:0];      // The packet in m
-   assign store_byteen_ext_r[7:0] = {4'b0,store_byteen_r[3:0]} << lsu_addr_r[1:0];
-
-
-
-   assign dccm_wr_bypass_d_m_lo   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == lsu_addr_m[pt.DCCM_BITS-1:2]) & addr_in_dccm_m;
-   assign dccm_wr_bypass_d_m_hi   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == end_addr_m[pt.DCCM_BITS-1:2]) & addr_in_dccm_m;
-
-   assign dccm_wr_bypass_d_r_lo   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) & addr_in_dccm_r;
-   assign dccm_wr_bypass_d_r_hi   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) & addr_in_dccm_r;
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U1_Plus1_1
-      logic        dccm_wren_Q;
-      logic [31:0] dccm_wr_data_Q;
-      logic        dccm_wr_bypass_d_m_lo_Q, dccm_wr_bypass_d_m_hi_Q;
-      logic [31:0] store_data_pre_hi_r, store_data_pre_lo_r;
-
-      assign {store_data_pre_hi_r[31:0], store_data_pre_lo_r[31:0]} = {32'b0,store_data_r[31:0]} << 8*lsu_addr_r[1:0];
-
-      for (genvar i=0; i<4; i++) begin
-          assign store_data_lo_r[(8*i)+7:(8*i)]   = store_byteen_ext_r[i] ? store_data_pre_lo_r[(8*i)+7:(8*i)] : ((dccm_wren_Q & dccm_wr_bypass_d_m_lo_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_lo_r[(8*i)+7:(8*i)]);
-          assign store_data_hi_r[(8*i)+7:(8*i)]   = store_byteen_ext_r[i+4] ? store_data_pre_hi_r[(8*i)+7:(8*i)] : ((dccm_wren_Q & dccm_wr_bypass_d_m_hi_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_hi_r[(8*i)+7:(8*i)]);
-
-          assign store_datafn_lo_r[(8*i)+7:(8*i)] = store_byteen_ext_r[i] ? store_data_pre_lo_r[(8*i)+7:(8*i)] : ((lsu_stbuf_commit_any & dccm_wr_bypass_d_r_lo) ? stbuf_data_any[(8*i)+7:(8*i)] :
-                                                                                                                    ((dccm_wren_Q & dccm_wr_bypass_d_m_lo_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_lo_r[(8*i)+7:(8*i)]));
-          assign store_datafn_hi_r[(8*i)+7:(8*i)] = store_byteen_ext_r[i+4] ? store_data_pre_hi_r[(8*i)+7:(8*i)] : ((lsu_stbuf_commit_any & dccm_wr_bypass_d_r_hi) ? stbuf_data_any[(8*i)+7:(8*i)] :
-                                                                                                                    ((dccm_wren_Q & dccm_wr_bypass_d_m_hi_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_hi_r[(8*i)+7:(8*i)]));
-      end
-
-      rvdff #(1)   dccm_wren_ff       (.*, .din(lsu_stbuf_commit_any),  .dout(dccm_wren_Q),             .clk(lsu_free_c2_clk));   // ECC load errors writing to dccm shouldn't fwd to stores in pipe
-      rvdffe #(32) dccm_wrdata_ff     (.*, .din(stbuf_data_any[31:0]),  .dout(dccm_wr_data_Q[31:0]),    .en(lsu_stbuf_commit_any | clk_override), .clk(clk));
-      rvdff #(1)   dccm_wrbyp_dm_loff (.*, .din(dccm_wr_bypass_d_m_lo), .dout(dccm_wr_bypass_d_m_lo_Q), .clk(lsu_free_c2_clk));
-      rvdff #(1)   dccm_wrbyp_dm_hiff (.*, .din(dccm_wr_bypass_d_m_hi), .dout(dccm_wr_bypass_d_m_hi_Q), .clk(lsu_free_c2_clk));
-      rvdff #(32)  store_data_rff     (.*, .din(store_data_m[31:0]),    .dout(store_data_r[31:0]),      .clk(lsu_store_c1_r_clk));
-
-   end else begin: L2U1_Plus1_0
-
-      logic [31:0] store_data_hi_m, store_data_lo_m;
-      logic [63:0] store_data_mask;
-      assign {store_data_hi_m[31:0] , store_data_lo_m[31:0]} = {32'b0,store_data_m[31:0]} << 8*lsu_addr_m[1:0];
-
-      for (genvar i=0; i<4; i++) begin
-         assign store_data_hi_r_in[(8*i)+7:(8*i)]  = store_byteen_ext_m[i+4] ? store_data_hi_m[(8*i)+7:(8*i)] :
-                                                                               ((lsu_stbuf_commit_any &  dccm_wr_bypass_d_m_hi)   ? stbuf_data_any[(8*i)+7:(8*i)] : sec_data_hi_m[(8*i)+7:(8*i)]);
-         assign store_data_lo_r_in[(8*i)+7:(8*i)]  = store_byteen_ext_m[i]   ? store_data_lo_m[(8*i)+7:(8*i)] :
-                                                                               ((lsu_stbuf_commit_any &  dccm_wr_bypass_d_m_lo) ? stbuf_data_any[(8*i)+7:(8*i)] : sec_data_lo_m[(8*i)+7:(8*i)]);
-
-         assign store_datafn_lo_r[(8*i)+7:(8*i)]   = (lsu_stbuf_commit_any & dccm_wr_bypass_d_r_lo & ~store_byteen_ext_r[i])   ? stbuf_data_any[(8*i)+7:(8*i)] : store_data_lo_r[(8*i)+7:(8*i)];
-         assign store_datafn_hi_r[(8*i)+7:(8*i)]   = (lsu_stbuf_commit_any & dccm_wr_bypass_d_r_hi & ~store_byteen_ext_r[i+4]) ? stbuf_data_any[(8*i)+7:(8*i)] : store_data_hi_r[(8*i)+7:(8*i)];
-      end // for (genvar i=0; i<BYTE_WIDTH; i++)
-
-      for (genvar i=0; i<4; i++) begin
-         assign store_data_mask[(8*i)+7:(8*i)] = {8{store_byteen_r[i]}};
-      end
-      assign store_data_r[31:0]      = 32'({store_data_hi_r[31:0],store_data_lo_r[31:0]} >> 8*lsu_addr_r[1:0]) & store_data_mask[31:0];
-
-      rvdffe #(pt.DCCM_DATA_WIDTH) store_data_hi_rff (.*, .din(store_data_hi_r_in[pt.DCCM_DATA_WIDTH-1:0]), .dout(store_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en((ldst_dual_m & lsu_pkt_m.valid & lsu_pkt_m.store) | clk_override), .clk(clk));
-      rvdff  #(pt.DCCM_DATA_WIDTH) store_data_lo_rff (.*, .din(store_data_lo_r_in[pt.DCCM_DATA_WIDTH-1:0]), .dout(store_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .clk(lsu_store_c1_r_clk));
-
-   end
-
-   assign dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rd_data_lo[pt.DCCM_DATA_WIDTH-1:0]; // for ld choose dccm_out
-   assign dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rd_data_hi[pt.DCCM_DATA_WIDTH-1:0]; // for ld this is used for ecc
-
-   assign dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0] = dccm_rd_data_lo[pt.DCCM_FDATA_WIDTH-1:pt.DCCM_DATA_WIDTH];
-   assign dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0] = dccm_rd_data_hi[pt.DCCM_FDATA_WIDTH-1:pt.DCCM_DATA_WIDTH];
-
-   // PIC signals. PIC ignores the lower 2 bits of address since PIC memory registers are 32-bits
-   assign picm_wren          = (lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_pic_r & lsu_commit_r) | dma_pic_wen;
-   assign picm_rden          = lsu_pkt_d.valid & lsu_pkt_d.load  & addr_in_pic_d;
-   assign picm_mken          = lsu_pkt_d.valid & lsu_pkt_d.store & addr_in_pic_d;  // Get the mask for stores
-   assign picm_rdaddr[31:0]  = pt.PIC_BASE_ADDR | {{32-pt.PIC_BITS{1'b0}},lsu_addr_d[pt.PIC_BITS-1:0]};
-
-   assign picm_wraddr[31:0]  = pt.PIC_BASE_ADDR | {{32-pt.PIC_BITS{1'b0}},(dma_pic_wen ? dma_mem_addr[pt.PIC_BITS-1:0] : lsu_addr_r[pt.PIC_BITS-1:0])};
-
-   assign picm_wr_data[31:0] = dma_pic_wen ? dma_mem_wdata[31:0] : store_datafn_lo_r[31:0];
-
-   assign picm_mask_data_m[31:0] = picm_rd_data_m[31:0];
-   assign picm_rd_data_m[63:0]   = {picm_rd_data[31:0],picm_rd_data[31:0]};
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      rvdff #(1) dccm_rden_mff (.*, .din(lsu_dccm_rden_d), .dout(lsu_dccm_rden_m), .clk(lsu_c2_m_clk));
-      rvdff #(1) dccm_rden_rff (.*, .din(lsu_dccm_rden_m), .dout(lsu_dccm_rden_r), .clk(lsu_c2_r_clk));
-
-      // ECC correction flops since dccm write happens next cycle
-      // We are writing to dccm in r+1 for ecc correction since fast_int needs to be blocked in decode - 1. We can probably write in r for plus0 configuration since we know ecc error in M.
-      // In that case these (_ff) flops are needed only in plus1 configuration
-      rvdff #(1) ld_double_ecc_error_rff    (.*, .din(lsu_double_ecc_error_r),   .dout(lsu_double_ecc_error_r_ff),   .clk(lsu_free_c2_clk));
-      rvdff #(1) ld_single_ecc_error_hi_rff (.*, .din(ld_single_ecc_error_hi_r_ns), .dout(ld_single_ecc_error_hi_r_ff), .clk(lsu_free_c2_clk));
-      rvdff #(1) ld_single_ecc_error_lo_rff (.*, .din(ld_single_ecc_error_lo_r_ns), .dout(ld_single_ecc_error_lo_r_ff), .clk(lsu_free_c2_clk));
-      rvdffe #(pt.DCCM_BITS) ld_sec_addr_hi_rff (.*, .din(end_addr_r[pt.DCCM_BITS-1:0]), .dout(ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk));
-      rvdffe #(pt.DCCM_BITS) ld_sec_addr_lo_rff (.*, .din(lsu_addr_r[pt.DCCM_BITS-1:0]), .dout(ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk));
-
-   end else begin: Gen_dccm_disable
-      assign lsu_dccm_rden_m = '0;
-      assign lsu_dccm_rden_r = '0;
-
-      assign lsu_double_ecc_error_r_ff = 1'b0;
-      assign ld_single_ecc_error_hi_r_ff = 1'b0;
-      assign ld_single_ecc_error_lo_r_ff = 1'b0;
-      assign ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0] = '0;
-      assign ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0] = '0;
-   end
-
-`ifdef RV_ASSERT_ON
-
-   // Load single ECC error correction implies commit/dma
-   property ld_single_ecc_error_commit;
-      @(posedge clk) disable iff(~rst_l) (ld_single_ecc_error_r_ff & dccm_wren) |-> ($past(lsu_commit_r | lsu_pkt_r.dma));
-   endproperty
-   assert_ld_single_ecc_error_commit: assert property (ld_single_ecc_error_commit) else
-     $display("No commit or DMA but ECC correction happened");
-
-
-`endif
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_dccm_mem.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_dccm_mem.sv
deleted file mode 100644
index ac4765b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_dccm_mem.sv
+++ /dev/null
@@ -1,351 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DCCM for LSU pipe
-// Comments: Single ported memory
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-
-`define eb1_LOCAL_DCCM_RAM_TEST_PORTS    .TEST1(dccm_ext_in_pkt[i].TEST1),                      \
-                                     .RME(dccm_ext_in_pkt[i].RME),                      \
-                                     .RM(dccm_ext_in_pkt[i].RM),                        \
-                                     .LS(dccm_ext_in_pkt[i].LS),                        \
-                                     .DS(dccm_ext_in_pkt[i].DS),                        \
-                                     .SD(dccm_ext_in_pkt[i].SD),                        \
-                                     .TEST_RNM(dccm_ext_in_pkt[i].TEST_RNM),            \
-                                     .BC1(dccm_ext_in_pkt[i].BC1),                      \
-                                     .BC2(dccm_ext_in_pkt[i].BC2),                      \
-
-
-
-module eb1_lsu_dccm_mem
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-`ifdef USE_POWER_PINS
-   input logic 	vccd1,
-   input logic		vssd1,
- `endif
-   input logic         clk,                                             // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic         active_clk,                                      // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic         rst_l,                                           // reset, active low
-   input logic         clk_override,                                    // Override non-functional clock gating
-
-   input logic         dccm_wren,                                       // write enable
-   input logic         dccm_rden,                                       // read enable
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_lo,                     // write address
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_hi,                     // write address
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_lo,                     // read address
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_hi,                     // read address for the upper bank in case of a misaligned access
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,              // write data
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,              // write data
-   input eb1_dccm_ext_in_pkt_t  [pt.DCCM_NUM_BANKS-1:0] dccm_ext_in_pkt,    // the dccm packet from the soc
-
-   output logic [pt.DCCM_FDATA_WIDTH-1:0] dccm_rd_data_lo,              // read data from the lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0] dccm_rd_data_hi,              // read data from the hi bank
-
-   input  logic         scan_mode
-);
-
-
-   localparam DCCM_WIDTH_BITS = $clog2(pt.DCCM_BYTE_WIDTH);
-   localparam DCCM_INDEX_BITS = (pt.DCCM_BITS - pt.DCCM_BANK_BITS - pt.DCCM_WIDTH_BITS);
-   localparam DCCM_INDEX_DEPTH = ((pt.DCCM_SIZE)*1024)/((pt.DCCM_BYTE_WIDTH)*(pt.DCCM_NUM_BANKS));  // Depth of memory bank
-
-   logic [pt.DCCM_NUM_BANKS-1:0]                                        wren_bank;
-   logic [pt.DCCM_NUM_BANKS-1:0]                                        rden_bank;
-   logic [pt.DCCM_NUM_BANKS-1:0] [pt.DCCM_BITS-1:(pt.DCCM_BANK_BITS+2)] addr_bank;
-   logic [pt.DCCM_BITS-1:(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)]           rd_addr_even, rd_addr_odd;
-   logic                                                                rd_unaligned, wr_unaligned;
-   logic [pt.DCCM_NUM_BANKS-1:0] [pt.DCCM_FDATA_WIDTH-1:0]              dccm_bank_dout;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]                                      wrdata;
-
-   logic [pt.DCCM_NUM_BANKS-1:0][pt.DCCM_FDATA_WIDTH-1:0]               wr_data_bank;
-
-   logic [(DCCM_WIDTH_BITS+pt.DCCM_BANK_BITS-1):DCCM_WIDTH_BITS]        dccm_rd_addr_lo_q;
-   logic [(DCCM_WIDTH_BITS+pt.DCCM_BANK_BITS-1):DCCM_WIDTH_BITS]        dccm_rd_addr_hi_q;
-
-   logic [pt.DCCM_NUM_BANKS-1:0]            dccm_clken;
-
-   assign rd_unaligned = (dccm_rd_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] != dccm_rd_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]);
-   assign wr_unaligned = (dccm_wr_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] != dccm_wr_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]);
-
-   // Align the read data
-   assign dccm_rd_data_lo[pt.DCCM_FDATA_WIDTH-1:0]  = dccm_bank_dout[dccm_rd_addr_lo_q[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]][pt.DCCM_FDATA_WIDTH-1:0];
-   assign dccm_rd_data_hi[pt.DCCM_FDATA_WIDTH-1:0]  = dccm_bank_dout[dccm_rd_addr_hi_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]][pt.DCCM_FDATA_WIDTH-1:0];
-
-
-   // 8 Banks, 16KB each (2048 x 72)
-   for (genvar i=0; i<pt.DCCM_NUM_BANKS; i++) begin: mem_bank
-      assign  wren_bank[i]        = dccm_wren & ((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) | (dccm_wr_addr_lo[2+:pt.DCCM_BANK_BITS] == i));
-      assign  rden_bank[i]        = dccm_rden & ((dccm_rd_addr_hi[2+:pt.DCCM_BANK_BITS] == i) | (dccm_rd_addr_lo[2+:pt.DCCM_BANK_BITS] == i));
-      assign  addr_bank[i][(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] = wren_bank[i] ? (((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & wr_unaligned) ?
-                                                                                                        dccm_wr_addr_hi[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] :
-                                                                                                        dccm_wr_addr_lo[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS])  :
-                                                                                                  (((dccm_rd_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & rd_unaligned) ?
-                                                                                                        dccm_rd_addr_hi[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] :
-                                                                                                        dccm_rd_addr_lo[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS]);
-
-      assign wr_data_bank[i]     = ((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & wr_unaligned) ? dccm_wr_data_hi[pt.DCCM_FDATA_WIDTH-1:0] : dccm_wr_data_lo[pt.DCCM_FDATA_WIDTH-1:0];
-
-      // clock gating section
-      assign  dccm_clken[i] = (wren_bank[i] | rden_bank[i] | clk_override) ;
-      // end clock gating section
-
-`ifdef VERILATOR
-
-       /* eb1_ram #(DCCM_INDEX_DEPTH,39)  ram (
-                                  // Primary ports
-                                  .ME(dccm_clken[i]),
-                                  .CLK(clk),
-                                  .WE(wren_bank[i]),
-                                  .ADR(addr_bank[i]),
-                                  .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .ROP ( ),
-                                  // These are used by SoC
-                                  `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                  .*
-                                  );
-            
-              */                    
-                                  sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-                                  					`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~dccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(wr_data_bank[i]),
-									.dout0(dccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-    				   );
-
-`else
-
-      if (DCCM_INDEX_DEPTH == 32768) begin : dccm
-         ram_32768x39  dccm_bank (
-                                  // Primary ports
-                                  .ME(dccm_clken[i]),
-                                  .CLK(clk),
-                                  .WE(wren_bank[i]),
-                                  .ADR(addr_bank[i]),
-                                  .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .ROP ( ),
-                                  // These are used by SoC
-                                  `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                  .*
-                                  );
-      end
-      else if (DCCM_INDEX_DEPTH == 16384) begin : dccm
-         ram_16384x39  dccm_bank (
-                                  // Primary ports
-                                  .ME(dccm_clken[i]),
-                                  .CLK(clk),
-                                  .WE(wren_bank[i]),
-                                  .ADR(addr_bank[i]),
-                                  .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .ROP ( ),
-                                  // These are used by SoC
-                                  `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                  .*
-                                  );
-      end
-      else if (DCCM_INDEX_DEPTH == 8192) begin : dccm
-         ram_8192x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 4096) begin : dccm
-         ram_4096x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 3072) begin : dccm
-         ram_3072x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 2048) begin : dccm
-         ram_2048x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 1024) begin : dccm
-         /*ram_1024x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-                                 */
-                                 sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~dccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(wr_data_bank[i]),
-									.dout0(dccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-    				   );
-      end
-      else if (DCCM_INDEX_DEPTH == 512) begin : dccm
-         ram_512x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );
-      end
-      else if (DCCM_INDEX_DEPTH == 256) begin : dccm
-         /*ram_256x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );*/
-                                sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									`ifdef USE_POWER_PINS
-    									.vccd1(vccd1),
-    									.vssd1(vssd1),
-    									`endif
-									.clk0(clk),
-									.csb0(~dccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(wr_data_bank[i][31:0]),
-									.dout0(dccm_bank_dout[i][31:0]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-    				   );
-      end
-      else if (DCCM_INDEX_DEPTH == 128) begin : dccm
-         ram_128x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );
-      end
-`endif
-
-   end : mem_bank
-
-   // Flops
-   rvdff  #(pt.DCCM_BANK_BITS) rd_addr_lo_ff (.*, .din(dccm_rd_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .dout(dccm_rd_addr_lo_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .clk(active_clk));
-   rvdff  #(pt.DCCM_BANK_BITS) rd_addr_hi_ff (.*, .din(dccm_rd_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .dout(dccm_rd_addr_hi_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .clk(active_clk));
-
-`undef eb1_LOCAL_DCCM_RAM_TEST_PORTS
-
-endmodule // eb1_lsu_dccm_mem
-
-
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_ecc.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_ecc.sv
deleted file mode 100644
index c91a01f..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_ecc.sv
+++ /dev/null
@@ -1,241 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Top level file for load store unit
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-module eb1_lsu_ecc
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-(
-   input logic                           clk,                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                           lsu_c2_r_clk,       // clock
-   input logic                           clk_override,       // Override non-functional clock gating
-   input logic                           rst_l,              // reset, active low
-   input logic                           scan_mode,          // scan mode
-
-   input eb1_lsu_pkt_t                  lsu_pkt_m,          // packet in m
-   input eb1_lsu_pkt_t                  lsu_pkt_r,          // packet in r
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  stbuf_data_any,
-
-   input logic                           dec_tlu_core_ecc_disable,  // disables the ecc computation and error flagging
-
-   input logic                           lsu_dccm_rden_r,          // dccm rden
-   input logic                           addr_in_dccm_r,           // address in dccm
-   input logic  [pt.DCCM_BITS-1:0]       lsu_addr_r,               // start address
-   input logic  [pt.DCCM_BITS-1:0]       end_addr_r,               // end address
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_hi_r,          // data from the dccm
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_lo_r,          // data from the dccm
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_hi_r,       // data from the dccm + ecc
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_lo_r,       // data from the dccm + ecc
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_r,            // corrected dccm data R-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r,            // corrected dccm data R-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_r_ff,         // corrected dccm data R+1 stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r_ff,         // corrected dccm data R+1 stage
-
-   input logic                           ld_single_ecc_error_r,     // ld has a single ecc error
-   input logic                           ld_single_ecc_error_r_ff,  // ld has a single ecc error
-   input logic                           lsu_dccm_rden_m,           // dccm rden
-   input logic                           addr_in_dccm_m,            // address in dccm
-   input logic  [pt.DCCM_BITS-1:0]       lsu_addr_m,                // start address
-   input logic  [pt.DCCM_BITS-1:0]       end_addr_m,                // end address
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_hi_m,           // raw data from mem
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_lo_m,           // raw data from mem
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_hi_m,        // ecc read out from mem
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_lo_m,        // ecc read out from mem
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_m,             // corrected dccm data M-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_m,             // corrected dccm data M-stage
-
-   input logic                           dma_dccm_wen,              // Perform DMA writes only for word/dword
-   input logic  [31:0]                   dma_dccm_wdata_lo,         // Shifted dma data to lower bits to make it consistent to lsu stores
-   input logic  [31:0]                   dma_dccm_wdata_hi,         // Shifted dma data to lower bits to make it consistent to lsu stores
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  dma_dccm_wdata_ecc_hi,     // ECC bits for the DMA wdata
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  dma_dccm_wdata_ecc_lo,     // ECC bits for the DMA wdata
-
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  stbuf_ecc_any,             // Encoded data with ECC bits
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_hi_r_ff,      // Encoded data with ECC bits
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_lo_r_ff,      // Encoded data with ECC bits
-
-   output logic                          single_ecc_error_hi_r,                   // sec detected
-   output logic                          single_ecc_error_lo_r,                   // sec detected on lower dccm bank
-   output logic                          lsu_single_ecc_error_r,                  // or of the 2
-   output logic                          lsu_double_ecc_error_r,                   // double error detected
-
-   output logic                          lsu_single_ecc_error_m,                  // or of the 2
-   output logic                          lsu_double_ecc_error_m                   // double error detected
-
- );
-
-   logic                           is_ldst_r;
-   logic                           is_ldst_hi_any, is_ldst_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  dccm_wdata_hi_any, dccm_wdata_lo_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  dccm_wdata_ecc_hi_any, dccm_wdata_ecc_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  dccm_rdata_hi_any, dccm_rdata_lo_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]   dccm_data_ecc_hi_any, dccm_data_ecc_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  sec_data_hi_any, sec_data_lo_any;
-   logic                           single_ecc_error_hi_any, single_ecc_error_lo_any;
-   logic                           double_ecc_error_hi_any, double_ecc_error_lo_any;
-
-   logic                           double_ecc_error_hi_m, double_ecc_error_lo_m;
-   logic                           double_ecc_error_hi_r, double_ecc_error_lo_r;
-
-   logic [6:0]                     ecc_out_hi_nc, ecc_out_lo_nc;
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic        ldst_dual_m, ldst_dual_r;
-      logic        is_ldst_m;
-      logic        is_ldst_hi_r, is_ldst_lo_r;
-
-      assign ldst_dual_r                                 = (lsu_addr_r[2] != end_addr_r[2]);
-      assign is_ldst_r                                   = lsu_pkt_r.valid & (lsu_pkt_r.load | lsu_pkt_r.store) & addr_in_dccm_r & lsu_dccm_rden_r;
-      assign is_ldst_lo_r                                = is_ldst_r & ~dec_tlu_core_ecc_disable;
-      assign is_ldst_hi_r                                = is_ldst_r & ldst_dual_r & ~dec_tlu_core_ecc_disable;   // Always check the ECC Hi/Lo for DMA since we don't align for DMA
-
-      assign is_ldst_hi_any                              = is_ldst_hi_r;
-      assign dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_hi_r[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_hi_r[pt.DCCM_ECC_WIDTH-1:0];
-      assign is_ldst_lo_any                              = is_ldst_lo_r;
-      assign dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_lo_r[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_lo_r[pt.DCCM_ECC_WIDTH-1:0];
-
-      assign sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign single_ecc_error_hi_r                       = single_ecc_error_hi_any;
-      assign double_ecc_error_hi_r                       = double_ecc_error_hi_any;
-      assign sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign single_ecc_error_lo_r                       = single_ecc_error_lo_any;
-      assign double_ecc_error_lo_r                       = double_ecc_error_lo_any;
-
-      assign lsu_single_ecc_error_r                      = single_ecc_error_hi_r | single_ecc_error_lo_r;
-      assign lsu_double_ecc_error_r                      = double_ecc_error_hi_r | double_ecc_error_lo_r;
-
-   end else begin: L2U_Plus1_0
-
-      logic        ldst_dual_m;
-      logic        is_ldst_m;
-      logic        is_ldst_hi_m, is_ldst_lo_m;
-
-      assign ldst_dual_m                                 = (lsu_addr_m[2] != end_addr_m[2]);
-      assign is_ldst_m                                   = lsu_pkt_m.valid & (lsu_pkt_m.load | lsu_pkt_m.store) & addr_in_dccm_m & lsu_dccm_rden_m;
-      assign is_ldst_lo_m                                = is_ldst_m & ~dec_tlu_core_ecc_disable;
-      assign is_ldst_hi_m                                = is_ldst_m & (ldst_dual_m | lsu_pkt_m.dma) & ~dec_tlu_core_ecc_disable;   // Always check the ECC Hi/Lo for DMA since we don't align for DMA
-
-      assign is_ldst_hi_any                              = is_ldst_hi_m;
-      assign dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0];
-      assign is_ldst_lo_any                              = is_ldst_lo_m;
-      assign dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0];
-
-      assign sec_data_hi_m[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign double_ecc_error_hi_m                       = double_ecc_error_hi_any;
-      assign sec_data_lo_m[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign double_ecc_error_lo_m                       = double_ecc_error_lo_any;
-
-      assign lsu_single_ecc_error_m                      = single_ecc_error_hi_any | single_ecc_error_lo_any;
-      assign lsu_double_ecc_error_m                      = double_ecc_error_hi_m   | double_ecc_error_lo_m;
-
-      // Flops
-      rvdff  #(1) lsu_single_ecc_err_r    (.din(lsu_single_ecc_error_m), .dout(lsu_single_ecc_error_r), .clk(lsu_c2_r_clk), .*);
-      rvdff  #(1) lsu_double_ecc_err_r    (.din(lsu_double_ecc_error_m), .dout(lsu_double_ecc_error_r), .clk(lsu_c2_r_clk), .*);
-      rvdff  #(.WIDTH(1)) ldst_sec_lo_rff (.din(single_ecc_error_lo_any),  .dout(single_ecc_error_lo_r),  .clk(lsu_c2_r_clk), .*);
-      rvdff  #(.WIDTH(1)) ldst_sec_hi_rff (.din(single_ecc_error_hi_any),  .dout(single_ecc_error_hi_r),  .clk(lsu_c2_r_clk), .*);
-      rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_hi_rff (.din(sec_data_hi_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_single_ecc_error_m | clk_override), .*);
-      rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_lo_rff (.din(sec_data_lo_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_single_ecc_error_m | clk_override), .*);
-
-   end
-
-   // Logic for ECC generation during write
-   assign dccm_wdata_lo_any[pt.DCCM_DATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0] : (dma_dccm_wen ? dma_dccm_wdata_lo[pt.DCCM_DATA_WIDTH-1:0] : stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]);
-   assign dccm_wdata_hi_any[pt.DCCM_DATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0] : (dma_dccm_wen ? dma_dccm_wdata_hi[pt.DCCM_DATA_WIDTH-1:0] : 32'h0);
-
-   assign sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0]  = dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0]  = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0]         = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign dma_dccm_wdata_ecc_hi[pt.DCCM_ECC_WIDTH-1:0] = dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign dma_dccm_wdata_ecc_lo[pt.DCCM_ECC_WIDTH-1:0] = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-
-   // Instantiate ECC blocks
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-
-      //Detect/Repair for Hi
-      rvecc_decode lsu_ecc_decode_hi (
-         // Inputs
-         .en(is_ldst_hi_any),
-         .sed_ded (1'b0),    // 1 : means only detection
-         .din(dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_in(dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0]),
-         // Outputs
-         .dout(sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_out (ecc_out_hi_nc[6:0]),
-         .single_ecc_error(single_ecc_error_hi_any),
-         .double_ecc_error(double_ecc_error_hi_any),
-         .*
-      );
-
-      //Detect/Repair for Lo
-      rvecc_decode lsu_ecc_decode_lo (
-         // Inputs
-         .en(is_ldst_lo_any),
-         .sed_ded (1'b0),    // 1 : means only detection
-         .din(dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0] ),
-         .ecc_in(dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0]),
-         // Outputs
-         .dout(sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_out (ecc_out_lo_nc[6:0]),
-         .single_ecc_error(single_ecc_error_lo_any),
-         .double_ecc_error(double_ecc_error_lo_any),
-         .*
-      );
-
-      rvecc_encode lsu_ecc_encode_hi (
-         //Inputs
-         .din(dccm_wdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         //Outputs
-         .ecc_out(dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0]),
-         .*
-      );
-      rvecc_encode lsu_ecc_encode_lo (
-         //Inputs
-         .din(dccm_wdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]),
-         //Outputs
-         .ecc_out(dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0]),
-         .*
-      );
-   end else begin: Gen_dccm_disable // block: Gen_dccm_enable
-      assign sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0] = '0;
-      assign sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0] = '0;
-      assign single_ecc_error_hi_any = '0;
-      assign double_ecc_error_hi_any = '0;
-      assign single_ecc_error_lo_any = '0;
-      assign double_ecc_error_lo_any = '0;
-   end
-
-   rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_hi_rplus1ff (.din(sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk), .*);
-   rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_lo_rplus1ff (.din(sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk), .*);
-
-
-endmodule // eb1_lsu_ecc
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_lsc_ctl.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_lsc_ctl.sv
deleted file mode 100644
index 7b0517b..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_lsc_ctl.sv
+++ /dev/null
@@ -1,341 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: LSU control
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-module eb1_lsu_lsc_ctl
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   input logic                rst_l,                     // reset, active low
-   input logic                clk_override,              // Override non-functional clock gating
-   input logic                clk,                       // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-
-   // clocks per pipe
-   input logic                lsu_c1_m_clk,
-   input logic                lsu_c1_r_clk,
-   input logic                lsu_c2_m_clk,
-   input logic                lsu_c2_r_clk,
-   input logic                lsu_store_c1_m_clk,
-
-   input logic [31:0]         lsu_ld_data_r,             // Load data R-stage
-   input logic [31:0]         lsu_ld_data_corr_r,        // ECC corrected data R-stage
-   input logic                lsu_single_ecc_error_r,    // ECC single bit error R-stage
-   input logic                lsu_double_ecc_error_r,    // ECC double bit error R-stage
-
-   input logic [31:0]         lsu_ld_data_m,             // Load data M-stage
-   input logic                lsu_single_ecc_error_m,    // ECC single bit error M-stage
-   input logic                lsu_double_ecc_error_m,    // ECC double bit error M-stage
-
-   input logic                flush_m_up,                // Flush M and D stage
-   input logic                flush_r,                   // Flush R-stage
-   input logic                ldst_dual_d,               // load/store is unaligned at 32 bit boundary D-stage
-   input logic                ldst_dual_m,               // load/store is unaligned at 32 bit boundary M-stage
-   input logic                ldst_dual_r,               // load/store is unaligned at 32 bit boundary R-stage
-
-   input logic [31:0]         exu_lsu_rs1_d,             // address
-   input logic [31:0]         exu_lsu_rs2_d,             // store data
-
-   input eb1_lsu_pkt_t       lsu_p,                     // lsu control packet
-   input logic                dec_lsu_valid_raw_d,       // Raw valid for address computation
-   input logic [11:0]         dec_lsu_offset_d,          // 12b offset for load/store addresses
-
-   input  logic [31:0]        picm_mask_data_m,          // PIC data M-stage
-   input  logic [31:0]        bus_read_data_m,           // the bus return data
-   output logic [31:0]        lsu_result_m,              // lsu load data
-   output logic [31:0]        lsu_result_corr_r,         // This is the ECC corrected data going to RF
-   // lsu address down the pipe
-   output logic [31:0]        lsu_addr_d,
-   output logic [31:0]        lsu_addr_m,
-   output logic [31:0]        lsu_addr_r,
-   // lsu address down the pipe - needed to check unaligned
-   output logic [31:0]        end_addr_d,
-   output logic [31:0]        end_addr_m,
-   output logic [31:0]        end_addr_r,
-   // store data down the pipe
-   output logic [31:0]        store_data_m,
-
-   input  logic [31:0]         dec_tlu_mrac_ff,          // CSR for memory region control
-   output logic                lsu_exc_m,                // Access or misaligned fault
-   output logic                is_sideeffects_m,         // is sideffects space
-   output logic                lsu_commit_r,             // lsu instruction in r commits
-   output logic                lsu_single_ecc_error_incr,// LSU inc SB error counter
-   output eb1_lsu_error_pkt_t lsu_error_pkt_r,          // lsu exception packet
-
-   output logic [31:1]         lsu_fir_addr,             // fast interrupt address
-   output logic [1:0]          lsu_fir_error,            // Error during fast interrupt lookup
-
-   // address in dccm/pic/external per pipe stage
-   output logic               addr_in_dccm_d,
-   output logic               addr_in_dccm_m,
-   output logic               addr_in_dccm_r,
-
-   output logic               addr_in_pic_d,
-   output logic               addr_in_pic_m,
-   output logic               addr_in_pic_r,
-
-   output logic               addr_external_m,
-
-   // DMA slave
-   input logic                dma_dccm_req,
-   input logic [31:0]         dma_mem_addr,
-   input logic [2:0]          dma_mem_sz,
-   input logic                dma_mem_write,
-   input logic [63:0]         dma_mem_wdata,
-
-   // Store buffer related signals
-   output eb1_lsu_pkt_t      lsu_pkt_d,
-   output eb1_lsu_pkt_t      lsu_pkt_m,
-   output eb1_lsu_pkt_t      lsu_pkt_r,
-
-   input  logic               scan_mode                  // Scan mode
-
-   );
-
-   logic [31:3]        end_addr_pre_m, end_addr_pre_r;
-   logic [31:0]        full_addr_d;
-   logic [31:0]        full_end_addr_d;
-   logic [31:0]        lsu_rs1_d;
-   logic [11:0]        lsu_offset_d;
-   logic [31:0]        rs1_d;
-   logic [11:0]        offset_d;
-   logic [12:0]        end_addr_offset_d;
-   logic [2:0]         addr_offset_d;
-
-   logic [63:0]        dma_mem_wdata_shifted;
-   logic               addr_external_d;
-   logic               addr_external_r;
-   logic               access_fault_d, misaligned_fault_d;
-   logic               access_fault_m, misaligned_fault_m;
-
-   logic               fir_dccm_access_error_d, fir_nondccm_access_error_d;
-   logic               fir_dccm_access_error_m, fir_nondccm_access_error_m;
-
-   logic [3:0]         exc_mscause_d, exc_mscause_m;
-   logic [31:0]        rs1_d_raw;
-   logic [31:0]        store_data_d, store_data_pre_m, store_data_m_in;
-   logic [31:0]        bus_read_data_r;
-
-   eb1_lsu_pkt_t           dma_pkt_d;
-   eb1_lsu_pkt_t           lsu_pkt_m_in, lsu_pkt_r_in;
-   eb1_lsu_error_pkt_t     lsu_error_pkt_m;
-
-
-   // Premux the rs1/offset for dma
-   assign lsu_rs1_d[31:0]    = dec_lsu_valid_raw_d ? exu_lsu_rs1_d[31:0] : dma_mem_addr[31:0];
-   assign lsu_offset_d[11:0] = dec_lsu_offset_d[11:0] & {12{dec_lsu_valid_raw_d}};
-   assign rs1_d_raw[31:0]    = lsu_rs1_d[31:0];
-   assign offset_d[11:0]     = lsu_offset_d[11:0];
-
-   assign rs1_d[31:0] = (lsu_pkt_d.load_ldst_bypass_d) ? lsu_result_m[31:0] : rs1_d_raw[31:0];
-
-   // generate the ls address
-   rvlsadder   lsadder  (.rs1(rs1_d[31:0]),
-                       .offset(offset_d[11:0]),
-                       .dout(full_addr_d[31:0])
-                       );
-
-   // Module to generate the memory map of the address
-   eb1_lsu_addrcheck addrcheck (
-              .start_addr_d(full_addr_d[31:0]),
-              .end_addr_d(full_end_addr_d[31:0]),
-              .rs1_region_d(rs1_d[31:28]),
-              .*
-  );
-
-   // Calculate start/end address for load/store
-   assign addr_offset_d[2:0]      = ({3{lsu_pkt_d.half}} & 3'b01) | ({3{lsu_pkt_d.word}} & 3'b11) | ({3{lsu_pkt_d.dword}} & 3'b111);
-   assign end_addr_offset_d[12:0] = {offset_d[11],offset_d[11:0]} + {9'b0,addr_offset_d[2:0]};
-   assign full_end_addr_d[31:0]   = rs1_d[31:0] + {{19{end_addr_offset_d[12]}},end_addr_offset_d[12:0]};
-   assign end_addr_d[31:0]        = full_end_addr_d[31:0];
-   assign lsu_exc_m               = access_fault_m | misaligned_fault_m;
-
-   // Goes to TLU to increment the ECC error counter
-   assign lsu_single_ecc_error_incr = (lsu_single_ecc_error_r & ~lsu_double_ecc_error_r) & (lsu_commit_r | lsu_pkt_r.dma) & lsu_pkt_r.valid;
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic               access_fault_r, misaligned_fault_r;
-      logic [3:0]         exc_mscause_r;
-      logic               fir_dccm_access_error_r, fir_nondccm_access_error_r;
-
-      // Generate exception packet
-      assign lsu_error_pkt_r.exc_valid = (access_fault_r | misaligned_fault_r | lsu_double_ecc_error_r) & lsu_pkt_r.valid & ~lsu_pkt_r.dma & ~lsu_pkt_r.fast_int;
-      assign lsu_error_pkt_r.single_ecc_error = lsu_single_ecc_error_r & ~lsu_error_pkt_r.exc_valid & ~lsu_pkt_r.dma;
-      assign lsu_error_pkt_r.inst_type = lsu_pkt_r.store;
-      assign lsu_error_pkt_r.exc_type  = ~misaligned_fault_r;
-      assign lsu_error_pkt_r.mscause[3:0] = (lsu_double_ecc_error_r & ~misaligned_fault_r & ~access_fault_r) ? 4'h1 : exc_mscause_r[3:0];
-      assign lsu_error_pkt_r.addr[31:0] = lsu_addr_r[31:0];
-
-      assign lsu_fir_error[1:0] = fir_nondccm_access_error_r ? 2'b11 : (fir_dccm_access_error_r ? 2'b10 : ((lsu_pkt_r.fast_int & lsu_double_ecc_error_r) ? 2'b01 : 2'b00));
-
-      rvdff #(1) access_fault_rff             (.din(access_fault_m),             .dout(access_fault_r),             .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) misaligned_fault_rff         (.din(misaligned_fault_m),         .dout(misaligned_fault_r),         .clk(lsu_c1_r_clk), .*);
-      rvdff #(4) exc_mscause_rff              (.din(exc_mscause_m[3:0]),         .dout(exc_mscause_r[3:0]),         .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) fir_dccm_access_error_mff    (.din(fir_dccm_access_error_m),    .dout(fir_dccm_access_error_r),    .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) fir_nondccm_access_error_mff (.din(fir_nondccm_access_error_m), .dout(fir_nondccm_access_error_r), .clk(lsu_c1_r_clk), .*);
-
-   end else begin: L2U_Plus1_0
-      logic [1:0] lsu_fir_error_m;
-
-      // Generate exception packet
-      assign lsu_error_pkt_m.exc_valid = (access_fault_m | misaligned_fault_m | lsu_double_ecc_error_m) & lsu_pkt_m.valid & ~lsu_pkt_m.dma & ~lsu_pkt_m.fast_int & ~flush_m_up;
-      assign lsu_error_pkt_m.single_ecc_error = lsu_single_ecc_error_m & ~lsu_error_pkt_m.exc_valid & ~lsu_pkt_m.dma;
-      assign lsu_error_pkt_m.inst_type = lsu_pkt_m.store;
-      assign lsu_error_pkt_m.exc_type  = ~misaligned_fault_m;
-      assign lsu_error_pkt_m.mscause[3:0] = (lsu_double_ecc_error_m & ~misaligned_fault_m & ~access_fault_m) ? 4'h1 : exc_mscause_m[3:0];
-      assign lsu_error_pkt_m.addr[31:0] = lsu_addr_m[31:0];
-
-      assign lsu_fir_error_m[1:0] = fir_nondccm_access_error_m ? 2'b11 : (fir_dccm_access_error_m ? 2'b10 : ((lsu_pkt_m.fast_int & lsu_double_ecc_error_m) ? 2'b01 : 2'b00));
-
-      rvdff  #(1)                             lsu_exc_valid_rff       (.*, .din(lsu_error_pkt_m.exc_valid),                        .dout(lsu_error_pkt_r.exc_valid),                        .clk(lsu_c2_r_clk));
-      rvdff  #(1)                             lsu_single_ecc_error_rff(.*, .din(lsu_error_pkt_m.single_ecc_error),                 .dout(lsu_error_pkt_r.single_ecc_error),                 .clk(lsu_c2_r_clk));
-      rvdffe #($bits(eb1_lsu_error_pkt_t)-2) lsu_error_pkt_rff       (.*, .din(lsu_error_pkt_m[$bits(eb1_lsu_error_pkt_t)-1:2]), .dout(lsu_error_pkt_r[$bits(eb1_lsu_error_pkt_t)-1:2]), .en(lsu_error_pkt_m.exc_valid | lsu_error_pkt_m.single_ecc_error | clk_override));
-      rvdff #(2)                              lsu_fir_error_rff       (.*, .din(lsu_fir_error_m[1:0]),                             .dout(lsu_fir_error[1:0]),                               .clk(lsu_c2_r_clk));
-   end
-
-   //Create DMA packet
-   always_comb begin
-      dma_pkt_d = '0;
-      dma_pkt_d.valid   = dma_dccm_req;
-      dma_pkt_d.dma     = 1'b1;
-      dma_pkt_d.store   = dma_mem_write;
-      dma_pkt_d.load    = ~dma_mem_write;
-      dma_pkt_d.by      = (dma_mem_sz[2:0] == 3'b0);
-      dma_pkt_d.half    = (dma_mem_sz[2:0] == 3'b1);
-      dma_pkt_d.word    = (dma_mem_sz[2:0] == 3'b10);
-      dma_pkt_d.dword   = (dma_mem_sz[2:0] == 3'b11);
-   end
-
-   always_comb begin
-      lsu_pkt_d = dec_lsu_valid_raw_d ? lsu_p : dma_pkt_d;
-      lsu_pkt_m_in = lsu_pkt_d;
-      lsu_pkt_r_in = lsu_pkt_m;
-
-      lsu_pkt_d.valid = (lsu_p.valid & ~(flush_m_up & ~lsu_p.fast_int)) | dma_dccm_req;
-      lsu_pkt_m_in.valid = lsu_pkt_d.valid & ~(flush_m_up & ~lsu_pkt_d.dma);
-      lsu_pkt_r_in.valid = lsu_pkt_m.valid & ~(flush_m_up & ~lsu_pkt_m.dma) ;
-   end
-
-   // C2 clock for valid and C1 for other bits of packet
-   rvdff #(1) lsu_pkt_vldmff (.*, .din(lsu_pkt_m_in.valid), .dout(lsu_pkt_m.valid), .clk(lsu_c2_m_clk));
-   rvdff #(1) lsu_pkt_vldrff (.*, .din(lsu_pkt_r_in.valid), .dout(lsu_pkt_r.valid), .clk(lsu_c2_r_clk));
-
-   rvdff #($bits(eb1_lsu_pkt_t)-1) lsu_pkt_mff (.*, .din(lsu_pkt_m_in[$bits(eb1_lsu_pkt_t)-1:1]), .dout(lsu_pkt_m[$bits(eb1_lsu_pkt_t)-1:1]), .clk(lsu_c1_m_clk));
-   rvdff #($bits(eb1_lsu_pkt_t)-1) lsu_pkt_rff (.*, .din(lsu_pkt_r_in[$bits(eb1_lsu_pkt_t)-1:1]), .dout(lsu_pkt_r[$bits(eb1_lsu_pkt_t)-1:1]), .clk(lsu_c1_r_clk));
-
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U1_Plus1_1
-      logic [31:0] lsu_ld_datafn_r, lsu_ld_datafn_corr_r;
-
-      assign lsu_ld_datafn_r[31:0]  = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_r[31:0];
-      assign lsu_ld_datafn_corr_r[31:0]  = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_corr_r[31:0];
-
-      // this is really R stage signal
-      assign lsu_result_m[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_r[7:0]}) |
-                                  ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_r[15:0]}) |
-                                  ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_r[7]}}, lsu_ld_datafn_r[7:0]}) |
-                                  ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_r[15]}},lsu_ld_datafn_r[15:0]}) |
-                                  ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_r[31:0]);
-
-      // this signal is used for gpr update
-      assign lsu_result_corr_r[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_corr_r[7]}}, lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_corr_r[15]}},lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_corr_r[31:0]);
-
-   end else begin: L2U1_Plus1_0 // block: L2U1_Plus1_1
-      logic [31:0] lsu_ld_datafn_m, lsu_ld_datafn_corr_r;
-
-      assign lsu_ld_datafn_m[31:0] = addr_external_m ? bus_read_data_m[31:0] : lsu_ld_data_m[31:0];
-      assign lsu_ld_datafn_corr_r[31:0] = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_corr_r[31:0];
-
-      // this result must look at prior stores and merge them in
-      assign lsu_result_m[31:0] = ({32{ lsu_pkt_m.unsign & lsu_pkt_m.by  }} & {24'b0,lsu_ld_datafn_m[7:0]}) |
-                                  ({32{ lsu_pkt_m.unsign & lsu_pkt_m.half}} & {16'b0,lsu_ld_datafn_m[15:0]}) |
-                                  ({32{~lsu_pkt_m.unsign & lsu_pkt_m.by  }} & {{24{  lsu_ld_datafn_m[7]}}, lsu_ld_datafn_m[7:0]}) |
-                                  ({32{~lsu_pkt_m.unsign & lsu_pkt_m.half}} & {{16{  lsu_ld_datafn_m[15]}},lsu_ld_datafn_m[15:0]}) |
-                                  ({32{lsu_pkt_m.word}}                     & lsu_ld_datafn_m[31:0]);
-
-      // this signal is used for gpr update
-      assign lsu_result_corr_r[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_corr_r[7]}}, lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_corr_r[15]}},lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_corr_r[31:0]);
-   end
-
-   // Fast interrupt address
-   assign lsu_fir_addr[31:1]    = lsu_ld_data_corr_r[31:1];
-
-   // absence load/store all 0's
-   assign lsu_addr_d[31:0] = full_addr_d[31:0];
-
-   // Interrupt as a flush source allows the WB to occur
-   assign lsu_commit_r = lsu_pkt_r.valid & (lsu_pkt_r.store | lsu_pkt_r.load) & ~flush_r & ~lsu_pkt_r.dma;
-
-   assign dma_mem_wdata_shifted[63:0] = dma_mem_wdata[63:0] >> {dma_mem_addr[2:0], 3'b000};   // Shift the dma data to lower bits to make it consistent to lsu stores
-   assign store_data_d[31:0] = dma_dccm_req ? dma_mem_wdata_shifted[31:0] : exu_lsu_rs2_d[31:0];  // Write to PIC still happens in r stage
-
-   assign store_data_m_in[31:0] = (lsu_pkt_d.store_data_bypass_d) ? lsu_result_m[31:0] : store_data_d[31:0];
-
-   assign store_data_m[31:0] = (picm_mask_data_m[31:0] | {32{~addr_in_pic_m}}) & ((lsu_pkt_m.store_data_bypass_m) ? lsu_result_m[31:0] : store_data_pre_m[31:0]);
-
-
-   rvdff #(32)  sdmff (.*, .din(store_data_m_in[31:0]), .dout(store_data_pre_m[31:0]),                       .clk(lsu_store_c1_m_clk));
-
-   rvdff #(32) samff (.*, .din(lsu_addr_d[31:0]), .dout(lsu_addr_m[31:0]), .clk(lsu_c1_m_clk));
-   rvdff #(32) sarff (.*, .din(lsu_addr_m[31:0]), .dout(lsu_addr_r[31:0]), .clk(lsu_c1_r_clk));
-
-   assign end_addr_m[31:3] = ldst_dual_m ? end_addr_pre_m[31:3] : lsu_addr_m[31:3];       // This is for power saving
-   assign end_addr_r[31:3] = ldst_dual_r ? end_addr_pre_r[31:3] : lsu_addr_r[31:3];       // This is for power saving
-
-   rvdffe #(29) end_addr_hi_mff (.*, .din(end_addr_d[31:3]), .dout(end_addr_pre_m[31:3]), .en((lsu_pkt_d.valid & ldst_dual_d) | clk_override));
-   rvdffe #(29) end_addr_hi_rff (.*, .din(end_addr_m[31:3]), .dout(end_addr_pre_r[31:3]), .en((lsu_pkt_m.valid & ldst_dual_m) | clk_override));
-
-   rvdff #(3)  end_addr_lo_mff (.*, .din(end_addr_d[2:0]), .dout(end_addr_m[2:0]), .clk(lsu_c1_m_clk));
-   rvdff #(3)  end_addr_lo_rff (.*, .din(end_addr_m[2:0]), .dout(end_addr_r[2:0]), .clk(lsu_c1_r_clk));
-
-   rvdff #(1) addr_in_dccm_mff(.din(addr_in_dccm_d), .dout(addr_in_dccm_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_in_dccm_rff(.din(addr_in_dccm_m), .dout(addr_in_dccm_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) addr_in_pic_mff(.din(addr_in_pic_d), .dout(addr_in_pic_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_in_pic_rff(.din(addr_in_pic_m), .dout(addr_in_pic_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) addr_external_mff(.din(addr_external_d), .dout(addr_external_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_external_rff(.din(addr_external_m), .dout(addr_external_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) access_fault_mff     (.din(access_fault_d),     .dout(access_fault_m),     .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) misaligned_fault_mff (.din(misaligned_fault_d), .dout(misaligned_fault_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(4) exc_mscause_mff      (.din(exc_mscause_d[3:0]), .dout(exc_mscause_m[3:0]), .clk(lsu_c1_m_clk), .*);
-
-   rvdff #(1) fir_dccm_access_error_mff    (.din(fir_dccm_access_error_d),    .dout(fir_dccm_access_error_m),    .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) fir_nondccm_access_error_mff (.din(fir_nondccm_access_error_d), .dout(fir_nondccm_access_error_m), .clk(lsu_c1_m_clk), .*);
-
-   rvdffe #(32) bus_read_data_r_ff (.*, .din(bus_read_data_m[31:0]), .dout(bus_read_data_r[31:0]), .en(addr_external_m | clk_override));
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_stbuf.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_stbuf.sv
deleted file mode 100644
index 1704a45..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_stbuf.sv
+++ /dev/null
@@ -1,351 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Store Buffer
-// Comments: Dual writes and single drain
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-
-module eb1_lsu_stbuf
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )
-(
-   input logic                           clk,                         // core clock
-   input logic                           rst_l,                       // reset
-
-   input logic                           lsu_stbuf_c1_clk,            // stbuf clock
-   input logic                           lsu_free_c2_clk,             // free clk
-
-   // Store Buffer input
-   input logic                           store_stbuf_reqvld_r,        // core instruction goes to stbuf
-   input logic                           lsu_commit_r,                // lsu commits
-   input logic                           dec_lsu_valid_raw_d,         // Speculative decode valid
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_hi_r,             // merged data from the dccm for stores. This is used for fwding
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_lo_r,             // merged data from the dccm for stores. This is used for fwding
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_datafn_hi_r,           // merged data from the dccm for stores
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_datafn_lo_r,           // merged data from the dccm for stores
-
-   // Store Buffer output
-   output logic                          stbuf_reqvld_any,            // stbuf is draining
-   output logic                          stbuf_reqvld_flushed_any,    // Top entry is flushed
-   output logic [pt.LSU_SB_BITS-1:0]     stbuf_addr_any,              // address
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_data_any,              // stbuf data
-
-   input  logic                          lsu_stbuf_commit_any,        // pop the stbuf as it commite
-   output logic                          lsu_stbuf_full_any,          // stbuf is full
-   output logic                          lsu_stbuf_empty_any,         // stbuf is empty
-   output logic                          ldst_stbuf_reqvld_r,         // needed for clocking
-
-   input logic [pt.LSU_SB_BITS-1:0]      lsu_addr_d,                  // lsu address D-stage
-   input logic [31:0]                    lsu_addr_m,                  // lsu address M-stage
-   input logic [31:0]                    lsu_addr_r,                  // lsu address R-stage
-
-   input logic [pt.LSU_SB_BITS-1:0]      end_addr_d,                  // lsu end address D-stage - needed to check unaligned
-   input logic [31:0]                    end_addr_m,                  // lsu end address M-stage - needed to check unaligned
-   input logic [31:0]                    end_addr_r,                  // lsu end address R-stage - needed to check unaligned
-
-   input logic                           ldst_dual_d, ldst_dual_m, ldst_dual_r,
-   input logic                           addr_in_dccm_m,              // address is in dccm
-   input logic                           addr_in_dccm_r,              // address is in dccm
-
-   // Forwarding signals
-   input logic                           lsu_cmpen_m,                 // needed for forwarding stbuf - load
-   input eb1_lsu_pkt_t                  lsu_pkt_m,                   // LSU packet M-stage
-   input eb1_lsu_pkt_t                  lsu_pkt_r,                   // LSU packet R-stage
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_hi_m,          // stbuf data
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_lo_m,          // stbuf data
-   output logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_hi_m,        // stbuf data
-   output logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_lo_m,        // stbuf data
-
-   input  logic       scan_mode                                       // Scan mode
-
-);
-
-
-   localparam DEPTH      = pt.LSU_STBUF_DEPTH;
-   localparam DATA_WIDTH = pt.DCCM_DATA_WIDTH;
-   localparam BYTE_WIDTH = pt.DCCM_BYTE_WIDTH;
-   localparam DEPTH_LOG2 = $clog2(DEPTH);
-
-   // These are the fields in the store queue
-   logic [DEPTH-1:0]                     stbuf_vld;
-   logic [DEPTH-1:0]                     stbuf_dma_kill;
-   logic [DEPTH-1:0][pt.LSU_SB_BITS-1:0] stbuf_addr;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0]     stbuf_byteen;
-   logic [DEPTH-1:0][DATA_WIDTH-1:0]     stbuf_data;
-
-   logic [DEPTH-1:0]                     sel_lo;
-   logic [DEPTH-1:0]                     stbuf_wr_en;
-   logic [DEPTH-1:0]                     stbuf_dma_kill_en;
-   logic [DEPTH-1:0]                     stbuf_reset;
-   logic [DEPTH-1:0][pt.LSU_SB_BITS-1:0] stbuf_addrin;
-   logic [DEPTH-1:0][DATA_WIDTH-1:0]     stbuf_datain;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0]     stbuf_byteenin;
-
-   logic [7:0]             store_byteen_ext_r;
-   logic [BYTE_WIDTH-1:0]  store_byteen_hi_r;
-   logic [BYTE_WIDTH-1:0]  store_byteen_lo_r;
-
-   logic                   WrPtrEn, RdPtrEn;
-   logic [DEPTH_LOG2-1:0]  WrPtr, RdPtr;
-   logic [DEPTH_LOG2-1:0]  NxtWrPtr, NxtRdPtr;
-   logic [DEPTH_LOG2-1:0]  WrPtrPlus1, WrPtrPlus2, RdPtrPlus1;
-
-   logic                   dual_stbuf_write_r;
-
-   logic                   isdccmst_m, isdccmst_r;
-   logic [3:0]             stbuf_numvld_any, stbuf_specvld_any;
-   logic [1:0]             stbuf_specvld_m, stbuf_specvld_r;
-
-   logic [pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] cmpaddr_hi_m, cmpaddr_lo_m;
-
-   // variables to detect matching from the store queue
-   logic [DEPTH-1:0]                 stbuf_match_hi, stbuf_match_lo;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0] stbuf_fwdbyteenvec_hi, stbuf_fwdbyteenvec_lo;
-   logic [DATA_WIDTH-1:0]            stbuf_fwddata_hi_pre_m, stbuf_fwddata_lo_pre_m;
-   logic [BYTE_WIDTH-1:0]            stbuf_fwdbyteen_hi_pre_m, stbuf_fwdbyteen_lo_pre_m;
-
-   // logic to detect matching from the pipe - needed for store - load forwarding
-   logic [BYTE_WIDTH-1:0]  ld_byte_rhit_lo_lo, ld_byte_rhit_hi_lo, ld_byte_rhit_lo_hi, ld_byte_rhit_hi_hi;
-   logic                   ld_addr_rhit_lo_lo, ld_addr_rhit_hi_lo, ld_addr_rhit_lo_hi, ld_addr_rhit_hi_hi;
-
-   logic [BYTE_WIDTH-1:0]  ld_byte_hit_lo, ld_byte_rhit_lo;
-   logic [BYTE_WIDTH-1:0]  ld_byte_hit_hi, ld_byte_rhit_hi;
-
-   logic [BYTE_WIDTH-1:0]  ldst_byteen_hi_r;
-   logic [BYTE_WIDTH-1:0]  ldst_byteen_lo_r;
-   // byte_en flowing down
-   logic [7:0]             ldst_byteen_r;
-   logic [7:0]             ldst_byteen_ext_r;
-   // fwd data through the pipe
-   logic [31:0]       ld_fwddata_rpipe_lo;
-   logic [31:0]       ld_fwddata_rpipe_hi;
-
-   // coalescing signals
-   logic [DEPTH-1:0]      store_matchvec_lo_r, store_matchvec_hi_r;
-   logic                  store_coalesce_lo_r, store_coalesce_hi_r;
-
-   //----------------------------------------
-   // Logic starts here
-   //----------------------------------------
-   // Create high/low byte enables
-   assign store_byteen_ext_r[7:0]           = ldst_byteen_r[7:0] << lsu_addr_r[1:0];
-   assign store_byteen_hi_r[BYTE_WIDTH-1:0] = store_byteen_ext_r[7:4] & {4{lsu_pkt_r.store}};
-   assign store_byteen_lo_r[BYTE_WIDTH-1:0] = store_byteen_ext_r[3:0] & {4{lsu_pkt_r.store}};
-
-   assign RdPtrPlus1[DEPTH_LOG2-1:0]     = RdPtr[DEPTH_LOG2-1:0] + 1'b1;
-   assign WrPtrPlus1[DEPTH_LOG2-1:0]     = WrPtr[DEPTH_LOG2-1:0] + 1'b1;
-   assign WrPtrPlus2[DEPTH_LOG2-1:0]     = WrPtr[DEPTH_LOG2-1:0] + 2'b10;
-
-   // ecc error on both hi/lo
-   assign dual_stbuf_write_r   = ldst_dual_r & store_stbuf_reqvld_r;
-   assign ldst_stbuf_reqvld_r  = ((lsu_commit_r | lsu_pkt_r.dma) & store_stbuf_reqvld_r);
-
-  // Store Buffer coalescing
-   for (genvar i=0; i<DEPTH; i++) begin: FindMatchEntry
-       assign store_matchvec_lo_r[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == lsu_addr_r[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & ~stbuf_reset[i];
-       assign store_matchvec_hi_r[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == end_addr_r[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & dual_stbuf_write_r & ~stbuf_reset[i];
-   end: FindMatchEntry
-
-   assign store_coalesce_lo_r = |store_matchvec_lo_r[DEPTH-1:0];
-   assign store_coalesce_hi_r = |store_matchvec_hi_r[DEPTH-1:0];
-
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      // Allocate new in this entry if :
-      // 1. wrptr, single allocate, lo did not coalesce
-      // 2. wrptr, double allocate, lo ^ hi coalesced
-      // 3. wrptr + 1, double alloacte, niether lo or hi coalesced
-      // Also update if there is a hi or a lo coalesce to this entry
-      // Store Buffer instantiation
-      for (genvar i=0; i<DEPTH; i++) begin: GenStBuf
-         assign stbuf_wr_en[i] = ldst_stbuf_reqvld_r & (
-                                   ( (i == WrPtr[DEPTH_LOG2-1:0])      &  ~store_coalesce_lo_r)   |                                                    // Allocate : new Lo
-                                   ( (i == WrPtr[DEPTH_LOG2-1:0])      &  dual_stbuf_write_r & ~store_coalesce_hi_r) |                               // Allocate : only 1 new Write Either
-                                   ( (i == WrPtrPlus1[DEPTH_LOG2-1:0]) &  dual_stbuf_write_r & ~(store_coalesce_lo_r | store_coalesce_hi_r)) |     // Allocate2 : 2 new so Write Hi
-                                   store_matchvec_lo_r[i] | store_matchvec_hi_r[i]);                                                                 // Coalesced Write Lo or Hi
-         assign stbuf_reset[i] = (lsu_stbuf_commit_any | stbuf_reqvld_flushed_any) & (i == RdPtr[DEPTH_LOG2-1:0]);
-
-         // Mux select for start/end address
-         assign sel_lo[i]                         = ((~ldst_dual_r | store_stbuf_reqvld_r) & (i == WrPtr[DEPTH_LOG2-1:0]) & ~store_coalesce_lo_r) |   // lo allocated new entry
-                                                    store_matchvec_lo_r[i];                                                                                                           // lo coalesced in to this entry
-         assign stbuf_addrin[i][pt.LSU_SB_BITS-1:0]  = sel_lo[i] ? lsu_addr_r[pt.LSU_SB_BITS-1:0]       : end_addr_r[pt.LSU_SB_BITS-1:0];
-         assign stbuf_byteenin[i][BYTE_WIDTH-1:0] = sel_lo[i] ? (stbuf_byteen[i][BYTE_WIDTH-1:0] | store_byteen_lo_r[BYTE_WIDTH-1:0])          : (stbuf_byteen[i][BYTE_WIDTH-1:0] | store_byteen_hi_r[BYTE_WIDTH-1:0]);
-         assign stbuf_datain[i][7:0]              = sel_lo[i] ? ((~stbuf_byteen[i][0] | store_byteen_lo_r[0]) ? store_datafn_lo_r[7:0]   : stbuf_data[i][7:0])    :
-                                                                ((~stbuf_byteen[i][0] | store_byteen_hi_r[0]) ? store_datafn_hi_r[7:0]   : stbuf_data[i][7:0]);
-         assign stbuf_datain[i][15:8]             = sel_lo[i] ? ((~stbuf_byteen[i][1] | store_byteen_lo_r[1]) ? store_datafn_lo_r[15:8]  : stbuf_data[i][15:8])    :
-                                                                ((~stbuf_byteen[i][1] | store_byteen_hi_r[1]) ? store_datafn_hi_r[15:8]  : stbuf_data[i][15:8]);
-         assign stbuf_datain[i][23:16]            = sel_lo[i] ? ((~stbuf_byteen[i][2] | store_byteen_lo_r[2]) ? store_datafn_lo_r[23:16] : stbuf_data[i][23:16])    :
-                                                                ((~stbuf_byteen[i][2] | store_byteen_hi_r[2]) ? store_datafn_hi_r[23:16] : stbuf_data[i][23:16]);
-         assign stbuf_datain[i][31:24]            = sel_lo[i] ? ((~stbuf_byteen[i][3] | store_byteen_lo_r[3]) ? store_datafn_lo_r[31:24] : stbuf_data[i][31:24])    :
-                                                                ((~stbuf_byteen[i][3] | store_byteen_hi_r[3]) ? store_datafn_hi_r[31:24] : stbuf_data[i][31:24]);
-
-         rvdffsc #(.WIDTH(1))              stbuf_vldff         (.din(1'b1),                                .dout(stbuf_vld[i]),                      .en(stbuf_wr_en[i]), .clear(stbuf_reset[i]), .clk(lsu_free_c2_clk), .*);
-         rvdffsc #(.WIDTH(1))              stbuf_killff        (.din(1'b1),                                .dout(stbuf_dma_kill[i]),                 .en(stbuf_dma_kill_en[i]), .clear(stbuf_reset[i]), .clk(lsu_free_c2_clk), .*);
-         rvdffe  #(.WIDTH(pt.LSU_SB_BITS)) stbuf_addrff        (.din(stbuf_addrin[i][pt.LSU_SB_BITS-1:0]), .dout(stbuf_addr[i][pt.LSU_SB_BITS-1:0]), .en(stbuf_wr_en[i]), .*);
-         rvdffsc #(.WIDTH(BYTE_WIDTH))     stbuf_byteenff      (.din(stbuf_byteenin[i][BYTE_WIDTH-1:0]),   .dout(stbuf_byteen[i][BYTE_WIDTH-1:0]),   .en(stbuf_wr_en[i]), .clear(stbuf_reset[i]), .clk(lsu_stbuf_c1_clk), .*);
-         rvdffe  #(.WIDTH(DATA_WIDTH))     stbuf_dataff        (.din(stbuf_datain[i][DATA_WIDTH-1:0]),     .dout(stbuf_data[i][DATA_WIDTH-1:0]),     .en(stbuf_wr_en[i]), .*);
-      end
-   end else begin: Gen_dccm_disable
-      assign stbuf_wr_en[DEPTH-1:0] = '0;
-      assign stbuf_reset[DEPTH-1:0] = '0;
-      assign stbuf_vld[DEPTH-1:0]   = '0;
-      assign stbuf_dma_kill[DEPTH-1:0] = '0;
-      assign stbuf_addr[DEPTH-1:0]  = '0;
-      assign stbuf_byteen[DEPTH-1:0] = '0;
-      assign stbuf_data[DEPTH-1:0]   = '0;
-   end
-
-   // Store Buffer drain logic
-   assign stbuf_reqvld_flushed_any            = stbuf_vld[RdPtr] & stbuf_dma_kill[RdPtr];
-   assign stbuf_reqvld_any                    = stbuf_vld[RdPtr] & ~stbuf_dma_kill[RdPtr] & ~(|stbuf_dma_kill_en[DEPTH-1:0]);  // Don't drain if some kill bit is being set this cycle
-   assign stbuf_addr_any[pt.LSU_SB_BITS-1:0]  = stbuf_addr[RdPtr][pt.LSU_SB_BITS-1:0];
-   assign stbuf_data_any[DATA_WIDTH-1:0]      = stbuf_data[RdPtr][DATA_WIDTH-1:0];
-
-   // Update the RdPtr/WrPtr logic
-   // Need to revert the WrPtr for flush cases. Also revert the pipe WrPtrs
-   assign WrPtrEn                  = (ldst_stbuf_reqvld_r  & ~dual_stbuf_write_r & ~(store_coalesce_hi_r | store_coalesce_lo_r))  |  // writing 1 and did not coalesce
-                                     (ldst_stbuf_reqvld_r  &  dual_stbuf_write_r & ~(store_coalesce_hi_r & store_coalesce_lo_r));    // writing 2 and atleast 1 did not coalesce
-   assign NxtWrPtr[DEPTH_LOG2-1:0] = (ldst_stbuf_reqvld_r & dual_stbuf_write_r & ~(store_coalesce_hi_r | store_coalesce_lo_r)) ? WrPtrPlus2[DEPTH_LOG2-1:0] : WrPtrPlus1[DEPTH_LOG2-1:0];
-   assign RdPtrEn                  = lsu_stbuf_commit_any | stbuf_reqvld_flushed_any;
-   assign NxtRdPtr[DEPTH_LOG2-1:0] = RdPtrPlus1[DEPTH_LOG2-1:0];
-
-   always_comb begin
-      stbuf_numvld_any[3:0] = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_numvld_any[3:0] += {3'b0, stbuf_vld[i]};
-      end
-   end
-
-    // These go to store buffer to detect full
-   assign isdccmst_m = lsu_pkt_m.valid & lsu_pkt_m.store & addr_in_dccm_m & ~lsu_pkt_m.dma;
-   assign isdccmst_r = lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_dccm_r & ~lsu_pkt_r.dma;
-
-   assign stbuf_specvld_m[1:0] = {1'b0,isdccmst_m} << (isdccmst_m & ldst_dual_m);
-   assign stbuf_specvld_r[1:0] = {1'b0,isdccmst_r} << (isdccmst_r & ldst_dual_r);
-   assign stbuf_specvld_any[3:0] = stbuf_numvld_any[3:0] +  {2'b0, stbuf_specvld_m[1:0]} + {2'b0, stbuf_specvld_r[1:0]};
-
-   assign lsu_stbuf_full_any  = (~ldst_dual_d & dec_lsu_valid_raw_d) ? (stbuf_specvld_any[3:0] >= DEPTH) : (stbuf_specvld_any[3:0] >= (DEPTH-1));
-   assign lsu_stbuf_empty_any = (stbuf_numvld_any[3:0] == 4'b0);
-
-   // Load forwarding logic from the store queue
-   assign cmpaddr_hi_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] = end_addr_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)];
-
-   assign cmpaddr_lo_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] = lsu_addr_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)];
-
-   always_comb begin: GenLdFwd
-      stbuf_fwdbyteen_hi_pre_m[BYTE_WIDTH-1:0]   = '0;
-      stbuf_fwdbyteen_lo_pre_m[BYTE_WIDTH-1:0]   = '0;
-
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_match_hi[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == cmpaddr_hi_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & addr_in_dccm_m;
-         stbuf_match_lo[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == cmpaddr_lo_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & addr_in_dccm_m;
-
-         // Kill the store buffer entry if there is a dma store since it already updated the dccm
-         stbuf_dma_kill_en[i] = (stbuf_match_hi[i] | stbuf_match_lo[i]) & lsu_pkt_m.valid & lsu_pkt_m.dma & lsu_pkt_m.store;
-
-         for (int j=0; j<BYTE_WIDTH; j++) begin
-            stbuf_fwdbyteenvec_hi[i][j] = stbuf_match_hi[i] & stbuf_byteen[i][j] & stbuf_vld[i];
-            stbuf_fwdbyteen_hi_pre_m[j]  |= stbuf_fwdbyteenvec_hi[i][j];
-
-            stbuf_fwdbyteenvec_lo[i][j] = stbuf_match_lo[i] & stbuf_byteen[i][j] & stbuf_vld[i];
-            stbuf_fwdbyteen_lo_pre_m[j]  |= stbuf_fwdbyteenvec_lo[i][j];
-         end
-      end
-   end // block: GenLdFwd
-
-   always_comb begin: GenLdData
-      stbuf_fwddata_hi_pre_m[31:0]   = '0;
-      stbuf_fwddata_lo_pre_m[31:0]   = '0;
-
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_fwddata_hi_pre_m[31:0] |= {32{stbuf_match_hi[i]}} & stbuf_data[i][31:0];
-         stbuf_fwddata_lo_pre_m[31:0] |= {32{stbuf_match_lo[i]}} & stbuf_data[i][31:0];
-
-      end
-
-   end // block: GenLdData
-
-   // Create Hi/Lo signals - needed for the pipe forwarding
-   assign ldst_byteen_r[7:0] =  ({8{lsu_pkt_r.by}}    & 8'b0000_0001) |
-                                 ({8{lsu_pkt_r.half}}  & 8'b0000_0011) |
-                                 ({8{lsu_pkt_r.word}}  & 8'b0000_1111) |
-                                 ({8{lsu_pkt_r.dword}} & 8'b1111_1111);
-
-   assign ldst_byteen_ext_r[7:0] = ldst_byteen_r[7:0] << lsu_addr_r[1:0];
-
-   assign ldst_byteen_hi_r[3:0]   = ldst_byteen_ext_r[7:4];
-   assign ldst_byteen_lo_r[3:0]   = ldst_byteen_ext_r[3:0];
-
-   assign ld_addr_rhit_lo_lo = (lsu_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma;
-   assign ld_addr_rhit_lo_hi = (end_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma;
-   assign ld_addr_rhit_hi_lo = (lsu_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma & dual_stbuf_write_r;
-   assign ld_addr_rhit_hi_hi = (end_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma & dual_stbuf_write_r;
-
-   for (genvar i=0; i<BYTE_WIDTH; i++) begin
-      assign ld_byte_rhit_lo_lo[i] = ld_addr_rhit_lo_lo & ldst_byteen_lo_r[i];
-      assign ld_byte_rhit_lo_hi[i] = ld_addr_rhit_lo_hi & ldst_byteen_lo_r[i];
-      assign ld_byte_rhit_hi_lo[i] = ld_addr_rhit_hi_lo & ldst_byteen_hi_r[i];
-      assign ld_byte_rhit_hi_hi[i] = ld_addr_rhit_hi_hi & ldst_byteen_hi_r[i];
-
-      assign ld_byte_rhit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_rhit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-       assign ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_lo[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                     ({8{ld_byte_rhit_hi_lo[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-       assign ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_hi[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                     ({8{ld_byte_rhit_hi_hi[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      assign ld_byte_hit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_hit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-      assign stbuf_fwdbyteen_hi_m[i] = ld_byte_hit_hi[i] | stbuf_fwdbyteen_hi_pre_m[i];
-      assign stbuf_fwdbyteen_lo_m[i] = ld_byte_hit_lo[i] | stbuf_fwdbyteen_lo_pre_m[i];
-      // // Pipe vs Store Queue priority
-      assign stbuf_fwddata_lo_m[(8*i)+7:(8*i)] = ld_byte_rhit_lo[i]    ? ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] : stbuf_fwddata_lo_pre_m[(8*i)+7:(8*i)];
-      // // Pipe vs Store Queue priority
-      assign stbuf_fwddata_hi_m[(8*i)+7:(8*i)] = ld_byte_rhit_hi[i]    ? ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] : stbuf_fwddata_hi_pre_m[(8*i)+7:(8*i)];
-   end
-
-   // Flops
-   rvdffs #(.WIDTH(DEPTH_LOG2)) WrPtrff (.din(NxtWrPtr[DEPTH_LOG2-1:0]), .dout(WrPtr[DEPTH_LOG2-1:0]), .en(WrPtrEn), .clk(lsu_stbuf_c1_clk), .*);
-   rvdffs #(.WIDTH(DEPTH_LOG2)) RdPtrff (.din(NxtRdPtr[DEPTH_LOG2-1:0]), .dout(RdPtr[DEPTH_LOG2-1:0]), .en(RdPtrEn), .clk(lsu_stbuf_c1_clk), .*);
-
-`ifdef RV_ASSERT_ON
-
-   assert_stbuf_overflow: assert #0 (stbuf_specvld_any[2:0] <= DEPTH);
-   property stbuf_wren_store_dccm;
-      @(posedge clk)  disable iff(~rst_l) (|stbuf_wr_en[DEPTH-1:0]) |-> (lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_dccm_r);
-   endproperty
-   assert_stbuf_wren_store_dccm: assert property (stbuf_wren_store_dccm) else
-      $display("Illegal store buffer write");
-
-`endif
-
-endmodule
-
diff --git a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_trigger.sv b/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_trigger.sv
deleted file mode 100644
index d3c5058..0000000
--- a/verilog/rtl/BrqRV_EB1/design/lsu/eb1_lsu_trigger.sv
+++ /dev/null
@@ -1,68 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: LSU Trigger logic
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_trigger
-import eb1_pkg::*;
-#(
-`include "eb1_param.vh"
- )(
-   input eb1_trigger_pkt_t [3:0] trigger_pkt_any,            // trigger packet from dec
-   input eb1_lsu_pkt_t           lsu_pkt_m,                  // lsu packet
-   input logic [31:0]             lsu_addr_m,                 // address
-   input logic [31:0]             store_data_m,               // store data
-
-   output logic [3:0]             lsu_trigger_match_m         // match result
-);
-
-   logic               trigger_enable;
-   logic [3:0][31:0]  lsu_match_data;
-   logic [3:0]        lsu_trigger_data_match;
-   logic [31:0]       store_data_trigger_m;
-   logic [31:0]       ldst_addr_trigger_m;
-
-   // Generate the trigger enable (This is for power)
-   always_comb begin
-      trigger_enable = 1'b0;
-      for (int i=0; i<4; i++) begin
-         trigger_enable |= trigger_pkt_any[i].m;
-      end
-   end
-
-   assign store_data_trigger_m[31:0] = {({16{lsu_pkt_m.word}} & store_data_m[31:16]),({8{(lsu_pkt_m.half | lsu_pkt_m.word)}} & store_data_m[15:8]), store_data_m[7:0]} & {32{trigger_enable}};
-   assign ldst_addr_trigger_m[31:0]  = lsu_addr_m[31:0] & {32{trigger_enable}};
-
-
-   for (genvar i=0; i<4; i++) begin
-      assign lsu_match_data[i][31:0] = ({32{~trigger_pkt_any[i].select}} & ldst_addr_trigger_m[31:0]) |
-                                       ({32{trigger_pkt_any[i].select & trigger_pkt_any[i].store}} & store_data_trigger_m[31:0]);
-
-      rvmaskandmatch trigger_match (.mask(trigger_pkt_any[i].tdata2[31:0]), .data(lsu_match_data[i][31:0]), .masken(trigger_pkt_any[i].match), .match(lsu_trigger_data_match[i]));
-
-      assign lsu_trigger_match_m[i] = lsu_pkt_m.valid & ~lsu_pkt_m.dma & trigger_enable &
-                                        ((trigger_pkt_any[i].store & lsu_pkt_m.store) | (trigger_pkt_any[i].load & lsu_pkt_m.load & ~trigger_pkt_any[i].select)) &
-                                        lsu_trigger_data_match[i];
-   end
-
-
-endmodule // eb1_lsu_trigger
diff --git a/verilog/rtl/BrqRV_EB1/design/openlane/BrqRV_EB1.sv b/verilog/rtl/BrqRV_EB1/design/openlane/BrqRV_EB1.sv
deleted file mode 100644
index ba95911..0000000
--- a/verilog/rtl/BrqRV_EB1/design/openlane/BrqRV_EB1.sv
+++ /dev/null
@@ -1,31596 +0,0 @@
-// performance monitor stuff
-//`ifndef eb1_DEF_SV
-//`define eb1_DEF_SV
-package eb1_pkg;
-
-typedef struct packed {
-                       logic  trace_rv_i_valid_ip;
-                       logic [31:0] trace_rv_i_insn_ip;
-                       logic [31:0] trace_rv_i_address_ip;
-                       logic  trace_rv_i_exception_ip;
-                       logic [4:0] trace_rv_i_ecause_ip;
-                       logic  trace_rv_i_interrupt_ip;
-                       logic [31:0] trace_rv_i_tval_ip;
-                       } eb1_trace_pkt_t;
-
-
-typedef enum logic [3:0] {
-                          NULL     = 4'b0000,
-                          MUL      = 4'b0001,
-                          LOAD     = 4'b0010,
-                          STORE    = 4'b0011,
-                          ALU      = 4'b0100,
-                          CSRREAD  = 4'b0101,
-                          CSRWRITE = 4'b0110,
-                          CSRRW    = 4'b0111,
-                          EBREAK   = 4'b1000,
-                          ECALL    = 4'b1001,
-                          FENCE    = 4'b1010,
-                          FENCEI   = 4'b1011,
-                          MRET     = 4'b1100,
-                          CONDBR   = 4'b1101,
-                          JAL      = 4'b1110,
-                          BITMANIPU = 4'b1111
-                          } eb1_inst_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic wb;
-                       logic [2:0] tag;
-                       logic [4:0] rd;
-                       } eb1_load_cam_pkt_t;
-
-typedef struct packed {
-                       logic pc0_call;
-                       logic pc0_ret;
-                       logic pc0_pc4;
-                       } eb1_rets_pkt_t;
-typedef struct packed {
-                       logic valid;
-                       logic [11:0] toffset;
-                       logic [1:0] hist;
-                       logic br_error;
-                       logic br_start_error;
-                       logic  bank;
-                       logic [31:1] prett;  // predicted ret target
-                       logic way;
-                       logic ret;
-                       } eb1_br_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic [1:0] hist;
-                       logic br_error;
-                       logic br_start_error;
-                       logic way;
-                       logic middle;
-                       } eb1_br_tlu_pkt_t;
-
-typedef struct packed {
-                       logic misp;
-                       logic ataken;
-                       logic boffset;
-                       logic pc4;
-                       logic [1:0] hist;
-                       logic [11:0] toffset;
-                       logic valid;
-                       logic br_error;
-                       logic br_start_error;
-                       logic pcall;
-                       logic pja;
-                       logic way;
-                       logic pret;
-                       // for power use the pret bit to clock the prett field
-                       logic [31:1] prett;
-                       } eb1_predict_pkt_t;
-
-typedef struct packed {
-                       // unlikely to change
-                       logic icaf;
-                       logic icaf_second;
-                       logic [1:0] icaf_type;
-                       logic fence_i;
-                       logic [3:0] i0trigger;
-                       logic pmu_i0_br_unpred;     // pmu
-                       logic pmu_divide;
-                       // likely to change
-                       logic legal;
-                       logic pmu_lsu_misaligned;
-                       eb1_inst_pkt_t pmu_i0_itype;        // pmu - instruction type
-                       } eb1_trap_pkt_t;
-
-typedef struct packed {
-                       // unlikely to change
-                       logic i0div;
-                       logic csrwen;
-                       logic csrwonly;
-                       logic [11:0] csrwaddr;
-                       // likely to change
-                       logic [4:0] i0rd;
-                       logic i0load;
-                       logic i0store;
-                       logic i0v;
-                       logic i0valid;
-                       } eb1_dest_pkt_t;
-
-typedef struct packed {
-                       logic mul;
-                       logic load;
-                       logic alu;
-                       } eb1_class_pkt_t;
-
-typedef struct packed {
-                       logic [4:0] rs1;
-                       logic [4:0] rs2;
-                       logic [4:0] rd;
-                       } eb1_reg_pkt_t;
-
-
-typedef struct packed {
-                       logic clz;
-                       logic ctz;
-                       logic pcnt;
-                       logic sext_b;
-                       logic sext_h;
-                       logic slo;
-                       logic sro;
-                       logic min;
-                       logic max;
-                       logic pack;
-                       logic packu;
-                       logic packh;
-                       logic rol;
-                       logic ror;
-                       logic grev;
-                       logic gorc;
-                       logic zbb;
-                       logic sbset;
-                       logic sbclr;
-                       logic sbinv;
-                       logic sbext;
-                       logic sh1add;
-                       logic sh2add;
-                       logic sh3add;
-                       logic zba;
-                       logic land;
-                       logic lor;
-                       logic lxor;
-                       logic sll;
-                       logic srl;
-                       logic sra;
-                       logic beq;
-                       logic bne;
-                       logic blt;
-                       logic bge;
-                       logic add;
-                       logic sub;
-                       logic slt;
-                       logic unsign;
-                       logic jal;
-                       logic predict_t;
-                       logic predict_nt;
-                       logic csr_write;
-                       logic csr_imm;
-                       } eb1_alu_pkt_t;
-
-typedef struct packed {
-                       logic fast_int;
-/* verilator lint_off SYMRSVDWORD */
-                       logic stack;
-/* verilator lint_on SYMRSVDWORD */
-                       logic by;
-                       logic half;
-                       logic word;
-                       logic dword;  // for dma
-                       logic load;
-                       logic store;
-                       logic unsign;
-                       logic dma;    // dma pkt
-                       logic store_data_bypass_d;
-                       logic load_ldst_bypass_d;
-                       logic store_data_bypass_m;
-                       logic valid;
-                       } eb1_lsu_pkt_t;
-
-typedef struct packed {
-                      logic inst_type;   //0: Load, 1: Store
-                      //logic dma_valid;
-                      logic exc_type;    //0: MisAligned, 1: Access Fault
-                      logic [3:0] mscause;
-                      logic [31:0] addr;
-                      logic single_ecc_error;
-                      logic exc_valid;
-                      } eb1_lsu_error_pkt_t;
-
-typedef struct packed {
-                       logic clz;
-                       logic ctz;
-                       logic pcnt;
-                       logic sext_b;
-                       logic sext_h;
-                       logic slo;
-                       logic sro;
-                       logic min;
-                       logic max;
-                       logic pack;
-                       logic packu;
-                       logic packh;
-                       logic rol;
-                       logic ror;
-                       logic grev;
-                       logic gorc;
-                       logic zbb;
-                       logic sbset;
-                       logic sbclr;
-                       logic sbinv;
-                       logic sbext;
-                       logic zbs;
-                       logic bext;
-                       logic bdep;
-                       logic zbe;
-                       logic clmul;
-                       logic clmulh;
-                       logic clmulr;
-                       logic zbc;
-                       logic shfl;
-                       logic unshfl;
-                       logic zbp;
-                       logic crc32_b;
-                       logic crc32_h;
-                       logic crc32_w;
-                       logic crc32c_b;
-                       logic crc32c_h;
-                       logic crc32c_w;
-                       logic zbr;
-                       logic bfp;
-                       logic zbf;
-                       logic sh1add;
-                       logic sh2add;
-                       logic sh3add;
-                       logic zba;
-                       logic alu;
-                       logic rs1;
-                       logic rs2;
-                       logic imm12;
-                       logic rd;
-                       logic shimm5;
-                       logic imm20;
-                       logic pc;
-                       logic load;
-                       logic store;
-                       logic lsu;
-                       logic add;
-                       logic sub;
-                       logic land;
-                       logic lor;
-                       logic lxor;
-                       logic sll;
-                       logic sra;
-                       logic srl;
-                       logic slt;
-                       logic unsign;
-                       logic condbr;
-                       logic beq;
-                       logic bne;
-                       logic bge;
-                       logic blt;
-                       logic jal;
-                       logic by;
-                       logic half;
-                       logic word;
-                       logic csr_read;
-                       logic csr_clr;
-                       logic csr_set;
-                       logic csr_write;
-                       logic csr_imm;
-                       logic presync;
-                       logic postsync;
-                       logic ebreak;
-                       logic ecall;
-                       logic mret;
-                       logic mul;
-                       logic rs1_sign;
-                       logic rs2_sign;
-                       logic low;
-                       logic div;
-                       logic rem;
-                       logic fence;
-                       logic fence_i;
-                       logic pm_alu;
-                       logic legal;
-                       } eb1_dec_pkt_t;
-
-
-typedef struct packed {
-                       logic valid;
-                       logic rs1_sign;
-                       logic rs2_sign;
-                       logic low;
-                       logic bext;
-                       logic bdep;
-                       logic clmul;
-                       logic clmulh;
-                       logic clmulr;
-                       logic grev;
-                       logic gorc;
-                       logic shfl;
-                       logic unshfl;
-                       logic crc32_b;
-                       logic crc32_h;
-                       logic crc32_w;
-                       logic crc32c_b;
-                       logic crc32c_h;
-                       logic crc32c_w;
-                       logic bfp;
-                       } eb1_mul_pkt_t;
-
-typedef struct packed {
-                       logic valid;
-                       logic unsign;
-                       logic rem;
-                       } eb1_div_pkt_t;
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ccm_ext_in_pkt_t;
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_dccm_ext_in_pkt_t;
-
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ic_data_ext_in_pkt_t;
-
-
-typedef struct packed {
-                       logic        TEST1;
-                       logic        RME;
-                       logic [3:0]  RM;
-                       logic        LS;
-                       logic        DS;
-                       logic        SD;
-                       logic        TEST_RNM;
-                       logic        BC1;
-                       logic        BC2;
-                      } eb1_ic_tag_ext_in_pkt_t;
-
-
-
-typedef struct packed {
-                        logic        select;
-                        logic        match;
-                        logic        store;
-                        logic        load;
-                        logic        execute;
-                        logic        m;
-                        logic [31:0] tdata2;
-            } eb1_trigger_pkt_t;
-
-
-typedef struct packed {
-                        logic [70:0]  icache_wrdata; // {dicad1[1:0], dicad0h[31:0], dicad0[31:0]}
-                        logic [16:0]  icache_dicawics; // Arraysel:24, Waysel:21:20, Index:16:3
-                        logic         icache_rd_valid;
-                        logic         icache_wr_valid;
-            } eb1_cache_debug_pkt_t;
-//`endif
-typedef struct packed {
-	bit [7:0]      BHT_ADDR_HI;
-	bit [5:0]      BHT_ADDR_LO;
-	bit [14:0]     BHT_ARRAY_DEPTH;
-	bit [4:0]      BHT_GHR_HASH_1;
-	bit [7:0]      BHT_GHR_SIZE;
-	bit [15:0]     BHT_SIZE;
-	bit [4:0]      BITMANIP_ZBA;
-	bit [4:0]      BITMANIP_ZBB;
-	bit [4:0]      BITMANIP_ZBC;
-	bit [4:0]      BITMANIP_ZBE;
-	bit [4:0]      BITMANIP_ZBF;
-	bit [4:0]      BITMANIP_ZBP;
-	bit [4:0]      BITMANIP_ZBR;
-	bit [4:0]      BITMANIP_ZBS;
-	bit [8:0]      BTB_ADDR_HI;
-	bit [5:0]      BTB_ADDR_LO;
-	bit [12:0]     BTB_ARRAY_DEPTH;
-	bit [4:0]      BTB_BTAG_FOLD;
-	bit [8:0]      BTB_BTAG_SIZE;
-	bit [4:0]      BTB_ENABLE;
-	bit [4:0]      BTB_FOLD2_INDEX_HASH;
-	bit [4:0]      BTB_FULLYA;
-	bit [8:0]      BTB_INDEX1_HI;
-	bit [8:0]      BTB_INDEX1_LO;
-	bit [8:0]      BTB_INDEX2_HI;
-	bit [8:0]      BTB_INDEX2_LO;
-	bit [8:0]      BTB_INDEX3_HI;
-	bit [8:0]      BTB_INDEX3_LO;
-	bit [13:0]     BTB_SIZE;
-	bit [8:0]      BTB_TOFFSET_SIZE;
-	bit            BUILD_AHB_LITE;
-	bit [4:0]      BUILD_AXI4;
-	bit [4:0]      BUILD_AXI_NATIVE;
-	bit [5:0]      BUS_PRTY_DEFAULT;
-	bit [35:0]     DATA_ACCESS_ADDR0;
-	bit [35:0]     DATA_ACCESS_ADDR1;
-	bit [35:0]     DATA_ACCESS_ADDR2;
-	bit [35:0]     DATA_ACCESS_ADDR3;
-	bit [35:0]     DATA_ACCESS_ADDR4;
-	bit [35:0]     DATA_ACCESS_ADDR5;
-	bit [35:0]     DATA_ACCESS_ADDR6;
-	bit [35:0]     DATA_ACCESS_ADDR7;
-	bit [4:0]      DATA_ACCESS_ENABLE0;
-	bit [4:0]      DATA_ACCESS_ENABLE1;
-	bit [4:0]      DATA_ACCESS_ENABLE2;
-	bit [4:0]      DATA_ACCESS_ENABLE3;
-	bit [4:0]      DATA_ACCESS_ENABLE4;
-	bit [4:0]      DATA_ACCESS_ENABLE5;
-	bit [4:0]      DATA_ACCESS_ENABLE6;
-	bit [4:0]      DATA_ACCESS_ENABLE7;
-	bit [35:0]     DATA_ACCESS_MASK0;
-	bit [35:0]     DATA_ACCESS_MASK1;
-	bit [35:0]     DATA_ACCESS_MASK2;
-	bit [35:0]     DATA_ACCESS_MASK3;
-	bit [35:0]     DATA_ACCESS_MASK4;
-	bit [35:0]     DATA_ACCESS_MASK5;
-	bit [35:0]     DATA_ACCESS_MASK6;
-	bit [35:0]     DATA_ACCESS_MASK7;
-	bit [6:0]      DCCM_BANK_BITS;
-	bit [8:0]      DCCM_BITS;
-	bit [6:0]      DCCM_BYTE_WIDTH;
-	bit [9:0]      DCCM_DATA_WIDTH;
-	bit [6:0]      DCCM_ECC_WIDTH;
-	bit [4:0]      DCCM_ENABLE;
-	bit [9:0]      DCCM_FDATA_WIDTH;
-	bit [7:0]      DCCM_INDEX_BITS;
-	bit [8:0]      DCCM_NUM_BANKS;
-	bit [7:0]      DCCM_REGION;
-	bit [35:0]     DCCM_SADR;
-	bit [13:0]     DCCM_SIZE;
-	bit [5:0]      DCCM_WIDTH_BITS;
-	bit [6:0]      DIV_BIT;
-	bit [4:0]      DIV_NEW;
-	bit [6:0]      DMA_BUF_DEPTH;
-	bit [8:0]      DMA_BUS_ID;
-	bit [5:0]      DMA_BUS_PRTY;
-	bit [7:0]      DMA_BUS_TAG;
-	bit [4:0]      FAST_INTERRUPT_REDIRECT;
-	bit [4:0]      ICACHE_2BANKS;
-	bit [6:0]      ICACHE_BANK_BITS;
-	bit [6:0]      ICACHE_BANK_HI;
-	bit [5:0]      ICACHE_BANK_LO;
-	bit [7:0]      ICACHE_BANK_WIDTH;
-	bit [6:0]      ICACHE_BANKS_WAY;
-	bit [7:0]      ICACHE_BEAT_ADDR_HI;
-	bit [7:0]      ICACHE_BEAT_BITS;
-	bit [4:0]      ICACHE_BYPASS_ENABLE;
-	bit [17:0]     ICACHE_DATA_DEPTH;
-	bit [6:0]      ICACHE_DATA_INDEX_LO;
-	bit [10:0]     ICACHE_DATA_WIDTH;
-	bit [4:0]      ICACHE_ECC;
-	bit [4:0]      ICACHE_ENABLE;
-	bit [10:0]     ICACHE_FDATA_WIDTH;
-	bit [8:0]      ICACHE_INDEX_HI;
-	bit [10:0]     ICACHE_LN_SZ;
-	bit [7:0]      ICACHE_NUM_BEATS;
-	bit [7:0]      ICACHE_NUM_BYPASS;
-	bit [7:0]      ICACHE_NUM_BYPASS_WIDTH;
-	bit [6:0]      ICACHE_NUM_WAYS;
-	bit [4:0]      ICACHE_ONLY;
-	bit [7:0]      ICACHE_SCND_LAST;
-	bit [12:0]     ICACHE_SIZE;
-	bit [6:0]      ICACHE_STATUS_BITS;
-	bit [4:0]      ICACHE_TAG_BYPASS_ENABLE;
-	bit [16:0]     ICACHE_TAG_DEPTH;
-	bit [6:0]      ICACHE_TAG_INDEX_LO;
-	bit [8:0]      ICACHE_TAG_LO;
-	bit [7:0]      ICACHE_TAG_NUM_BYPASS;
-	bit [7:0]      ICACHE_TAG_NUM_BYPASS_WIDTH;
-	bit [4:0]      ICACHE_WAYPACK;
-	bit [6:0]      ICCM_BANK_BITS;
-	bit [8:0]      ICCM_BANK_HI;
-	bit [8:0]      ICCM_BANK_INDEX_LO;
-	bit [8:0]      ICCM_BITS;
-	bit [4:0]      ICCM_ENABLE;
-	bit [4:0]      ICCM_ICACHE;
-	bit [7:0]      ICCM_INDEX_BITS;
-	bit [8:0]      ICCM_NUM_BANKS;
-	bit [4:0]      ICCM_ONLY;
-	bit [7:0]      ICCM_REGION;
-	bit [35:0]     ICCM_SADR;
-	bit [13:0]     ICCM_SIZE;
-	bit [4:0]      IFU_BUS_ID;
-	bit [5:0]      IFU_BUS_PRTY;
-	bit [7:0]      IFU_BUS_TAG;
-	bit [35:0]     INST_ACCESS_ADDR0;
-	bit [35:0]     INST_ACCESS_ADDR1;
-	bit [35:0]     INST_ACCESS_ADDR2;
-	bit [35:0]     INST_ACCESS_ADDR3;
-	bit [35:0]     INST_ACCESS_ADDR4;
-	bit [35:0]     INST_ACCESS_ADDR5;
-	bit [35:0]     INST_ACCESS_ADDR6;
-	bit [35:0]     INST_ACCESS_ADDR7;
-	bit [4:0]      INST_ACCESS_ENABLE0;
-	bit [4:0]      INST_ACCESS_ENABLE1;
-	bit [4:0]      INST_ACCESS_ENABLE2;
-	bit [4:0]      INST_ACCESS_ENABLE3;
-	bit [4:0]      INST_ACCESS_ENABLE4;
-	bit [4:0]      INST_ACCESS_ENABLE5;
-	bit [4:0]      INST_ACCESS_ENABLE6;
-	bit [4:0]      INST_ACCESS_ENABLE7;
-	bit [35:0]     INST_ACCESS_MASK0;
-	bit [35:0]     INST_ACCESS_MASK1;
-	bit [35:0]     INST_ACCESS_MASK2;
-	bit [35:0]     INST_ACCESS_MASK3;
-	bit [35:0]     INST_ACCESS_MASK4;
-	bit [35:0]     INST_ACCESS_MASK5;
-	bit [35:0]     INST_ACCESS_MASK6;
-	bit [35:0]     INST_ACCESS_MASK7;
-	bit [4:0]      LOAD_TO_USE_PLUS1;
-	bit [4:0]      LSU2DMA;
-	bit [4:0]      LSU_BUS_ID;
-	bit [5:0]      LSU_BUS_PRTY;
-	bit [7:0]      LSU_BUS_TAG;
-	bit [8:0]      LSU_NUM_NBLOAD;
-	bit [6:0]      LSU_NUM_NBLOAD_WIDTH;
-	bit [8:0]      LSU_SB_BITS;
-	bit [7:0]      LSU_STBUF_DEPTH;
-	bit [4:0]      NO_ICCM_NO_ICACHE;
-	bit [4:0]      PIC_2CYCLE;
-	bit [35:0]     PIC_BASE_ADDR;
-	bit [8:0]      PIC_BITS;
-	bit [7:0]      PIC_INT_WORDS;
-	bit [7:0]      PIC_REGION;
-	bit [12:0]     PIC_SIZE;
-	bit [11:0]     PIC_TOTAL_INT;
-	bit [12:0]     PIC_TOTAL_INT_PLUS1;
-	bit [7:0]      RET_STACK_SIZE;
-	bit [4:0]      SB_BUS_ID;
-	bit [5:0]      SB_BUS_PRTY;
-	bit [7:0]      SB_BUS_TAG;
-	bit [4:0]      TIMER_LEGAL_EN;
-} eb1_param_t;
-
-
-endpackage // eb1_pkg
-
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-};
-
-parameter [2270:0] pt = 2271'h0404020000E0200000000000008081000030400040081E090B040100060210C00000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC3FFFFFFFC103020401C213840103C3C01000000040818428042010840830C2010281840200081002008E0C0801004040800C01002100400606810104100C080C080200810A0AFFFF00000102101800000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF87FFFFFFF8001080C080818080007806000003C043C04003E02008084021;
-// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-// This is an automatically generated file by hshabbir on و 08:16:54 PKT ت 08 جون 2021
-//
-// cmd:    brqrv -target=default -set build_axi4 
-//
-`define RV_ROOT "/home/hshabbir/caravel_BrqRV_EB1/verilog/rtl/BrqRV_EB1"
-`define RV_RET_STACK_SIZE 8
-`define RV_EXT_ADDRWIDTH 32
-`define RV_STERR_ROLLBACK 0
-`define SDVT_AHB 0
-`define RV_EXT_DATAWIDTH 64
-`define RV_LDERR_ROLLBACK 1
-`define CLOCK_PERIOD 100
-`define RV_ASSERT_ON 
-`define RV_BUILD_AXI4 1
-`define TOP tb_top
-`define RV_BUILD_AXI_NATIVE 1
-`define CPU_TOP `RV_TOP.brqrv
-`define RV_TOP `TOP.rvtop
-`define RV_UNUSED_REGION2 'h70000000
-`define RV_EXTERNAL_DATA 'hd0580000
-`define RV_SERIALIO 'he0580000
-`define RV_UNUSED_REGION7 'h20000000
-`define RV_UNUSED_REGION5 'h40000000
-`define RV_DEBUG_SB_MEM 'hb0580000
-`define RV_EXTERNAL_DATA_1 'hc0000000
-`define RV_UNUSED_REGION0 'h90000000
-`define RV_UNUSED_REGION3 'h60000000
-`define RV_UNUSED_REGION9 'h00000000
-`define RV_UNUSED_REGION8 'h10000000
-`define RV_UNUSED_REGION6 'h30000000
-`define RV_UNUSED_REGION1 'h80000000
-`define RV_UNUSED_REGION4 'h50000000
-`define RV_BHT_ADDR_LO 2
-`define RV_BHT_SIZE 256
-`define RV_BHT_GHR_HASH_1 
-`define RV_BHT_GHR_SIZE 7
-`define RV_BHT_ADDR_HI 8
-`define RV_BHT_HASH_STRING {hashin[7+1:2]^ghr[7-1:0]}// cf2
-`define RV_BHT_ARRAY_DEPTH 128
-`define RV_BHT_GHR_RANGE 6:0
-`define RV_INST_ACCESS_ADDR5 'h00000000
-`define RV_DATA_ACCESS_MASK3 'hffffffff
-`define RV_INST_ACCESS_MASK7 'hffffffff
-`define RV_DATA_ACCESS_MASK0 'hffffffff
-`define RV_INST_ACCESS_ADDR6 'h00000000
-`define RV_INST_ACCESS_ENABLE3 1'h0
-`define RV_INST_ACCESS_MASK6 'hffffffff
-`define RV_DATA_ACCESS_ENABLE6 1'h0
-`define RV_INST_ACCESS_ENABLE5 1'h0
-`define RV_DATA_ACCESS_ENABLE7 1'h0
-`define RV_INST_ACCESS_ENABLE1 1'h0
-`define RV_DATA_ACCESS_ADDR0 'h00000000
-`define RV_DATA_ACCESS_ADDR3 'h00000000
-`define RV_INST_ACCESS_ADDR7 'h00000000
-`define RV_INST_ACCESS_ENABLE0 1'h0
-`define RV_INST_ACCESS_MASK5 'hffffffff
-`define RV_DATA_ACCESS_MASK4 'hffffffff
-`define RV_INST_ACCESS_MASK2 'hffffffff
-`define RV_INST_ACCESS_MASK1 'hffffffff
-`define RV_INST_ACCESS_ADDR2 'h00000000
-`define RV_INST_ACCESS_ENABLE2 1'h0
-`define RV_INST_ACCESS_ADDR1 'h00000000
-`define RV_INST_ACCESS_ENABLE4 1'h0
-`define RV_DATA_ACCESS_ADDR4 'h00000000
-`define RV_DATA_ACCESS_ADDR6 'h00000000
-`define RV_DATA_ACCESS_ENABLE3 1'h0
-`define RV_INST_ACCESS_MASK0 'hffffffff
-`define RV_DATA_ACCESS_MASK7 'hffffffff
-`define RV_INST_ACCESS_MASK3 'hffffffff
-`define RV_DATA_ACCESS_ADDR5 'h00000000
-`define RV_DATA_ACCESS_MASK5 'hffffffff
-`define RV_DATA_ACCESS_ENABLE0 1'h0
-`define RV_INST_ACCESS_ADDR3 'h00000000
-`define RV_DATA_ACCESS_ADDR7 'h00000000
-`define RV_DATA_ACCESS_ENABLE5 1'h0
-`define RV_INST_ACCESS_ENABLE6 1'h0
-`define RV_DATA_ACCESS_ENABLE1 1'h0
-`define RV_INST_ACCESS_ENABLE7 1'h0
-`define RV_INST_ACCESS_ADDR0 'h00000000
-`define RV_DATA_ACCESS_MASK6 'hffffffff
-`define RV_DATA_ACCESS_MASK2 'hffffffff
-`define RV_DATA_ACCESS_MASK1 'hffffffff
-`define RV_INST_ACCESS_MASK4 'hffffffff
-`define RV_INST_ACCESS_ADDR4 'h00000000
-`define RV_DATA_ACCESS_ENABLE4 1'h0
-`define RV_DATA_ACCESS_ADDR2 'h00000000
-`define RV_DATA_ACCESS_ADDR1 'h00000000
-`define RV_DATA_ACCESS_ENABLE2 1'h0
-`define RV_ICCM_BITS 12
-`define RV_ICCM_OFFSET 10'h0ffff000
-`define RV_ICCM_SIZE_4 
-`define RV_ICCM_BANK_BITS 2
-`define RV_ICCM_ENABLE 1
-`define RV_ICCM_SADR 32'haffff000
-`define RV_ICCM_DATA_CELL ram_256x39
-`define RV_ICCM_EADR 32'hafffffff
-`define RV_ICCM_RESERVED 'h400
-`define RV_ICCM_REGION 4'ha
-`define RV_ICCM_SIZE 4
-`define RV_ICCM_BANK_HI 3
-`define RV_ICCM_BANK_INDEX_LO 4
-`define RV_ICCM_ROWS 256
-`define RV_ICCM_INDEX_BITS 8
-`define RV_ICCM_NUM_BANKS 4
-`define RV_ICCM_NUM_BANKS_4 
-`define RV_LSU2DMA 0
-`define RV_LSU_NUM_NBLOAD_WIDTH 2
-`define RV_ICCM_ONLY 1
-`define RV_BITMANIP_ZBC 0
-`define RV_BITMANIP_ZBS 0
-`define RV_FPGA_OPTIMIZE 0
-`define RV_LSU_NUM_NBLOAD 4
-`define RV_DIV_BIT 3
-`define RV_DIV_NEW 1
-`define RV_DMA_BUF_DEPTH 5
-`define RV_FAST_INTERRUPT_REDIRECT 1
-`define RV_BITMANIP_ZBP 0
-`define RV_BITMANIP_ZBA 0
-`define RV_LSU_STBUF_DEPTH 4
-`define RV_BITMANIP_ZBB 0
-`define RV_BITMANIP_ZBR 0
-`define RV_BITMANIP_ZBE 0
-`define RV_TIMER_LEGAL_EN 1
-`define RV_BITMANIP_ZBF 0
-`define REGWIDTH 32
-`define RV_CONFIG_KEY 32'hdeadbeef
-`define RV_BTB_INDEX1_HI 8
-`define RV_BTB_SIZE 256
-`define RV_BTB_BTAG_SIZE 6
-`define RV_BTB_FOLD2_INDEX_HASH 0
-`define RV_BTB_INDEX3_LO 16
-`define RV_BTB_INDEX2_HI 15
-`define RV_BTB_ARRAY_DEPTH 128
-`define RV_BTB_INDEX1_LO 2
-`define RV_BTB_ADDR_LO 2
-`define RV_BTB_INDEX3_HI 22
-`define RV_BTB_ADDR_HI 8
-`define RV_BTB_TOFFSET_SIZE 12
-`define RV_BTB_INDEX2_LO 9
-`define RV_BTB_BTAG_FOLD 0
-`define RV_BTB_ENABLE 1
-`define RV_XLEN 32
-`define RV_IFU_BUS_TAG 3
-`define RV_LSU_BUS_ID 1
-`define RV_IFU_BUS_PRTY 2
-`define RV_LSU_BUS_TAG 3
-`define RV_IFU_BUS_ID 1
-`define RV_SB_BUS_PRTY 2
-`define RV_LSU_BUS_PRTY 2
-`define RV_DMA_BUS_ID 1
-`define RV_SB_BUS_ID 1
-`define RV_BUS_PRTY_DEFAULT 2'h3
-`define RV_DMA_BUS_PRTY 2
-`define RV_SB_BUS_TAG 1
-`define RV_DMA_BUS_TAG 1
-`define RV_ICACHE_TAG_NUM_BYPASS 2
-`define RV_ICACHE_STATUS_BITS 1
-`define RV_ICACHE_BEAT_ADDR_HI 5
-`define RV_ICACHE_SCND_LAST 6
-`define RV_ICACHE_TAG_LO 13
-`define RV_ICACHE_BANK_WIDTH 8
-`define RV_ICACHE_DATA_CELL ram_512x71
-`define RV_ICACHE_NUM_BYPASS_WIDTH 2
-`define RV_ICACHE_WAYPACK 1
-`define RV_ICACHE_LN_SZ 64
-`define RV_ICACHE_NUM_BEATS 8
-`define RV_ICACHE_NUM_LINES_WAY 128
-`define RV_ICACHE_NUM_LINES_BANK 64
-`define RV_ICACHE_TAG_DEPTH 128
-`define RV_ICACHE_DATA_DEPTH 512
-`define RV_ICACHE_DATA_WIDTH 64
-`define RV_ICACHE_TAG_CELL ram_128x25
-`define RV_ICACHE_NUM_BYPASS 2
-`define RV_ICACHE_FDATA_WIDTH 71
-`define RV_ICACHE_NUM_LINES 256
-`define RV_ICACHE_DATA_INDEX_LO 4
-`define RV_ICACHE_BANK_BITS 1
-`define RV_ICACHE_TAG_NUM_BYPASS_WIDTH 2
-`define RV_ICACHE_2BANKS 1
-`define RV_ICACHE_BANKS_WAY 2
-`define RV_ICACHE_BANK_LO 3
-`define RV_ICACHE_ECC 1
-`define RV_ICACHE_INDEX_HI 12
-`define RV_ICACHE_TAG_INDEX_LO 6
-`define RV_ICACHE_TAG_BYPASS_ENABLE 1
-`define RV_ICACHE_BANK_HI 3
-`define RV_ICACHE_BEAT_BITS 3
-`define RV_ICACHE_BYPASS_ENABLE 1
-`define RV_ICACHE_NUM_WAYS 2
-`define RV_ICACHE_SIZE 16
-`define RV_NMI_VEC 'h11110000
-`define RV_DCCM_EADR 32'hf0040fff
-`define RV_DCCM_SIZE 4
-`define RV_DCCM_REGION 4'hf
-`define RV_DCCM_RESERVED 'h400
-`define RV_DCCM_INDEX_BITS 8
-`define RV_DCCM_ROWS 256
-`define RV_DCCM_FDATA_WIDTH 39
-`define RV_DCCM_NUM_BANKS_4 
-`define RV_DCCM_NUM_BANKS 4
-`define RV_DCCM_BITS 12
-`define RV_DCCM_DATA_WIDTH 32
-`define RV_DCCM_SIZE_4 
-`define RV_DCCM_OFFSET 28'h40000
-`define RV_DCCM_WIDTH_BITS 2
-`define RV_DCCM_BYTE_WIDTH 4
-`define RV_DCCM_ENABLE 1
-`define RV_DCCM_ECC_WIDTH 7
-`define RV_DCCM_BANK_BITS 2
-`define RV_DCCM_DATA_CELL ram_256x39
-`define RV_DCCM_SADR 32'hf0040000
-`define RV_LSU_SB_BITS 12
-`define RV_RESET_VEC 'haffff000
-`define RV_PIC_BITS 15
-`define RV_PIC_MEIGWCTRL_OFFSET 'h4000
-`define RV_PIC_MEIGWCTRL_MASK 'h3
-`define RV_PIC_MEIGWCLR_OFFSET 'h5000
-`define RV_PIC_MEIE_MASK 'h1
-`define RV_PIC_MEIP_MASK 'h0
-`define RV_PIC_MEIPT_COUNT 31
-`define RV_PIC_MEIPL_COUNT 31
-`define RV_PIC_MEIPT_MASK 'h0
-`define RV_PIC_BASE_ADDR 32'hf00c0000
-`define RV_PIC_MEIPL_MASK 'hf
-`define RV_PIC_INT_WORDS 1
-`define RV_PIC_MPICCFG_MASK 'h1
-`define RV_PIC_MEIPT_OFFSET 'h3004
-`define RV_PIC_TOTAL_INT_PLUS1 32
-`define RV_PIC_MEIPL_OFFSET 'h0000
-`define RV_PIC_MEIE_COUNT 31
-`define RV_PIC_MEIGWCTRL_COUNT 31
-`define RV_PIC_REGION 4'hf
-`define RV_PIC_MEIGWCLR_MASK 'h0
-`define RV_PIC_SIZE 32
-`define RV_PIC_MEIE_OFFSET 'h2000
-`define RV_PIC_MPICCFG_OFFSET 'h3000
-`define RV_PIC_MPICCFG_COUNT 1
-`define RV_PIC_MEIP_OFFSET 'h1000
-`define RV_PIC_TOTAL_INT 31
-`define RV_PIC_OFFSET 10'hc0000
-`define RV_PIC_MEIGWCLR_COUNT 31
-`define RV_PIC_MEIP_COUNT 1
-`define RV_TARGET default
-`define RV_NUMIREGS 32
-`undef RV_ASSERT_ON
-
-// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-// This is an automatically generated file by hshabbir on و 08:16:54 PKT ت 08 جون 2021
-//
-// cmd:    brqrv -target=default -set build_axi4 
-//
-
-//// `include "common_defines.vh"
-`undef RV_ASSERT_ON
-`define TEC_RV_ICG sky130_fd_sc_hd__dlclkp_1
-`define RV_PHYSICAL 1
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Function: Top wrapper file with eb1_brqrv/mem instantiated inside
-// Comments:
-//
-//********************************************************************************
-module eb1_brqrv_wrapper
-import eb1_pkg::*;
- #(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-(
-   input logic			             VPWR,
-   input logic				     VGND,
-   input logic                             clk,
-   input logic                             rst_l,
-   input logic                             dbg_rst_l,
-   input logic [31:1]                      rst_vec,
-   input logic                             nmi_int,
-   input logic [31:1]                      nmi_vec,
-   input logic [31:1]                      jtag_id,
-   input 				     uart_rx,
-
-
-   output logic [31:0]                     trace_rv_i_insn_ip,
-   output logic [31:0]                     trace_rv_i_address_ip,
-   output logic                            trace_rv_i_valid_ip,
-   output logic                            trace_rv_i_exception_ip,
-   output logic [4:0]                      trace_rv_i_ecause_ip,
-   output logic                            trace_rv_i_interrupt_ip,
-   output logic [31:0]                     trace_rv_i_tval_ip,
-
-   // Bus signals
-
-   //-------------------------- LSU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-   input  logic                            lsu_axi_rlast,
-
-   //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   input  logic                            ifu_axi_awready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   input  logic                            ifu_axi_wready,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   input  logic                            ifu_axi_bvalid,
-   output logic                            ifu_axi_bready,
-   input  logic [1:0]                      ifu_axi_bresp,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-   input  logic                            ifu_axi_rlast,
-
-   //-------------------------- SB AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            sb_axi_awvalid,
-   input  logic                            sb_axi_awready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_awid,
-   output logic [31:0]                     sb_axi_awaddr,
-   output logic [3:0]                      sb_axi_awregion,
-   output logic [7:0]                      sb_axi_awlen,
-   output logic [2:0]                      sb_axi_awsize,
-   output logic [1:0]                      sb_axi_awburst,
-   output logic                            sb_axi_awlock,
-   output logic [3:0]                      sb_axi_awcache,
-   output logic [2:0]                      sb_axi_awprot,
-   output logic [3:0]                      sb_axi_awqos,
-
-   output logic                            sb_axi_wvalid,
-   input  logic                            sb_axi_wready,
-   output logic [63:0]                     sb_axi_wdata,
-   output logic [7:0]                      sb_axi_wstrb,
-   output logic                            sb_axi_wlast,
-
-   input  logic                            sb_axi_bvalid,
-   output logic                            sb_axi_bready,
-   input  logic [1:0]                      sb_axi_bresp,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_bid,
-
-   // AXI Read Channels
-   output logic                            sb_axi_arvalid,
-   input  logic                            sb_axi_arready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_arid,
-   output logic [31:0]                     sb_axi_araddr,
-   output logic [3:0]                      sb_axi_arregion,
-   output logic [7:0]                      sb_axi_arlen,
-   output logic [2:0]                      sb_axi_arsize,
-   output logic [1:0]                      sb_axi_arburst,
-   output logic                            sb_axi_arlock,
-   output logic [3:0]                      sb_axi_arcache,
-   output logic [2:0]                      sb_axi_arprot,
-   output logic [3:0]                      sb_axi_arqos,
-
-   input  logic                            sb_axi_rvalid,
-   output logic                            sb_axi_rready,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_rid,
-   input  logic [63:0]                     sb_axi_rdata,
-   input  logic [1:0]                      sb_axi_rresp,
-   input  logic                            sb_axi_rlast,
-
-   //-------------------------- DMA AXI signals--------------------------
-   // AXI Write Channels
-   input  logic                            dma_axi_awvalid,
-   output logic                            dma_axi_awready,
-   input  logic [pt.DMA_BUS_TAG-1:0]       dma_axi_awid,
-   input  logic [31:0]                     dma_axi_awaddr,
-   input  logic [2:0]                      dma_axi_awsize,
-   input  logic [2:0]                      dma_axi_awprot,
-   input  logic [7:0]                      dma_axi_awlen,
-   input  logic [1:0]                      dma_axi_awburst,
-
-
-   input  logic                            dma_axi_wvalid,
-   output logic                            dma_axi_wready,
-   input  logic [63:0]                     dma_axi_wdata,
-   input  logic [7:0]                      dma_axi_wstrb,
-   input  logic                            dma_axi_wlast,
-
-   output logic                            dma_axi_bvalid,
-   input  logic                            dma_axi_bready,
-   output logic [1:0]                      dma_axi_bresp,
-   output logic [pt.DMA_BUS_TAG-1:0]       dma_axi_bid,
-
-   // AXI Read Channels
-   input  logic                            dma_axi_arvalid,
-   output logic                            dma_axi_arready,
-   input  logic [pt.DMA_BUS_TAG-1:0]       dma_axi_arid,
-   input  logic [31:0]                     dma_axi_araddr,
-   input  logic [2:0]                      dma_axi_arsize,
-   input  logic [2:0]                      dma_axi_arprot,
-   input  logic [7:0]                      dma_axi_arlen,
-   input  logic [1:0]                      dma_axi_arburst,
-
-   output logic                            dma_axi_rvalid,
-   input  logic                            dma_axi_rready,
-   output logic [pt.DMA_BUS_TAG-1:0]       dma_axi_rid,
-   output logic [63:0]                     dma_axi_rdata,
-   output logic [1:0]                      dma_axi_rresp,
-   output logic                            dma_axi_rlast,
-
-
-`ifdef RV_BUILD_AHB_LITE
- //// AHB LITE BUS
-   output logic [31:0]                     haddr,
-   output logic [2:0]                      hburst,
-   output logic                            hmastlock,
-   output logic [3:0]                      hprot,
-   output logic [2:0]                      hsize,
-   output logic [1:0]                      htrans,
-   output logic                            hwrite,
-
-   input logic [63:0]                      hrdata,
-   input logic                             hready,
-   input logic                             hresp,
-
-   // LSU AHB Master
-   output logic [31:0]                     lsu_haddr,
-   output logic [2:0]                      lsu_hburst,
-   output logic                            lsu_hmastlock,
-   output logic [3:0]                      lsu_hprot,
-   output logic [2:0]                      lsu_hsize,
-   output logic [1:0]                      lsu_htrans,
-   output logic                            lsu_hwrite,
-   output logic [63:0]                     lsu_hwdata,
-
-   input logic [63:0]                      lsu_hrdata,
-   input logic                             lsu_hready,
-   input logic                             lsu_hresp,
-   // Debug Syster Bus AHB
-   output logic [31:0]                     sb_haddr,
-   output logic [2:0]                      sb_hburst,
-   output logic                            sb_hmastlock,
-   output logic [3:0]                      sb_hprot,
-   output logic [2:0]                      sb_hsize,
-   output logic [1:0]                      sb_htrans,
-   output logic                            sb_hwrite,
-   output logic [63:0]                     sb_hwdata,
-
-   input  logic [63:0]                     sb_hrdata,
-   input  logic                            sb_hready,
-   input  logic                            sb_hresp,
-
-   // DMA Slave
-   input logic                             dma_hsel,
-   input logic [31:0]                      dma_haddr,
-   input logic [2:0]                       dma_hburst,
-   input logic                             dma_hmastlock,
-   input logic [3:0]                       dma_hprot,
-   input logic [2:0]                       dma_hsize,
-   input logic [1:0]                       dma_htrans,
-   input logic                             dma_hwrite,
-   input logic [63:0]                      dma_hwdata,
-   input logic                             dma_hreadyin,
-
-   output logic [63:0]                     dma_hrdata,
-   output logic                            dma_hreadyout,
-   output logic                            dma_hresp,
-`endif
-   // clk ratio signals
-   input logic                             lsu_bus_clk_en, // Clock ratio b/w cpu core clk & AHB master interface
-   input logic                             ifu_bus_clk_en, // Clock ratio b/w cpu core clk & AHB master interface
-   input logic                             dbg_bus_clk_en, // Clock ratio b/w cpu core clk & AHB master interface
-   input logic                             dma_bus_clk_en, // Clock ratio b/w cpu core clk & AHB slave interface
-
- // all of these test inputs are brought to top-level; must be tied off based on usage by physical design (ie. icache or not, iccm or not, dccm or not)
-
-   input                                   eb1_dccm_ext_in_pkt_t  [pt.DCCM_NUM_BANKS-1:0] dccm_ext_in_pkt,
-   input                                   eb1_ccm_ext_in_pkt_t  [pt.ICCM_NUM_BANKS-1:0] iccm_ext_in_pkt,
-   input                                   eb1_ic_data_ext_in_pkt_t  [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] ic_data_ext_in_pkt,
-   input                                   eb1_ic_tag_ext_in_pkt_t  [pt.ICACHE_NUM_WAYS-1:0] ic_tag_ext_in_pkt,
-
-   input logic                             timer_int,
-   input logic                             soft_int,
-   input logic [pt.PIC_TOTAL_INT:1]        extintsrc_req,
-
-   output logic                            dec_tlu_perfcnt0, // toggles when slot0 perf counter 0 has an event inc
-   output logic                            dec_tlu_perfcnt1,
-   output logic                            dec_tlu_perfcnt2,
-   output logic                            dec_tlu_perfcnt3,
-
-   // ports added by the soc team
-   input logic                             jtag_tck,    // JTAG clk
-   input logic                             jtag_tms,    // JTAG TMS
-   input logic                             jtag_tdi,    // JTAG tdi
-   input logic                             jtag_trst_n, // JTAG Reset
-   output logic                            jtag_tdo,    // JTAG TDO
-
-   input logic [31:4] core_id,
-
-   // external MPC halt/run interface
-   input logic                             mpc_debug_halt_req, // Async halt request
-   input logic                             mpc_debug_run_req,  // Async run request
-   input logic                             mpc_reset_run_req,  // Run/halt after reset
-   output logic                            mpc_debug_halt_ack, // Halt ack
-   output logic                            mpc_debug_run_ack,  // Run ack
-   output logic                            debug_brkpt_status, // debug breakpoint
-
-   input logic                             i_cpu_halt_req,      // Async halt req to CPU
-   output logic                            o_cpu_halt_ack,      // core response to halt
-   output logic                            o_cpu_halt_status,   // 1'b1 indicates core is halted
-   output logic                            o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-   input logic                             i_cpu_run_req, // Async restart req to CPU
-   output logic                            o_cpu_run_ack, // Core response to run req
-   input logic                             scan_mode,     // To enable scan mode
-   input logic                             mbist_mode,     // to enable mbist
-   input [15:0] 			    CLKS_PER_BIT
-);
-
-   logic                             active_l2clk;
-   logic                             free_l2clk;
-
-   // DCCM ports
-   logic         dccm_wren;
-   logic         dccm_rden;
-   logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo;
-   logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi;
-   logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo;
-   logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi;
-
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_lo;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_hi;
-
-   // PIC ports
-
-   // Icache & Itag ports
-   logic [31:1]  ic_rw_addr;
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_wr_en  ;     // Which way to write
-   logic         ic_rd_en ;
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_tag_valid;   // Valid from the I$ tag valid outside (in flops).
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_rd_hit;      // ic_rd_hit[3:0]
-   logic         ic_tag_perr;                       // Ic tag parity error
-
-   logic [pt.ICACHE_INDEX_HI:3]  ic_debug_addr;     // Read/Write addresss to the Icache.
-   logic         ic_debug_rd_en;                    // Icache debug rd
-   logic         ic_debug_wr_en;                    // Icache debug wr
-   logic         ic_debug_tag_array;                // Debug tag array
-   logic [pt.ICACHE_NUM_WAYS-1:0]   ic_debug_way;   // Debug way. Rd or Wr.
-
-   logic [25:0]  ictag_debug_rd_data;               // Debug icache tag.
-   logic [pt.ICACHE_BANKS_WAY-1:0][70:0]  ic_wr_data;
-   logic [63:0]  ic_rd_data;
-   logic [70:0]  ic_debug_rd_data;                  // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   logic [70:0]  ic_debug_wr_data;                  // Debug wr cache.
-
-   logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr;       // ecc error per bank
-   logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr;       // parity error per bank
-
-   logic [63:0]  ic_premux_data;
-   logic         ic_sel_premux_data;
-
-   // ICCM ports
-   logic [pt.ICCM_BITS-1:1]    iccm_rw_addr;
-   logic           iccm_wren;
-   logic           iccm_rden;
-   logic [2:0]     iccm_wr_size;
-   logic [77:0]    iccm_wr_data;
-   logic           iccm_buf_correct_ecc;
-   logic           iccm_correction_state;
-
-   logic [63:0]    iccm_rd_data;
-   logic [77:0]    iccm_rd_data_ecc;
- 
-   logic	 core_rst;
-   logic        core_rst_l;                         // Core reset including rst_l and dbg_rst_l
-   logic        jtag_tdoEn;
-
-   logic        dccm_clk_override;
-   logic        icm_clk_override;
-   logic        dec_tlu_core_ecc_disable;
-
-
-   // zero out the signals not presented at the wrapper instantiation level
-`ifdef RV_BUILD_AXI4
-
- //// AHB LITE BUS
-   logic [31:0]              haddr;
-   logic [2:0]               hburst;
-   logic                     hmastlock;
-   logic [3:0]               hprot;
-   logic [2:0]               hsize;
-   logic [1:0]               htrans;
-   logic                     hwrite;
-
-   logic [63:0]              hrdata;
-   logic                     hready;
-   logic                     hresp;
-
-   // LSU AHB Master
-   logic [31:0]              lsu_haddr;
-   logic [2:0]               lsu_hburst;
-   logic                     lsu_hmastlock;
-   logic [3:0]               lsu_hprot;
-   logic [2:0]               lsu_hsize;
-   logic [1:0]               lsu_htrans;
-   logic                     lsu_hwrite;
-   logic [63:0]              lsu_hwdata;
-
-   logic [63:0]              lsu_hrdata;
-   logic                     lsu_hready;
-   logic                     lsu_hresp;
-   // Debug Syster Bus AHB
-   logic [31:0]              sb_haddr;
-   logic [2:0]               sb_hburst;
-   logic                     sb_hmastlock;
-   logic [3:0]               sb_hprot;
-   logic [2:0]               sb_hsize;
-   logic [1:0]               sb_htrans;
-   logic                     sb_hwrite;
-   logic [63:0]              sb_hwdata;
-
-    logic [63:0]             sb_hrdata;
-    logic                    sb_hready;
-    logic                    sb_hresp;
-
-   // DMA Slave
-   logic                     dma_hsel;
-   logic [31:0]              dma_haddr;
-   logic [2:0]               dma_hburst;
-   logic                     dma_hmastlock;
-   logic [3:0]               dma_hprot;
-   logic [2:0]               dma_hsize;
-   logic [1:0]               dma_htrans;
-   logic                     dma_hwrite;
-   logic [63:0]              dma_hwdata;
-   logic                     dma_hreadyin;
-
-   logic [63:0]              dma_hrdata;
-   logic                     dma_hreadyout;
-   logic                     dma_hresp;
-
-
-
-   // AHB
-   assign  hrdata[63:0]                           = '0;
-   assign  hready                                 = '0;
-   assign  hresp                                  = '0;
-   // LSU
-   assign  lsu_hrdata[63:0]                       = '0;
-   assign  lsu_hready                             = '0;
-   assign  lsu_hresp                              = '0;
-   // Debu
-   assign  sb_hrdata[63:0]                        = '0;
-   assign  sb_hready                              = '0;
-   assign  sb_hresp                               = '0;
-
-   // DMA
-   assign  dma_hsel                               = '0;
-   assign  dma_haddr[31:0]                        = '0;
-   assign  dma_hburst[2:0]                        = '0;
-   assign  dma_hmastlock                          = '0;
-   assign  dma_hprot[3:0]                         = '0;
-   assign  dma_hsize[2:0]                         = '0;
-   assign  dma_htrans[1:0]                        = '0;
-   assign  dma_hwrite                             = '0;
-   assign  dma_hwdata[63:0]                       = '0;
-   assign  dma_hreadyin                           = '0;
-
-`endif //  `ifdef RV_BUILD_AXI4
-
-
-`ifdef RV_BUILD_AHB_LITE
-   wire                            lsu_axi_awvalid;
-   wire                            lsu_axi_awready;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid;
-   wire [31:0]                     lsu_axi_awaddr;
-   wire [3:0]                      lsu_axi_awregion;
-   wire [7:0]                      lsu_axi_awlen;
-   wire [2:0]                      lsu_axi_awsize;
-   wire [1:0]                      lsu_axi_awburst;
-   wire                            lsu_axi_awlock;
-   wire [3:0]                      lsu_axi_awcache;
-   wire [2:0]                      lsu_axi_awprot;
-   wire [3:0]                      lsu_axi_awqos;
-
-   wire                            lsu_axi_wvalid;
-   wire                            lsu_axi_wready;
-   wire [63:0]                     lsu_axi_wdata;
-   wire [7:0]                      lsu_axi_wstrb;
-   wire                            lsu_axi_wlast;
-
-   wire                            lsu_axi_bvalid;
-   wire                            lsu_axi_bready;
-   wire [1:0]                      lsu_axi_bresp;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid;
-
-   // AXI Read Channels
-   wire                            lsu_axi_arvalid;
-   wire                            lsu_axi_arready;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid;
-   wire [31:0]                     lsu_axi_araddr;
-   wire [3:0]                      lsu_axi_arregion;
-   wire [7:0]                      lsu_axi_arlen;
-   wire [2:0]                      lsu_axi_arsize;
-   wire [1:0]                      lsu_axi_arburst;
-   wire                            lsu_axi_arlock;
-   wire [3:0]                      lsu_axi_arcache;
-   wire [2:0]                      lsu_axi_arprot;
-   wire [3:0]                      lsu_axi_arqos;
-
-   wire                            lsu_axi_rvalid;
-   wire                            lsu_axi_rready;
-   wire [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid;
-   wire [63:0]                     lsu_axi_rdata;
-   wire [1:0]                      lsu_axi_rresp;
-   wire                            lsu_axi_rlast;
-
-   //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   wire                            ifu_axi_awvalid;
-   wire                            ifu_axi_awready;
-   wire [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid;
-   wire [31:0]                     ifu_axi_awaddr;
-   wire [3:0]                      ifu_axi_awregion;
-   wire [7:0]                      ifu_axi_awlen;
-   wire [2:0]                      ifu_axi_awsize;
-   wire [1:0]                      ifu_axi_awburst;
-   wire                            ifu_axi_awlock;
-   wire [3:0]                      ifu_axi_awcache;
-   wire [2:0]                      ifu_axi_awprot;
-   wire [3:0]                      ifu_axi_awqos;
-
-   wire                            ifu_axi_wvalid;
-   wire                            ifu_axi_wready;
-   wire [63:0]                     ifu_axi_wdata;
-   wire [7:0]                      ifu_axi_wstrb;
-   wire                            ifu_axi_wlast;
-
-   wire                            ifu_axi_bvalid;
-   wire                            ifu_axi_bready;
-   wire [1:0]                      ifu_axi_bresp;
-   wire [pt.IFU_BUS_TAG-1:0]      ifu_axi_bid;
-
-   // AXI Read Channels
-   wire                            ifu_axi_arvalid;
-   wire                            ifu_axi_arready;
-   wire [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid;
-   wire [31:0]                     ifu_axi_araddr;
-   wire [3:0]                      ifu_axi_arregion;
-   wire [7:0]                      ifu_axi_arlen;
-   wire [2:0]                      ifu_axi_arsize;
-   wire [1:0]                      ifu_axi_arburst;
-   wire                            ifu_axi_arlock;
-   wire [3:0]                      ifu_axi_arcache;
-   wire [2:0]                      ifu_axi_arprot;
-   wire [3:0]                      ifu_axi_arqos;
-
-   wire                            ifu_axi_rvalid;
-   wire                            ifu_axi_rready;
-   wire [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid;
-   wire [63:0]                     ifu_axi_rdata;
-   wire [1:0]                      ifu_axi_rresp;
-   wire                            ifu_axi_rlast;
-
-   //-------------------------- SB AXI signals--------------------------
-   // AXI Write Channels
-   wire                            sb_axi_awvalid;
-   wire                            sb_axi_awready;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_awid;
-   wire [31:0]                     sb_axi_awaddr;
-   wire [3:0]                      sb_axi_awregion;
-   wire [7:0]                      sb_axi_awlen;
-   wire [2:0]                      sb_axi_awsize;
-   wire [1:0]                      sb_axi_awburst;
-   wire                            sb_axi_awlock;
-   wire [3:0]                      sb_axi_awcache;
-   wire [2:0]                      sb_axi_awprot;
-   wire [3:0]                      sb_axi_awqos;
-
-   wire                            sb_axi_wvalid;
-   wire                            sb_axi_wready;
-   wire [63:0]                     sb_axi_wdata;
-   wire [7:0]                      sb_axi_wstrb;
-   wire                            sb_axi_wlast;
-
-   wire                            sb_axi_bvalid;
-   wire                            sb_axi_bready;
-   wire [1:0]                      sb_axi_bresp;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_bid;
-
-   // AXI Read Channels
-   wire                            sb_axi_arvalid;
-   wire                            sb_axi_arready;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_arid;
-   wire [31:0]                     sb_axi_araddr;
-   wire [3:0]                      sb_axi_arregion;
-   wire [7:0]                      sb_axi_arlen;
-   wire [2:0]                      sb_axi_arsize;
-   wire [1:0]                      sb_axi_arburst;
-   wire                            sb_axi_arlock;
-   wire [3:0]                      sb_axi_arcache;
-   wire [2:0]                      sb_axi_arprot;
-   wire [3:0]                      sb_axi_arqos;
-
-   wire                            sb_axi_rvalid;
-   wire                            sb_axi_rready;
-   wire [pt.SB_BUS_TAG-1:0]        sb_axi_rid;
-   wire [63:0]                     sb_axi_rdata;
-   wire [1:0]                      sb_axi_rresp;
-   wire                            sb_axi_rlast;
-
-   //-------------------------- DMA AXI signals--------------------------
-   // AXI Write Channels
-   wire                         dma_axi_awvalid;
-   wire                         dma_axi_awready;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_awid;
-   wire [31:0]                  dma_axi_awaddr;
-   wire [2:0]                   dma_axi_awsize;
-   wire [2:0]                   dma_axi_awprot;
-   wire [7:0]                   dma_axi_awlen;
-   wire [1:0]                   dma_axi_awburst;
-
-
-   wire                         dma_axi_wvalid;
-   wire                         dma_axi_wready;
-   wire [63:0]                  dma_axi_wdata;
-   wire [7:0]                   dma_axi_wstrb;
-   wire                         dma_axi_wlast;
-
-   wire                         dma_axi_bvalid;
-   wire                         dma_axi_bready;
-   wire [1:0]                   dma_axi_bresp;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_bid;
-
-   // AXI Read Channels
-   wire                         dma_axi_arvalid;
-   wire                         dma_axi_arready;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_arid;
-   wire [31:0]                  dma_axi_araddr;
-   wire [2:0]                   dma_axi_arsize;
-   wire [2:0]                   dma_axi_arprot;
-   wire [7:0]                   dma_axi_arlen;
-   wire [1:0]                   dma_axi_arburst;
-
-   wire                         dma_axi_rvalid;
-   wire                         dma_axi_rready;
-   wire [pt.DMA_BUS_TAG-1:0]    dma_axi_rid;
-   wire [63:0]                  dma_axi_rdata;
-   wire [1:0]                   dma_axi_rresp;
-   wire                         dma_axi_rlast;
-
-   // AXI
-   assign ifu_axi_awready = 1'b1;
-   assign ifu_axi_wready = 1'b1;
-   assign ifu_axi_bvalid = '0;
-   assign ifu_axi_bresp[1:0] = '0;
-   assign ifu_axi_bid[pt.IFU_BUS_TAG-1:0] = '0;
-
-`endif //  `ifdef RV_BUILD_AHB_LITE
-
-   logic                   dmi_reg_en;
-   logic [6:0]             dmi_reg_addr;
-   logic                   dmi_reg_wr_en;
-   logic [31:0]            dmi_reg_wdata;
-   logic [31:0]            dmi_reg_rdata;
-   logic rx_dv_i;
-   logic [7:0] rx_byte_i;
-   logic iccm_instr_we;
-   logic [13:0] iccm_instr_addr;
-   logic [31:0] iccm_instr_wdata;
-   // UART Receiver
-
-
-   // Instantiate the eb1_brqrv core
-   eb1_brqrv #(.pt(pt)) brqrv (
-                                .clk(clk),
-                                .rst_l(core_rst),
-                                .*
-                                );
-
-   // Instantiate the mem
-   eb1_mem  #(.pt(pt)) mem (
-                             .clk(active_l2clk),
-                             .rst_l(rst_l),
-                             .iccm_rw_addr((core_rst) ? iccm_rw_addr : iccm_instr_addr[10:0]),
-                             .iccm_wren((core_rst) ? iccm_wren : iccm_instr_we),
-                             .iccm_wr_data((core_rst) ? iccm_wr_data : {7'h0,iccm_instr_wdata,7'h0,iccm_instr_wdata}),
-                             .iccm_wr_size((core_rst) ? iccm_wr_size : 3'b010),
-                             .*
-                             );
-   
-   eb1_iccm_controller iccm_controller(
-		.clk_i(clk),
-		.rst_ni(rst_l),
-		.rx_dv_i(rx_dv_i),
-		.rx_byte_i(rx_byte_i),
-		.we_o(iccm_instr_we),
-		.addr_o(iccm_instr_addr),
-		.wdata_o(iccm_instr_wdata),
-		.reset_o(core_rst)
-	);                          
-   eb1_uart_rx_prog uart_rx_m(
-		.i_Clock(clk),
-		.rst_ni(rst_l),
-		.i_Rx_Serial(uart_rx),
-		.CLKS_PER_BIT(CLKS_PER_BIT),
-		.o_Rx_DV(rx_dv_i),
-		.o_Rx_Byte(rx_byte_i)
-	);
- 
-
-   //  JTAG/DMI instance
-   dmi_wrapper  dmi_wrapper (
-    // JTAG signals
-    .trst_n      (jtag_trst_n),     // JTAG reset
-    .tck         (jtag_tck),        // JTAG clock
-    .tms         (jtag_tms),        // Test mode select
-    .tdi         (jtag_tdi),        // Test Data Input
-    .tdo         (jtag_tdo),        // Test Data Output
-    .tdoEnable   (),
-    // Processor Signals
-    .core_rst_n  (dbg_rst_l),       // Debug reset, active low
-    .core_clk    (clk),             // Core clock
-    .jtag_id     (jtag_id),         // JTAG ID
-    .rd_data     (dmi_reg_rdata),   // Read data from  Processor
-    .reg_wr_data (dmi_reg_wdata),   // Write data to Processor
-    .reg_wr_addr (dmi_reg_addr),    // Write address to Processor
-    .reg_en      (dmi_reg_en),      // Write interface bit to Processor
-    .reg_wr_en   (dmi_reg_wr_en),   // Write enable to Processor
-    .dmi_hard_reset   ()
-   );
-
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Function: Top level brqrv core file
-// Comments:
-//
-//********************************************************************************
-module eb1_brqrv
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic                  clk,
-   input logic                  rst_l,
-   input logic                  dbg_rst_l,
-   input logic [31:1]           rst_vec,
-   input logic                  nmi_int,
-   input logic [31:1]           nmi_vec,
-   output logic                 core_rst_l,   // This is "rst_l | dbg_rst_l"
-
-   output logic                 active_l2clk,
-   output logic                 free_l2clk,
-
-   output logic [31:0] trace_rv_i_insn_ip,
-   output logic [31:0] trace_rv_i_address_ip,
-   output logic   trace_rv_i_valid_ip,
-   output logic   trace_rv_i_exception_ip,
-   output logic [4:0]  trace_rv_i_ecause_ip,
-   output logic   trace_rv_i_interrupt_ip,
-   output logic [31:0] trace_rv_i_tval_ip,
-
-
-   output logic                 dccm_clk_override,
-   output logic                 icm_clk_override,
-   output logic                 dec_tlu_core_ecc_disable,
-
-   // external halt/run interface
-   input logic  i_cpu_halt_req,    // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,     // Asynchronous Restart request to CPU
-   output logic o_cpu_halt_ack,    // Core Acknowledge to Halt request
-   output logic o_cpu_halt_status, // 1'b1 indicates processor is halted
-   output logic o_cpu_run_ack,     // Core Acknowledge to run request
-   output logic o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id, // CORE ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req, // Async halt request
-   input logic mpc_debug_run_req, // Async run request
-   input logic mpc_reset_run_req, // Run/halt after reset
-   output logic mpc_debug_halt_ack, // Halt ack
-   output logic mpc_debug_run_ack, // Run ack
-   output logic debug_brkpt_status, // debug breakpoint
-
-   output logic dec_tlu_perfcnt0, // toggles when slot0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1,
-   output logic dec_tlu_perfcnt2,
-   output logic dec_tlu_perfcnt3,
-
-   // DCCM ports
-   output logic                          dccm_wren,
-   output logic                          dccm_rden,
-   output logic [pt.DCCM_BITS-1:0]          dccm_wr_addr_lo,
-   output logic [pt.DCCM_BITS-1:0]          dccm_wr_addr_hi,
-   output logic [pt.DCCM_BITS-1:0]          dccm_rd_addr_lo,
-   output logic [pt.DCCM_BITS-1:0]          dccm_rd_addr_hi,
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_wr_data_lo,
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_wr_data_hi,
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]    dccm_rd_data_lo,
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]    dccm_rd_data_hi,
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]           iccm_rw_addr,
-   output logic                  iccm_wren,
-   output logic                  iccm_rden,
-   output logic [2:0]            iccm_wr_size,
-   output logic [77:0]           iccm_wr_data,
-   output logic                  iccm_buf_correct_ecc,
-   output logic                  iccm_correction_state,
-
-   input  logic [63:0]          iccm_rd_data,
-   input  logic [77:0]           iccm_rd_data_ecc,
-
-   // ICache , ITAG  ports
-   output logic [31:1]           ic_rw_addr,
-   output logic [pt.ICACHE_NUM_WAYS-1:0]            ic_tag_valid,
-   output logic [pt.ICACHE_NUM_WAYS-1:0]            ic_wr_en,
-   output logic                  ic_rd_en,
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0][70:0]               ic_wr_data,         // Data to fill to the Icache. With ECC
-   input  logic [63:0]               ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]               ic_debug_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]               ictag_debug_rd_data,// Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,   // Debug wr cache.
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-   output logic [63:0]               ic_premux_data,     // Premux data to be muxed with each way of the Icache.
-   output logic                      ic_sel_premux_data, // Select premux data
-
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]            ic_rd_hit,
-   input  logic                  ic_tag_perr,        // Icache Tag parity error
-
-   //-------------------------- LSU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-   input  logic                            lsu_axi_rlast,
-
-   //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   input  logic                            ifu_axi_awready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   input  logic                            ifu_axi_wready,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   input  logic                            ifu_axi_bvalid,
-   output logic                            ifu_axi_bready,
-   input  logic [1:0]                      ifu_axi_bresp,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-   input  logic                            ifu_axi_rlast,
-
-   //-------------------------- SB AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            sb_axi_awvalid,
-   input  logic                            sb_axi_awready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_awid,
-   output logic [31:0]                     sb_axi_awaddr,
-   output logic [3:0]                      sb_axi_awregion,
-   output logic [7:0]                      sb_axi_awlen,
-   output logic [2:0]                      sb_axi_awsize,
-   output logic [1:0]                      sb_axi_awburst,
-   output logic                            sb_axi_awlock,
-   output logic [3:0]                      sb_axi_awcache,
-   output logic [2:0]                      sb_axi_awprot,
-   output logic [3:0]                      sb_axi_awqos,
-
-   output logic                            sb_axi_wvalid,
-   input  logic                            sb_axi_wready,
-   output logic [63:0]                     sb_axi_wdata,
-   output logic [7:0]                      sb_axi_wstrb,
-   output logic                            sb_axi_wlast,
-
-   input  logic                            sb_axi_bvalid,
-   output logic                            sb_axi_bready,
-   input  logic [1:0]                      sb_axi_bresp,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_bid,
-
-   // AXI Read Channels
-   output logic                            sb_axi_arvalid,
-   input  logic                            sb_axi_arready,
-   output logic [pt.SB_BUS_TAG-1:0]        sb_axi_arid,
-   output logic [31:0]                     sb_axi_araddr,
-   output logic [3:0]                      sb_axi_arregion,
-   output logic [7:0]                      sb_axi_arlen,
-   output logic [2:0]                      sb_axi_arsize,
-   output logic [1:0]                      sb_axi_arburst,
-   output logic                            sb_axi_arlock,
-   output logic [3:0]                      sb_axi_arcache,
-   output logic [2:0]                      sb_axi_arprot,
-   output logic [3:0]                      sb_axi_arqos,
-
-   input  logic                            sb_axi_rvalid,
-   output logic                            sb_axi_rready,
-   input  logic [pt.SB_BUS_TAG-1:0]        sb_axi_rid,
-   input  logic [63:0]                     sb_axi_rdata,
-   input  logic [1:0]                      sb_axi_rresp,
-   input  logic                            sb_axi_rlast,
-
-   //-------------------------- DMA AXI signals--------------------------
-   // AXI Write Channels
-   input  logic                         dma_axi_awvalid,
-   output logic                         dma_axi_awready,
-   input  logic [pt.DMA_BUS_TAG-1:0]    dma_axi_awid,
-   input  logic [31:0]                  dma_axi_awaddr,
-   input  logic [2:0]                   dma_axi_awsize,
-   input  logic [2:0]                   dma_axi_awprot,
-   input  logic [7:0]                   dma_axi_awlen,
-   input  logic [1:0]                   dma_axi_awburst,
-
-
-   input  logic                         dma_axi_wvalid,
-   output logic                         dma_axi_wready,
-   input  logic [63:0]                  dma_axi_wdata,
-   input  logic [7:0]                   dma_axi_wstrb,
-   input  logic                         dma_axi_wlast,
-
-   output logic                         dma_axi_bvalid,
-   input  logic                         dma_axi_bready,
-   output logic [1:0]                   dma_axi_bresp,
-   output logic [pt.DMA_BUS_TAG-1:0]    dma_axi_bid,
-
-   // AXI Read Channels
-   input  logic                         dma_axi_arvalid,
-   output logic                         dma_axi_arready,
-   input  logic [pt.DMA_BUS_TAG-1:0]    dma_axi_arid,
-   input  logic [31:0]                  dma_axi_araddr,
-   input  logic [2:0]                   dma_axi_arsize,
-   input  logic [2:0]                   dma_axi_arprot,
-   input  logic [7:0]                   dma_axi_arlen,
-   input  logic [1:0]                   dma_axi_arburst,
-
-   output logic                         dma_axi_rvalid,
-   input  logic                         dma_axi_rready,
-   output logic [pt.DMA_BUS_TAG-1:0]    dma_axi_rid,
-   output logic [63:0]                  dma_axi_rdata,
-   output logic [1:0]                   dma_axi_rresp,
-   output logic                         dma_axi_rlast,
-
-
- //// AHB LITE BUS
-   output logic [31:0]           haddr,
-   output logic [2:0]            hburst,
-   output logic                  hmastlock,
-   output logic [3:0]            hprot,
-   output logic [2:0]            hsize,
-   output logic [1:0]            htrans,
-   output logic                  hwrite,
-
-   input  logic [63:0]           hrdata,
-   input  logic                  hready,
-   input  logic                  hresp,
-
-   // LSU AHB Master
-   output logic [31:0]          lsu_haddr,
-   output logic [2:0]           lsu_hburst,
-   output logic                 lsu_hmastlock,
-   output logic [3:0]           lsu_hprot,
-   output logic [2:0]           lsu_hsize,
-   output logic [1:0]           lsu_htrans,
-   output logic                 lsu_hwrite,
-   output logic [63:0]          lsu_hwdata,
-
-   input  logic [63:0]          lsu_hrdata,
-   input  logic                 lsu_hready,
-   input  logic                 lsu_hresp,
-
-   //System Bus Debug Master
-   output logic [31:0]          sb_haddr,
-   output logic [2:0]           sb_hburst,
-   output logic                 sb_hmastlock,
-   output logic [3:0]           sb_hprot,
-   output logic [2:0]           sb_hsize,
-   output logic [1:0]           sb_htrans,
-   output logic                 sb_hwrite,
-   output logic [63:0]          sb_hwdata,
-
-   input  logic [63:0]          sb_hrdata,
-   input  logic                 sb_hready,
-   input  logic                 sb_hresp,
-
-   // DMA Slave
-   input logic                   dma_hsel,
-   input logic [31:0]            dma_haddr,
-   input logic [2:0]             dma_hburst,
-   input logic                   dma_hmastlock,
-   input logic [3:0]             dma_hprot,
-   input logic [2:0]             dma_hsize,
-   input logic [1:0]             dma_htrans,
-   input logic                   dma_hwrite,
-   input logic [63:0]            dma_hwdata,
-   input logic                   dma_hreadyin,
-
-   output  logic [63:0]          dma_hrdata,
-   output  logic                 dma_hreadyout,
-   output  logic                 dma_hresp,
-
-   input   logic                 lsu_bus_clk_en,
-   input   logic                 ifu_bus_clk_en,
-   input   logic                 dbg_bus_clk_en,
-   input   logic                 dma_bus_clk_en,
-
-   input logic                  dmi_reg_en,                // read or write
-   input logic [6:0]            dmi_reg_addr,              // address of DM register
-   input logic                  dmi_reg_wr_en,             // write instruction
-   input logic [31:0]           dmi_reg_wdata,             // write data
-   output logic [31:0]          dmi_reg_rdata,
-
-   input logic [pt.PIC_TOTAL_INT:1]           extintsrc_req,
-   input logic                   timer_int,
-   input logic                   soft_int,
-   input logic                   scan_mode
-);
-
-
-
-
-   logic [63:0]                  hwdata_nc;
-   //----------------------------------------------------------------------
-   //
-   //----------------------------------------------------------------------
-
-   logic                         ifu_pmu_instr_aligned;
-   logic                         ifu_ic_error_start;
-   logic                         ifu_iccm_rd_ecc_single_err;
-
-   logic                         lsu_axi_awready_ahb;
-   logic                         lsu_axi_wready_ahb;
-   logic                         lsu_axi_bvalid_ahb;
-   logic                         lsu_axi_bready_ahb;
-   logic [1:0]                   lsu_axi_bresp_ahb;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_bid_ahb;
-   logic                         lsu_axi_arready_ahb;
-   logic                         lsu_axi_rvalid_ahb;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_rid_ahb;
-   logic [63:0]                  lsu_axi_rdata_ahb;
-   logic [1:0]                   lsu_axi_rresp_ahb;
-   logic                         lsu_axi_rlast_ahb;
-
-   logic                         lsu_axi_awready_int;
-   logic                         lsu_axi_wready_int;
-   logic                         lsu_axi_bvalid_int;
-   logic                         lsu_axi_bready_int;
-   logic [1:0]                   lsu_axi_bresp_int;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_bid_int;
-   logic                         lsu_axi_arready_int;
-   logic                         lsu_axi_rvalid_int;
-   logic [pt.LSU_BUS_TAG-1:0]    lsu_axi_rid_int;
-   logic [63:0]                  lsu_axi_rdata_int;
-   logic [1:0]                   lsu_axi_rresp_int;
-   logic                         lsu_axi_rlast_int;
-   
-   logic                         ifu_axi_awready_ahb;
-   logic                         ifu_axi_wready_ahb;
-   logic                         ifu_axi_bvalid_ahb;
-   logic                         ifu_axi_bready_ahb;
-   logic [1:0]                   ifu_axi_bresp_ahb;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_bid_ahb;
-   logic                         ifu_axi_arready_ahb;
-   logic                         ifu_axi_rvalid_ahb;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_rid_ahb;
-   logic [63:0]                  ifu_axi_rdata_ahb;
-   logic [1:0]                   ifu_axi_rresp_ahb;
-   logic                         ifu_axi_rlast_ahb;
-
-   logic                         ifu_axi_awready_int;
-   logic                         ifu_axi_wready_int;
-   logic                         ifu_axi_bvalid_int;
-   logic                         ifu_axi_bready_int;
-   logic [1:0]                   ifu_axi_bresp_int;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_bid_int;
-   logic                         ifu_axi_arready_int;
-   logic                         ifu_axi_rvalid_int;
-   logic [pt.IFU_BUS_TAG-1:0]    ifu_axi_rid_int;
-   logic [63:0]                  ifu_axi_rdata_int;
-   logic [1:0]                   ifu_axi_rresp_int;
-   logic                         ifu_axi_rlast_int;
-
-   logic                         sb_axi_awready_ahb;
-   logic                         sb_axi_wready_ahb;
-   logic                         sb_axi_bvalid_ahb;
-   logic                         sb_axi_bready_ahb;
-   logic [1:0]                   sb_axi_bresp_ahb;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_bid_ahb;
-   logic                         sb_axi_arready_ahb;
-   logic                         sb_axi_rvalid_ahb;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_rid_ahb;
-   logic [63:0]                  sb_axi_rdata_ahb;
-   logic [1:0]                   sb_axi_rresp_ahb;
-   logic                         sb_axi_rlast_ahb;
-
-   logic                         sb_axi_awready_int;
-   logic                         sb_axi_wready_int;
-   logic                         sb_axi_bvalid_int;
-   logic                         sb_axi_bready_int;
-   logic [1:0]                   sb_axi_bresp_int;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_bid_int;
-   logic                         sb_axi_arready_int;
-   logic                         sb_axi_rvalid_int;
-   logic [pt.SB_BUS_TAG-1:0]     sb_axi_rid_int;
-   logic [63:0]                  sb_axi_rdata_int;
-   logic [1:0]                   sb_axi_rresp_int;
-   logic                         sb_axi_rlast_int;
-
-   logic                         dma_axi_awvalid_ahb;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_awid_ahb;
-   logic [31:0]                  dma_axi_awaddr_ahb;
-   logic [2:0]                   dma_axi_awsize_ahb;
-   logic [2:0]                   dma_axi_awprot_ahb;
-   logic [7:0]                   dma_axi_awlen_ahb;
-   logic [1:0]                   dma_axi_awburst_ahb;
-   logic                         dma_axi_wvalid_ahb;
-   logic [63:0]                  dma_axi_wdata_ahb;
-   logic [7:0]                   dma_axi_wstrb_ahb;
-   logic                         dma_axi_wlast_ahb;
-   logic                         dma_axi_bready_ahb;
-   logic                         dma_axi_arvalid_ahb;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_arid_ahb;
-   logic [31:0]                  dma_axi_araddr_ahb;
-   logic [2:0]                   dma_axi_arsize_ahb;
-   logic [2:0]                   dma_axi_arprot_ahb;
-   logic [7:0]                   dma_axi_arlen_ahb;
-   logic [1:0]                   dma_axi_arburst_ahb;
-   logic                         dma_axi_rready_ahb;
-
-   logic                         dma_axi_awvalid_int;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_awid_int;
-   logic [31:0]                  dma_axi_awaddr_int;
-   logic [2:0]                   dma_axi_awsize_int;
-   logic [2:0]                   dma_axi_awprot_int;
-   logic [7:0]                   dma_axi_awlen_int;
-   logic [1:0]                   dma_axi_awburst_int;
-   logic                         dma_axi_wvalid_int;
-   logic [63:0]                  dma_axi_wdata_int;
-   logic [7:0]                   dma_axi_wstrb_int;
-   logic                         dma_axi_wlast_int;
-   logic                         dma_axi_bready_int;
-   logic                         dma_axi_arvalid_int;
-   logic [pt.DMA_BUS_TAG-1:0]    dma_axi_arid_int;
-   logic [31:0]                  dma_axi_araddr_int;
-   logic [2:0]                   dma_axi_arsize_int;
-   logic [2:0]                   dma_axi_arprot_int;
-   logic [7:0]                   dma_axi_arlen_int;
-   logic [1:0]                   dma_axi_arburst_int;
-   logic                         dma_axi_rready_int;
-
-
-// Icache debug
-   logic [70:0] ifu_ic_debug_rd_data; // diagnostic icache read data
-   logic ifu_ic_debug_rd_data_valid; // diagnostic icache read data valid
-   eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt; // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-
-
-   logic         dec_i0_rs1_en_d;
-   logic         dec_i0_rs2_en_d;
-   logic  [31:0] gpr_i0_rs1_d;
-   logic  [31:0] gpr_i0_rs2_d;
-
-   logic [31:0] dec_i0_result_r;
-   logic [31:0] exu_i0_result_x;
-   logic [31:1] exu_i0_pc_x;
-   logic [31:1] exu_npc_r;
-
-   eb1_alu_pkt_t  i0_ap;
-
-   // Trigger signals
-   eb1_trigger_pkt_t [3:0]     trigger_pkt_any;
-   logic [3:0]             lsu_trigger_match_m;
-
-
-   logic [31:0] dec_i0_immed_d;
-   logic [12:1] dec_i0_br_immed_d;
-   logic         dec_i0_select_pc_d;
-
-   logic [31:1] dec_i0_pc_d;
-   logic [3:0]  dec_i0_rs1_bypass_en_d;
-   logic [3:0]  dec_i0_rs2_bypass_en_d;
-
-   logic         dec_i0_alu_decode_d;
-   logic         dec_i0_branch_d;
-
-   logic         ifu_miss_state_idle;
-   logic         dec_tlu_flush_noredir_r;
-   logic         dec_tlu_flush_leak_one_r;
-   logic         dec_tlu_flush_err_r;
-   logic         ifu_i0_valid;
-   logic [31:0]  ifu_i0_instr;
-   logic [31:1]  ifu_i0_pc;
-
-   logic        exu_flush_final;
-
-   logic [31:1] exu_flush_path_final;
-
-   logic [31:0] exu_lsu_rs1_d;
-   logic [31:0] exu_lsu_rs2_d;
-
-
-   eb1_lsu_pkt_t    lsu_p;
-   logic             dec_qual_lsu_d;
-
-   logic        dec_lsu_valid_raw_d;
-   logic [11:0] dec_lsu_offset_d;
-
-   logic [31:0]  lsu_result_m;
-   logic [31:0]  lsu_result_corr_r;     // This is the ECC corrected data going to RF
-   logic         lsu_single_ecc_error_incr;     // Increment the ecc counter
-   eb1_lsu_error_pkt_t lsu_error_pkt_r;
-   logic         lsu_imprecise_error_load_any;
-   logic         lsu_imprecise_error_store_any;
-   logic [31:0]  lsu_imprecise_error_addr_any;
-   logic         lsu_load_stall_any;       // This is for blocking loads
-   logic         lsu_store_stall_any;      // This is for blocking stores
-   logic         lsu_idle_any;             // doesn't include DMA
-   logic         lsu_active;               // lsu is active. used for clock
-
-
-   logic [31:1]  lsu_fir_addr;        // fast interrupt address
-   logic [1:0]   lsu_fir_error;       // Error during fast interrupt lookup
-
-   // Non-blocking loads
-   logic                                 lsu_nonblock_load_valid_m;
-   logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]   lsu_nonblock_load_tag_m;
-   logic                                 lsu_nonblock_load_inv_r;
-   logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]   lsu_nonblock_load_inv_tag_r;
-   logic                                 lsu_nonblock_load_data_valid;
-   logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]   lsu_nonblock_load_data_tag;
-   logic [31:0]                          lsu_nonblock_load_data;
-
-   logic        dec_csr_ren_d;
-   logic [31:0] dec_csr_rddata_d;
-
-   logic [31:0] exu_csr_rs1_x;
-
-   logic        dec_tlu_i0_commit_cmt;
-   logic        dec_tlu_flush_lower_r;
-   logic        dec_tlu_flush_lower_wb;
-   logic        dec_tlu_i0_kill_writeb_r;     // I0 is flushed, don't writeback any results to arch state
-   logic        dec_tlu_fence_i_r;            // flush is a fence_i rfnpc, flush icache
-
-   logic [31:1] dec_tlu_flush_path_r;
-   logic [31:0] dec_tlu_mrac_ff;        // CSR for memory region control
-
-   logic        ifu_i0_pc4;
-
-   eb1_mul_pkt_t  mul_p;
-
-   eb1_div_pkt_t  div_p;
-   logic           dec_div_cancel;
-
-   logic [31:0] exu_div_result;
-   logic exu_div_wren;
-
-   logic dec_i0_decode_d;
-
-
-   logic [31:1] pred_correct_npc_x;
-
-   eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt;
-
-   eb1_predict_pkt_t  exu_mp_pkt;
-   logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_eghr;
-   logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_index;
-   logic [pt.BTB_BTAG_SIZE-1:0]          exu_mp_btag;
-
-   logic [pt.BHT_GHR_SIZE-1:0]  exu_i0_br_fghr_r;
-   logic [1:0]  exu_i0_br_hist_r;
-   logic        exu_i0_br_error_r;
-   logic        exu_i0_br_start_error_r;
-   logic        exu_i0_br_valid_r;
-   logic        exu_i0_br_mp_r;
-   logic        exu_i0_br_middle_r;
-
-   logic        exu_i0_br_way_r;
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r;
-
-   logic        dma_dccm_req;
-   logic        dma_iccm_req;
-   logic [2:0]  dma_mem_tag;
-   logic [31:0] dma_mem_addr;
-   logic [2:0]  dma_mem_sz;
-   logic        dma_mem_write;
-   logic [63:0] dma_mem_wdata;
-
-   logic        dccm_dma_rvalid;
-   logic        dccm_dma_ecc_error;
-   logic [2:0]  dccm_dma_rtag;
-   logic [63:0] dccm_dma_rdata;
-   logic        iccm_dma_rvalid;
-   logic        iccm_dma_ecc_error;
-   logic [2:0]  iccm_dma_rtag;
-   logic [63:0] iccm_dma_rdata;
-
-   logic        dma_dccm_stall_any;       // Stall the ld/st in decode if asserted
-   logic        dma_iccm_stall_any;       // Stall the fetch
-   logic        dccm_ready;
-   logic        iccm_ready;
-
-   logic        dma_pmu_dccm_read;
-   logic        dma_pmu_dccm_write;
-   logic        dma_pmu_any_read;
-   logic        dma_pmu_any_write;
-
-   logic        ifu_i0_icaf;
-   logic [1:0]  ifu_i0_icaf_type;
-
-
-   logic        ifu_i0_icaf_second;
-   logic        ifu_i0_dbecc;
-   logic        iccm_dma_sb_error;
-
-   eb1_br_pkt_t i0_brp;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index;
-   logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr;
-   logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag;
-
-   logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index;
-   logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index; // Fully associative btb error index
-
-
-   eb1_predict_pkt_t dec_i0_predict_p_d;
-
-   logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d;                // DEC predict fghr
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d;     // DEC predict index
-   logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d;               // DEC predict branch tag
-
-   // PIC ports
-   logic                  picm_wren;
-   logic                  picm_rden;
-   logic                  picm_mken;
-   logic [31:0]           picm_rdaddr;
-   logic [31:0]           picm_wraddr;
-   logic [31:0]           picm_wr_data;
-   logic [31:0]           picm_rd_data;
-
-   // feature disable from mfdc
-   logic  dec_tlu_external_ldfwd_disable; // disable external load forwarding
-   logic  dec_tlu_bpred_disable;
-   logic  dec_tlu_wb_coalescing_disable;
-   logic  dec_tlu_sideeffect_posted_disable;
-   logic [2:0] dec_tlu_dma_qos_prty;         // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   logic  dec_tlu_misc_clk_override;
-   logic  dec_tlu_ifu_clk_override;
-   logic  dec_tlu_lsu_clk_override;
-   logic  dec_tlu_bus_clk_override;
-   logic  dec_tlu_pic_clk_override;
-   logic  dec_tlu_dccm_clk_override;
-   logic  dec_tlu_icm_clk_override;
-
-   logic  dec_tlu_picio_clk_override;
-
-   assign        dccm_clk_override = dec_tlu_dccm_clk_override;   // dccm memory
-   assign        icm_clk_override = dec_tlu_icm_clk_override;    // icache/iccm memory
-
-   // -----------------------DEBUG  START -------------------------------
-
-   logic [31:0]            dbg_cmd_addr;              // the address of the debug command to used by the core
-   logic [31:0]            dbg_cmd_wrdata;            // If the debug command is a write command, this has the data to be written to the CSR/GPR
-   logic                   dbg_cmd_valid;             // commad is being driven by the dbg module. One pulse. Only dirven when core_halted has been seen
-   logic                   dbg_cmd_write;             // 1: write command; 0: read_command
-   logic [1:0]             dbg_cmd_type;              // 0:gpr 1:csr 2: memory
-   logic [1:0]             dbg_cmd_size;              // size of the abstract mem access debug command
-   logic                   dbg_halt_req;              // Sticky signal indicating that the debug module wants to start the entering of debug mode ( start the halting sequence )
-   logic                   dbg_resume_req;            // Sticky signal indicating that the debug module wants to resume from debug mode
-   logic                   dbg_core_rst_l;            // Core reset from DM
-
-   logic                   core_dbg_cmd_done;         // Final muxed cmd done to debug
-   logic                   core_dbg_cmd_fail;         // Final muxed cmd done to debug
-   logic [31:0]            core_dbg_rddata;           // Final muxed cmd done to debug
-
-   logic                   dma_dbg_cmd_done;          // Abstarct memory command sent to dma is done
-   logic                   dma_dbg_cmd_fail;          // Abstarct memory command sent to dma failed
-   logic [31:0]            dma_dbg_rddata;            // Read data for abstract memory access
-
-   logic                   dbg_dma_bubble;            // Debug needs a bubble to send a valid
-   logic                   dma_dbg_ready;             // DMA is ready to accept debug request
-
-   logic [31:0]            dec_dbg_rddata;            // The core drives this data ( intercepts the pipe and sends it here )
-   logic                   dec_dbg_cmd_done;          // This will be treated like a valid signal
-   logic                   dec_dbg_cmd_fail;          // Abstract command failed
-   logic                   dec_tlu_mpc_halted_only;   // Only halted due to MPC
-   logic                   dec_tlu_dbg_halted;        // The core has finished the queiscing sequence. Sticks this signal high
-   logic                   dec_tlu_resume_ack;
-   logic                   dec_tlu_debug_mode;        // Core is in debug mode
-   logic                   dec_debug_wdata_rs1_d;
-   logic                   dec_tlu_force_halt;        // halt has been forced
-
-   logic [1:0]             dec_data_en;
-   logic [1:0]             dec_ctl_en;
-
-   // PMU Signals
-   logic                   exu_pmu_i0_br_misp;
-   logic                   exu_pmu_i0_br_ataken;
-   logic                   exu_pmu_i0_pc4;
-
-   logic                   lsu_pmu_load_external_m;
-   logic                   lsu_pmu_store_external_m;
-   logic                   lsu_pmu_misaligned_m;
-   logic                   lsu_pmu_bus_trxn;
-   logic                   lsu_pmu_bus_misaligned;
-   logic                   lsu_pmu_bus_error;
-   logic                   lsu_pmu_bus_busy;
-
-   logic                   ifu_pmu_fetch_stall;
-   logic                   ifu_pmu_ic_miss;
-   logic                   ifu_pmu_ic_hit;
-   logic                   ifu_pmu_bus_error;
-   logic                   ifu_pmu_bus_busy;
-   logic                   ifu_pmu_bus_trxn;
-
-   logic                   active_state;
-   logic                   free_clk;
-   logic                   active_clk;
-   logic                   dec_pause_state_cg;
-
-   logic                   lsu_nonblock_load_data_error;
-
-   logic [15:0]            ifu_i0_cinst;
-
-// fast interrupt
-   logic [31:2]            dec_tlu_meihap;
-   logic                   dec_extint_stall;
-
-   eb1_trace_pkt_t  trace_rv_trace_pkt;
-
-
-   logic                   lsu_fastint_stall_any;
-
-   logic [7:0]  pic_claimid;
-   logic [3:0]  pic_pl, dec_tlu_meicurpl, dec_tlu_meipt;
-   logic        mexintpend;
-   logic        mhwakeup;
-
-   logic        dma_active;
-
-
-   logic        pause_state;
-   logic        halt_state;
-
-   logic        dec_tlu_core_empty;
-   
-
-   assign pause_state = dec_pause_state_cg & ~(dma_active | lsu_active) & dec_tlu_core_empty;
-
-   assign halt_state = o_cpu_halt_status & ~(dma_active | lsu_active);
-
-
-   assign active_state = (~(halt_state | pause_state) | dec_tlu_flush_lower_r | dec_tlu_flush_lower_wb)  | dec_tlu_misc_clk_override;
-
-   rvoclkhdr free_cg2   ( .clk(clk), .en(1'b1),         .l1clk(free_l2clk), .* );
-   rvoclkhdr active_cg2 ( .clk(clk), .en(active_state), .l1clk(active_l2clk), .* );
-
-// all other clock headers are 1st level
-   rvoclkhdr free_cg1   ( .clk(free_l2clk),     .en(1'b1), .l1clk(free_clk), .* );
-   rvoclkhdr active_cg1 ( .clk(active_l2clk),   .en(1'b1), .l1clk(active_clk), .* );
-
-
-   assign core_dbg_cmd_done = dma_dbg_cmd_done | dec_dbg_cmd_done;
-   assign core_dbg_cmd_fail = dma_dbg_cmd_fail | dec_dbg_cmd_fail;
-   assign core_dbg_rddata[31:0] = dma_dbg_cmd_done ? dma_dbg_rddata[31:0] : dec_dbg_rddata[31:0];
-
-   eb1_dbg #(.pt(pt)) dbg (
-      .rst_l(core_rst_l),
-      .clk(free_l2clk),
-      .clk_override(dec_tlu_misc_clk_override),
-
-      // AXI signals
-      .sb_axi_awready(sb_axi_awready_int),
-      .sb_axi_wready(sb_axi_wready_int),
-      .sb_axi_bvalid(sb_axi_bvalid_int),
-      .sb_axi_bresp(sb_axi_bresp_int[1:0]),
-
-      .sb_axi_arready(sb_axi_arready_int),
-      .sb_axi_rvalid(sb_axi_rvalid_int),
-      .sb_axi_rdata(sb_axi_rdata_int[63:0]),
-      .sb_axi_rresp(sb_axi_rresp_int[1:0]),
-      .*
-   );
-
-   // -----------------   DEBUG END -----------------------------
-
-   assign core_rst_l = rst_l & (dbg_core_rst_l | scan_mode);
-   // fetch
-   eb1_ifu #(.pt(pt)) ifu (
-                            .clk(active_l2clk),
-                            .rst_l(core_rst_l),
-                            .dec_tlu_flush_err_wb       (dec_tlu_flush_err_r      ),
-                            .dec_tlu_flush_noredir_wb   (dec_tlu_flush_noredir_r  ),
-                            .dec_tlu_fence_i_wb         (dec_tlu_fence_i_r        ),
-                            .dec_tlu_flush_leak_one_wb  (dec_tlu_flush_leak_one_r ),
-                            .dec_tlu_flush_lower_wb     (dec_tlu_flush_lower_r    ),
-
-                            // AXI signals
-                            .ifu_axi_arready(ifu_axi_arready_int),
-                            .ifu_axi_rvalid(ifu_axi_rvalid_int),
-                            .ifu_axi_rid(ifu_axi_rid_int[pt.IFU_BUS_TAG-1:0]),
-                            .ifu_axi_rdata(ifu_axi_rdata_int[63:0]),
-                            .ifu_axi_rresp(ifu_axi_rresp_int[1:0]),
-                            .exu_flush_final(exu_flush_final),
-
-                            .*
-                            );
-
-
-   eb1_dec #(.pt(pt)) dec (
-                            .clk(active_l2clk),
-                            .dbg_cmd_wrdata(dbg_cmd_wrdata[1:0]),
-                            .rst_l(core_rst_l),
-                            .i_cpu_halt_req(i_cpu_halt_req),
-                            .i_cpu_run_req(i_cpu_run_req),  
-                            .*
-                            );
-
-   eb1_exu #(.pt(pt)) exu (
-                            .clk(active_l2clk),
-                            .rst_l(core_rst_l),
-                            .*
-                            );
-
-   eb1_lsu #(.pt(pt)) lsu (
-                            .clk(active_l2clk),
-                            .rst_l(core_rst_l),
-                            .clk_override(dec_tlu_lsu_clk_override),
-                            .dec_tlu_i0_kill_writeb_r(dec_tlu_i0_kill_writeb_r),
-
-                            // AXI signals
-                            .lsu_axi_awready(lsu_axi_awready_int),
-                            .lsu_axi_wready(lsu_axi_wready_int),
-                            .lsu_axi_bvalid(lsu_axi_bvalid_int),
-                            .lsu_axi_bid(lsu_axi_bid_int[pt.LSU_BUS_TAG-1:0]),
-                            .lsu_axi_bresp(lsu_axi_bresp_int[1:0]),
-
-                            .lsu_axi_arready(lsu_axi_arready_int),
-                            .lsu_axi_rvalid(lsu_axi_rvalid_int),
-                            .lsu_axi_rid(lsu_axi_rid_int[pt.LSU_BUS_TAG-1:0]),
-                            .lsu_axi_rdata(lsu_axi_rdata_int[63:0]),
-                            .lsu_axi_rresp(lsu_axi_rresp_int[1:0]),
-                            .lsu_axi_rlast(lsu_axi_rlast_int),
-
-                            .*
-
-                            );
-
-
-   eb1_pic_ctrl  #(.pt(pt)) pic_ctrl_inst (
-                                            .clk(free_l2clk),
-                                            .clk_override(dec_tlu_pic_clk_override),
-                                            .io_clk_override(dec_tlu_picio_clk_override),
-                                            .picm_mken (picm_mken),
-                                            .extintsrc_req({extintsrc_req[pt.PIC_TOTAL_INT:1],1'b0}),
-                                            .pl(pic_pl[3:0]),
-                                            .claimid(pic_claimid[7:0]),
-                                            .meicurpl(dec_tlu_meicurpl[3:0]),
-                                            .meipt(dec_tlu_meipt[3:0]),
-                                            .rst_l(core_rst_l),
-                                            .*);
-
-   eb1_dma_ctrl #(.pt(pt)) dma_ctrl (
-                                      .clk(free_l2clk),
-                                      .rst_l(core_rst_l),
-                                      .clk_override(dec_tlu_misc_clk_override),
-
-                                      // AXI signals
-                                      .dma_axi_awvalid(dma_axi_awvalid_int),
-                                      .dma_axi_awid(dma_axi_awid_int[pt.DMA_BUS_TAG-1:0]),
-                                      .dma_axi_awaddr(dma_axi_awaddr_int[31:0]),
-                                      .dma_axi_awsize(dma_axi_awsize_int[2:0]),
-                                      .dma_axi_wvalid(dma_axi_wvalid_int),
-                                      .dma_axi_wdata(dma_axi_wdata_int[63:0]),
-                                      .dma_axi_wstrb(dma_axi_wstrb_int[7:0]),
-                                      .dma_axi_bready(dma_axi_bready_int),
-
-                                      .dma_axi_arvalid(dma_axi_arvalid_int),
-                                      .dma_axi_arid(dma_axi_arid_int[pt.DMA_BUS_TAG-1:0]),
-                                      .dma_axi_araddr(dma_axi_araddr_int[31:0]),
-                                      .dma_axi_arsize(dma_axi_arsize_int[2:0]),
-                                      .dma_axi_rready(dma_axi_rready_int),
-
-                                      .*
-                                      );
-
-   if (pt.BUILD_AHB_LITE == 1) begin: Gen_AXI_To_AHB
-
-      // AXI4 -> AHB Gasket for LSU
-      axi4_to_ahb #(.pt(pt),
-                    .TAG(pt.LSU_BUS_TAG)) lsu_axi4_to_ahb (
-
-         .clk(free_l2clk),
-         .free_clk(free_clk),
-         .rst_l(core_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(lsu_bus_clk_en),
-         .dec_tlu_force_halt(dec_tlu_force_halt),
-
-         // AXI Write Channels
-         .axi_awvalid(lsu_axi_awvalid),
-         .axi_awready(lsu_axi_awready_ahb),
-         .axi_awid(lsu_axi_awid[pt.LSU_BUS_TAG-1:0]),
-         .axi_awaddr(lsu_axi_awaddr[31:0]),
-         .axi_awsize(lsu_axi_awsize[2:0]),
-         .axi_awprot(lsu_axi_awprot[2:0]),
-
-         .axi_wvalid(lsu_axi_wvalid),
-         .axi_wready(lsu_axi_wready_ahb),
-         .axi_wdata(lsu_axi_wdata[63:0]),
-         .axi_wstrb(lsu_axi_wstrb[7:0]),
-         .axi_wlast(lsu_axi_wlast),
-
-         .axi_bvalid(lsu_axi_bvalid_ahb),
-         .axi_bready(lsu_axi_bready),
-         .axi_bresp(lsu_axi_bresp_ahb[1:0]),
-         .axi_bid(lsu_axi_bid_ahb[pt.LSU_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(lsu_axi_arvalid),
-         .axi_arready(lsu_axi_arready_ahb),
-         .axi_arid(lsu_axi_arid[pt.LSU_BUS_TAG-1:0]),
-         .axi_araddr(lsu_axi_araddr[31:0]),
-         .axi_arsize(lsu_axi_arsize[2:0]),
-         .axi_arprot(lsu_axi_arprot[2:0]),
-
-         .axi_rvalid(lsu_axi_rvalid_ahb),
-         .axi_rready(lsu_axi_rready),
-         .axi_rid(lsu_axi_rid_ahb[pt.LSU_BUS_TAG-1:0]),
-         .axi_rdata(lsu_axi_rdata_ahb[63:0]),
-         .axi_rresp(lsu_axi_rresp_ahb[1:0]),
-         .axi_rlast(lsu_axi_rlast_ahb),
-
-         // AHB-LITE signals
-         .ahb_haddr(lsu_haddr[31:0]),
-         .ahb_hburst(lsu_hburst),
-         .ahb_hmastlock(lsu_hmastlock),
-         .ahb_hprot(lsu_hprot[3:0]),
-         .ahb_hsize(lsu_hsize[2:0]),
-         .ahb_htrans(lsu_htrans[1:0]),
-         .ahb_hwrite(lsu_hwrite),
-         .ahb_hwdata(lsu_hwdata[63:0]),
-
-         .ahb_hrdata(lsu_hrdata[63:0]),
-         .ahb_hready(lsu_hready),
-         .ahb_hresp(lsu_hresp),
-
-         .*
-      );
-
-      axi4_to_ahb #(.pt(pt),
-                    .TAG(pt.IFU_BUS_TAG)) ifu_axi4_to_ahb (
-         .clk(free_l2clk),
-         .free_clk(free_clk),
-         .rst_l(core_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(ifu_bus_clk_en),
-         .dec_tlu_force_halt(dec_tlu_force_halt),
-
-          // AHB-Lite signals
-         .ahb_haddr(haddr[31:0]),
-         .ahb_hburst(hburst),
-         .ahb_hmastlock(hmastlock),
-         .ahb_hprot(hprot[3:0]),
-         .ahb_hsize(hsize[2:0]),
-         .ahb_htrans(htrans[1:0]),
-         .ahb_hwrite(hwrite),
-         .ahb_hwdata(hwdata_nc[63:0]),
-
-         .ahb_hrdata(hrdata[63:0]),
-         .ahb_hready(hready),
-         .ahb_hresp(hresp),
-
-         // AXI Write Channels
-         .axi_awvalid(ifu_axi_awvalid),
-         .axi_awready(ifu_axi_awready_ahb),
-         .axi_awid(ifu_axi_awid[pt.IFU_BUS_TAG-1:0]),
-         .axi_awaddr(ifu_axi_awaddr[31:0]),
-         .axi_awsize(ifu_axi_awsize[2:0]),
-         .axi_awprot(ifu_axi_awprot[2:0]),
-
-         .axi_wvalid(ifu_axi_wvalid),
-         .axi_wready(ifu_axi_wready_ahb),
-         .axi_wdata(ifu_axi_wdata[63:0]),
-         .axi_wstrb(ifu_axi_wstrb[7:0]),
-         .axi_wlast(ifu_axi_wlast),
-
-         .axi_bvalid(ifu_axi_bvalid_ahb),
-         .axi_bready(1'b1),
-         .axi_bresp(ifu_axi_bresp_ahb[1:0]),
-         .axi_bid(ifu_axi_bid_ahb[pt.IFU_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(ifu_axi_arvalid),
-         .axi_arready(ifu_axi_arready_ahb),
-         .axi_arid(ifu_axi_arid[pt.IFU_BUS_TAG-1:0]),
-         .axi_araddr(ifu_axi_araddr[31:0]),
-         .axi_arsize(ifu_axi_arsize[2:0]),
-         .axi_arprot(ifu_axi_arprot[2:0]),
-
-         .axi_rvalid(ifu_axi_rvalid_ahb),
-         .axi_rready(ifu_axi_rready),
-         .axi_rid(ifu_axi_rid_ahb[pt.IFU_BUS_TAG-1:0]),
-         .axi_rdata(ifu_axi_rdata_ahb[63:0]),
-         .axi_rresp(ifu_axi_rresp_ahb[1:0]),
-         .axi_rlast(ifu_axi_rlast_ahb),
-         .*
-      );
-
-      // AXI4 -> AHB Gasket for System Bus
-      axi4_to_ahb #(.pt(pt),
-                    .TAG(pt.SB_BUS_TAG)) sb_axi4_to_ahb (
-         .clk(free_l2clk),
-         .free_clk(free_clk),
-         .rst_l(dbg_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(dbg_bus_clk_en),
-         .dec_tlu_force_halt(1'b0),
-
-         // AXI Write Channels
-         .axi_awvalid(sb_axi_awvalid),
-         .axi_awready(sb_axi_awready_ahb),
-         .axi_awid(sb_axi_awid[pt.SB_BUS_TAG-1:0]),
-         .axi_awaddr(sb_axi_awaddr[31:0]),
-         .axi_awsize(sb_axi_awsize[2:0]),
-         .axi_awprot(sb_axi_awprot[2:0]),
-
-         .axi_wvalid(sb_axi_wvalid),
-         .axi_wready(sb_axi_wready_ahb),
-         .axi_wdata(sb_axi_wdata[63:0]),
-         .axi_wstrb(sb_axi_wstrb[7:0]),
-         .axi_wlast(sb_axi_wlast),
-
-         .axi_bvalid(sb_axi_bvalid_ahb),
-         .axi_bready(sb_axi_bready),
-         .axi_bresp(sb_axi_bresp_ahb[1:0]),
-         .axi_bid(sb_axi_bid_ahb[pt.SB_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(sb_axi_arvalid),
-         .axi_arready(sb_axi_arready_ahb),
-         .axi_arid(sb_axi_arid[pt.SB_BUS_TAG-1:0]),
-         .axi_araddr(sb_axi_araddr[31:0]),
-         .axi_arsize(sb_axi_arsize[2:0]),
-         .axi_arprot(sb_axi_arprot[2:0]),
-
-         .axi_rvalid(sb_axi_rvalid_ahb),
-         .axi_rready(sb_axi_rready),
-         .axi_rid(sb_axi_rid_ahb[pt.SB_BUS_TAG-1:0]),
-         .axi_rdata(sb_axi_rdata_ahb[63:0]),
-         .axi_rresp(sb_axi_rresp_ahb[1:0]),
-         .axi_rlast(sb_axi_rlast_ahb),
-         // AHB-LITE signals
-         .ahb_haddr(sb_haddr[31:0]),
-         .ahb_hburst(sb_hburst),
-         .ahb_hmastlock(sb_hmastlock),
-         .ahb_hprot(sb_hprot[3:0]),
-         .ahb_hsize(sb_hsize[2:0]),
-         .ahb_htrans(sb_htrans[1:0]),
-         .ahb_hwrite(sb_hwrite),
-         .ahb_hwdata(sb_hwdata[63:0]),
-
-         .ahb_hrdata(sb_hrdata[63:0]),
-         .ahb_hready(sb_hready),
-         .ahb_hresp(sb_hresp),
-
-         .*
-      );
-
-      //AHB -> AXI4 Gasket for DMA
-      ahb_to_axi4 #(.pt(pt),
-                    .TAG(pt.DMA_BUS_TAG)) dma_ahb_to_axi4 (
-         .clk(free_l2clk),
-         .rst_l(core_rst_l),
-         .clk_override(dec_tlu_bus_clk_override),
-         .bus_clk_en(dma_bus_clk_en),
-
-         // AXI Write Channels
-         .axi_awvalid(dma_axi_awvalid_ahb),
-         .axi_awready(dma_axi_awready),
-         .axi_awid(dma_axi_awid_ahb[pt.DMA_BUS_TAG-1:0]),
-         .axi_awaddr(dma_axi_awaddr_ahb[31:0]),
-         .axi_awsize(dma_axi_awsize_ahb[2:0]),
-         .axi_awprot(dma_axi_awprot_ahb[2:0]),
-         .axi_awlen(dma_axi_awlen_ahb[7:0]),
-         .axi_awburst(dma_axi_awburst_ahb[1:0]),
-
-         .axi_wvalid(dma_axi_wvalid_ahb),
-         .axi_wready(dma_axi_wready),
-         .axi_wdata(dma_axi_wdata_ahb[63:0]),
-         .axi_wstrb(dma_axi_wstrb_ahb[7:0]),
-         .axi_wlast(dma_axi_wlast_ahb),
-
-         .axi_bvalid(dma_axi_bvalid),
-         .axi_bready(dma_axi_bready_ahb),
-         .axi_bresp(dma_axi_bresp[1:0]),
-         .axi_bid(dma_axi_bid[pt.DMA_BUS_TAG-1:0]),
-
-         // AXI Read Channels
-         .axi_arvalid(dma_axi_arvalid_ahb),
-         .axi_arready(dma_axi_arready),
-         .axi_arid(dma_axi_arid_ahb[pt.DMA_BUS_TAG-1:0]),
-         .axi_araddr(dma_axi_araddr_ahb[31:0]),
-         .axi_arsize(dma_axi_arsize_ahb[2:0]),
-         .axi_arprot(dma_axi_arprot_ahb[2:0]),
-         .axi_arlen(dma_axi_arlen_ahb[7:0]),
-         .axi_arburst(dma_axi_arburst_ahb[1:0]),
-
-         .axi_rvalid(dma_axi_rvalid),
-         .axi_rready(dma_axi_rready_ahb),
-         .axi_rid(dma_axi_rid[pt.DMA_BUS_TAG-1:0]),
-         .axi_rdata(dma_axi_rdata[63:0]),
-         .axi_rresp(dma_axi_rresp[1:0]),
-
-          // AHB signals
-         .ahb_haddr(dma_haddr[31:0]),
-         .ahb_hburst(dma_hburst),
-         .ahb_hmastlock(dma_hmastlock),
-         .ahb_hprot(dma_hprot[3:0]),
-         .ahb_hsize(dma_hsize[2:0]),
-         .ahb_htrans(dma_htrans[1:0]),
-         .ahb_hwrite(dma_hwrite),
-         .ahb_hwdata(dma_hwdata[63:0]),
-
-         .ahb_hrdata(dma_hrdata[63:0]),
-         .ahb_hreadyout(dma_hreadyout),
-         .ahb_hresp(dma_hresp),
-         .ahb_hreadyin(dma_hreadyin),
-         .ahb_hsel(dma_hsel),
-         .*
-      );
-
-   end
-
-   // Drive the final AXI inputs
-   assign lsu_axi_awready_int                 = pt.BUILD_AHB_LITE ? lsu_axi_awready_ahb : lsu_axi_awready;
-   assign lsu_axi_wready_int                  = pt.BUILD_AHB_LITE ? lsu_axi_wready_ahb : lsu_axi_wready;
-   assign lsu_axi_bvalid_int                  = pt.BUILD_AHB_LITE ? lsu_axi_bvalid_ahb : lsu_axi_bvalid;
-   assign lsu_axi_bready_int                  = pt.BUILD_AHB_LITE ? lsu_axi_bready_ahb : lsu_axi_bready;
-   assign lsu_axi_bresp_int[1:0]              = pt.BUILD_AHB_LITE ? lsu_axi_bresp_ahb[1:0] : lsu_axi_bresp[1:0];
-   assign lsu_axi_bid_int[pt.LSU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? lsu_axi_bid_ahb[pt.LSU_BUS_TAG-1:0] : lsu_axi_bid[pt.LSU_BUS_TAG-1:0];
-   assign lsu_axi_arready_int                 = pt.BUILD_AHB_LITE ? lsu_axi_arready_ahb : lsu_axi_arready;
-   assign lsu_axi_rvalid_int                  = pt.BUILD_AHB_LITE ? lsu_axi_rvalid_ahb : lsu_axi_rvalid;
-   assign lsu_axi_rid_int[pt.LSU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? lsu_axi_rid_ahb[pt.LSU_BUS_TAG-1:0] : lsu_axi_rid[pt.LSU_BUS_TAG-1:0];
-   assign lsu_axi_rdata_int[63:0]             = pt.BUILD_AHB_LITE ? lsu_axi_rdata_ahb[63:0] : lsu_axi_rdata[63:0];
-   assign lsu_axi_rresp_int[1:0]              = pt.BUILD_AHB_LITE ? lsu_axi_rresp_ahb[1:0] : lsu_axi_rresp[1:0];
-   assign lsu_axi_rlast_int                   = pt.BUILD_AHB_LITE ? lsu_axi_rlast_ahb : lsu_axi_rlast;
-
-   assign ifu_axi_awready_int                 = pt.BUILD_AHB_LITE ? ifu_axi_awready_ahb : ifu_axi_awready;
-   assign ifu_axi_wready_int                  = pt.BUILD_AHB_LITE ? ifu_axi_wready_ahb : ifu_axi_wready;
-   assign ifu_axi_bvalid_int                  = pt.BUILD_AHB_LITE ? ifu_axi_bvalid_ahb : ifu_axi_bvalid;
-   assign ifu_axi_bready_int                  = pt.BUILD_AHB_LITE ? ifu_axi_bready_ahb : ifu_axi_bready;
-   assign ifu_axi_bresp_int[1:0]              = pt.BUILD_AHB_LITE ? ifu_axi_bresp_ahb[1:0] : ifu_axi_bresp[1:0];
-   assign ifu_axi_bid_int[pt.IFU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? ifu_axi_bid_ahb[pt.IFU_BUS_TAG-1:0] : ifu_axi_bid[pt.IFU_BUS_TAG-1:0];
-   assign ifu_axi_arready_int                 = pt.BUILD_AHB_LITE ? ifu_axi_arready_ahb : ifu_axi_arready;
-   assign ifu_axi_rvalid_int                  = pt.BUILD_AHB_LITE ? ifu_axi_rvalid_ahb : ifu_axi_rvalid;
-   assign ifu_axi_rid_int[pt.IFU_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? ifu_axi_rid_ahb[pt.IFU_BUS_TAG-1:0] : ifu_axi_rid[pt.IFU_BUS_TAG-1:0];
-   assign ifu_axi_rdata_int[63:0]             = pt.BUILD_AHB_LITE ? ifu_axi_rdata_ahb[63:0] : ifu_axi_rdata[63:0];
-   assign ifu_axi_rresp_int[1:0]              = pt.BUILD_AHB_LITE ? ifu_axi_rresp_ahb[1:0] : ifu_axi_rresp[1:0];
-   assign ifu_axi_rlast_int                   = pt.BUILD_AHB_LITE ? ifu_axi_rlast_ahb : ifu_axi_rlast;
-
-   assign sb_axi_awready_int                  = pt.BUILD_AHB_LITE ? sb_axi_awready_ahb : sb_axi_awready;
-   assign sb_axi_wready_int                   = pt.BUILD_AHB_LITE ? sb_axi_wready_ahb : sb_axi_wready;
-   assign sb_axi_bvalid_int                   = pt.BUILD_AHB_LITE ? sb_axi_bvalid_ahb : sb_axi_bvalid;
-   assign sb_axi_bready_int                   = pt.BUILD_AHB_LITE ? sb_axi_bready_ahb : sb_axi_bready;
-   assign sb_axi_bresp_int[1:0]               = pt.BUILD_AHB_LITE ? sb_axi_bresp_ahb[1:0] : sb_axi_bresp[1:0];
-   assign sb_axi_bid_int[pt.SB_BUS_TAG-1:0]   = pt.BUILD_AHB_LITE ? sb_axi_bid_ahb[pt.SB_BUS_TAG-1:0] : sb_axi_bid[pt.SB_BUS_TAG-1:0];
-   assign sb_axi_arready_int                  = pt.BUILD_AHB_LITE ? sb_axi_arready_ahb : sb_axi_arready;
-   assign sb_axi_rvalid_int                   = pt.BUILD_AHB_LITE ? sb_axi_rvalid_ahb : sb_axi_rvalid;
-   assign sb_axi_rid_int[pt.SB_BUS_TAG-1:0]   = pt.BUILD_AHB_LITE ? sb_axi_rid_ahb[pt.SB_BUS_TAG-1:0] : sb_axi_rid[pt.SB_BUS_TAG-1:0];
-   assign sb_axi_rdata_int[63:0]              = pt.BUILD_AHB_LITE ? sb_axi_rdata_ahb[63:0] : sb_axi_rdata[63:0];
-   assign sb_axi_rresp_int[1:0]               = pt.BUILD_AHB_LITE ? sb_axi_rresp_ahb[1:0] : sb_axi_rresp[1:0];
-   assign sb_axi_rlast_int                    = pt.BUILD_AHB_LITE ? sb_axi_rlast_ahb : sb_axi_rlast;
-
-   assign dma_axi_awvalid_int                  = pt.BUILD_AHB_LITE ? dma_axi_awvalid_ahb : dma_axi_awvalid;
-   assign dma_axi_awid_int[pt.DMA_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? dma_axi_awid_ahb[pt.DMA_BUS_TAG-1:0] : dma_axi_awid[pt.DMA_BUS_TAG-1:0];
-   assign dma_axi_awaddr_int[31:0]             = pt.BUILD_AHB_LITE ? dma_axi_awaddr_ahb[31:0] : dma_axi_awaddr[31:0];
-   assign dma_axi_awsize_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_awsize_ahb[2:0] : dma_axi_awsize[2:0];
-   assign dma_axi_awprot_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_awprot_ahb[2:0] : dma_axi_awprot[2:0];
-   assign dma_axi_awlen_int[7:0]               = pt.BUILD_AHB_LITE ? dma_axi_awlen_ahb[7:0] : dma_axi_awlen[7:0];
-   assign dma_axi_awburst_int[1:0]             = pt.BUILD_AHB_LITE ? dma_axi_awburst_ahb[1:0] : dma_axi_awburst[1:0];
-   assign dma_axi_wvalid_int                   = pt.BUILD_AHB_LITE ? dma_axi_wvalid_ahb : dma_axi_wvalid;
-   assign dma_axi_wdata_int[63:0]              = pt.BUILD_AHB_LITE ? dma_axi_wdata_ahb[63:0] : dma_axi_wdata;
-   assign dma_axi_wstrb_int[7:0]               = pt.BUILD_AHB_LITE ? dma_axi_wstrb_ahb[7:0] : dma_axi_wstrb[7:0];
-   assign dma_axi_wlast_int                    = pt.BUILD_AHB_LITE ? dma_axi_wlast_ahb : dma_axi_wlast;
-   assign dma_axi_bready_int                   = pt.BUILD_AHB_LITE ? dma_axi_bready_ahb : dma_axi_bready;
-   assign dma_axi_arvalid_int                  = pt.BUILD_AHB_LITE ? dma_axi_arvalid_ahb : dma_axi_arvalid;
-   assign dma_axi_arid_int[pt.DMA_BUS_TAG-1:0] = pt.BUILD_AHB_LITE ? dma_axi_arid_ahb[pt.DMA_BUS_TAG-1:0] : dma_axi_arid[pt.DMA_BUS_TAG-1:0];
-   assign dma_axi_araddr_int[31:0]             = pt.BUILD_AHB_LITE ? dma_axi_araddr_ahb[31:0] : dma_axi_araddr[31:0];
-   assign dma_axi_arsize_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_arsize_ahb[2:0] : dma_axi_arsize[2:0];
-   assign dma_axi_arprot_int[2:0]              = pt.BUILD_AHB_LITE ? dma_axi_arprot_ahb[2:0] : dma_axi_arprot[2:0];
-   assign dma_axi_arlen_int[7:0]               = pt.BUILD_AHB_LITE ? dma_axi_arlen_ahb[7:0] : dma_axi_arlen[7:0];
-   assign dma_axi_arburst_int[1:0]             = pt.BUILD_AHB_LITE ? dma_axi_arburst_ahb[1:0] : dma_axi_arburst[1:0];
-   assign dma_axi_rready_int                   = pt.BUILD_AHB_LITE ? dma_axi_rready_ahb : dma_axi_rready;
-
- 
-if  (pt.BUILD_AHB_LITE == 1) begin
-
-   end // if (pt.BUILD_AHB_LITE == 1)
-
-
-      // unpack packet
-      // also need retires_p==3
-
-      assign trace_rv_i_insn_ip[31:0]     = trace_rv_trace_pkt.trace_rv_i_insn_ip[31:0];
-
-      assign trace_rv_i_address_ip[31:0]  = trace_rv_trace_pkt.trace_rv_i_address_ip[31:0];
-
-      assign trace_rv_i_valid_ip     = trace_rv_trace_pkt.trace_rv_i_valid_ip;
-
-      assign trace_rv_i_exception_ip = trace_rv_trace_pkt.trace_rv_i_exception_ip;
-
-      assign trace_rv_i_ecause_ip[4:0]    = trace_rv_trace_pkt.trace_rv_i_ecause_ip[4:0];
-
-      assign trace_rv_i_interrupt_ip = trace_rv_trace_pkt.trace_rv_i_interrupt_ip;
-
-      assign trace_rv_i_tval_ip[31:0]     = trace_rv_trace_pkt.trace_rv_i_tval_ip[31:0];
-			
-endmodule // eb1_brqrv
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2018 MERL Corporation or it's affiliates.
-// 
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// 
-// http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//------------------------------------------------------------------------------------
-//
-//  Copyright MERL, 2018
-//  Owner : Anusha Narayanamoorthy
-//  Description:  
-//                Wrapper module for JTAG_TAP and DMI synchronizer
-//
-//-------------------------------------------------------------------------------------
-
-module dmi_wrapper(
-
-  // JTAG signals
-  input              trst_n,              // JTAG reset
-  input              tck,                 // JTAG clock
-  input              tms,                 // Test mode select   
-  input              tdi,                 // Test Data Input
-  output             tdo,                 // Test Data Output           
-  output             tdoEnable,           // Test Data Output enable             
-
-  // Processor Signals
-  input              core_rst_n,          // Core reset                  
-  input              core_clk,            // Core clock                  
-  input [31:1]       jtag_id,             // JTAG ID
-  input [31:0]       rd_data,             // 32 bit Read data from  Processor                       
-  output [31:0]      reg_wr_data,         // 32 bit Write data to Processor                      
-  output [6:0]       reg_wr_addr,         // 7 bit reg address to Processor                   
-  output             reg_en,              // 1 bit  Read enable to Processor                                    
-  output             reg_wr_en,           // 1 bit  Write enable to Processor 
-  output             dmi_hard_reset  
-);
-
-
-  
-
-
-  //Wire Declaration
-  wire                     rd_en;
-  wire                     wr_en;
-  wire                     dmireset;
-
- 
-  //jtag_tap instantiation
- rvjtag_tap i_jtag_tap(
-   .trst(trst_n),                      // dedicated JTAG TRST (active low) pad signal or asynchronous active low power on reset
-   .tck(tck),                          // dedicated JTAG TCK pad signal
-   .tms(tms),                          // dedicated JTAG TMS pad signal
-   .tdi(tdi),                          // dedicated JTAG TDI pad signal
-   .tdo(tdo),                          // dedicated JTAG TDO pad signal
-   .tdoEnable(tdoEnable),              // enable for TDO pad
-   .wr_data(reg_wr_data),              // 32 bit Write data
-   .wr_addr(reg_wr_addr),              // 7 bit Write address
-   .rd_en(rd_en),                      // 1 bit  read enable
-   .wr_en(wr_en),                      // 1 bit  Write enable
-   .rd_data(rd_data),                  // 32 bit Read data
-   .rd_status(2'b0),
-   .idle(3'h0),                         // no need to wait to sample data
-   .dmi_stat(2'b0),                     // no need to wait or error possible
-   .version(4'h1),                      // debug spec 0.13 compliant
-   .jtag_id(jtag_id),
-   .dmi_hard_reset(dmi_hard_reset),
-   .dmi_reset(dmireset)
-);
-
-
-  // dmi_jtag_to_core_sync instantiation
-  dmi_jtag_to_core_sync i_dmi_jtag_to_core_sync(
-    .wr_en(wr_en),                          // 1 bit  Write enable
-    .rd_en(rd_en),                          // 1 bit  Read enable
-
-    .rst_n(core_rst_n),
-    .clk(core_clk),
-    .reg_en(reg_en),                          // 1 bit  Write interface bit
-    .reg_wr_en(reg_wr_en)                          // 1 bit  Write enable
-  );
-
-endmodule
-
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-  
-module eb1_uart_rx_prog (
-   input         i_Clock,
-   input         rst_ni,
-   input         i_Rx_Serial,
-   input  [15:0] CLKS_PER_BIT,
-   output        o_Rx_DV,
-   output  [7:0] o_Rx_Byte
-   );
-    
-  parameter s_IDLE         = 3'b000;
-  parameter s_RX_START_BIT = 3'b001;
-  parameter s_RX_DATA_BITS = 3'b010;
-  parameter s_RX_STOP_BIT  = 3'b011;
-  parameter s_CLEANUP      = 3'b100;
-   
-  reg           r_Rx_Data_R;
-  reg           r_Rx_Data;
-   
-  reg [15:0]     r_Clock_Count;
-  reg [2:0]     r_Bit_Index; //8 bits total
-  reg [7:0]     r_Rx_Byte;
-  reg           r_Rx_DV;
-  reg [2:0]     r_SM_Main;
-   
-  // Purpose: Double-register the incoming data.
-  // This allows it to be used in the UART RX Clock Domain.
-  // (It removes problems caused by metastability)
-  always @(posedge i_Clock)
-    if(rst_ni == 1'b0) begin
-    	r_Rx_Data_R <= 1'b1;
-    	r_Rx_Data   <= 1'b1;
-    end
-    else begin
-      r_Rx_Data_R <= i_Rx_Serial;
-      r_Rx_Data   <= r_Rx_Data_R;
-    end
-   
-   
-  // Purpose: Control RX state machine
-  always @(posedge i_Clock or negedge rst_ni)
-    begin
-      if (rst_ni == 1'b0) begin
-        r_SM_Main <= s_IDLE;
-        r_Rx_DV       <= 1'b0;
-        r_Clock_Count <= 16'h0000;
-        r_Bit_Index   <= 3'b000;
-        r_Rx_Byte     <= 8'h00;
-      end else begin       
-      case (r_SM_Main)
-        s_IDLE :
-          begin
-            r_Rx_DV       <= 1'b0;
-            r_Clock_Count <= 0;
-            r_Bit_Index   <= 0;
-             
-            if (r_Rx_Data == 1'b0)          // Start bit detected
-              r_SM_Main <= s_RX_START_BIT;
-            else
-              r_SM_Main <= s_IDLE;
-          end
-         
-        // Check middle of start bit to make sure it's still low
-        s_RX_START_BIT :
-          begin
-            if (r_Clock_Count == ((CLKS_PER_BIT-1)>>1))
-              begin
-                if (r_Rx_Data == 1'b0)
-                  begin
-                    r_Clock_Count <= 0;  // reset counter, found the middle
-                    r_SM_Main     <= s_RX_DATA_BITS;
-                  end
-                else
-                  r_SM_Main <= s_IDLE;
-              end
-            else
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_START_BIT;
-              end
-          end // case: s_RX_START_BIT
-         
-         
-        // Wait CLKS_PER_BIT-1 clock cycles to sample serial data
-        s_RX_DATA_BITS :
-          begin
-            if (r_Clock_Count < CLKS_PER_BIT-1)
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_DATA_BITS;
-              end
-            else
-              begin
-                r_Clock_Count          <= 0;
-                r_Rx_Byte[r_Bit_Index] <= r_Rx_Data;
-                 
-                // Check if we have received all bits
-                if (r_Bit_Index < 7)
-                  begin
-                    r_Bit_Index <= r_Bit_Index + 1;
-                    r_SM_Main   <= s_RX_DATA_BITS;
-                  end
-                else
-                  begin
-                    r_Bit_Index <= 0;
-                    r_SM_Main   <= s_RX_STOP_BIT;
-                  end
-              end
-          end // case: s_RX_DATA_BITS
-     
-     
-        // Receive Stop bit.  Stop bit = 1
-        s_RX_STOP_BIT :
-          begin
-            // Wait CLKS_PER_BIT-1 clock cycles for Stop bit to finish
-            if (r_Clock_Count < CLKS_PER_BIT-1)
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_STOP_BIT;
-              end
-            else
-              begin
-                r_Rx_DV       <= 1'b1;
-                r_Clock_Count <= 0;
-                r_SM_Main     <= s_CLEANUP;
-              end
-          end // case: s_RX_STOP_BIT
-     
-         
-        // Stay here 1 clock
-        s_CLEANUP :
-          begin
-            r_SM_Main <= s_IDLE;
-            r_Rx_DV   <= 1'b0;
-          end
-         
-         
-        default :
-          r_SM_Main <= s_IDLE;
-         
-      endcase
-      end
-    end   
-   
-  assign o_Rx_DV   = r_Rx_DV;
-  assign o_Rx_Byte = r_Rx_Byte;
-   
-endmodule // uart_rx
-
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-module eb1_iccm_controller (
-	clk_i,
-	rst_ni,
-	rx_dv_i,
-	rx_byte_i,
-	we_o,
-	addr_o,
-	wdata_o,
-	reset_o
-);
-	input wire clk_i;
-	input wire rst_ni;
-	input wire rx_dv_i;
-	input wire [7:0] rx_byte_i;
-	output wire we_o;
-	output wire [13:0] addr_o;
-	output wire [31:0] wdata_o;
-	output wire reset_o;
-	reg [1:0] ctrl_fsm_cs;
-	reg [1:0] ctrl_fsm_ns;
-	wire [7:0] rx_byte_d;
-	reg [7:0] rx_byte_q0;
-	reg [7:0] rx_byte_q1;
-	reg [7:0] rx_byte_q2;
-	reg [7:0] rx_byte_q3;
-	reg we_q;
-	reg we_d;
-	reg [13:0] addr_q;
-	reg [13:0] addr_d;
-	reg reset_q;
-	reg reset_d;
-	reg [1:0] byte_count;
-	localparam [1:0] DONE = 3;
-	localparam [1:0] LOAD = 1;
-	localparam [1:0] PROG = 2;
-	localparam [1:0] RESET = 0;
-	always @(*) begin
-		we_d = we_q;
-		addr_d = addr_q;
-		reset_d = reset_q;
-		ctrl_fsm_ns = ctrl_fsm_cs;
-		case (ctrl_fsm_cs)
-			RESET: begin
-				we_d = 1'b0;
-				reset_d = 1'b0;
-				if (rx_dv_i)
-					ctrl_fsm_ns = LOAD;
-				else
-					ctrl_fsm_ns = RESET;
-			end
-			LOAD:
-				if (((byte_count == 2'b11) && (rx_byte_q2 != 8'h0f)) && (rx_byte_d != 8'hff)) begin
-					we_d = 1'b1;
-					ctrl_fsm_ns = PROG;
-				end
-				else
-					ctrl_fsm_ns = DONE;
-			PROG: begin
-				we_d = 1'b0;
-				ctrl_fsm_ns = DONE;
-			end
-			DONE:
-				if (wdata_o == 32'h00000fff) begin
-					ctrl_fsm_ns = DONE;
-					reset_d = 1'b1;
-				end
-				else if (rx_dv_i)
-					ctrl_fsm_ns = LOAD;
-				else
-					ctrl_fsm_ns = DONE;
-			default: ctrl_fsm_ns = RESET;
-		endcase
-	end
-	assign rx_byte_d = rx_byte_i;
-	assign we_o = we_q;
-	assign addr_o = addr_q;
-	assign wdata_o = {rx_byte_q0, rx_byte_q1, rx_byte_q2, rx_byte_q3};
-	assign reset_o = reset_q;
-	always @(posedge clk_i or negedge rst_ni)
-		if (!rst_ni) begin
-			we_q <= 1'b0;
-			addr_q <= 14'b00000000000000;
-			rx_byte_q0 <= 8'b00000000;
-			rx_byte_q1 <= 8'b00000000;
-			rx_byte_q2 <= 8'b00000000;
-			rx_byte_q3 <= 8'b00000000;
-			reset_q <= 1'b0;
-			byte_count <= 2'b00;
-			ctrl_fsm_cs <= RESET;
-		end
-		else begin
-			we_q <= we_d;
-			if (ctrl_fsm_cs == LOAD) begin
-				if (byte_count == 2'b00) begin
-					rx_byte_q0 <= rx_byte_d;
-					byte_count <= 2'b01;
-				end
-				else if (byte_count == 2'b01) begin
-					rx_byte_q1 <= rx_byte_d;
-					byte_count <= 2'b10;
-				end
-				else if (byte_count == 2'b10) begin
-					rx_byte_q2 <= rx_byte_d;
-					byte_count <= 2'b11;
-				end
-				else begin
-					rx_byte_q3 <= rx_byte_d;
-					byte_count <= 2'b00;
-				end
-				addr_q <= addr_d;
-			end
-			if (ctrl_fsm_cs == PROG)
-				addr_q <= addr_d + 2'h2;
-			reset_q <= reset_d;
-			ctrl_fsm_cs <= ctrl_fsm_ns;
-		end
-endmodule
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-module eb1_mem
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-(
-
-   input logic         VPWR,
-   input logic		VGND,
-   input logic         clk,
-   input logic         rst_l,
-   input logic         dccm_clk_override,
-   input logic         icm_clk_override,
-   input logic         dec_tlu_core_ecc_disable,
-
-   //DCCM ports
-   input logic         dccm_wren,
-   input logic         dccm_rden,
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_lo,
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_hi,
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_lo,
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_hi,
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,
-
-
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_lo,
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_rd_data_hi,
-
-//`ifdef pt.DCCM_ENABLE
-   input eb1_dccm_ext_in_pkt_t  [pt.DCCM_NUM_BANKS-1:0] dccm_ext_in_pkt,
-
-//`endif
-
-   //ICCM ports
-   input eb1_ccm_ext_in_pkt_t   [pt.ICCM_NUM_BANKS-1:0]  iccm_ext_in_pkt,
-
-   input logic [pt.ICCM_BITS-1:1]  iccm_rw_addr,
-   input logic                                        iccm_buf_correct_ecc,                    // ICCM is doing a single bit error correct cycle
-   input logic                                        iccm_correction_state,               // ICCM is doing a single bit error correct cycle
-   input logic         iccm_wren,
-   input logic         iccm_rden,
-   input logic [2:0]   iccm_wr_size,
-   input logic [77:0]  iccm_wr_data,
-
-   output logic [63:0] iccm_rd_data,
-   output logic [77:0] iccm_rd_data_ecc,
-
-   // Icache and Itag Ports
-
-   input  logic [31:1]  ic_rw_addr,
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]   ic_tag_valid,
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]   ic_wr_en,
-   input  logic         ic_rd_en,
-   input  logic [63:0] ic_premux_data,      // Premux data to be muxed with each way of the Icache.
-   input  logic         ic_sel_premux_data, // Premux data sel
-   input eb1_ic_data_ext_in_pkt_t   [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0]         ic_data_ext_in_pkt,
-   input eb1_ic_tag_ext_in_pkt_t    [pt.ICACHE_NUM_WAYS-1:0]           ic_tag_ext_in_pkt,
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0][70:0]               ic_wr_data,         // Data to fill to the Icache. With ECC
-   input  logic [70:0]               ic_debug_wr_data,   // Debug wr cache.
-   output logic [70:0]               ic_debug_rd_data ,  // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   input  logic                      ic_debug_rd_en,     // Icache debug rd
-   input  logic                      ic_debug_wr_en,     // Icache debug wr
-   input  logic                      ic_debug_tag_array, // Debug tag array
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-   output logic [63:0]              ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   output logic [25:0]               ictag_debug_rd_data,// Debug icache tag.
-
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    // ecc error per bank
-   output logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,          // parity error per bank
-   output logic [pt.ICACHE_NUM_WAYS-1:0]   ic_rd_hit,
-   output logic         ic_tag_perr,        // Icache Tag parity error
-
-
-   input  logic         scan_mode
-
-);
-
-   logic active_clk;
-   rvoclkhdr active_cg   ( .en(1'b1),         .l1clk(active_clk), .* );
-
-   // DCCM Instantiation
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      eb1_lsu_dccm_mem #(.pt(pt)) dccm (
-         .clk_override(dccm_clk_override),
-         .*
-      );
-   end else begin: Gen_dccm_disable
-      assign dccm_rd_data_lo = '0;
-      assign dccm_rd_data_hi = '0;
-   end
-
-if ( pt.ICACHE_ENABLE ) begin: icache
-   eb1_ifu_ic_mem #(.pt(pt)) icm  (
-      .clk_override(icm_clk_override),
-      .*
-   );
-end
-else  begin
-   assign   ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0] = '0;
-   assign   ic_tag_perr    = '0 ;
-   assign   ic_rd_data  = '0 ;
-   assign   ictag_debug_rd_data  = '0 ;
-end // else: !if( pt.ICACHE_ENABLE )
-
-
-
-if (pt.ICCM_ENABLE) begin : iccm
-   eb1_ifu_iccm_mem  #(.pt(pt)) iccm (.*,
-                  .clk_override(icm_clk_override),
-                  .iccm_rw_addr(iccm_rw_addr[pt.ICCM_BITS-1:1]),
-                  .iccm_rd_data(iccm_rd_data[63:0])
-                   );
-end
-else  begin
-   assign  iccm_rd_data    = '0 ;
-   assign iccm_rd_data_ecc = '0 ;
-end
-
-
-endmodule
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Programmable Interrupt Controller
-// Comments:
-//********************************************************************************
-
-module eb1_pic_ctrl
-import eb1_pkg::*; 
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-                  (
-
-                     input  logic                   clk,                  // Core clock
-                     input  logic                   free_clk,             // free clock
-                     input  logic                   rst_l,                // Reset for all flops
-                     input  logic                   clk_override,         // Clock over-ride for gating
-                     input  logic                   io_clk_override,      // PIC IO  Clock over-ride for gating
-                     input  logic [pt.PIC_TOTAL_INT_PLUS1-1:0]   extintsrc_req,  // Interrupt requests
-                     input  logic [31:0]            picm_rdaddr,          // Address of the register
-                     input  logic [31:0]            picm_wraddr,          // Address of the register
-                     input  logic [31:0]            picm_wr_data,         // Data to be written to the register
-                     input  logic                   picm_wren,            // Write enable to the register
-                     input  logic                   picm_rden,            // Read enable for the register
-                     input  logic                   picm_mken,            // Read the Mask for the register
-                     input  logic [3:0]             meicurpl,             // Current Priority Level
-                     input  logic [3:0]             meipt,                // Current Priority Threshold
-
-                     output logic                   mexintpend,           // External Inerrupt request to the core
-                     output logic [7:0]             claimid,              // Claim Id of the requested interrupt
-                     output logic [3:0]             pl,                   // Priority level of the requested interrupt
-                     output logic [31:0]            picm_rd_data,         // Read data of the register
-                     output logic                   mhwakeup,             // Wake-up interrupt request
-                     input  logic                   scan_mode             // scan mode
-
-);
-
-localparam NUM_LEVELS            = $clog2(pt.PIC_TOTAL_INT_PLUS1);
-localparam INTPRIORITY_BASE_ADDR = pt.PIC_BASE_ADDR ;
-localparam INTPEND_BASE_ADDR     = pt.PIC_BASE_ADDR + 32'h00001000 ;
-localparam INTENABLE_BASE_ADDR   = pt.PIC_BASE_ADDR + 32'h00002000 ;
-localparam EXT_INTR_PIC_CONFIG   = pt.PIC_BASE_ADDR + 32'h00003000 ;
-localparam EXT_INTR_GW_CONFIG    = pt.PIC_BASE_ADDR + 32'h00004000 ;
-localparam EXT_INTR_GW_CLEAR     = pt.PIC_BASE_ADDR + 32'h00005000 ;
-
-
-localparam INTPEND_SIZE          = (pt.PIC_TOTAL_INT_PLUS1 < 32)  ? 32  :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 64)  ? 64  :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 128) ? 128 :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 256) ? 256 :
-                                   (pt.PIC_TOTAL_INT_PLUS1 < 512) ? 512 :  1024 ;
-
-localparam INT_GRPS              =   INTPEND_SIZE / 32 ;
-localparam INTPRIORITY_BITS      =  4 ;
-localparam ID_BITS               =  8 ;
-localparam int GW_CONFIG[pt.PIC_TOTAL_INT_PLUS1-1:0] = '{default:0} ;
-
-localparam INT_ENABLE_GRPS       =   (pt.PIC_TOTAL_INT_PLUS1 - 1)  / 4 ;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]           intenable_clk_enable ;
-logic [INT_ENABLE_GRPS:0]                    intenable_clk_enable_grp ;
-logic [INT_ENABLE_GRPS:0]                    gw_clk ;
-
-logic  addr_intpend_base_match;
-
-logic  raddr_config_pic_match ;
-logic  raddr_intenable_base_match;
-logic  raddr_intpriority_base_match;
-logic  raddr_config_gw_base_match ;
-
-logic  waddr_config_pic_match ;
-logic  waddr_intpriority_base_match;
-logic  waddr_intenable_base_match;
-logic  waddr_config_gw_base_match ;
-logic  addr_clear_gw_base_match ;
-
-logic  mexintpend_in;
-logic  mhwakeup_in ;
-logic  intpend_reg_read ;
-
-logic [31:0]                                 picm_rd_data_in, intpend_rd_out;
-logic                                        intenable_rd_out ;
-logic [INTPRIORITY_BITS-1:0]                 intpriority_rd_out;
-logic [1:0]                                  gw_config_rd_out;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [INTPRIORITY_BITS-1:0] intpriority_reg;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [INTPRIORITY_BITS-1:0] intpriority_reg_inv;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intpriority_reg_we;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intpriority_reg_re;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [1:0]                  gw_config_reg;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intenable_reg;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intenable_reg_we;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        intenable_reg_re;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        gw_config_reg_we;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        gw_config_reg_re;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        gw_clear_reg_we;
-
-logic [INTPEND_SIZE-1:0]                     intpend_reg_extended;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [INTPRIORITY_BITS-1:0] intpend_w_prior_en;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0] [ID_BITS-1:0]          intpend_id;
-logic [INTPRIORITY_BITS-1:0]                 maxint;
-logic [INTPRIORITY_BITS-1:0]                 selected_int_priority;
-logic [INT_GRPS-1:0] [31:0]                  intpend_rd_part_out ;
-
-logic                                        config_reg;
-logic                                        intpriord;
-logic                                        config_reg_we ;
-logic                                        config_reg_re ;
-logic                                        config_reg_in ;
-logic                                        prithresh_reg_write , prithresh_reg_read;
-logic                                        intpriority_reg_read ;
-logic                                        intenable_reg_read   ;
-logic                                        gw_config_reg_read   ;
-logic                                        picm_wren_ff , picm_rden_ff ;
-logic [31:0]                                 picm_raddr_ff;
-logic [31:0]                                 picm_waddr_ff;
-logic [31:0]                                 picm_wr_data_ff;
-logic [3:0]                                  mask;
-logic                                        picm_mken_ff;
-logic [ID_BITS-1:0]                          claimid_in ;
-logic [INTPRIORITY_BITS-1:0]                 pl_in ;
-logic [INTPRIORITY_BITS-1:0]                 pl_in_q ;
-
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        extintsrc_req_sync;
-logic [pt.PIC_TOTAL_INT_PLUS1-1:0]                        extintsrc_req_gw;
-   logic                                                  picm_bypass_ff;
-
-// clkens
-   logic                                     pic_raddr_c1_clken;
-   logic                                     pic_waddr_c1_clken;
-   logic                                     pic_data_c1_clken;
-   logic                                     pic_pri_c1_clken;
-   logic                                     pic_int_c1_clken;
-   logic                                     gw_config_c1_clken;
-
-// clocks
-   logic                                     pic_raddr_c1_clk;
-   logic                                     pic_data_c1_clk;
-   logic                                     pic_pri_c1_clk;
-   logic                                     pic_int_c1_clk;
-   logic                                     gw_config_c1_clk;
-
-// ---- Clock gating section ------
-// c1 clock enables
-   assign pic_raddr_c1_clken  = picm_mken | picm_rden | clk_override;
-   assign pic_data_c1_clken   = picm_wren | clk_override;
-   assign pic_pri_c1_clken    = (waddr_intpriority_base_match & picm_wren_ff)  | (raddr_intpriority_base_match & picm_rden_ff) | clk_override;
-   assign pic_int_c1_clken    = (waddr_intenable_base_match   & picm_wren_ff)  | (raddr_intenable_base_match   & picm_rden_ff) | clk_override;
-   assign gw_config_c1_clken  = (waddr_config_gw_base_match   & picm_wren_ff)  | (raddr_config_gw_base_match   & picm_rden_ff) | clk_override;
-
-   // C1 - 1 clock pulse for data
-   rvoclkhdr pic_addr_c1_cgc   ( .en(pic_raddr_c1_clken),  .l1clk(pic_raddr_c1_clk), .* );
-   rvoclkhdr pic_data_c1_cgc   ( .en(pic_data_c1_clken),   .l1clk(pic_data_c1_clk), .* );
-   rvoclkhdr pic_pri_c1_cgc    ( .en(pic_pri_c1_clken),    .l1clk(pic_pri_c1_clk),  .* );
-   rvoclkhdr pic_int_c1_cgc    ( .en(pic_int_c1_clken),    .l1clk(pic_int_c1_clk),  .* );
-   rvoclkhdr gw_config_c1_cgc  ( .en(gw_config_c1_clken),  .l1clk(gw_config_c1_clk),  .* );
-
-// ------ end clock gating section ------------------------
-
-assign raddr_intenable_base_match   = (picm_raddr_ff[31:NUM_LEVELS+2] == INTENABLE_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign raddr_intpriority_base_match = (picm_raddr_ff[31:NUM_LEVELS+2] == INTPRIORITY_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign raddr_config_gw_base_match   = (picm_raddr_ff[31:NUM_LEVELS+2] == EXT_INTR_GW_CONFIG[31:NUM_LEVELS+2]) ;
-assign raddr_config_pic_match       = (picm_raddr_ff[31:0]            == EXT_INTR_PIC_CONFIG[31:0]) ;
-
-assign addr_intpend_base_match      = (picm_raddr_ff[31:6]            == INTPEND_BASE_ADDR[31:6]) ;
-
-assign waddr_config_pic_match       = (picm_waddr_ff[31:0]            == EXT_INTR_PIC_CONFIG[31:0]) ;
-assign addr_clear_gw_base_match     = (picm_waddr_ff[31:NUM_LEVELS+2] == EXT_INTR_GW_CLEAR[31:NUM_LEVELS+2]) ;
-assign waddr_intpriority_base_match = (picm_waddr_ff[31:NUM_LEVELS+2] == INTPRIORITY_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign waddr_intenable_base_match   = (picm_waddr_ff[31:NUM_LEVELS+2] == INTENABLE_BASE_ADDR[31:NUM_LEVELS+2]) ;
-assign waddr_config_gw_base_match   = (picm_waddr_ff[31:NUM_LEVELS+2] == EXT_INTR_GW_CONFIG[31:NUM_LEVELS+2]) ;
-
-   assign picm_bypass_ff = picm_rden_ff & picm_wren_ff & ( picm_raddr_ff[31:0] == picm_waddr_ff[31:0] );    // pic writes and reads to same address together
-
-
-rvdff #(32) picm_radd_flop  (.*, .din (picm_rdaddr),        .dout(picm_raddr_ff),         .clk(pic_raddr_c1_clk));
-rvdff #(32) picm_wadd_flop  (.*, .din (picm_wraddr),        .dout(picm_waddr_ff),         .clk(pic_data_c1_clk));
-rvdff  #(1) picm_wre_flop   (.*, .din (picm_wren),          .dout(picm_wren_ff),          .clk(free_clk));
-rvdff  #(1) picm_rde_flop   (.*, .din (picm_rden),          .dout(picm_rden_ff),          .clk(free_clk));
-rvdff  #(1) picm_mke_flop   (.*, .din (picm_mken),          .dout(picm_mken_ff),          .clk(free_clk));
-rvdff #(32) picm_dat_flop   (.*, .din (picm_wr_data[31:0]), .dout(picm_wr_data_ff[31:0]), .clk(pic_data_c1_clk));
-
-
-genvar p ;
-for (p=0; p<=INT_ENABLE_GRPS ; p++) begin  : IO_CLK_GRP
-   if (p==INT_ENABLE_GRPS) begin : LAST_GRP
-       assign intenable_clk_enable_grp[p] = |intenable_clk_enable[pt.PIC_TOTAL_INT_PLUS1-1 : p*4] | io_clk_override;
-       rvoclkhdr intenable_c1_cgc   ( .en(intenable_clk_enable_grp[p]),  .l1clk(gw_clk[p]), .* );
-   end else begin :  CLK_GRPS
-       assign intenable_clk_enable_grp[p] = |intenable_clk_enable[p*4+3 : p*4] | io_clk_override;
-       rvoclkhdr intenable_c1_cgc   ( .en(intenable_clk_enable_grp[p]),  .l1clk(gw_clk[p]), .* );
-   end
-end
-
-
-
-genvar i ;
-for (i=0; i<pt.PIC_TOTAL_INT_PLUS1 ; i++) begin  : SETREG
-
- if (i > 0 ) begin : NON_ZERO_INT
-     assign intpriority_reg_we[i] =  waddr_intpriority_base_match & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff;
-     assign intpriority_reg_re[i] =  raddr_intpriority_base_match & (picm_raddr_ff[NUM_LEVELS+1:2] == i) & picm_rden_ff;
-
-     assign intenable_reg_we[i]   =  waddr_intenable_base_match   & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff;
-     assign intenable_reg_re[i]   =  raddr_intenable_base_match   & (picm_raddr_ff[NUM_LEVELS+1:2] == i) & picm_rden_ff;
-
-     assign gw_config_reg_we[i]   =  waddr_config_gw_base_match   & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff;
-     assign gw_config_reg_re[i]   =  raddr_config_gw_base_match   & (picm_raddr_ff[NUM_LEVELS+1:2] == i) & picm_rden_ff;
-
-     assign gw_clear_reg_we[i]    =  addr_clear_gw_base_match     & (picm_waddr_ff[NUM_LEVELS+1:2] == i) & picm_wren_ff ;
-
-     rvdffs #(INTPRIORITY_BITS) intpriority_ff  (.*, .en( intpriority_reg_we[i]), .din (picm_wr_data_ff[INTPRIORITY_BITS-1:0]), .dout(intpriority_reg[i]), .clk(pic_pri_c1_clk));
-     rvdffs #(1)                 intenable_ff   (.*, .en( intenable_reg_we[i]),   .din (picm_wr_data_ff[0]),                    .dout(intenable_reg[i]),   .clk(pic_int_c1_clk));
-
-     assign intenable_clk_enable[i]  =  gw_config_reg[i][1] | intenable_reg_we[i] | intenable_reg[i] | gw_clear_reg_we[i] ;
-
-     rvsyncss_fpga  #(1) sync_inst
-     (
-      .gw_clk      (gw_clk[i/4]),
-      .rawclk      (clk),
-      .clken       (intenable_clk_enable_grp[i/4]),
-      .dout        (extintsrc_req_sync[i]),
-      .din         (extintsrc_req[i]),
-      .*) ;
-
-
-
-//     if (GW_CONFIG[i]) begin
-
-        rvdffs #(2)                 gw_config_ff   (.*, .en( gw_config_reg_we[i]),   .din (picm_wr_data_ff[1:0]),                  .dout(gw_config_reg[i]),   .clk(gw_config_c1_clk));
-
-        eb1_configurable_gw config_gw_inst(.*,
-                                            .gw_clk(gw_clk[i/4]),
-                                            .rawclk(clk),
-                                            .clken (intenable_clk_enable_grp[i/4]),
-                                            .extintsrc_req_sync(extintsrc_req_sync[i]) ,
-                                            .meigwctrl_polarity(gw_config_reg[i][0]) ,
-                                            .meigwctrl_type(gw_config_reg[i][1]) ,
-                                            .meigwclr(gw_clear_reg_we[i]) ,
-                                            .extintsrc_req_config(extintsrc_req_gw[i])
-                                            );
-
- end else begin : INT_ZERO
-     assign intpriority_reg_we[i] =  1'b0 ;
-     assign intpriority_reg_re[i] =  1'b0 ;
-     assign intenable_reg_we[i]   =  1'b0 ;
-     assign intenable_reg_re[i]   =  1'b0 ;
-
-     assign gw_config_reg_we[i]   =  1'b0 ;
-     assign gw_config_reg_re[i]   =  1'b0 ;
-     assign gw_clear_reg_we[i]    =  1'b0 ;
-
-     assign gw_config_reg[i]    = '0 ;
-
-     assign intpriority_reg[i] = {INTPRIORITY_BITS{1'b0}} ;
-     assign intenable_reg[i]   = 1'b0 ;
-     assign extintsrc_req_gw[i] = 1'b0 ;
-     assign extintsrc_req_sync[i]    = 1'b0 ;
-     assign intenable_clk_enable[i] = 1'b0;
- end
-
-
-    assign intpriority_reg_inv[i] =  intpriord ? ~intpriority_reg[i] : intpriority_reg[i] ;
-
-    assign intpend_w_prior_en[i]  =  {INTPRIORITY_BITS{(extintsrc_req_gw[i] & intenable_reg[i])}} & intpriority_reg_inv[i] ;
-    assign intpend_id[i]          =  i ;
-end
-
-
-        assign pl_in[INTPRIORITY_BITS-1:0]                  =      selected_int_priority[INTPRIORITY_BITS-1:0] ;
-
-
- genvar l, m , j, k;
-
-if (pt.PIC_2CYCLE == 1) begin : genblock
-        logic [NUM_LEVELS/2:0] [pt.PIC_TOTAL_INT_PLUS1+2:0] [INTPRIORITY_BITS-1:0] level_intpend_w_prior_en;
-        logic [NUM_LEVELS/2:0] [pt.PIC_TOTAL_INT_PLUS1+2:0] [ID_BITS-1:0]          level_intpend_id;
-        logic [NUM_LEVELS:NUM_LEVELS/2] [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0] [INTPRIORITY_BITS-1:0] levelx_intpend_w_prior_en;
-        logic [NUM_LEVELS:NUM_LEVELS/2] [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0] [ID_BITS-1:0]          levelx_intpend_id;
-
-        assign level_intpend_w_prior_en[0][pt.PIC_TOTAL_INT_PLUS1+2:0] = {4'b0,4'b0,4'b0,intpend_w_prior_en[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-        assign level_intpend_id[0][pt.PIC_TOTAL_INT_PLUS1+2:0]         = {8'b0,8'b0,8'b0,intpend_id[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-
-        logic [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0] [INTPRIORITY_BITS-1:0] l2_intpend_w_prior_en_ff;
-        logic [(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0] [ID_BITS-1:0]          l2_intpend_id_ff;
-
-        assign levelx_intpend_w_prior_en[NUM_LEVELS/2][(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0] = {{1*INTPRIORITY_BITS{1'b0}},l2_intpend_w_prior_en_ff[(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0]} ;
-        assign levelx_intpend_id[NUM_LEVELS/2][(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2))+1:0]         = {{1*ID_BITS{1'b1}},l2_intpend_id_ff[(pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2)):0]} ;
-///  Do the prioritization of the interrupts here  ////////////
- for (l=0; l<NUM_LEVELS/2 ; l++) begin : TOP_LEVEL
-    for (m=0; m<=(pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1)) ; m++) begin : COMPARE
-       if ( m == (pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1))) begin
-            assign level_intpend_w_prior_en[l+1][m+1] = '0 ;
-            assign level_intpend_id[l+1][m+1]         = '0 ;
-       end
-       eb1_cmp_and_mux  #(.ID_BITS(ID_BITS),
-                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l1 (
-                      .a_id(level_intpend_id[l][2*m]),
-                      .a_priority(level_intpend_w_prior_en[l][2*m]),
-                      .b_id(level_intpend_id[l][2*m+1]),
-                      .b_priority(level_intpend_w_prior_en[l][2*m+1]),
-                      .out_id(level_intpend_id[l+1][m]),
-                      .out_priority(level_intpend_w_prior_en[l+1][m])) ;
-
-    end
- end
-
-        for (i=0; i<=pt.PIC_TOTAL_INT_PLUS1/2**(NUM_LEVELS/2) ; i++) begin : MIDDLE_FLOPS
-          rvdff #(INTPRIORITY_BITS) leveb1_intpend_prior_reg  (.*, .din (level_intpend_w_prior_en[NUM_LEVELS/2][i]), .dout(l2_intpend_w_prior_en_ff[i]),  .clk(free_clk));
-          rvdff #(ID_BITS)          leveb1_intpend_id_reg     (.*, .din (level_intpend_id[NUM_LEVELS/2][i]),         .dout(l2_intpend_id_ff[i]),          .clk(free_clk));
-        end
-
- for (j=NUM_LEVELS/2; j<NUM_LEVELS ; j++) begin : BOT_LEVELS
-    for (k=0; k<=(pt.PIC_TOTAL_INT_PLUS1)/(2**(j+1)) ; k++) begin : COMPARE
-       if ( k == (pt.PIC_TOTAL_INT_PLUS1)/(2**(j+1))) begin
-            assign levelx_intpend_w_prior_en[j+1][k+1] = '0 ;
-            assign levelx_intpend_id[j+1][k+1]         = '0 ;
-       end
-            eb1_cmp_and_mux  #(.ID_BITS(ID_BITS),
-                        .INTPRIORITY_BITS(INTPRIORITY_BITS))
-                 cmp_l1 (
-                        .a_id(levelx_intpend_id[j][2*k]),
-                        .a_priority(levelx_intpend_w_prior_en[j][2*k]),
-                        .b_id(levelx_intpend_id[j][2*k+1]),
-                        .b_priority(levelx_intpend_w_prior_en[j][2*k+1]),
-                        .out_id(levelx_intpend_id[j+1][k]),
-                        .out_priority(levelx_intpend_w_prior_en[j+1][k])) ;
-    end
-  end
-        assign claimid_in[ID_BITS-1:0]                      =      levelx_intpend_id[NUM_LEVELS][0] ;   // This is the last level output
-        assign selected_int_priority[INTPRIORITY_BITS-1:0]  =      levelx_intpend_w_prior_en[NUM_LEVELS][0] ;
-end
-else begin : genblock
-
-        logic [NUM_LEVELS:0] [pt.PIC_TOTAL_INT_PLUS1+1:0] [INTPRIORITY_BITS-1:0] level_intpend_w_prior_en;
-        logic [NUM_LEVELS:0] [pt.PIC_TOTAL_INT_PLUS1+1:0] [ID_BITS-1:0]          level_intpend_id;
-
-        assign level_intpend_w_prior_en[0][pt.PIC_TOTAL_INT_PLUS1+1:0] = {{2*INTPRIORITY_BITS{1'b0}},intpend_w_prior_en[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-        assign level_intpend_id[0][pt.PIC_TOTAL_INT_PLUS1+1:0] = {{2*ID_BITS{1'b1}},intpend_id[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-
-///  Do the prioritization of the interrupts here  ////////////
-// genvar l, m , j, k;  already declared outside ifdef
- for (l=0; l<NUM_LEVELS ; l++) begin : LEVEL
-    for (m=0; m<=(pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1)) ; m++) begin : COMPARE
-       if ( m == (pt.PIC_TOTAL_INT_PLUS1)/(2**(l+1))) begin
-            assign level_intpend_w_prior_en[l+1][m+1] = '0 ;
-            assign level_intpend_id[l+1][m+1]         = '0 ;
-       end
-       eb1_cmp_and_mux  #(.ID_BITS(ID_BITS),
-                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l1 (
-                      .a_id(level_intpend_id[l][2*m]),
-                      .a_priority(level_intpend_w_prior_en[l][2*m]),
-                      .b_id(level_intpend_id[l][2*m+1]),
-                      .b_priority(level_intpend_w_prior_en[l][2*m+1]),
-                      .out_id(level_intpend_id[l+1][m]),
-                      .out_priority(level_intpend_w_prior_en[l+1][m])) ;
-
-    end
- end
-        assign claimid_in[ID_BITS-1:0]                      =      level_intpend_id[NUM_LEVELS][0] ;   // This is the last level output
-        assign selected_int_priority[INTPRIORITY_BITS-1:0]  =      level_intpend_w_prior_en[NUM_LEVELS][0] ;
-
-end
-
-
-
-///////////////////////////////////////////////////////////////////////
-// Config Reg`
-///////////////////////////////////////////////////////////////////////
-assign config_reg_we               =  waddr_config_pic_match & picm_wren_ff;
-assign config_reg_re               =  raddr_config_pic_match & picm_rden_ff;
-
-assign config_reg_in  =  picm_wr_data_ff[0] ;   //
-rvdffs #(1) config_reg_ff  (.*, .clk(free_clk), .en(config_reg_we), .din (config_reg_in), .dout(config_reg));
-
-assign intpriord  = config_reg ;
-
-
-
-//////////////////////////////////////////////////////////////////////////
-// Send the interrupt to the core if it is above the thresh-hold
-//////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////
-/// ClaimId  Reg and Corresponding PL
-///////////////////////////////////////////////////////////
-//
-assign pl_in_q[INTPRIORITY_BITS-1:0] = intpriord ? ~pl_in : pl_in ;
-rvdff #(ID_BITS)          claimid_ff  (.*,  .din (claimid_in[ID_BITS-1:00]),     .dout(claimid[ID_BITS-1:00]),    .clk(free_clk));
-rvdff  #(INTPRIORITY_BITS) pl_ff      (.*, .din (pl_in_q[INTPRIORITY_BITS-1:0]), .dout(pl[INTPRIORITY_BITS-1:0]), .clk(free_clk));
-
-logic [INTPRIORITY_BITS-1:0] meipt_inv , meicurpl_inv ;
-assign meipt_inv[INTPRIORITY_BITS-1:0]    = intpriord ? ~meipt[INTPRIORITY_BITS-1:0]    : meipt[INTPRIORITY_BITS-1:0] ;
-assign meicurpl_inv[INTPRIORITY_BITS-1:0] = intpriord ? ~meicurpl[INTPRIORITY_BITS-1:0] : meicurpl[INTPRIORITY_BITS-1:0] ;
-assign mexintpend_in = (( selected_int_priority[INTPRIORITY_BITS-1:0] > meipt_inv[INTPRIORITY_BITS-1:0]) &
-                        ( selected_int_priority[INTPRIORITY_BITS-1:0] > meicurpl_inv[INTPRIORITY_BITS-1:0]) );
-rvdff #(1) mexintpend_ff  (.*, .clk(free_clk), .din (mexintpend_in), .dout(mexintpend));
-
-assign maxint[INTPRIORITY_BITS-1:0]      =  intpriord ? 0 : 15 ;
-assign mhwakeup_in = ( pl_in_q[INTPRIORITY_BITS-1:0] == maxint) ;
-rvdff #(1) wake_up_ff  (.*, .clk(free_clk), .din (mhwakeup_in), .dout(mhwakeup));
-
-
-
-
-
-//////////////////////////////////////////////////////////////////////////
-//  Reads of register.
-//  1- intpending
-//////////////////////////////////////////////////////////////////////////
-
-assign intpend_reg_read     =  addr_intpend_base_match      & picm_rden_ff ;
-assign intpriority_reg_read =  raddr_intpriority_base_match & picm_rden_ff;
-assign intenable_reg_read   =  raddr_intenable_base_match   & picm_rden_ff;
-assign gw_config_reg_read   =  raddr_config_gw_base_match   & picm_rden_ff;
-
-assign intpend_reg_extended[INTPEND_SIZE-1:0]  = {{INTPEND_SIZE-pt.PIC_TOTAL_INT_PLUS1{1'b0}},extintsrc_req_gw[pt.PIC_TOTAL_INT_PLUS1-1:0]} ;
-
-   for (i=0; i<(INT_GRPS); i++) begin
-            assign intpend_rd_part_out[i] =  (({32{intpend_reg_read & picm_raddr_ff[5:2] == i}}) & intpend_reg_extended[((32*i)+31):(32*i)]) ;
-   end
-
-   always_comb begin : INTPEND_RD
-         intpend_rd_out =  '0 ;
-         for (int i=0; i<INT_GRPS; i++) begin
-               intpend_rd_out |=  intpend_rd_part_out[i] ;
-         end
-   end
-
-   always_comb begin : INTEN_RD
-         intenable_rd_out =  '0 ;
-         intpriority_rd_out =  '0 ;
-         gw_config_rd_out =  '0 ;
-         for (int i=0; i<pt.PIC_TOTAL_INT_PLUS1; i++) begin
-              if (intenable_reg_re[i]) begin
-               intenable_rd_out    =  intenable_reg[i]  ;
-              end
-              if (intpriority_reg_re[i]) begin
-               intpriority_rd_out  =  intpriority_reg[i] ;
-              end
-              if (gw_config_reg_re[i]) begin
-               gw_config_rd_out  =  gw_config_reg[i] ;
-              end
-         end
-   end
-
-
- assign picm_rd_data_in[31:0] = ({32{intpend_reg_read      }} &   intpend_rd_out                                                    ) |
-                                ({32{intpriority_reg_read  }} &  {{32-INTPRIORITY_BITS{1'b0}}, intpriority_rd_out                 } ) |
-                                ({32{intenable_reg_read    }} &  {31'b0 , intenable_rd_out                                        } ) |
-                                ({32{gw_config_reg_read    }} &  {30'b0 , gw_config_rd_out                                        } ) |
-                                ({32{config_reg_re         }} &  {31'b0 , config_reg                                              } ) |
-                                ({32{picm_mken_ff & mask[3]}} &  {30'b0 , 2'b11                                                   } ) |
-                                ({32{picm_mken_ff & mask[2]}} &  {31'b0 , 1'b1                                                    } ) |
-                                ({32{picm_mken_ff & mask[1]}} &  {28'b0 , 4'b1111                                                 } ) |
-                                ({32{picm_mken_ff & mask[0]}} &   32'b0                                                             ) ;
-
-
-assign picm_rd_data[31:0] = picm_bypass_ff ? picm_wr_data_ff[31:0] : picm_rd_data_in[31:0] ;
-
-logic [14:0] address;
-
-assign address[14:0] = picm_raddr_ff[14:0];
-
-// mask[3:0] = { 4'b1000 - 30b mask,4'b0100 - 31b mask, 4'b0010 - 28b mask, 4'b0001 - 32b mask }
-always_comb begin
-  case (address[14:0])
-    15'b011000000000000 : mask[3:0] = 4'b0100;
-    15'b100000000000100 : mask[3:0] = 4'b1000;
-    15'b100000000001000 : mask[3:0] = 4'b1000;
-    15'b100000000001100 : mask[3:0] = 4'b1000;
-    15'b100000000010000 : mask[3:0] = 4'b1000;
-    15'b100000000010100 : mask[3:0] = 4'b1000;
-    15'b100000000011000 : mask[3:0] = 4'b1000;
-    15'b100000000011100 : mask[3:0] = 4'b1000;
-    15'b100000000100000 : mask[3:0] = 4'b1000;
-    15'b100000000100100 : mask[3:0] = 4'b1000;
-    15'b100000000101000 : mask[3:0] = 4'b1000;
-    15'b100000000101100 : mask[3:0] = 4'b1000;
-    15'b100000000110000 : mask[3:0] = 4'b1000;
-    15'b100000000110100 : mask[3:0] = 4'b1000;
-    15'b100000000111000 : mask[3:0] = 4'b1000;
-    15'b100000000111100 : mask[3:0] = 4'b1000;
-    15'b100000001000000 : mask[3:0] = 4'b1000;
-    15'b100000001000100 : mask[3:0] = 4'b1000;
-    15'b100000001001000 : mask[3:0] = 4'b1000;
-    15'b100000001001100 : mask[3:0] = 4'b1000;
-    15'b100000001010000 : mask[3:0] = 4'b1000;
-    15'b100000001010100 : mask[3:0] = 4'b1000;
-    15'b100000001011000 : mask[3:0] = 4'b1000;
-    15'b100000001011100 : mask[3:0] = 4'b1000;
-    15'b100000001100000 : mask[3:0] = 4'b1000;
-    15'b100000001100100 : mask[3:0] = 4'b1000;
-    15'b100000001101000 : mask[3:0] = 4'b1000;
-    15'b100000001101100 : mask[3:0] = 4'b1000;
-    15'b100000001110000 : mask[3:0] = 4'b1000;
-    15'b100000001110100 : mask[3:0] = 4'b1000;
-    15'b100000001111000 : mask[3:0] = 4'b1000;
-    15'b100000001111100 : mask[3:0] = 4'b1000;
-    15'b010000000000100 : mask[3:0] = 4'b0100;
-    15'b010000000001000 : mask[3:0] = 4'b0100;
-    15'b010000000001100 : mask[3:0] = 4'b0100;
-    15'b010000000010000 : mask[3:0] = 4'b0100;
-    15'b010000000010100 : mask[3:0] = 4'b0100;
-    15'b010000000011000 : mask[3:0] = 4'b0100;
-    15'b010000000011100 : mask[3:0] = 4'b0100;
-    15'b010000000100000 : mask[3:0] = 4'b0100;
-    15'b010000000100100 : mask[3:0] = 4'b0100;
-    15'b010000000101000 : mask[3:0] = 4'b0100;
-    15'b010000000101100 : mask[3:0] = 4'b0100;
-    15'b010000000110000 : mask[3:0] = 4'b0100;
-    15'b010000000110100 : mask[3:0] = 4'b0100;
-    15'b010000000111000 : mask[3:0] = 4'b0100;
-    15'b010000000111100 : mask[3:0] = 4'b0100;
-    15'b010000001000000 : mask[3:0] = 4'b0100;
-    15'b010000001000100 : mask[3:0] = 4'b0100;
-    15'b010000001001000 : mask[3:0] = 4'b0100;
-    15'b010000001001100 : mask[3:0] = 4'b0100;
-    15'b010000001010000 : mask[3:0] = 4'b0100;
-    15'b010000001010100 : mask[3:0] = 4'b0100;
-    15'b010000001011000 : mask[3:0] = 4'b0100;
-    15'b010000001011100 : mask[3:0] = 4'b0100;
-    15'b010000001100000 : mask[3:0] = 4'b0100;
-    15'b010000001100100 : mask[3:0] = 4'b0100;
-    15'b010000001101000 : mask[3:0] = 4'b0100;
-    15'b010000001101100 : mask[3:0] = 4'b0100;
-    15'b010000001110000 : mask[3:0] = 4'b0100;
-    15'b010000001110100 : mask[3:0] = 4'b0100;
-    15'b010000001111000 : mask[3:0] = 4'b0100;
-    15'b010000001111100 : mask[3:0] = 4'b0100;
-    15'b000000000000100 : mask[3:0] = 4'b0010;
-    15'b000000000001000 : mask[3:0] = 4'b0010;
-    15'b000000000001100 : mask[3:0] = 4'b0010;
-    15'b000000000010000 : mask[3:0] = 4'b0010;
-    15'b000000000010100 : mask[3:0] = 4'b0010;
-    15'b000000000011000 : mask[3:0] = 4'b0010;
-    15'b000000000011100 : mask[3:0] = 4'b0010;
-    15'b000000000100000 : mask[3:0] = 4'b0010;
-    15'b000000000100100 : mask[3:0] = 4'b0010;
-    15'b000000000101000 : mask[3:0] = 4'b0010;
-    15'b000000000101100 : mask[3:0] = 4'b0010;
-    15'b000000000110000 : mask[3:0] = 4'b0010;
-    15'b000000000110100 : mask[3:0] = 4'b0010;
-    15'b000000000111000 : mask[3:0] = 4'b0010;
-    15'b000000000111100 : mask[3:0] = 4'b0010;
-    15'b000000001000000 : mask[3:0] = 4'b0010;
-    15'b000000001000100 : mask[3:0] = 4'b0010;
-    15'b000000001001000 : mask[3:0] = 4'b0010;
-    15'b000000001001100 : mask[3:0] = 4'b0010;
-    15'b000000001010000 : mask[3:0] = 4'b0010;
-    15'b000000001010100 : mask[3:0] = 4'b0010;
-    15'b000000001011000 : mask[3:0] = 4'b0010;
-    15'b000000001011100 : mask[3:0] = 4'b0010;
-    15'b000000001100000 : mask[3:0] = 4'b0010;
-    15'b000000001100100 : mask[3:0] = 4'b0010;
-    15'b000000001101000 : mask[3:0] = 4'b0010;
-    15'b000000001101100 : mask[3:0] = 4'b0010;
-    15'b000000001110000 : mask[3:0] = 4'b0010;
-    15'b000000001110100 : mask[3:0] = 4'b0010;
-    15'b000000001111000 : mask[3:0] = 4'b0010;
-    15'b000000001111100 : mask[3:0] = 4'b0010;
-    default           : mask[3:0] = 4'b0001;
-  endcase
-end
-
-endmodule
-
-
-module eb1_cmp_and_mux #(parameter ID_BITS=8,
-                               INTPRIORITY_BITS = 4)
-                    (
-                        input  logic [ID_BITS-1:0]       a_id,
-                        input  logic [INTPRIORITY_BITS-1:0] a_priority,
-
-                        input  logic [ID_BITS-1:0]       b_id,
-                        input  logic [INTPRIORITY_BITS-1:0] b_priority,
-
-                        output logic [ID_BITS-1:0]       out_id,
-                        output logic [INTPRIORITY_BITS-1:0] out_priority
-
-                    );
-
-logic   a_is_lt_b ;
-
-assign  a_is_lt_b  = ( a_priority[INTPRIORITY_BITS-1:0] < b_priority[INTPRIORITY_BITS-1:0] ) ;
-
-assign  out_id[ID_BITS-1:0]                = a_is_lt_b ? b_id[ID_BITS-1:0] :
-                                                         a_id[ID_BITS-1:0] ;
-assign  out_priority[INTPRIORITY_BITS-1:0] = a_is_lt_b ? b_priority[INTPRIORITY_BITS-1:0] :
-                                                         a_priority[INTPRIORITY_BITS-1:0] ;
-endmodule // cmp_and_mux
-
-
-module eb1_configurable_gw (
-                             input logic gw_clk,
-                             input logic rawclk,
-                             input logic clken,
-                             input logic rst_l,
-                             input logic extintsrc_req_sync ,
-                             input logic meigwctrl_polarity ,
-                             input logic meigwctrl_type ,
-                             input logic meigwclr ,
-
-                             output logic extintsrc_req_config
-                            );
-
-
-  logic  gw_int_pending_in , gw_int_pending ;
-
-  assign gw_int_pending_in =  (extintsrc_req_sync ^ meigwctrl_polarity) | (gw_int_pending & ~meigwclr) ;
-  rvdff_fpga #(1) int_pend_ff        (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (gw_int_pending_in),     .dout(gw_int_pending));
-
-
-  assign extintsrc_req_config =  meigwctrl_type ? ((extintsrc_req_sync ^  meigwctrl_polarity) | gw_int_pending) : (extintsrc_req_sync ^  meigwctrl_polarity) ;
-
-endmodule // configurable_gw
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-// $Id$
-//
-// Owner:
-// Function: AHB to AXI4 Bridge
-// Comments:
-//
-//********************************************************************************
-module ahb_to_axi4
-import eb1_pkg::*;
-#(
-   TAG = 1,
-   parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-//   ,TAG  = 1)
-(
-   input                   clk,
-   input                   rst_l,
-   input                   scan_mode,
-   input                   bus_clk_en,
-   input                   clk_override,
-
-   // AXI signals
-   // AXI Write Channels
-   output logic            axi_awvalid,
-   input  logic            axi_awready,
-   output logic [TAG-1:0]  axi_awid,
-   output logic [31:0]     axi_awaddr,
-   output logic [2:0]      axi_awsize,
-   output logic [2:0]      axi_awprot,
-   output logic [7:0]      axi_awlen,
-   output logic [1:0]      axi_awburst,
-
-   output logic            axi_wvalid,
-   input  logic            axi_wready,
-   output logic [63:0]     axi_wdata,
-   output logic [7:0]      axi_wstrb,
-   output logic            axi_wlast,
-
-   input  logic            axi_bvalid,
-   output logic            axi_bready,
-   input  logic [1:0]      axi_bresp,
-   input  logic [TAG-1:0]  axi_bid,
-
-   // AXI Read Channels
-   output logic            axi_arvalid,
-   input  logic            axi_arready,
-   output logic [TAG-1:0]  axi_arid,
-   output logic [31:0]     axi_araddr,
-   output logic [2:0]      axi_arsize,
-   output logic [2:0]      axi_arprot,
-   output logic [7:0]      axi_arlen,
-   output logic [1:0]      axi_arburst,
-
-   input  logic            axi_rvalid,
-   output logic            axi_rready,
-   input  logic [TAG-1:0]  axi_rid,
-   input  logic [63:0]     axi_rdata,
-   input  logic [1:0]      axi_rresp,
-
-   // AHB-Lite signals
-   input logic [31:0]      ahb_haddr,     // ahb bus address
-   input logic [2:0]       ahb_hburst,    // tied to 0
-   input logic             ahb_hmastlock, // tied to 0
-   input logic [3:0]       ahb_hprot,     // tied to 4'b0011
-   input logic [2:0]       ahb_hsize,     // size of bus transaction (possible values 0,1,2,3)
-   input logic [1:0]       ahb_htrans,    // Transaction type (possible values 0,2 only right now)
-   input logic             ahb_hwrite,    // ahb bus write
-   input logic [63:0]      ahb_hwdata,    // ahb bus write data
-   input logic             ahb_hsel,      // this slave was selected
-   input logic             ahb_hreadyin,  // previous hready was accepted or not
-
-   output logic [63:0]      ahb_hrdata,      // ahb bus read data
-   output logic             ahb_hreadyout,   // slave ready to accept transaction
-   output logic             ahb_hresp        // slave response (high indicates erro)
-
-);
-
-   logic [7:0]       master_wstrb;
-
- typedef enum logic [1:0] {   IDLE   = 2'b00,    // Nothing in the buffer. No commands yet recieved
-                              WR     = 2'b01,    // Write Command recieved
-                              RD     = 2'b10,    // Read Command recieved
-                              PEND   = 2'b11     // Waiting on Read Data from core
-                            } state_t;
-   state_t      buf_state, buf_nxtstate;
-   logic        buf_state_en;
-
-   // Buffer signals (one entry buffer)
-   logic                    buf_read_error_in, buf_read_error;
-   logic [63:0]             buf_rdata;
-
-   logic                    ahb_hready;
-   logic                    ahb_hready_q;
-   logic [1:0]              ahb_htrans_in, ahb_htrans_q;
-   logic [2:0]              ahb_hsize_q;
-   logic                    ahb_hwrite_q;
-   logic [31:0]             ahb_haddr_q;
-   logic [63:0]             ahb_hwdata_q;
-   logic                    ahb_hresp_q;
-
-    //Miscellaneous signals
-   logic                    ahb_addr_in_dccm, ahb_addr_in_iccm, ahb_addr_in_pic;
-   logic                    ahb_addr_in_dccm_region_nc, ahb_addr_in_iccm_region_nc, ahb_addr_in_pic_region_nc;
-   // signals needed for the read data coming back from the core and to block any further commands as AHB is a blocking bus
-   logic                    buf_rdata_en;
-
-   logic                    ahb_addr_clk_en, buf_rdata_clk_en;
-   logic                    bus_clk, ahb_addr_clk, buf_rdata_clk;
-   // Command buffer is the holding station where we convert to AXI and send to core
-   logic                    cmdbuf_wr_en, cmdbuf_rst;
-   logic                    cmdbuf_full;
-   logic                    cmdbuf_vld, cmdbuf_write;
-   logic [1:0]              cmdbuf_size;
-   logic [7:0]              cmdbuf_wstrb;
-   logic [31:0]             cmdbuf_addr;
-   logic [63:0]             cmdbuf_wdata;
-
-// FSM to control the bus states and when to block the hready and load the command buffer
-   always_comb begin
-      buf_nxtstate      = IDLE;
-      buf_state_en      = 1'b0;
-      buf_rdata_en      = 1'b0;              // signal to load the buffer when the core sends read data back
-      buf_read_error_in = 1'b0;              // signal indicating that an error came back with the read from the core
-      cmdbuf_wr_en      = 1'b0;              // all clear from the gasket to load the buffer with the command for reads, command/dat for writes
-      case (buf_state)
-         IDLE: begin  // No commands recieved
-                  buf_nxtstate      = ahb_hwrite ? WR : RD;
-                  buf_state_en      = ahb_hready & ahb_htrans[1] & ahb_hsel;                 // only transition on a valid hrtans
-          end
-         WR: begin // Write command recieved last cycle
-                  buf_nxtstate      = (ahb_hresp | (ahb_htrans[1:0] == 2'b0) | ~ahb_hsel) ? IDLE : ahb_hwrite  ? WR : RD;
-                  buf_state_en      = (~cmdbuf_full | ahb_hresp) ;
-                  cmdbuf_wr_en      = ~cmdbuf_full & ~(ahb_hresp | ((ahb_htrans[1:0] == 2'b01) & ahb_hsel));   // Dont send command to the buffer in case of an error or when the master is not ready with the data now.
-         end
-         RD: begin // Read command recieved last cycle.
-                 buf_nxtstate      = ahb_hresp ? IDLE :PEND;                                       // If error go to idle, else wait for read data
-                 buf_state_en      = (~cmdbuf_full | ahb_hresp);                                   // only when command can go, or if its an error
-                 cmdbuf_wr_en      = ~ahb_hresp & ~cmdbuf_full;                                    // send command only when no error
-         end
-         PEND: begin // Read Command has been sent. Waiting on Data.
-                 buf_nxtstate      = IDLE;                                                          // go back for next command and present data next cycle
-                 buf_state_en      = axi_rvalid & ~cmdbuf_write;                                    // read data is back
-                 buf_rdata_en      = buf_state_en;                                                  // buffer the read data coming back from core
-                 buf_read_error_in = buf_state_en & |axi_rresp[1:0];                                // buffer error flag if return has Error ( ECC )
-         end
-     endcase
-   end // always_comb begin
-
-    rvdffs_fpga #($bits(state_t)) state_reg (.*, .din(buf_nxtstate), .dout({buf_state}), .en(buf_state_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk));
-
-   assign master_wstrb[7:0]   = ({8{ahb_hsize_q[2:0] == 3'b0}}  & (8'b1    << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b1}}  & (8'b11   << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b10}} & (8'b1111 << ahb_haddr_q[2:0])) |
-                                ({8{ahb_hsize_q[2:0] == 3'b11}} & 8'b1111_1111);
-
-   // AHB signals
-   assign ahb_hreadyout       = ahb_hresp ? (ahb_hresp_q & ~ahb_hready_q) :
-                                         ((~cmdbuf_full | (buf_state == IDLE)) & ~(buf_state == RD | buf_state == PEND)  & ~buf_read_error);
-
-   assign ahb_hready          = ahb_hreadyout & ahb_hreadyin;
-   assign ahb_htrans_in[1:0]  = {2{ahb_hsel}} & ahb_htrans[1:0];
-   assign ahb_hrdata[63:0]    = buf_rdata[63:0];
-   assign ahb_hresp        = ((ahb_htrans_q[1:0] != 2'b0) & (buf_state != IDLE)  &
-
-                             ((~(ahb_addr_in_dccm | ahb_addr_in_iccm)) |                                                                                   // request not for ICCM or DCCM
-                             ((ahb_addr_in_iccm | (ahb_addr_in_dccm &  ahb_hwrite_q)) & ~((ahb_hsize_q[1:0] == 2'b10) | (ahb_hsize_q[1:0] == 2'b11))) |    // ICCM Rd/Wr OR DCCM Wr not the right size
-                             ((ahb_hsize_q[2:0] == 3'h1) & ahb_haddr_q[0])   |                                                                             // HW size but unaligned
-                             ((ahb_hsize_q[2:0] == 3'h2) & (|ahb_haddr_q[1:0])) |                                                                          // W size but unaligned
-                             ((ahb_hsize_q[2:0] == 3'h3) & (|ahb_haddr_q[2:0])))) |                                                                        // DW size but unaligned
-                             buf_read_error |                                                                                                              // Read ECC error
-                             (ahb_hresp_q & ~ahb_hready_q);
-
-   // Buffer signals - needed for the read data and ECC error response
-   rvdff_fpga  #(.WIDTH(64)) buf_rdata_ff     (.din(axi_rdata[63:0]),   .dout(buf_rdata[63:0]), .clk(buf_rdata_clk), .clken(buf_rdata_clk_en), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))  buf_read_error_ff(.din(buf_read_error_in), .dout(buf_read_error),  .clk(bus_clk),       .clken(bus_clk_en),       .rawclk(clk), .*);          // buf_read_error will be high only one cycle
-
-   // All the Master signals are captured before presenting it to the command buffer. We check for Hresp before sending it to the cmd buffer.
-   rvdff_fpga #(.WIDTH(1))  hresp_ff  (.din(ahb_hresp),          .dout(ahb_hresp_q),       .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hready_ff (.din(ahb_hready),         .dout(ahb_hready_q),      .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(2))  htrans_ff (.din(ahb_htrans_in[1:0]), .dout(ahb_htrans_q[1:0]), .clk(bus_clk),      .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(3))  hsize_ff  (.din(ahb_hsize[2:0]),     .dout(ahb_hsize_q[2:0]),  .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hwrite_ff (.din(ahb_hwrite),         .dout(ahb_hwrite_q),      .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(32)) haddr_ff  (.din(ahb_haddr[31:0]),    .dout(ahb_haddr_q[31:0]), .clk(ahb_addr_clk), .clken(ahb_addr_clk_en), .rawclk(clk), .*);
-
-   // Address check  dccm
-   rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                  .CCM_SIZE(pt.DCCM_SIZE)) addr_dccm_rangecheck (
-      .addr(ahb_haddr_q[31:0]),
-      .in_range(ahb_addr_in_dccm),
-      .in_region(ahb_addr_in_dccm_region_nc)
-   );
-
-   // Address check  iccm
-   if (pt.ICCM_ENABLE == 1) begin: GenICCM
-      rvrangecheck #(.CCM_SADR(pt.ICCM_SADR),
-                     .CCM_SIZE(pt.ICCM_SIZE)) addr_iccm_rangecheck (
-         .addr(ahb_haddr_q[31:0]),
-         .in_range(ahb_addr_in_iccm),
-         .in_region(ahb_addr_in_iccm_region_nc)
-      );
-   end else begin: GenNoICCM
-      assign ahb_addr_in_iccm = '0;
-      assign ahb_addr_in_iccm_region_nc = '0;
-   end
-
-   // PIC memory address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) addr_pic_rangecheck (
-      .addr(ahb_haddr_q[31:0]),
-      .in_range(ahb_addr_in_pic),
-      .in_region(ahb_addr_in_pic_region_nc)
-   );
-
-   // Command Buffer - Holding for the commands to be sent for the AXI. It will be converted to the AXI signals.
-   assign cmdbuf_rst         = (((axi_awvalid & axi_awready) | (axi_arvalid & axi_arready)) & ~cmdbuf_wr_en) | (ahb_hresp & ~cmdbuf_write);
-   assign cmdbuf_full        = (cmdbuf_vld & ~((axi_awvalid & axi_awready) | (axi_arvalid & axi_arready)));
-
-   rvdffsc_fpga #(.WIDTH(1))  cmdbuf_vldff      (.din(1'b1),              .dout(cmdbuf_vld),         .en(cmdbuf_wr_en), .clear(cmdbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(1))  cmdbuf_writeff    (.din(ahb_hwrite_q),      .dout(cmdbuf_write),       .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(2))  cmdbuf_sizeff     (.din(ahb_hsize_q[1:0]),  .dout(cmdbuf_size[1:0]),   .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(8))  cmdbuf_wstrbff    (.din(master_wstrb[7:0]), .dout(cmdbuf_wstrb[7:0]),  .en(cmdbuf_wr_en),                     .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32)) cmdbuf_addrff     (.din(ahb_haddr_q[31:0]), .dout(cmdbuf_addr[31:0]),  .en(cmdbuf_wr_en & bus_clk_en),        .clk(clk), .*);
-   rvdffe       #(.WIDTH(64)) cmdbuf_wdataff    (.din(ahb_hwdata[63:0]),  .dout(cmdbuf_wdata[63:0]), .en(cmdbuf_wr_en & bus_clk_en),        .clk(clk), .*);
-
-   // AXI Write Command Channel
-   assign axi_awvalid           = cmdbuf_vld & cmdbuf_write;
-   assign axi_awid[TAG-1:0]     = '0;
-   assign axi_awaddr[31:0]      = cmdbuf_addr[31:0];
-   assign axi_awsize[2:0]       = {1'b0, cmdbuf_size[1:0]};
-   assign axi_awprot[2:0]       = 3'b0;
-   assign axi_awlen[7:0]        = '0;
-   assign axi_awburst[1:0]      = 2'b01;
-   // AXI Write Data Channel - This is tied to the command channel as we only write the command buffer once we have the data.
-   assign axi_wvalid            = cmdbuf_vld & cmdbuf_write;
-   assign axi_wdata[63:0]       = cmdbuf_wdata[63:0];
-   assign axi_wstrb[7:0]        = cmdbuf_wstrb[7:0];
-   assign axi_wlast             = 1'b1;
-  // AXI Write Response - Always ready. AHB does not require a write response.
-   assign axi_bready            = 1'b1;
-   // AXI Read Channels
-   assign axi_arvalid           = cmdbuf_vld & ~cmdbuf_write;
-   assign axi_arid[TAG-1:0]     = '0;
-   assign axi_araddr[31:0]      = cmdbuf_addr[31:0];
-   assign axi_arsize[2:0]       = {1'b0, cmdbuf_size[1:0]};
-   assign axi_arprot            = 3'b0;
-   assign axi_arlen[7:0]        = '0;
-   assign axi_arburst[1:0]      = 2'b01;
-   // AXI Read Response Channel - Always ready as AHB reads are blocking and the the buffer is available for the read coming back always.
-   assign axi_rready            = 1'b1;
-
-   // Clock header logic
-   assign ahb_addr_clk_en = bus_clk_en & (ahb_hready & ahb_htrans[1]);
-   assign buf_rdata_clk_en    = bus_clk_en & buf_rdata_en;
-
-   rvclkhdr bus_cgc       (.en(bus_clk_en),       .l1clk(bus_clk),       .*);
-   rvclkhdr ahb_addr_cgc  (.en(ahb_addr_clk_en),  .l1clk(ahb_addr_clk),  .*);
-   rvclkhdr buf_rdata_cgc (.en(buf_rdata_clk_en), .l1clk(buf_rdata_clk), .*);
-
-
-endmodule // ahb_to_axi4
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2018 MERL Corporation or it's affiliates.
-// 
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// 
-// http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//------------------------------------------------------------------------------------
-//
-//  Copyright MERL, 2019
-//  Owner : Alex Grobman
-//  Description:  
-//                This module Synchronizes the signals between JTAG (TCK) and
-//                processor (Core_clk)
-//
-//-------------------------------------------------------------------------------------
-
-module dmi_jtag_to_core_sync (
-// JTAG signals
-input       rd_en,      // 1 bit  Read Enable from JTAG
-input       wr_en,      // 1 bit  Write enable from JTAG
-
-// Processor Signals
-input       rst_n,      // Core reset
-input       clk,        // Core clock
-
-output      reg_en,     // 1 bit  Write interface bit to Processor
-output      reg_wr_en   // 1 bit  Write enable to Processor
-);
-  
-wire        c_rd_en;
-wire        c_wr_en;
-reg [2:0]   rden, wren;
- 
-
-// Outputs
-assign reg_en    = c_wr_en | c_rd_en;
-assign reg_wr_en = c_wr_en;
-
-
-// synchronizers  
-always @ ( posedge clk or negedge rst_n) begin
-    if(!rst_n) begin
-        rden <= '0;
-        wren <= '0;
-    end
-    else begin
-        rden <= {rden[1:0], rd_en};
-        wren <= {wren[1:0], wr_en};
-    end
-end
-
-assign c_rd_en = rden[1] & ~rden[2];
-assign c_wr_en = wren[1] & ~wren[2];
- 
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Owner:
-// Function: AXI4 -> AHB Bridge
-// Comments:
-//
-//********************************************************************************
-module axi4_to_ahb
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-}
-,parameter TAG  = 1) (
-
-   input                   clk,
-   input                   free_clk,
-   input                   rst_l,
-   input                   scan_mode,
-   input                   bus_clk_en,
-   input                   clk_override,
-   input                   dec_tlu_force_halt,
-
-   // AXI signals
-   // AXI Write Channels
-   input  logic            axi_awvalid,
-   output logic            axi_awready,
-   input  logic [TAG-1:0]  axi_awid,
-   input  logic [31:0]     axi_awaddr,
-   input  logic [2:0]      axi_awsize,
-   input  logic [2:0]      axi_awprot,
-
-   input  logic            axi_wvalid,
-   output logic            axi_wready,
-   input  logic [63:0]     axi_wdata,
-   input  logic [7:0]      axi_wstrb,
-   input  logic            axi_wlast,
-
-   output logic            axi_bvalid,
-   input  logic            axi_bready,
-   output logic [1:0]      axi_bresp,
-   output logic [TAG-1:0]  axi_bid,
-
-   // AXI Read Channels
-   input  logic            axi_arvalid,
-   output logic            axi_arready,
-   input  logic [TAG-1:0]  axi_arid,
-   input  logic [31:0]     axi_araddr,
-   input  logic [2:0]      axi_arsize,
-   input  logic [2:0]      axi_arprot,
-
-   output logic            axi_rvalid,
-   input  logic            axi_rready,
-   output logic [TAG-1:0]  axi_rid,
-   output logic [63:0]     axi_rdata,
-   output logic [1:0]      axi_rresp,
-   output logic            axi_rlast,
-
-   // AHB-Lite signals
-   output logic [31:0]     ahb_haddr,       // ahb bus address
-   output logic [2:0]      ahb_hburst,      // tied to 0
-   output logic            ahb_hmastlock,   // tied to 0
-   output logic [3:0]      ahb_hprot,       // tied to 4'b0011
-   output logic [2:0]      ahb_hsize,       // size of bus transaction (possible values 0,1,2,3)
-   output logic [1:0]      ahb_htrans,      // Transaction type (possible values 0,2 only right now)
-   output logic            ahb_hwrite,      // ahb bus write
-   output logic [63:0]     ahb_hwdata,      // ahb bus write data
-
-   input logic [63:0]      ahb_hrdata,      // ahb bus read data
-   input logic             ahb_hready,      // slave ready to accept transaction
-   input logic             ahb_hresp        // slave response (high indicates erro)
-
-);
-
-   localparam ID   = 1;
-   localparam PRTY = 1;
-   typedef enum logic [2:0] {IDLE=3'b000, CMD_RD=3'b001, CMD_WR=3'b010, DATA_RD=3'b011, DATA_WR=3'b100, DONE=3'b101, STREAM_RD=3'b110, STREAM_ERR_RD=3'b111} state_t;
-   state_t buf_state, buf_nxtstate;
-
-   logic             slave_valid;
-   logic             slave_ready;
-   logic [TAG-1:0]   slave_tag;
-   logic [63:0]      slave_rdata;
-   logic [3:0]       slave_opc;
-
-   logic             wrbuf_en, wrbuf_data_en;
-   logic             wrbuf_cmd_sent, wrbuf_rst;
-   logic             wrbuf_vld;
-   logic             wrbuf_data_vld;
-   logic [TAG-1:0]   wrbuf_tag;
-   logic [2:0]       wrbuf_size;
-   logic [31:0]      wrbuf_addr;
-   logic [63:0]      wrbuf_data;
-   logic [7:0]       wrbuf_byteen;
-
-   logic             master_valid;
-   logic             master_ready;
-   logic [TAG-1:0]   master_tag;
-   logic [31:0]      master_addr;
-   logic [63:0]      master_wdata;
-   logic [2:0]       master_size;
-   logic [2:0]       master_opc;
-   logic [7:0]       master_byteen;
-
-   // Buffer signals (one entry buffer)
-   logic [31:0]                buf_addr;
-   logic [1:0]                 buf_size;
-   logic                       buf_write;
-   logic [7:0]                 buf_byteen;
-   logic                       buf_aligned;
-   logic [63:0]                buf_data;
-   logic [TAG-1:0]             buf_tag;
-
-   //Miscellaneous signals
-   logic                       buf_rst;
-   logic [TAG-1:0]             buf_tag_in;
-   logic [31:0]                buf_addr_in;
-   logic [7:0]                 buf_byteen_in;
-   logic [63:0]                buf_data_in;
-   logic                       buf_write_in;
-   logic                       buf_aligned_in;
-   logic [2:0]                 buf_size_in;
-
-   logic                       buf_state_en;
-   logic                       buf_wr_en;
-   logic                       buf_data_wr_en;
-   logic                       slvbuf_error_en;
-   logic                       wr_cmd_vld;
-
-   logic                       cmd_done_rst, cmd_done, cmd_doneQ;
-   logic                       trxn_done;
-   logic [2:0]                 buf_cmd_byte_ptr, buf_cmd_byte_ptrQ, buf_cmd_nxtbyte_ptr;
-   logic                       buf_cmd_byte_ptr_en;
-   logic                       found;
-
-   logic                       slave_valid_pre;
-   logic                       ahb_hready_q;
-   logic                       ahb_hresp_q;
-   logic [1:0]                 ahb_htrans_q;
-   logic                       ahb_hwrite_q;
-   logic [63:0]                ahb_hrdata_q;
-
-
-   logic                       slvbuf_write;
-   logic                       slvbuf_error;
-   logic [TAG-1:0]             slvbuf_tag;
-
-   logic                       slvbuf_error_in;
-   logic                       slvbuf_wr_en;
-   logic                       bypass_en;
-   logic                       rd_bypass_idle;
-
-   logic                       last_addr_en;
-   logic [31:0]                last_bus_addr;
-
-   // Clocks
-   logic                       buf_clken;
-   logic                       ahbm_data_clken;
-
-   logic                       buf_clk;
-   logic                       bus_clk;
-   logic                       ahbm_data_clk;
-
-   logic                       dec_tlu_force_halt_bus, dec_tlu_force_halt_bus_ns, dec_tlu_force_halt_bus_q;
-
-   // Function to get the length from byte enable
-   function automatic logic [1:0] get_write_size;
-      input logic [7:0] byteen;
-
-      logic [1:0]       size;
-
-      size[1:0] = (2'b11 & {2{(byteen[7:0] == 8'hff)}}) |
-                  (2'b10 & {2{((byteen[7:0] == 8'hf0) | (byteen[7:0] == 8'h0f))}}) |
-                  (2'b01 & {2{((byteen[7:0] == 8'hc0) | (byteen[7:0] == 8'h30) | (byteen[7:0] == 8'h0c) | (byteen[7:0] == 8'h03))}});
-
-      return size[1:0];
-   endfunction // get_write_size
-
-   // Function to get the length from byte enable
-   function automatic logic [2:0] get_write_addr;
-      input logic [7:0] byteen;
-
-      logic [2:0]       addr;
-
-      addr[2:0] = (3'h0 & {3{((byteen[7:0] == 8'hff) | (byteen[7:0] == 8'h0f) | (byteen[7:0] == 8'h03))}}) |
-                  (3'h2 & {3{(byteen[7:0] == 8'h0c)}})                                                     |
-                  (3'h4 & {3{((byteen[7:0] == 8'hf0) | (byteen[7:0] == 8'h03))}})                          |
-                  (3'h6 & {3{(byteen[7:0] == 8'hc0)}});
-
-      return addr[2:0];
-   endfunction // get_write_addr
-
-   // Function to get the next byte pointer
-   function automatic logic [2:0] get_nxtbyte_ptr (logic [2:0] current_byte_ptr, logic [7:0] byteen, logic get_next);
-      logic [2:0] start_ptr;
-      logic       found;
-      found = '0;
-      //get_nxtbyte_ptr[2:0] = current_byte_ptr[2:0];
-      start_ptr[2:0] = get_next ? (current_byte_ptr[2:0] + 3'b1) : current_byte_ptr[2:0];
-      for (int j=0; j<8; j++) begin
-         if (~found) begin
-            get_nxtbyte_ptr[2:0] = 3'(j);
-            found |= (byteen[j] & (3'(j) >= start_ptr[2:0])) ;
-         end
-      end
-   endfunction // get_nextbyte_ptr
-
-   // Create bus synchronized version of force halt
-   assign dec_tlu_force_halt_bus = dec_tlu_force_halt | dec_tlu_force_halt_bus_q;
-   assign dec_tlu_force_halt_bus_ns = ~bus_clk_en & dec_tlu_force_halt_bus;
-   rvdff  #(.WIDTH(1))   force_halt_busff(.din(dec_tlu_force_halt_bus_ns), .dout(dec_tlu_force_halt_bus_q), .clk(free_clk), .*);
-
-   // Write buffer
-   assign wrbuf_en       = axi_awvalid & axi_awready & master_ready;
-   assign wrbuf_data_en  = axi_wvalid & axi_wready & master_ready;
-   assign wrbuf_cmd_sent = master_valid & master_ready & (master_opc[2:1] == 2'b01);
-   assign wrbuf_rst      = (wrbuf_cmd_sent & ~wrbuf_en) | dec_tlu_force_halt_bus;
-
-   assign axi_awready = ~(wrbuf_vld & ~wrbuf_cmd_sent) & master_ready;
-   assign axi_wready  = ~(wrbuf_data_vld & ~wrbuf_cmd_sent) & master_ready;
-   assign axi_arready = ~(wrbuf_vld & wrbuf_data_vld) & master_ready;
-   assign axi_rlast   = 1'b1;
-
-   assign wr_cmd_vld          = (wrbuf_vld & wrbuf_data_vld);
-   assign master_valid        = wr_cmd_vld | axi_arvalid;
-   assign master_tag[TAG-1:0] = wr_cmd_vld ? wrbuf_tag[TAG-1:0] : axi_arid[TAG-1:0];
-   assign master_opc[2:0]     = wr_cmd_vld ? 3'b011 : 3'b0;
-   assign master_addr[31:0]   = wr_cmd_vld ? wrbuf_addr[31:0] : axi_araddr[31:0];
-   assign master_size[2:0]    = wr_cmd_vld ? wrbuf_size[2:0] : axi_arsize[2:0];
-   assign master_byteen[7:0]  = wrbuf_byteen[7:0];
-   assign master_wdata[63:0]  = wrbuf_data[63:0];
-
-   // AXI response channel signals
-   assign axi_bvalid       = slave_valid & slave_ready & slave_opc[3];
-   assign axi_bresp[1:0]   = slave_opc[0] ? 2'b10 : (slave_opc[1] ? 2'b11 : 2'b0);
-   assign axi_bid[TAG-1:0] = slave_tag[TAG-1:0];
-
-   assign axi_rvalid       = slave_valid & slave_ready & (slave_opc[3:2] == 2'b0);
-   assign axi_rresp[1:0]   = slave_opc[0] ? 2'b10 : (slave_opc[1] ? 2'b11 : 2'b0);
-   assign axi_rid[TAG-1:0] = slave_tag[TAG-1:0];
-   assign axi_rdata[63:0]  = slave_rdata[63:0];
-   assign slave_ready        = axi_bready & axi_rready;
-
- // FIFO state machine
-   always_comb begin
-      buf_nxtstate   = IDLE;
-      buf_state_en   = 1'b0;
-      buf_wr_en      = 1'b0;
-      buf_data_wr_en = 1'b0;
-      slvbuf_error_in   = 1'b0;
-      slvbuf_error_en   = 1'b0;
-      buf_write_in   = 1'b0;
-      cmd_done       = 1'b0;
-      trxn_done      = 1'b0;
-      buf_cmd_byte_ptr_en = 1'b0;
-      buf_cmd_byte_ptr[2:0] = '0;
-      slave_valid_pre   = 1'b0;
-      master_ready   = 1'b0;
-      ahb_htrans[1:0]  = 2'b0;
-      slvbuf_wr_en     = 1'b0;
-      bypass_en        = 1'b0;
-      rd_bypass_idle   = 1'b0;
-
-      case (buf_state)
-         IDLE: begin
-                  master_ready   = 1'b1;
-                  buf_write_in = (master_opc[2:1] == 2'b01);
-                  buf_nxtstate = buf_write_in ? CMD_WR : CMD_RD;
-                  buf_state_en = master_valid & master_ready;
-                  buf_wr_en    = buf_state_en;
-                  buf_data_wr_en = buf_state_en & (buf_nxtstate == CMD_WR);
-                  buf_cmd_byte_ptr_en   = buf_state_en;
-                  buf_cmd_byte_ptr[2:0] = buf_write_in ? get_nxtbyte_ptr(3'b0,buf_byteen_in[7:0],1'b0) : master_addr[2:0];
-                  bypass_en       = buf_state_en;
-                  rd_bypass_idle  = bypass_en & (buf_nxtstate == CMD_RD);
-                  ahb_htrans[1:0] = {2{bypass_en}} & 2'b10;
-          end
-         CMD_RD: begin
-                  buf_nxtstate    = (master_valid & (master_opc[2:0] == 3'b000))? STREAM_RD : DATA_RD;
-                  buf_state_en    = ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) & ~ahb_hwrite_q;
-                  cmd_done        = buf_state_en & ~master_valid;
-                  slvbuf_wr_en    = buf_state_en;
-                  master_ready  = buf_state_en & (buf_nxtstate == STREAM_RD);
-                  buf_wr_en       = master_ready;
-                  bypass_en       = master_ready & master_valid;
-                  buf_cmd_byte_ptr[2:0] = bypass_en ? master_addr[2:0] : buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~buf_state_en | bypass_en}};
-         end
-         STREAM_RD: begin
-                  master_ready  =  (ahb_hready_q & ~ahb_hresp_q) & ~(master_valid & master_opc[2:1] == 2'b01);
-                  buf_wr_en       = (master_valid & master_ready & (master_opc[2:0] == 3'b000)); // update the fifo if we are streaming the read commands
-                  buf_nxtstate    = ahb_hresp_q ? STREAM_ERR_RD : (buf_wr_en ? STREAM_RD : DATA_RD);            // assuming that the master accpets the slave response right away.
-                  buf_state_en    = (ahb_hready_q | ahb_hresp_q);
-                  buf_data_wr_en  = buf_state_en;
-                  slvbuf_error_in = ahb_hresp_q;
-                  slvbuf_error_en = buf_state_en;
-                  slave_valid_pre  = buf_state_en & ~ahb_hresp_q;             // send a response right away if we are not going through an error response.
-                  cmd_done        = buf_state_en & ~master_valid;                     // last one of the stream should not send a htrans
-                  bypass_en       = master_ready & master_valid & (buf_nxtstate == STREAM_RD) & buf_state_en;
-                  buf_cmd_byte_ptr[2:0] = bypass_en ? master_addr[2:0] : buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~((buf_nxtstate != STREAM_RD) & buf_state_en)}};
-                  slvbuf_wr_en    = buf_wr_en;                                         // shifting the contents from the buf to slv_buf for streaming cases
-         end // case: STREAM_RD
-         STREAM_ERR_RD: begin
-                  buf_nxtstate = DATA_RD;
-                  buf_state_en = ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) & ~ahb_hwrite_q;
-                  slave_valid_pre = buf_state_en;
-                  slvbuf_wr_en   = buf_state_en;     // Overwrite slvbuf with buffer
-                  buf_cmd_byte_ptr[2:0] = buf_addr[2:0];
-                  ahb_htrans[1:0] = 2'b10 & {2{~buf_state_en}};
-         end
-         DATA_RD: begin
-                  buf_nxtstate   = DONE;
-                  buf_state_en   = (ahb_hready_q | ahb_hresp_q);
-                  buf_data_wr_en = buf_state_en;
-                  slvbuf_error_in= ahb_hresp_q;
-                  slvbuf_error_en= buf_state_en;
-                  slvbuf_wr_en   = buf_state_en;
-
-         end
-         CMD_WR: begin
-                  buf_nxtstate = DATA_WR;
-                  trxn_done    = ahb_hready_q & ahb_hwrite_q & (ahb_htrans_q[1:0] != 2'b0);
-                  buf_state_en = trxn_done;
-                  buf_cmd_byte_ptr_en = buf_state_en;
-                  slvbuf_wr_en    = buf_state_en;
-                  buf_cmd_byte_ptr    = trxn_done ? get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1) : buf_cmd_byte_ptrQ;
-                  cmd_done            = trxn_done & (buf_aligned | (buf_cmd_byte_ptrQ == 3'b111) |
-                                                     (buf_byteen[get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1)] == 1'b0));
-                  ahb_htrans[1:0] = {2{~(cmd_done | cmd_doneQ)}} & 2'b10;
-         end
-         DATA_WR: begin
-                  buf_state_en = (cmd_doneQ & ahb_hready_q) | ahb_hresp_q;
-                  master_ready = buf_state_en & ~ahb_hresp_q & slave_ready;   // Ready to accept new command if current command done and no error
-                  buf_nxtstate = (ahb_hresp_q | ~slave_ready) ? DONE :
-                                  ((master_valid & master_ready) ? ((master_opc[2:1] == 2'b01) ? CMD_WR : CMD_RD) : IDLE);
-                  slvbuf_error_in = ahb_hresp_q;
-                  slvbuf_error_en = buf_state_en;
-
-                  buf_write_in = (master_opc[2:1] == 2'b01);
-                  buf_wr_en = buf_state_en & ((buf_nxtstate == CMD_WR) | (buf_nxtstate == CMD_RD));
-                  buf_data_wr_en = buf_wr_en;
-
-                  cmd_done     = (ahb_hresp_q | (ahb_hready_q & (ahb_htrans_q[1:0] != 2'b0) &
-                                 ((buf_cmd_byte_ptrQ == 3'b111) | (buf_byteen[get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1)] == 1'b0))));
-                  bypass_en       = buf_state_en & buf_write_in & (buf_nxtstate == CMD_WR);   // Only bypass for writes for the time being
-                  ahb_htrans[1:0] = {2{(~(cmd_done | cmd_doneQ) | bypass_en)}} & 2'b10;
-                  slave_valid_pre  = buf_state_en & (buf_nxtstate != DONE);
-
-                  trxn_done = ahb_hready_q & ahb_hwrite_q & (ahb_htrans_q[1:0] != 2'b0);
-                  buf_cmd_byte_ptr_en = trxn_done | bypass_en;
-                  buf_cmd_byte_ptr = bypass_en ? get_nxtbyte_ptr(3'b0,buf_byteen_in[7:0],1'b0) :
-                                                 trxn_done ? get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0],buf_byteen[7:0],1'b1) : buf_cmd_byte_ptrQ;
-            end
-         DONE: begin
-                  buf_nxtstate = IDLE;
-                  buf_state_en = slave_ready;
-                  slvbuf_error_en = 1'b1;
-                  slave_valid_pre = 1'b1;
-         end
-      endcase
-   end
-
-   assign buf_rst              = dec_tlu_force_halt_bus;
-   assign cmd_done_rst         = slave_valid_pre;
-   assign buf_addr_in[31:3]    = master_addr[31:3];
-   assign buf_addr_in[2:0]     = (buf_aligned_in & (master_opc[2:1] == 2'b01)) ? get_write_addr(master_byteen[7:0]) : master_addr[2:0];
-   assign buf_tag_in[TAG-1:0]  = master_tag[TAG-1:0];
-   assign buf_byteen_in[7:0]   = wrbuf_byteen[7:0];
-   assign buf_data_in[63:0]    = (buf_state == DATA_RD) ? ahb_hrdata_q[63:0] : master_wdata[63:0];
-   assign buf_size_in[1:0]     = (buf_aligned_in & (master_size[1:0] == 2'b11) & (master_opc[2:1] == 2'b01)) ? get_write_size(master_byteen[7:0]) : master_size[1:0];
-   assign buf_aligned_in       = (master_opc[2:0] == 3'b0)    |   // reads are always aligned since they are either DW or sideeffects
-                                 (master_size[1:0] == 2'b0) |  (master_size[1:0] == 2'b01) | (master_size[1:0] == 2'b10) | // Always aligned for Byte/HW/Word since they can be only for non-idempotent. IFU/SB are always aligned
-                                 ((master_size[1:0] == 2'b11) &
-                                  ((master_byteen[7:0] == 8'h3)  | (master_byteen[7:0] == 8'hc)   | (master_byteen[7:0] == 8'h30) | (master_byteen[7:0] == 8'hc0) |
-                                   (master_byteen[7:0] == 8'hf)  | (master_byteen[7:0] == 8'hf0)  | (master_byteen[7:0] == 8'hff)));
-
-   // Generate the ahb signals
-   assign ahb_haddr[31:3] = bypass_en ? master_addr[31:3]  : buf_addr[31:3];
-   assign ahb_haddr[2:0]  = {3{(ahb_htrans == 2'b10)}} & buf_cmd_byte_ptr[2:0];    // Trxn should be aligned during IDLE
-   assign ahb_hsize[2:0]  = bypass_en ? {1'b0, ({2{buf_aligned_in}} & buf_size_in[1:0])} :
-                                        {1'b0, ({2{buf_aligned}} & buf_size[1:0])};   // Send the full size for aligned trxn
-   assign ahb_hburst[2:0] = 3'b0;
-   assign ahb_hmastlock   = 1'b0;
-   assign ahb_hprot[3:0]  = {3'b001,~axi_arprot[2]};
-   assign ahb_hwrite      = bypass_en ? (master_opc[2:1] == 2'b01) : buf_write;
-   assign ahb_hwdata[63:0] = buf_data[63:0];
-
-   assign slave_valid          = slave_valid_pre;// & (~slvbuf_posted_write | slvbuf_error);
-   assign slave_opc[3:2]       = slvbuf_write ? 2'b11 : 2'b00;
-   assign slave_opc[1:0]       = {2{slvbuf_error}} & 2'b10;
-   assign slave_rdata[63:0]    = slvbuf_error ? {2{last_bus_addr[31:0]}} : ((buf_state == DONE) ? buf_data[63:0] : ahb_hrdata_q[63:0]);
-   assign slave_tag[TAG-1:0]   = slvbuf_tag[TAG-1:0];
-
-   assign last_addr_en = (ahb_htrans[1:0] != 2'b0) & ahb_hready & ahb_hwrite ;
-
-
-   rvdffsc_fpga #(.WIDTH(1))   wrbuf_vldff     (.din(1'b1),              .dout(wrbuf_vld),          .en(wrbuf_en),      .clear(wrbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffsc_fpga #(.WIDTH(1))   wrbuf_data_vldff(.din(1'b1),              .dout(wrbuf_data_vld),     .en(wrbuf_data_en), .clear(wrbuf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(TAG)) wrbuf_tagff     (.din(axi_awid[TAG-1:0]), .dout(wrbuf_tag[TAG-1:0]), .en(wrbuf_en),                         .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(3))   wrbuf_sizeff    (.din(axi_awsize[2:0]),   .dout(wrbuf_size[2:0]),    .en(wrbuf_en),                         .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32))  wrbuf_addrff    (.din(axi_awaddr[31:0]),  .dout(wrbuf_addr[31:0]),   .en(wrbuf_en & bus_clk_en),            .clk(clk), .*);
-   rvdffe       #(.WIDTH(64))  wrbuf_dataff    (.din(axi_wdata[63:0]),   .dout(wrbuf_data[63:0]),   .en(wrbuf_data_en & bus_clk_en),       .clk(clk), .*);
-   rvdffs_fpga  #(.WIDTH(8))   wrbuf_byteenff  (.din(axi_wstrb[7:0]),    .dout(wrbuf_byteen[7:0]),  .en(wrbuf_data_en),                    .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffs_fpga #(.WIDTH(32))   last_bus_addrff (.din(ahb_haddr[31:0]),   .dout(last_bus_addr[31:0]), .en(last_addr_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffsc_fpga #(.WIDTH($bits(state_t))) buf_state_ff  (.din(buf_nxtstate),        .dout({buf_state}),      .en(buf_state_en), .clear(buf_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))               buf_writeff   (.din(buf_write_in),        .dout(buf_write),        .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(TAG))             buf_tagff     (.din(buf_tag_in[TAG-1:0]), .dout(buf_tag[TAG-1:0]), .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(32))              buf_addrff    (.din(buf_addr_in[31:0]),   .dout(buf_addr[31:0]),   .en(buf_wr_en & bus_clk_en),        .clk(clk), .*);
-   rvdffs_fpga #(.WIDTH(2))               buf_sizeff    (.din(buf_size_in[1:0]),    .dout(buf_size[1:0]),    .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))               buf_alignedff (.din(buf_aligned_in),      .dout(buf_aligned),      .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(8))               buf_byteenff  (.din(buf_byteen_in[7:0]),  .dout(buf_byteen[7:0]),  .en(buf_wr_en),                     .clk(buf_clk), .clken(buf_clken),  .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(64))              buf_dataff    (.din(buf_data_in[63:0]),   .dout(buf_data[63:0]),   .en(buf_data_wr_en & bus_clk_en),   .clk(clk), .*);
-
-
-   rvdffs_fpga #(.WIDTH(1))   slvbuf_writeff  (.din(buf_write),        .dout(slvbuf_write),        .en(slvbuf_wr_en),    .clk(buf_clk), .clken(buf_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(TAG)) slvbuf_tagff    (.din(buf_tag[TAG-1:0]), .dout(slvbuf_tag[TAG-1:0]), .en(slvbuf_wr_en),    .clk(buf_clk), .clken(buf_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))   slvbuf_errorff  (.din(slvbuf_error_in),  .dout(slvbuf_error),        .en(slvbuf_error_en), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdffsc_fpga #(.WIDTH(1)) buf_cmd_doneff     (.din(1'b1),                  .dout(cmd_doneQ),              .en(cmd_done),            .clear(cmd_done_rst), .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(3))  buf_cmd_byte_ptrff (.din(buf_cmd_byte_ptr[2:0]), .dout(buf_cmd_byte_ptrQ[2:0]), .en(buf_cmd_byte_ptr_en),                       .clk(bus_clk), .clken(bus_clk_en), .rawclk(clk), .*);
-
-   rvdff_fpga #(.WIDTH(1))  hready_ff (.din(ahb_hready),       .dout(ahb_hready_q),       .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(2))  htrans_ff (.din(ahb_htrans[1:0]),  .dout(ahb_htrans_q[1:0]),  .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hwrite_ff (.din(ahb_hwrite),       .dout(ahb_hwrite_q),       .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))  hresp_ff  (.din(ahb_hresp),        .dout(ahb_hresp_q),        .clk(bus_clk),       .clken(bus_clk_en),      .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(64)) hrdata_ff (.din(ahb_hrdata[63:0]), .dout(ahb_hrdata_q[63:0]), .clk(ahbm_data_clk), .clken(ahbm_data_clken), .rawclk(clk), .*);
-
-   // Clock headers
-   // clock enables for ahbm addr/data
-   assign buf_clken       = bus_clk_en & (buf_wr_en | slvbuf_wr_en | clk_override);
-   assign ahbm_data_clken = bus_clk_en & ((buf_state != IDLE) | clk_override);
-
-
-   rvclkhdr bus_cgc       (.en(bus_clk_en),      .l1clk(bus_clk),       .*);
-   rvclkhdr buf_cgc       (.en(buf_clken),       .l1clk(buf_clk), .*);
-   rvclkhdr ahbm_data_cgc (.en(ahbm_data_clken), .l1clk(ahbm_data_clk), .*);
-
-
-endmodule // axi4_to_ahb
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-// $Id$
-//
-// Function: Top level brqrv core file to control the debug mode
-// Comments: Responsible to put the rest of the core in quiesce mode,
-//           Send the commands/address. sends WrData and Recieve read Data.
-//           And then Resume the core to do the normal mode
-// Author  :
-//********************************************************************************
-module eb1_dbg
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   // outputs to the core for command and data interface
-   output logic [31:0]                 dbg_cmd_addr,
-   output logic [31:0]                 dbg_cmd_wrdata,
-   output logic                        dbg_cmd_valid,
-   output logic                        dbg_cmd_write,             // 1: write command, 0: read_command
-   output logic [1:0]                  dbg_cmd_type,              // 0:gpr 1:csr 2: memory
-   output logic [1:0]                  dbg_cmd_size,              // size of the abstract mem access debug command
-   output logic                        dbg_core_rst_l,            // core reset from dm
-
-   // inputs back from the core/dec
-   input logic [31:0]                  core_dbg_rddata,
-   input logic                         core_dbg_cmd_done,         // This will be treated like a valid signal
-   input logic                         core_dbg_cmd_fail,         // Exception during command run
-
-   // Signals to dma to get a bubble
-   output logic                        dbg_dma_bubble,            // Debug needs a bubble to send a valid
-   input  logic                        dma_dbg_ready,             // DMA is ready to accept debug request
-
-   // interface with the rest of the core to halt/resume handshaking
-   output logic                        dbg_halt_req,              // This is a pulse
-   output logic                        dbg_resume_req,            // Debug sends a resume requests. Pulse
-   input  logic                        dec_tlu_debug_mode,        // Core is in debug mode
-   input  logic                        dec_tlu_dbg_halted,        // The core has finished the queiscing sequence. Core is halted now
-   input  logic                        dec_tlu_mpc_halted_only,   // Only halted due to MPC
-   input  logic                        dec_tlu_resume_ack,        // core sends back an ack for the resume (pulse)
-
-   // inputs from the JTAG
-   input logic                         dmi_reg_en,                // read or write
-   input logic [6:0]                   dmi_reg_addr,              // address of DM register
-   input logic                         dmi_reg_wr_en,             // write instruction
-   input logic [31:0]                  dmi_reg_wdata,             // write data
-
-   // output
-   output logic [31:0]                 dmi_reg_rdata,             // read data
-
-   // AXI Write Channels
-   output logic                        sb_axi_awvalid,
-   input  logic                        sb_axi_awready,
-   output logic [pt.SB_BUS_TAG-1:0]    sb_axi_awid,
-   output logic [31:0]                 sb_axi_awaddr,
-   output logic [3:0]                  sb_axi_awregion,
-   output logic [7:0]                  sb_axi_awlen,
-   output logic [2:0]                  sb_axi_awsize,
-   output logic [1:0]                  sb_axi_awburst,
-   output logic                        sb_axi_awlock,
-   output logic [3:0]                  sb_axi_awcache,
-   output logic [2:0]                  sb_axi_awprot,
-   output logic [3:0]                  sb_axi_awqos,
-
-   output logic                        sb_axi_wvalid,
-   input  logic                        sb_axi_wready,
-   output logic [63:0]                 sb_axi_wdata,
-   output logic [7:0]                  sb_axi_wstrb,
-   output logic                        sb_axi_wlast,
-
-   input  logic                        sb_axi_bvalid,
-   output logic                        sb_axi_bready,
-   input  logic [1:0]                  sb_axi_bresp,
-
-   // AXI Read Channels
-   output logic                        sb_axi_arvalid,
-   input  logic                        sb_axi_arready,
-   output logic [pt.SB_BUS_TAG-1:0]    sb_axi_arid,
-   output logic [31:0]                 sb_axi_araddr,
-   output logic [3:0]                  sb_axi_arregion,
-   output logic [7:0]                  sb_axi_arlen,
-   output logic [2:0]                  sb_axi_arsize,
-   output logic [1:0]                  sb_axi_arburst,
-   output logic                        sb_axi_arlock,
-   output logic [3:0]                  sb_axi_arcache,
-   output logic [2:0]                  sb_axi_arprot,
-   output logic [3:0]                  sb_axi_arqos,
-
-   input  logic                        sb_axi_rvalid,
-   output logic                        sb_axi_rready,
-   input  logic [63:0]                 sb_axi_rdata,
-   input  logic [1:0]                  sb_axi_rresp,
-
-   input logic                         dbg_bus_clk_en,
-
-   // general inputs
-   input logic                         clk,
-   input logic                         rst_l,        // This includes both top rst and debug rst
-   input logic                         dbg_rst_l,
-   input logic                         clk_override,
-   input logic                         scan_mode
-);
-
-
-   typedef enum logic [3:0] {IDLE=4'h0, HALTING=4'h1, HALTED=4'h2, CORE_CMD_START=4'h3, CORE_CMD_WAIT=4'h4, SB_CMD_START=4'h5, SB_CMD_SEND=4'h6, SB_CMD_RESP=4'h7, CMD_DONE=4'h8, RESUMING=4'h9} state_t;
-   typedef enum logic [3:0] {SBIDLE=4'h0, WAIT_RD=4'h1, WAIT_WR=4'h2, CMD_RD=4'h3, CMD_WR=4'h4, CMD_WR_ADDR=4'h5, CMD_WR_DATA=4'h6, RSP_RD=4'h7, RSP_WR=4'h8, DONE=4'h9} sb_state_t;
-
-   state_t       dbg_state;
-   state_t       dbg_nxtstate;
-   logic         dbg_state_en;
-   // these are the registers that the debug module implements
-   logic [31:0]  dmstatus_reg;        // [26:24]-dmerr, [17:16]-resume ack, [9:8]-halted, [3:0]-version
-   logic [31:0]  dmcontrol_reg;       // dmcontrol register has only 6 bits implemented. 31: haltreq, 30: resumereq, 29: haltreset, 28: ackhavereset, 1: ndmreset, 0: dmactive.
-   logic [31:0]  command_reg;
-   logic [31:0]  abstractcs_reg;      // bits implemted are [12] - busy and [10:8]= command error
-   logic [31:0]  haltsum0_reg;
-   logic [31:0]  data0_reg;
-   logic [31:0]  data1_reg;
-
-   // data 0
-   logic [31:0]  data0_din;
-   logic         data0_reg_wren, data0_reg_wren0, data0_reg_wren1, data0_reg_wren2;
-   // data 1
-   logic [31:0]  data1_din;
-   logic         data1_reg_wren, data1_reg_wren0, data1_reg_wren1;
-   // abstractcs
-   logic         abstractcs_busy_wren;
-   logic         abstractcs_busy_din;
-   logic [2:0]   abstractcs_error_din;
-   logic         abstractcs_error_sel0, abstractcs_error_sel1, abstractcs_error_seb1, abstractcs_error_sel3, abstractcs_error_sel4, abstractcs_error_sel5, abstractcs_error_sel6;
-   logic         dbg_sb_bus_error;
-   // abstractauto
-   logic         abstractauto_reg_wren;
-   logic [1:0]   abstractauto_reg;
-
-   // dmstatus
-   logic         dmstatus_resumeack_wren;
-   logic         dmstatus_resumeack_din;
-   logic         dmstatus_haveresetn_wren;
-   logic         dmstatus_resumeack;
-   logic         dmstatus_unavail;
-   logic         dmstatus_running;
-   logic         dmstatus_halted;
-   logic         dmstatus_havereset, dmstatus_haveresetn;
-
-   // dmcontrol
-   logic         resumereq;
-   logic         dmcontrol_wren, dmcontrol_wren_Q;
-   // command
-   logic         execute_command_ns, execute_command;
-   logic         command_wren, command_regno_wren;
-   logic         command_transfer_din;
-   logic         command_postexec_din;
-   logic [31:0]  command_din;
-   logic [3:0]   dbg_cmd_addr_incr;
-   logic [31:0]  dbg_cmd_curr_addr;
-   logic [31:0]  dbg_cmd_next_addr;
-
-   // needed to send the read data back for dmi reads
-   logic  [31:0] dmi_reg_rdata_din;
-
-   sb_state_t    sb_state;
-   sb_state_t    sb_nxtstate;
-   logic         sb_state_en;
-
-   //System bus section
-   logic              sbcs_wren;
-   logic              sbcs_sbbusy_wren;
-   logic              sbcs_sbbusy_din;
-   logic              sbcs_sbbusyerror_wren;
-   logic              sbcs_sbbusyerror_din;
-
-   logic              sbcs_sberror_wren;
-   logic [2:0]        sbcs_sberror_din;
-   logic              sbcs_unaligned;
-   logic              sbcs_illegal_size;
-   logic [19:15]      sbcs_reg_int;
-
-   // data
-   logic              sbdata0_reg_wren0;
-   logic              sbdata0_reg_wren1;
-   logic              sbdata0_reg_wren;
-   logic [31:0]       sbdata0_din;
-
-   logic              sbdata1_reg_wren0;
-   logic              sbdata1_reg_wren1;
-   logic              sbdata1_reg_wren;
-   logic [31:0]       sbdata1_din;
-
-   logic              sbaddress0_reg_wren0;
-   logic              sbaddress0_reg_wren1;
-   logic              sbaddress0_reg_wren;
-   logic [31:0]       sbaddress0_reg_din;
-   logic [3:0]        sbaddress0_incr;
-   logic              sbreadonaddr_access;
-   logic              sbreadondata_access;
-   logic              sbdata0wr_access;
-
-   logic              sb_abmem_cmd_done_in, sb_abmem_data_done_in;
-   logic              sb_abmem_cmd_done_en, sb_abmem_data_done_en;
-   logic              sb_abmem_cmd_done, sb_abmem_data_done;
-   logic [31:0]       abmem_addr;
-   logic              abmem_addr_in_dccm_region, abmem_addr_in_iccm_region, abmem_addr_in_pic_region;
-   logic              abmem_addr_core_local;
-   logic              abmem_addr_external;
-
-   logic              sb_cmd_pending, sb_abmem_cmd_pending;
-   logic              sb_abmem_cmd_write;
-   logic [2:0]        sb_abmem_cmd_size;
-   logic [31:0]       sb_abmem_cmd_addr;
-   logic [31:0]       sb_abmem_cmd_wdata;
-
-   logic [2:0]        sb_cmd_size;
-   logic [31:0]       sb_cmd_addr;
-   logic [63:0]       sb_cmd_wdata;
-
-   logic              sb_bus_cmd_read, sb_bus_cmd_write_addr, sb_bus_cmd_write_data;
-   logic              sb_bus_rsp_read, sb_bus_rsp_write;
-   logic              sb_bus_rsp_error;
-   logic [63:0]       sb_bus_rdata;
-
-   //registers
-   logic [31:0]       sbcs_reg;
-   logic [31:0]       sbaddress0_reg;
-   logic [31:0]       sbdata0_reg;
-   logic [31:0]       sbdata1_reg;
-
-   logic              sb_abmem_cmd_arvalid, sb_abmem_cmd_awvalid, sb_abmem_cmd_wvalid;
-   logic              sb_abmem_read_pend;
-   logic              sb_cmd_awvalid, sb_cmd_wvalid, sb_cmd_arvalid;
-   logic              sb_read_pend;
-   logic [31:0]       sb_axi_addr;
-   logic [63:0]       sb_axi_wrdata;
-   logic [2:0]        sb_axi_size;
-
-   logic              dbg_dm_rst_l;
-
-   //clken
-   logic              dbg_free_clken;
-   logic              dbg_free_clk;
-
-   logic              sb_free_clken;
-   logic              sb_free_clk;
-
-   // clocking
-   // used for the abstract commands.
-   assign dbg_free_clken  = dmi_reg_en | execute_command | (dbg_state != IDLE) | dbg_state_en | dec_tlu_dbg_halted | dec_tlu_mpc_halted_only | dec_tlu_debug_mode | dbg_halt_req | clk_override;
-
-   // used for the system bus
-   assign sb_free_clken = dmi_reg_en | execute_command | sb_state_en | (sb_state != SBIDLE) | clk_override;
-
-   rvoclkhdr dbg_free_cgc    (.en(dbg_free_clken), .l1clk(dbg_free_clk), .*);
-   rvoclkhdr sb_free_cgc     (.en(sb_free_clken), .l1clk(sb_free_clk), .*);
-
-   // end clocking section
-
-   // Reset logic
-   assign dbg_dm_rst_l = dbg_rst_l & (dmcontrol_reg[0] | scan_mode);
-   assign dbg_core_rst_l = ~dmcontrol_reg[1] | scan_mode;
-
-   // system bus register
-   // sbcs[31:29], sbcs - [22]:sbbusyerror, [21]: sbbusy, [20]:sbreadonaddr, [19:17]:sbaccess, [16]:sbautoincrement, [15]:sbreadondata, [14:12]:sberror, sbsize=32, 128=0, 64/32/16/8 are legal
-   assign        sbcs_reg[31:29] = 3'b1;
-   assign        sbcs_reg[28:23] = '0;
-   assign        sbcs_reg[19:15] = {sbcs_reg_int[19], ~sbcs_reg_int[18], sbcs_reg_int[17:15]};
-   assign        sbcs_reg[11:5]  = 7'h20;
-   assign        sbcs_reg[4:0]   = 5'b01111;
-   assign        sbcs_wren = (dmi_reg_addr ==  7'h38) & dmi_reg_en & dmi_reg_wr_en & (sb_state == SBIDLE);
-   assign        sbcs_sbbusyerror_wren = (sbcs_wren & dmi_reg_wdata[22]) |
-                                         (sbcs_reg[21] & dmi_reg_en & ((dmi_reg_wr_en & (dmi_reg_addr == 7'h39)) | (dmi_reg_addr == 7'h3c) | (dmi_reg_addr == 7'h3d)));
-   assign        sbcs_sbbusyerror_din = ~(sbcs_wren & dmi_reg_wdata[22]);   // Clear when writing one
-
-   rvdffs #(1) sbcs_sbbusyerror_reg  (.din(sbcs_sbbusyerror_din),  .dout(sbcs_reg[22]),    .en(sbcs_sbbusyerror_wren), .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(1) sbcs_sbbusy_reg       (.din(sbcs_sbbusy_din),       .dout(sbcs_reg[21]),    .en(sbcs_sbbusy_wren),      .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(1) sbcs_sbreadonaddr_reg (.din(dmi_reg_wdata[20]),     .dout(sbcs_reg[20]),    .en(sbcs_wren),             .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(5) sbcs_misc_reg         (.din({dmi_reg_wdata[19],~dmi_reg_wdata[18],dmi_reg_wdata[17:15]}),
-                                      .dout(sbcs_reg_int[19:15]), .en(sbcs_wren),             .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-   rvdffs #(3) sbcs_error_reg        (.din(sbcs_sberror_din[2:0]), .dout(sbcs_reg[14:12]), .en(sbcs_sberror_wren),     .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-
-   assign sbcs_unaligned =    ((sbcs_reg[19:17] == 3'b001) &  sbaddress0_reg[0]) |
-                              ((sbcs_reg[19:17] == 3'b010) &  (|sbaddress0_reg[1:0])) |
-                              ((sbcs_reg[19:17] == 3'b011) &  (|sbaddress0_reg[2:0]));
-
-   assign sbcs_illegal_size = sbcs_reg[19];    // Anything bigger than 64 bits is illegal
-
-   assign sbaddress0_incr[3:0] = ({4{(sbcs_reg[19:17] == 3'h0)}} &  4'b0001) |
-                                 ({4{(sbcs_reg[19:17] == 3'h1)}} &  4'b0010) |
-                                 ({4{(sbcs_reg[19:17] == 3'h2)}} &  4'b0100) |
-                                 ({4{(sbcs_reg[19:17] == 3'h3)}} &  4'b1000);
-
-   // sbdata
-   assign        sbdata0_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h3c);   // write data only when single read is 0
-   assign        sbdata0_reg_wren1   = (sb_state == RSP_RD) & sb_state_en & ~sbcs_sberror_wren;
-   assign        sbdata0_reg_wren    = sbdata0_reg_wren0 | sbdata0_reg_wren1;
-
-   assign        sbdata1_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h3d);   // write data only when single read is 0;
-   assign        sbdata1_reg_wren1   = (sb_state == RSP_RD) & sb_state_en & ~sbcs_sberror_wren;
-   assign        sbdata1_reg_wren    = sbdata1_reg_wren0 | sbdata1_reg_wren1;
-
-   assign        sbdata0_din[31:0]   = ({32{sbdata0_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                       ({32{sbdata0_reg_wren1}} & sb_bus_rdata[31:0]);
-   assign        sbdata1_din[31:0]   = ({32{sbdata1_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                       ({32{sbdata1_reg_wren1}} & sb_bus_rdata[63:32]);
-
-   rvdffe #(32)    dbg_sbdata0_reg    (.*, .din(sbdata0_din[31:0]), .dout(sbdata0_reg[31:0]), .en(sbdata0_reg_wren), .rst_l(dbg_dm_rst_l));
-   rvdffe #(32)    dbg_sbdata1_reg    (.*, .din(sbdata1_din[31:0]), .dout(sbdata1_reg[31:0]), .en(sbdata1_reg_wren), .rst_l(dbg_dm_rst_l));
-
-    // sbaddress
-   assign        sbaddress0_reg_wren0   = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h39);
-   assign        sbaddress0_reg_wren    = sbaddress0_reg_wren0 | sbaddress0_reg_wren1;
-   assign        sbaddress0_reg_din[31:0]= ({32{sbaddress0_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                                           ({32{sbaddress0_reg_wren1}} & (sbaddress0_reg[31:0] + {28'b0,sbaddress0_incr[3:0]}));
-   rvdffe #(32)    dbg_sbaddress0_reg    (.*, .din(sbaddress0_reg_din[31:0]), .dout(sbaddress0_reg[31:0]), .en(sbaddress0_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   assign sbreadonaddr_access = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h39) & sbcs_reg[20];   // if readonaddr is set the next command will start upon writing of addr0
-   assign sbreadondata_access = dmi_reg_en & ~dmi_reg_wr_en & (dmi_reg_addr == 7'h3c) & sbcs_reg[15];  // if readondata is set the next command will start upon reading of data0
-   assign sbdata0wr_access  = dmi_reg_en &  dmi_reg_wr_en & (dmi_reg_addr == 7'h3c);                   // write to sbdata0 will start write command to system bus
-
-   // memory mapped registers
-   // dmcontrol register has only 5 bits implemented. 31: haltreq, 30: resumereq, 28: ackhavereset, 1: ndmreset, 0: dmactive.
-   // rest all the bits are zeroed out
-   // dmactive flop is reset based on core rst_l, all other flops use dm_rst_l
-   assign dmcontrol_wren      = (dmi_reg_addr ==  7'h10) & dmi_reg_en & dmi_reg_wr_en;
-   assign dmcontrol_reg[29]   = '0;
-   assign dmcontrol_reg[27:2] = '0;
-   assign resumereq           = dmcontrol_reg[30] & ~dmcontrol_reg[31] & dmcontrol_wren_Q;
-   rvdffs #(4) dmcontrolff (.din({dmi_reg_wdata[31:30],dmi_reg_wdata[28],dmi_reg_wdata[1]}), .dout({dmcontrol_reg[31:30], dmcontrol_reg[28], dmcontrol_reg[1]}), .en(dmcontrol_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdffs #(1) dmcontrol_dmactive_ff (.din(dmi_reg_wdata[0]), .dout(dmcontrol_reg[0]), .en(dmcontrol_wren), .rst_l(dbg_rst_l), .clk(dbg_free_clk));
-   rvdff  #(1) dmcontrol_wrenff(.din(dmcontrol_wren), .dout(dmcontrol_wren_Q), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-   // dmstatus register bits that are implemented
-   // [19:18]-havereset,[17:16]-resume ack, [9:8]-halted, [3:0]-version
-   // rest all the bits are zeroed out
-   //assign dmstatus_wren       = (dmi_reg_addr[31:0] ==  32'h11) & dmi_reg_en;
-   assign dmstatus_reg[31:20] = '0;
-   assign dmstatus_reg[19:18] = {2{dmstatus_havereset}};
-   assign dmstatus_reg[15:14] = '0;
-   assign dmstatus_reg[7]     = '1;
-   assign dmstatus_reg[6:4]   = '0;
-   assign dmstatus_reg[17:16] = {2{dmstatus_resumeack}};
-   assign dmstatus_reg[13:12] = {2{dmstatus_unavail}};
-   assign dmstatus_reg[11:10] = {2{dmstatus_running}};
-   assign dmstatus_reg[9:8]   = {2{dmstatus_halted}};
-   assign dmstatus_reg[3:0]   = 4'h2;
-
-   assign dmstatus_resumeack_wren = ((dbg_state == RESUMING) & dec_tlu_resume_ack) | (dmstatus_resumeack & resumereq & dmstatus_halted);
-   assign dmstatus_resumeack_din  = (dbg_state == RESUMING) & dec_tlu_resume_ack;
-
-   assign dmstatus_haveresetn_wren  = (dmi_reg_addr == 7'h10) & dmi_reg_wdata[28] & dmi_reg_en & dmi_reg_wr_en & dmcontrol_reg[0];   // clear the havereset
-   assign dmstatus_havereset        = ~dmstatus_haveresetn;
-
-   assign dmstatus_unavail = dmcontrol_reg[1] | ~rst_l;
-   assign dmstatus_running = ~(dmstatus_unavail | dmstatus_halted);
-
-   rvdffs  #(1) dmstatus_resumeack_reg  (.din(dmstatus_resumeack_din), .dout(dmstatus_resumeack), .en(dmstatus_resumeack_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdff   #(1) dmstatus_halted_reg     (.din(dec_tlu_dbg_halted & ~dec_tlu_mpc_halted_only),     .dout(dmstatus_halted), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdffs  #(1) dmstatus_haveresetn_reg (.din(1'b1), .dout(dmstatus_haveresetn), .en(dmstatus_haveresetn_wren), .rst_l(rst_l), .clk(dbg_free_clk));
-
-   // haltsum0 register
-   assign haltsum0_reg[31:1] = '0;
-   assign haltsum0_reg[0]    = dmstatus_halted;
-
-   // abstractcs register
-   // bits implemted are [12] - busy and [10:8]= command error
-   assign        abstractcs_reg[31:13] = '0;
-   assign        abstractcs_reg[11]    = '0;
-   assign        abstractcs_reg[7:4]   = '0;
-   assign        abstractcs_reg[3:0]   = 4'h2;    // One data register
-
-   assign        abstractcs_error_sel0 = abstractcs_reg[12] & ~(|abstractcs_reg[10:8]) & dmi_reg_en & ((dmi_reg_wr_en & ((dmi_reg_addr == 7'h16) | (dmi_reg_addr == 7'h17)) | (dmi_reg_addr == 7'h18)) |
-                                                                                                       (dmi_reg_addr == 7'h4) | (dmi_reg_addr == 7'h5));
-   assign        abstractcs_error_sel1 = execute_command & ~(|abstractcs_reg[10:8]) &
-                                         ((~((command_reg[31:24] == 8'b0) | (command_reg[31:24] == 8'h2)))                      |   // Illegal command
-                                          (((command_reg[22:20] == 3'b011) | (command_reg[22])) & (command_reg[31:24] == 8'h2)) |   // Illegal abstract memory size (can't be DW or higher)
-                                          ((command_reg[22:20] != 3'b010) & ((command_reg[31:24] == 8'h0) & command_reg[17]))   |   // Illegal abstract reg size
-                                          ((command_reg[31:24] == 8'h0) & command_reg[18]));                                          //postexec for abstract register access
-   assign        abstractcs_error_seb1 = ((core_dbg_cmd_done & core_dbg_cmd_fail) |                   // exception from core
-                                          (execute_command & (command_reg[31:24] == 8'h0) &           // unimplemented regs
-                                                (((command_reg[15:12] == 4'h1) & (command_reg[11:5] != 0)) | (command_reg[15:13] != 0)))) & ~(|abstractcs_reg[10:8]);
-   assign        abstractcs_error_sel3 = execute_command & (dbg_state != HALTED) & ~(|abstractcs_reg[10:8]);
-   assign        abstractcs_error_sel4 = dbg_sb_bus_error & dbg_bus_clk_en & ~(|abstractcs_reg[10:8]);// sb bus error for abstract memory command
-   assign        abstractcs_error_sel5 = execute_command & (command_reg[31:24] == 8'h2) & ~(|abstractcs_reg[10:8]) &
-                                         (((command_reg[22:20] == 3'b001) & data1_reg[0]) | ((command_reg[22:20] == 3'b010) & (|data1_reg[1:0])));  //Unaligned address for abstract memory
-   assign        abstractcs_error_sel6 = (dmi_reg_addr ==  7'h16) & dmi_reg_en & dmi_reg_wr_en;
-
-   assign        abstractcs_error_din[2:0]  = abstractcs_error_sel0 ? 3'b001 :                  // writing command or abstractcs while a command was executing. Or accessing data0
-                                                 abstractcs_error_sel1 ? 3'b010 :               // writing a illegal command type to cmd field of command
-                                                    abstractcs_error_seb1 ? 3'b011 :            // exception while running command
-                                                       abstractcs_error_sel3 ? 3'b100 :         // writing a comnand when not in the halted state
-                                                          abstractcs_error_sel4 ? 3'b101 :      // Bus error
-                                                             abstractcs_error_sel5 ? 3'b111 :   // unaligned or illegal size abstract memory command
-                                                                abstractcs_error_sel6 ? (~dmi_reg_wdata[10:8] & abstractcs_reg[10:8]) :   //W1C
-                                                                                        abstractcs_reg[10:8];                             //hold
-
-   rvdffs #(1) dmabstractcs_busy_reg  (.din(abstractcs_busy_din), .dout(abstractcs_reg[12]), .en(abstractcs_busy_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-   rvdff  #(3) dmabstractcs_error_reg (.din(abstractcs_error_din[2:0]), .dout(abstractcs_reg[10:8]), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-    // abstract auto reg
-   assign abstractauto_reg_wren  = dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h18) & ~abstractcs_reg[12];
-   rvdffs #(2) dbg_abstractauto_reg (.*, .din(dmi_reg_wdata[1:0]), .dout(abstractauto_reg[1:0]), .en(abstractauto_reg_wren), .rst_l(dbg_dm_rst_l), .clk(dbg_free_clk));
-
-   // command register - implemented all the bits in this register
-   // command[16] = 1: write, 0: read
-   assign execute_command_ns = command_wren |
-                               (dmi_reg_en & ~abstractcs_reg[12] & (((dmi_reg_addr == 7'h4) & abstractauto_reg[0]) | ((dmi_reg_addr == 7'h5) & abstractauto_reg[1])));
-   assign command_wren = (dmi_reg_addr ==  7'h17) & dmi_reg_en & dmi_reg_wr_en;
-   assign command_regno_wren = command_wren | ((command_reg[31:24] == 8'h0) & command_reg[19] & (dbg_state == CMD_DONE) & ~(|abstractcs_reg[10:8]));  // aarpostincrement
-   assign command_postexec_din = (dmi_reg_wdata[31:24] == 8'h0) & dmi_reg_wdata[18];
-   assign command_transfer_din = (dmi_reg_wdata[31:24] == 8'h0) & dmi_reg_wdata[17];
-   assign command_din[31:16] = {dmi_reg_wdata[31:24],1'b0,dmi_reg_wdata[22:19],command_postexec_din,command_transfer_din, dmi_reg_wdata[16]};
-   assign command_din[15:0] =  command_wren ? dmi_reg_wdata[15:0] : dbg_cmd_next_addr[15:0];
-   rvdff  #(1)  execute_commandff   (.*, .din(execute_command_ns), .dout(execute_command), .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l));
-   rvdffe #(16) dmcommand_reg       (.*, .din(command_din[31:16]), .dout(command_reg[31:16]), .en(command_wren), .rst_l(dbg_dm_rst_l));
-   rvdffe #(16) dmcommand_regno_reg (.*, .din(command_din[15:0]),  .dout(command_reg[15:0]),  .en(command_regno_wren), .rst_l(dbg_dm_rst_l));
-
-  // data0 reg
-   assign data0_reg_wren0   = (dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h4) & (dbg_state == HALTED) & ~abstractcs_reg[12]);
-   assign data0_reg_wren1   = core_dbg_cmd_done & (dbg_state == CORE_CMD_WAIT) & ~command_reg[16];
-   assign data0_reg_wren    = data0_reg_wren0 | data0_reg_wren1 | data0_reg_wren2;
-
-   assign data0_din[31:0]   = ({32{data0_reg_wren0}} & dmi_reg_wdata[31:0])   |
-                              ({32{data0_reg_wren1}} & core_dbg_rddata[31:0]) |
-                              ({32{data0_reg_wren2}} & sb_bus_rdata[31:0]);
-
-   rvdffe #(32) dbg_data0_reg (.*, .din(data0_din[31:0]), .dout(data0_reg[31:0]), .en(data0_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   // data 1
-   assign data1_reg_wren0   = (dmi_reg_en & dmi_reg_wr_en & (dmi_reg_addr == 7'h5) & (dbg_state == HALTED) & ~abstractcs_reg[12]);
-   assign data1_reg_wren1   = (dbg_state == CMD_DONE) & (command_reg[31:24] == 8'h2) & command_reg[19] & ~(|abstractcs_reg[10:8]);   // aampostincrement
-   assign data1_reg_wren    = data1_reg_wren0 | data1_reg_wren1;
-
-   assign data1_din[31:0]   = ({32{data1_reg_wren0}} & dmi_reg_wdata[31:0]) |
-                              ({32{data1_reg_wren1}} & dbg_cmd_next_addr[31:0]);
-
-   rvdffe #(32)    dbg_data1_reg    (.*, .din(data1_din[31:0]), .dout(data1_reg[31:0]), .en(data1_reg_wren), .rst_l(dbg_dm_rst_l));
-
-   rvdffs #(1) sb_abmem_cmd_doneff  (.din(sb_abmem_cmd_done_in),  .dout(sb_abmem_cmd_done),  .en(sb_abmem_cmd_done_en),  .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l), .*);
-   rvdffs #(1) sb_abmem_data_doneff (.din(sb_abmem_data_done_in), .dout(sb_abmem_data_done), .en(sb_abmem_data_done_en), .clk(dbg_free_clk), .rst_l(dbg_dm_rst_l), .*);
-
-   // FSM to control the debug mode entry, command send/recieve, and Resume flow.
-   always_comb begin
-      dbg_nxtstate            = IDLE;
-      dbg_state_en            = 1'b0;
-      abstractcs_busy_wren    = 1'b0;
-      abstractcs_busy_din     = 1'b0;
-      dbg_halt_req            = dmcontrol_wren_Q & dmcontrol_reg[31];      // single pulse output to the core. Need to drive every time this register is written since core might be halted due to MPC
-      dbg_resume_req          = 1'b0;                                      // single pulse output to the core
-      dbg_sb_bus_error        = 1'b0;
-      data0_reg_wren2         = 1'b0;
-      sb_abmem_cmd_done_in    = 1'b0;
-      sb_abmem_data_done_in   = 1'b0;
-      sb_abmem_cmd_done_en    = 1'b0;
-      sb_abmem_data_done_en   = 1'b0;
-
-       case (dbg_state)
-            IDLE: begin
-                     dbg_nxtstate         = (dmstatus_reg[9] | dec_tlu_mpc_halted_only) ? HALTED : HALTING;         // initiate the halt command to the core
-                     dbg_state_en         = dmcontrol_reg[31] | dmstatus_reg[9] | dec_tlu_mpc_halted_only;      // when the jtag writes the halt bit in the DM register, OR when the status indicates H
-                     dbg_halt_req         = dmcontrol_reg[31];               // only when jtag has written the halt_req bit in the control. Removed debug mode qualification during MPC changes
-            end
-            HALTING : begin
-                     dbg_nxtstate         = HALTED;                                 // Goto HALTED once the core sends an ACK
-                     dbg_state_en         = dmstatus_reg[9] | dec_tlu_mpc_halted_only;     // core indicates halted
-            end
-            HALTED: begin
-                     // wait for halted to go away before send to resume. Else start of new command
-                     dbg_nxtstate         = dmstatus_reg[9] ? (resumereq ? RESUMING : (((command_reg[31:24] == 8'h2) & abmem_addr_external) ? SB_CMD_START : CORE_CMD_START)) :
-                                                                                    (dmcontrol_reg[31] ? HALTING : IDLE);       // This is MPC halted case
-                     dbg_state_en         = (dmstatus_reg[9] & resumereq) | execute_command | ~(dmstatus_reg[9] | dec_tlu_mpc_halted_only);
-                     abstractcs_busy_wren = dbg_state_en & ((dbg_nxtstate == CORE_CMD_START) | (dbg_nxtstate == SB_CMD_START));                 // write busy when a new command was written by jtag
-                     abstractcs_busy_din  = 1'b1;
-                     dbg_resume_req       = dbg_state_en & (dbg_nxtstate == RESUMING);                       // single cycle pulse to core if resuming
-            end
-            CORE_CMD_START: begin
-                     // Don't execute the command if cmderror or transfer=0 for abstract register access
-                     dbg_nxtstate         = ((|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17])) ? CMD_DONE : CORE_CMD_WAIT;     // new command sent to the core
-                     dbg_state_en         = dbg_cmd_valid | (|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17]);
-            end
-            CORE_CMD_WAIT: begin
-                     dbg_nxtstate         = CMD_DONE;
-                     dbg_state_en         = core_dbg_cmd_done;                   // go to done state for one cycle after completing current command
-            end
-            SB_CMD_START: begin
-                     dbg_nxtstate         = (|abstractcs_reg[10:8]) ? CMD_DONE : SB_CMD_SEND;
-                     dbg_state_en         = (dbg_bus_clk_en & ~sb_cmd_pending) | (|abstractcs_reg[10:8]);
-            end
-            SB_CMD_SEND: begin
-                     sb_abmem_cmd_done_in = 1'b1;
-                     sb_abmem_data_done_in= 1'b1;
-                     sb_abmem_cmd_done_en = (sb_bus_cmd_read | sb_bus_cmd_write_addr) & dbg_bus_clk_en;
-                     sb_abmem_data_done_en= (sb_bus_cmd_read | sb_bus_cmd_write_data) & dbg_bus_clk_en;
-                     dbg_nxtstate         = SB_CMD_RESP;
-                     dbg_state_en         = (sb_abmem_cmd_done | sb_abmem_cmd_done_en) & (sb_abmem_data_done | sb_abmem_data_done_en) & dbg_bus_clk_en;
-            end
-            SB_CMD_RESP: begin
-                     dbg_nxtstate         = CMD_DONE;
-                     dbg_state_en         = (sb_bus_rsp_read | sb_bus_rsp_write) & dbg_bus_clk_en;
-                     dbg_sb_bus_error     = (sb_bus_rsp_read | sb_bus_rsp_write) & sb_bus_rsp_error & dbg_bus_clk_en;
-                     data0_reg_wren2      = dbg_state_en & ~sb_abmem_cmd_write & ~dbg_sb_bus_error;
-            end
-            CMD_DONE: begin
-                     dbg_nxtstate         = HALTED;
-                     dbg_state_en         = 1'b1;
-                     abstractcs_busy_wren = dbg_state_en;                    // remove the busy bit from the abstracts ( bit 12 )
-                     abstractcs_busy_din  = 1'b0;
-                     sb_abmem_cmd_done_in = 1'b0;
-                     sb_abmem_data_done_in= 1'b0;
-                     sb_abmem_cmd_done_en = 1'b1;
-                     sb_abmem_data_done_en= 1'b1;
-            end
-            RESUMING : begin
-                     dbg_nxtstate            = IDLE;
-                     dbg_state_en            = dmstatus_reg[17];             // resume ack has been updated in the dmstatus register
-           end
-           default : begin
-                     dbg_nxtstate            = IDLE;
-                     dbg_state_en            = 1'b0;
-                     abstractcs_busy_wren    = 1'b0;
-                     abstractcs_busy_din     = 1'b0;
-                     dbg_halt_req            = 1'b0;         // single pulse output to the core
-                     dbg_resume_req          = 1'b0;         // single pulse output to the core
-                     dbg_sb_bus_error        = 1'b0;
-                     data0_reg_wren2         = 1'b0;
-                     sb_abmem_cmd_done_in    = 1'b0;
-                     sb_abmem_data_done_in   = 1'b0;
-                     sb_abmem_cmd_done_en    = 1'b0;
-                     sb_abmem_data_done_en   = 1'b0;
-          end
-         endcase
-   end // always_comb begin
-
-   assign dmi_reg_rdata_din[31:0] = ({32{dmi_reg_addr == 7'h4}}  & data0_reg[31:0])      |
-                                    ({32{dmi_reg_addr == 7'h5}}  & data1_reg[31:0])      |
-                                    ({32{dmi_reg_addr == 7'h10}} & {2'b0,dmcontrol_reg[29],1'b0,dmcontrol_reg[27:0]})  |  // Read0 to Write only bits
-                                    ({32{dmi_reg_addr == 7'h11}} & dmstatus_reg[31:0])   |
-                                    ({32{dmi_reg_addr == 7'h16}} & abstractcs_reg[31:0]) |
-                                    ({32{dmi_reg_addr == 7'h17}} & command_reg[31:0])    |
-                                    ({32{dmi_reg_addr == 7'h18}} & {30'h0,abstractauto_reg[1:0]})    |
-                                    ({32{dmi_reg_addr == 7'h40}} & haltsum0_reg[31:0])   |
-                                    ({32{dmi_reg_addr == 7'h38}} & sbcs_reg[31:0])       |
-                                    ({32{dmi_reg_addr == 7'h39}} & sbaddress0_reg[31:0]) |
-                                    ({32{dmi_reg_addr == 7'h3c}} & sbdata0_reg[31:0])    |
-                                    ({32{dmi_reg_addr == 7'h3d}} & sbdata1_reg[31:0]);
-
-
-   rvdffs #($bits(state_t)) dbg_state_reg    (.din(dbg_nxtstate), .dout({dbg_state}), .en(dbg_state_en), .rst_l(dbg_dm_rst_l & rst_l), .clk(dbg_free_clk));
-   rvdffe #(32)             dmi_rddata_reg   (.din(dmi_reg_rdata_din[31:0]), .dout(dmi_reg_rdata[31:0]), .en(dmi_reg_en), .rst_l(dbg_dm_rst_l), .clk(clk), .*);
-
-   assign abmem_addr[31:0]      = data1_reg[31:0];
-   assign abmem_addr_core_local = (abmem_addr_in_dccm_region | abmem_addr_in_iccm_region | abmem_addr_in_pic_region);
-   assign abmem_addr_external   = ~abmem_addr_core_local;
-
-   assign abmem_addr_in_dccm_region = (abmem_addr[31:28] == pt.DCCM_REGION) & pt.DCCM_ENABLE;
-   assign abmem_addr_in_iccm_region = (abmem_addr[31:28] == pt.ICCM_REGION) & pt.ICCM_ENABLE;
-   assign abmem_addr_in_pic_region  = (abmem_addr[31:28] == pt.PIC_REGION);
-
-   // interface for the core
-   assign dbg_cmd_addr[31:0]    = (command_reg[31:24] == 8'h2) ? data1_reg[31:0]  : {20'b0, command_reg[11:0]};
-   assign dbg_cmd_wrdata[31:0]  = data0_reg[31:0];
-   assign dbg_cmd_valid         = (dbg_state == CORE_CMD_START) & ~((|abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h0) & ~command_reg[17]) | ((command_reg[31:24] == 8'h2) & abmem_addr_external)) & dma_dbg_ready;
-   assign dbg_cmd_write         = command_reg[16];
-   assign dbg_cmd_type[1:0]     = (command_reg[31:24] == 8'h2) ? 2'b10 : {1'b0, (command_reg[15:12] == 4'b0)};
-   assign dbg_cmd_size[1:0]     = command_reg[21:20];
-
-   assign dbg_cmd_addr_incr[3:0]  = (command_reg[31:24] == 8'h2) ? (4'h1 << sb_abmem_cmd_size[1:0]) : 4'h1;
-   assign dbg_cmd_curr_addr[31:0] = (command_reg[31:24] == 8'h2) ? data1_reg[31:0]  : {16'b0, command_reg[15:0]};
-   assign dbg_cmd_next_addr[31:0] = dbg_cmd_curr_addr[31:0] + {28'h0,dbg_cmd_addr_incr[3:0]};
-
-   // Ask DMA to stop taking bus trxns since debug request is done
-   assign dbg_dma_bubble = ((dbg_state == CORE_CMD_START) & ~(|abstractcs_reg[10:8])) | (dbg_state == CORE_CMD_WAIT);
-
-   assign sb_cmd_pending       = (sb_state == CMD_RD) | (sb_state == CMD_WR) | (sb_state == CMD_WR_ADDR) | (sb_state == CMD_WR_DATA) | (sb_state == RSP_RD) | (sb_state == RSP_WR);
-   assign sb_abmem_cmd_pending = (dbg_state == SB_CMD_START) | (dbg_state == SB_CMD_SEND) | (dbg_state== SB_CMD_RESP);
-
-
-  // system bus FSM
-  always_comb begin
-      sb_nxtstate            = SBIDLE;
-      sb_state_en            = 1'b0;
-      sbcs_sbbusy_wren       = 1'b0;
-      sbcs_sbbusy_din        = 1'b0;
-      sbcs_sberror_wren      = 1'b0;
-      sbcs_sberror_din[2:0]  = 3'b0;
-      sbaddress0_reg_wren1   = 1'b0;
-      case (sb_state)
-            SBIDLE: begin
-                     sb_nxtstate            = sbdata0wr_access ? WAIT_WR : WAIT_RD;
-                     sb_state_en            = (sbdata0wr_access | sbreadondata_access | sbreadonaddr_access) & ~(|sbcs_reg[14:12]) & ~sbcs_reg[22];
-                     sbcs_sbbusy_wren       = sb_state_en;                                                 // set the single read bit if it is a singlread command
-                     sbcs_sbbusy_din        = 1'b1;
-                     sbcs_sberror_wren      = sbcs_wren & (|dmi_reg_wdata[14:12]);                                            // write to clear the error bits
-                     sbcs_sberror_din[2:0]  = ~dmi_reg_wdata[14:12] & sbcs_reg[14:12];
-            end
-            WAIT_RD: begin
-                     sb_nxtstate           = (sbcs_unaligned | sbcs_illegal_size) ? DONE : CMD_RD;
-                     sb_state_en           = (dbg_bus_clk_en & ~sb_abmem_cmd_pending) | sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_wren     = sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_din[2:0] = sbcs_unaligned ? 3'b011 : 3'b100;
-            end
-            WAIT_WR: begin
-                     sb_nxtstate           = (sbcs_unaligned | sbcs_illegal_size) ? DONE : CMD_WR;
-                     sb_state_en           = (dbg_bus_clk_en & ~sb_abmem_cmd_pending) | sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_wren     = sbcs_unaligned | sbcs_illegal_size;
-                     sbcs_sberror_din[2:0] = sbcs_unaligned ? 3'b011 : 3'b100;
-            end
-            CMD_RD : begin
-                     sb_nxtstate           = RSP_RD;
-                     sb_state_en           = sb_bus_cmd_read & dbg_bus_clk_en;
-            end
-            CMD_WR : begin
-                     sb_nxtstate           = (sb_bus_cmd_write_addr & sb_bus_cmd_write_data) ? RSP_WR : (sb_bus_cmd_write_data ? CMD_WR_ADDR : CMD_WR_DATA);
-                     sb_state_en           = (sb_bus_cmd_write_addr | sb_bus_cmd_write_data) & dbg_bus_clk_en;
-            end
-            CMD_WR_ADDR : begin
-                     sb_nxtstate           = RSP_WR;
-                     sb_state_en           = sb_bus_cmd_write_addr & dbg_bus_clk_en;
-            end
-            CMD_WR_DATA : begin
-                     sb_nxtstate           = RSP_WR;
-                     sb_state_en           = sb_bus_cmd_write_data & dbg_bus_clk_en;
-            end
-            RSP_RD: begin
-                     sb_nxtstate           = DONE;
-                     sb_state_en           = sb_bus_rsp_read & dbg_bus_clk_en;
-                     sbcs_sberror_wren     = sb_state_en & sb_bus_rsp_error;
-                     sbcs_sberror_din[2:0] = 3'b010;
-            end
-            RSP_WR: begin
-                     sb_nxtstate           = DONE;
-                     sb_state_en           = sb_bus_rsp_write & dbg_bus_clk_en;
-                     sbcs_sberror_wren     = sb_state_en & sb_bus_rsp_error;
-                     sbcs_sberror_din[2:0] = 3'b010;
-            end
-            DONE: begin
-                     sb_nxtstate            = SBIDLE;
-                     sb_state_en            = 1'b1;
-                     sbcs_sbbusy_wren       = 1'b1;                           // reset the single read
-                     sbcs_sbbusy_din        = 1'b0;
-                     sbaddress0_reg_wren1   = sbcs_reg[16] & (sbcs_reg[14:12] == 3'b0);    // auto increment was set and no error. Update to new address after completing the current command
-            end
-            default : begin
-                     sb_nxtstate            = SBIDLE;
-                     sb_state_en            = 1'b0;
-                     sbcs_sbbusy_wren       = 1'b0;
-                     sbcs_sbbusy_din        = 1'b0;
-                     sbcs_sberror_wren      = 1'b0;
-                     sbcs_sberror_din[2:0]  = 3'b0;
-                     sbaddress0_reg_wren1   = 1'b0;
-           end
-         endcase
-   end // always_comb begin
-
-   rvdffs #($bits(sb_state_t)) sb_state_reg (.din(sb_nxtstate), .dout({sb_state}), .en(sb_state_en), .rst_l(dbg_dm_rst_l), .clk(sb_free_clk));
-
-   assign sb_abmem_cmd_write      = command_reg[16];
-   assign sb_abmem_cmd_size[2:0]  = {1'b0, command_reg[21:20]};
-   assign sb_abmem_cmd_addr[31:0] = abmem_addr[31:0];
-   assign sb_abmem_cmd_wdata[31:0] = data0_reg[31:0];
-
-   assign sb_cmd_size[2:0]   = sbcs_reg[19:17];
-   assign sb_cmd_wdata[63:0] = {sbdata1_reg[31:0], sbdata0_reg[31:0]};
-   assign sb_cmd_addr[31:0]  = sbaddress0_reg[31:0];
-
-   assign sb_abmem_cmd_awvalid    = (dbg_state == SB_CMD_SEND) & sb_abmem_cmd_write & ~sb_abmem_cmd_done;
-   assign sb_abmem_cmd_wvalid     = (dbg_state == SB_CMD_SEND) & sb_abmem_cmd_write & ~sb_abmem_data_done;
-   assign sb_abmem_cmd_arvalid    = (dbg_state == SB_CMD_SEND) & ~sb_abmem_cmd_write & ~sb_abmem_cmd_done & ~sb_abmem_data_done;
-   assign sb_abmem_read_pend      = (dbg_state == SB_CMD_RESP) & ~sb_abmem_cmd_write;
-
-   assign sb_cmd_awvalid     = ((sb_state == CMD_WR) | (sb_state == CMD_WR_ADDR));
-   assign sb_cmd_wvalid      = ((sb_state == CMD_WR) | (sb_state == CMD_WR_DATA));
-   assign sb_cmd_arvalid     = (sb_state == CMD_RD);
-   assign sb_read_pend       = (sb_state == RSP_RD);
-
-   assign sb_axi_size[2:0]    = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid | sb_abmem_cmd_arvalid | sb_abmem_read_pend) ? sb_abmem_cmd_size[2:0] : sb_cmd_size[2:0];
-   assign sb_axi_addr[31:0]   = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid | sb_abmem_cmd_arvalid | sb_abmem_read_pend) ? sb_abmem_cmd_addr[31:0] : sb_cmd_addr[31:0];
-   assign sb_axi_wrdata[63:0] = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid) ? {2{sb_abmem_cmd_wdata[31:0]}} : sb_cmd_wdata[63:0];
-
-   // Generic bus response signals
-   assign sb_bus_cmd_read       = sb_axi_arvalid & sb_axi_arready;
-   assign sb_bus_cmd_write_addr = sb_axi_awvalid & sb_axi_awready;
-   assign sb_bus_cmd_write_data = sb_axi_wvalid  & sb_axi_wready;
-
-   assign sb_bus_rsp_read  = sb_axi_rvalid & sb_axi_rready;
-   assign sb_bus_rsp_write = sb_axi_bvalid & sb_axi_bready;
-   assign sb_bus_rsp_error = (sb_bus_rsp_read & (|(sb_axi_rresp[1:0]))) | (sb_bus_rsp_write & (|(sb_axi_bresp[1:0])));
-
-   // AXI Request signals
-   assign sb_axi_awvalid              = sb_abmem_cmd_awvalid | sb_cmd_awvalid;
-   assign sb_axi_awaddr[31:0]         = sb_axi_addr[31:0];
-   assign sb_axi_awid[pt.SB_BUS_TAG-1:0] = '0;
-   assign sb_axi_awsize[2:0]          = sb_axi_size[2:0];
-   assign sb_axi_awprot[2:0]          = 3'b001;
-   assign sb_axi_awcache[3:0]         = 4'b1111;
-   assign sb_axi_awregion[3:0]        = sb_axi_addr[31:28];
-   assign sb_axi_awlen[7:0]           = '0;
-   assign sb_axi_awburst[1:0]         = 2'b01;
-   assign sb_axi_awqos[3:0]           = '0;
-   assign sb_axi_awlock               = '0;
-
-   assign sb_axi_wvalid       = sb_abmem_cmd_wvalid | sb_cmd_wvalid;
-   assign sb_axi_wdata[63:0]  = ({64{(sb_axi_size[2:0] == 3'h0)}} & {8{sb_axi_wrdata[7:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h1)}} & {4{sb_axi_wrdata[15:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h2)}} & {2{sb_axi_wrdata[31:0]}}) |
-                                ({64{(sb_axi_size[2:0] == 3'h3)}} & {sb_axi_wrdata[63:0]});
-   assign sb_axi_wstrb[7:0]   = ({8{(sb_axi_size[2:0] == 3'h0)}} & (8'h1 << sb_axi_addr[2:0])) |
-                                ({8{(sb_axi_size[2:0] == 3'h1)}} & (8'h3 << {sb_axi_addr[2:1],1'b0})) |
-                                ({8{(sb_axi_size[2:0] == 3'h2)}} & (8'hf << {sb_axi_addr[2],2'b0})) |
-                                ({8{(sb_axi_size[2:0] == 3'h3)}} & 8'hff);
-   assign sb_axi_wlast        = '1;
-
-   assign sb_axi_arvalid              = sb_abmem_cmd_arvalid | sb_cmd_arvalid;
-   assign sb_axi_araddr[31:0]         = sb_axi_addr[31:0];
-   assign sb_axi_arid[pt.SB_BUS_TAG-1:0] = '0;
-   assign sb_axi_arsize[2:0]          = sb_axi_size[2:0];
-   assign sb_axi_arprot[2:0]          = 3'b001;
-   assign sb_axi_arcache[3:0]         = 4'b0;
-   assign sb_axi_arregion[3:0]        = sb_axi_addr[31:28];
-   assign sb_axi_arlen[7:0]           = '0;
-   assign sb_axi_arburst[1:0]         = 2'b01;
-   assign sb_axi_arqos[3:0]           = '0;
-   assign sb_axi_arlock               = '0;
-
-   // AXI Response signals
-   assign sb_axi_bready = 1'b1;
-
-   assign sb_axi_rready = 1'b1;
-   assign sb_bus_rdata[63:0] = ({64{sb_axi_size == 3'h0}} & ((sb_axi_rdata[63:0] >>  8*sb_axi_addr[2:0]) & 64'hff))       |
-                               ({64{sb_axi_size == 3'h1}} & ((sb_axi_rdata[63:0] >> 16*sb_axi_addr[2:1]) & 64'hffff))    |
-                               ({64{sb_axi_size == 3'h2}} & ((sb_axi_rdata[63:0] >> 32*sb_axi_addr[2]) & 64'hffff_ffff)) |
-                               ({64{sb_axi_size == 3'h3}} & sb_axi_rdata[63:0]);
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// dec: decode unit - decode, bypassing, ARF, interrupts
-//
-//********************************************************************************
-// $Id$
-//
-//
-// Function: Decode
-// Comments: Decode, dependency scoreboard, ARF
-//
-//
-// A -> D -> EX1 ... WB
-//
-//********************************************************************************
-
-module eb1_dec
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic clk,                          // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic active_clk,                   // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic free_clk,                     // Clock always.                  Through two clock headers. For flops without second clock header built in.
-   input logic free_l2clk,                   // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic lsu_fastint_stall_any,        // needed by lsu for 2nd pass of dma with ecc correction, stall next cycle
-
-   output logic dec_extint_stall,            // Stall on external interrupt
-
-   output logic dec_i0_decode_d,             // Valid instruction at D-stage and not blocked
-   output logic dec_pause_state_cg,          // to top for active state clock gating
-
-   output logic dec_tlu_core_empty,
-
-   input logic rst_l,                        // reset, active low
-   input logic [31:1] rst_vec,               // reset vector, from core pins
-
-   input logic        nmi_int,               // NMI pin
-   input logic [31:1] nmi_vec,               // NMI vector, from pins
-
-   input logic  i_cpu_halt_req,              // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,               // Asynchronous Restart request to CPU
-
-   output logic o_cpu_halt_status,           // Halt status of core (pmu/fw)
-   output logic o_cpu_halt_ack,              // Halt request ack
-   output logic o_cpu_run_ack,               // Run request ack
-   output logic o_debug_mode_status,         // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id,               // CORE ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req,           // Async halt request
-   input logic mpc_debug_run_req,            // Async run request
-   input logic mpc_reset_run_req,            // Run/halt after reset
-   output logic mpc_debug_halt_ack,          // Halt ack
-   output logic mpc_debug_run_ack,           // Run ack
-   output logic debug_brkpt_status,          // debug breakpoint
-
-    input logic       exu_pmu_i0_br_misp,    // slot 0 branch misp
-   input logic       exu_pmu_i0_br_ataken,   // slot 0 branch actual taken
-   input logic       exu_pmu_i0_pc4,         // slot 0 4 byte branch
-
-
-   input logic                                lsu_nonblock_load_valid_m,      // valid nonblock load at m
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_tag_m,        // -> corresponding tag
-   input logic                                lsu_nonblock_load_inv_r,        // invalidate request for nonblock load r
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_inv_tag_r,    // -> corresponding tag
-   input logic                                lsu_nonblock_load_data_valid,   // valid nonblock load data back
-   input logic                                lsu_nonblock_load_data_error,   // nonblock load bus error
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_data_tag,     // -> corresponding tag
-   input logic [31:0]                         lsu_nonblock_load_data,         // nonblock load data
-
-   input logic       lsu_pmu_bus_trxn,           // D side bus transaction
-   input logic       lsu_pmu_bus_misaligned,     // D side bus misaligned
-   input logic       lsu_pmu_bus_error,          // D side bus error
-   input logic       lsu_pmu_bus_busy,           // D side bus busy
-   input logic       lsu_pmu_misaligned_m,       // D side load or store misaligned
-   input logic       lsu_pmu_load_external_m,    // D side bus load
-   input logic       lsu_pmu_store_external_m,   // D side bus store
-   input logic       dma_pmu_dccm_read,          // DMA DCCM read
-   input logic       dma_pmu_dccm_write,         // DMA DCCM write
-   input logic       dma_pmu_any_read,           // DMA read
-   input logic       dma_pmu_any_write,          // DMA write
-
-   input logic [31:1] lsu_fir_addr,          // Fast int address
-   input logic [1:0] lsu_fir_error,          // Fast int lookup error
-
-   input logic       ifu_pmu_instr_aligned,  // aligned instructions
-   input logic       ifu_pmu_fetch_stall,    // fetch unit stalled
-   input logic       ifu_pmu_ic_miss,        // icache miss
-   input logic       ifu_pmu_ic_hit,         // icache hit
-   input logic       ifu_pmu_bus_error,      // Instruction side bus error
-   input logic       ifu_pmu_bus_busy,       // Instruction side bus busy
-   input logic       ifu_pmu_bus_trxn,       // Instruction side bus transaction
-
-   input logic       ifu_ic_error_start,     // IC single bit error
-   input logic       ifu_iccm_rd_ecc_single_err, // ICCM single bit error
-
-   input logic [3:0]  lsu_trigger_match_m,
-   input logic        dbg_cmd_valid,         // debugger abstract command valid
-   input logic        dbg_cmd_write,         // command is a write
-   input logic  [1:0] dbg_cmd_type,          // command type
-   input logic [31:0] dbg_cmd_addr,          // command address
-   input logic  [1:0] dbg_cmd_wrdata,        // command write data, for fence/fence_i
-
-
-   input logic        ifu_i0_icaf,           // icache access fault
-   input logic [1:0]  ifu_i0_icaf_type,      // icache access fault type
-
-   input logic   ifu_i0_icaf_second,         // i0 has access fault on second 2B of 4B inst
-   input logic   ifu_i0_dbecc,               // icache/iccm double-bit error
-
-   input logic lsu_idle_any,                 // lsu idle for halting
-
-   input eb1_br_pkt_t i0_brp,                                  // branch packet
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index, // BP index
-   input logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr,            // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag,           // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index,          // Fully associt btb index
-
-   input eb1_lsu_error_pkt_t lsu_error_pkt_r,         // LSU exception/error packet
-   input logic         lsu_single_ecc_error_incr,      // LSU inc SB error counter
-
-   input logic         lsu_imprecise_error_load_any,   // LSU imprecise load bus error
-   input logic         lsu_imprecise_error_store_any,  // LSU imprecise store bus error
-   input logic [31:0]  lsu_imprecise_error_addr_any,   // LSU imprecise bus error address
-
-   input logic [31:0]  exu_div_result,      // final div result
-   input logic         exu_div_wren,        // Divide write enable to GPR
-
-   input logic [31:0] exu_csr_rs1_x,        // rs1 for csr instruction
-
-   input logic [31:0] lsu_result_m,         // load result
-   input logic [31:0] lsu_result_corr_r,    // load result - corrected load data
-
-   input logic        lsu_load_stall_any,   // This is for blocking loads
-   input logic        lsu_store_stall_any,  // This is for blocking stores
-   input logic        dma_dccm_stall_any,   // stall any load/store at decode, pmu event
-   input logic        dma_iccm_stall_any,   // iccm stalled, pmu event
-
-   input logic       iccm_dma_sb_error,     // ICCM DMA single bit error
-
-   input logic exu_flush_final,             // slot0 flush
-
-   input logic [31:1] exu_npc_r,            // next PC
-
-   input logic [31:0] exu_i0_result_x,      // alu result x
-
-
-   input logic         ifu_i0_valid,                  // fetch valids to instruction buffer
-   input logic [31:0]  ifu_i0_instr,                  // fetch inst's to instruction buffer
-   input logic [31:1]  ifu_i0_pc,                     // pc's for instruction buffer
-   input logic         ifu_i0_pc4,                    // indication of 4B or 2B for corresponding inst
-   input logic  [31:1] exu_i0_pc_x,                   // pc's for e1 from the alu's
-
-   input logic mexintpend,                            // External interrupt pending
-   input logic timer_int,                             // Timer interrupt pending (from pin)
-   input logic soft_int,                              // Software interrupt pending (from pin)
-
-   input logic [7:0] pic_claimid,                     // PIC claimid
-   input logic [3:0] pic_pl,                          // PIC priv level
-   input logic       mhwakeup,                        // High priority wakeup
-
-   output logic [3:0] dec_tlu_meicurpl,               // to PIC, Current priv level
-   output logic [3:0] dec_tlu_meipt,                  // to PIC
-
-   input logic [70:0] ifu_ic_debug_rd_data,           // diagnostic icache read data
-   input logic ifu_ic_debug_rd_data_valid,            // diagnostic icache read data valid
-   output eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt, // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-
-
-// Debug start
-   input logic dbg_halt_req,                 // DM requests a halt
-   input logic dbg_resume_req,               // DM requests a resume
-   input logic ifu_miss_state_idle,          // I-side miss buffer empty
-
-   output logic dec_tlu_dbg_halted,          // Core is halted and ready for debug command
-   output logic dec_tlu_debug_mode,          // Core is in debug mode
-   output logic dec_tlu_resume_ack,          // Resume acknowledge
-   output logic dec_tlu_flush_noredir_r,     // Tell fetch to idle on this flush
-   output logic dec_tlu_mpc_halted_only,     // Core is halted only due to MPC
-   output logic dec_tlu_flush_leak_one_r,    // single step
-   output logic dec_tlu_flush_err_r,         // iside perr/ecc rfpc
-   output logic [31:2] dec_tlu_meihap,       // Fast ext int base
-
-   output logic dec_debug_wdata_rs1_d,       // insert debug write data into rs1 at decode
-
-   output logic [31:0] dec_dbg_rddata,       // debug command read data
-
-   output logic dec_dbg_cmd_done,            // abstract command is done
-   output logic dec_dbg_cmd_fail,            // abstract command failed (illegal reg address)
-
-   output eb1_trigger_pkt_t  [3:0] trigger_pkt_any, // info needed by debug trigger blocks
-
-   output logic dec_tlu_force_halt,          // halt has been forced
-// Debug end
-   // branch info from pipe0 for errors or counter updates
-   input logic [1:0]  exu_i0_br_hist_r,             // history
-   input logic        exu_i0_br_error_r,            // error
-   input logic        exu_i0_br_start_error_r,      // start error
-   input logic        exu_i0_br_valid_r,            // valid
-   input logic        exu_i0_br_mp_r,               // mispredict
-   input logic        exu_i0_br_middle_r,           // middle of bank
-
-   // branch info from pipe1 for errors or counter updates
-
-   input logic             exu_i0_br_way_r,         // way hit or repl
-
-   output logic         dec_i0_rs1_en_d,            // Qualify GPR RS1 data
-   output logic         dec_i0_rs2_en_d,            // Qualify GPR RS2 data
-   output logic  [31:0] gpr_i0_rs1_d,               // gpr rs1 data
-   output logic  [31:0] gpr_i0_rs2_d,               // gpr rs2 data
-
-   output logic [31:0] dec_i0_immed_d,              // immediate data
-   output logic [12:1] dec_i0_br_immed_d,           // br immediate data
-
-   output        eb1_alu_pkt_t i0_ap,              // alu packet
-
-   output logic          dec_i0_alu_decode_d,       // schedule on D-stage alu
-   output logic          dec_i0_branch_d,           // Branch in D-stage
-
-   output logic          dec_i0_select_pc_d,        // select pc onto rs1 for jal's
-
-   output logic [31:1]  dec_i0_pc_d,                // pc's at decode
-   output logic [3:0]   dec_i0_rs1_bypass_en_d,     // rs1 bypass enable
-   output logic [3:0]   dec_i0_rs2_bypass_en_d,     // rs2 bypass enable
-
-   output logic [31:0]  dec_i0_result_r,            // Result R-stage
-
-   output eb1_lsu_pkt_t    lsu_p,                  // lsu packet
-   output logic             dec_qual_lsu_d,         // LSU instruction at D.  Use to quiet LSU operands
-   output eb1_mul_pkt_t    mul_p,                  // mul packet
-   output eb1_div_pkt_t    div_p,                  // div packet
-   output logic             dec_div_cancel,         // cancel divide operation
-
-   output logic [11:0] dec_lsu_offset_d,            // 12b offset for load/store addresses
-
-   output logic        dec_csr_ren_d,               // CSR read enable
-   output logic [31:0] dec_csr_rddata_d,            // CSR read data
-
-   output logic        dec_tlu_flush_lower_r,       // tlu flush due to late mp, exception, rfpc, or int
-   output logic        dec_tlu_flush_lower_wb,
-   output logic [31:1] dec_tlu_flush_path_r,        // tlu flush target
-   output logic        dec_tlu_i0_kill_writeb_r,    // I0 is flushed, don't writeback any results to arch state
-   output logic        dec_tlu_fence_i_r,           // flush is a fence_i rfnpc, flush icache
-
-   output logic [31:1] pred_correct_npc_x,          // npc if prediction is correct at e2 stage
-
-   output eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt,      // slot 0 branch predictor update packet
-
-   output logic dec_tlu_perfcnt0,                   // toggles when slot0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1,                   // toggles when slot0 perf counter 1 has an event inc
-   output logic dec_tlu_perfcnt2,                   // toggles when slot0 perf counter 2 has an event inc
-   output logic dec_tlu_perfcnt3,                   // toggles when slot0 perf counter 3 has an event inc
-
-   output eb1_predict_pkt_t dec_i0_predict_p_d,                        // prediction packet to alus
-   output logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d,                // DEC predict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d,     // DEC predict index
-   output logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d,               // DEC predict branch tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   output logic dec_lsu_valid_raw_d,
-
-   output logic [31:0] dec_tlu_mrac_ff,              // CSR for memory region control
-
-   output logic [1:0] dec_data_en,                   // clock-gate control logic
-   output logic [1:0] dec_ctl_en,
-
-   input logic [15:0] ifu_i0_cinst,                  // 16b compressed instruction
-
-   output eb1_trace_pkt_t  trace_rv_trace_pkt,      // trace packet
-
-   // feature disable from mfdc
-   output logic  dec_tlu_external_ldfwd_disable,     // disable external load forwarding
-   output logic  dec_tlu_sideeffect_posted_disable,  // disable posted stores to side-effect address
-   output logic  dec_tlu_core_ecc_disable,           // disable core ECC
-   output logic  dec_tlu_bpred_disable,              // disable branch prediction
-   output logic  dec_tlu_wb_coalescing_disable,      // disable writebuffer coalescing
-   output logic [2:0]  dec_tlu_dma_qos_prty,         // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   output logic  dec_tlu_misc_clk_override,          // override misc clock domain gating
-   output logic  dec_tlu_ifu_clk_override,           // override fetch clock domain gating
-   output logic  dec_tlu_lsu_clk_override,           // override load/store clock domain gating
-   output logic  dec_tlu_bus_clk_override,           // override bus clock domain gating
-   output logic  dec_tlu_pic_clk_override,           // override PIC clock domain gating
-   output logic  dec_tlu_picio_clk_override,         // override PICIO clock domain gating
-   output logic  dec_tlu_dccm_clk_override,          // override DCCM clock domain gating
-   output logic  dec_tlu_icm_clk_override,           // override ICCM clock domain gating
-
-   output logic  dec_tlu_i0_commit_cmt,              // committed i0 instruction
-   input  logic  scan_mode                           // Flop scan mode control
- 
-
-   );
-
-
-   logic  dec_tlu_dec_clk_override;      // to and from dec blocks
-   logic  clk_override;
-
-   logic               dec_ib0_valid_d;
-
-   logic               dec_pmu_instr_decoded;
-   logic               dec_pmu_decode_stall;
-   logic               dec_pmu_presync_stall;
-   logic               dec_pmu_postsync_stall;
-
-   logic dec_tlu_wr_pause_r;             // CSR write to pause reg is at R.
-
-   logic [4:0]  dec_i0_rs1_d;
-   logic [4:0]  dec_i0_rs2_d;
-
-   logic [31:0] dec_i0_instr_d;
-
-   logic  dec_tlu_trace_disable;
-   logic  dec_tlu_pipelining_disable;
-
-
-   logic [4:0]  dec_i0_waddr_r;
-   logic        dec_i0_wen_r;
-   logic [31:0] dec_i0_wdata_r;
-   logic        dec_csr_wen_r;           // csr write enable at wb
-   logic [11:0] dec_csr_wraddr_r;        // write address for csryes
-   logic [31:0] dec_csr_wrdata_r;        // csr write data at wb
-
-   logic [11:0] dec_csr_rdaddr_d;        // read address for csr
-   logic        dec_csr_legal_d;         // csr indicates legal operation
-
-   logic        dec_csr_wen_unq_d;       // valid csr with write - for csr legal
-   logic        dec_csr_any_unq_d;       // valid csr - for csr legal
-   logic        dec_csr_stall_int_ff;    // csr is mie/mstatus
-
-   eb1_trap_pkt_t dec_tlu_packet_r;
-
-   logic        dec_i0_pc4_d;
-   logic        dec_tlu_presync_d;
-   logic        dec_tlu_postsync_d;
-   logic        dec_tlu_debug_stall;
-
-   logic [31:0] dec_illegal_inst;
-
-   logic                      dec_i0_icaf_d;
-
-   logic                      dec_i0_dbecc_d;
-   logic                      dec_i0_icaf_second_d;
-   logic [3:0]                dec_i0_trigger_match_d;
-   logic                      dec_debug_fence_d;
-   logic                      dec_nonblock_load_wen;
-   logic [4:0]                dec_nonblock_load_waddr;
-   logic                      dec_tlu_flush_pause_r;
-   eb1_br_pkt_t                   dec_i0_brp;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index;
-   logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr;
-   logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag;
-   logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index;          // Fully associt btb index
-
-   logic [31:1]               dec_tlu_i0_pc_r;
-   logic                      dec_tlu_i0_kill_writeb_wb;
-   logic                      dec_tlu_i0_valid_r;
-
-   logic                      dec_pause_state;
-
-   logic [1:0]                dec_i0_icaf_type_d;   // i0 instruction access fault type
-
-   logic                      dec_tlu_flush_extint; // Fast ext int started
-
-   logic [31:0]               dec_i0_inst_wb;
-   logic [31:1]               dec_i0_pc_wb;
-   logic                      dec_tlu_i0_valid_wb1,  dec_tlu_int_valid_wb1;
-   logic [4:0]                dec_tlu_exc_cause_wb1;
-   logic [31:0]               dec_tlu_mtval_wb1;
-   logic                      dec_tlu_i0_exc_valid_wb1;
-
-   logic [4:0]                div_waddr_wb;
-   logic                      dec_div_active;
-
-   logic                      dec_debug_valid_d;
-
-
-// Adding signals for vector
-   
-   //logic stall_scalar;
-   
-   
-   
-   assign clk_override = dec_tlu_dec_clk_override;
-
-
-   assign dec_dbg_rddata[31:0] = dec_i0_wdata_r[31:0];
-
-
-   eb1_dec_ib_ctl #(.pt(pt)) instbuff (.*);
-
-
-   eb1_dec_decode_ctl #(.pt(pt)) decode (.*);
-
-
-   eb1_dec_tlu_ctl #(.pt(pt)) tlu (.*);
-
-
-   eb1_dec_gpr_ctl #(.pt(pt)) arf (.*,
-                    // inputs
-                    .raddr0(dec_i0_rs1_d[4:0]),
-                    .raddr1(dec_i0_rs2_d[4:0]),
-
-                    .wen0(dec_i0_wen_r),          .waddr0(dec_i0_waddr_r[4:0]),          .wd0(dec_i0_wdata_r[31:0]),
-                    .wen1(dec_nonblock_load_wen), .waddr1(dec_nonblock_load_waddr[4:0]), .wd1(lsu_nonblock_load_data[31:0]),
-                    .wen2(exu_div_wren),          .waddr2(div_waddr_wb),                 .wd2(exu_div_result[31:0]),
-
-                    // outputs
-                    .rd0(gpr_i0_rs1_d[31:0]), .rd1(gpr_i0_rs2_d[31:0])
-                    );
-
-
-// Trigger
-
-   eb1_dec_trigger #(.pt(pt)) dec_trigger (.*);
-
-
-
-
-// trace
-   assign trace_rv_trace_pkt.trace_rv_i_insn_ip      =   dec_i0_inst_wb[31:0];
-   assign trace_rv_trace_pkt.trace_rv_i_address_ip   = { dec_i0_pc_wb[31:1], 1'b0};
-
-   assign trace_rv_trace_pkt.trace_rv_i_valid_ip     = dec_tlu_int_valid_wb1 | dec_tlu_i0_valid_wb1 | dec_tlu_i0_exc_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_exception_ip = dec_tlu_int_valid_wb1 |  dec_tlu_i0_exc_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_ecause_ip    = dec_tlu_exc_cause_wb1[4:0];     // replicate across ports
-   assign trace_rv_trace_pkt.trace_rv_i_interrupt_ip = dec_tlu_int_valid_wb1;
-   assign trace_rv_trace_pkt.trace_rv_i_tval_ip      = dec_tlu_mtval_wb1[31:0];        // replicate across ports
-
-
-
-// end trace
-
-
-endmodule // eb1_dec
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_dec_decode_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic dec_tlu_trace_disable,
-   input logic dec_debug_valid_d,
-
-   input logic dec_tlu_flush_extint,         // Flush external interrupt
-
-   input logic dec_tlu_force_halt,           // invalidate nonblock load cam on a force halt event
-
-   output logic dec_extint_stall,            // Stall from external interrupt
-
-   input  logic [15:0] ifu_i0_cinst,         // 16b compressed instruction
-   output logic [31:0] dec_i0_inst_wb,       // 32b instruction at wb+1 for trace encoder
-   output logic [31:1] dec_i0_pc_wb,         // 31b pc at wb+1 for trace encoder
-
-
-   input logic                                lsu_nonblock_load_valid_m,       // valid nonblock load at m
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_tag_m,         // -> corresponding tag
-   input logic                                lsu_nonblock_load_inv_r,         // invalidate request for nonblock load r
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_inv_tag_r,     // -> corresponding tag
-   input logic                                lsu_nonblock_load_data_valid,    // valid nonblock load data back
-   input logic                                lsu_nonblock_load_data_error,    // nonblock load bus error
-   input logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0]  lsu_nonblock_load_data_tag,      // -> corresponding tag
-
-
-   input logic [3:0] dec_i0_trigger_match_d,          // i0 decode trigger matches
-
-   input logic dec_tlu_wr_pause_r,                    // pause instruction at r
-   input logic dec_tlu_pipelining_disable,            // pipeline disable - presync, i0 decode only
-
-   input logic [3:0]  lsu_trigger_match_m,            // lsu trigger matches
-
-   input logic lsu_pmu_misaligned_m,                  // perf mon: load/store misalign
-   input logic dec_tlu_debug_stall,                   // debug stall decode
-   input logic dec_tlu_flush_leak_one_r,              // leak1 instruction
-
-   input logic dec_debug_fence_d,                     // debug fence instruction
-
-   input logic [1:0] dbg_cmd_wrdata,                  // disambiguate fence, fence_i
-
-   input logic dec_i0_icaf_d,                         // icache access fault
-   input logic dec_i0_icaf_second_d,                  // i0 instruction access fault on second 2B of 4B inst
-   input logic [1:0] dec_i0_icaf_type_d,              // i0 instruction access fault type
-
-   input logic dec_i0_dbecc_d,                        // icache/iccm double-bit error
-
-   input eb1_br_pkt_t dec_i0_brp,                    // branch packet
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index,   // i0 branch index
-   input logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr,  // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag, // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index,          // Fully associt btb index
-
-   input logic lsu_idle_any,                          // lsu idle: if fence instr & ~lsu_idle then stall decode
-
-   input logic lsu_load_stall_any,                    // stall any load at decode
-   input logic lsu_store_stall_any,                   // stall any store at decode
-   input logic dma_dccm_stall_any,                    // stall any load/store at decode
-
-   input logic exu_div_wren,                          // nonblocking divide write enable to GPR.
-
-   input logic dec_tlu_i0_kill_writeb_wb,             // I0 is flushed, don't writeback any results to arch state
-   input logic dec_tlu_flush_lower_wb,                // trap lower flush
-   input logic dec_tlu_i0_kill_writeb_r,              // I0 is flushed, don't writeback any results to arch state
-   input logic dec_tlu_flush_lower_r,                 // trap lower flush
-   input logic dec_tlu_flush_pause_r,                 // don't clear pause state on initial lower flush
-   input logic dec_tlu_presync_d,                     // CSR read needs to be presync'd
-   input logic dec_tlu_postsync_d,                    // CSR ops that need to be postsync'd
-
-   input logic dec_i0_pc4_d,                          // inst is 4B inst else 2B
-
-   input logic [31:0] dec_csr_rddata_d,               // csr read data at wb
-   input logic dec_csr_legal_d,                       // csr indicates legal operation
-
-   input logic [31:0] exu_csr_rs1_x,                  // rs1 for csr instr
-
-   input logic [31:0] lsu_result_m,                   // load result
-   input logic [31:0] lsu_result_corr_r,              // load result - corrected data for writing gpr's, not for bypassing
-
-   input logic exu_flush_final,                       // lower flush or i0 flush at X or D
-
-   input logic [31:1] exu_i0_pc_x,                    // pcs at e1
-
-   input logic [31:0] dec_i0_instr_d,                 // inst at decode
-
-   input logic  dec_ib0_valid_d,                      // inst valid at decode
-
-   input logic [31:0] exu_i0_result_x,                // from primary alu's
-
-   input logic  clk,                                  // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic  active_clk,                           // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic  free_l2clk,                           // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic  clk_override,                         // Override non-functional clock gating
-   input logic  rst_l,                                // Flop reset
-
-
-
-   output logic        dec_i0_rs1_en_d,               // rs1 enable at decode
-   output logic        dec_i0_rs2_en_d,               // rs2 enable at decode
-
-   output logic [4:0]  dec_i0_rs1_d,                  // rs1 logical source
-   output logic [4:0]  dec_i0_rs2_d,                  // rs2 logical source
-
-   output logic [31:0] dec_i0_immed_d,                // 32b immediate data decode
-
-
-   output logic [12:1] dec_i0_br_immed_d,             // 12b branch immediate
-
-   output eb1_alu_pkt_t i0_ap,                       // alu packets
-
-   output logic        dec_i0_decode_d,               // i0 decode
-
-   output logic        dec_i0_alu_decode_d,           // decode to D-stage alu
-   output logic        dec_i0_branch_d,               // Branch in D-stage
-
-   output logic [4:0]  dec_i0_waddr_r,                // i0 logical source to write to gpr's
-   output logic        dec_i0_wen_r,                  // i0 write enable
-   output logic [31:0] dec_i0_wdata_r,                // i0 write data
-
-   output logic        dec_i0_select_pc_d,            // i0 select pc for rs1 - branches
-
-   output logic [3:0]    dec_i0_rs1_bypass_en_d,      // i0 rs1 bypass enable
-   output logic [3:0]    dec_i0_rs2_bypass_en_d,      // i0 rs2 bypass enable
-   output logic [31:0]   dec_i0_result_r,             // Result R-stage
-
-   output eb1_lsu_pkt_t    lsu_p,                    // load/store packet
-   output logic             dec_qual_lsu_d,           // LSU instruction at D.  Use to quiet LSU operands
-
-   output eb1_mul_pkt_t    mul_p,                    // multiply packet
-
-   output eb1_div_pkt_t    div_p,                    // divide packet
-   output logic [4:0]       div_waddr_wb,             // DIV write address to GPR
-   output logic             dec_div_cancel,           // cancel the divide operation
-
-   output logic        dec_lsu_valid_raw_d,
-   output logic [11:0] dec_lsu_offset_d,
-
-   output logic        dec_csr_ren_d,                 // valid csr decode
-   output logic        dec_csr_wen_unq_d,             // valid csr with write - for csr legal
-   output logic        dec_csr_any_unq_d,             // valid csr - for csr legal
-   output logic [11:0] dec_csr_rdaddr_d,              // read address for csr
-   output logic        dec_csr_wen_r,                 // csr write enable at r
-   output logic [11:0] dec_csr_wraddr_r,              // write address for csr
-   output logic [31:0] dec_csr_wrdata_r,              // csr write data at r
-   output logic        dec_csr_stall_int_ff,          // csr is mie/mstatus
-
-   output              dec_tlu_i0_valid_r,            // i0 valid inst at c
-
-   output eb1_trap_pkt_t   dec_tlu_packet_r,              // trap packet
-
-   output logic [31:1] dec_tlu_i0_pc_r,               // i0 trap pc
-
-   output logic [31:0] dec_illegal_inst,              // illegal inst
-   output logic [31:1] pred_correct_npc_x,            // npc e2 if the prediction is correct
-
-   output eb1_predict_pkt_t dec_i0_predict_p_d,      // i0 predict packet decode
-   output logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d, // i0 predict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d, // i0 predict index
-   output logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d, // i0_predict branch tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   output logic [1:0] dec_data_en,                    // clock-gating logic
-   output logic [1:0] dec_ctl_en,
-
-   output logic       dec_pmu_instr_decoded,          // number of instructions decode this cycle encoded
-   output logic       dec_pmu_decode_stall,           // decode is stalled
-   output logic       dec_pmu_presync_stall,          // decode has presync stall
-   output logic       dec_pmu_postsync_stall,         // decode has postsync stall
-
-   output logic       dec_nonblock_load_wen,          // write enable for nonblock load
-   output logic [4:0] dec_nonblock_load_waddr,        // logical write addr for nonblock load
-   output logic       dec_pause_state,                // core in pause state
-   output logic       dec_pause_state_cg,             // pause state for clock-gating
-
-   output logic       dec_div_active,                 // non-block divide is active
-
-   input  logic       scan_mode
-   
-   );
-
-
-
-
-   eb1_dec_pkt_t           i0_dp_raw, i0_dp;
-
-   logic [31:0]        i0;
-   logic               i0_valid_d;
-
-   logic [31:0]        i0_result_r;
-
-   logic [2:0]         i0_rs1bypass, i0_rs2bypass;
-
-   logic               i0_jalimm20;
-   logic               i0_uiimm20;
-
-   logic               lsu_decode_d;
-   logic [31:0]        i0_immed_d;
-   logic               i0_presync;
-   logic               i0_postsync;
-
-   logic               postsync_stall;
-   logic               ps_stall;
-
-   logic               prior_inflight, prior_inflight_wb;
-
-   logic               csr_clr_d, csr_set_d, csr_write_d;
-
-   logic               csr_clr_x,csr_set_x,csr_write_x,csr_imm_x;
-   logic [31:0]        csr_mask_x;
-   logic [31:0]        write_csr_data_x;
-   logic [31:0]        write_csr_data_in;
-   logic [31:0]        write_csr_data;
-   logic               csr_data_wen;
-
-   logic [4:0]         csrimm_x;
-
-   logic [31:0]        csr_rddata_x;
-
-   logic               mul_decode_d;
-   logic               div_decode_d;
-   logic               div_e1_to_r;
-   logic               div_flush;
-   logic               div_active_in;
-   logic               div_active;
-   logic               i0_nonblock_div_stall;
-   logic               i0_div_prior_div_stall;
-   logic               nonblock_div_cancel;
-
-   logic               i0_legal;
-   logic               shift_illegal;
-   logic               illegal_inst_en;
-   logic               illegal_lockout_in, illegal_lockout;
-   logic               i0_legal_decode_d;
-   logic               i0_exulegal_decode_d, i0_exudecode_d, i0_exublock_d;
-
-   logic [12:1]        last_br_immed_d;
-   logic               i0_rs1_depend_i0_x, i0_rs1_depend_i0_r;
-   logic               i0_rs2_depend_i0_x, i0_rs2_depend_i0_r;
-
-   logic               i0_div_decode_d;
-   logic               i0_load_block_d;
-   logic [1:0]         i0_rs1_depth_d, i0_rs2_depth_d;
-
-   logic               i0_load_stall_d;
-   logic               i0_store_stall_d;
-
-   logic               i0_predict_nt, i0_predict_t;
-
-   logic               i0_notbr_error, i0_br_toffset_error;
-   logic               i0_ret_error;
-   logic               i0_br_error;
-   logic               i0_br_error_all;
-   logic [11:0]        i0_br_offset;
-
-   logic [20:1]        i0_pcall_imm;                          // predicted jal's
-   logic               i0_pcall_12b_offset;
-   logic               i0_pcall_raw;
-   logic               i0_pcall_case;
-   logic               i0_pcall;
-
-   logic               i0_pja_raw;
-   logic               i0_pja_case;
-   logic               i0_pja;
-
-   logic               i0_pret_case;
-   logic               i0_pret_raw, i0_pret;
-
-   logic               i0_jal;                                // jal's that are not predicted
-
-
-   logic               i0_predict_br;
-
-   logic               store_data_bypass_d, store_data_bypass_m;
-
-   eb1_class_pkt_t         i0_rs1_class_d, i0_rs2_class_d;
-
-   eb1_class_pkt_t         i0_d_c, i0_x_c, i0_r_c;
-
-
-   logic               i0_ap_pc2, i0_ap_pc4;
-
-   logic               i0_rd_en_d;
-
-   logic               load_ldst_bypass_d;
-
-   logic               leak1_i0_stall_in, leak1_i0_stall;
-   logic               leak1_i1_stall_in, leak1_i1_stall;
-   logic               leak1_mode;
-
-   logic               i0_csr_write_only_d;
-
-   logic               prior_inflight_x, prior_inflight_eff;
-   logic               any_csr_d;
-
-   logic               prior_csr_write;
-
-   logic [3:0]        i0_pipe_en;
-   logic              i0_r_ctl_en,  i0_x_ctl_en,  i0_wb_ctl_en;
-   logic              i0_x_data_en, i0_r_data_en, i0_wb_data_en;
-
-   logic              debug_fence_i;
-   logic              debug_fence;
-
-   logic              i0_csr_write;
-   logic              presync_stall;
-
-   logic              i0_instr_error;
-   logic              i0_icaf_d;
-
-   logic              clear_pause;
-   logic              pause_state_in, pause_state;
-   logic              pause_stall;
-
-   logic              i0_brp_valid;
-   logic              nonblock_load_cancel;
-   logic              lsu_idle;
-   logic              lsu_pmu_misaligned_r;
-   logic              csr_ren_qual_d;
-   logic              csr_read_x;
-   logic              i0_block_d;
-   logic              i0_block_raw_d;  // This is use to create the raw valid
-   logic              ps_stall_in;
-   logic [31:0]       i0_result_x;
-
-   eb1_dest_pkt_t         d_d, x_d, r_d, wbd;
-   eb1_dest_pkt_t         x_d_in, r_d_in;
-
-   eb1_trap_pkt_t         d_t, x_t, x_t_in, r_t_in, r_t;
-
-   logic [3:0]        lsu_trigger_match_r;
-
-   logic [31:1]       dec_i0_pc_r;
-
-   logic csr_read, csr_write;
-   logic i0_br_unpred;
-
-   logic nonblock_load_valid_m_delay;
-   logic i0_wen_r;
-
-   logic tlu_wr_pause_r1;
-   logic tlu_wr_pause_r2;
-
-   logic flush_final_r;
-
-   logic bitmanip_zbb_legal;
-   logic bitmanip_zbs_legal;
-   logic bitmanip_zbe_legal;
-   logic bitmanip_zbc_legal;
-   logic bitmanip_zbp_legal;
-   logic bitmanip_zbr_legal;
-   logic bitmanip_zbf_legal;
-   logic bitmanip_zba_legal;
-   logic bitmanip_zbb_zbp_legal;
-   logic bitmanip_legal;
-
-   logic              data_gate_en;
-   logic              data_gate_clk;
-
-
-   localparam NBLOAD_SIZE     = pt.LSU_NUM_NBLOAD;
-   localparam NBLOAD_SIZE_MSB = int'(pt.LSU_NUM_NBLOAD)-1;
-   localparam NBLOAD_TAG_MSB  = pt.LSU_NUM_NBLOAD_WIDTH-1;
-
-
-   logic                     cam_write, cam_inv_reset, cam_data_reset;
-   logic [NBLOAD_TAG_MSB:0]  cam_write_tag, cam_inv_reset_tag, cam_data_reset_tag;
-   logic [NBLOAD_SIZE_MSB:0] cam_wen;
-
-   logic [NBLOAD_TAG_MSB:0]  load_data_tag;
-   logic [NBLOAD_SIZE_MSB:0] nonblock_load_write;
-
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam;
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam_in;
-   eb1_load_cam_pkt_t [NBLOAD_SIZE_MSB:0] cam_raw;
-
-   logic [4:0] nonblock_load_rd;
-   logic i0_nonblock_load_stall;
-   logic i0_nonblock_boundary_stall;
-
-   logic i0_rs1_nonblock_load_bypass_en_d, i0_rs2_nonblock_load_bypass_en_d;
-
-   logic i0_load_kill_wen_r;
-
-   logic found;
-
-   logic [NBLOAD_SIZE_MSB:0] cam_inv_reset_val, cam_data_reset_val;
-
-   logic debug_fence_raw;
-
-   logic [31:0] i0_result_r_raw;
-   logic [31:0] i0_result_corr_r;
-
-   logic [12:1] last_br_immed_x;
-
-   logic [31:0]        i0_inst_d;
-   logic [31:0]        i0_inst_x;
-   logic [31:0]        i0_inst_r;
-   logic [31:0]        i0_inst_wb_in;
-   logic [31:0]        i0_inst_wb;
-
-   logic [31:1]        i0_pc_wb;
-
-   logic               i0_wb_en;
-
-   logic               trace_enable;
-
-   logic               debug_valid_x;
-
-   eb1_inst_pkt_t i0_itype;
-   eb1_reg_pkt_t i0r;
-   
-
-
-   rvdffie  #(8) misc1ff (.*,
-                          .clk(free_l2clk),
-                          .din( {leak1_i1_stall_in,leak1_i0_stall_in,dec_tlu_flush_extint,pause_state_in ,dec_tlu_wr_pause_r, tlu_wr_pause_r1,illegal_lockout_in,ps_stall_in}),
-                          .dout({leak1_i1_stall,   leak1_i0_stall,   dec_extint_stall,    pause_state,       tlu_wr_pause_r1,tlu_wr_pause_r2,illegal_lockout,   ps_stall   })
-                          );
-
-   rvdffie  #(8) misc2ff (.*,
-                          .clk(free_l2clk),
-                          .din( {lsu_trigger_match_m[3:0],lsu_pmu_misaligned_m,div_active_in,exu_flush_final,  dec_debug_valid_d}),
-                          .dout({lsu_trigger_match_r[3:0],lsu_pmu_misaligned_r,div_active,       flush_final_r,    debug_valid_x})
-                          );
-
-if(pt.BTB_ENABLE==1) begin
-// branch prediction
-
-
-   // in leak1_mode, ignore any predictions for i0, treat branch as if we haven't seen it before
-   // in leak1 mode, also ignore branch errors for i0
-   assign i0_brp_valid                        =  dec_i0_brp.valid & ~leak1_mode & ~i0_icaf_d;
-
-   assign dec_i0_predict_p_d.misp        =  '0;
-   assign dec_i0_predict_p_d.ataken      =  '0;
-   assign dec_i0_predict_p_d.boffset     =  '0;
-
-   assign dec_i0_predict_p_d.pcall       =  i0_pcall;  // don't mark as pcall if branch error
-   assign dec_i0_predict_p_d.pja         =  i0_pja;
-   assign dec_i0_predict_p_d.pret        =  i0_pret;
-   assign dec_i0_predict_p_d.prett[31:1] =  dec_i0_brp.prett[31:1];
-   assign dec_i0_predict_p_d.pc4         =  dec_i0_pc4_d;
-   assign dec_i0_predict_p_d.hist[1:0]   =  dec_i0_brp.hist[1:0];
-   assign dec_i0_predict_p_d.valid       =  i0_brp_valid & i0_legal_decode_d;
-   assign i0_notbr_error                 =  i0_brp_valid & ~(i0_dp_raw.condbr | i0_pcall_raw | i0_pja_raw | i0_pret_raw);
-
-   // no toffset error for a pret
-   assign i0_br_toffset_error                               =  i0_brp_valid & dec_i0_brp.hist[1] & (dec_i0_brp.toffset[11:0] != i0_br_offset[11:0]) & ~i0_pret_raw;
-   assign i0_ret_error                                      =  i0_brp_valid & (dec_i0_brp.ret ^ i0_pret_raw);
-   assign i0_br_error                                       =  dec_i0_brp.br_error | i0_notbr_error | i0_br_toffset_error | i0_ret_error;
-   assign dec_i0_predict_p_d.br_error                       =  i0_br_error & i0_legal_decode_d & ~leak1_mode;
-   assign dec_i0_predict_p_d.br_start_error                 =  dec_i0_brp.br_start_error & i0_legal_decode_d & ~leak1_mode;
-   assign i0_predict_index_d[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] =  dec_i0_bp_index;
-
-   assign i0_predict_btag_d[pt.BTB_BTAG_SIZE-1:0]           =  dec_i0_bp_btag[pt.BTB_BTAG_SIZE-1:0];
-   assign i0_br_error_all                                   = (i0_br_error | dec_i0_brp.br_start_error) & ~leak1_mode;
-   assign dec_i0_predict_p_d.toffset[11:0]                  =  i0_br_offset[11:0];
-   assign i0_predict_fghr_d[pt.BHT_GHR_SIZE-1:0]            =  dec_i0_bp_fghr[pt.BHT_GHR_SIZE-1:0];
-   assign dec_i0_predict_p_d.way                            =  dec_i0_brp.way;
-
-
-   if(pt.BTB_FULLYA) begin
-      logic btb_error_found, btb_error_found_f;
-      logic [$clog2(pt.BTB_SIZE)-1:0] fa_error_index_ns;
-
-      assign btb_error_found = (i0_br_error_all | btb_error_found_f) & ~dec_tlu_flush_lower_r;
-      assign fa_error_index_ns = (i0_br_error_all & ~btb_error_found_f) ? dec_i0_bp_fa_index : dec_fa_error_index;
-
-      rvdff #($clog2(pt.BTB_SIZE)+1) btberrorfa_f   (.*, .clk(active_clk),
-                                                         .din({btb_error_found,    fa_error_index_ns}),
-                                                         .dout({btb_error_found_f, dec_fa_error_index}));
-
-
-   end
-   else
-     assign dec_fa_error_index = 'b0;
-
-
-   //   end
-end // if (pt.BTB_ENABLE==1)
-else begin
-
-   always_comb begin
-      dec_i0_predict_p_d = '0;
-      dec_i0_predict_p_d.pcall       =  i0_pcall;  // don't mark as pcall if branch error
-      dec_i0_predict_p_d.pja         =  i0_pja;
-      dec_i0_predict_p_d.pret        =  i0_pret;
-      dec_i0_predict_p_d.pc4         =  dec_i0_pc4_d;
-   end
-
-   assign i0_br_error_all = '0;
-   assign i0_predict_index_d = '0;
-   assign i0_predict_btag_d = '0;
-   assign i0_predict_fghr_d = '0;
-   assign i0_brp_valid = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   // on br error turn anything into a nop
-   // on i0 instruction fetch access fault turn anything into a nop
-   // nop =>   alu rs1 imm12 rd lor
-
-   assign i0_icaf_d = dec_i0_icaf_d | dec_i0_dbecc_d;
-
-   assign i0_instr_error = i0_icaf_d;
-
-   always_comb begin
-      i0_dp = i0_dp_raw;
-      if (i0_br_error_all | i0_instr_error) begin
-         i0_dp          =   '0;
-         i0_dp.alu      = 1'b1;
-         i0_dp.rs1      = 1'b1;
-         i0_dp.rs2      = 1'b1;
-         i0_dp.lor      = 1'b1;
-         i0_dp.legal    = 1'b1;
-         i0_dp.postsync = 1'b1;
-      end
-   end
-
-   assign i0[31:0] = dec_i0_instr_d[31:0];
-
-   assign dec_i0_select_pc_d = i0_dp.pc;
-
-   // branches that can be predicted
-
-   assign i0_predict_br =  i0_dp.condbr | i0_pcall | i0_pja | i0_pret;
-
-   assign i0_predict_nt = ~(dec_i0_brp.hist[1] & i0_brp_valid) & i0_predict_br;
-   assign i0_predict_t  =  (dec_i0_brp.hist[1] & i0_brp_valid) & i0_predict_br;
-
-   assign i0_ap.add     =  i0_dp.add;
-   assign i0_ap.sub     =  i0_dp.sub;
-   assign i0_ap.land    =  i0_dp.land;
-   assign i0_ap.lor     =  i0_dp.lor;
-   assign i0_ap.lxor    =  i0_dp.lxor;
-   assign i0_ap.sll     =  i0_dp.sll;
-   assign i0_ap.srl     =  i0_dp.srl;
-   assign i0_ap.sra     =  i0_dp.sra;
-   assign i0_ap.slt     =  i0_dp.slt;
-   assign i0_ap.unsign  =  i0_dp.unsign;
-   assign i0_ap.beq     =  i0_dp.beq;
-   assign i0_ap.bne     =  i0_dp.bne;
-   assign i0_ap.blt     =  i0_dp.blt;
-   assign i0_ap.bge     =  i0_dp.bge;
-
-   assign i0_ap.clz     =  i0_dp.clz;
-   assign i0_ap.ctz     =  i0_dp.ctz;
-   assign i0_ap.pcnt    =  i0_dp.pcnt;
-   assign i0_ap.sext_b  =  i0_dp.sext_b;
-   assign i0_ap.sext_h  =  i0_dp.sext_h;
-   assign i0_ap.sh1add  =  i0_dp.sh1add;
-   assign i0_ap.sh2add  =  i0_dp.sh2add;
-   assign i0_ap.sh3add  =  i0_dp.sh3add;
-   assign i0_ap.zba     =  i0_dp.zba;
-   assign i0_ap.slo     =  i0_dp.slo;
-   assign i0_ap.sro     =  i0_dp.sro;
-   assign i0_ap.min     =  i0_dp.min;
-   assign i0_ap.max     =  i0_dp.max;
-   assign i0_ap.pack    =  i0_dp.pack;
-   assign i0_ap.packu   =  i0_dp.packu;
-   assign i0_ap.packh   =  i0_dp.packh;
-   assign i0_ap.rol     =  i0_dp.rol;
-   assign i0_ap.ror     =  i0_dp.ror;
-   assign i0_ap.grev    =  i0_dp.grev;
-   assign i0_ap.gorc    =  i0_dp.gorc;
-   assign i0_ap.zbb     =  i0_dp.zbb;
-   assign i0_ap.sbset   =  i0_dp.sbset;
-   assign i0_ap.sbclr   =  i0_dp.sbclr;
-   assign i0_ap.sbinv   =  i0_dp.sbinv;
-   assign i0_ap.sbext   =  i0_dp.sbext;
-
-   assign i0_ap.csr_write =  i0_csr_write_only_d;
-   assign i0_ap.csr_imm   =  i0_dp.csr_imm;
-   assign i0_ap.jal       =  i0_jal;
-
-   assign i0_ap_pc2 = ~dec_i0_pc4_d;
-   assign i0_ap_pc4 =  dec_i0_pc4_d;
-
-   assign i0_ap.predict_nt = i0_predict_nt;
-   assign i0_ap.predict_t  = i0_predict_t;
-
-
-// non block load cam logic
-
-   always_comb begin
-      found = 0;
-      cam_wen[NBLOAD_SIZE_MSB:0] = '0;
-      for (int i=0; i<NBLOAD_SIZE; i++) begin
-         if (~found) begin
-            if (~cam[i].valid) begin
-               cam_wen[i] = cam_write;
-               found = 1'b1;
-            end
-            else begin
-               cam_wen[i] = 0;
-            end
-         end
-         else
-            cam_wen[i] = 0;
-      end
-   end
-
-
-   assign cam_write          = lsu_nonblock_load_valid_m;
-   assign cam_write_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_tag_m[NBLOAD_TAG_MSB:0];
-
-   assign cam_inv_reset          = lsu_nonblock_load_inv_r;
-   assign cam_inv_reset_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_inv_tag_r[NBLOAD_TAG_MSB:0];
-
-   assign cam_data_reset          = lsu_nonblock_load_data_valid | lsu_nonblock_load_data_error;
-   assign cam_data_reset_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_data_tag[NBLOAD_TAG_MSB:0];
-
-   assign nonblock_load_rd[4:0] = (x_d.i0load) ? x_d.i0rd[4:0] : 5'b0;  // rd data
-
-
-   // checks
-
-
-
-
-    // case of multiple loads to same dest ie. x1 ... you have to invalidate the older one
-
-   for (genvar i=0; i<NBLOAD_SIZE; i++) begin : cam_array
-
-      assign cam_inv_reset_val[i] = cam_inv_reset   & (cam_inv_reset_tag[NBLOAD_TAG_MSB:0]  == cam[i].tag[NBLOAD_TAG_MSB:0]) & cam[i].valid;
-
-      assign cam_data_reset_val[i] = cam_data_reset & (cam_data_reset_tag[NBLOAD_TAG_MSB:0] == cam_raw[i].tag[NBLOAD_TAG_MSB:0]) & cam_raw[i].valid;
-
-      always_comb begin
-
-         cam[i] = cam_raw[i];
-
-         if (cam_data_reset_val[i])
-           cam[i].valid = 1'b0;
-
-         cam_in[i] = '0;
-
-         if (cam_wen[i]) begin
-            cam_in[i].valid    = 1'b1;
-            cam_in[i].wb       = 1'b0;
-            cam_in[i].tag[NBLOAD_TAG_MSB:0] = cam_write_tag[NBLOAD_TAG_MSB:0];
-            cam_in[i].rd[4:0]  = nonblock_load_rd[4:0];
-         end
-         else if ( (cam_inv_reset_val[i]) |
-                   (i0_wen_r & (r_d_in.i0rd[4:0] == cam[i].rd[4:0]) & cam[i].wb) )
-           cam_in[i].valid = 1'b0;
-         else
-           cam_in[i] = cam[i];
-
-         if (nonblock_load_valid_m_delay & (lsu_nonblock_load_inv_tag_r[NBLOAD_TAG_MSB:0]==cam[i].tag[NBLOAD_TAG_MSB:0]) & cam[i].valid)
-           cam_in[i].wb = 1'b1;
-
-         // force debug halt forces cam valids to 0; highest priority
-         if (dec_tlu_force_halt)
-           cam_in[i].valid = 1'b0;
-      end
-
-
-   rvdffie #( $bits(eb1_load_cam_pkt_t) ) cam_ff (.*, .din(cam_in[i]), .dout(cam_raw[i]));
-
-
-   assign nonblock_load_write[i] = (load_data_tag[NBLOAD_TAG_MSB:0] == cam_raw[i].tag[NBLOAD_TAG_MSB:0]) & cam_raw[i].valid;
-
-
-end : cam_array
-
-
-
-   assign load_data_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_data_tag[NBLOAD_TAG_MSB:0];
-
-
-
-   assign nonblock_load_cancel = ((r_d_in.i0rd[4:0] == dec_nonblock_load_waddr[4:0]) & i0_wen_r);     // cancel if any younger inst (including another nonblock) committing this cycle
-
-
-   assign dec_nonblock_load_wen = lsu_nonblock_load_data_valid & |nonblock_load_write[NBLOAD_SIZE_MSB:0] & ~nonblock_load_cancel;
-
-   always_comb begin
-
-      dec_nonblock_load_waddr[4:0] = '0;
-      i0_nonblock_load_stall = i0_nonblock_boundary_stall;
-
-      for (int i=0; i<NBLOAD_SIZE; i++) begin
-         dec_nonblock_load_waddr[4:0] |= ({5{nonblock_load_write[i]}} & cam[i].rd[4:0]);
-         i0_nonblock_load_stall |= dec_i0_rs1_en_d & cam[i].valid & (cam[i].rd[4:0] == i0r.rs1[4:0]);
-         i0_nonblock_load_stall |= dec_i0_rs2_en_d & cam[i].valid & (cam[i].rd[4:0] == i0r.rs2[4:0]);
-      end
-
-   end
-
-   assign i0_nonblock_boundary_stall = ((nonblock_load_rd[4:0]==i0r.rs1[4:0]) & lsu_nonblock_load_valid_m & dec_i0_rs1_en_d) |
-                                       ((nonblock_load_rd[4:0]==i0r.rs2[4:0]) & lsu_nonblock_load_valid_m & dec_i0_rs2_en_d);
-
-
-
-// don't writeback a nonblock load
-
-   rvdffs #(1) wbnbloaddelayff (.*, .clk(active_clk), .en(i0_r_ctl_en ), .din(lsu_nonblock_load_valid_m),        .dout(nonblock_load_valid_m_delay) );
-
-   assign i0_load_kill_wen_r = nonblock_load_valid_m_delay &  r_d.i0load;
-
-
-
-// end non block load cam logic
-
-// pmu start
-
-
-
-
-   assign csr_read = csr_ren_qual_d;
-   assign csr_write = dec_csr_wen_unq_d;
-
-   assign i0_br_unpred = i0_dp.jal & ~i0_predict_br;
-
-   // the classes must be mutually exclusive with one another
-
-   always_comb begin
-      i0_itype = NULL;
-
-      if (i0_legal_decode_d) begin
-         if (i0_dp.mul)                  i0_itype = MUL;
-         if (i0_dp.load)                 i0_itype = LOAD;
-         if (i0_dp.store)                i0_itype = STORE;
-         if (i0_dp.pm_alu)               i0_itype = ALU;
-         if (i0_dp.zbb | i0_dp.zbs |
-             i0_dp.zbe | i0_dp.zbc |
-             i0_dp.zbp | i0_dp.zbr |
-             i0_dp.zbf | i0_dp.zba)
-                                         i0_itype = BITMANIPU;
-         if ( csr_read & ~csr_write)     i0_itype = CSRREAD;
-         if (~csr_read &  csr_write)     i0_itype = CSRWRITE;
-         if ( csr_read &  csr_write)     i0_itype = CSRRW;
-         if (i0_dp.ebreak)               i0_itype = EBREAK;
-         if (i0_dp.ecall)                i0_itype = ECALL;
-         if (i0_dp.fence)                i0_itype = FENCE;
-         if (i0_dp.fence_i)              i0_itype = FENCEI;  // fencei will set this even with fence attribute
-         if (i0_dp.mret)                 i0_itype = MRET;
-         if (i0_dp.condbr)               i0_itype = CONDBR;
-         if (i0_dp.jal)                  i0_itype = JAL;
-      end
-   end
-
-
-
-
-
-// end pmu
-
-
-   eb1_dec_dec_ctl i0_dec (.inst(i0[31:0]),.out(i0_dp_raw));
-   
-
-
-   rvdff #(1) lsu_idle_ff (.*, .clk(active_clk), .din(lsu_idle_any), .dout(lsu_idle));
-
-
-
-   assign leak1_i1_stall_in = (dec_tlu_flush_leak_one_r | (leak1_i1_stall & ~dec_tlu_flush_lower_r));
-
-
-   assign leak1_mode = leak1_i1_stall;
-
-   assign leak1_i0_stall_in = ((dec_i0_decode_d & leak1_i1_stall) | (leak1_i0_stall & ~dec_tlu_flush_lower_r));
-
-
-
-
-   // 12b jal's can be predicted - these are calls
-
-   assign i0_pcall_imm[20:1] = {i0[31],i0[19:12],i0[20],i0[30:21]};
-
-   assign i0_pcall_12b_offset = (i0_pcall_imm[12]) ? (i0_pcall_imm[20:13] == 8'hff) : (i0_pcall_imm[20:13] == 8'h0);
-
-   assign i0_pcall_case  = i0_pcall_12b_offset & i0_dp_raw.imm20 &  (i0r.rd[4:0] == 5'd1 | i0r.rd[4:0] == 5'd5);
-   assign i0_pja_case    = i0_pcall_12b_offset & i0_dp_raw.imm20 & ~(i0r.rd[4:0] == 5'd1 | i0r.rd[4:0] == 5'd5);
-
-   assign i0_pcall_raw   = i0_dp_raw.jal &   i0_pcall_case;   // this includes ja
-   assign i0_pcall       = i0_dp.jal     &   i0_pcall_case;
-
-   assign i0_pja_raw     = i0_dp_raw.jal &   i0_pja_case;
-   assign i0_pja         = i0_dp.jal     &   i0_pja_case;
-
-
-   assign i0_br_offset[11:0] = (i0_pcall_raw | i0_pja_raw) ? i0_pcall_imm[12:1] : {i0[31],i0[7],i0[30:25],i0[11:8]};
-
-   assign i0_pret_case = (i0_dp_raw.jal & i0_dp_raw.imm12 & (i0r.rd[4:0] == 5'b0) & (i0r.rs1[4:0] == 5'd1 | i0r.rs1[4:0] == 5'd5));  // jalr with rd==0, rs1==1 or rs1==5 is a ret
-
-   assign i0_pret_raw = i0_dp_raw.jal &   i0_pret_case;
-   assign i0_pret     = i0_dp.jal     &   i0_pret_case;
-
-   assign i0_jal      = i0_dp.jal     &  ~i0_pcall_case & ~i0_pja_case & ~i0_pret_case;
-
-   // lsu stuff
-   // load/store mutually exclusive
-   assign dec_lsu_offset_d[11:0] = ({12{ ~dec_extint_stall & i0_dp.lsu & i0_dp.load}} &               i0[31:20]) |
-                                   ({12{ ~dec_extint_stall & i0_dp.lsu & i0_dp.store}} &             {i0[31:25],i0[11:7]});
-
-
-
-   assign div_p.valid    =  div_decode_d;
-
-   assign div_p.unsign   =  i0_dp.unsign;
-   assign div_p.rem      =  i0_dp.rem;
-
-
-   assign mul_p.valid    =  mul_decode_d;
-
-   assign mul_p.rs1_sign =  i0_dp.rs1_sign;
-   assign mul_p.rs2_sign =  i0_dp.rs2_sign;
-   assign mul_p.low      =  i0_dp.low;
-   assign mul_p.bext     =  i0_dp.bext;
-   assign mul_p.bdep     =  i0_dp.bdep;
-   assign mul_p.clmul    =  i0_dp.clmul;
-   assign mul_p.clmulh   =  i0_dp.clmulh;
-   assign mul_p.clmulr   =  i0_dp.clmulr;
-   assign mul_p.grev     =  i0_dp.grev;
-   assign mul_p.gorc     =  i0_dp.gorc;
-   assign mul_p.shfl     =  i0_dp.shfl;
-   assign mul_p.unshfl   =  i0_dp.unshfl;
-   assign mul_p.crc32_b  =  i0_dp.crc32_b;
-   assign mul_p.crc32_h  =  i0_dp.crc32_h;
-   assign mul_p.crc32_w  =  i0_dp.crc32_w;
-   assign mul_p.crc32c_b =  i0_dp.crc32c_b;
-   assign mul_p.crc32c_h =  i0_dp.crc32c_h;
-   assign mul_p.crc32c_w =  i0_dp.crc32c_w;
-   assign mul_p.bfp      =  i0_dp.bfp;
-
-   always_comb  begin
-      lsu_p = '0;
-
-      if (dec_extint_stall) begin
-         lsu_p.load = 1'b1;
-         lsu_p.word = 1'b1;
-         lsu_p.fast_int = 1'b1;
-         lsu_p.valid = 1'b1;
-      end
-      else begin
-         lsu_p.valid = lsu_decode_d;
-
-         lsu_p.load                         =  i0_dp.load ;
-         lsu_p.store                        =  i0_dp.store;
-         lsu_p.by                           =  i0_dp.by   ;
-         lsu_p.half                         =  i0_dp.half ;
-         lsu_p.word                         =  i0_dp.word ;
-         lsu_p.stack                        = (i0r.rs1[4:0]==5'd2);   // stack reference
-
-         lsu_p.load_ldst_bypass_d          =  load_ldst_bypass_d ;
-         lsu_p.store_data_bypass_d         =  store_data_bypass_d;
-         lsu_p.store_data_bypass_m         =  store_data_bypass_m;
-
-         lsu_p.unsign  =  i0_dp.unsign;
-      end
-   end
-
-
-   assign  dec_lsu_valid_raw_d    = (i0_valid_d & (i0_dp_raw.load | i0_dp_raw.store) & ~dma_dccm_stall_any & ~i0_block_raw_d) | dec_extint_stall;
-
-
-
-   assign i0r.rs1[4:0] = i0[19:15];
-   assign i0r.rs2[4:0] = i0[24:20];
-   assign i0r.rd[4:0]  = i0[11:7];
-
-
-   assign dec_i0_rs1_en_d   =  (i0_dp.rs1 & (i0r.rs1[4:0] != 5'd0));  // if rs1_en=0 then read will be all 0's
-   assign dec_i0_rs2_en_d   =  (i0_dp.rs2 & (i0r.rs2[4:0] != 5'd0));
-   assign i0_rd_en_d        =  (i0_dp.rd  & (i0r.rd[4:0]  != 5'd0));
-
-   assign dec_i0_rs1_d[4:0] =  i0r.rs1[4:0];
-   assign dec_i0_rs2_d[4:0] =  i0r.rs2[4:0];
-
-
-   assign i0_jalimm20       =  i0_dp.jal & i0_dp.imm20;   // jal
-   assign i0_uiimm20        = ~i0_dp.jal & i0_dp.imm20;
-
-
-   // csr logic
-
-   assign dec_csr_ren_d  = i0_dp.csr_read & i0_valid_d;
-   assign csr_ren_qual_d = i0_dp.csr_read & i0_legal_decode_d;
-
-   assign csr_clr_d =   i0_dp.csr_clr   & i0_legal_decode_d;
-   assign csr_set_d   = i0_dp.csr_set   & i0_legal_decode_d;
-   assign csr_write_d = i0_csr_write    & i0_legal_decode_d;
-
-   assign i0_csr_write_only_d = i0_csr_write & ~i0_dp.csr_read;
-
-   assign dec_csr_wen_unq_d = (i0_dp.csr_clr | i0_dp.csr_set | i0_csr_write) & i0_valid_d;   // for csr legal, can't write read-only csr
-
-   assign dec_csr_any_unq_d = any_csr_d & i0_valid_d;
-
-
-   assign dec_csr_rdaddr_d[11:0] =  {12{dec_csr_any_unq_d}} & i0[31:20];
-   assign dec_csr_wraddr_r[11:0] =  {12{r_d.csrwen & r_d.i0valid}} & r_d.csrwaddr[11:0];
-
-
-   // make sure csr doesn't write same cycle as dec_tlu_flush_lower_wb
-   // also use valid so it's flushable
-   assign dec_csr_wen_r = r_d.csrwen & r_d.i0valid & ~dec_tlu_i0_kill_writeb_r;
-
-   // If we are writing MIE or MSTATUS, hold off the external interrupt for a cycle on the write.
-   assign dec_csr_stall_int_ff = ((r_d.csrwaddr[11:0] == 12'h300) | (r_d.csrwaddr[11:0] == 12'h304)) & r_d.csrwen & r_d.i0valid & ~dec_tlu_i0_kill_writeb_wb;
-
-
-   rvdff #(5) csrmiscff (.*,
-                        .clk (active_clk),
-                        .din ({csr_ren_qual_d, csr_clr_d, csr_set_d, csr_write_d, i0_dp.csr_imm}),
-                        .dout({csr_read_x,     csr_clr_x, csr_set_x, csr_write_x, csr_imm_x})
-                       );
-
-
-
-
-   // perform the update operation if any
-
-   rvdffe #(37) csr_rddata_x_ff (.*, .en(i0_x_data_en & any_csr_d), .din( {i0[19:15],dec_csr_rddata_d[31:0]}), .dout({csrimm_x[4:0],csr_rddata_x[31:0]}));
-
-
-   assign csr_mask_x[31:0]       = ({32{ csr_imm_x}} & {27'b0,csrimm_x[4:0]}) |
-                                   ({32{~csr_imm_x}} &  exu_csr_rs1_x[31:0] );
-
-
-   assign write_csr_data_x[31:0] = ({32{csr_clr_x}}   & (csr_rddata_x[31:0] & ~csr_mask_x[31:0])) |
-                                   ({32{csr_set_x}}   & (csr_rddata_x[31:0] |  csr_mask_x[31:0])) |
-                                   ({32{csr_write_x}} & (                      csr_mask_x[31:0]));
-
-
-// pause instruction
-
-
-
-
-   assign clear_pause = (dec_tlu_flush_lower_r & ~dec_tlu_flush_pause_r) |
-                        (pause_state & (write_csr_data[31:1] == 31'b0));        // if 0 or 1 then exit pause state - 1 cycle pause
-
-   assign pause_state_in = (dec_tlu_wr_pause_r | pause_state) & ~clear_pause;
-
-
-
-   assign dec_pause_state = pause_state;
-
-
-
-      assign dec_pause_state_cg = pause_state & ~tlu_wr_pause_r1 & ~tlu_wr_pause_r2;
-
-// end pause
-
-
-   assign csr_data_wen = ((csr_clr_x | csr_set_x | csr_write_x) & csr_read_x) | dec_tlu_wr_pause_r | pause_state;
-
-   assign write_csr_data_in[31:0] = (pause_state)         ? (write_csr_data[31:0] - 32'b1) :
-                                    (dec_tlu_wr_pause_r) ? dec_csr_wrdata_r[31:0] : write_csr_data_x[31:0];
-
-   // will hold until write-back at which time the CSR will be updated while GPR is possibly written with prior CSR
-   rvdffe #(32) write_csr_ff (.*, .clk(free_l2clk), .en(csr_data_wen), .din(write_csr_data_in[31:0]), .dout(write_csr_data[31:0]));
-
-   assign pause_stall = pause_state;
-
-   // for csr write only data is produced by the alu
-   assign dec_csr_wrdata_r[31:0]  = (r_d.csrwonly & r_d.i0valid) ? i0_result_corr_r[31:0] : write_csr_data[31:0];
-
-
-
-   assign dec_i0_immed_d[31:0] =  i0_immed_d[31:0];
-
-   assign     i0_immed_d[31:0] = ({32{i0_dp.imm12}}                         & { {20{i0[31]}},i0[31:20] }) |  // jalr
-                                 ({32{i0_dp.shimm5}}                        & {  27'b0,      i0[24:20] }) |
-                                 ({32{i0_jalimm20}}                         & { {12{i0[31]}},i0[19:12],i0[20],i0[30:21],1'b0}) |
-                                 ({32{i0_uiimm20}}                          & { i0[31:12],12'b0 }) |
-                                 ({32{i0_csr_write_only_d & i0_dp.csr_imm}} & {  27'b0,      i0[19:15]});  // for csr's that only write csr, dont read csr
-
-
-   // all conditional branches are currently predict_nt
-   // change this to generate the sequential address for all other cases for NPC requirements at commit
-   assign dec_i0_br_immed_d[12:1] = (i0_ap.predict_nt & ~i0_dp.jal) ? i0_br_offset[11:0] : {10'b0,i0_ap_pc4,i0_ap_pc2};
-
-
-   assign last_br_immed_d[12:1] = ((i0_ap.predict_nt) ? {10'b0,i0_ap_pc4,i0_ap_pc2} : i0_br_offset[11:0] );
-
-   assign i0_valid_d = dec_ib0_valid_d;
-
-   // load_stall includes bus_barrier
-
-   assign i0_load_stall_d = (i0_dp.load ) & (lsu_load_stall_any | dma_dccm_stall_any);
-
-   assign i0_store_stall_d =  i0_dp.store & (lsu_store_stall_any | dma_dccm_stall_any);
-
-
-
-// some CSR reads need to be presync'd
-   assign i0_presync = i0_dp.presync | dec_tlu_presync_d | debug_fence_i | debug_fence_raw | dec_tlu_pipelining_disable;  // both fence's presync
-
-// some CSR writes need to be postsync'd
-   assign i0_postsync = i0_dp.postsync | dec_tlu_postsync_d | debug_fence_i | // only fence_i postsync
-                        (i0_csr_write_only_d & (i0[31:20] == 12'h7c2));   // wr_pause must postsync
-
-
-// debug fence csr
-   assign debug_fence_i     = dec_debug_fence_d & dbg_cmd_wrdata[0];
-   assign debug_fence_raw   = dec_debug_fence_d & dbg_cmd_wrdata[1];
-
-   assign debug_fence       = debug_fence_raw | debug_fence_i;    // fence_i causes a fence
-
-   assign i0_csr_write = i0_dp.csr_write & ~dec_debug_fence_d;
-// end debug
-
-
-   // lets make ebreak, ecall, mret postsync, so break sync into pre and post
-
-   assign presync_stall      = (i0_presync & prior_inflight_eff);
-
-   assign prior_inflight_eff = (i0_dp.div)  ?  prior_inflight_x  :  prior_inflight;
-
-   assign i0_div_prior_div_stall = i0_dp.div & div_active;
-
-   // Raw block has everything excepts the stalls coming from the lsu
-   assign i0_block_raw_d = (i0_dp.csr_read & prior_csr_write) |
-                            dec_extint_stall |
-                            pause_stall |
-                            leak1_i0_stall |
-                            dec_tlu_debug_stall |
-                            postsync_stall |
-                            presync_stall  |
-                            ((i0_dp.fence | debug_fence) & ~lsu_idle) |
-                            i0_nonblock_load_stall |
-                            i0_load_block_d |
-                            i0_nonblock_div_stall |
-                            i0_div_prior_div_stall;
-
-   assign i0_block_d    = i0_block_raw_d | i0_store_stall_d | i0_load_stall_d;
-   assign i0_exublock_d = i0_block_raw_d;
-
-
-   // block reads if there is a prior csr write in the pipeline
-   assign prior_csr_write = x_d.csrwonly |
-                            r_d.csrwonly |
-                            wbd.csrwonly;
-
-
-
-   if       (pt.BITMANIP_ZBB == 1)
-     assign bitmanip_zbb_legal      =  1'b1;
-   else
-     assign bitmanip_zbb_legal      = ~(i0_dp.zbb & ~i0_dp.zbp);
-
-   if       (pt.BITMANIP_ZBS == 1)
-     assign bitmanip_zbs_legal      =  1'b1;
-   else
-     assign bitmanip_zbs_legal      = ~i0_dp.zbs;
-
-   if       (pt.BITMANIP_ZBE == 1)
-     assign bitmanip_zbe_legal      =  1'b1;
-   else
-     assign bitmanip_zbe_legal      = ~i0_dp.zbe;
-
-   if       (pt.BITMANIP_ZBC == 1)
-     assign bitmanip_zbc_legal      =  1'b1;
-   else
-     assign bitmanip_zbc_legal      = ~i0_dp.zbc;
-
-   if       (pt.BITMANIP_ZBP == 1)
-     assign bitmanip_zbp_legal      =  1'b1;
-   else
-     assign bitmanip_zbp_legal      = ~(i0_dp.zbp & ~i0_dp.zbb);
-
-   if       (pt.BITMANIP_ZBR == 1)
-     assign bitmanip_zbr_legal      =  1'b1;
-   else
-     assign bitmanip_zbr_legal      = ~i0_dp.zbr;
-
-   if       (pt.BITMANIP_ZBF == 1)
-     assign bitmanip_zbf_legal      =  1'b1;
-   else
-     assign bitmanip_zbf_legal      = ~i0_dp.zbf;
-
-   if (pt.BITMANIP_ZBA == 1)
-     assign bitmanip_zba_legal      =  1'b1;
-   else
-     assign bitmanip_zba_legal      = ~i0_dp.zba;
-
-   if     ( (pt.BITMANIP_ZBB == 1) | (pt.BITMANIP_ZBP == 1) )
-     assign bitmanip_zbb_zbp_legal  =  1'b1;
-   else
-     assign bitmanip_zbb_zbp_legal  = ~(i0_dp.zbb & i0_dp.zbp);
-
-
-   assign any_csr_d      =  i0_dp.csr_read | i0_csr_write;
-   assign bitmanip_legal =  bitmanip_zbb_legal & bitmanip_zbs_legal & bitmanip_zbe_legal & bitmanip_zbc_legal & bitmanip_zbp_legal & bitmanip_zbr_legal & bitmanip_zbf_legal & bitmanip_zba_legal & bitmanip_zbb_zbp_legal;
-
-   assign i0_legal       =  (i0_dp.legal) & (~any_csr_d | dec_csr_legal_d) & bitmanip_legal;
-
-
-
-   // illegal inst handling
-
-
-   assign shift_illegal      = dec_i0_decode_d & ~i0_legal;
-
-   assign illegal_inst_en    = shift_illegal & ~illegal_lockout;
-
-   rvdffe #(32) illegal_any_ff (.*, .en(illegal_inst_en), .din(i0_inst_d[31:0]), .dout(dec_illegal_inst[31:0]));
-
-   assign illegal_lockout_in = (shift_illegal | illegal_lockout) & ~flush_final_r;
-
-
-
-   // allow illegals to flow down the pipe
-   assign dec_i0_decode_d = i0_valid_d & ~i0_block_d    & ~dec_tlu_flush_lower_r & ~flush_final_r;
-   assign i0_exudecode_d  = i0_valid_d & ~i0_exublock_d & ~dec_tlu_flush_lower_r & ~flush_final_r;
-
-   // define i0 legal decode
-   assign i0_legal_decode_d    = dec_i0_decode_d & i0_legal;
-   assign i0_exulegal_decode_d = i0_exudecode_d  & i0_legal;
-
-
-   // performance monitor signals
-   assign dec_pmu_instr_decoded = dec_i0_decode_d;
-
-   assign dec_pmu_decode_stall = i0_valid_d & ~dec_i0_decode_d;
-
-   assign dec_pmu_postsync_stall = postsync_stall & i0_valid_d;
-   assign dec_pmu_presync_stall  = presync_stall & i0_valid_d;
-
-
-
-   // illegals will postsync
-   assign ps_stall_in =  ( dec_i0_decode_d & (i0_postsync | ~i0_legal) ) |
-                         ( ps_stall & prior_inflight_x                 );
-
-
-
-   assign postsync_stall =  ps_stall;
-
-
-   assign prior_inflight_x    =  x_d.i0valid;
-   assign prior_inflight_wb   =  r_d.i0valid;
-
-   assign prior_inflight = prior_inflight_x | prior_inflight_wb;
-
-   assign dec_i0_alu_decode_d = i0_exulegal_decode_d & i0_dp.alu;
-   assign dec_i0_branch_d     = i0_dp.condbr | i0_dp.jal | i0_br_error_all;
-
-   assign lsu_decode_d = i0_legal_decode_d    & i0_dp.lsu;
-   assign mul_decode_d = i0_exulegal_decode_d & i0_dp.mul;
-   assign div_decode_d = i0_exulegal_decode_d & i0_dp.div;
-
-   assign dec_qual_lsu_d = i0_dp.lsu;
-
-
-
-
-
-// scheduling logic for alu
-
-   assign i0_rs1_depend_i0_x  = dec_i0_rs1_en_d & x_d.i0v & (x_d.i0rd[4:0] == i0r.rs1[4:0]);
-   assign i0_rs1_depend_i0_r  = dec_i0_rs1_en_d & r_d.i0v & (r_d.i0rd[4:0] == i0r.rs1[4:0]);
-
-   assign i0_rs2_depend_i0_x  = dec_i0_rs2_en_d & x_d.i0v & (x_d.i0rd[4:0] == i0r.rs2[4:0]);
-   assign i0_rs2_depend_i0_r  = dec_i0_rs2_en_d & r_d.i0v & (r_d.i0rd[4:0] == i0r.rs2[4:0]);
-
-
-// order the producers as follows:  , i0_x, i0_r, i0_wb
-
-   assign {i0_rs1_class_d, i0_rs1_depth_d[1:0]} = (i0_rs1_depend_i0_x ) ? { i0_x_c,  2'd1  } :
-                                                  (i0_rs1_depend_i0_r ) ? { i0_r_c,  2'd2  } : '0;
-
-   assign {i0_rs2_class_d, i0_rs2_depth_d[1:0]} = (i0_rs2_depend_i0_x ) ? { i0_x_c,  2'd1  } :
-                                                  (i0_rs2_depend_i0_r ) ? { i0_r_c,  2'd2  } : '0;
-
-
-// stores will bypass load data in the lsu pipe
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin : genblock
-      assign i0_load_block_d = (i0_rs1_class_d.load & i0_rs1_depth_d[0]) |
-                               (i0_rs2_class_d.load & i0_rs2_depth_d[0] & ~i0_dp.store);
-
-      assign load_ldst_bypass_d    =  (i0_dp.load | i0_dp.store) & i0_rs1_depth_d[1] & i0_rs1_class_d.load;
-
-      assign store_data_bypass_d =                  i0_dp.store  & i0_rs2_depth_d[1] & i0_rs2_class_d.load;
-
-      assign store_data_bypass_m =                  i0_dp.store  & i0_rs2_depth_d[0] & i0_rs2_class_d.load;
-   end
-   else begin : genblock
-
-      assign i0_load_block_d = 1'b0;
-
-      assign load_ldst_bypass_d    =  (i0_dp.load | i0_dp.store) & i0_rs1_depth_d[0] & i0_rs1_class_d.load;
-
-      assign store_data_bypass_d =                  i0_dp.store  & i0_rs2_depth_d[0] & i0_rs2_class_d.load;
-
-      assign store_data_bypass_m = 1'b0;
-   end
-
-
-
-
-
-
-   assign dec_tlu_i0_valid_r     =  r_d.i0valid & ~dec_tlu_flush_lower_wb;
-
-
-   assign d_t.legal              =  i0_legal_decode_d;
-   assign d_t.icaf               =  i0_icaf_d & i0_legal_decode_d;                // dbecc is icaf exception
-   assign d_t.icaf_second        =  dec_i0_icaf_second_d & i0_legal_decode_d;     // this includes icaf and dbecc
-   assign d_t.icaf_type[1:0]     =  dec_i0_icaf_type_d[1:0];
-
-   assign d_t.fence_i            = (i0_dp.fence_i | debug_fence_i) & i0_legal_decode_d;
-
-// put pmu info into the trap packet
-   assign d_t.pmu_i0_itype       =  i0_itype;
-   assign d_t.pmu_i0_br_unpred   =  i0_br_unpred;
-   assign d_t.pmu_divide         =  1'b0;
-   assign d_t.pmu_lsu_misaligned =  1'b0;
-
-   assign d_t.i0trigger[3:0]     =  dec_i0_trigger_match_d[3:0] & {4{dec_i0_decode_d}};
-
-
-
-   rvdfflie #( .WIDTH($bits(eb1_trap_pkt_t)),.LEFT(9) ) trap_xff (.*, .en(i0_x_ctl_en), .din(d_t),  .dout(x_t));
-
-   always_comb begin
-      x_t_in = x_t;
-      x_t_in.i0trigger[3:0] = x_t.i0trigger & ~{4{dec_tlu_flush_lower_wb}};
-   end
-
-
-   rvdfflie  #( .WIDTH($bits(eb1_trap_pkt_t)),.LEFT(9) ) trap_r_ff (.*, .en(i0_x_ctl_en), .din(x_t_in),  .dout(r_t));
-
-
-    always_comb begin
-
-      r_t_in                             =  r_t;
-
-      r_t_in.i0trigger[3:0]              = ({4{(r_d.i0load | r_d.i0store)}} & lsu_trigger_match_r[3:0]) | r_t.i0trigger[3:0];
-      r_t_in.pmu_lsu_misaligned          = lsu_pmu_misaligned_r;   // only valid if a load/store is valid in DC3 stage
-
-      if (dec_tlu_flush_lower_wb) r_t_in = '0 ;
-
-   end
-
-
-   always_comb begin
-
-      dec_tlu_packet_r                 =  r_t_in;
-      dec_tlu_packet_r.pmu_divide      =  r_d.i0div & r_d.i0valid;
-
-   end
-
-
-// end tlu stuff
-
-
-   assign i0_d_c.mul                =  i0_dp.mul  & i0_legal_decode_d;
-   assign i0_d_c.load               =  i0_dp.load & i0_legal_decode_d;
-   assign i0_d_c.alu                =  i0_dp.alu  & i0_legal_decode_d;
-
-   rvdffs #( $bits(eb1_class_pkt_t) ) i0_x_c_ff   (.*, .en(i0_x_ctl_en),  .clk(active_clk), .din(i0_d_c),  .dout(i0_x_c));
-   rvdffs #( $bits(eb1_class_pkt_t) ) i0_r_c_ff   (.*, .en(i0_r_ctl_en),  .clk(active_clk), .din(i0_x_c),  .dout(i0_r_c));
-
-
-   assign d_d.i0rd[4:0]             =  i0r.rd[4:0];
-   assign d_d.i0v                   =  i0_rd_en_d  & i0_legal_decode_d;
-   assign d_d.i0valid               =  dec_i0_decode_d;  // has flush_final_r
-
-   assign d_d.i0load                =  i0_dp.load  & i0_legal_decode_d;
-   assign d_d.i0store               =  i0_dp.store & i0_legal_decode_d;
-   assign d_d.i0div                 =  i0_dp.div   & i0_legal_decode_d;
-
-
-   assign d_d.csrwen                =  dec_csr_wen_unq_d   & i0_legal_decode_d;
-   assign d_d.csrwonly              =  i0_csr_write_only_d & dec_i0_decode_d;
-   assign d_d.csrwaddr[11:0]        =  (d_d.csrwen) ? i0[31:20] : '0;    // csr write address for rd==0 case
-
-
-   rvdff  #(3) i0cgff               (.*, .clk(active_clk),            .din(i0_pipe_en[3:1]), .dout(i0_pipe_en[2:0]));
-
-   assign i0_pipe_en[3]             =  dec_i0_decode_d;
-
-   assign i0_x_ctl_en               = (|i0_pipe_en[3:2] | clk_override);
-   assign i0_r_ctl_en               = (|i0_pipe_en[2:1] | clk_override);
-   assign i0_wb_ctl_en              = (|i0_pipe_en[1:0] | clk_override);
-   assign i0_x_data_en              = ( i0_pipe_en[3]   | clk_override);
-   assign i0_r_data_en              = ( i0_pipe_en[2]   | clk_override);
-   assign i0_wb_data_en             = ( i0_pipe_en[1]   | clk_override);
-
-   assign dec_data_en[1:0]          = {i0_x_data_en, i0_r_data_en};
-   assign dec_ctl_en[1:0]           = {i0_x_ctl_en,  i0_r_ctl_en};
-
-
-
-   rvdfflie #( .WIDTH($bits(eb1_dest_pkt_t)),.LEFT(15) ) e1ff (.*, .en(i0_x_ctl_en), .din(d_d),  .dout(x_d));
-
-   always_comb begin
-      x_d_in = x_d;
-
-      x_d_in.i0v         = x_d.i0v     & ~dec_tlu_flush_lower_wb & ~dec_tlu_flush_lower_r;
-      x_d_in.i0valid     = x_d.i0valid & ~dec_tlu_flush_lower_wb & ~dec_tlu_flush_lower_r;
-   end
-
-   rvdfflie #( .WIDTH($bits(eb1_dest_pkt_t)), .LEFT(15) ) r_d_ff (.*, .en(i0_r_ctl_en), .din(x_d_in), .dout(r_d));
-
-
-   always_comb begin
-
-        r_d_in = r_d;
-
-
-      // for the bench
-      r_d_in.i0rd[4:0]   =  r_d.i0rd[4:0];
-
-      r_d_in.i0v         = (r_d.i0v      & ~dec_tlu_flush_lower_wb);
-      r_d_in.i0valid     = (r_d.i0valid  & ~dec_tlu_flush_lower_wb);
-
-      r_d_in.i0load      =  r_d.i0load   & ~dec_tlu_flush_lower_wb;
-      r_d_in.i0store     =  r_d.i0store  & ~dec_tlu_flush_lower_wb;
-
-   end
-
-
-   rvdfflie #(.WIDTH($bits(eb1_dest_pkt_t)), .LEFT(15)) wbff (.*, .en(i0_wb_ctl_en), .din(r_d_in), .dout(wbd));
-
-   assign dec_i0_waddr_r[4:0]       =  r_d_in.i0rd[4:0];
-
-   assign     i0_wen_r              =  r_d_in.i0v & ~dec_tlu_i0_kill_writeb_r;
-   assign dec_i0_wen_r              =  i0_wen_r   & ~r_d_in.i0div & ~i0_load_kill_wen_r;  // don't write a nonblock load 1st time down the pipe
-   assign dec_i0_wdata_r[31:0]      =  i0_result_corr_r[31:0];
-
-
-   // divide stuff
-   assign div_e1_to_r         = (x_d.i0div & x_d.i0valid) |
-                                (r_d.i0div & r_d.i0valid);
-
-   assign div_active_in = i0_div_decode_d | (div_active & ~exu_div_wren & ~nonblock_div_cancel);
-
-
-   assign dec_div_active = div_active;
-
-   // nonblocking div scheme
-
-   assign i0_nonblock_div_stall  = (dec_i0_rs1_en_d & div_active & (div_waddr_wb[4:0] == i0r.rs1[4:0])) |
-                                   (dec_i0_rs2_en_d & div_active & (div_waddr_wb[4:0] == i0r.rs2[4:0]));
-
-
-   assign div_flush              = (x_d.i0div & x_d.i0valid & (x_d.i0rd[4:0]==5'b0)                           ) |
-                                   (x_d.i0div & x_d.i0valid & dec_tlu_flush_lower_r                           ) |
-                                   (r_d.i0div & r_d.i0valid & dec_tlu_flush_lower_r & dec_tlu_i0_kill_writeb_r);
-
-
-   // cancel if any younger inst committing this cycle to same dest as nonblock divide
-   assign nonblock_div_cancel    = (div_active &  div_flush) |
-                                   (div_active & ~div_e1_to_r & (r_d.i0rd[4:0] == div_waddr_wb[4:0]) & i0_wen_r);
-
-   assign dec_div_cancel         =  nonblock_div_cancel;
-
-
-
-   assign i0_div_decode_d            =  i0_legal_decode_d & i0_dp.div;
-
-// for load_to_use_plus1, the load result data is merged in R stage instead of D
-
-   if ( pt.LOAD_TO_USE_PLUS1 == 1 ) begin : genblock1
-      assign i0_result_x[31:0]          = exu_i0_result_x[31:0];
-      assign i0_result_r[31:0]          = (r_d.i0v & r_d.i0load) ? lsu_result_m[31:0] : i0_result_r_raw[31:0];
-   end
-   else begin : genblock1
-      assign i0_result_x[31:0]          = (x_d.i0v & x_d.i0load) ? lsu_result_m[31:0] : exu_i0_result_x[31:0];
-      assign i0_result_r[31:0]          = i0_result_r_raw[31:0];
-   end
-
-
-   rvdffe #(32) i0_result_r_ff       (.*, .en(i0_r_data_en & (x_d.i0v | x_d.csrwen | debug_valid_x)),  .din(i0_result_x[31:0]),       .dout(i0_result_r_raw[31:0]));
-
-   // correct lsu load data - don't use for bypass, do pass down the pipe
-   assign i0_result_corr_r[31:0]     = (r_d.i0v & r_d.i0load) ? lsu_result_corr_r[31:0] : i0_result_r_raw[31:0];
-
-
-   rvdffe #(12) e1brpcff             (.*, .en(i0_x_data_en), .din(last_br_immed_d[12:1] ), .dout(last_br_immed_x[12:1]));
-
-
-
-   assign i0_wb_en                   =  i0_wb_data_en;
-
-   assign i0_inst_wb_in[31:0]        =  i0_inst_r[31:0];
-   assign i0_inst_d[31:0]            = (dec_i0_pc4_d)    ?  i0[31:0]                                  :  {16'b0, ifu_i0_cinst[15:0]};
-
-
-   assign trace_enable = ~dec_tlu_trace_disable;
-
-
-   rvdffe #(.WIDTH(5),.OVERRIDE(1))  i0rdff  (.*, .en(i0_div_decode_d),        .din(i0r.rd[4:0]),             .dout(div_waddr_wb[4:0]));
-
-   rvdffe #(32) i0xinstff            (.*, .en(i0_x_data_en & trace_enable),    .din(i0_inst_d[31:0]),         .dout(i0_inst_x[31:0]));
-   rvdffe #(32) i0cinstff            (.*, .en(i0_r_data_en & trace_enable),    .din(i0_inst_x[31:0]),         .dout(i0_inst_r[31:0]));
-
-   rvdffe #(32) i0wbinstff           (.*, .en(i0_wb_en & trace_enable),        .din(i0_inst_wb_in[31:0]),     .dout(i0_inst_wb[31:0]));
-   rvdffe #(31) i0wbpcff             (.*, .en(i0_wb_en & trace_enable),        .din(dec_tlu_i0_pc_r[31:1]),   .dout(  i0_pc_wb[31:1]));
-
-   assign dec_i0_inst_wb[31:0] = i0_inst_wb[31:0];
-   assign dec_i0_pc_wb[31:1] = i0_pc_wb[31:1];
-
-
-
-   rvdffpcie #(31) i0_pc_r_ff           (.*, .en(i0_r_data_en), .din(exu_i0_pc_x[31:1]), .dout(dec_i0_pc_r[31:1]));
-
-   assign dec_tlu_i0_pc_r[31:1]      = dec_i0_pc_r[31:1];
-
-
-   rvbradder ibradder_correct (
-                     .pc(exu_i0_pc_x[31:1]),
-                     .offset(last_br_immed_x[12:1]),
-                     .dout(pred_correct_npc_x[31:1]));
-
-
-
-   // add nonblock load rs1/rs2 bypass cases
-
-   assign i0_rs1_nonblock_load_bypass_en_d  = dec_i0_rs1_en_d & dec_nonblock_load_wen & (dec_nonblock_load_waddr[4:0] == i0r.rs1[4:0]);
-
-   assign i0_rs2_nonblock_load_bypass_en_d  = dec_i0_rs2_en_d & dec_nonblock_load_wen & (dec_nonblock_load_waddr[4:0] == i0r.rs2[4:0]);
-
-
-
-   // bit 2 is priority match, bit 0 lowest priority, i0_x, i0_r
-
-   assign i0_rs1bypass[2]                =  i0_rs1_depth_d[0] & (i0_rs1_class_d.alu | i0_rs1_class_d.mul                      );
-   assign i0_rs1bypass[1]                =  i0_rs1_depth_d[0] & (                                          i0_rs1_class_d.load);
-   assign i0_rs1bypass[0]                =  i0_rs1_depth_d[1] & (i0_rs1_class_d.alu | i0_rs1_class_d.mul | i0_rs1_class_d.load);
-
-   assign i0_rs2bypass[2]                =  i0_rs2_depth_d[0] & (i0_rs2_class_d.alu | i0_rs2_class_d.mul                      );
-   assign i0_rs2bypass[1]                =  i0_rs2_depth_d[0] & (                                          i0_rs2_class_d.load);
-   assign i0_rs2bypass[0]                =  i0_rs2_depth_d[1] & (i0_rs2_class_d.alu | i0_rs2_class_d.mul | i0_rs2_class_d.load);
-
-
-   assign dec_i0_rs1_bypass_en_d[3]      =  i0_rs1_nonblock_load_bypass_en_d & ~i0_rs1bypass[0] & ~i0_rs1bypass[1] & ~i0_rs1bypass[2];
-   assign dec_i0_rs1_bypass_en_d[2]      =  i0_rs1bypass[2];
-   assign dec_i0_rs1_bypass_en_d[1]      =  i0_rs1bypass[1];
-   assign dec_i0_rs1_bypass_en_d[0]      =  i0_rs1bypass[0];
-
-   assign dec_i0_rs2_bypass_en_d[3]      =  i0_rs2_nonblock_load_bypass_en_d & ~i0_rs2bypass[0] & ~i0_rs2bypass[1] & ~i0_rs2bypass[2];
-   assign dec_i0_rs2_bypass_en_d[2]      =  i0_rs2bypass[2];
-   assign dec_i0_rs2_bypass_en_d[1]      =  i0_rs2bypass[1];
-   assign dec_i0_rs2_bypass_en_d[0]      =  i0_rs2bypass[0];
-
-
-   assign dec_i0_result_r[31:0]          =  i0_result_r[31:0];
-
-
-endmodule // eb1_dec_decode_ctl
-
-
-
-
-
-// file "decode" is human readable file that has all of the instruction decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "decode" except legal equation:
-
-// 1) coredecode -in decode > coredecode.e
-
-// 2) espresso -Dso -oeqntott coredecode.e | addassign -pre out.  > equations
-
-// to generate the legal (32b instruction is legal) equation below:
-
-// 1) coredecode -in decode -legal > legal.e
-
-// 2) espresso -Dso -oeqntott legal.e | addassign -pre out. > legal_equation
-
-module eb1_dec_dec_ctl
-import eb1_pkg::*;
-  (
-   input logic [31:0] inst,
-
-   output eb1_dec_pkt_t out
-   );
-
-   logic [31:0] i;
-
-
-   assign i[31:0] = inst[31:0];
-
-
-assign out.alu = (i[30]&i[24]&i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[5]&i[4]) | (i[29]
-    &!i[27]&!i[24]&i[4]) | (!i[25]&!i[13]&!i[12]&i[4]) | (!i[30]&!i[25]
-    &i[13]&i[12]) | (i[27]&i[25]&i[14]&i[4]) | (i[29]&i[27]&!i[14]&i[4]) | (
-    i[29]&!i[14]&i[5]&i[4]) | (!i[27]&!i[25]&i[14]&i[4]) | (i[30]&!i[29]
-    &!i[13]&i[4]) | (!i[30]&!i[27]&!i[25]&i[4]) | (i[13]&!i[5]&i[4]) | (
-    !i[12]&!i[5]&i[4]) | (i[2]) | (i[6]) | (i[30]&i[24]&i[23]&i[22]&i[21]
-    &i[20]&!i[5]&i[4]) | (!i[30]&i[29]&!i[24]&!i[23]&i[22]&i[21]&i[20]
-    &!i[5]&i[4]) | (!i[30]&i[24]&!i[23]&!i[22]&!i[21]&!i[20]&!i[5]&i[4]);
-
-assign out.rs1 = (!i[14]&!i[13]&!i[2]) | (!i[13]&i[11]&!i[2]) | (i[19]&i[13]&!i[2]) | (
-    !i[13]&i[10]&!i[2]) | (i[18]&i[13]&!i[2]) | (!i[13]&i[9]&!i[2]) | (
-    i[17]&i[13]&!i[2]) | (!i[13]&i[8]&!i[2]) | (i[16]&i[13]&!i[2]) | (
-    !i[13]&i[7]&!i[2]) | (i[15]&i[13]&!i[2]) | (!i[4]&!i[3]) | (!i[6]
-    &!i[2]);
-
-assign out.rs2 = (i[5]&!i[4]&!i[2]) | (!i[6]&i[5]&!i[2]);
-
-assign out.imm12 = (!i[4]&!i[3]&i[2]) | (i[13]&!i[5]&i[4]&!i[2]) | (!i[13]&!i[12]
-    &i[6]&i[4]) | (!i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.rd = (!i[5]&!i[2]) | (i[5]&i[2]) | (i[4]);
-
-assign out.shimm5 = (i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]) | (i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.imm20 = (i[5]&i[3]) | (i[4]&i[2]);
-
-assign out.pc = (!i[5]&!i[3]&i[2]) | (i[5]&i[3]);
-
-assign out.load = (!i[5]&!i[4]&!i[2]);
-
-assign out.store = (!i[6]&i[5]&!i[4]);
-
-assign out.lsu = (!i[6]&!i[4]&!i[2]);
-
-assign out.add = (!i[14]&!i[13]&!i[12]&!i[5]&i[4]) | (!i[5]&!i[3]&i[2]) | (!i[30]
-    &!i[25]&!i[14]&!i[13]&!i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sub = (i[30]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (!i[29]&!i[25]&!i[14]
-    &i[13]&!i[6]&i[4]&!i[2]) | (i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]) | (
-    !i[14]&i[13]&!i[5]&i[4]&!i[2]) | (i[6]&!i[4]&!i[2]);
-
-assign out.land = (!i[27]&!i[25]&i[14]&i[13]&i[12]&!i[6]&!i[2]) | (i[14]&i[13]&i[12]
-    &!i[5]&!i[2]);
-
-assign out.lor = (!i[6]&i[3]) | (!i[29]&!i[27]&!i[25]&i[14]&i[13]&!i[12]&!i[6]&!i[2]) | (
-    i[5]&i[4]&i[2]) | (!i[13]&!i[12]&i[6]&i[4]) | (i[14]&i[13]&!i[12]
-    &!i[5]&!i[2]);
-
-assign out.lxor = (!i[29]&!i[27]&!i[25]&i[14]&!i[13]&!i[12]&i[4]&!i[2]) | (i[14]
-    &!i[13]&!i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sll = (!i[29]&!i[27]&!i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sra = (i[30]&!i[29]&!i[27]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.srl = (!i[30]&!i[29]&!i[27]&!i[25]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.slt = (!i[29]&!i[25]&!i[14]&i[13]&!i[6]&i[4]&!i[2]) | (!i[14]&i[13]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.unsign = (!i[27]&i[25]&i[14]&i[12]&!i[6]&i[5]&!i[2]) | (!i[14]&i[13]
-    &i[12]&!i[5]&!i[2]) | (i[13]&i[6]&!i[4]&!i[2]) | (i[14]&!i[5]&!i[4]) | (
-    !i[25]&!i[14]&i[13]&i[12]&!i[6]&!i[2]) | (i[27]&i[25]&i[14]&i[13]
-    &!i[6]&i[5]&!i[2]);
-
-assign out.condbr = (i[6]&!i[4]&!i[2]);
-
-assign out.beq = (!i[14]&!i[12]&i[6]&!i[4]&!i[2]);
-
-assign out.bne = (!i[14]&i[12]&i[6]&!i[4]&!i[2]);
-
-assign out.bge = (i[14]&i[12]&i[5]&!i[4]&!i[2]);
-
-assign out.blt = (i[14]&!i[12]&i[5]&!i[4]&!i[2]);
-
-assign out.jal = (i[6]&i[2]);
-
-assign out.by = (!i[13]&!i[12]&!i[6]&!i[4]&!i[2]);
-
-assign out.half = (i[12]&!i[6]&!i[4]&!i[2]);
-
-assign out.word = (i[13]&!i[6]&!i[4]);
-
-assign out.csr_read = (i[13]&i[6]&i[4]) | (i[7]&i[6]&i[4]) | (i[8]&i[6]&i[4]) | (
-    i[9]&i[6]&i[4]) | (i[10]&i[6]&i[4]) | (i[11]&i[6]&i[4]);
-
-assign out.csr_clr = (i[15]&i[13]&i[12]&i[6]&i[4]) | (i[16]&i[13]&i[12]&i[6]&i[4]) | (
-    i[17]&i[13]&i[12]&i[6]&i[4]) | (i[18]&i[13]&i[12]&i[6]&i[4]) | (
-    i[19]&i[13]&i[12]&i[6]&i[4]);
-
-assign out.csr_set = (i[15]&!i[12]&i[6]&i[4]) | (i[16]&!i[12]&i[6]&i[4]) | (i[17]
-    &!i[12]&i[6]&i[4]) | (i[18]&!i[12]&i[6]&i[4]) | (i[19]&!i[12]&i[6]
-    &i[4]);
-
-assign out.csr_write = (!i[13]&i[12]&i[6]&i[4]);
-
-assign out.csr_imm = (i[14]&!i[13]&i[6]&i[4]) | (i[15]&i[14]&i[6]&i[4]) | (i[16]
-    &i[14]&i[6]&i[4]) | (i[17]&i[14]&i[6]&i[4]) | (i[18]&i[14]&i[6]&i[4]) | (
-    i[19]&i[14]&i[6]&i[4]);
-
-assign out.presync = (!i[5]&i[3]) | (!i[13]&i[7]&i[6]&i[4]) | (!i[13]&i[8]&i[6]&i[4]) | (
-    !i[13]&i[9]&i[6]&i[4]) | (!i[13]&i[10]&i[6]&i[4]) | (!i[13]&i[11]
-    &i[6]&i[4]) | (i[15]&i[13]&i[6]&i[4]) | (i[16]&i[13]&i[6]&i[4]) | (
-    i[17]&i[13]&i[6]&i[4]) | (i[18]&i[13]&i[6]&i[4]) | (i[19]&i[13]&i[6]
-    &i[4]);
-
-assign out.postsync = (i[12]&!i[5]&i[3]) | (!i[22]&!i[13]&!i[12]&i[6]&i[4]) | (
-    !i[13]&i[7]&i[6]&i[4]) | (!i[13]&i[8]&i[6]&i[4]) | (!i[13]&i[9]&i[6]
-    &i[4]) | (!i[13]&i[10]&i[6]&i[4]) | (!i[13]&i[11]&i[6]&i[4]) | (
-    i[15]&i[13]&i[6]&i[4]) | (i[16]&i[13]&i[6]&i[4]) | (i[17]&i[13]&i[6]
-    &i[4]) | (i[18]&i[13]&i[6]&i[4]) | (i[19]&i[13]&i[6]&i[4]);
-
-assign out.ebreak = (!i[22]&i[20]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.ecall = (!i[21]&!i[20]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.mret = (i[29]&!i[13]&!i[12]&i[6]&i[4]);
-
-assign out.mul = (!i[30]&i[27]&i[24]&i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[29]&i[27]&!i[24]&i[23]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[29]&i[27]&!i[24]&!i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&i[27]&i[13]
-    &!i[6]&i[5]&i[4]&!i[2]) | (i[29]&i[27]&i[22]&!i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&!i[21]&i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&!i[22]&i[21]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (i[30]&i[29]&i[27]&!i[23]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[27]&i[23]&i[14]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]) | (!i[30]&!i[29]&i[27]&!i[25]&!i[13]&i[12]&!i[6]
-    &i[4]&!i[2]) | (i[25]&!i[14]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&!i[27]
-    &i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[29]&i[27]&i[14]
-    &!i[6]&i[5]&!i[2]);
-
-assign out.rs1_sign = (!i[27]&i[25]&!i[14]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]) | (
-    !i[27]&i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.rs2_sign = (!i[27]&i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.low = (i[25]&!i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.div = (!i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]);
-
-assign out.rem = (!i[27]&i[25]&i[14]&i[13]&!i[6]&i[5]&!i[2]);
-
-assign out.fence = (!i[5]&i[3]);
-
-assign out.fence_i = (i[12]&!i[5]&i[3]);
-
-assign out.clz = (i[30]&!i[27]&!i[24]&!i[22]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.ctz = (i[30]&!i[27]&!i[24]&!i[22]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.pcnt = (i[30]&!i[27]&!i[24]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sext_b = (i[30]&!i[27]&i[22]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.sext_h = (i[30]&!i[27]&i[22]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.slo = (!i[30]&i[29]&!i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sro = (!i[30]&i[29]&!i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.min = (i[27]&i[25]&i[14]&!i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.max = (i[27]&i[25]&i[14]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.pack = (!i[30]&i[27]&!i[25]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.packu = (i[30]&i[27]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.packh = (!i[30]&i[27]&!i[25]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.rol = (i[30]&!i[27]&!i[14]&i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.ror = (i[30]&i[29]&!i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbb = (i[30]&!i[27]&!i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    !i[30]&i[27]&i[14]&i[13]&i[12]&!i[6]&i[5]&!i[2]) | (i[30]&i[29]&!i[27]
-    &i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[27]&!i[13]&!i[12]&i[5]
-    &i[4]&!i[2]) | (i[30]&i[14]&!i[13]&!i[12]&!i[6]&i[5]&!i[2]) | (i[30]
-    &!i[27]&i[13]&!i[6]&i[5]&i[4]&!i[2]) | (i[30]&i[29]&!i[27]&!i[6]&i[5]
-    &i[4]&!i[2]) | (i[30]&i[29]&i[24]&i[23]&i[22]&i[21]&i[20]&i[14]&!i[13]
-    &i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[29]&i[27]&!i[24]&!i[23]&i[22]
-    &i[21]&i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&i[27]
-    &i[24]&!i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (
-    i[30]&i[29]&i[24]&i[23]&!i[22]&!i[21]&!i[20]&i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]) | (i[27]&i[25]&i[14]&!i[6]&i[5]&!i[2]);
-
-assign out.sbset = (!i[30]&i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbclr = (i[30]&!i[29]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbinv = (i[30]&i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.sbext = (i[30]&!i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbs = (i[29]&i[27]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]) | (i[30]&!i[29]
-    &i[27]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.bext = (!i[30]&i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.bdep = (i[30]&i[27]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.zbe = (i[27]&!i[25]&i[13]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.clmul = (i[27]&i[25]&!i[14]&!i[13]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.clmulh = (i[27]&!i[14]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.clmulr = (i[27]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.zbc = (i[27]&i[25]&!i[14]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.grev = (i[30]&i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.gorc = (!i[30]&i[29]&i[27]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.shfl = (!i[30]&!i[29]&i[27]&!i[25]&!i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.unshfl = (!i[30]&!i[29]&i[27]&!i[25]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.zbp = (!i[30]&i[29]&!i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (!i[30]&!i[29]
-    &i[27]&!i[13]&i[12]&!i[5]&i[4]&!i[2]) | (i[30]&!i[27]&i[13]&!i[6]
-    &i[5]&i[4]&!i[2]) | (i[27]&!i[25]&!i[13]&!i[12]&i[5]&i[4]&!i[2]) | (
-    i[30]&i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]) | (i[29]&!i[27]&i[12]&!i[6]
-    &i[5]&i[4]&!i[2]) | (!i[30]&!i[29]&i[27]&!i[25]&i[12]&!i[6]&i[5]&i[4]
-    &!i[2]) | (i[29]&i[14]&!i[13]&i[12]&!i[6]&i[4]&!i[2]);
-
-assign out.crc32_b = (i[30]&!i[27]&i[24]&!i[23]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]
-    &!i[5]&i[4]&!i[2]);
-
-assign out.crc32_h = (i[30]&!i[27]&i[24]&!i[23]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.crc32_w = (i[30]&!i[27]&i[24]&!i[23]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]
-    &!i[2]);
-
-assign out.crc32c_b = (i[30]&!i[27]&i[23]&!i[21]&!i[20]&!i[14]&!i[13]&i[12]&!i[5]
-    &i[4]&!i[2]);
-
-assign out.crc32c_h = (i[30]&!i[27]&i[23]&i[20]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.crc32c_w = (i[30]&!i[27]&i[23]&i[21]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.zbr = (i[30]&!i[27]&i[24]&!i[14]&!i[13]&i[12]&!i[5]&i[4]&!i[2]);
-
-assign out.bfp = (i[30]&i[27]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.zbf = (i[30]&i[27]&i[13]&i[12]&!i[6]&i[5]&!i[2]);
-
-assign out.sh1add = (i[29]&!i[14]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.sh2add = (i[29]&i[14]&!i[13]&!i[12]&i[5]&i[4]&!i[2]);
-
-assign out.sh3add = (i[29]&i[14]&i[13]&!i[6]&i[5]&!i[2]);
-
-assign out.zba = (i[29]&!i[12]&!i[6]&i[5]&i[4]&!i[2]);
-
-assign out.pm_alu = (i[28]&i[22]&!i[13]&!i[12]&i[4]) | (!i[30]&!i[29]&!i[27]&!i[25]
-    &!i[6]&i[4]) | (!i[29]&!i[27]&!i[25]&!i[13]&i[12]&!i[6]&i[4]) | (
-    !i[29]&!i[27]&!i[25]&!i[14]&!i[6]&i[4]) | (i[13]&!i[5]&i[4]) | (i[4]
-    &i[2]) | (!i[12]&!i[5]&i[4]);
-
-
-assign out.legal = (!i[31]&!i[30]&!i[29]&i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]
-    &i[22]&!i[21]&i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]
-    &!i[10]&!i[9]&!i[8]&!i[7]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&i[29]&i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]
-    &i[21]&!i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]&!i[10]
-    &!i[9]&!i[8]&!i[7]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[31]
-    &!i[30]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]&!i[21]
-    &!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[11]&!i[10]&!i[9]&!i[8]
-    &!i[7]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&!i[26]
-    &!i[25]&i[24]&!i[22]&!i[20]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[31]&i[29]&!i[28]&!i[26]&!i[25]&i[24]&!i[22]&!i[21]&!i[6]&!i[5]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&!i[26]&!i[25]&!i[23]
-    &!i[22]&!i[20]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]
-    &!i[28]&!i[26]&!i[25]&!i[24]&!i[23]&!i[21]&!i[6]&!i[5]&i[4]&!i[3]
-    &i[1]&i[0]) | (!i[31]&!i[30]&!i[29]&!i[28]&!i[26]&i[25]&i[13]&!i[6]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[26]&!i[25]&!i[24]
-    &!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[27]
-    &!i[26]&!i[25]&i[14]&!i[12]&!i[6]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]
-    &!i[30]&!i[28]&!i[27]&!i[26]&!i[25]&i[13]&!i[12]&!i[6]&i[4]&!i[3]
-    &i[1]&i[0]) | (!i[31]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[13]&!i[12]
-    &!i[6]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[28]&!i[27]&!i[26]&!i[25]
-    &i[14]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[29]
-    &!i[28]&!i[26]&!i[13]&i[12]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[26]&i[14]&!i[6]&i[5]&i[4]&!i[3]&i[1]
-    &i[0]) | (!i[31]&i[30]&!i[28]&i[27]&!i[26]&!i[25]&!i[13]&i[12]&!i[6]
-    &i[4]&!i[3]&i[1]&i[0]) | (!i[31]&i[29]&!i[28]&i[27]&!i[26]&!i[25]
-    &!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]&!i[28]&!i[27]
-    &!i[26]&!i[25]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[30]
-    &!i[29]&!i[28]&!i[27]&!i[26]&!i[6]&i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[14]&!i[13]&!i[12]&i[6]&i[5]&!i[4]&!i[3]&i[1]&i[0]) | (!i[31]&!i[29]
-    &!i[28]&!i[26]&!i[25]&i[14]&!i[6]&i[5]&i[4]&!i[3]&i[1]&i[0]) | (
-    !i[31]&i[29]&!i[28]&!i[26]&!i[25]&!i[13]&i[12]&i[5]&i[4]&!i[3]&!i[2]
-    &i[1]&i[0]) | (i[14]&i[6]&i[5]&!i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[14]
-    &!i[13]&i[5]&!i[4]&!i[3]&!i[2]&i[1]&i[0]) | (!i[12]&!i[6]&!i[5]&i[4]
-    &!i[3]&i[1]&i[0]) | (!i[13]&i[12]&i[6]&i[5]&!i[3]&!i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[27]&!i[26]&!i[25]&!i[24]&!i[23]&!i[22]
-    &!i[21]&!i[20]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]&!i[13]&!i[11]
-    &!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]&i[3]&i[2]&i[1]&i[0]) | (
-    !i[31]&!i[30]&!i[29]&!i[28]&!i[19]&!i[18]&!i[17]&!i[16]&!i[15]&!i[14]
-    &!i[13]&!i[12]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]&i[3]
-    &i[2]&i[1]&i[0]) | (i[13]&i[6]&i[5]&i[4]&!i[3]&!i[2]&i[1]&i[0]) | (
-    i[6]&i[5]&!i[4]&i[3]&i[2]&i[1]&i[0]) | (!i[14]&!i[12]&!i[6]&!i[4]
-    &!i[3]&!i[2]&i[1]&i[0]) | (!i[13]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]
-    &i[0]) | (i[13]&!i[6]&!i[5]&i[4]&!i[3]&i[1]&i[0]) | (!i[6]&i[4]&!i[3]
-    &i[2]&i[1]&i[0]);
-
-
-endmodule // eb1_dec_dec_ctl
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-module eb1_dec_gpr_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})  (
-    input logic [4:0]  raddr0,       // logical read addresses
-    input logic [4:0]  raddr1,
-
-    input logic        wen0,         // write enable
-    input logic [4:0]  waddr0,       // write address
-    input logic [31:0] wd0,          // write data
-
-    input logic        wen1,         // write enable
-    input logic [4:0]  waddr1,       // write address
-    input logic [31:0] wd1,          // write data
-
-    input logic        wen2,         // write enable
-    input logic [4:0]  waddr2,       // write address
-    input logic [31:0] wd2,          // write data
-
-    input logic        clk,
-    input logic        rst_l,
-
-    output logic [31:0] rd0,         // read data
-    output logic [31:0] rd1,
-
-    input  logic        scan_mode
-);
-
-   logic [31:1] [31:0] gpr_out;      // 31 x 32 bit GPRs
-   logic [31:1] [31:0] gpr_in;
-   logic [31:1] w0v,w1v,w2v;
-   logic [31:1] gpr_wr_en;
-
-   // GPR Write Enables
-   assign gpr_wr_en[31:1] = (w0v[31:1] | w1v[31:1] | w2v[31:1]);
-   for ( genvar j=1; j<32; j++ )  begin : gpr
-      rvdffe #(32) gprff (.*, .en(gpr_wr_en[j]), .din(gpr_in[j][31:0]), .dout(gpr_out[j][31:0]));
-   end : gpr
-
-   // the read out
-   always_comb begin
-      rd0[31:0] = 32'b0;
-      rd1[31:0] = 32'b0;
-      w0v[31:1] = 31'b0;
-      w1v[31:1] = 31'b0;
-      w2v[31:1] = 31'b0;
-      gpr_in[31:1] = '0;
-
-      // GPR Read logic
-      for (int j=1; j<32; j++ )  begin
-         rd0[31:0] |= ({32{(raddr0[4:0]== 5'(j))}} & gpr_out[j][31:0]);
-         rd1[31:0] |= ({32{(raddr1[4:0]== 5'(j))}} & gpr_out[j][31:0]);
-      end
-
-     // GPR Write logic
-     for (int j=1; j<32; j++ )  begin
-         w0v[j]     = wen0  & (waddr0[4:0]== 5'(j) );
-         w1v[j]     = wen1  & (waddr1[4:0]== 5'(j) );
-         w2v[j]     = wen2  & (waddr2[4:0]== 5'(j) );
-         gpr_in[j]  =    ({32{w0v[j]}} & wd0[31:0]) |
-                         ({32{w1v[j]}} & wd1[31:0]) |
-                         ({32{w2v[j]}} & wd2[31:0]);
-     end
-   end // always_comb begin
-
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-module eb1_dec_ib_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic                 dbg_cmd_valid,                      // valid dbg cmd
-
-   input logic                 dbg_cmd_write,                      // dbg cmd is write
-   input logic [1:0]           dbg_cmd_type,                       // dbg type
-   input logic [31:0]          dbg_cmd_addr,                       // expand to 31:0
-
-   input eb1_br_pkt_t i0_brp,                                     // i0 branch packet from aligner
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index,    // BP index
-   input logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr,               // BP FGHR
-   input logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag,              // BP tag
-   input logic [$clog2(pt.BTB_SIZE)-1:0] ifu_i0_fa_index,          // Fully associt btb index
-
-   input logic       ifu_i0_pc4,                                   // i0 is 4B inst else 2B
-   input logic       ifu_i0_valid,                                 // i0 valid from ifu
-   input logic       ifu_i0_icaf,                                  // i0 instruction access fault
-   input logic [1:0] ifu_i0_icaf_type,                             // i0 instruction access fault type
-
-   input logic   ifu_i0_icaf_second,                               // i0 has access fault on second 2B of 4B inst
-   input logic   ifu_i0_dbecc,                                     // i0 double-bit error
-   input logic [31:0]  ifu_i0_instr,                               // i0 instruction from the aligner
-   input logic [31:1]  ifu_i0_pc,                                  // i0 pc from the aligner
-
-
-   output logic dec_ib0_valid_d,                                   // ib0 valid
-   output logic dec_debug_valid_d,                                 // Debug read or write at D-stage
-
-
-   output logic [31:0] dec_i0_instr_d,                             // i0 inst at decode
-
-   output logic [31:1] dec_i0_pc_d,                                // i0 pc at decode
-
-   output logic dec_i0_pc4_d,                                      // i0 is 4B inst else 2B
-
-   output eb1_br_pkt_t dec_i0_brp,                                // i0 branch packet at decode
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_i0_bp_index,   // i0 branch index
-   output logic [pt.BHT_GHR_SIZE-1:0] dec_i0_bp_fghr,              // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0] dec_i0_bp_btag,             // BP tag
-   output logic [$clog2(pt.BTB_SIZE)-1:0] dec_i0_bp_fa_index,          // Fully associt btb index
-
-   output logic dec_i0_icaf_d,                                     // i0 instruction access fault at decode
-   output logic dec_i0_icaf_second_d,                              // i0 instruction access fault on second 2B of 4B inst
-   output logic [1:0] dec_i0_icaf_type_d,                          // i0 instruction access fault type
-   output logic dec_i0_dbecc_d,                                    // i0 double-bit error at decode
-   output logic dec_debug_wdata_rs1_d,                             // put debug write data onto rs1 source: machine is halted
-
-   output logic dec_debug_fence_d                                  // debug fence inst
-
-   );
-
-
-   logic         debug_valid;
-   logic [4:0]   dreg;
-   logic [11:0]  dcsr;
-   logic [31:0]  ib0, ib0_debug_in;
-
-   logic         debug_read;
-   logic         debug_write;
-   logic         debug_read_gpr;
-   logic         debug_write_gpr;
-   logic         debug_read_csr;
-   logic         debug_write_csr;
-
-   logic [34:0]  ifu_i0_pcdata, pc0;
-
-   assign ifu_i0_pcdata[34:0] = { ifu_i0_icaf_second, ifu_i0_dbecc, ifu_i0_icaf,
-                                  ifu_i0_pc[31:1], ifu_i0_pc4 };
-
-   assign pc0[34:0] = ifu_i0_pcdata[34:0];
-
-   assign dec_i0_icaf_second_d = pc0[34];   // icaf's can only decode as i0
-
-   assign dec_i0_dbecc_d = pc0[33];
-
-   assign dec_i0_icaf_d = pc0[32];
-   assign dec_i0_pc_d[31:1] = pc0[31:1];
-   assign dec_i0_pc4_d = pc0[0];
-
-   assign dec_i0_icaf_type_d[1:0] = ifu_i0_icaf_type[1:0];
-
-// GPR accesses
-
-// put reg to read on rs1
-// read ->   or %x0,  %reg,%x0      {000000000000,reg[4:0],110000000110011}
-
-// put write date on rs1
-// write ->  or %reg, %x0, %x0      {00000000000000000110,reg[4:0],0110011}
-
-
-// CSR accesses
-// csr is of form rd, csr, rs1
-
-// read  -> csrrs %x0, %csr, %x0     {csr[11:0],00000010000001110011}
-
-// put write data on rs1
-// write -> csrrw %x0, %csr, %x0     {csr[11:0],00000001000001110011}
-
-// abstract memory command not done here
-   assign debug_valid = dbg_cmd_valid & (dbg_cmd_type[1:0] != 2'h2);
-
-
-   assign debug_read  = debug_valid & ~dbg_cmd_write;
-   assign debug_write = debug_valid &  dbg_cmd_write;
-
-   assign debug_read_gpr  = debug_read  & (dbg_cmd_type[1:0]==2'h0);
-   assign debug_write_gpr = debug_write & (dbg_cmd_type[1:0]==2'h0);
-   assign debug_read_csr  = debug_read  & (dbg_cmd_type[1:0]==2'h1);
-   assign debug_write_csr = debug_write & (dbg_cmd_type[1:0]==2'h1);
-
-   assign dreg[4:0]  = dbg_cmd_addr[4:0];
-   assign dcsr[11:0] = dbg_cmd_addr[11:0];
-
-
-   assign ib0_debug_in[31:0] = ({32{debug_read_gpr}}  & {12'b000000000000,dreg[4:0],15'b110000000110011}) |
-                               ({32{debug_write_gpr}} & {20'b00000000000000000110,dreg[4:0],7'b0110011}) |
-                               ({32{debug_read_csr}}  & {dcsr[11:0],20'b00000010000001110011}) |
-                               ({32{debug_write_csr}} & {dcsr[11:0],20'b00000001000001110011});
-
-
-
-   // machine is in halted state, pipe empty, write will always happen next cycle
-
-   assign dec_debug_wdata_rs1_d = debug_write_gpr | debug_write_csr;
-
-
-   // special fence csr for use only in debug mode
-
-   assign dec_debug_fence_d = debug_write_csr & (dcsr[11:0] == 12'h7c4);
-
-   assign ib0[31:0] = (debug_valid) ? ib0_debug_in[31:0] : ifu_i0_instr[31:0];
-
-   assign dec_ib0_valid_d = ifu_i0_valid | debug_valid;
-
-   assign dec_debug_valid_d = debug_valid;
-
-   assign dec_i0_instr_d[31:0] = ib0[31:0];
-
-   assign dec_i0_brp = i0_brp;
-   assign dec_i0_bp_index = ifu_i0_bp_index;
-   assign dec_i0_bp_fghr = ifu_i0_bp_fghr;
-   assign dec_i0_bp_btag = ifu_i0_bp_btag;
-   assign dec_i0_bp_fa_index = ifu_i0_fa_index;
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or it's affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-//********************************************************************************
-// eb1_dec_tlu_ctl.sv
-//
-//
-// Function: CSRs, Commit/WB, flushing, exceptions, interrupts
-// Comments:
-//
-//********************************************************************************
-
-module eb1_dec_tlu_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic clk,
-   input logic free_clk,
-   input logic free_l2clk,
-   input logic rst_l,
-   input logic scan_mode,
-
-   input logic [31:1] rst_vec, // reset vector, from core pins
-   input logic        nmi_int, // nmi pin
-   input logic [31:1] nmi_vec, // nmi vector
-   input logic  i_cpu_halt_req,    // Asynchronous Halt request to CPU
-   input logic  i_cpu_run_req,     // Asynchronous Restart request to CPU
-
-   input logic lsu_fastint_stall_any,   // needed by lsu for 2nd pass of dma with ecc correction, stall next cycle
-
-
-   // perf counter inputs
-   input logic       ifu_pmu_instr_aligned,   // aligned instructions
-   input logic       ifu_pmu_fetch_stall, // fetch unit stalled
-   input logic       ifu_pmu_ic_miss, // icache miss
-   input logic       ifu_pmu_ic_hit, // icache hit
-   input logic       ifu_pmu_bus_error, // Instruction side bus error
-   input logic       ifu_pmu_bus_busy, // Instruction side bus busy
-   input logic       ifu_pmu_bus_trxn, // Instruction side bus transaction
-   input logic       dec_pmu_instr_decoded, // decoded instructions
-   input logic       dec_pmu_decode_stall, // decode stall
-   input logic       dec_pmu_presync_stall, // decode stall due to presync'd inst
-   input logic       dec_pmu_postsync_stall,// decode stall due to postsync'd inst
-   input logic       lsu_store_stall_any,    // SB or WB is full, stall decode
-   input logic       dma_dccm_stall_any,     // DMA stall of lsu
-   input logic       dma_iccm_stall_any,     // DMA stall of ifu
-   input logic       exu_pmu_i0_br_misp,     // pipe 0 branch misp
-   input logic       exu_pmu_i0_br_ataken,   // pipe 0 branch actual taken
-   input logic       exu_pmu_i0_pc4,         // pipe 0 4 byte branch
-   input logic       lsu_pmu_bus_trxn,       // D side bus transaction
-   input logic       lsu_pmu_bus_misaligned, // D side bus misaligned
-   input logic       lsu_pmu_bus_error,      // D side bus error
-   input logic       lsu_pmu_bus_busy,       // D side bus busy
-   input logic       lsu_pmu_load_external_m, // D side bus load
-   input logic       lsu_pmu_store_external_m, // D side bus store
-   input logic       dma_pmu_dccm_read,          // DMA DCCM read
-   input logic       dma_pmu_dccm_write,         // DMA DCCM write
-   input logic       dma_pmu_any_read,           // DMA read
-   input logic       dma_pmu_any_write,          // DMA write
-
-   input logic [31:1] lsu_fir_addr, // Fast int address
-   input logic [1:0] lsu_fir_error, // Fast int lookup error
-
-   input logic       iccm_dma_sb_error,      // I side dma single bit error
-
-   input    eb1_lsu_error_pkt_t lsu_error_pkt_r, // lsu precise exception/error packet
-   input logic         lsu_single_ecc_error_incr, // LSU inc SB error counter
-
-   input logic dec_pause_state, // Pause counter not zero
-   input logic         lsu_imprecise_error_store_any,      // store bus error
-   input logic         lsu_imprecise_error_load_any,      // store bus error
-   input logic [31:0]  lsu_imprecise_error_addr_any, // store bus error address
-
-   input logic        dec_csr_wen_unq_d,       // valid csr with write - for csr legal
-   input logic        dec_csr_any_unq_d,       // valid csr - for csr legal
-   input logic [11:0] dec_csr_rdaddr_d,      // read address for csr
-
-   input logic        dec_csr_wen_r,      // csr write enable at wb
-   input logic [11:0] dec_csr_wraddr_r,      // write address for csr
-   input logic [31:0] dec_csr_wrdata_r,   // csr write data at wb
-
-   input logic        dec_csr_stall_int_ff, // csr is mie/mstatus
-
-   input logic dec_tlu_i0_valid_r, // pipe 0 op at e4 is valid
-
-   input logic [31:1] exu_npc_r, // for NPC tracking
-
-   input logic [31:1] dec_tlu_i0_pc_r, // for PC/NPC tracking
-
-   input eb1_trap_pkt_t dec_tlu_packet_r, // exceptions known at decode
-
-   input logic [31:0] dec_illegal_inst, // For mtval
-   input logic        dec_i0_decode_d,  // decode valid, used for clean icache diagnostics
-
-   // branch info from pipe0 for errors or counter updates
-   input logic [1:0]  exu_i0_br_hist_r, // history
-   input logic        exu_i0_br_error_r, // error
-   input logic        exu_i0_br_start_error_r, // start error
-   input logic        exu_i0_br_valid_r, // valid
-   input logic        exu_i0_br_mp_r, // mispredict
-   input logic        exu_i0_br_middle_r, // middle of bank
-
-   // branch info from pipe1 for errors or counter updates
-
-   input logic             exu_i0_br_way_r, // way hit or repl
-
-   output logic dec_tlu_core_empty,  // core is empty
-   // Debug start
-   output logic dec_dbg_cmd_done, // abstract command done
-   output logic dec_dbg_cmd_fail, // abstract command failed
-   output logic dec_tlu_dbg_halted, // Core is halted and ready for debug command
-   output logic dec_tlu_debug_mode, // Core is in debug mode
-   output logic dec_tlu_resume_ack, // Resume acknowledge
-   output logic dec_tlu_debug_stall, // stall decode while waiting on core to empty
-
-   output logic dec_tlu_flush_noredir_r , // Tell fetch to idle on this flush
-   output logic dec_tlu_mpc_halted_only, // Core is halted only due to MPC
-   output logic dec_tlu_flush_leak_one_r, // single step
-   output logic dec_tlu_flush_err_r, // iside perr/ecc rfpc. This is the D stage of the error
-
-   output logic dec_tlu_flush_extint, // fast ext int started
-   output logic [31:2] dec_tlu_meihap, // meihap for fast int
-
-   input  logic dbg_halt_req, // DM requests a halt
-   input  logic dbg_resume_req, // DM requests a resume
-   input  logic ifu_miss_state_idle, // I-side miss buffer empty
-   input  logic lsu_idle_any, // lsu is idle
-   input  logic dec_div_active, // oop div is active
-   output eb1_trigger_pkt_t  [3:0] trigger_pkt_any, // trigger info for trigger blocks
-
-   input logic  ifu_ic_error_start,     // IC single bit error
-   input logic  ifu_iccm_rd_ecc_single_err, // ICCM single bit error
-
-
-   input logic [70:0] ifu_ic_debug_rd_data, // diagnostic icache read data
-   input logic ifu_ic_debug_rd_data_valid, // diagnostic icache read data valid
-   output eb1_cache_debug_pkt_t dec_tlu_ic_diag_pkt, // packet of DICAWICS, DICAD0/1, DICAGO info for icache diagnostics
-   // Debug end
-
-   input logic [7:0] pic_claimid, // pic claimid for csr
-   input logic [3:0] pic_pl, // pic priv level for csr
-   input logic       mhwakeup, // high priority external int, wakeup if halted
-
-   input logic mexintpend, // external interrupt pending
-   input logic timer_int, // timer interrupt pending
-   input logic soft_int, // software interrupt pending
-
-   output logic o_cpu_halt_status, // PMU interface, halted
-   output logic o_cpu_halt_ack, // halt req ack
-   output logic o_cpu_run_ack, // run req ack
-   output logic o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request
-
-   input logic [31:4] core_id, // Core ID
-
-   // external MPC halt/run interface
-   input logic mpc_debug_halt_req, // Async halt request
-   input logic mpc_debug_run_req, // Async run request
-   input logic mpc_reset_run_req, // Run/halt after reset
-   output logic mpc_debug_halt_ack, // Halt ack
-   output logic mpc_debug_run_ack, // Run ack
-   output logic debug_brkpt_status, // debug breakpoint
-
-   output logic [3:0] dec_tlu_meicurpl, // to PIC
-   output logic [3:0] dec_tlu_meipt, // to PIC
-
-
-   output logic [31:0] dec_csr_rddata_d,      // csr read data at wb
-   output logic dec_csr_legal_d,              // csr indicates legal operation
-
-   output eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // branch pkt to bp
-
-   output logic dec_tlu_i0_kill_writeb_wb,    // I0 is flushed, don't writeback any results to arch state
-   output logic dec_tlu_flush_lower_wb,       // commit has a flush (exception, int, mispredict at e4)
-   output logic dec_tlu_i0_commit_cmt,        // committed an instruction
-
-   output logic dec_tlu_i0_kill_writeb_r,    // I0 is flushed, don't writeback any results to arch state
-   output logic dec_tlu_flush_lower_r,       // commit has a flush (exception, int)
-   output logic [31:1] dec_tlu_flush_path_r, // flush pc
-   output logic dec_tlu_fence_i_r,           // flush is a fence_i rfnpc, flush icache
-   output logic dec_tlu_wr_pause_r,           // CSR write to pause reg is at R.
-   output logic dec_tlu_flush_pause_r,        // Flush is due to pause
-
-   output logic dec_tlu_presync_d,            // CSR read needs to be presync'd
-   output logic dec_tlu_postsync_d,           // CSR needs to be presync'd
-
-
-   output logic [31:0] dec_tlu_mrac_ff,        // CSR for memory region control
-
-   output logic dec_tlu_force_halt, // halt has been forced
-
-   output logic dec_tlu_perfcnt0, // toggles when pipe0 perf counter 0 has an event inc
-   output logic dec_tlu_perfcnt1, // toggles when pipe0 perf counter 1 has an event inc
-   output logic dec_tlu_perfcnt2, // toggles when pipe0 perf counter 2 has an event inc
-   output logic dec_tlu_perfcnt3, // toggles when pipe0 perf counter 3 has an event inc
-
-   output logic dec_tlu_i0_exc_valid_wb1, // pipe 0 exception valid
-   output logic dec_tlu_i0_valid_wb1,  // pipe 0 valid
-   output logic dec_tlu_int_valid_wb1, // pipe 2 int valid
-   output logic [4:0] dec_tlu_exc_cause_wb1, // exception or int cause
-   output logic [31:0] dec_tlu_mtval_wb1, // MTVAL value
-
-   // feature disable from mfdc
-   output logic  dec_tlu_external_ldfwd_disable, // disable external load forwarding
-   output logic  dec_tlu_sideeffect_posted_disable,  // disable posted stores to side-effect address
-   output logic  dec_tlu_core_ecc_disable, // disable core ECC
-   output logic  dec_tlu_bpred_disable,           // disable branch prediction
-   output logic  dec_tlu_wb_coalescing_disable,   // disable writebuffer coalescing
-   output logic  dec_tlu_pipelining_disable,      // disable pipelining
-   output logic  dec_tlu_trace_disable,           // disable trace
-   output logic [2:0]  dec_tlu_dma_qos_prty,    // DMA QoS priority coming from MFDC [18:16]
-
-   // clock gating overrides from mcgc
-   output logic  dec_tlu_misc_clk_override, // override misc clock domain gating
-   output logic  dec_tlu_dec_clk_override,  // override decode clock domain gating
-   output logic  dec_tlu_ifu_clk_override,  // override fetch clock domain gating
-   output logic  dec_tlu_lsu_clk_override,  // override load/store clock domain gating
-   output logic  dec_tlu_bus_clk_override,  // override bus clock domain gating
-   output logic  dec_tlu_pic_clk_override,  // override PIC clock domain gating
-   output logic  dec_tlu_picio_clk_override,// override PICIO clock domain gating
-   output logic  dec_tlu_dccm_clk_override, // override DCCM clock domain gating
-   output logic  dec_tlu_icm_clk_override   // override ICCM clock domain gating
-   );
-
-   logic         clk_override, e4e5_int_clk, nmi_fir_type, nmi_lsu_load_type, nmi_lsu_store_type, nmi_int_detected_f, nmi_lsu_load_type_f,
-                 nmi_lsu_store_type_f, allow_dbg_halt_csr_write, dbg_cmd_done_ns, i_cpu_run_req_d1_raw, debug_mode_status, lsu_single_ecc_error_r_d1,
-                 sel_npc_r, sel_npc_resume, ce_int,
-                 nmi_in_debug_mode, dpc_capture_npc, dpc_capture_pc, tdata_load, tdata_opcode, tdata_action, perfcnt_halted, tdata_chain,
-                 tdata_kill_write;
-
-
-   logic reset_delayed, reset_detect, reset_detected;
-   logic wr_mstatus_r, wr_mtvec_r, wr_mcyclel_r, wr_mcycleh_r,
-         wr_minstretl_r, wr_minstreth_r, wr_mscratch_r, wr_mepc_r, wr_mcause_r, wr_mscause_r, wr_mtval_r,
-         wr_mrac_r, wr_meihap_r, wr_meicurpl_r, wr_meipt_r, wr_dcsr_r,
-         wr_dpc_r, wr_meicidpl_r, wr_meivt_r, wr_meicpct_r, wr_micect_r, wr_miccmect_r, wr_mfdht_r, wr_mfdhs_r,
-         wr_mdccmect_r,wr_mhpme3_r, wr_mhpme4_r, wr_mhpme5_r, wr_mhpme6_r;
-   logic wr_mpmc_r;
-   logic [1:1] mpmc_b_ns, mpmc, mpmc_b;
-   logic set_mie_pmu_fw_halt, fw_halted_ns, fw_halted;
-   logic wr_mcountinhibit_r;
-   logic [6:0] mcountinhibit;
-   logic wr_mtsel_r, wr_mtdata1_t0_r, wr_mtdata1_t1_r, wr_mtdata1_t2_r, wr_mtdata1_t3_r, wr_mtdata2_t0_r, wr_mtdata2_t1_r, wr_mtdata2_t2_r, wr_mtdata2_t3_r;
-   logic [31:0] mtdata2_t0, mtdata2_t1, mtdata2_t2, mtdata2_t3, mtdata2_tsel_out, mtdata1_tsel_out;
-   logic [9:0]  mtdata1_t0_ns, mtdata1_t0, mtdata1_t1_ns, mtdata1_t1, mtdata1_t2_ns, mtdata1_t2, mtdata1_t3_ns, mtdata1_t3;
-   logic [9:0] tdata_wrdata_r;
-   logic [1:0] mtsel_ns, mtsel;
-   logic tlu_i0_kill_writeb_r;
-   logic [1:0]  mstatus_ns, mstatus;
-   logic [1:0] mfdhs_ns, mfdhs;
-   logic [31:0] force_halt_ctr, force_halt_ctr_f;
-   logic        force_halt;
-   logic [5:0]  mfdht, mfdht_ns;
-   logic mstatus_mie_ns;
-   logic [30:0] mtvec_ns, mtvec;
-   logic [15:2] dcsr_ns, dcsr;
-   logic [5:0] mip_ns, mip;
-   logic [5:0] mie_ns, mie;
-   logic [31:0] mcyclel_ns, mcyclel;
-   logic [31:0] mcycleh_ns, mcycleh;
-   logic [31:0] minstretl_ns, minstretl;
-   logic [31:0] minstreth_ns, minstreth;
-   logic [31:0] micect_ns, micect, miccmect_ns, miccmect, mdccmect_ns, mdccmect;
-   logic [26:0] micect_inc, miccmect_inc, mdccmect_inc;
-   logic [31:0] mscratch;
-   logic [31:0] mhpmc3, mhpmc3_ns, mhpmc4, mhpmc4_ns, mhpmc5, mhpmc5_ns, mhpmc6, mhpmc6_ns;
-   logic [31:0] mhpmc3h, mhpmc3h_ns, mhpmc4h, mhpmc4h_ns, mhpmc5h, mhpmc5h_ns, mhpmc6h, mhpmc6h_ns;
-   logic [9:0]  mhpme3, mhpme4, mhpme5, mhpme6;
-   logic [31:0] mrac;
-   logic [9:2] meihap;
-   logic [31:10] meivt;
-   logic [3:0] meicurpl_ns, meicurpl;
-   logic [3:0] meicidpl_ns, meicidpl;
-   logic [3:0] meipt_ns, meipt;
-   logic [31:0] mdseac;
-   logic mdseac_locked_ns, mdseac_locked_f, mdseac_en, nmi_lsu_detected;
-   logic [31:1] mepc_ns, mepc;
-   logic [31:1] dpc_ns, dpc;
-   logic [31:0] mcause_ns, mcause;
-   logic [3:0] mscause_ns, mscause, mscause_type;
-   logic [31:0] mtval_ns, mtval;
-   logic dec_pause_state_f, dec_tlu_wr_pause_r_d1, pause_expired_r, pause_expired_wb;
-   logic        tlu_flush_lower_r, tlu_flush_lower_r_d1;
-   logic [31:1] tlu_flush_path_r,  tlu_flush_path_r_d1;
-   logic i0_valid_wb;
-   logic tlu_i0_commit_cmt;
-   logic [31:1] vectored_path, interrupt_path;
-   logic [16:0] dicawics_ns, dicawics;
-   logic        wr_dicawics_r, wr_dicad0_r, wr_dicad1_r, wr_dicad0h_r;
-   logic [31:0] dicad0_ns, dicad0, dicad0h_ns, dicad0h;
-
-   logic [6:0]  dicad1_ns, dicad1_raw;
-   logic [31:0] dicad1;
-   logic        ebreak_r, ebreak_to_debug_mode_r, ecall_r, illegal_r, mret_r, inst_acc_r, fence_i_r,
-                ic_perr_r, iccm_sbecc_r, ebreak_to_debug_mode_r_d1, kill_ebreak_count_r, inst_acc_second_r;
-   logic ce_int_ready, ext_int_ready, timer_int_ready, soft_int_ready, int_timer0_int_ready, int_timer1_int_ready, mhwakeup_ready,
-         take_ext_int, take_ce_int, take_timer_int, take_soft_int, take_int_timer0_int, take_int_timer1_int, take_nmi, take_nmi_r_d1, int_timer0_int_possible, int_timer1_int_possible;
-   logic i0_exception_valid_r, interrupt_valid_r, i0_exception_valid_r_d1, interrupt_valid_r_d1, exc_or_int_valid_r, exc_or_int_valid_r_d1, mdccme_ce_req, miccme_ce_req, mice_ce_req;
-   logic synchronous_flush_r;
-   logic [4:0]  exc_cause_r, exc_cause_wb;
-   logic        mcyclel_cout, mcyclel_cout_f, mcyclela_cout;
-   logic [31:0] mcyclel_inc;
-   logic [31:0] mcycleh_inc;
-
-   logic        minstretl_cout, minstretl_cout_f, minstret_enable, minstretl_cout_ns, minstretl_couta;
-
-   logic [31:0] minstretl_inc, minstretl_read;
-   logic [31:0] minstreth_inc, minstreth_read;
-   logic [31:1] pc_r, pc_r_d1, npc_r, npc_r_d1;
-   logic valid_csr;
-   logic rfpc_i0_r;
-   logic lsu_i0_rfnpc_r;
-   logic dec_tlu_br0_error_r, dec_tlu_br0_start_error_r, dec_tlu_br0_v_r;
-   logic lsu_i0_exc_r, lsu_i0_exc_r_raw, lsu_exc_ma_r, lsu_exc_acc_r, lsu_exc_st_r,
-         lsu_exc_valid_r, lsu_exc_valid_r_raw, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1, block_interrupts;
-   logic i0_trigger_eval_r;
-
-   logic request_debug_mode_r, request_debug_mode_r_d1, request_debug_mode_done, request_debug_mode_done_f;
-   logic take_halt, halt_taken, halt_taken_f, internal_dbg_halt_mode, dbg_tlu_halted_f, take_reset,
-         dbg_tlu_halted, core_empty, lsu_idle_any_f, ifu_miss_state_idle_f, resume_ack_ns,
-         debug_halt_req_f, debug_resume_req_f_raw, debug_resume_req_f, enter_debug_halt_req, dcsr_single_step_done, dcsr_single_step_done_f,
-         debug_halt_req_d1, debug_halt_req_ns, dcsr_single_step_running, dcsr_single_step_running_f, internal_dbg_halt_timers;
-
-   logic [3:0] i0_trigger_r, trigger_action, trigger_enabled,
-               i0_trigger_chain_masked_r;
-   logic       i0_trigger_hit_r, i0_trigger_hit_raw_r, i0_trigger_action_r,
-               trigger_hit_r_d1,
-               mepc_trigger_hit_sel_pc_r;
-   logic [3:0] update_hit_bit_r, i0_iside_trigger_has_pri_r,i0trigger_qual_r, i0_lsu_trigger_has_pri_r;
-   logic cpu_halt_status, cpu_halt_ack, cpu_run_ack, ext_halt_pulse, i_cpu_halt_req_d1, i_cpu_run_req_d1;
-
-   logic inst_acc_r_raw, trigger_hit_dmode_r, trigger_hit_dmode_r_d1;
-   logic [9:0] mcgc, mcgc_ns, mcgc_int;
-   logic [18:0] mfdc;
-   logic i_cpu_halt_req_sync_qual, i_cpu_run_req_sync_qual, pmu_fw_halt_req_ns, pmu_fw_halt_req_f, int_timer_stalled,
-         fw_halt_req, enter_pmu_fw_halt_req, pmu_fw_tlu_halted, pmu_fw_tlu_halted_f, internal_pmu_fw_halt_mode,
-         internal_pmu_fw_halt_mode_f, int_timer0_int_hold, int_timer1_int_hold, int_timer0_int_hold_f, int_timer1_int_hold_f;
-   logic nmi_int_delayed, nmi_int_detected;
-   logic [3:0] trigger_execute, trigger_data, trigger_store;
-   logic dec_tlu_pmu_fw_halted;
-
-   logic mpc_run_state_ns, debug_brkpt_status_ns, mpc_debug_halt_ack_ns, mpc_debug_run_ack_ns, dbg_halt_state_ns, dbg_run_state_ns,
-         dbg_halt_state_f, mpc_debug_halt_req_sync_f, mpc_debug_run_req_sync_f, mpc_halt_state_f, mpc_halt_state_ns, mpc_run_state_f, debug_brkpt_status_f,
-         mpc_debug_halt_ack_f, mpc_debug_run_ack_f, dbg_run_state_f, mpc_debug_halt_req_sync_pulse,
-         mpc_debug_run_req_sync_pulse, debug_brkpt_valid, debug_halt_req, debug_resume_req, dec_tlu_mpc_halted_only_ns;
-   logic take_ext_int_start, ext_int_freeze, take_ext_int_start_d1, take_ext_int_start_d2,
-         take_ext_int_start_d3, ext_int_freeze_d1, csr_meicpct, ignore_ext_int_due_to_lsu_stall;
-   logic mcause_sel_nmi_store, mcause_sel_nmi_load, mcause_sel_nmi_ext, fast_int_meicpct;
-   logic [1:0] mcause_fir_error_type;
-   logic dbg_halt_req_held_ns, dbg_halt_req_held, dbg_halt_req_final;
-   logic iccm_repair_state_ns, iccm_repair_state_d1, iccm_repair_state_rfnpc;
-
-
-   // internal timer, isolated for size reasons
-   logic [31:0] dec_timer_rddata_d;
-   logic dec_timer_read_d, dec_timer_t0_pulse, dec_timer_t1_pulse;
-   logic csr_mitctl0;
-   logic csr_mitctl1;
-   logic csr_mitb0;
-   logic csr_mitb1;
-   logic csr_mitcnt0;
-   logic csr_mitcnt1;
-
-   logic nmi_int_sync, timer_int_sync, soft_int_sync, i_cpu_halt_req_sync, i_cpu_run_req_sync, mpc_debug_halt_req_sync, mpc_debug_run_req_sync, mpc_debug_halt_req_sync_raw;
-   logic csr_wr_clk;
-   logic e4e5_clk, e4_valid, e5_valid, e4e5_valid, internal_dbg_halt_mode_f, internal_dbg_halt_mode_f2;
-   logic lsu_pmu_load_external_r, lsu_pmu_store_external_r;
-   logic dec_tlu_flush_noredir_r_d1, dec_tlu_flush_pause_r_d1;
-   logic lsu_single_ecc_error_r;
-   logic [31:0] lsu_error_pkt_addr_r;
-   logic mcyclel_cout_in;
-   logic i0_valid_no_ebreak_ecall_r;
-   logic minstret_enable_f;
-   logic sel_exu_npc_r, sel_flush_npc_r, sel_hold_npc_r;
-   logic pc0_valid_r;
-   logic [15:0] mfdc_int, mfdc_ns;
-   logic [31:0] mrac_in;
-   logic [31:27] csr_sat;
-   logic [8:6] dcsr_cause;
-   logic enter_debug_halt_req_le, dcsr_cause_upgradeable;
-   logic icache_rd_valid, icache_wr_valid, icache_rd_valid_f, icache_wr_valid_f;
-   logic [3:0]      mhpmc_inc_r, mhpmc_inc_r_d1;
-
-   logic [3:0][9:0] mhpme_vec;
-   logic            mhpmc3_wr_en0, mhpmc3_wr_en1, mhpmc3_wr_en;
-   logic            mhpmc4_wr_en0, mhpmc4_wr_en1, mhpmc4_wr_en;
-   logic            mhpmc5_wr_en0, mhpmc5_wr_en1, mhpmc5_wr_en;
-   logic            mhpmc6_wr_en0, mhpmc6_wr_en1, mhpmc6_wr_en;
-   logic            mhpmc3h_wr_en0, mhpmc3h_wr_en;
-   logic            mhpmc4h_wr_en0, mhpmc4h_wr_en;
-   logic            mhpmc5h_wr_en0, mhpmc5h_wr_en;
-   logic            mhpmc6h_wr_en0, mhpmc6h_wr_en;
-   logic [63:0]     mhpmc3_incr, mhpmc4_incr, mhpmc5_incr, mhpmc6_incr;
-   logic perfcnt_halted_d1, zero_event_r;
-   logic [3:0] perfcnt_during_sleep;
-   logic [9:0] event_r;
-
-   eb1_inst_pkt_t pmu_i0_itype_qual;
-
-   logic csr_mfdht;
-   logic csr_mfdhs;
-   logic csr_misa;
-   logic csr_mvendorid;
-   logic csr_marchid;
-   logic csr_mimpid;
-   logic csr_mhartid;
-   logic csr_mstatus;
-   logic csr_mtvec;
-   logic csr_mip;
-   logic csr_mie;
-   logic csr_mcyclel;
-   logic csr_mcycleh;
-   logic csr_minstretl;
-   logic csr_minstreth;
-   logic csr_mscratch;
-   logic csr_mepc;
-   logic csr_mcause;
-   logic csr_mscause;
-   logic csr_mtval;
-   logic csr_mrac;
-   logic csr_dmst;
-   logic csr_mdseac;
-   logic csr_meihap;
-   logic csr_meivt;
-   logic csr_meipt;
-   logic csr_meicurpl;
-   logic csr_meicidpl;
-   logic csr_dcsr;
-   logic csr_mcgc;
-   logic csr_mfdc;
-   logic csr_dpc;
-   logic csr_mtsel;
-   logic csr_mtdata1;
-   logic csr_mtdata2;
-   logic csr_mhpmc3;
-   logic csr_mhpmc4;
-   logic csr_mhpmc5;
-   logic csr_mhpmc6;
-   logic csr_mhpmc3h;
-   logic csr_mhpmc4h;
-   logic csr_mhpmc5h;
-   logic csr_mhpmc6h;
-   logic csr_mhpme3;
-   logic csr_mhpme4;
-   logic csr_mhpme5;
-   logic csr_mhpme6;
-   logic csr_mcountinhibit;
-   logic csr_mpmc;
-   logic csr_micect;
-   logic csr_miccmect;
-   logic csr_mdccmect;
-   logic csr_dicawics;
-   logic csr_dicad0h;
-   logic csr_dicad0;
-   logic csr_dicad1;
-   logic csr_dicago;
-   logic presync;
-   logic postsync;
-   logic legal;
-   logic dec_csr_wen_r_mod;
-
-   logic flush_clkvalid;
-   logic sel_fir_addr;
-   logic wr_mie_r;
-   logic mtval_capture_pc_r;
-   logic mtval_capture_pc_plus2_r;
-   logic mtval_capture_inst_r;
-   logic mtval_capture_lsu_r;
-   logic mtval_clear_r;
-   logic wr_mcgc_r;
-   logic wr_mfdc_r;
-   logic wr_mdeau_r;
-   logic trigger_hit_for_dscr_cause_r_d1;
-   logic conditionally_illegal;
-
-   logic  [3:0] ifu_mscause ;
-   logic        ifu_ic_error_start_f, ifu_iccm_rd_ecc_single_err_f;
-
-   eb1_dec_timer_ctl  #(.pt(pt)) int_timers(.*);
-   // end of internal timers
-
-   assign clk_override = dec_tlu_dec_clk_override;
-
-   // Async inputs to the core have to be sync'd to the core clock.
-   rvsyncss #(7) syncro_ff(.*,
-                           .clk(free_clk),
-                           .din ({nmi_int,      timer_int,      soft_int,      i_cpu_halt_req,      i_cpu_run_req,      mpc_debug_halt_req,          mpc_debug_run_req}),
-                           .dout({nmi_int_sync, timer_int_sync, soft_int_sync, i_cpu_halt_req_sync, i_cpu_run_req_sync, mpc_debug_halt_req_sync_raw, mpc_debug_run_req_sync}));
-
-   // for CSRs that have inpipe writes only
-
-   rvoclkhdr csrwr_r_cgc   ( .en(dec_csr_wen_r_mod | clk_override), .l1clk(csr_wr_clk), .* );
-
-   assign e4_valid = dec_tlu_i0_valid_r;
-   assign e4e5_valid = e4_valid | e5_valid;
-   assign flush_clkvalid = internal_dbg_halt_mode_f | i_cpu_run_req_d1 | interrupt_valid_r | interrupt_valid_r_d1 |
-                           reset_delayed | pause_expired_r | pause_expired_wb | ic_perr_r | iccm_sbecc_r |
-                           clk_override;
-   rvoclkhdr e4e5_cgc     ( .en(e4e5_valid | clk_override), .l1clk(e4e5_clk), .* );
-   rvoclkhdr e4e5_int_cgc ( .en(e4e5_valid | flush_clkvalid), .l1clk(e4e5_int_clk), .* );
-
-   rvdffie #(11)  freeff (.*, .clk(free_l2clk),
-                          .din ({ifu_ic_error_start, ifu_iccm_rd_ecc_single_err, iccm_repair_state_ns, e4_valid, internal_dbg_halt_mode,
-                                 lsu_pmu_load_external_m, lsu_pmu_store_external_m, tlu_flush_lower_r,  tlu_i0_kill_writeb_r,
-                                 internal_dbg_halt_mode_f, force_halt}),
-                          .dout({ifu_ic_error_start_f, ifu_iccm_rd_ecc_single_err_f, iccm_repair_state_d1, e5_valid, internal_dbg_halt_mode_f,
-                                 lsu_pmu_load_external_r, lsu_pmu_store_external_r, tlu_flush_lower_r_d1, dec_tlu_i0_kill_writeb_wb,
-                                 internal_dbg_halt_mode_f2, dec_tlu_force_halt}));
-
-   assign dec_tlu_i0_kill_writeb_r = tlu_i0_kill_writeb_r;
-
-   assign nmi_int_detected = (nmi_int_sync & ~nmi_int_delayed) | nmi_lsu_detected | (nmi_int_detected_f & ~take_nmi_r_d1) | nmi_fir_type;
-   // if the first nmi is a lsu type, note it. If there's already an nmi pending, ignore. Simultaneous with FIR, drop.
-   assign nmi_lsu_load_type  = (nmi_lsu_detected & lsu_imprecise_error_load_any &  ~(nmi_int_detected_f & ~take_nmi_r_d1)) |
-                               (nmi_lsu_load_type_f  & ~take_nmi_r_d1);
-   assign nmi_lsu_store_type = (nmi_lsu_detected & lsu_imprecise_error_store_any & ~(nmi_int_detected_f & ~take_nmi_r_d1)) |
-                               (nmi_lsu_store_type_f & ~take_nmi_r_d1);
-
-   assign nmi_fir_type = ~nmi_int_detected_f & take_ext_int_start_d3 & |lsu_fir_error[1:0];
-
-   // Filter subsequent bus errors after the first, until the lock on MDSEAC is cleared
-   assign nmi_lsu_detected = ~mdseac_locked_f & (lsu_imprecise_error_load_any | lsu_imprecise_error_store_any) & ~nmi_fir_type;
-
-
-localparam MSTATUS_MIE   = 0;
-localparam MIP_MCEIP     = 5;
-localparam MIP_MITIP0    = 4;
-localparam MIP_MITIP1    = 3;
-localparam MIP_MEIP      = 2;
-localparam MIP_MTIP      = 1;
-localparam MIP_MSIP      = 0;
-
-localparam MIE_MCEIE     = 5;
-localparam MIE_MITIE0    = 4;
-localparam MIE_MITIE1    = 3;
-localparam MIE_MEIE      = 2;
-localparam MIE_MTIE      = 1;
-localparam MIE_MSIE      = 0;
-
-localparam DCSR_EBREAKM  = 15;
-localparam DCSR_STEPIE   = 11;
-localparam DCSR_STOPC    = 10;
-localparam DCSR_STEP     = 2;
-
-
-   assign reset_delayed = reset_detect ^ reset_detected;
-
-   // ----------------------------------------------------------------------
-   // MPC halt
-   // - can interact with debugger halt and v-v
-
-   // fast ints in progress have priority
-   assign mpc_debug_halt_req_sync = mpc_debug_halt_req_sync_raw & ~ext_int_freeze_d1;
-
-    rvdffie #(16)  mpvhalt_ff (.*, .clk(free_l2clk),
-                                 .din({1'b1, reset_detect,
-                                       nmi_int_sync, nmi_int_detected, nmi_lsu_load_type, nmi_lsu_store_type,
-                                       mpc_debug_halt_req_sync, mpc_debug_run_req_sync,
-                                       mpc_halt_state_ns, mpc_run_state_ns, debug_brkpt_status_ns,
-                                       mpc_debug_halt_ack_ns, mpc_debug_run_ack_ns,
-                                       dbg_halt_state_ns, dbg_run_state_ns,
-                                       dec_tlu_mpc_halted_only_ns}),
-                                .dout({reset_detect, reset_detected,
-                                       nmi_int_delayed, nmi_int_detected_f, nmi_lsu_load_type_f, nmi_lsu_store_type_f,
-                                       mpc_debug_halt_req_sync_f, mpc_debug_run_req_sync_f,
-                                       mpc_halt_state_f, mpc_run_state_f, debug_brkpt_status_f,
-                                       mpc_debug_halt_ack_f, mpc_debug_run_ack_f,
-                                       dbg_halt_state_f, dbg_run_state_f,
-                                       dec_tlu_mpc_halted_only}));
-
-   // turn level sensitive requests into pulses
-   assign mpc_debug_halt_req_sync_pulse = mpc_debug_halt_req_sync & ~mpc_debug_halt_req_sync_f;
-   assign mpc_debug_run_req_sync_pulse = mpc_debug_run_req_sync & ~mpc_debug_run_req_sync_f;
-
-   // states
-   assign mpc_halt_state_ns = (mpc_halt_state_f | mpc_debug_halt_req_sync_pulse | (reset_delayed & ~mpc_reset_run_req)) & ~mpc_debug_run_req_sync;
-   assign mpc_run_state_ns = (mpc_run_state_f | (mpc_debug_run_req_sync_pulse & ~mpc_debug_run_ack_f)) & (internal_dbg_halt_mode_f & ~dcsr_single_step_running_f);
-
-   // note, MPC halt can allow the jtag debugger to just start sending commands. When that happens, set the interal debugger halt state to prevent
-   // MPC run from starting the core.
-   assign dbg_halt_state_ns = (dbg_halt_state_f | (dbg_halt_req_final | dcsr_single_step_done_f | trigger_hit_dmode_r_d1 | ebreak_to_debug_mode_r_d1)) & ~dbg_resume_req;
-   assign dbg_run_state_ns = (dbg_run_state_f | dbg_resume_req) & (internal_dbg_halt_mode_f & ~dcsr_single_step_running_f);
-
-   // tell dbg we are only MPC halted
-   assign dec_tlu_mpc_halted_only_ns = ~dbg_halt_state_f & mpc_halt_state_f;
-
-   // this asserts from detection of bkpt until after we leave debug mode
-   assign debug_brkpt_valid = ebreak_to_debug_mode_r_d1 | trigger_hit_dmode_r_d1;
-   assign debug_brkpt_status_ns = (debug_brkpt_valid | debug_brkpt_status_f) & (internal_dbg_halt_mode & ~dcsr_single_step_running_f);
-
-   // acks back to interface
-   assign mpc_debug_halt_ack_ns = mpc_halt_state_f & internal_dbg_halt_mode_f & mpc_debug_halt_req_sync & core_empty;
-   assign mpc_debug_run_ack_ns = (mpc_debug_run_req_sync & ~dbg_halt_state_ns & ~mpc_debug_halt_req_sync) | (mpc_debug_run_ack_f & mpc_debug_run_req_sync) ;
-
-   // Pins
-   assign mpc_debug_halt_ack = mpc_debug_halt_ack_f;
-   assign mpc_debug_run_ack = mpc_debug_run_ack_f;
-   assign debug_brkpt_status = debug_brkpt_status_f;
-
-   // DBG halt req is a pulse, fast ext int in progress has priority
-   assign dbg_halt_req_held_ns = (dbg_halt_req | dbg_halt_req_held) & ext_int_freeze_d1;
-   assign dbg_halt_req_final = (dbg_halt_req | dbg_halt_req_held) & ~ext_int_freeze_d1;
-
-   // combine MPC and DBG halt requests
-   assign debug_halt_req = (dbg_halt_req_final | mpc_debug_halt_req_sync | (reset_delayed & ~mpc_reset_run_req)) & ~internal_dbg_halt_mode_f & ~ext_int_freeze_d1;
-
-   assign debug_resume_req = ~debug_resume_req_f &  // squash back to back resumes
-                             ((mpc_run_state_ns & ~dbg_halt_state_ns) |  // MPC run req
-                              (dbg_run_state_ns & ~mpc_halt_state_ns)); // dbg request is a pulse
-
-
-   // HALT
-   // dbg/pmu/fw requests halt, service as soon as lsu is not blocking interrupts
-   assign take_halt = (debug_halt_req_f | pmu_fw_halt_req_f) & ~synchronous_flush_r & ~mret_r & ~halt_taken_f & ~dec_tlu_flush_noredir_r_d1 & ~take_reset;
-
-   // hold after we take a halt, so we don't keep taking halts
-   assign halt_taken = (dec_tlu_flush_noredir_r_d1 & ~dec_tlu_flush_pause_r_d1 & ~take_ext_int_start_d1) | (halt_taken_f & ~dbg_tlu_halted_f & ~pmu_fw_tlu_halted_f & ~interrupt_valid_r_d1);
-
-   // After doing halt flush (RFNPC) wait until core is idle before asserting a particular halt mode
-   // It takes a cycle for mb_empty to assert after a fetch, take_halt covers that cycle
-   assign core_empty = force_halt |
-                       (lsu_idle_any & lsu_idle_any_f & ifu_miss_state_idle & ifu_miss_state_idle_f & ~debug_halt_req & ~debug_halt_req_d1 & ~dec_div_active);
-
-   assign dec_tlu_core_empty = core_empty;
-
-//--------------------------------------------------------------------------------
-// Debug start
-//
-
-   assign enter_debug_halt_req = (~internal_dbg_halt_mode_f & debug_halt_req) | dcsr_single_step_done_f | trigger_hit_dmode_r_d1 | ebreak_to_debug_mode_r_d1;
-
-   // dbg halt state active from request until non-step resume
-   assign internal_dbg_halt_mode = debug_halt_req_ns | (internal_dbg_halt_mode_f & ~(debug_resume_req_f & ~dcsr[DCSR_STEP]));
-   // dbg halt can access csrs as long as we are not stepping
-   assign allow_dbg_halt_csr_write = internal_dbg_halt_mode_f & ~dcsr_single_step_running_f;
-
-
-   // hold debug_halt_req_ns high until we enter debug halt
-   assign debug_halt_req_ns = enter_debug_halt_req | (debug_halt_req_f & ~dbg_tlu_halted);
-
-   assign dbg_tlu_halted = (debug_halt_req_f & core_empty & halt_taken) | (dbg_tlu_halted_f & ~debug_resume_req_f);
-
-   assign resume_ack_ns = (debug_resume_req_f & dbg_tlu_halted_f & dbg_run_state_ns);
-
-   assign dcsr_single_step_done = dec_tlu_i0_valid_r & ~dec_tlu_dbg_halted & dcsr[DCSR_STEP] & ~rfpc_i0_r;
-
-   assign dcsr_single_step_running = (debug_resume_req_f & dcsr[DCSR_STEP]) | (dcsr_single_step_running_f & ~dcsr_single_step_done_f);
-
-   assign dbg_cmd_done_ns = dec_tlu_i0_valid_r & dec_tlu_dbg_halted;
-
-   // used to hold off commits after an in-pipe debug mode request (triggers, DCSR)
-   assign request_debug_mode_r = (trigger_hit_dmode_r | ebreak_to_debug_mode_r) | (request_debug_mode_r_d1 & ~dec_tlu_flush_lower_wb);
-
-   assign request_debug_mode_done = (request_debug_mode_r_d1 | request_debug_mode_done_f) & ~dbg_tlu_halted_f;
-
-    rvdffie #(18)  halt_ff (.*, .clk(free_l2clk),
-                          .din({dec_tlu_flush_noredir_r, halt_taken, lsu_idle_any, ifu_miss_state_idle, dbg_tlu_halted,
-                                resume_ack_ns, debug_halt_req_ns, debug_resume_req, trigger_hit_dmode_r,
-                                dcsr_single_step_done, debug_halt_req, dec_tlu_wr_pause_r, dec_pause_state,
-                                request_debug_mode_r, request_debug_mode_done, dcsr_single_step_running, dec_tlu_flush_pause_r,
-                                dbg_halt_req_held_ns}),
-                          .dout({dec_tlu_flush_noredir_r_d1, halt_taken_f, lsu_idle_any_f, ifu_miss_state_idle_f, dbg_tlu_halted_f,
-                                 dec_tlu_resume_ack , debug_halt_req_f, debug_resume_req_f_raw, trigger_hit_dmode_r_d1,
-                                 dcsr_single_step_done_f, debug_halt_req_d1, dec_tlu_wr_pause_r_d1, dec_pause_state_f,
-                                 request_debug_mode_r_d1, request_debug_mode_done_f, dcsr_single_step_running_f, dec_tlu_flush_pause_r_d1,
-                                 dbg_halt_req_held}));
-
-   // MPC run collides with DBG halt, fix it here
-   assign debug_resume_req_f = debug_resume_req_f_raw & ~dbg_halt_req;
-
-   assign dec_tlu_debug_stall = debug_halt_req_f;
-   assign dec_tlu_dbg_halted = dbg_tlu_halted_f;
-   assign dec_tlu_debug_mode = internal_dbg_halt_mode_f;
-   assign dec_tlu_pmu_fw_halted = pmu_fw_tlu_halted_f;
-
-   // kill fetch redirection on flush if going to halt, or if there's a fence during db-halt
-   assign dec_tlu_flush_noredir_r = take_halt | (fence_i_r & internal_dbg_halt_mode) | dec_tlu_flush_pause_r | (i0_trigger_hit_r & trigger_hit_dmode_r) | take_ext_int_start;
-
-   assign dec_tlu_flush_extint = take_ext_int_start;
-
-   // 1 cycle after writing the PAUSE counter, flush with noredir to idle F1-D.
-   assign dec_tlu_flush_pause_r = dec_tlu_wr_pause_r_d1 & ~interrupt_valid_r & ~take_ext_int_start;
-
-   // detect end of pause counter and rfpc
-   assign pause_expired_r = ~dec_pause_state & dec_pause_state_f & ~(ext_int_ready | ce_int_ready | timer_int_ready | soft_int_ready | int_timer0_int_hold_f | int_timer1_int_hold_f | nmi_int_detected | ext_int_freeze_d1) & ~interrupt_valid_r_d1 & ~debug_halt_req_f & ~pmu_fw_halt_req_f & ~halt_taken_f;
-
-   assign dec_tlu_flush_leak_one_r = dec_tlu_flush_lower_r  & dcsr[DCSR_STEP] & (dec_tlu_resume_ack | dcsr_single_step_running) & ~dec_tlu_flush_noredir_r;
-   assign dec_tlu_flush_err_r = dec_tlu_flush_lower_r & (ic_perr_r | iccm_sbecc_r);
-
-   // If DM attempts to access an illegal CSR, send cmd_fail back
-   assign dec_dbg_cmd_done = dbg_cmd_done_ns;
-   assign dec_dbg_cmd_fail = illegal_r & dec_dbg_cmd_done;
-
-
-   //--------------------------------------------------------------------------------
-   //--------------------------------------------------------------------------------
-   // Triggers
-   //
-localparam MTDATA1_DMODE             = 9;
-localparam MTDATA1_SEL   = 7;
-localparam MTDATA1_ACTION            = 6;
-localparam MTDATA1_CHAIN             = 5;
-localparam MTDATA1_MATCH             = 4;
-localparam MTDATA1_M_ENABLED         = 3;
-localparam MTDATA1_EXE   = 2;
-localparam MTDATA1_ST    = 1;
-localparam MTDATA1_LD    = 0;
-
-   // Prioritize trigger hits with other exceptions.
-   //
-   // Trigger should have highest priority except:
-   // - trigger is an execute-data and there is an inst_access exception (lsu triggers won't fire, inst. is nop'd by decode)
-   // - trigger is a store-data and there is a lsu_acc_exc or lsu_ma_exc.
-   assign trigger_execute[3:0] = {mtdata1_t3[MTDATA1_EXE], mtdata1_t2[MTDATA1_EXE], mtdata1_t1[MTDATA1_EXE], mtdata1_t0[MTDATA1_EXE]};
-   assign trigger_data[3:0] = {mtdata1_t3[MTDATA1_SEL], mtdata1_t2[MTDATA1_SEL], mtdata1_t1[MTDATA1_SEL], mtdata1_t0[MTDATA1_SEL]};
-   assign trigger_store[3:0] = {mtdata1_t3[MTDATA1_ST], mtdata1_t2[MTDATA1_ST], mtdata1_t1[MTDATA1_ST], mtdata1_t0[MTDATA1_ST]};
-
-   // MSTATUS[MIE] needs to be on to take triggers unless the action is trigger to debug mode.
-   assign trigger_enabled[3:0] = {(mtdata1_t3[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t3[MTDATA1_M_ENABLED],
-                                  (mtdata1_t2[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t2[MTDATA1_M_ENABLED],
-                                  (mtdata1_t1[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t1[MTDATA1_M_ENABLED],
-                                  (mtdata1_t0[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t0[MTDATA1_M_ENABLED]};
-
-   // iside exceptions are always in i0
-   assign i0_iside_trigger_has_pri_r[3:0]  = ~( (trigger_execute[3:0] & trigger_data[3:0] & {4{inst_acc_r_raw}}) | // exe-data with inst_acc
-                                                ({4{exu_i0_br_error_r | exu_i0_br_start_error_r}}));               // branch error in i0
-
-   // lsu excs have to line up with their respective triggers since the lsu op can be i0
-   assign i0_lsu_trigger_has_pri_r[3:0] = ~(trigger_store[3:0] & trigger_data[3:0] & {4{lsu_i0_exc_r_raw}});
-
-   // trigger hits have to be eval'd to cancel side effect lsu ops even though the pipe is already frozen
-   assign i0_trigger_eval_r = dec_tlu_i0_valid_r;
-
-   assign i0trigger_qual_r[3:0] = {4{i0_trigger_eval_r}} & dec_tlu_packet_r.i0trigger[3:0] & i0_iside_trigger_has_pri_r[3:0] & i0_lsu_trigger_has_pri_r[3:0] & trigger_enabled[3:0];
-
-   // Qual trigger hits
-   assign i0_trigger_r[3:0] = ~{4{dec_tlu_flush_lower_wb | dec_tlu_dbg_halted}} & i0trigger_qual_r[3:0];
-
-   // chaining can mask raw trigger info
-   assign i0_trigger_chain_masked_r[3:0]  = {i0_trigger_r[3] & (~mtdata1_t2[MTDATA1_CHAIN] | i0_trigger_r[2]),
-                                             i0_trigger_r[2] & (~mtdata1_t2[MTDATA1_CHAIN] | i0_trigger_r[3]),
-                                             i0_trigger_r[1] & (~mtdata1_t0[MTDATA1_CHAIN] | i0_trigger_r[0]),
-                                             i0_trigger_r[0] & (~mtdata1_t0[MTDATA1_CHAIN] | i0_trigger_r[1])};
-
-   // This is the highest priority by this point.
-   assign i0_trigger_hit_raw_r = |i0_trigger_chain_masked_r[3:0];
-
-   assign i0_trigger_hit_r = i0_trigger_hit_raw_r;
-
-   // Actions include breakpoint, or dmode. Dmode is only possible if the DMODE bit is set.
-   // Otherwise, take a breakpoint.
-   assign trigger_action[3:0] = {mtdata1_t3[MTDATA1_ACTION] & mtdata1_t3[MTDATA1_DMODE],
-                                 mtdata1_t2[MTDATA1_ACTION] & mtdata1_t2[MTDATA1_DMODE] & ~mtdata1_t2[MTDATA1_CHAIN],
-                                 mtdata1_t1[MTDATA1_ACTION] & mtdata1_t1[MTDATA1_DMODE],
-                                 mtdata1_t0[MTDATA1_ACTION] & mtdata1_t0[MTDATA1_DMODE] & ~mtdata1_t0[MTDATA1_CHAIN]};
-
-   // this is needed to set the HIT bit in the triggers
-   assign update_hit_bit_r[3:0] = ({4{|i0_trigger_r[3:0] & ~rfpc_i0_r}} & {i0_trigger_chain_masked_r[3], i0_trigger_r[2], i0_trigger_chain_masked_r[1], i0_trigger_r[0]});
-
-   // action, 1 means dmode. Simultaneous triggers with at least 1 set for dmode force entire action to dmode.
-   assign i0_trigger_action_r = |(i0_trigger_chain_masked_r[3:0] & trigger_action[3:0]);
-
-   assign trigger_hit_dmode_r = (i0_trigger_hit_r & i0_trigger_action_r);
-
-   assign mepc_trigger_hit_sel_pc_r = i0_trigger_hit_r & ~trigger_hit_dmode_r;
-
-
-//
-// Debug end
-//--------------------------------------------------------------------------------
-
-   //----------------------------------------------------------------------
-   //
-   // Commit
-   //
-   //----------------------------------------------------------------------
-
-
-
-   //--------------------------------------------------------------------------------
-   // External halt (not debug halt)
-   // - Fully interlocked handshake
-   // i_cpu_halt_req  ____|--------------|_______________
-   // core_empty      ---------------|___________
-   // o_cpu_halt_ack  _________________|----|__________
-   // o_cpu_halt_status _______________|---------------------|_________
-   // i_cpu_run_req                              ______|----------|____
-   // o_cpu_run_ack                              ____________|------|________
-   //
-
-
-   // debug mode has priority, ignore PMU/FW halt/run while in debug mode
-   assign i_cpu_halt_req_sync_qual = i_cpu_halt_req_sync & ~dec_tlu_debug_mode & ~ext_int_freeze_d1;
-   assign i_cpu_run_req_sync_qual = i_cpu_run_req_sync & ~dec_tlu_debug_mode & pmu_fw_tlu_halted_f & ~ext_int_freeze_d1;
-
-   rvdffie #(10) exthaltff (.*, .clk(free_l2clk), .din({i_cpu_halt_req_sync_qual, i_cpu_run_req_sync_qual,   cpu_halt_status,
-                                                   cpu_halt_ack,   cpu_run_ack, internal_pmu_fw_halt_mode,
-                                                   pmu_fw_halt_req_ns, pmu_fw_tlu_halted,
-                                                   int_timer0_int_hold, int_timer1_int_hold}),
-                                            .dout({i_cpu_halt_req_d1,        i_cpu_run_req_d1_raw,      o_cpu_halt_status,
-                                                   o_cpu_halt_ack, o_cpu_run_ack, internal_pmu_fw_halt_mode_f,
-                                                   pmu_fw_halt_req_f, pmu_fw_tlu_halted_f,
-                                                   int_timer0_int_hold_f, int_timer1_int_hold_f}));
-
-   // only happens if we aren't in dgb_halt
-   assign ext_halt_pulse = i_cpu_halt_req_sync_qual & ~i_cpu_halt_req_d1;
-
-   assign enter_pmu_fw_halt_req =  ext_halt_pulse | fw_halt_req;
-
-   assign pmu_fw_halt_req_ns = (enter_pmu_fw_halt_req | (pmu_fw_halt_req_f & ~pmu_fw_tlu_halted)) & ~debug_halt_req_f;
-
-   assign internal_pmu_fw_halt_mode = pmu_fw_halt_req_ns | (internal_pmu_fw_halt_mode_f & ~i_cpu_run_req_d1 & ~debug_halt_req_f);
-
-   // debug halt has priority
-   assign pmu_fw_tlu_halted = ((pmu_fw_halt_req_f & core_empty & halt_taken & ~enter_debug_halt_req) | (pmu_fw_tlu_halted_f & ~i_cpu_run_req_d1)) & ~debug_halt_req_f;
-
-   assign cpu_halt_ack = (i_cpu_halt_req_d1 & pmu_fw_tlu_halted_f) | (o_cpu_halt_ack & i_cpu_halt_req_sync);
-   assign cpu_halt_status = (pmu_fw_tlu_halted_f & ~i_cpu_run_req_d1) | (o_cpu_halt_status & ~i_cpu_run_req_d1 & ~internal_dbg_halt_mode_f);
-   assign cpu_run_ack = (~pmu_fw_tlu_halted_f & i_cpu_run_req_sync) | (o_cpu_halt_status & i_cpu_run_req_d1_raw) | (o_cpu_run_ack & i_cpu_run_req_sync);
-   assign debug_mode_status = internal_dbg_halt_mode_f;
-   assign o_debug_mode_status = debug_mode_status;
-
-
-   // high priority interrupts can wakeup from external halt, so can unmasked timer interrupts
-   assign i_cpu_run_req_d1 = i_cpu_run_req_d1_raw | ((nmi_int_detected | timer_int_ready | soft_int_ready | int_timer0_int_hold_f | int_timer1_int_hold_f | (mhwakeup & mhwakeup_ready)) & o_cpu_halt_status & ~i_cpu_halt_req_d1);
-
-   //--------------------------------------------------------------------------------
-   //--------------------------------------------------------------------------------
-
-   assign lsu_single_ecc_error_r = lsu_single_ecc_error_incr;
-
-   assign lsu_error_pkt_addr_r[31:0] = lsu_error_pkt_r.addr[31:0];
-
-
-   assign lsu_exc_valid_r_raw = lsu_error_pkt_r.exc_valid & ~dec_tlu_flush_lower_wb;
-
-   assign lsu_i0_exc_r_raw =  lsu_error_pkt_r.exc_valid;
-
-   assign lsu_i0_exc_r = lsu_i0_exc_r_raw & lsu_exc_valid_r_raw & ~i0_trigger_hit_r & ~rfpc_i0_r;
-
-   assign lsu_exc_valid_r = lsu_i0_exc_r;
-
-   assign lsu_exc_ma_r  =  lsu_i0_exc_r & ~lsu_error_pkt_r.exc_type;
-   assign lsu_exc_acc_r =  lsu_i0_exc_r & lsu_error_pkt_r.exc_type;
-   assign lsu_exc_st_r  =  lsu_i0_exc_r & lsu_error_pkt_r.inst_type;
-
-   // Single bit ECC errors on loads are RFNPC corrected, with the corrected data written to the GPR.
-   // LSU turns the load into a store and patches the data in the DCCM
-   assign lsu_i0_rfnpc_r = dec_tlu_i0_valid_r & ~i0_trigger_hit_r &
-                           (~lsu_error_pkt_r.inst_type & lsu_error_pkt_r.single_ecc_error);
-
-   //  Final commit valids
-   assign tlu_i0_commit_cmt = dec_tlu_i0_valid_r &
-                              ~rfpc_i0_r &
-                              ~lsu_i0_exc_r &
-                              ~inst_acc_r &
-                              ~dec_tlu_dbg_halted &
-                              ~request_debug_mode_r_d1 &
-                              ~i0_trigger_hit_r;
-
-   // unified place to manage the killing of arch state writebacks
-   assign tlu_i0_kill_writeb_r = rfpc_i0_r | lsu_i0_exc_r | inst_acc_r | (illegal_r & dec_tlu_dbg_halted) | i0_trigger_hit_r;
-   assign dec_tlu_i0_commit_cmt = tlu_i0_commit_cmt;
-
-
-   // refetch PC, microarch flush
-   // ic errors only in pipe0
-   assign rfpc_i0_r =  ((dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1 & (exu_i0_br_error_r | exu_i0_br_start_error_r)) | // inst commit with rfpc
-                        ((ic_perr_r | iccm_sbecc_r) & ~ext_int_freeze_d1)) & // ic/iccm without inst commit
-                       ~i0_trigger_hit_r & // unless there's a trigger. Err signal to ic/iccm will assert anyway to clear the error.
-                       ~lsu_i0_rfnpc_r;
-
-   // From the indication of a iccm single bit error until the first commit or flush, maintain a repair state. In the repair state, rfnpc i0 commits.
-   assign iccm_repair_state_ns = iccm_sbecc_r | (iccm_repair_state_d1 & ~dec_tlu_flush_lower_r);
-
-
-   localparam MCPC          = 12'h7c2;
-
-   // this is a flush of last resort, meaning only assert it if there is no other flush happening.
-   assign iccm_repair_state_rfnpc = tlu_i0_commit_cmt & iccm_repair_state_d1 &
-                                    ~(ebreak_r | ecall_r | mret_r | take_reset | illegal_r | (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCPC)));
-
-if(pt.BTB_ENABLE==1) begin
-   // go ahead and repair the branch error on other flushes, doesn't have to be the rfpc flush
-   assign dec_tlu_br0_error_r = exu_i0_br_error_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1;
-   assign dec_tlu_br0_start_error_r = exu_i0_br_start_error_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1;
-   assign dec_tlu_br0_v_r = exu_i0_br_valid_r & dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1 & (~exu_i0_br_mp_r | ~exu_pmu_i0_br_ataken);
-
-
-   assign dec_tlu_br0_r_pkt.hist[1:0] = exu_i0_br_hist_r[1:0];
-   assign dec_tlu_br0_r_pkt.br_error = dec_tlu_br0_error_r;
-   assign dec_tlu_br0_r_pkt.br_start_error = dec_tlu_br0_start_error_r;
-   assign dec_tlu_br0_r_pkt.valid = dec_tlu_br0_v_r;
-   assign dec_tlu_br0_r_pkt.way = exu_i0_br_way_r;
-   assign dec_tlu_br0_r_pkt.middle = exu_i0_br_middle_r;
-end // if (pt.BTB_ENABLE==1)
-else begin
-   assign dec_tlu_br0_error_r = '0;
-   assign dec_tlu_br0_start_error_r = '0;
-   assign dec_tlu_br0_v_r = '0;
-   assign dec_tlu_br0_r_pkt  = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-
-   // only expect these in pipe 0
-   assign       ebreak_r     =  (dec_tlu_packet_r.pmu_i0_itype == EBREAK)  & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~dcsr[DCSR_EBREAKM] & ~rfpc_i0_r;
-   assign       ecall_r      =  (dec_tlu_packet_r.pmu_i0_itype == ECALL)   & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign       illegal_r    =  ~dec_tlu_packet_r.legal   & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign       mret_r       =  (dec_tlu_packet_r.pmu_i0_itype == MRET)    & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   // fence_i includes debug only fence_i's
-   assign       fence_i_r    =  (dec_tlu_packet_r.fence_i & dec_tlu_i0_valid_r & ~i0_trigger_hit_r) & ~rfpc_i0_r;
-   assign       ic_perr_r    =  ifu_ic_error_start_f & ~ext_int_freeze_d1 & (~internal_dbg_halt_mode_f | dcsr_single_step_running) & ~internal_pmu_fw_halt_mode_f;
-   assign       iccm_sbecc_r =  ifu_iccm_rd_ecc_single_err_f & ~ext_int_freeze_d1 & (~internal_dbg_halt_mode_f | dcsr_single_step_running) & ~internal_pmu_fw_halt_mode_f;
-   assign       inst_acc_r_raw  =  dec_tlu_packet_r.icaf & dec_tlu_i0_valid_r;
-   assign       inst_acc_r = inst_acc_r_raw & ~rfpc_i0_r & ~i0_trigger_hit_r;
-   assign       inst_acc_second_r = dec_tlu_packet_r.icaf_second;
-
-   assign       ebreak_to_debug_mode_r = (dec_tlu_packet_r.pmu_i0_itype == EBREAK)  & dec_tlu_i0_valid_r & ~i0_trigger_hit_r & dcsr[DCSR_EBREAKM] & ~rfpc_i0_r;
-
-   rvdff #(1)  exctype_wb_ff (.*, .clk(e4e5_clk),
-                                .din (ebreak_to_debug_mode_r   ),
-                                .dout(ebreak_to_debug_mode_r_d1));
-
-   assign dec_tlu_fence_i_r = fence_i_r;
-   //
-   // Exceptions
-   //
-   // - MEPC <- PC
-   // - PC <- MTVEC, assert flush_lower
-   // - MCAUSE <- cause
-   // - MSCAUSE <- secondary cause
-   // - MTVAL <-
-   // - MPIE <- MIE
-   // - MIE <- 0
-   //
-   assign i0_exception_valid_r = (ebreak_r | ecall_r | illegal_r | inst_acc_r) & ~rfpc_i0_r & ~dec_tlu_dbg_halted;
-
-   // Cause:
-   //
-   // 0x2 : illegal
-   // 0x3 : breakpoint
-   // 0xb : Environment call M-mode
-
-
-   assign exc_cause_r[4:0] =  ( ({5{take_ext_int}}        & 5'h0b) |
-                                ({5{take_timer_int}}      & 5'h07) |
-                                ({5{take_soft_int}}       & 5'h03) |
-                                ({5{take_int_timer0_int}} & 5'h1d) |
-                                ({5{take_int_timer1_int}} & 5'h1c) |
-                                ({5{take_ce_int}}         & 5'h1e) |
-                                ({5{illegal_r}}           & 5'h02) |
-                                ({5{ecall_r}}             & 5'h0b) |
-                                ({5{inst_acc_r}}          & 5'h01) |
-                                ({5{ebreak_r | i0_trigger_hit_r}}   & 5'h03) |
-                                ({5{lsu_exc_ma_r & ~lsu_exc_st_r}}  & 5'h04) |
-                                ({5{lsu_exc_acc_r & ~lsu_exc_st_r}} & 5'h05) |
-                                ({5{lsu_exc_ma_r & lsu_exc_st_r}}   & 5'h06) |
-                                ({5{lsu_exc_acc_r & lsu_exc_st_r}}  & 5'h07)
-                                ) & ~{5{take_nmi}};
-
-   //
-   // Interrupts
-   //
-   // exceptions that are committed have already happened and will cause an int at E4 to wait a cycle
-   // or more if MSTATUS[MIE] is cleared.
-   //
-   // -in priority order, highest to lowest
-   // -single cycle window where a csr write to MIE/MSTATUS is at E4 when the other conditions for externals are met.
-   //  Hold off externals for a cycle to make sure we are consistent with what was just written
-   assign mhwakeup_ready =  ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MEIP]   & mie_ns[MIE_MEIE];
-   assign ext_int_ready   = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MEIP]   & mie_ns[MIE_MEIE] & ~ignore_ext_int_due_to_lsu_stall;
-   assign ce_int_ready    = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MCEIP]  & mie_ns[MIE_MCEIE];
-   assign soft_int_ready  = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MSIP]   & mie_ns[MIE_MSIE];
-   assign timer_int_ready = ~dec_csr_stall_int_ff & mstatus_mie_ns & mip[MIP_MTIP]   & mie_ns[MIE_MTIE];
-
-   // MIP for internal timers pulses for 1 clock, resets the timer counter. Mip won't hold past the various stall conditions.
-   assign int_timer0_int_possible = mstatus_mie_ns & mie_ns[MIE_MITIE0];
-   assign int_timer0_int_ready = mip[MIP_MITIP0] & int_timer0_int_possible;
-   assign int_timer1_int_possible = mstatus_mie_ns & mie_ns[MIE_MITIE1];
-   assign int_timer1_int_ready = mip[MIP_MITIP1] & int_timer1_int_possible;
-
-   // Internal timers pulse and reset. If core is PMU/FW halted, the pulse will cause an exit from halt, but won't stick around
-   // Make it sticky, also for 1 cycle stall conditions.
-   assign int_timer_stalled = dec_csr_stall_int_ff | synchronous_flush_r | exc_or_int_valid_r_d1 | mret_r;
-
-   assign int_timer0_int_hold = (int_timer0_int_ready & (pmu_fw_tlu_halted_f | int_timer_stalled)) | (int_timer0_int_possible & int_timer0_int_hold_f & ~interrupt_valid_r & ~take_ext_int_start & ~internal_dbg_halt_mode_f);
-   assign int_timer1_int_hold = (int_timer1_int_ready & (pmu_fw_tlu_halted_f | int_timer_stalled)) | (int_timer1_int_possible & int_timer1_int_hold_f & ~interrupt_valid_r & ~take_ext_int_start & ~internal_dbg_halt_mode_f);
-
-
-   assign internal_dbg_halt_timers = internal_dbg_halt_mode_f & ~dcsr_single_step_running;
-
-
-   assign block_interrupts = ( (internal_dbg_halt_mode & (~dcsr_single_step_running | dec_tlu_i0_valid_r)) | // No ints in db-halt unless we are single stepping
-                               internal_pmu_fw_halt_mode | i_cpu_halt_req_d1 |// No ints in PMU/FW halt. First we exit halt
-                               take_nmi | // NMI is top priority
-                               ebreak_to_debug_mode_r | // Heading to debug mode, hold off ints
-                               synchronous_flush_r | // exception flush this cycle
-                               exc_or_int_valid_r_d1 | // ext/int past cycle (need time for MIE to update)
-                               mret_r |    // mret in progress, for cases were ISR enables ints before mret
-                               ext_int_freeze_d1 // Fast interrupt in progress (optional)
-                               );
-
-
-if (pt.FAST_INTERRUPT_REDIRECT) begin
-
-
-   assign take_ext_int_start = ext_int_ready & ~block_interrupts;
-
-   assign ext_int_freeze = take_ext_int_start | take_ext_int_start_d1 | take_ext_int_start_d2 | take_ext_int_start_d3;
-   assign take_ext_int = take_ext_int_start_d3 & ~|lsu_fir_error[1:0];
-   assign fast_int_meicpct = csr_meicpct & dec_csr_any_unq_d;  // MEICPCT becomes illegal if fast ints are enabled
-
-   assign ignore_ext_int_due_to_lsu_stall = lsu_fastint_stall_any;
-end
-else begin
-   assign take_ext_int_start = 1'b0;
-   assign ext_int_freeze = 1'b0;
-   assign ext_int_freeze_d1 = 1'b0;
-   assign take_ext_int_start_d1 = 1'b0;
-   assign take_ext_int_start_d2 = 1'b0;
-   assign take_ext_int_start_d3 = 1'b0;
-   assign fast_int_meicpct = 1'b0;
-   assign ignore_ext_int_due_to_lsu_stall = 1'b0;
-
-   assign take_ext_int = ext_int_ready & ~block_interrupts;
-end
-
-   assign take_ce_int  = ce_int_ready & ~ext_int_ready & ~block_interrupts;
-   assign take_soft_int = soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_timer_int = timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_int_timer0_int = (int_timer0_int_ready | int_timer0_int_hold_f) & int_timer0_int_possible & ~dec_csr_stall_int_ff &
-                                ~timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-   assign take_int_timer1_int = (int_timer1_int_ready | int_timer1_int_hold_f) & int_timer1_int_possible & ~dec_csr_stall_int_ff &
-                                ~(int_timer0_int_ready | int_timer0_int_hold_f) & ~timer_int_ready & ~soft_int_ready & ~ext_int_ready & ~ce_int_ready & ~block_interrupts;
-
-   assign take_reset = reset_delayed & mpc_reset_run_req;
-   assign take_nmi = nmi_int_detected & ~internal_pmu_fw_halt_mode & (~internal_dbg_halt_mode | (dcsr_single_step_running_f & dcsr[DCSR_STEPIE] & ~dec_tlu_i0_valid_r & ~dcsr_single_step_done_f)) &
-                     ~synchronous_flush_r & ~mret_r & ~take_reset & ~ebreak_to_debug_mode_r & (~ext_int_freeze_d1 | (take_ext_int_start_d3 & |lsu_fir_error[1:0]));
-
-   assign interrupt_valid_r = take_ext_int | take_timer_int | take_soft_int | take_nmi | take_ce_int | take_int_timer0_int | take_int_timer1_int;
-
-
-   // Compute interrupt path:
-   // If vectored async is set in mtvec, flush path for interrupts is MTVEC + (4 * CAUSE);
-   assign vectored_path[31:1]  = {mtvec[30:1], 1'b0} + {25'b0, exc_cause_r[4:0], 1'b0};
-   assign interrupt_path[31:1] = take_nmi ? nmi_vec[31:1] : ((mtvec[0] == 1'b1) ? vectored_path[31:1] : {mtvec[30:1], 1'b0});
-
-   assign sel_npc_r  = lsu_i0_rfnpc_r | fence_i_r | iccm_repair_state_rfnpc | (i_cpu_run_req_d1 & ~interrupt_valid_r) | (rfpc_i0_r & ~dec_tlu_i0_valid_r);
-   assign sel_npc_resume = (i_cpu_run_req_d1 & pmu_fw_tlu_halted_f) | pause_expired_r;
-
-   assign sel_fir_addr = take_ext_int_start_d3 & ~|lsu_fir_error[1:0];
-
-   assign synchronous_flush_r  = i0_exception_valid_r | // exception
-                                 rfpc_i0_r | // rfpc
-                                 lsu_exc_valid_r |  // lsu exception in either pipe 0 or pipe 1
-                                 fence_i_r |  // fence, a rfnpc
-                                 lsu_i0_rfnpc_r | // lsu dccm sb ecc
-                                 iccm_repair_state_rfnpc | // Iccm sb ecc
-                                 debug_resume_req_f | // resume from debug halt, fetch the dpc
-                                 sel_npc_resume |  // resume from pmu/fw halt, or from pause and fetch the NPC
-                                 dec_tlu_wr_pause_r_d1 | // flush at start of pause
-                                 i0_trigger_hit_r; // trigger hit, ebreak or goto debug mode
-
-   assign tlu_flush_lower_r = interrupt_valid_r | mret_r | synchronous_flush_r | take_halt | take_reset | take_ext_int_start;
-
-   assign tlu_flush_path_r[31:1] = take_reset ? rst_vec[31:1] :
-
-                                    ( ({31{sel_fir_addr}} & lsu_fir_addr[31:1]) |
-                                      ({31{~take_nmi & sel_npc_r}} & npc_r[31:1]) |
-                                      ({31{~take_nmi & rfpc_i0_r & dec_tlu_i0_valid_r & ~sel_npc_r}} & dec_tlu_i0_pc_r[31:1]) |
-                                      ({31{interrupt_valid_r & ~sel_fir_addr}} & interrupt_path[31:1]) |
-                                      ({31{(i0_exception_valid_r | lsu_exc_valid_r |
-                                            (i0_trigger_hit_r & ~trigger_hit_dmode_r)) & ~interrupt_valid_r & ~sel_fir_addr}} & {mtvec[30:1],1'b0}) |
-                                      ({31{~take_nmi & mret_r}} & mepc[31:1]) |
-                                      ({31{~take_nmi & debug_resume_req_f}} & dpc[31:1]) |
-                                      ({31{~take_nmi & sel_npc_resume}} & npc_r_d1[31:1]) );
-
-   rvdffpcie #(31)  flush_lower_ff (.*, .en(tlu_flush_lower_r),
-                                 .din({tlu_flush_path_r[31:1]}),
-                                 .dout({tlu_flush_path_r_d1[31:1]}));
-
-   assign dec_tlu_flush_lower_wb = tlu_flush_lower_r_d1;
-   assign dec_tlu_flush_lower_r = tlu_flush_lower_r;
-   assign dec_tlu_flush_path_r[31:1] = tlu_flush_path_r[31:1];
-
-
-   // this is used to capture mepc, etc.
-   assign exc_or_int_valid_r = lsu_exc_valid_r | i0_exception_valid_r | interrupt_valid_r | (i0_trigger_hit_r & ~trigger_hit_dmode_r);
-
-
-   rvdffie #(12)  excinfo_wb_ff (.*,
-                                 .din({interrupt_valid_r, i0_exception_valid_r, exc_or_int_valid_r,
-                                       exc_cause_r[4:0], tlu_i0_commit_cmt & ~illegal_r, i0_trigger_hit_r,
-                                       take_nmi, pause_expired_r }),
-                                 .dout({interrupt_valid_r_d1, i0_exception_valid_r_d1, exc_or_int_valid_r_d1,
-                                        exc_cause_wb[4:0], i0_valid_wb, trigger_hit_r_d1,
-                                        take_nmi_r_d1, pause_expired_wb}));
-
-   //----------------------------------------------------------------------
-   //
-   // CSRs
-   //
-   //----------------------------------------------------------------------
-
-
-   // ----------------------------------------------------------------------
-   // MISA (RO)
-   //  [31:30] XLEN - implementation width, 2'b01 - 32 bits
-   //  [12]    M    - integer mul/div
-   //  [8]     I    - RV32I
-   //  [2]     C    - Compressed extension
-   localparam MISA          = 12'h301;
-
-   // MVENDORID, MARCHID, MIMPID, MHARTID
-   localparam MVENDORID     = 12'hf11;
-   localparam MARCHID       = 12'hf12;
-   localparam MIMPID        = 12'hf13;
-   localparam MHARTID       = 12'hf14;
-
-
-   // ----------------------------------------------------------------------
-   // MSTATUS (RW)
-   // [12:11] MPP  : Prior priv level, always 2'b11, not flopped
-   // [7]     MPIE : Int enable previous [1]
-   // [3]     MIE  : Int enable          [0]
-   localparam MSTATUS       = 12'h300;
-
-
-   //When executing a MRET instruction, supposing MPP holds the value 3, MIE
-   //is set to MPIE; the privilege mode is changed to 3; MPIE is set to 1; and MPP is set to 3
-
-   assign dec_csr_wen_r_mod = dec_csr_wen_r & ~i0_trigger_hit_r & ~rfpc_i0_r;
-   assign wr_mstatus_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSTATUS);
-
-   // set this even if we don't go to fwhalt due to debug halt. We committed the inst, so ...
-   assign set_mie_pmu_fw_halt = ~mpmc_b_ns[1] & fw_halt_req;
-
-   assign mstatus_ns[1:0] = ( ({2{~wr_mstatus_r & exc_or_int_valid_r}} & {mstatus[MSTATUS_MIE], 1'b0}) |
-                              ({2{ wr_mstatus_r & exc_or_int_valid_r}} & {dec_csr_wrdata_r[3], 1'b0}) |
-                              ({2{mret_r & ~exc_or_int_valid_r}} & {1'b1, mstatus[1]}) |
-                              ({2{set_mie_pmu_fw_halt}} & {mstatus[1], 1'b1}) |
-                              ({2{wr_mstatus_r & ~exc_or_int_valid_r}} & {dec_csr_wrdata_r[7], dec_csr_wrdata_r[3]}) |
-                              ({2{~wr_mstatus_r & ~exc_or_int_valid_r & ~mret_r & ~set_mie_pmu_fw_halt}} & mstatus[1:0]) );
-
-   // gate MIE if we are single stepping and DCSR[STEPIE] is off
-   assign mstatus_mie_ns = mstatus[MSTATUS_MIE] & (~dcsr_single_step_running_f | dcsr[DCSR_STEPIE]);
-
-   // ----------------------------------------------------------------------
-   // MTVEC (RW)
-   // [31:2] BASE : Trap vector base address
-   // [1] - Reserved, not implemented, reads zero
-   // [0]  MODE : 0 = Direct, 1 = Asyncs are vectored to BASE + (4 * CAUSE)
-   localparam MTVEC         = 12'h305;
-
-   assign wr_mtvec_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTVEC);
-   assign mtvec_ns[30:0] = {dec_csr_wrdata_r[31:2], dec_csr_wrdata_r[0]} ;
-   rvdffe #(31)  mtvec_ff (.*, .en(wr_mtvec_r), .din(mtvec_ns[30:0]), .dout(mtvec[30:0]));
-
-   // ----------------------------------------------------------------------
-   // MIP (RW)
-   //
-   // [30] MCEIP  : (RO) M-Mode Correctable Error interrupt pending
-   // [29] MITIP0 : (RO) M-Mode Internal Timer0 interrupt pending
-   // [28] MITIP1 : (RO) M-Mode Internal Timer1 interrupt pending
-   // [11] MEIP   : (RO) M-Mode external interrupt pending
-   // [7]  MTIP   : (RO) M-Mode timer interrupt pending
-   // [3]  MSIP   : (RO) M-Mode software interrupt pending
-   localparam MIP           = 12'h344;
-
-   assign ce_int = (mdccme_ce_req | miccme_ce_req | mice_ce_req);
-
-   assign mip_ns[5:0] = {ce_int, dec_timer_t0_pulse, dec_timer_t1_pulse, mexintpend, timer_int_sync, soft_int_sync};
-
-   // ----------------------------------------------------------------------
-   // MIE (RW)
-   // [30] MCEIE  : (RO) M-Mode Correctable Error interrupt enable
-   // [29] MITIE0 : (RO) M-Mode Internal Timer0 interrupt enable
-   // [28] MITIE1 : (RO) M-Mode Internal Timer1 interrupt enable
-   // [11] MEIE   : (RW) M-Mode external interrupt enable
-   // [7]  MTIE   : (RW) M-Mode timer interrupt enable
-   // [3]  MSIE   : (RW) M-Mode software interrupt enable
-   localparam MIE           = 12'h304;
-
-   assign wr_mie_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MIE);
-   assign mie_ns[5:0] = wr_mie_r ? {dec_csr_wrdata_r[30:28], dec_csr_wrdata_r[11], dec_csr_wrdata_r[7], dec_csr_wrdata_r[3]} : mie[5:0];
-   rvdff #(6)  mie_ff (.*, .clk(csr_wr_clk), .din(mie_ns[5:0]), .dout(mie[5:0]));
-
-
-   // ----------------------------------------------------------------------
-   // MCYCLEL (RW)
-   // [31:0] : Lower Cycle count
-
-   localparam MCYCLEL       = 12'hb00;
-
-   assign kill_ebreak_count_r = ebreak_to_debug_mode_r & dcsr[DCSR_STOPC];
-
-   assign wr_mcyclel_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCYCLEL);
-
-   assign mcyclel_cout_in = ~(kill_ebreak_count_r | (dec_tlu_dbg_halted & dcsr[DCSR_STOPC]) | dec_tlu_pmu_fw_halted | mcountinhibit[0]);
-
-   // split for power
-   assign {mcyclela_cout, mcyclel_inc[7:0]}  = mcyclel[7:0] +  {7'b0, 1'b1};
-   assign {mcyclel_cout,  mcyclel_inc[31:8]} = mcyclel[31:8] + {23'b0, mcyclela_cout};
-
-   assign mcyclel_ns[31:0] = wr_mcyclel_r ? dec_csr_wrdata_r[31:0] : mcyclel_inc[31:0];
-
-   rvdffe #(24) mcyclel_bff      (.*, .clk(free_l2clk), .en(wr_mcyclel_r | (mcyclela_cout & mcyclel_cout_in)),    .din(mcyclel_ns[31:8]), .dout(mcyclel[31:8]));
-   rvdffe #(8)  mcyclel_aff      (.*, .clk(free_l2clk), .en(wr_mcyclel_r | mcyclel_cout_in),  .din(mcyclel_ns[7:0]),  .dout(mcyclel[7:0]));
-
-   // ----------------------------------------------------------------------
-   // MCYCLEH (RW)
-   // [63:32] : Higher Cycle count
-   // Chained with mcyclel. Note: mcyclel overflow due to a mcycleh write gets ignored.
-
-   localparam MCYCLEH       = 12'hb80;
-
-   assign wr_mcycleh_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCYCLEH);
-
-   assign mcycleh_inc[31:0] = mcycleh[31:0] + {31'b0, mcyclel_cout_f};
-   assign mcycleh_ns[31:0]  = wr_mcycleh_r ? dec_csr_wrdata_r[31:0] : mcycleh_inc[31:0];
-
-   rvdffe #(32)  mcycleh_ff (.*, .clk(free_l2clk), .en(wr_mcycleh_r | mcyclel_cout_f), .din(mcycleh_ns[31:0]), .dout(mcycleh[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MINSTRETL (RW)
-   // [31:0] : Lower Instruction retired count
-   // From the spec "Some CSRs, such as the instructions retired counter, instret, may be modified as side effects
-   // of instruction execution. In these cases, if a CSR access instruction reads a CSR, it reads the
-   // value prior to the execution of the instruction. If a CSR access instruction writes a CSR, the
-   // update occurs after the execution of the instruction. In particular, a value written to instret by
-   // one instruction will be the value read by the following instruction (i.e., the increment of instret
-   // caused by the first instruction retiring happens before the write of the new value)."
-   localparam MINSTRETL     = 12'hb02;
-
-   assign i0_valid_no_ebreak_ecall_r = dec_tlu_i0_valid_r & ~(ebreak_r | ecall_r | ebreak_to_debug_mode_r | illegal_r | mcountinhibit[2]);
-
-   assign wr_minstretl_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MINSTRETL);
-
-   assign {minstretl_couta, minstretl_inc[7:0]} = minstretl[7:0] + {7'b0,1'b1};
-   assign {minstretl_cout, minstretl_inc[31:8]} = minstretl[31:8] + {23'b0, minstretl_couta};
-
-   assign minstret_enable = (i0_valid_no_ebreak_ecall_r & tlu_i0_commit_cmt) | wr_minstretl_r;
-
-   assign minstretl_cout_ns = minstretl_cout & ~wr_minstreth_r & i0_valid_no_ebreak_ecall_r & ~dec_tlu_dbg_halted;
-
-   assign minstretl_ns[31:0] = wr_minstretl_r ? dec_csr_wrdata_r[31:0] : minstretl_inc[31:0];
-   rvdffe #(24)  minstretl_bff (.*, .en(wr_minstretl_r | (minstretl_couta & minstret_enable)),
-                                .din(minstretl_ns[31:8]), .dout(minstretl[31:8]));
-   rvdffe #(8)   minstretl_aff (.*, .en(minstret_enable),
-                                .din(minstretl_ns[7:0]),  .dout(minstretl[7:0]));
-
-
-   assign minstretl_read[31:0] = minstretl[31:0];
-   // ----------------------------------------------------------------------
-   // MINSTRETH (RW)
-   // [63:32] : Higher Instret count
-   // Chained with minstretl. Note: minstretl overflow due to a minstreth write gets ignored.
-
-   localparam MINSTRETH     = 12'hb82;
-
-   assign wr_minstreth_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MINSTRETH);
-
-   assign minstreth_inc[31:0] = minstreth[31:0] + {31'b0, minstretl_cout_f};
-   assign minstreth_ns[31:0]  = wr_minstreth_r ? dec_csr_wrdata_r[31:0] : minstreth_inc[31:0];
-   rvdffe #(32)  minstreth_ff (.*, .en((minstret_enable_f & minstretl_cout_f) | wr_minstreth_r), .din(minstreth_ns[31:0]), .dout(minstreth[31:0]));
-
-   assign minstreth_read[31:0] = minstreth_inc[31:0];
-
-   // ----------------------------------------------------------------------
-   // MSCRATCH (RW)
-   // [31:0] : Scratch register
-   localparam MSCRATCH      = 12'h340;
-
-   assign wr_mscratch_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSCRATCH);
-
-   rvdffe #(32)  mscratch_ff (.*, .en(wr_mscratch_r), .din(dec_csr_wrdata_r[31:0]), .dout(mscratch[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MEPC (RW)
-   // [31:1] : Exception PC
-   localparam MEPC          = 12'h341;
-
-   // NPC
-
-   assign sel_exu_npc_r = ~dec_tlu_dbg_halted & ~tlu_flush_lower_r_d1 & dec_tlu_i0_valid_r;
-   assign sel_flush_npc_r = ~dec_tlu_dbg_halted & tlu_flush_lower_r_d1 & ~dec_tlu_flush_noredir_r_d1;
-   assign sel_hold_npc_r = ~sel_exu_npc_r & ~sel_flush_npc_r;
-
-   assign npc_r[31:1] =  ( ({31{sel_exu_npc_r}} & exu_npc_r[31:1]) |
-                           ({31{~mpc_reset_run_req & reset_delayed}} & rst_vec[31:1]) | // init to reset vector for mpc halt on reset case
-                           ({31{(sel_flush_npc_r)}} & tlu_flush_path_r_d1[31:1]) |
-                           ({31{(sel_hold_npc_r)}} & npc_r_d1[31:1]) );
-
-   rvdffpcie #(31)  npwbc_ff (.*, .en(sel_exu_npc_r | sel_flush_npc_r | reset_delayed), .din(npc_r[31:1]), .dout(npc_r_d1[31:1]));
-
-   // PC has to be captured for exceptions and interrupts. For MRET, we could execute it and then take an
-   // interrupt before the next instruction.
-   assign pc0_valid_r = ~dec_tlu_dbg_halted & dec_tlu_i0_valid_r;
-
-   assign pc_r[31:1]  = ( ({31{ pc0_valid_r}} & dec_tlu_i0_pc_r[31:1]) |
-                          ({31{~pc0_valid_r}} & pc_r_d1[31:1]));
-
-   rvdffpcie #(31)  pwbc_ff (.*, .en(pc0_valid_r), .din(pc_r[31:1]), .dout(pc_r_d1[31:1]));
-
-   assign wr_mepc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEPC);
-
-   assign mepc_ns[31:1] = ( ({31{i0_exception_valid_r | lsu_exc_valid_r | mepc_trigger_hit_sel_pc_r}} & pc_r[31:1]) |
-                            ({31{interrupt_valid_r}} & npc_r[31:1]) |
-                            ({31{wr_mepc_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[31:1]) |
-                            ({31{~wr_mepc_r & ~exc_or_int_valid_r}} & mepc[31:1]) );
-
-
-   rvdffe #(31)  mepc_ff (.*, .en(i0_exception_valid_r | lsu_exc_valid_r | mepc_trigger_hit_sel_pc_r | interrupt_valid_r | wr_mepc_r), .din(mepc_ns[31:1]), .dout(mepc[31:1]));
-
-   // ----------------------------------------------------------------------
-   // MCAUSE (RW)
-   // [31:0] : Exception Cause
-   localparam MCAUSE        = 12'h342;
-
-   assign wr_mcause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCAUSE);
-   assign mcause_sel_nmi_store = exc_or_int_valid_r & take_nmi & nmi_lsu_store_type;
-   assign mcause_sel_nmi_load = exc_or_int_valid_r & take_nmi & nmi_lsu_load_type;
-   assign mcause_sel_nmi_ext = exc_or_int_valid_r & take_nmi & take_ext_int_start_d3 & |lsu_fir_error[1:0] & ~nmi_int_detected_f;
-   // FIR value decoder
-   // 0 –no error
-   // 1 –uncorrectable ecc  => f000_1000
-   // 2 –dccm region access error => f000_1001
-   // 3 –non dccm region access error => f000_1002
-   assign mcause_fir_error_type[1:0] = {&lsu_fir_error[1:0], lsu_fir_error[1] & ~lsu_fir_error[0]};
-
-   assign mcause_ns[31:0] = ( ({32{mcause_sel_nmi_store}} & {32'hf000_0000}) |
-                              ({32{mcause_sel_nmi_load}} & {32'hf000_0001}) |
-                              ({32{mcause_sel_nmi_ext}} & {28'hf000_100, 2'b0, mcause_fir_error_type[1:0]}) |
-                              ({32{exc_or_int_valid_r & ~take_nmi}} & {interrupt_valid_r, 26'b0, exc_cause_r[4:0]}) |
-                              ({32{wr_mcause_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[31:0]) |
-                              ({32{~wr_mcause_r & ~exc_or_int_valid_r}} & mcause[31:0]) );
-
-   rvdffe #(32)  mcause_ff (.*, .en(exc_or_int_valid_r | wr_mcause_r), .din(mcause_ns[31:0]), .dout(mcause[31:0]));
-   // ----------------------------------------------------------------------
-   // MSCAUSE (RW)
-   // [2:0] : Secondary exception Cause
-   localparam MSCAUSE       = 12'h7ff;
-
-   assign wr_mscause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSCAUSE);
-
-   assign ifu_mscause[3:0]  =  (dec_tlu_packet_r.icaf_type[1:0] == 2'b00) ? 4'b1001 :
-                               {2'b00 , dec_tlu_packet_r.icaf_type[1:0]} ;
-
-   assign mscause_type[3:0] = ( ({4{lsu_i0_exc_r}} & lsu_error_pkt_r.mscause[3:0]) |
-                                ({4{i0_trigger_hit_r}} & 4'b0001) |
-                                ({4{ebreak_r}} & 4'b0010) |
-                                ({4{inst_acc_r}} & ifu_mscause[3:0])
-                                );
-
-   assign mscause_ns[3:0] = ( ({4{exc_or_int_valid_r}} & mscause_type[3:0]) |
-                              ({4{ wr_mscause_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[3:0]) |
-                              ({4{~wr_mscause_r & ~exc_or_int_valid_r}} & mscause[3:0])
-                             );
-
-   rvdff #(4)  mscause_ff (.*, .clk(e4e5_int_clk), .din(mscause_ns[3:0]), .dout(mscause[3:0]));
-   // ----------------------------------------------------------------------
-   // MTVAL (RW)
-   // [31:0] : Exception address if relevant
-   localparam MTVAL         = 12'h343;
-
-   assign wr_mtval_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTVAL);
-   assign mtval_capture_pc_r = exc_or_int_valid_r & (ebreak_r | (inst_acc_r & ~inst_acc_second_r) | mepc_trigger_hit_sel_pc_r) & ~take_nmi;
-   assign mtval_capture_pc_plus2_r = exc_or_int_valid_r & (inst_acc_r & inst_acc_second_r) & ~take_nmi;
-   assign mtval_capture_inst_r = exc_or_int_valid_r & illegal_r & ~take_nmi;
-   assign mtval_capture_lsu_r = exc_or_int_valid_r & lsu_exc_valid_r & ~take_nmi;
-   assign mtval_clear_r = exc_or_int_valid_r & ~mtval_capture_pc_r & ~mtval_capture_inst_r & ~mtval_capture_lsu_r & ~mepc_trigger_hit_sel_pc_r;
-
-
-   assign mtval_ns[31:0] = (({32{mtval_capture_pc_r}} & {pc_r[31:1], 1'b0}) |
-                            ({32{mtval_capture_pc_plus2_r}} & {pc_r[31:1] + 31'b1, 1'b0}) |
-                            ({32{mtval_capture_inst_r}} & dec_illegal_inst[31:0]) |
-                            ({32{mtval_capture_lsu_r}} & lsu_error_pkt_addr_r[31:0]) |
-                            ({32{wr_mtval_r & ~interrupt_valid_r}} & dec_csr_wrdata_r[31:0]) |
-                            ({32{~take_nmi & ~wr_mtval_r & ~mtval_capture_pc_r & ~mtval_capture_inst_r & ~mtval_clear_r & ~mtval_capture_lsu_r}} & mtval[31:0]) );
-
-
-   rvdffe #(32)  mtval_ff (.*, .en(tlu_flush_lower_r | wr_mtval_r), .din(mtval_ns[31:0]), .dout(mtval[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MCGC (RW) Clock gating control
-   // [31:10]: Reserved, reads 0x0
-   // [9]    : picio_clk_override
-   // [7]    : dec_clk_override
-   // [6]    : Unused
-   // [5]    : ifu_clk_override
-   // [4]    : lsu_clk_override
-   // [3]    : bus_clk_override
-   // [2]    : pic_clk_override
-   // [1]    : dccm_clk_override
-   // [0]    : icm_clk_override
-   //
-   localparam MCGC          = 12'h7f8;
-   assign wr_mcgc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCGC);
-
-   assign mcgc_ns[9:0] = wr_mcgc_r ? {~dec_csr_wrdata_r[9], dec_csr_wrdata_r[8:0]} : mcgc_int[9:0];
-   rvdffe #(10)  mcgc_ff (.*, .en(wr_mcgc_r), .din(mcgc_ns[9:0]), .dout(mcgc_int[9:0]));
-
-   assign mcgc[9:0] = {~mcgc_int[9], mcgc_int[8:0]};
-
-   assign dec_tlu_picio_clk_override= mcgc[9];
-   assign dec_tlu_misc_clk_override = mcgc[8];
-   assign dec_tlu_dec_clk_override  = mcgc[7];
-   //sign dec_tlu_exu_clk_override  = mcgc[6];
-   assign dec_tlu_ifu_clk_override  = mcgc[5];
-   assign dec_tlu_lsu_clk_override  = mcgc[4];
-   assign dec_tlu_bus_clk_override  = mcgc[3];
-   assign dec_tlu_pic_clk_override  = mcgc[2];
-   assign dec_tlu_dccm_clk_override = mcgc[1];
-   assign dec_tlu_icm_clk_override  = mcgc[0];
-
-   // ----------------------------------------------------------------------
-   // MFDC (RW) Feature Disable Control
-   // [31:19] : Reserved, reads 0x0
-   // [18:16] : DMA QoS Prty
-   // [15:13] : Reserved, reads 0x0
-   // [12]   : Disable trace
-   // [11]   : Disable external load forwarding
-   // [10]   : Disable dual issue
-   // [9]    : Disable pic multiple ints
-   // [8]    : Disable core ecc
-   // [7]    : Disable secondary alu?s
-   // [6]    : Unused, 0x0
-   // [5]    : Disable non-blocking loads/divides
-   // [4]    : Disable fast divide
-   // [3]    : Disable branch prediction and return stack
-   // [2]    : Disable write buffer coalescing
-   // [1]    : Disable load misses that bypass the write buffer
-   // [0]    : Disable pipelining - Enable single instruction execution
-   //
-   localparam MFDC          = 12'h7f9;
-
-   assign wr_mfdc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDC);
-
-   rvdffe #(16)  mfdc_ff (.*, .en(wr_mfdc_r), .din({mfdc_ns[15:0]}), .dout(mfdc_int[15:0]));
-
-   // flip poweron value of bit 6 for AXI build
-   if(pt.BUILD_AXI4==1) begin : axi4
-      // flip poweron valid of bit 12
-         assign mfdc_ns[15:0] = {~dec_csr_wrdata_r[18:16], dec_csr_wrdata_r[12], dec_csr_wrdata_r[11:7], ~dec_csr_wrdata_r[6], dec_csr_wrdata_r[5:0]};
-         assign mfdc[18:0] = {~mfdc_int[15:13], 3'b0, mfdc_int[12], mfdc_int[11:7], ~mfdc_int[6], mfdc_int[5:0]};
-   end
-   else begin
-      // flip poweron valid of bit 12
-         assign mfdc_ns[15:0] = {~dec_csr_wrdata_r[18:16],dec_csr_wrdata_r[12:0]};
-         assign mfdc[18:0] = {~mfdc_int[15:13], 3'b0, mfdc_int[12:0]};
-   end
-
-
-   assign dec_tlu_dma_qos_prty[2:0] = mfdc[18:16];
-   assign dec_tlu_trace_disable = mfdc[12];
-   assign dec_tlu_external_ldfwd_disable = mfdc[11];
-   assign dec_tlu_core_ecc_disable = 1'b1;//mfdc[8];
-   assign dec_tlu_sideeffect_posted_disable = mfdc[6];
-   assign dec_tlu_bpred_disable = mfdc[3];
-   assign dec_tlu_wb_coalescing_disable = mfdc[2];
-   assign dec_tlu_pipelining_disable = mfdc[0];
-
-   // ----------------------------------------------------------------------
-   // MCPC (RW) Pause counter
-   // [31:0] : Reads 0x0, decs in the wb register in decode_ctl
-
-   assign dec_tlu_wr_pause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCPC) & ~interrupt_valid_r & ~take_ext_int_start;
-
-   // ----------------------------------------------------------------------
-   // MRAC (RW)
-   // [31:0] : Region Access Control Register, 16 regions, {side_effect, cachable} pairs
-   localparam MRAC          = 12'h7c0;
-
-   assign wr_mrac_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MRAC);
-
-   // prevent pairs of 0x11, side_effect and cacheable
-   assign mrac_in[31:0] = {dec_csr_wrdata_r[31], dec_csr_wrdata_r[30] & ~dec_csr_wrdata_r[31],
-                           dec_csr_wrdata_r[29], dec_csr_wrdata_r[28] & ~dec_csr_wrdata_r[29],
-                           dec_csr_wrdata_r[27], dec_csr_wrdata_r[26] & ~dec_csr_wrdata_r[27],
-                           dec_csr_wrdata_r[25], dec_csr_wrdata_r[24] & ~dec_csr_wrdata_r[25],
-                           dec_csr_wrdata_r[23], dec_csr_wrdata_r[22] & ~dec_csr_wrdata_r[23],
-                           dec_csr_wrdata_r[21], dec_csr_wrdata_r[20] & ~dec_csr_wrdata_r[21],
-                           dec_csr_wrdata_r[19], dec_csr_wrdata_r[18] & ~dec_csr_wrdata_r[19],
-                           dec_csr_wrdata_r[17], dec_csr_wrdata_r[16] & ~dec_csr_wrdata_r[17],
-                           dec_csr_wrdata_r[15], dec_csr_wrdata_r[14] & ~dec_csr_wrdata_r[15],
-                           dec_csr_wrdata_r[13], dec_csr_wrdata_r[12] & ~dec_csr_wrdata_r[13],
-                           dec_csr_wrdata_r[11], dec_csr_wrdata_r[10] & ~dec_csr_wrdata_r[11],
-                           dec_csr_wrdata_r[9], dec_csr_wrdata_r[8] & ~dec_csr_wrdata_r[9],
-                           dec_csr_wrdata_r[7], dec_csr_wrdata_r[6] & ~dec_csr_wrdata_r[7],
-                           dec_csr_wrdata_r[5], dec_csr_wrdata_r[4] & ~dec_csr_wrdata_r[5],
-                           dec_csr_wrdata_r[3], dec_csr_wrdata_r[2] & ~dec_csr_wrdata_r[3],
-                           dec_csr_wrdata_r[1], dec_csr_wrdata_r[0] & ~dec_csr_wrdata_r[1]};
-
-   rvdffe #(32)  mrac_ff (.*, .en(wr_mrac_r), .din(mrac_in[31:0]), .dout(mrac[31:0]));
-
-   // drive to LSU/IFU
-   assign dec_tlu_mrac_ff[31:0] = mrac[31:0];
-
-   // ----------------------------------------------------------------------
-   // MDEAU (WAR0)
-   // [31:0] : Dbus Error Address Unlock register
-   //
-   localparam MDEAU         = 12'hbc0;
-
-   assign wr_mdeau_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MDEAU);
-
-
-   // ----------------------------------------------------------------------
-   // MDSEAC (R)
-   // [31:0] : Dbus Store Error Address Capture register
-   //
-   localparam MDSEAC        = 12'hfc0;
-
-   // only capture error bus if the MDSEAC reg is not locked
-   assign mdseac_locked_ns = mdseac_en | (mdseac_locked_f & ~wr_mdeau_r);
-
-   assign mdseac_en = (lsu_imprecise_error_store_any | lsu_imprecise_error_load_any) & ~nmi_int_detected_f & ~mdseac_locked_f;
-
-   rvdffe #(32)  mdseac_ff (.*, .en(mdseac_en), .din(lsu_imprecise_error_addr_any[31:0]), .dout(mdseac[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MPMC (R0W1)
-   // [0] : FW halt
-   // [1] : Set MSTATUS[MIE] on halt
-
-   localparam MPMC          = 12'h7c6;
-
-   assign wr_mpmc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MPMC);
-
-   // allow the cycle of the dbg halt flush that contains the wr_mpmc_r to
-   // set the mstatus bit potentially, use delayed version of internal dbg halt.
-   assign fw_halt_req = wr_mpmc_r & dec_csr_wrdata_r[0] & ~internal_dbg_halt_mode_f2 & ~ext_int_freeze_d1;
-
-   assign fw_halted_ns = (fw_halt_req | fw_halted) & ~set_mie_pmu_fw_halt;
-   assign mpmc_b_ns[1] = wr_mpmc_r ? ~dec_csr_wrdata_r[1] : ~mpmc[1];
-   rvdff #(1)  mpmc_ff (.*, .clk(csr_wr_clk), .din(mpmc_b_ns[1]), .dout(mpmc_b[1]));
-   assign mpmc[1] = ~mpmc_b[1];
-
-   // ----------------------------------------------------------------------
-   // MICECT (I-Cache error counter/threshold)
-   // [31:27] : Icache parity error threshold
-   // [26:0]  : Icache parity error count
-   localparam MICECT        = 12'h7f0;
-
-   assign csr_sat[31:27] = (dec_csr_wrdata_r[31:27] > 5'd26) ? 5'd26 : dec_csr_wrdata_r[31:27];
-
-   assign wr_micect_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MICECT);
-   assign micect_inc[26:0] = micect[26:0] + {26'b0, ic_perr_r};
-   assign micect_ns =  wr_micect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {micect[31:27], micect_inc[26:0]};
-
-   rvdffe #(32)  micect_ff (.*, .en(wr_micect_r | ic_perr_r), .din(micect_ns[31:0]), .dout(micect[31:0]));
-
-   assign mice_ce_req = |({32'hffffffff << micect[31:27]} & {5'b0, micect[26:0]});
-
-   // ----------------------------------------------------------------------
-   // MICCMECT (ICCM error counter/threshold)
-   // [31:27] : ICCM parity error threshold
-   // [26:0]  : ICCM parity error count
-   localparam MICCMECT      = 12'h7f1;
-
-   assign wr_miccmect_r     = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MICCMECT);
-   assign miccmect_inc[26:0] = miccmect[26:0] + {26'b0, iccm_sbecc_r | iccm_dma_sb_error};
-   assign miccmect_ns        = wr_miccmect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {miccmect[31:27], miccmect_inc[26:0]};
-
-   rvdffe #(32)  miccmect_ff (.*, .clk(free_l2clk), .en(wr_miccmect_r | iccm_sbecc_r | iccm_dma_sb_error), .din(miccmect_ns[31:0]), .dout(miccmect[31:0]));
-
-   assign miccme_ce_req = |({32'hffffffff << miccmect[31:27]} & {5'b0, miccmect[26:0]});
-
-   // ----------------------------------------------------------------------
-   // MDCCMECT (DCCM error counter/threshold)
-   // [31:27] : DCCM parity error threshold
-   // [26:0]  : DCCM parity error count
-   localparam MDCCMECT      = 12'h7f2;
-
-   assign wr_mdccmect_r     = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MDCCMECT);
-   assign mdccmect_inc[26:0] = mdccmect[26:0] + {26'b0, lsu_single_ecc_error_r_d1};
-   assign mdccmect_ns        = wr_mdccmect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {mdccmect[31:27], mdccmect_inc[26:0]};
-
-   rvdffe #(32)  mdccmect_ff (.*, .clk(free_l2clk), .en(wr_mdccmect_r | lsu_single_ecc_error_r_d1), .din(mdccmect_ns[31:0]), .dout(mdccmect[31:0]));
-
-   assign mdccme_ce_req = |({32'hffffffff << mdccmect[31:27]} & {5'b0, mdccmect[26:0]});
-
-
-   // ----------------------------------------------------------------------
-   // MFDHT (Force Debug Halt Threshold)
-   // [5:1] : Halt timeout threshold (power of 2)
-   //   [0] : Halt timeout enabled
-   localparam MFDHT         = 12'h7ce;
-
-   assign wr_mfdht_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDHT);
-
-   assign mfdht_ns[5:0] = wr_mfdht_r ? dec_csr_wrdata_r[5:0] : mfdht[5:0];
-
-   rvdffs #(6)  mfdht_ff (.*, .clk(csr_wr_clk), .en(wr_mfdht_r), .din(mfdht_ns[5:0]), .dout(mfdht[5:0]));
-
-    // ----------------------------------------------------------------------
-   // MFDHS(RW)
-   // [1] : LSU operation pending when debug halt threshold reached
-   // [0] : IFU operation pending when debug halt threshold reached
-
-   localparam MFDHS         = 12'h7cf;
-
-   assign wr_mfdhs_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDHS);
-
-   assign mfdhs_ns[1:0] = wr_mfdhs_r ? dec_csr_wrdata_r[1:0] : ((dbg_tlu_halted & ~dbg_tlu_halted_f) ? {~lsu_idle_any_f, ~ifu_miss_state_idle_f} : mfdhs[1:0]);
-
-   rvdffs #(2)  mfdhs_ff (.*, .clk(free_clk), .en(wr_mfdhs_r | dbg_tlu_halted), .din(mfdhs_ns[1:0]), .dout(mfdhs[1:0]));
-
-   assign force_halt_ctr[31:0] = debug_halt_req_f ? (force_halt_ctr_f[31:0] + 32'b1) : (dbg_tlu_halted_f ? 32'b0 : force_halt_ctr_f[31:0]);
-
-   rvdffe #(32)  forcehaltctr_ff (.*, .en(mfdht[0]), .din(force_halt_ctr[31:0]), .dout(force_halt_ctr_f[31:0]));
-
-   assign force_halt = mfdht[0] & |(force_halt_ctr_f[31:0] & (32'hffffffff << mfdht[5:1]));
-
-
-   // ----------------------------------------------------------------------
-   // MEIVT (External Interrupt Vector Table (R/W))
-   // [31:10]: Base address (R/W)
-   // [9:0]  : Reserved, reads 0x0
-   localparam MEIVT         = 12'hbc8;
-
-   assign wr_meivt_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEIVT);
-
-   rvdffe #(22)  meivt_ff (.*, .en(wr_meivt_r), .din(dec_csr_wrdata_r[31:10]), .dout(meivt[31:10]));
-
-
-   // ----------------------------------------------------------------------
-   // MEIHAP (External Interrupt Handler Access Pointer (R))
-   // [31:10]: Base address (R/W)
-   // [9:2]  : ClaimID (R)
-   // [1:0]  : Reserved, 0x0
-   localparam MEIHAP        = 12'hfc8;
-
-   assign wr_meihap_r = wr_meicpct_r;
-
-   rvdffe #(8)  meihap_ff (.*, .en(wr_meihap_r), .din(pic_claimid[7:0]), .dout(meihap[9:2]));
-
-   assign dec_tlu_meihap[31:2] = {meivt[31:10], meihap[9:2]};
-   // ----------------------------------------------------------------------
-   // MEICURPL (R/W)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : CURRPRI - Priority level of current interrupt service routine (R/W)
-   localparam MEICURPL      = 12'hbcc;
-
-   assign wr_meicurpl_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICURPL);
-   assign meicurpl_ns[3:0] = wr_meicurpl_r ? dec_csr_wrdata_r[3:0] : meicurpl[3:0];
-
-   rvdff #(4)  meicurpl_ff (.*, .clk(csr_wr_clk), .din(meicurpl_ns[3:0]), .dout(meicurpl[3:0]));
-
-   // PIC needs this reg
-   assign dec_tlu_meicurpl[3:0] = meicurpl[3:0];
-
-
-   // ----------------------------------------------------------------------
-   // MEICIDPL (R/W)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : External Interrupt Claim ID's Priority Level Register
-   localparam MEICIDPL      = 12'hbcb;
-
-   assign wr_meicidpl_r = (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICIDPL)) | take_ext_int_start;
-
-   assign meicidpl_ns[3:0] = wr_meicpct_r ? pic_pl[3:0] : (wr_meicidpl_r ? dec_csr_wrdata_r[3:0] : meicidpl[3:0]);
-
-
-   // ----------------------------------------------------------------------
-   // MEICPCT (Capture CLAIMID in MEIHAP and PL in MEICIDPL
-   // [31:1] : Reserved (read 0x0)
-   // [0]    : Capture (W1, Read 0)
-   localparam MEICPCT       = 12'hbca;
-
-   assign wr_meicpct_r = (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICPCT)) | take_ext_int_start;
-
-   // ----------------------------------------------------------------------
-   // MEIPT (External Interrupt Priority Threshold)
-   // [31:4] : Reserved (read 0x0)
-   // [3:0]  : PRITHRESH
-   localparam MEIPT         = 12'hbc9;
-
-   assign wr_meipt_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEIPT);
-   assign meipt_ns[3:0] = wr_meipt_r ? dec_csr_wrdata_r[3:0] : meipt[3:0];
-
-   rvdff #(4)  meipt_ff (.*, .clk(csr_wr_clk), .din(meipt_ns[3:0]), .dout(meipt[3:0]));
-
-   // to PIC
-   assign dec_tlu_meipt[3:0] = meipt[3:0];
-   // ----------------------------------------------------------------------
-   // DCSR (R/W) (Only accessible in debug mode)
-   // [31:28] : xdebugver (hard coded to 0x4) RO
-   // [27:16] : 0x0, reserved
-   // [15]    : ebreakm
-   // [14]    : 0x0, reserved
-   // [13]    : ebreaks (0x0 for this core)
-   // [12]    : ebreaku (0x0 for this core)
-   // [11]    : stepie
-   // [10]    : stopcount
-   // [9]     : 0x0 //stoptime
-   // [8:6]   : cause (RO)
-   // [5:4]   : 0x0, reserved
-   // [3]     : nmip
-   // [2]     : step
-   // [1:0]   : prv (0x3 for this core)
-   //
-   localparam DCSR          = 12'h7b0;
-
-   // RV has clarified that 'priority 4' in the spec means top priority.
-   // 4. single step. 3. Debugger request. 2. Ebreak. 1. Trigger.
-
-   // RV debug spec indicates a cause priority change for trigger hits during single step.
-   assign trigger_hit_for_dscr_cause_r_d1 = trigger_hit_dmode_r_d1 | (trigger_hit_r_d1 & dcsr_single_step_done_f);
-
-   assign dcsr_cause[8:6] = ( ({3{dcsr_single_step_done_f & ~ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1 & ~debug_halt_req}} & 3'b100) |
-                              ({3{debug_halt_req & ~ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1}} &  3'b011) |
-                              ({3{ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1}} &  3'b001) |
-                              ({3{trigger_hit_for_dscr_cause_r_d1}} & 3'b010));
-
-   assign wr_dcsr_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DCSR);
-
-
-
-  // Multiple halt enter requests can happen before we are halted.
-  // We have to continue to upgrade based on dcsr_cause priority but we can't downgrade.
-   assign dcsr_cause_upgradeable = internal_dbg_halt_mode_f & (dcsr[8:6] == 3'b011);
-   assign enter_debug_halt_req_le = enter_debug_halt_req & (~dbg_tlu_halted | dcsr_cause_upgradeable);
-
-   assign nmi_in_debug_mode = nmi_int_detected_f & internal_dbg_halt_mode_f;
-   assign dcsr_ns[15:2] = enter_debug_halt_req_le ? {dcsr[15:9], dcsr_cause[8:6], dcsr[5:2]} :
-                          (wr_dcsr_r ? {dec_csr_wrdata_r[15], 3'b0, dec_csr_wrdata_r[11:10], 1'b0, dcsr[8:6], 2'b00, nmi_in_debug_mode | dcsr[3], dec_csr_wrdata_r[2]} :
-                           {dcsr[15:4], nmi_in_debug_mode, dcsr[2]});
-
-   rvdffe #(14)  dcsr_ff (.*, .clk(free_l2clk), .en(enter_debug_halt_req_le | wr_dcsr_r | internal_dbg_halt_mode | take_nmi), .din(dcsr_ns[15:2]), .dout(dcsr[15:2]));
-
-   // ----------------------------------------------------------------------
-   // DPC (R/W) (Only accessible in debug mode)
-   // [31:0] : Debug PC
-   localparam DPC           = 12'h7b1;
-
-   assign wr_dpc_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DPC);
-   assign dpc_capture_npc = dbg_tlu_halted & ~dbg_tlu_halted_f & ~request_debug_mode_done;
-   assign dpc_capture_pc = request_debug_mode_r;
-
-   assign dpc_ns[31:1] = ( ({31{~dpc_capture_pc & ~dpc_capture_npc & wr_dpc_r}} & dec_csr_wrdata_r[31:1]) |
-                           ({31{dpc_capture_pc}} & pc_r[31:1]) |
-                           ({31{~dpc_capture_pc & dpc_capture_npc}} & npc_r[31:1]) );
-
-   rvdffe #(31)  dpc_ff (.*, .en(wr_dpc_r | dpc_capture_pc | dpc_capture_npc), .din(dpc_ns[31:1]), .dout(dpc[31:1]));
-
-   // ----------------------------------------------------------------------
-   // DICAWICS (R/W) (Only accessible in debug mode)
-   // [31:25] : Reserved
-   // [24]    : Array select, 0 is data, 1 is tag
-   // [23:22] : Reserved
-   // [21:20] : Way select
-   // [19:17] : Reserved
-   // [16:3]  : Index
-   // [2:0]   : Reserved
-   localparam DICAWICS      = 12'h7c8;
-
-   assign dicawics_ns[16:0] = {dec_csr_wrdata_r[24], dec_csr_wrdata_r[21:20], dec_csr_wrdata_r[16:3]};
-   assign wr_dicawics_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAWICS);
-
-   rvdffe #(17)  dicawics_ff (.*, .en(wr_dicawics_r), .din(dicawics_ns[16:0]), .dout(dicawics[16:0]));
-
-   // ----------------------------------------------------------------------
-   // DICAD0 (R/W) (Only accessible in debug mode)
-   //
-   // If dicawics[array] is 0
-   // [31:0]  : inst data
-   //
-   // If dicawics[array] is 1
-   // [31:16] : Tag
-   // [15:7]  : Reserved
-   // [6:4]   : LRU
-   // [3:1]   : Reserved
-   // [0]     : Valid
-   localparam DICAD0        = 12'h7c9;
-
-   assign dicad0_ns[31:0] = wr_dicad0_r ? dec_csr_wrdata_r[31:0] : ifu_ic_debug_rd_data[31:0];
-
-   assign wr_dicad0_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD0);
-
-   rvdffe #(32)  dicad0_ff (.*, .en(wr_dicad0_r | ifu_ic_debug_rd_data_valid), .din(dicad0_ns[31:0]), .dout(dicad0[31:0]));
-
-   // ----------------------------------------------------------------------
-   // DICAD0H (R/W) (Only accessible in debug mode)
-   //
-   // If dicawics[array] is 0
-   // [63:32]  : inst data
-   //
-   localparam DICAD0H       = 12'h7cc;
-
-   assign dicad0h_ns[31:0] = wr_dicad0h_r ? dec_csr_wrdata_r[31:0] : ifu_ic_debug_rd_data[63:32];
-
-   assign wr_dicad0h_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD0H);
-
-   rvdffe #(32)  dicad0h_ff (.*, .en(wr_dicad0h_r | ifu_ic_debug_rd_data_valid), .din(dicad0h_ns[31:0]), .dout(dicad0h[31:0]));
-
-
-if (pt.ICACHE_ECC == 1) begin
-   // ----------------------------------------------------------------------
-   // DICAD1 (R/W) (Only accessible in debug mode)
-   // [6:0]     : ECC
-   localparam DICAD1        = 12'h7ca;
-
-   assign dicad1_ns[6:0] = wr_dicad1_r ? dec_csr_wrdata_r[6:0] : ifu_ic_debug_rd_data[70:64];
-
-   assign wr_dicad1_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD1);
-
-   rvdffe #(.WIDTH(7), .OVERRIDE(1))  dicad1_ff (.*, .en(wr_dicad1_r | ifu_ic_debug_rd_data_valid), .din(dicad1_ns[6:0]), .dout(dicad1_raw[6:0]));
-
-   assign dicad1[31:0] = {25'b0, dicad1_raw[6:0]};
-
-end
-else begin
-   // ----------------------------------------------------------------------
-   // DICAD1 (R/W) (Only accessible in debug mode)
-   // [3:0]     : Parity
-   localparam DICAD1        = 12'h7ca;
-
-   assign dicad1_ns[3:0] = wr_dicad1_r ? dec_csr_wrdata_r[3:0] : ifu_ic_debug_rd_data[67:64];
-
-   assign wr_dicad1_r = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAD1);
-
-   rvdffs #(4)  dicad1_ff (.*, .clk(free_clk), .en(wr_dicad1_r | ifu_ic_debug_rd_data_valid), .din(dicad1_ns[3:0]), .dout(dicad1_raw[3:0]));
-
-   assign dicad1[31:0] = {28'b0, dicad1_raw[3:0]};
-end
-   // ----------------------------------------------------------------------
-   // DICAGO (R/W) (Only accessible in debug mode)
-   // [0]     : Go
-   localparam DICAGO        = 12'h7cb;
-
-if (pt.ICACHE_ECC == 1)
-   assign dec_tlu_ic_diag_pkt.icache_wrdata[70:0] = {      dicad1[6:0], dicad0h[31:0], dicad0[31:0]};
-else
-   assign dec_tlu_ic_diag_pkt.icache_wrdata[70:0] = {3'b0, dicad1[3:0], dicad0h[31:0], dicad0[31:0]};
-
-
-   assign dec_tlu_ic_diag_pkt.icache_dicawics[16:0] = dicawics[16:0];
-
-   assign icache_rd_valid = allow_dbg_halt_csr_write & dec_csr_any_unq_d & dec_i0_decode_d & ~dec_csr_wen_unq_d & (dec_csr_rdaddr_d[11:0] == DICAGO);
-   assign icache_wr_valid = allow_dbg_halt_csr_write & dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == DICAGO);
-
-
-   assign dec_tlu_ic_diag_pkt.icache_rd_valid = icache_rd_valid_f;
-   assign dec_tlu_ic_diag_pkt.icache_wr_valid = icache_wr_valid_f;
-
-   // ----------------------------------------------------------------------
-   // MTSEL (R/W)
-   // [1:0] : Trigger select : 00, 01, 10 are data/address triggers. 11 is inst count
-   localparam MTSEL         = 12'h7a0;
-
-   assign wr_mtsel_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTSEL);
-   assign mtsel_ns[1:0] = wr_mtsel_r ? {dec_csr_wrdata_r[1:0]} : mtsel[1:0];
-
-   rvdff #(2)  mtsel_ff (.*, .clk(csr_wr_clk), .din(mtsel_ns[1:0]), .dout(mtsel[1:0]));
-
-   // ----------------------------------------------------------------------
-   // MTDATA1 (R/W)
-   // [31:0] : Trigger Data 1
-   localparam MTDATA1       = 12'h7a1;
-
-   // for triggers 0, 1, 2 and 3 aka Match Control
-   // [31:28] : type, hard coded to 0x2
-   // [27]    : dmode
-   // [26:21] : hard coded to 0x1f
-   // [20]    : hit
-   // [19]    : select (0 - address, 1 - data)
-   // [18]    : timing, always 'before', reads 0x0
-   // [17:12] : action, bits  [17:13] not implemented and reads 0x0
-   // [11]    : chain
-   // [10:7]  : match, bits [10:8] not implemented and reads 0x0
-   // [6]     : M
-   // [5:3]   : not implemented, reads 0x0
-   // [2]     : execute
-   // [1]     : store
-   // [0]     : load
-   //
-   // decoder ring
-   // [27]    : => 9
-   // [20]    : => 8
-   // [19]    : => 7
-   // [12]    : => 6
-   // [11]    : => 5
-   // [7]     : => 4
-   // [6]     : => 3
-   // [2]     : => 2
-   // [1]     : => 1
-   // [0]     : => 0
-
-
-   // don't allow setting load-data.
-   assign tdata_load = dec_csr_wrdata_r[0] & ~dec_csr_wrdata_r[19];
-   // don't allow setting execute-data.
-   assign tdata_opcode = dec_csr_wrdata_r[2] & ~dec_csr_wrdata_r[19];
-   // don't allow clearing DMODE and action=1
-   assign tdata_action = (dec_csr_wrdata_r[27] & dbg_tlu_halted_f) & dec_csr_wrdata_r[12];
-
-   // Chain bit has conditions: WARL for triggers without chains. Force to zero if dmode is 0 but next trigger dmode is 1.
-   assign tdata_chain = mtsel[0] ? 1'b0 : // triggers 1 and 3 chain bit is always zero
-                        mtsel[1] ?  dec_csr_wrdata_r[11] & ~(mtdata1_t3[MTDATA1_DMODE] & ~dec_csr_wrdata_r[27]) : // trigger 2
-                                    dec_csr_wrdata_r[11] & ~(mtdata1_t1[MTDATA1_DMODE] & ~dec_csr_wrdata_r[27]);  // trigger 0
-
-   // Kill mtdata1 write if dmode=1 but prior trigger has dmode=0/chain=1. Only applies to T1 and T3
-   assign tdata_kill_write = mtsel[1] ? dec_csr_wrdata_r[27] & (~mtdata1_t2[MTDATA1_DMODE] & mtdata1_t2[MTDATA1_CHAIN]) : // trigger 3
-                                        dec_csr_wrdata_r[27] & (~mtdata1_t0[MTDATA1_DMODE] & mtdata1_t0[MTDATA1_CHAIN]) ; // trigger 1
-
-
-   assign tdata_wrdata_r[9:0]  = {dec_csr_wrdata_r[27] & dbg_tlu_halted_f,
-                                   dec_csr_wrdata_r[20:19],
-                                   tdata_action,
-                                   tdata_chain,
-                                   dec_csr_wrdata_r[7:6],
-                                   tdata_opcode,
-                                   dec_csr_wrdata_r[1],
-                                   tdata_load};
-
-   // If the DMODE bit is set, tdata1 can only be updated in debug_mode
-   assign wr_mtdata1_t0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b0) & (~mtdata1_t0[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign mtdata1_t0_ns[9:0] = wr_mtdata1_t0_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t0[9], update_hit_bit_r[0] | mtdata1_t0[8], mtdata1_t0[7:0]};
-
-   assign wr_mtdata1_t1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b01) & (~mtdata1_t1[MTDATA1_DMODE] | dbg_tlu_halted_f) & ~tdata_kill_write;
-   assign mtdata1_t1_ns[9:0] = wr_mtdata1_t1_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t1[9], update_hit_bit_r[1] | mtdata1_t1[8], mtdata1_t1[7:0]};
-
-   assign wr_mtdata1_t2_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b10) & (~mtdata1_t2[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign mtdata1_t2_ns[9:0] = wr_mtdata1_t2_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t2[9], update_hit_bit_r[2] | mtdata1_t2[8], mtdata1_t2[7:0]};
-
-   assign wr_mtdata1_t3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1) & (mtsel[1:0] == 2'b11) & (~mtdata1_t3[MTDATA1_DMODE] | dbg_tlu_halted_f) & ~tdata_kill_write;
-   assign mtdata1_t3_ns[9:0] = wr_mtdata1_t3_r ? tdata_wrdata_r[9:0] :
-                                {mtdata1_t3[9], update_hit_bit_r[3] | mtdata1_t3[8], mtdata1_t3[7:0]};
-
-
-   rvdffe #(10)  mtdata1_t0_ff (.*, .en(trigger_enabled[0] | wr_mtdata1_t0_r), .din(mtdata1_t0_ns[9:0]), .dout(mtdata1_t0[9:0]));
-   rvdffe #(10)  mtdata1_t1_ff (.*, .en(trigger_enabled[1] | wr_mtdata1_t1_r), .din(mtdata1_t1_ns[9:0]), .dout(mtdata1_t1[9:0]));
-   rvdffe #(10)  mtdata1_t2_ff (.*, .en(trigger_enabled[2] | wr_mtdata1_t2_r), .din(mtdata1_t2_ns[9:0]), .dout(mtdata1_t2[9:0]));
-   rvdffe #(10)  mtdata1_t3_ff (.*, .en(trigger_enabled[3] | wr_mtdata1_t3_r), .din(mtdata1_t3_ns[9:0]), .dout(mtdata1_t3[9:0]));
-
-   assign mtdata1_tsel_out[31:0] = ( ({32{(mtsel[1:0] == 2'b00)}} & {4'h2, mtdata1_t0[9], 6'b011111, mtdata1_t0[8:7], 6'b0, mtdata1_t0[6:5], 3'b0, mtdata1_t0[4:3], 3'b0, mtdata1_t0[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b01)}} & {4'h2, mtdata1_t1[9], 6'b011111, mtdata1_t1[8:7], 6'b0, mtdata1_t1[6:5], 3'b0, mtdata1_t1[4:3], 3'b0, mtdata1_t1[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b10)}} & {4'h2, mtdata1_t2[9], 6'b011111, mtdata1_t2[8:7], 6'b0, mtdata1_t2[6:5], 3'b0, mtdata1_t2[4:3], 3'b0, mtdata1_t2[2:0]}) |
-                                     ({32{(mtsel[1:0] == 2'b11)}} & {4'h2, mtdata1_t3[9], 6'b011111, mtdata1_t3[8:7], 6'b0, mtdata1_t3[6:5], 3'b0, mtdata1_t3[4:3], 3'b0, mtdata1_t3[2:0]}));
-
-   assign trigger_pkt_any[0].select = mtdata1_t0[MTDATA1_SEL];
-   assign trigger_pkt_any[0].match = mtdata1_t0[MTDATA1_MATCH];
-   assign trigger_pkt_any[0].store = mtdata1_t0[MTDATA1_ST];
-   assign trigger_pkt_any[0].load = mtdata1_t0[MTDATA1_LD];
-   assign trigger_pkt_any[0].execute = mtdata1_t0[MTDATA1_EXE];
-   assign trigger_pkt_any[0].m = mtdata1_t0[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[1].select = mtdata1_t1[MTDATA1_SEL];
-   assign trigger_pkt_any[1].match = mtdata1_t1[MTDATA1_MATCH];
-   assign trigger_pkt_any[1].store = mtdata1_t1[MTDATA1_ST];
-   assign trigger_pkt_any[1].load = mtdata1_t1[MTDATA1_LD];
-   assign trigger_pkt_any[1].execute = mtdata1_t1[MTDATA1_EXE];
-   assign trigger_pkt_any[1].m = mtdata1_t1[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[2].select = mtdata1_t2[MTDATA1_SEL];
-   assign trigger_pkt_any[2].match = mtdata1_t2[MTDATA1_MATCH];
-   assign trigger_pkt_any[2].store = mtdata1_t2[MTDATA1_ST];
-   assign trigger_pkt_any[2].load = mtdata1_t2[MTDATA1_LD];
-   assign trigger_pkt_any[2].execute = mtdata1_t2[MTDATA1_EXE];
-   assign trigger_pkt_any[2].m = mtdata1_t2[MTDATA1_M_ENABLED];
-
-   assign trigger_pkt_any[3].select = mtdata1_t3[MTDATA1_SEL];
-   assign trigger_pkt_any[3].match = mtdata1_t3[MTDATA1_MATCH];
-   assign trigger_pkt_any[3].store = mtdata1_t3[MTDATA1_ST];
-   assign trigger_pkt_any[3].load = mtdata1_t3[MTDATA1_LD];
-   assign trigger_pkt_any[3].execute = mtdata1_t3[MTDATA1_EXE];
-   assign trigger_pkt_any[3].m = mtdata1_t3[MTDATA1_M_ENABLED];
-
-
-
-
-
-   // ----------------------------------------------------------------------
-   // MTDATA2 (R/W)
-   // [31:0] : Trigger Data 2
-   localparam MTDATA2       = 12'h7a2;
-
-   // If the DMODE bit is set, tdata2 can only be updated in debug_mode
-   assign wr_mtdata2_t0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b0)  & (~mtdata1_t0[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b01) & (~mtdata1_t1[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t2_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b10) & (~mtdata1_t2[MTDATA1_DMODE] | dbg_tlu_halted_f);
-   assign wr_mtdata2_t3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2) & (mtsel[1:0] == 2'b11) & (~mtdata1_t3[MTDATA1_DMODE] | dbg_tlu_halted_f);
-
-   rvdffe #(32)  mtdata2_t0_ff (.*, .en(wr_mtdata2_t0_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t0[31:0]));
-   rvdffe #(32)  mtdata2_t1_ff (.*, .en(wr_mtdata2_t1_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t1[31:0]));
-   rvdffe #(32)  mtdata2_t2_ff (.*, .en(wr_mtdata2_t2_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t2[31:0]));
-   rvdffe #(32)  mtdata2_t3_ff (.*, .en(wr_mtdata2_t3_r), .din(dec_csr_wrdata_r[31:0]), .dout(mtdata2_t3[31:0]));
-
-   assign mtdata2_tsel_out[31:0] = ( ({32{(mtsel[1:0] == 2'b00)}} & mtdata2_t0[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b01)}} & mtdata2_t1[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b10)}} & mtdata2_t2[31:0]) |
-                                     ({32{(mtsel[1:0] == 2'b11)}} & mtdata2_t3[31:0]));
-
-   assign trigger_pkt_any[0].tdata2[31:0] = mtdata2_t0[31:0];
-   assign trigger_pkt_any[1].tdata2[31:0] = mtdata2_t1[31:0];
-   assign trigger_pkt_any[2].tdata2[31:0] = mtdata2_t2[31:0];
-   assign trigger_pkt_any[3].tdata2[31:0] = mtdata2_t3[31:0];
-
-
-   //----------------------------------------------------------------------
-   // Performance Monitor Counters section starts
-   //----------------------------------------------------------------------
-   localparam MHPME_NOEVENT             = 10'd0;
-   localparam MHPME_CLK_ACTIVE          = 10'd1; // OOP - out of pipe
-   localparam MHPME_ICACHE_HIT          = 10'd2; // OOP
-   localparam MHPME_ICACHE_MISS         = 10'd3; // OOP
-   localparam MHPME_INST_COMMIT         = 10'd4;
-   localparam MHPME_INST_COMMIT_16B     = 10'd5;
-   localparam MHPME_INST_COMMIT_32B     = 10'd6;
-   localparam MHPME_INST_ALIGNED        = 10'd7; // OOP
-   localparam MHPME_INST_DECODED        = 10'd8; // OOP
-   localparam MHPME_INST_MUL            = 10'd9;
-   localparam MHPME_INST_DIV            = 10'd10;
-   localparam MHPME_INST_LOAD           = 10'd11;
-   localparam MHPME_INST_STORE          = 10'd12;
-   localparam MHPME_INST_MALOAD         = 10'd13;
-   localparam MHPME_INST_MASTORE        = 10'd14;
-   localparam MHPME_INST_ALU            = 10'd15;
-   localparam MHPME_INST_CSRREAD        = 10'd16;
-   localparam MHPME_INST_CSRRW          = 10'd17;
-   localparam MHPME_INST_CSRWRITE       = 10'd18;
-   localparam MHPME_INST_EBREAK         = 10'd19;
-   localparam MHPME_INST_ECALL          = 10'd20;
-   localparam MHPME_INST_FENCE          = 10'd21;
-   localparam MHPME_INST_FENCEI         = 10'd22;
-   localparam MHPME_INST_MRET           = 10'd23;
-   localparam MHPME_INST_BRANCH         = 10'd24;
-   localparam MHPME_BRANCH_MP           = 10'd25;
-   localparam MHPME_BRANCH_TAKEN        = 10'd26;
-   localparam MHPME_BRANCH_NOTP         = 10'd27;
-   localparam MHPME_FETCH_STALL         = 10'd28; // OOP
-   localparam MHPME_DECODE_STALL        = 10'd30; // OOP
-   localparam MHPME_POSTSYNC_STALL      = 10'd31; // OOP
-   localparam MHPME_PRESYNC_STALL       = 10'd32; // OOP
-   localparam MHPME_LSU_SB_WB_STALL     = 10'd34; // OOP
-   localparam MHPME_DMA_DCCM_STALL      = 10'd35; // OOP
-   localparam MHPME_DMA_ICCM_STALL      = 10'd36; // OOP
-   localparam MHPME_EXC_TAKEN           = 10'd37;
-   localparam MHPME_TIMER_INT_TAKEN     = 10'd38;
-   localparam MHPME_EXT_INT_TAKEN       = 10'd39;
-   localparam MHPME_FLUSH_LOWER         = 10'd40;
-   localparam MHPME_BR_ERROR            = 10'd41;
-   localparam MHPME_IBUS_TRANS          = 10'd42; // OOP
-   localparam MHPME_DBUS_TRANS          = 10'd43; // OOP
-   localparam MHPME_DBUS_MA_TRANS       = 10'd44; // OOP
-   localparam MHPME_IBUS_ERROR          = 10'd45; // OOP
-   localparam MHPME_DBUS_ERROR          = 10'd46; // OOP
-   localparam MHPME_IBUS_STALL          = 10'd47; // OOP
-   localparam MHPME_DBUS_STALL          = 10'd48; // OOP
-   localparam MHPME_INT_DISABLED        = 10'd49; // OOP
-   localparam MHPME_INT_STALLED         = 10'd50; // OOP
-   localparam MHPME_INST_BITMANIP       = 10'd54;
-   localparam MHPME_DBUS_LOAD           = 10'd55;
-   localparam MHPME_DBUS_STORE          = 10'd56;
-   // Counts even during sleep state
-   localparam MHPME_SLEEP_CYC           = 10'd512; // OOP
-   localparam MHPME_DMA_READ_ALL        = 10'd513; // OOP
-   localparam MHPME_DMA_WRITE_ALL       = 10'd514; // OOP
-   localparam MHPME_DMA_READ_DCCM       = 10'd515; // OOP
-   localparam MHPME_DMA_WRITE_DCCM      = 10'd516; // OOP
-
-   // Pack the event selects into a vector for genvar
-   assign mhpme_vec[0][9:0] = mhpme3[9:0];
-   assign mhpme_vec[1][9:0] = mhpme4[9:0];
-   assign mhpme_vec[2][9:0] = mhpme5[9:0];
-   assign mhpme_vec[3][9:0] = mhpme6[9:0];
-
-   // only consider committed itypes
-   //logic [3:0] pmu_i0_itype_qual;
-   assign pmu_i0_itype_qual[3:0] = dec_tlu_packet_r.pmu_i0_itype[3:0] & {4{tlu_i0_commit_cmt}};
-
-   // Generate the muxed incs for all counters based on event type
-   for (genvar i=0 ; i < 4; i++) begin
-      assign mhpmc_inc_r[i] =  {{~mcountinhibit[i+3]}} &
-           (
-             ({1{(mhpme_vec[i][9:0] == MHPME_CLK_ACTIVE      )}} & 1'b1) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_ICACHE_HIT      )}} & {ifu_pmu_ic_hit}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_ICACHE_MISS     )}} & {ifu_pmu_ic_miss}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT     )}} & {tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT_16B )}} & {tlu_i0_commit_cmt & ~exu_pmu_i0_pc4 & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_COMMIT_32B )}} & {tlu_i0_commit_cmt &  exu_pmu_i0_pc4 & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ALIGNED    )}} & ifu_pmu_instr_aligned)  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_DECODED    )}} & dec_pmu_instr_decoded)  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DECODE_STALL    )}} & {dec_pmu_decode_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MUL        )}} & {(pmu_i0_itype_qual == MUL)})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_DIV        )}} & {dec_tlu_packet_r.pmu_divide  & tlu_i0_commit_cmt & ~illegal_r})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_LOAD       )}} & {(pmu_i0_itype_qual == LOAD)})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_STORE      )}} & {(pmu_i0_itype_qual == STORE)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MALOAD     )}} & {(pmu_i0_itype_qual == LOAD)} &
-                                                                      {1{dec_tlu_packet_r.pmu_lsu_misaligned}})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MASTORE    )}} & {(pmu_i0_itype_qual == STORE)} &
-                                                                      {1{dec_tlu_packet_r.pmu_lsu_misaligned}})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ALU        )}} & {(pmu_i0_itype_qual == ALU)})     |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRREAD    )}} & {(pmu_i0_itype_qual == CSRREAD)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRWRITE   )}} & {(pmu_i0_itype_qual == CSRWRITE)})|
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_CSRRW      )}} & {(pmu_i0_itype_qual == CSRRW)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_EBREAK     )}} & {(pmu_i0_itype_qual == EBREAK)})  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_ECALL      )}} & {(pmu_i0_itype_qual == ECALL)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_FENCE      )}} & {(pmu_i0_itype_qual == FENCE)})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_FENCEI     )}} & {(pmu_i0_itype_qual == FENCEI)})  |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_MRET       )}} & {(pmu_i0_itype_qual == MRET)})    |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_BRANCH     )}} & {
-                                                                     ((pmu_i0_itype_qual == CONDBR) | (pmu_i0_itype_qual == JAL))})   |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_MP       )}} & {exu_pmu_i0_br_misp & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_TAKEN    )}} & {exu_pmu_i0_br_ataken & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BRANCH_NOTP     )}} & {dec_tlu_packet_r.pmu_i0_br_unpred & tlu_i0_commit_cmt & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_FETCH_STALL     )}} & { ifu_pmu_fetch_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DECODE_STALL    )}} & { dec_pmu_decode_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_POSTSYNC_STALL  )}} & {dec_pmu_postsync_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_PRESYNC_STALL   )}} & {dec_pmu_presync_stall}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_LSU_SB_WB_STALL )}} & { lsu_store_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_DCCM_STALL  )}} & { dma_dccm_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_ICCM_STALL  )}} & { dma_iccm_stall_any}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_EXC_TAKEN       )}} & { (i0_exception_valid_r | i0_trigger_hit_r | lsu_exc_valid_r)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_TIMER_INT_TAKEN )}} & { take_timer_int | take_int_timer0_int | take_int_timer1_int}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_EXT_INT_TAKEN   )}} & { take_ext_int}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_FLUSH_LOWER     )}} & { tlu_flush_lower_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_BR_ERROR        )}} & {(dec_tlu_br0_error_r | dec_tlu_br0_start_error_r) & rfpc_i0_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_TRANS      )}} & {ifu_pmu_bus_trxn}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_TRANS      )}} & {lsu_pmu_bus_trxn}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_MA_TRANS   )}} & {lsu_pmu_bus_misaligned}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_ERROR      )}} & {ifu_pmu_bus_error}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_ERROR      )}} & {lsu_pmu_bus_error}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_IBUS_STALL      )}} & {ifu_pmu_bus_busy}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_STALL      )}} & {lsu_pmu_bus_busy}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INT_DISABLED    )}} & {~mstatus[MSTATUS_MIE]}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INT_STALLED     )}} & {~mstatus[MSTATUS_MIE] & |(mip[5:0] & mie[5:0])}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_INST_BITMANIP     )}} & {(pmu_i0_itype_qual == BITMANIPU)}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_LOAD       )}} & {tlu_i0_commit_cmt & lsu_pmu_load_external_r & ~illegal_r}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DBUS_STORE      )}} & {tlu_i0_commit_cmt & lsu_pmu_store_external_r & ~illegal_r}) |
-             // These count even during sleep
-             ({1{(mhpme_vec[i][9:0] == MHPME_SLEEP_CYC       )}} & {dec_tlu_pmu_fw_halted}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_READ_ALL    )}} & {dma_pmu_any_read}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_WRITE_ALL   )}} & {dma_pmu_any_write}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_READ_DCCM   )}} & {dma_pmu_dccm_read}) |
-             ({1{(mhpme_vec[i][9:0] == MHPME_DMA_WRITE_DCCM  )}} & {dma_pmu_dccm_write})
-             );
-   end
-
-
-   if(pt.FAST_INTERRUPT_REDIRECT)
-   rvdffie #(31)  mstatus_ff (.*, .clk(free_l2clk),
-                             .din({mdseac_locked_ns, lsu_single_ecc_error_r, lsu_exc_valid_r, lsu_i0_exc_r,
-                                   take_ext_int_start,    take_ext_int_start_d1, take_ext_int_start_d2, ext_int_freeze,
-                                   mip_ns[5:0], mcyclel_cout & ~wr_mcycleh_r & mcyclel_cout_in,
-                                   minstret_enable, minstretl_cout_ns, fw_halted_ns,
-                                   meicidpl_ns[3:0], icache_rd_valid, icache_wr_valid, mhpmc_inc_r[3:0], perfcnt_halted,
-                                   mstatus_ns[1:0]}),
-                             .dout({mdseac_locked_f, lsu_single_ecc_error_r_d1, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1,
-                                    take_ext_int_start_d1, take_ext_int_start_d2, take_ext_int_start_d3, ext_int_freeze_d1,
-                                    mip[5:0], mcyclel_cout_f, minstret_enable_f, minstretl_cout_f,
-                                    fw_halted, meicidpl[3:0], icache_rd_valid_f, icache_wr_valid_f,
-                                    mhpmc_inc_r_d1[3:0], perfcnt_halted_d1,
-                                    mstatus[1:0]}));
-
-   else
-   rvdffie #(27)  mstatus_ff (.*, .clk(free_l2clk),
-                             .din({mdseac_locked_ns, lsu_single_ecc_error_r, lsu_exc_valid_r, lsu_i0_exc_r,
-                                   mip_ns[5:0], mcyclel_cout & ~wr_mcycleh_r & mcyclel_cout_in,
-                                   minstret_enable, minstretl_cout_ns, fw_halted_ns,
-                                   meicidpl_ns[3:0], icache_rd_valid, icache_wr_valid, mhpmc_inc_r[3:0], perfcnt_halted,
-                                   mstatus_ns[1:0]}),
-                             .dout({mdseac_locked_f, lsu_single_ecc_error_r_d1, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1,
-                                    mip[5:0], mcyclel_cout_f, minstret_enable_f, minstretl_cout_f,
-                                    fw_halted, meicidpl[3:0], icache_rd_valid_f, icache_wr_valid_f,
-                                    mhpmc_inc_r_d1[3:0], perfcnt_halted_d1,
-                                    mstatus[1:0]}));
-
-   assign perfcnt_halted = ((dec_tlu_dbg_halted & dcsr[DCSR_STOPC]) | dec_tlu_pmu_fw_halted);
-   assign perfcnt_during_sleep[3:0] = {4{~(dec_tlu_dbg_halted & dcsr[DCSR_STOPC])}} & {mhpme_vec[3][9],mhpme_vec[2][9],mhpme_vec[1][9],mhpme_vec[0][9]};
-
-   assign dec_tlu_perfcnt0 = mhpmc_inc_r_d1[0] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[0]);
-   assign dec_tlu_perfcnt1 = mhpmc_inc_r_d1[1] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[1]);
-   assign dec_tlu_perfcnt2 = mhpmc_inc_r_d1[2] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[2]);
-   assign dec_tlu_perfcnt3 = mhpmc_inc_r_d1[3] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[3]);
-
-   // ----------------------------------------------------------------------
-   // MHPMC3H(RW), MHPMC3(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 3
-   localparam MHPMC3        = 12'hB03;
-   localparam MHPMC3H       = 12'hB83;
-
-   assign mhpmc3_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC3);
-   assign mhpmc3_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[0]) & (|(mhpmc_inc_r[0]));
-   assign mhpmc3_wr_en  = mhpmc3_wr_en0 | mhpmc3_wr_en1;
-   assign mhpmc3_incr[63:0] = {mhpmc3h[31:0],mhpmc3[31:0]} + {63'b0, 1'b1};
-   assign mhpmc3_ns[31:0] = mhpmc3_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc3_incr[31:0];
-   rvdffe #(32)  mhpmc3_ff (.*, .clk(free_l2clk), .en(mhpmc3_wr_en), .din(mhpmc3_ns[31:0]), .dout(mhpmc3[31:0]));
-
-   assign mhpmc3h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC3H);
-   assign mhpmc3h_wr_en  = mhpmc3h_wr_en0 | mhpmc3_wr_en1;
-   assign mhpmc3h_ns[31:0] = mhpmc3h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc3_incr[63:32];
-   rvdffe #(32)  mhpmc3h_ff (.*, .clk(free_l2clk), .en(mhpmc3h_wr_en), .din(mhpmc3h_ns[31:0]), .dout(mhpmc3h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC4H(RW), MHPMC4(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 4
-   localparam MHPMC4        = 12'hB04;
-   localparam MHPMC4H       = 12'hB84;
-
-   assign mhpmc4_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC4);
-   assign mhpmc4_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[1]) & (|(mhpmc_inc_r[1]));
-   assign mhpmc4_wr_en  = mhpmc4_wr_en0 | mhpmc4_wr_en1;
-   assign mhpmc4_incr[63:0] = {mhpmc4h[31:0],mhpmc4[31:0]} + {63'b0,1'b1};
-   assign mhpmc4_ns[31:0] = mhpmc4_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc4_incr[31:0];
-   rvdffe #(32)  mhpmc4_ff (.*, .clk(free_l2clk), .en(mhpmc4_wr_en), .din(mhpmc4_ns[31:0]), .dout(mhpmc4[31:0]));
-
-   assign mhpmc4h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC4H);
-   assign mhpmc4h_wr_en  = mhpmc4h_wr_en0 | mhpmc4_wr_en1;
-   assign mhpmc4h_ns[31:0] = mhpmc4h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc4_incr[63:32];
-   rvdffe #(32)  mhpmc4h_ff (.*, .clk(free_l2clk), .en(mhpmc4h_wr_en), .din(mhpmc4h_ns[31:0]), .dout(mhpmc4h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC5H(RW), MHPMC5(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 5
-   localparam MHPMC5        = 12'hB05;
-   localparam MHPMC5H       = 12'hB85;
-
-   assign mhpmc5_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC5);
-   assign mhpmc5_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[2]) & (|(mhpmc_inc_r[2]));
-   assign mhpmc5_wr_en  = mhpmc5_wr_en0 | mhpmc5_wr_en1;
-   assign mhpmc5_incr[63:0] = {mhpmc5h[31:0],mhpmc5[31:0]} + {63'b0,1'b1};
-   assign mhpmc5_ns[31:0] = mhpmc5_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc5_incr[31:0];
-   rvdffe #(32)  mhpmc5_ff (.*, .clk(free_l2clk), .en(mhpmc5_wr_en), .din(mhpmc5_ns[31:0]), .dout(mhpmc5[31:0]));
-
-   assign mhpmc5h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC5H);
-   assign mhpmc5h_wr_en  = mhpmc5h_wr_en0 | mhpmc5_wr_en1;
-   assign mhpmc5h_ns[31:0] = mhpmc5h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc5_incr[63:32];
-   rvdffe #(32)  mhpmc5h_ff (.*, .clk(free_l2clk), .en(mhpmc5h_wr_en), .din(mhpmc5h_ns[31:0]), .dout(mhpmc5h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPMC6H(RW), MHPMC6(RW)
-   // [63:32][31:0] : Hardware Performance Monitor Counter 6
-   localparam MHPMC6        = 12'hB06;
-   localparam MHPMC6H       = 12'hB86;
-
-   assign mhpmc6_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC6);
-   assign mhpmc6_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[3]) & (|(mhpmc_inc_r[3]));
-   assign mhpmc6_wr_en  = mhpmc6_wr_en0 | mhpmc6_wr_en1;
-   assign mhpmc6_incr[63:0] = {mhpmc6h[31:0],mhpmc6[31:0]} + {63'b0,1'b1};
-   assign mhpmc6_ns[31:0] = mhpmc6_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc6_incr[31:0];
-   rvdffe #(32)  mhpmc6_ff (.*, .clk(free_l2clk), .en(mhpmc6_wr_en), .din(mhpmc6_ns[31:0]), .dout(mhpmc6[31:0]));
-
-   assign mhpmc6h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC6H);
-   assign mhpmc6h_wr_en  = mhpmc6h_wr_en0 | mhpmc6_wr_en1;
-   assign mhpmc6h_ns[31:0] = mhpmc6h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc6_incr[63:32];
-   rvdffe #(32)  mhpmc6h_ff (.*, .clk(free_l2clk), .en(mhpmc6h_wr_en), .din(mhpmc6h_ns[31:0]), .dout(mhpmc6h[31:0]));
-
-   // ----------------------------------------------------------------------
-   // MHPME3(RW)
-   // [9:0] : Hardware Performance Monitor Event 3
-   localparam MHPME3        = 12'h323;
-
-   // we only have events 0-56 with holes, 512-516, HPME* are WARL so zero otherwise.
-   assign zero_event_r = ( (dec_csr_wrdata_r[9:0] > 10'd516) |
-                           (|dec_csr_wrdata_r[31:10]) |
-                           ((dec_csr_wrdata_r[9:0] < 10'd512) & (dec_csr_wrdata_r[9:0] > 10'd56)) |
-                           ((dec_csr_wrdata_r[9:0] < 10'd54) & (dec_csr_wrdata_r[9:0] > 10'd50)) |
-                           (dec_csr_wrdata_r[9:0] == 10'd29) |
-                           (dec_csr_wrdata_r[9:0] == 10'd33)
-                           );
-
-   assign event_r[9:0] = zero_event_r ? '0 : dec_csr_wrdata_r[9:0];
-
-   assign wr_mhpme3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME3);
-   rvdffe #(10)  mhpme3_ff (.*, .en(wr_mhpme3_r), .din(event_r[9:0]), .dout(mhpme3[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME4(RW)
-   // [9:0] : Hardware Performance Monitor Event 4
-   localparam MHPME4        = 12'h324;
-
-   assign wr_mhpme4_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME4);
-   rvdffe #(10)  mhpme4_ff (.*, .en(wr_mhpme4_r), .din(event_r[9:0]), .dout(mhpme4[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME5(RW)
-   // [9:0] : Hardware Performance Monitor Event 5
-   localparam MHPME5        = 12'h325;
-
-   assign wr_mhpme5_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME5);
-   rvdffe #(10)  mhpme5_ff (.*, .en(wr_mhpme5_r), .din(event_r[9:0]), .dout(mhpme5[9:0]));
-   // ----------------------------------------------------------------------
-   // MHPME6(RW)
-   // [9:0] : Hardware Performance Monitor Event 6
-   localparam MHPME6        = 12'h326;
-
-   assign wr_mhpme6_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME6);
-   rvdffe #(10)  mhpme6_ff (.*, .en(wr_mhpme6_r), .din(event_r[9:0]), .dout(mhpme6[9:0]));
-
-   //----------------------------------------------------------------------
-   // Performance Monitor Counters section ends
-   //----------------------------------------------------------------------
-   // ----------------------------------------------------------------------
-
-   // MCOUNTINHIBIT(RW)
-   // [31:7] : Reserved, read 0x0
-   // [6]    : HPM6 disable
-   // [5]    : HPM5 disable
-   // [4]    : HPM4 disable
-   // [3]    : HPM3 disable
-   // [2]    : MINSTRET disable
-   // [1]    : reserved, read 0x0
-   // [0]    : MCYCLE disable
-
-   localparam MCOUNTINHIBIT             = 12'h320;
-
-   assign wr_mcountinhibit_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCOUNTINHIBIT);
-   rvdffs #(6)  mcountinhibit_ff (.*, .clk(csr_wr_clk), .en(wr_mcountinhibit_r), .din({dec_csr_wrdata_r[6:2], dec_csr_wrdata_r[0]}), .dout({mcountinhibit[6:2], mcountinhibit[0]}));
-   assign mcountinhibit[1] = 1'b0;
-
-   //--------------------------------------------------------------------------------
-   // trace
-   //--------------------------------------------------------------------------------
-   logic [4:0] dec_tlu_exc_cause_wb1_raw, dec_tlu_exc_cause_wb2;
-   logic       dec_tlu_int_valid_wb1_raw, dec_tlu_int_valid_wb2;
-
-   assign {dec_tlu_i0_valid_wb1,
-           dec_tlu_i0_exc_valid_wb1,
-           dec_tlu_exc_cause_wb1_raw[4:0],
-           dec_tlu_int_valid_wb1_raw}  =   {8{~dec_tlu_trace_disable}} & {i0_valid_wb,
-                                                                          i0_exception_valid_r_d1 | lsu_i0_exc_r_d1 | (trigger_hit_r_d1 & ~trigger_hit_dmode_r_d1),
-                                                                          exc_cause_wb[4:0],
-                                                                          interrupt_valid_r_d1};
-
-
-
-  // skid buffer for ints, reduces trace port count by 1
-   rvdffie #(.WIDTH(6), .OVERRIDE(1))  traceskidff (.*,  .clk(clk),
-                        .din ({dec_tlu_exc_cause_wb1_raw[4:0],
-                               dec_tlu_int_valid_wb1_raw}),
-                        .dout({dec_tlu_exc_cause_wb2[4:0],
-                               dec_tlu_int_valid_wb2}));
-   //skid for ints
-   assign dec_tlu_exc_cause_wb1[4:0] =  dec_tlu_int_valid_wb2 ? dec_tlu_exc_cause_wb2[4:0] : dec_tlu_exc_cause_wb1_raw[4:0];
-   assign dec_tlu_int_valid_wb1 = dec_tlu_int_valid_wb2;
-
-   assign dec_tlu_mtval_wb1  = mtval[31:0];
-
-   // end trace
-   //--------------------------------------------------------------------------------
-
-
-   // ----------------------------------------------------------------------
-   // CSR read mux
-   // ----------------------------------------------------------------------
-
-// file "csrdecode" is human readable file that has all of the CSR decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "csrdecode" except legal equation:
-
-// 1) coredecode -in csrdecode > corecsrdecode.e
-
-// 2) espresso -Dso -oeqntott corecsrdecode.e | addassign  > csrequations
-
-// to generate the legal CSR equation below:
-
-// 1) coredecode -in csrdecode -legal > csrlegal.e
-
-// 2) espresso -Dso -oeqntott csrlegal.e | addassign  > csrlegal_equation
-// coredecode -in csrdecode > corecsrdecode.e; espresso -Dso -oeqntott corecsrdecode.e | addassign  > csrequations; coredecode -in csrdecode -legal > csrlegal.e; espresso -Dso -oeqntott csrlegal.e | addassign  > csrlegal_equation
-
-assign csr_misa = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mvendorid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_marchid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mimpid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mhartid = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_mstatus = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mtvec = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mip = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[2]);
-
-assign csr_mie = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mcyclel = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]);
-
-assign csr_mcycleh = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_minstretl = (!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_minstreth = (!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mscratch = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mepc = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mcause = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mscause = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_mtval = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mrac = (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_dmst = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_mdseac = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]);
-
-assign csr_meihap = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[3]);
-
-assign csr_meivt = (!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_meipt = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_meicurpl = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[2]);
-
-assign csr_meicidpl = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dcsr = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mcgc = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdc = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dpc = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[0]);
-
-assign csr_mtsel = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mtdata1 = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]);
-
-assign csr_mtdata2 = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[1]);
-
-assign csr_mhpmc3 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc4 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc5 = (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc6 = (!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc3h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc4h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc5h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpmc6h = (dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme3 = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme4 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme5 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_mhpme6 = (dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mcountinhibit = (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_mitctl0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitctl1 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mitb0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[0]);
-
-assign csr_mitb1 = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitcnt0 = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mitcnt1 = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_mpmc = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign csr_meicpct = (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_micect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_miccmect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]);
-
-assign csr_mdccmect = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdht = (dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_mfdhs = (dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]);
-
-assign csr_dicawics = (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]);
-
-assign csr_dicad0h = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]);
-
-assign csr_dicad0 = (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign csr_dicad1 = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]);
-
-assign csr_dicago = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]);
-
-assign presync = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign postsync = (dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[10]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[1]) | (dec_csr_rdaddr_d[10]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]);
-
-assign legal = (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]) | (
-    dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]
-    &dec_csr_rdaddr_d[0]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[2]) | (dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[2]) | (dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[1]&dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]
-    &!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]
-    &!dec_csr_rdaddr_d[0]) | (dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]
-    &dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[3]&dec_csr_rdaddr_d[1]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]&dec_csr_rdaddr_d[6]
-    &!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]&dec_csr_rdaddr_d[3]
-    &!dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]&dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&dec_csr_rdaddr_d[7]
-    &!dec_csr_rdaddr_d[6]&dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]&!dec_csr_rdaddr_d[0]) | (
-    dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]
-    &dec_csr_rdaddr_d[1]) | (!dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]
-    &dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]
-    &dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[2]) | (!dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[5]&!dec_csr_rdaddr_d[4]
-    &!dec_csr_rdaddr_d[3]&!dec_csr_rdaddr_d[1]&!dec_csr_rdaddr_d[0]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[3]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[3]) | (
-    !dec_csr_rdaddr_d[11]&!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]
-    &dec_csr_rdaddr_d[8]&!dec_csr_rdaddr_d[7]&!dec_csr_rdaddr_d[6]
-    &dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]) | (dec_csr_rdaddr_d[11]
-    &!dec_csr_rdaddr_d[10]&dec_csr_rdaddr_d[9]&dec_csr_rdaddr_d[8]
-    &!dec_csr_rdaddr_d[6]&!dec_csr_rdaddr_d[5]&dec_csr_rdaddr_d[4]);
-
-
-
-assign dec_tlu_presync_d = presync & dec_csr_any_unq_d & ~dec_csr_wen_unq_d;
-assign dec_tlu_postsync_d = postsync & dec_csr_any_unq_d;
-
-   // allow individual configuration of these features
-assign conditionally_illegal = ((csr_mitcnt0 | csr_mitcnt1 | csr_mitb0 | csr_mitb1 | csr_mitctl0 | csr_mitctl1) & !pt.TIMER_LEGAL_EN);
-
-assign valid_csr = ( legal & (~(csr_dcsr | csr_dpc | csr_dmst | csr_dicawics | csr_dicad0 | csr_dicad0h | csr_dicad1 | csr_dicago) | dbg_tlu_halted_f)
-                     & ~fast_int_meicpct & ~conditionally_illegal);
-
-assign dec_csr_legal_d = ( dec_csr_any_unq_d &
-                           valid_csr &          // of a valid CSR
-                           ~(dec_csr_wen_unq_d & (csr_mvendorid | csr_marchid | csr_mimpid | csr_mhartid | csr_mdseac | csr_meihap)) // that's not a write to a RO CSR
-                           );
-   // CSR read mux
-assign dec_csr_rddata_d[31:0] = ( ({32{csr_misa}}      & 32'h40201104) |
-                                  ({32{csr_mvendorid}} & 32'h00000045) |
-                                  ({32{csr_marchid}}   & 32'h00000010) |
-                                  ({32{csr_mimpid}}    & 32'h3) |
-                                  ({32{csr_mhartid}}   & {core_id[31:4], 4'b0}) |
-                                  ({32{csr_mstatus}}   & {{15{1'b0}}, 2'b01, 2'b00, 2'b11, 3'b0, mstatus[1], 3'b0, mstatus[0], 3'b0}) |
-                                  ({32{csr_mtvec}}     & {mtvec[30:1], 1'b0, mtvec[0]}) |
-                                  ({32{csr_mip}}       & {1'b0, mip[5:3], 16'b0, mip[2], 3'b0, mip[1], 3'b0, mip[0], 3'b0}) |
-                                  ({32{csr_mie}}       & {1'b0, mie[5:3], 16'b0, mie[2], 3'b0, mie[1], 3'b0, mie[0], 3'b0}) |
-                                  ({32{csr_mcyclel}}   & mcyclel[31:0]) |
-                                  ({32{csr_mcycleh}}   & mcycleh_inc[31:0]) |
-                                  ({32{csr_minstretl}} & minstretl_read[31:0]) |
-                                  ({32{csr_minstreth}} & minstreth_read[31:0]) |
-                                  ({32{csr_mscratch}}  & mscratch[31:0]) |
-                                  ({32{csr_mepc}}      & {mepc[31:1], 1'b0}) |
-                                  ({32{csr_mcause}}    & mcause[31:0]) |
-                                  ({32{csr_mscause}}   & {28'b0, mscause[3:0]}) |
-                                  ({32{csr_mtval}}     & mtval[31:0]) |
-                                  ({32{csr_mrac}}      & mrac[31:0]) |
-                                  ({32{csr_mdseac}}    & mdseac[31:0]) |
-                                  ({32{csr_meivt}}     & {meivt[31:10], 10'b0}) |
-                                  ({32{csr_meihap}}    & {meivt[31:10], meihap[9:2], 2'b0}) |
-                                  ({32{csr_meicurpl}}  & {28'b0, meicurpl[3:0]}) |
-                                  ({32{csr_meicidpl}}  & {28'b0, meicidpl[3:0]}) |
-                                  ({32{csr_meipt}}     & {28'b0, meipt[3:0]}) |
-                                  ({32{csr_mcgc}}      & {22'b0, mcgc[9:0]}) |
-                                  ({32{csr_mfdc}}      & {13'b0, mfdc[18:0]}) |
-                                  ({32{csr_dcsr}}      & {16'h4000, dcsr[15:2], 2'b11}) |
-                                  ({32{csr_dpc}}       & {dpc[31:1], 1'b0}) |
-                                  ({32{csr_dicad0}}    & dicad0[31:0]) |
-                                  ({32{csr_dicad0h}}   & dicad0h[31:0]) |
-                                  ({32{csr_dicad1}}    & dicad1[31:0]) |
-                                  ({32{csr_dicawics}}  & {7'b0, dicawics[16], 2'b0, dicawics[15:14], 3'b0, dicawics[13:0], 3'b0}) |
-                                  ({32{csr_mtsel}}     & {30'b0, mtsel[1:0]}) |
-                                  ({32{csr_mtdata1}}   & {mtdata1_tsel_out[31:0]}) |
-                                  ({32{csr_mtdata2}}   & {mtdata2_tsel_out[31:0]}) |
-                                  ({32{csr_micect}}    & {micect[31:0]}) |
-                                  ({32{csr_miccmect}}  & {miccmect[31:0]}) |
-                                  ({32{csr_mdccmect}}  & {mdccmect[31:0]}) |
-                                  ({32{csr_mhpmc3}}    & mhpmc3[31:0]) |
-                                  ({32{csr_mhpmc4}}    & mhpmc4[31:0]) |
-                                  ({32{csr_mhpmc5}}    & mhpmc5[31:0]) |
-                                  ({32{csr_mhpmc6}}    & mhpmc6[31:0]) |
-                                  ({32{csr_mhpmc3h}}   & mhpmc3h[31:0]) |
-                                  ({32{csr_mhpmc4h}}   & mhpmc4h[31:0]) |
-                                  ({32{csr_mhpmc5h}}   & mhpmc5h[31:0]) |
-                                  ({32{csr_mhpmc6h}}   & mhpmc6h[31:0]) |
-                                  ({32{csr_mfdht}}     & {26'b0, mfdht[5:0]}) |
-                                  ({32{csr_mfdhs}}     & {30'b0, mfdhs[1:0]}) |
-                                  ({32{csr_mhpme3}}    & {22'b0,mhpme3[9:0]}) |
-                                  ({32{csr_mhpme4}}    & {22'b0,mhpme4[9:0]}) |
-                                  ({32{csr_mhpme5}}    & {22'b0,mhpme5[9:0]}) |
-                                  ({32{csr_mhpme6}}    & {22'b0,mhpme6[9:0]}) |
-                                  ({32{csr_mcountinhibit}} & {25'b0, mcountinhibit[6:0]}) |
-                                  ({32{csr_mpmc}}      & {30'b0, mpmc[1], 1'b0}) |
-                                  ({32{dec_timer_read_d}} & dec_timer_rddata_d[31:0])
-                                  );
-
-
-
-endmodule // eb1_dec_tlu_ctl
-
-module eb1_dec_timer_ctl 
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic clk,
-   input logic free_l2clk,
-   input logic csr_wr_clk,
-   input logic rst_l,
-   input logic        dec_csr_wen_r_mod,      // csr write enable at wb
-   input logic [11:0] dec_csr_wraddr_r,      // write address for csr
-   input logic [31:0] dec_csr_wrdata_r,   // csr write data at wb
-
-   input logic csr_mitctl0,
-   input logic csr_mitctl1,
-   input logic csr_mitb0,
-   input logic csr_mitb1,
-   input logic csr_mitcnt0,
-   input logic csr_mitcnt1,
-
-
-   input logic dec_pause_state, // Paused
-   input logic dec_tlu_pmu_fw_halted, // pmu/fw halted
-   input logic internal_dbg_halt_timers, // debug halted
-
-   output logic [31:0] dec_timer_rddata_d, // timer CSR read data
-   output logic        dec_timer_read_d, // timer CSR address match
-   output logic        dec_timer_t0_pulse, // timer0 int
-   output logic        dec_timer_t1_pulse, // timer1 int
-
-   input  logic        scan_mode
-   );
-   localparam MITCTL_ENABLE             = 0;
-   localparam MITCTL_ENABLE_HALTED      = 1;
-   localparam MITCTL_ENABLE_PAUSED      = 2;
-
-   logic [31:0] mitcnt0_ns, mitcnt0, mitcnt1_ns, mitcnt1, mitb0, mitb1, mitb0_b, mitb1_b, mitcnt0_inc, mitcnt1_inc;
-   logic [2:0] mitctl0_ns, mitctl0;
-   logic [3:0] mitctl1_ns, mitctl1;
-   logic wr_mitcnt0_r, wr_mitcnt1_r, wr_mitb0_r, wr_mitb1_r, wr_mitctl0_r, wr_mitctl1_r;
-   logic mitcnt0_inc_ok, mitcnt1_inc_ok;
-   logic mitcnt0_inc_cout, mitcnt1_inc_cout;
- logic mit0_match_ns;
- logic mit1_match_ns;
- logic mitctl0_0_b_ns;
- logic mitctl0_0_b;
- logic mitctl1_0_b_ns;
- logic mitctl1_0_b;
-
-   assign mit0_match_ns = (mitcnt0[31:0] >= mitb0[31:0]);
-   assign mit1_match_ns = (mitcnt1[31:0] >= mitb1[31:0]);
-
-   assign dec_timer_t0_pulse = mit0_match_ns;
-   assign dec_timer_t1_pulse = mit1_match_ns;
-   // ----------------------------------------------------------------------
-   // MITCNT0 (RW)
-   // [31:0] : Internal Timer Counter 0
-
-   localparam MITCNT0       = 12'h7d2;
-
-   assign wr_mitcnt0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCNT0);
-
-   assign mitcnt0_inc_ok = mitctl0[MITCTL_ENABLE] & (~dec_pause_state | mitctl0[MITCTL_ENABLE_PAUSED]) & (~dec_tlu_pmu_fw_halted | mitctl0[MITCTL_ENABLE_HALTED]) & ~internal_dbg_halt_timers;
-
-   assign {mitcnt0_inc_cout, mitcnt0_inc[7:0]} = mitcnt0[7:0] + {7'b0, 1'b1};
-   assign mitcnt0_inc[31:8] = mitcnt0[31:8] + {23'b0, mitcnt0_inc_cout};
-
-   assign mitcnt0_ns[31:0]  = wr_mitcnt0_r ? dec_csr_wrdata_r[31:0] : mit0_match_ns ? 'b0 : mitcnt0_inc[31:0];
-
-   rvdffe #(24) mitcnt0_ffb      (.*, .clk(free_l2clk), .en(wr_mitcnt0_r | (mitcnt0_inc_ok & mitcnt0_inc_cout) | mit0_match_ns), .din(mitcnt0_ns[31:8]), .dout(mitcnt0[31:8]));
-   rvdffe #(8)  mitcnt0_ffa      (.*, .clk(free_l2clk), .en(wr_mitcnt0_r | mitcnt0_inc_ok | mit0_match_ns),                       .din(mitcnt0_ns[7:0]), .dout(mitcnt0[7:0]));
-
-   // ----------------------------------------------------------------------
-   // MITCNT1 (RW)
-   // [31:0] : Internal Timer Counter 0
-
-   localparam MITCNT1       = 12'h7d5;
-
-   assign wr_mitcnt1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCNT1);
-
-   assign mitcnt1_inc_ok = mitctl1[MITCTL_ENABLE] &
-                           (~dec_pause_state | mitctl1[MITCTL_ENABLE_PAUSED]) &
-                           (~dec_tlu_pmu_fw_halted | mitctl1[MITCTL_ENABLE_HALTED]) &
-                           ~internal_dbg_halt_timers &
-                           (~mitctl1[3] | mit0_match_ns);
-
-   // only inc MITCNT1 if not cascaded with 0, or if 0 overflows
-   assign {mitcnt1_inc_cout, mitcnt1_inc[7:0]} = mitcnt1[7:0] + {7'b0, 1'b1};
-   assign mitcnt1_inc[31:8] = mitcnt1[31:8] + {23'b0, mitcnt1_inc_cout};
-
-   assign mitcnt1_ns[31:0]  = wr_mitcnt1_r ? dec_csr_wrdata_r[31:0] : mit1_match_ns ? 'b0 : mitcnt1_inc[31:0];
-
-   rvdffe #(24) mitcnt1_ffb      (.*, .clk(free_l2clk), .en(wr_mitcnt1_r | (mitcnt1_inc_ok & mitcnt1_inc_cout) | mit1_match_ns), .din(mitcnt1_ns[31:8]), .dout(mitcnt1[31:8]));
-   rvdffe #(8)  mitcnt1_ffa      (.*, .clk(free_l2clk), .en(wr_mitcnt1_r | mitcnt1_inc_ok | mit1_match_ns),                       .din(mitcnt1_ns[7:0]), .dout(mitcnt1[7:0]));
-
-
-   // ----------------------------------------------------------------------
-   // MITB0 (RW)
-   // [31:0] : Internal Timer Bound 0
-
-   localparam MITB0         = 12'h7d3;
-
-   assign wr_mitb0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITB0);
-
-   rvdffe #(32) mitb0_ff      (.*, .en(wr_mitb0_r), .din(~dec_csr_wrdata_r[31:0]), .dout(mitb0_b[31:0]));
-   assign mitb0[31:0] = ~mitb0_b[31:0];
-
-   // ----------------------------------------------------------------------
-   // MITB1 (RW)
-   // [31:0] : Internal Timer Bound 1
-
-   localparam MITB1         = 12'h7d6;
-
-   assign wr_mitb1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITB1);
-
-   rvdffe #(32) mitb1_ff      (.*, .en(wr_mitb1_r), .din(~dec_csr_wrdata_r[31:0]), .dout(mitb1_b[31:0]));
-   assign mitb1[31:0] = ~mitb1_b[31:0];
-
-   // ----------------------------------------------------------------------
-   // MITCTL0 (RW) Internal Timer Ctl 0
-   // [31:3] : Reserved, reads 0x0
-   // [2]    : Enable while PAUSEd
-   // [1]    : Enable while HALTed
-   // [0]    : Enable (resets to 0x1)
-
-   localparam MITCTL0       = 12'h7d4;
-
-   assign wr_mitctl0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCTL0);
-   assign mitctl0_ns[2:0] = wr_mitctl0_r ? {dec_csr_wrdata_r[2:0]} : {mitctl0[2:0]};
-
-   assign mitctl0_0_b_ns = ~mitctl0_ns[0];
-   rvdffs #(3) mitctl0_ff      (.*, .clk(csr_wr_clk), .en(wr_mitctl0_r), .din({mitctl0_ns[2:1], mitctl0_0_b_ns}), .dout({mitctl0[2:1], mitctl0_0_b}));
-   assign mitctl0[0] = ~mitctl0_0_b;
-
-   // ----------------------------------------------------------------------
-   // MITCTL1 (RW) Internal Timer Ctl 1
-   // [31:4] : Reserved, reads 0x0
-   // [3]    : Cascade
-   // [2]    : Enable while PAUSEd
-   // [1]    : Enable while HALTed
-   // [0]    : Enable (resets to 0x1)
-
-   localparam MITCTL1       = 12'h7d7;
-
-   assign wr_mitctl1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCTL1);
-   assign mitctl1_ns[3:0] = wr_mitctl1_r ? {dec_csr_wrdata_r[3:0]} : {mitctl1[3:0]};
-
-   assign mitctl1_0_b_ns = ~mitctl1_ns[0];
-   rvdffs #(4) mitctl1_ff      (.*, .clk(csr_wr_clk), .en(wr_mitctl1_r), .din({mitctl1_ns[3:1], mitctl1_0_b_ns}), .dout({mitctl1[3:1], mitctl1_0_b}));
-   assign mitctl1[0] = ~mitctl1_0_b;
-   assign dec_timer_read_d = csr_mitcnt1 | csr_mitcnt0 | csr_mitb1 | csr_mitb0 | csr_mitctl0 | csr_mitctl1;
-   assign dec_timer_rddata_d[31:0] = ( ({32{csr_mitcnt0}}      & mitcnt0[31:0]) |
-                                       ({32{csr_mitcnt1}}      & mitcnt1[31:0]) |
-                                       ({32{csr_mitb0}}        & mitb0[31:0]) |
-                                       ({32{csr_mitb1}}        & mitb1[31:0]) |
-                                       ({32{csr_mitctl0}}      & {29'b0, mitctl0[2:0]}) |
-                                       ({32{csr_mitctl1}}      & {28'b0, mitctl1[3:0]})
-                                       );
-
-
-endmodule // dec_timer_ctl
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DEC Trigger Logic
-// Comments:
-//
-//********************************************************************************
-module eb1_dec_trigger
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-
-   input eb1_trigger_pkt_t [3:0] trigger_pkt_any,           // Packet from tlu. 'select':0-pc,1-Opcode  'Execute' needs to be set for dec triggers to fire. 'match'-1 do mask, 0: full match
-   input logic [31:1]  dec_i0_pc_d,                          // i0 pc
-
-   output logic [3:0] dec_i0_trigger_match_d                 // Trigger match
-);
-
-   logic [3:0][31:0]  dec_i0_match_data;
-   logic [3:0]        dec_i0_trigger_data_match;
-
-   for (genvar i=0; i<4; i++) begin
-      assign dec_i0_match_data[i][31:0] = ({32{~trigger_pkt_any[i].select & trigger_pkt_any[i].execute}} & {dec_i0_pc_d[31:1], trigger_pkt_any[i].tdata2[0]});      // select=0; do a PC match
-
-      rvmaskandmatch trigger_i0_match (.mask(trigger_pkt_any[i].tdata2[31:0]), .data(dec_i0_match_data[i][31:0]), .masken(trigger_pkt_any[i].match), .match(dec_i0_trigger_data_match[i]));
-
-      assign dec_i0_trigger_match_d[i] = trigger_pkt_any[i].execute & trigger_pkt_any[i].m & dec_i0_trigger_data_match[i];
-   end
-
-endmodule // eb1_dec_trigger
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic          clk,                                           // Top level clock
-   input logic          rst_l,                                         // Reset
-   input logic          scan_mode,                                     // Scan control
-
-   input logic  [1:0]   dec_data_en,                                   // Clock enable {x,r}, one cycle pulse
-   input logic  [1:0]   dec_ctl_en,                                    // Clock enable {x,r}, two cycle pulse
-   input logic  [31:0]  dbg_cmd_wrdata,                                // Debug data   to primary I0 RS1
-   input eb1_alu_pkt_t i0_ap,                                         // DEC alu {valid,predecodes}
-
-   input logic          dec_debug_wdata_rs1_d,                         // Debug select to primary I0 RS1
-
-   input eb1_predict_pkt_t dec_i0_predict_p_d,                        // DEC branch predict packet
-   input logic [pt.BHT_GHR_SIZE-1:0] i0_predict_fghr_d,                // DEC predict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] i0_predict_index_d,     // DEC predict index
-   input logic [pt.BTB_BTAG_SIZE-1:0] i0_predict_btag_d,               // DEC predict branch tag
-
-   input logic  [31:0]  lsu_result_m,                                  // Load result M-stage
-   input logic  [31:0]  lsu_nonblock_load_data,                        // nonblock load data
-   input logic          dec_i0_rs1_en_d,                               // Qualify GPR RS1 data
-   input logic          dec_i0_rs2_en_d,                               // Qualify GPR RS2 data
-   input logic  [31:0]  gpr_i0_rs1_d,                                  // DEC data gpr
-   input logic  [31:0]  gpr_i0_rs2_d,                                  // DEC data gpr
-   input logic  [31:0]  dec_i0_immed_d,                                // DEC data immediate
-   input logic  [31:0]  dec_i0_result_r,                               // DEC result in R-stage
-   input logic  [12:1]  dec_i0_br_immed_d,                             // Branch immediate
-   input logic          dec_i0_alu_decode_d,                           // Valid to X-stage ALU
-   input logic          dec_i0_branch_d,                               // Branch in D-stage
-   input logic          dec_i0_select_pc_d,                            // PC select to RS1
-   input logic  [31:1]  dec_i0_pc_d,                                   // Instruction PC
-   input logic  [3:0]   dec_i0_rs1_bypass_en_d,                        // DEC bypass select  1 - X-stage, 0 - dec bypass data
-   input logic  [3:0]   dec_i0_rs2_bypass_en_d,                        // DEC bypass select  1 - X-stage, 0 - dec bypass data
-   input logic          dec_csr_ren_d,                                 // CSR read select
-   input logic  [31:0]  dec_csr_rddata_d,                              // CSR read data
-
-   input logic          dec_qual_lsu_d,                                // LSU instruction at D.  Use to quiet LSU operands
-   input eb1_mul_pkt_t mul_p,                                         // DEC {valid, operand signs, low, operand bypass}
-   input eb1_div_pkt_t div_p,                                         // DEC {valid, unsigned, rem}
-   input logic          dec_div_cancel,                                // Cancel the divide operation
-
-   input logic  [31:1]  pred_correct_npc_x,                            // DEC NPC for correctly predicted branch
-
-   input logic          dec_tlu_flush_lower_r,                         // Flush divide and secondary ALUs
-   input logic  [31:1]  dec_tlu_flush_path_r,                          // Redirect target
-
-
-   input logic         dec_extint_stall,                               // External stall mux select
-   input logic [31:2]  dec_tlu_meihap,                                 // External stall mux data
-
-
-   output logic [31:0]  exu_lsu_rs1_d,                                 // LSU operand
-   output logic [31:0]  exu_lsu_rs2_d,                                 // LSU operand
-
-   output logic         exu_flush_final,                               // Pipe is being flushed this cycle
-   output logic [31:1]  exu_flush_path_final,                          // Target for the oldest flush source
-
-   output logic [31:0]  exu_i0_result_x,                               // Primary ALU result to DEC
-   output logic [31:1]  exu_i0_pc_x,                                   // Primary PC  result to DEC
-   output logic [31:0]  exu_csr_rs1_x,                                 // RS1 source for a CSR instruction
-
-   output logic [31:1]  exu_npc_r,                                     // Divide NPC
-   output logic [1:0]   exu_i0_br_hist_r,                              // to DEC  I0 branch history
-   output logic         exu_i0_br_error_r,                             // to DEC  I0 branch error
-   output logic         exu_i0_br_start_error_r,                       // to DEC  I0 branch start error
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r,     // to DEC  I0 branch index
-   output logic         exu_i0_br_valid_r,                             // to DEC  I0 branch valid
-   output logic         exu_i0_br_mp_r,                                // to DEC  I0 branch mispredict
-   output logic         exu_i0_br_middle_r,                            // to DEC  I0 branch middle
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_i0_br_fghr_r,               // to DEC  I0 branch fghr
-   output logic         exu_i0_br_way_r,                               // to DEC  I0 branch way
-
-   output eb1_predict_pkt_t exu_mp_pkt,                               // Mispredict branch packet
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_eghr,                    // Mispredict global history
-   output logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   output logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-
-   output logic         exu_pmu_i0_br_misp,                            // to PMU - I0 E4 branch mispredict
-   output logic         exu_pmu_i0_br_ataken,                          // to PMU - I0 E4 taken
-   output logic         exu_pmu_i0_pc4,                                // to PMU - I0 E4 PC
-
-
-   output logic [31:0]  exu_div_result,                                // Divide result
-   output logic         exu_div_wren                                   // Divide write enable to GPR
-  );
-
-
-
-
-   logic [31:0]                i0_rs1_bypass_data_d;
-   logic [31:0]                i0_rs2_bypass_data_d;
-   logic                       i0_rs1_bypass_en_d;
-   logic                       i0_rs2_bypass_en_d;
-   logic [31:0]                i0_rs1_d,  i0_rs2_d;
-   logic [31:0]                muldiv_rs1_d;
-   logic [31:1]                pred_correct_npc_r;
-   logic                       i0_pred_correct_upper_r;
-   logic [31:1]                i0_flush_path_upper_r;
-   logic                       x_data_en, x_data_en_q1, x_data_en_q2, r_data_en, r_data_en_q2;
-   logic                       x_ctl_en,  r_ctl_en;
-
-   logic [pt.BHT_GHR_SIZE-1:0] ghr_d_ns, ghr_d;
-   logic [pt.BHT_GHR_SIZE-1:0] ghr_x_ns, ghr_x;
-   logic                       i0_taken_d;
-   logic                       i0_taken_x;
-   logic                       i0_valid_d;
-   logic                       i0_valid_x;
-   logic [pt.BHT_GHR_SIZE-1:0] after_flush_eghr;
-
-   eb1_predict_pkt_t          final_predict_mp;
-   eb1_predict_pkt_t          i0_predict_newp_d;
-
-   logic                       flush_in_d;
-   logic [31:0]                alu_result_x;
-
-   logic                       mul_valid_x;
-   logic [31:0]                mul_result_x;
-
-   eb1_predict_pkt_t          i0_pp_r;
-
-   logic                       i0_flush_upper_d;
-   logic [31:1]                i0_flush_path_d;
-   eb1_predict_pkt_t          i0_predict_p_d;
-   logic                       i0_pred_correct_upper_d;
-
-   logic                       i0_flush_upper_x;
-   logic [31:1]                i0_flush_path_x;
-   eb1_predict_pkt_t          i0_predict_p_x;
-   logic                       i0_pred_correct_upper_x;
-   logic                       i0_branch_x;
-
-   localparam PREDPIPESIZE = pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1+pt.BHT_GHR_SIZE+pt.BTB_BTAG_SIZE;
-   logic [PREDPIPESIZE-1:0]    predpipe_d, predpipe_x, predpipe_r, final_predpipe_mp;
-
-
-
-
-   rvdffpcie #(31)                       i_flush_path_x_ff    (.*, .clk(clk),        .en ( x_data_en     ),  .din ( i0_flush_path_d[31:1]         ),  .dout( i0_flush_path_x[31:1]      ) );
-   rvdffe #(32)                          i_csr_rs1_x_ff       (.*, .clk(clk),        .en ( x_data_en_q1  ),  .din ( i0_rs1_d[31:0]                ),  .dout( exu_csr_rs1_x[31:0]        ) );
-   rvdffppe #($bits(eb1_predict_pkt_t)) i_predictpacket_x_ff (.*, .clk(clk),        .en ( x_data_en     ),  .din ( i0_predict_p_d                ),  .dout( i0_predict_p_x             ) );
-   rvdffe #(PREDPIPESIZE)                i_predpipe_x_ff      (.*, .clk(clk),        .en ( x_data_en_q2  ),  .din ( predpipe_d                    ),  .dout( predpipe_x                 ) );
-   rvdffe #(PREDPIPESIZE)                i_predpipe_r_ff      (.*, .clk(clk),        .en ( r_data_en_q2  ),  .din ( predpipe_x                    ),  .dout( predpipe_r                 ) );
-
-   rvdffe #(4+pt.BHT_GHR_SIZE)          i_x_ff               (.*, .clk(clk),        .en ( x_ctl_en      ),  .din ({i0_valid_d,i0_taken_d,i0_flush_upper_d,i0_pred_correct_upper_d,ghr_x_ns[pt.BHT_GHR_SIZE-1:0]} ),
-                                                                                                            .dout({i0_valid_x,i0_taken_x,i0_flush_upper_x,i0_pred_correct_upper_x,ghr_x[pt.BHT_GHR_SIZE-1:0]}    ) );
-
-   rvdffppe #($bits(eb1_predict_pkt_t)+1) i_r_ff0         (.*, .clk(clk),        .en ( r_ctl_en      ),  .din ({i0_pred_correct_upper_x, i0_predict_p_x}),
-                                                                                                          .dout({i0_pred_correct_upper_r, i0_pp_r       }) );
-
-   rvdffpcie #(31)                      i_flush_r_ff         (.*, .clk(clk),        .en ( r_data_en     ),  .din ( i0_flush_path_x[31:1]         ),  .dout( i0_flush_path_upper_r[31:1]) );
-   rvdffpcie #(31)                      i_npc_r_ff           (.*, .clk(clk),        .en ( r_data_en     ),  .din ( pred_correct_npc_x[31:1]      ),  .dout( pred_correct_npc_r[31:1]   ) );
-
-   rvdffie #(pt.BHT_GHR_SIZE+2,1)       i_misc_ff            (.*, .clk(clk),                                .din ({ghr_d_ns[pt.BHT_GHR_SIZE-1:0], mul_p.valid, dec_i0_branch_d}),
-                                                                                                            .dout({ghr_d[pt.BHT_GHR_SIZE-1:0]   , mul_valid_x, i0_branch_x}) );
-
-
-
-
-
-   assign predpipe_d[PREDPIPESIZE-1:0]
-                                   = {i0_predict_fghr_d, i0_predict_index_d, i0_predict_btag_d};
-
-
-   assign i0_rs1_bypass_en_d       = dec_i0_rs1_bypass_en_d[0] | dec_i0_rs1_bypass_en_d[1] | dec_i0_rs1_bypass_en_d[2] | dec_i0_rs1_bypass_en_d[3];
-   assign i0_rs2_bypass_en_d       = dec_i0_rs2_bypass_en_d[0] | dec_i0_rs2_bypass_en_d[1] | dec_i0_rs2_bypass_en_d[2] | dec_i0_rs2_bypass_en_d[3];
-
-   assign i0_rs1_bypass_data_d[31:0]=({32{dec_i0_rs1_bypass_en_d[0]}} & dec_i0_result_r[31:0]       ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[1]}} & lsu_result_m[31:0]          ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[2]}} & exu_i0_result_x[31:0]       ) |
-                                     ({32{dec_i0_rs1_bypass_en_d[3]}} & lsu_nonblock_load_data[31:0]);
-
-   assign i0_rs2_bypass_data_d[31:0]=({32{dec_i0_rs2_bypass_en_d[0]}} & dec_i0_result_r[31:0]       ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[1]}} & lsu_result_m[31:0]          ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[2]}} & exu_i0_result_x[31:0]       ) |
-                                     ({32{dec_i0_rs2_bypass_en_d[3]}} & lsu_nonblock_load_data[31:0]);
-
-
-   assign i0_rs1_d[31:0]           = ({32{ i0_rs1_bypass_en_d                                           }}             & i0_rs1_bypass_data_d[31:0]) |
-                                     ({32{~i0_rs1_bypass_en_d &  dec_i0_select_pc_d                     }}             & {dec_i0_pc_d[31:1],1'b0}  ) |    // for jal's
-                                     ({32{~i0_rs1_bypass_en_d &  dec_debug_wdata_rs1_d                  }}             & dbg_cmd_wrdata[31:0]      ) |
-                                     ({32{~i0_rs1_bypass_en_d & ~dec_debug_wdata_rs1_d & dec_i0_rs1_en_d}}             & gpr_i0_rs1_d[31:0]        );
-
-   assign i0_rs2_d[31:0]           = ({32{~i0_rs2_bypass_en_d & dec_i0_rs2_en_d}}                                      & gpr_i0_rs2_d[31:0]        ) |
-                                     ({32{~i0_rs2_bypass_en_d                  }}                                      & dec_i0_immed_d[31:0]      ) |
-                                     ({32{ i0_rs2_bypass_en_d                  }}                                      & i0_rs2_bypass_data_d[31:0]);
-
-
-   assign exu_lsu_rs1_d[31:0]      = ({32{~i0_rs1_bypass_en_d & ~dec_extint_stall & dec_i0_rs1_en_d & dec_qual_lsu_d}} & gpr_i0_rs1_d[31:0]        ) |
-                                     ({32{ i0_rs1_bypass_en_d & ~dec_extint_stall                   & dec_qual_lsu_d}} & i0_rs1_bypass_data_d[31:0]) |
-                                     ({32{                       dec_extint_stall                   & dec_qual_lsu_d}} & {dec_tlu_meihap[31:2],2'b0});
-
-   assign exu_lsu_rs2_d[31:0]      = ({32{~i0_rs2_bypass_en_d & ~dec_extint_stall & dec_i0_rs2_en_d & dec_qual_lsu_d}} & gpr_i0_rs2_d[31:0]        ) |
-                                     ({32{ i0_rs2_bypass_en_d & ~dec_extint_stall                   & dec_qual_lsu_d}} & i0_rs2_bypass_data_d[31:0]);
-
-
-   assign muldiv_rs1_d[31:0]       = ({32{~i0_rs1_bypass_en_d & dec_i0_rs1_en_d}}                                      & gpr_i0_rs1_d[31:0]        ) |
-                                     ({32{ i0_rs1_bypass_en_d                  }}                                      & i0_rs1_bypass_data_d[31:0]);
-
-
-   assign x_data_en                =  dec_data_en[1];
-   assign x_data_en_q1             =  dec_data_en[1] & dec_csr_ren_d;
-   assign x_data_en_q2             =  dec_data_en[1] & dec_i0_branch_d;
-   assign r_data_en                =  dec_data_en[0];
-   assign r_data_en_q2             =  dec_data_en[0] & i0_branch_x;
-   assign x_ctl_en                 =  dec_ctl_en[1];
-   assign r_ctl_en                 =  dec_ctl_en[0];
-
-
-
-
-   eb1_exu_alu_ctl #(.pt(pt)) i_alu  (.*,
-                          .enable            ( x_data_en                   ),   // I
-                          .pp_in             ( i0_predict_newp_d           ),   // I
-                          .valid_in          ( dec_i0_alu_decode_d         ),   // I
-                          .flush_upper_x     ( i0_flush_upper_x            ),   // I
-                          .flush_lower_r     ( dec_tlu_flush_lower_r       ),   // I
-                          .a_in              ( i0_rs1_d[31:0]              ),   // I
-                          .b_in              ( i0_rs2_d[31:0]              ),   // I
-                          .pc_in             ( dec_i0_pc_d[31:1]           ),   // I
-                          .brimm_in          ( dec_i0_br_immed_d[12:1]     ),   // I
-                          .ap                ( i0_ap                       ),   // I
-                          .csr_ren_in        ( dec_csr_ren_d               ),   // I
-                          .csr_rddata_in     ( dec_csr_rddata_d[31:0]      ),   // I
-                          .result_ff         ( alu_result_x[31:0]          ),   // O
-                          .flush_upper_out   ( i0_flush_upper_d            ),   // O
-                          .flush_final_out   ( exu_flush_final             ),   // O
-                          .flush_path_out    ( i0_flush_path_d[31:1]       ),   // O
-                          .predict_p_out     ( i0_predict_p_d              ),   // O
-                          .pred_correct_out  ( i0_pred_correct_upper_d     ),   // O
-                          .pc_ff             ( exu_i0_pc_x[31:1]           ));  // O
-
-
-
-   eb1_exu_mul_ctl #(.pt(pt)) i_mul   (.*,
-                          .mul_p             ( mul_p              & {$bits(eb1_mul_pkt_t){mul_p.valid}} ),   // I
-                          .rs1_in            ( muldiv_rs1_d[31:0] & {32{mul_p.valid}}                    ),   // I
-                          .rs2_in            ( i0_rs2_d[31:0]     & {32{mul_p.valid}}                    ),   // I
-                          .result_x          ( mul_result_x[31:0]                                        ));  // O
-
-
-
-   eb1_exu_div_ctl #(.pt(pt)) i_div   (.*,
-                          .cancel            ( dec_div_cancel              ),   // I
-                          .dp                ( div_p                       ),   // I
-                          .dividend          ( muldiv_rs1_d[31:0]          ),   // I
-                          .divisor           ( i0_rs2_d[31:0]              ),   // I
-                          .finish_dly        ( exu_div_wren                ),   // O
-                          .out               ( exu_div_result[31:0]        ));  // O
-
-
-
-   assign exu_i0_result_x[31:0]    =  (mul_valid_x)  ?  mul_result_x[31:0]  :  alu_result_x[31:0];
-
-
-
-
-   always_comb begin
-      i0_predict_newp_d            =  dec_i0_predict_p_d;
-      i0_predict_newp_d.boffset    =  dec_i0_pc_d[1];  // from the start of inst
-   end
-
-
-   assign exu_pmu_i0_br_misp       =  i0_pp_r.misp;
-   assign exu_pmu_i0_br_ataken     =  i0_pp_r.ataken;
-   assign exu_pmu_i0_pc4           =  i0_pp_r.pc4;
-
-
-   assign i0_valid_d               =  i0_predict_p_d.valid  & dec_i0_alu_decode_d & ~dec_tlu_flush_lower_r;
-   assign i0_taken_d               = (i0_predict_p_d.ataken & dec_i0_alu_decode_d);
-
-if(pt.BTB_ENABLE==1) begin
-   // maintain GHR at D
-   assign ghr_d_ns[pt.BHT_GHR_SIZE-1:0]
-                                   = ({pt.BHT_GHR_SIZE{~dec_tlu_flush_lower_r &  i0_valid_d}} & {ghr_d[pt.BHT_GHR_SIZE-2:0], i0_taken_d}) |
-                                     ({pt.BHT_GHR_SIZE{~dec_tlu_flush_lower_r & ~i0_valid_d}} &  ghr_d[pt.BHT_GHR_SIZE-1:0]             ) |
-                                     ({pt.BHT_GHR_SIZE{ dec_tlu_flush_lower_r              }} &  ghr_x[pt.BHT_GHR_SIZE-1:0]             );
-
-   // maintain GHR at X
-   assign ghr_x_ns[pt.BHT_GHR_SIZE-1:0]
-                                   = ({pt.BHT_GHR_SIZE{ i0_valid_x}} & {ghr_x[pt.BHT_GHR_SIZE-2:0], i0_taken_x}) |
-                                     ({pt.BHT_GHR_SIZE{~i0_valid_x}} &  ghr_x[pt.BHT_GHR_SIZE-1:0]             ) ;
-
-
-   assign exu_i0_br_valid_r                                 =  i0_pp_r.valid;
-   assign exu_i0_br_mp_r                                    =  i0_pp_r.misp;
-   assign exu_i0_br_way_r                                   =  i0_pp_r.way;
-   assign exu_i0_br_hist_r[1:0]                             =  {2{i0_pp_r.valid}} & i0_pp_r.hist[1:0];
-   assign exu_i0_br_error_r                                 =  i0_pp_r.br_error;
-   assign exu_i0_br_middle_r                                =  i0_pp_r.pc4 ^ i0_pp_r.boffset;
-   assign exu_i0_br_start_error_r                           =  i0_pp_r.br_start_error;
-
-   assign {exu_i0_br_fghr_r[pt.BHT_GHR_SIZE-1:0],
-           exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]}=  predpipe_r[PREDPIPESIZE-1:pt.BTB_BTAG_SIZE];
-
-
-   assign final_predict_mp                                  = (i0_flush_upper_x)  ?  i0_predict_p_x  :  '0;
-
-   assign final_predpipe_mp[PREDPIPESIZE-1:0]               = (i0_flush_upper_x)  ?  predpipe_x      :  '0;
-
-   assign after_flush_eghr[pt.BHT_GHR_SIZE-1:0]             = (i0_flush_upper_x & ~dec_tlu_flush_lower_r)  ?  ghr_d[pt.BHT_GHR_SIZE-1:0]  :  ghr_x[pt.BHT_GHR_SIZE-1:0];
-
-
-   assign exu_mp_pkt.valid                                  =  final_predict_mp.valid;
-   assign exu_mp_pkt.way                                    =  final_predict_mp.way;
-   assign exu_mp_pkt.misp                                   =  final_predict_mp.misp;
-   assign exu_mp_pkt.pcall                                  =  final_predict_mp.pcall;
-   assign exu_mp_pkt.pja                                    =  final_predict_mp.pja;
-   assign exu_mp_pkt.pret                                   =  final_predict_mp.pret;
-   assign exu_mp_pkt.ataken                                 =  final_predict_mp.ataken;
-   assign exu_mp_pkt.boffset                                =  final_predict_mp.boffset;
-   assign exu_mp_pkt.pc4                                    =  final_predict_mp.pc4;
-   assign exu_mp_pkt.hist[1:0]                              =  final_predict_mp.hist[1:0];
-   assign exu_mp_pkt.toffset[11:0]                          =  final_predict_mp.toffset[11:0];
-
-   assign exu_mp_fghr[pt.BHT_GHR_SIZE-1:0]                  =  after_flush_eghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign {exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],
-           exu_mp_btag[pt.BTB_BTAG_SIZE-1:0]}               =  final_predpipe_mp[PREDPIPESIZE-pt.BHT_GHR_SIZE-1:0];
-
-   assign exu_mp_eghr[pt.BHT_GHR_SIZE-1:0]                  =  final_predpipe_mp[PREDPIPESIZE-1:pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+pt.BTB_BTAG_SIZE+1]; // mp ghr for bht write
-end // if (pt.BTB_ENABLE==1)
-else begin
-   assign ghr_d_ns = '0;
-   assign ghr_x_ns = '0;
-   assign exu_mp_pkt = '0;
-   assign exu_mp_eghr = '0;
-   assign exu_mp_fghr = '0;
-   assign exu_mp_index = '0;
-   assign exu_mp_btag = '0;
-   assign exu_i0_br_hist_r = '0;
-   assign exu_i0_br_error_r = '0;
-   assign exu_i0_br_start_error_r = '0;
-   assign exu_i0_br_index_r = '0;
-   assign exu_i0_br_valid_r = '0;
-   assign exu_i0_br_mp_r = '0;
-   assign exu_i0_br_middle_r = '0;
-   assign exu_i0_br_fghr_r = '0;
-   assign exu_i0_br_way_r = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   assign exu_flush_path_final[31:1] = ( {31{ dec_tlu_flush_lower_r                   }} & dec_tlu_flush_path_r[31:1] ) |
-                                       ( {31{~dec_tlu_flush_lower_r & i0_flush_upper_d}} & i0_flush_path_d[31:1]      );
-
-   assign exu_npc_r[31:1]            = (i0_pred_correct_upper_r)  ?  pred_correct_npc_r[31:1]    :  i0_flush_path_upper_r[31:1];
-
-
-endmodule // eb1_exu
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-// Function: Top level brqrv core file
-// Comments:
-//
-//********************************************************************************
-
-module eb1_dma_ctrl 
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic         clk,
-   input logic         free_clk,
-   input logic         rst_l,
-   input logic         dma_bus_clk_en, // slave bus clock enable
-   input logic         clk_override,
-   input logic         scan_mode,
-
-   // Debug signals
-   input logic [31:0]  dbg_cmd_addr,
-   input logic [31:0]  dbg_cmd_wrdata,
-   input logic         dbg_cmd_valid,
-   input logic         dbg_cmd_write, // 1: write command, 0: read_command
-   input logic [1:0]   dbg_cmd_type, // 0:gpr 1:csr 2: memory
-   input logic [1:0]   dbg_cmd_size, // size of the abstract mem access debug command
-
-   input  logic        dbg_dma_bubble,   // Debug needs a bubble to send a valid
-   output logic        dma_dbg_ready,    // DMA is ready to accept debug request
-
-   output logic        dma_dbg_cmd_done,
-   output logic        dma_dbg_cmd_fail,
-   output logic [31:0] dma_dbg_rddata,
-
-   // Core side signals
-   output logic        dma_dccm_req,  // DMA dccm request (only one of dccm/iccm will be set)
-   output logic        dma_iccm_req,  // DMA iccm request
-   output logic [2:0]  dma_mem_tag,   // DMA Buffer entry number
-   output logic [31:0] dma_mem_addr,  // DMA request address
-   output logic [2:0]  dma_mem_sz,    // DMA request size
-   output logic        dma_mem_write, // DMA write to dccm/iccm
-   output logic [63:0] dma_mem_wdata, // DMA write data
-
-   input logic         dccm_dma_rvalid,    // dccm data valid for DMA read
-   input logic         dccm_dma_ecc_error, // ECC error on DMA read
-   input logic [2:0]   dccm_dma_rtag,      // Tag of the DMA req
-   input logic [63:0]  dccm_dma_rdata,     // dccm data for DMA read
-   input logic         iccm_dma_rvalid,    // iccm data valid for DMA read
-   input logic         iccm_dma_ecc_error, // ECC error on DMA read
-   input logic [2:0]   iccm_dma_rtag,      // Tag of the DMA req
-   input logic [63:0]  iccm_dma_rdata,     // iccm data for DMA read
-
-   output logic        dma_active,         // DMA is busy
-   output logic        dma_dccm_stall_any, // stall dccm pipe (bubble) so that DMA can proceed
-   output logic        dma_iccm_stall_any, // stall iccm pipe (bubble) so that DMA can proceed
-   input logic         dccm_ready, // dccm ready to accept DMA request
-   input logic         iccm_ready, // iccm ready to accept DMA request
-   input logic [2:0]   dec_tlu_dma_qos_prty,    // DMA QoS priority coming from MFDC [18:15]
-
-   // PMU signals
-   output logic        dma_pmu_dccm_read,
-   output logic        dma_pmu_dccm_write,
-   output logic        dma_pmu_any_read,
-   output logic        dma_pmu_any_write,
-
-   // AXI Write Channels
-   input  logic                        dma_axi_awvalid,
-   output logic                        dma_axi_awready,
-   input  logic [pt.DMA_BUS_TAG-1:0]   dma_axi_awid,
-   input  logic [31:0]                 dma_axi_awaddr,
-   input  logic [2:0]                  dma_axi_awsize,
-
-
-   input  logic                        dma_axi_wvalid,
-   output logic                        dma_axi_wready,
-   input  logic [63:0]                 dma_axi_wdata,
-   input  logic [7:0]                  dma_axi_wstrb,
-
-   output logic                        dma_axi_bvalid,
-   input  logic                        dma_axi_bready,
-   output logic [1:0]                  dma_axi_bresp,
-   output logic [pt.DMA_BUS_TAG-1:0]   dma_axi_bid,
-
-   // AXI Read Channels
-   input  logic                        dma_axi_arvalid,
-   output logic                        dma_axi_arready,
-   input  logic [pt.DMA_BUS_TAG-1:0]   dma_axi_arid,
-   input  logic [31:0]                 dma_axi_araddr,
-   input  logic [2:0]                  dma_axi_arsize,
-
-   output logic                        dma_axi_rvalid,
-   input  logic                        dma_axi_rready,
-   output logic [pt.DMA_BUS_TAG-1:0]   dma_axi_rid,
-   output logic [63:0]                 dma_axi_rdata,
-   output logic [1:0]                  dma_axi_rresp,
-   output logic                        dma_axi_rlast
-);
-
-
-   localparam DEPTH = pt.DMA_BUF_DEPTH;
-   localparam DEPTH_PTR = $clog2(DEPTH);
-   localparam NACK_COUNT = 7;
-
-   logic [DEPTH-1:0]        fifo_valid;
-   logic [DEPTH-1:0][1:0]   fifo_error;
-   logic [DEPTH-1:0]        fifo_error_bus;
-   logic [DEPTH-1:0]        fifo_rpend;
-   logic [DEPTH-1:0]        fifo_done;      // DMA trxn is done in core
-   logic [DEPTH-1:0]        fifo_done_bus;  // DMA trxn is done in core but synced to bus clock
-   logic [DEPTH-1:0][31:0]  fifo_addr;
-   logic [DEPTH-1:0][2:0]   fifo_sz;
-   logic [DEPTH-1:0][7:0]   fifo_byteen;
-   logic [DEPTH-1:0]        fifo_write;
-   logic [DEPTH-1:0]        fifo_posted_write;
-   logic [DEPTH-1:0]        fifo_dbg;
-   logic [DEPTH-1:0][63:0]  fifo_data;
-   logic [DEPTH-1:0][pt.DMA_BUS_TAG-1:0]  fifo_tag;
-   logic [DEPTH-1:0][pt.DMA_BUS_ID-1:0]   fifo_mid;
-   logic [DEPTH-1:0][pt.DMA_BUS_PRTY-1:0] fifo_prty;
-
-   logic [DEPTH-1:0]        fifo_cmd_en;
-   logic [DEPTH-1:0]        fifo_data_en;
-   logic [DEPTH-1:0]        fifo_pend_en;
-   logic [DEPTH-1:0]        fifo_done_en;
-   logic [DEPTH-1:0]        fifo_done_bus_en;
-   logic [DEPTH-1:0]        fifo_error_en;
-   logic [DEPTH-1:0]        fifo_error_bus_en;
-   logic [DEPTH-1:0]        fifo_reset;
-   logic [DEPTH-1:0][1:0]   fifo_error_in;
-   logic [DEPTH-1:0][63:0]  fifo_data_in;
-
-   logic                    fifo_write_in;
-   logic                    fifo_posted_write_in;
-   logic                    fifo_dbg_in;
-   logic [31:0]             fifo_addr_in;
-   logic [2:0]              fifo_sz_in;
-   logic [7:0]              fifo_byteen_in;
-
-   logic [DEPTH_PTR-1:0]    RspPtr, NxtRspPtr;
-   logic [DEPTH_PTR-1:0]    WrPtr, NxtWrPtr;
-   logic [DEPTH_PTR-1:0]    RdPtr, NxtRdPtr;
-   logic                    WrPtrEn, RdPtrEn, RspPtrEn;
-
-   logic [1:0]              dma_dbg_sz;
-   logic [1:0]              dma_dbg_addr;
-   logic [31:0]             dma_dbg_mem_rddata;
-   logic [31:0]             dma_dbg_mem_wrdata;
-   logic                    dma_dbg_cmd_error;
-   logic                    dma_dbg_cmd_done_q;
-
-   logic                    fifo_full, fifo_full_spec, fifo_empty;
-   logic                    dma_address_error, dma_alignment_error;
-   logic [3:0]              num_fifo_vld;
-   logic                    dma_mem_req;
-   logic [31:0]             dma_mem_addr_int;
-   logic [2:0]              dma_mem_sz_int;
-   logic [7:0]              dma_mem_byteen;
-   logic                    dma_mem_addr_in_dccm;
-   logic                    dma_mem_addr_in_iccm;
-   logic                    dma_mem_addr_in_pic;
-   logic                    dma_mem_addr_in_pic_region_nc;
-   logic                    dma_mem_addr_in_dccm_region_nc;
-   logic                    dma_mem_addr_in_iccm_region_nc;
-
-   logic [2:0]              dma_nack_count, dma_nack_count_d, dma_nack_count_csr;
-
-   logic                    dma_buffer_c1_clken;
-   logic                    dma_free_clken;
-   logic                    dma_buffer_c1_clk;
-   logic                    dma_free_clk;
-   logic                    dma_bus_clk;
-
-   logic                    bus_rsp_valid, bus_rsp_sent;
-   logic                    bus_cmd_valid, bus_cmd_sent;
-   logic                    bus_cmd_write, bus_cmd_posted_write;
-   logic [7:0]              bus_cmd_byteen;
-   logic [2:0]              bus_cmd_sz;
-   logic [31:0]             bus_cmd_addr;
-   logic [63:0]             bus_cmd_wdata;
-   logic [pt.DMA_BUS_TAG-1:0]  bus_cmd_tag;
-   logic [pt.DMA_BUS_ID-1:0]   bus_cmd_mid;
-   logic [pt.DMA_BUS_PRTY-1:0] bus_cmd_prty;
-   logic                    bus_posted_write_done;
-
-   logic                    fifo_full_spec_bus;
-   logic                    dbg_dma_bubble_bus;
-   logic                    stall_dma_in;
-   logic                    dma_fifo_ready;
-
-   logic                       wrbuf_en, wrbuf_data_en;
-   logic                       wrbuf_cmd_sent, wrbuf_rst, wrbuf_data_rst;
-   logic                       wrbuf_vld, wrbuf_data_vld;
-   logic [pt.DMA_BUS_TAG-1:0]  wrbuf_tag;
-   logic [2:0]                 wrbuf_sz;
-   logic [31:0]                wrbuf_addr;
-   logic [63:0]                wrbuf_data;
-   logic [7:0]                 wrbuf_byteen;
-
-   logic                       rdbuf_en;
-   logic                       rdbuf_cmd_sent, rdbuf_rst;
-   logic                       rdbuf_vld;
-   logic [pt.DMA_BUS_TAG-1:0]  rdbuf_tag;
-   logic [2:0]                 rdbuf_sz;
-   logic [31:0]                rdbuf_addr;
-
-   logic                       axi_mstr_prty_in, axi_mstr_prty_en;
-   logic                       axi_mstr_priority;
-   logic                       axi_mstr_sel;
-
-   logic                       axi_rsp_valid, axi_rsp_sent;
-   logic                       axi_rsp_write;
-   logic [pt.DMA_BUS_TAG-1:0]  axi_rsp_tag;
-   logic [1:0]                 axi_rsp_error;
-   logic [63:0]                axi_rsp_rdata;
-
-   //------------------------LOGIC STARTS HERE---------------------------------
-
-   // FIFO inputs
-   assign fifo_addr_in[31:0]    = dbg_cmd_valid ? dbg_cmd_addr[31:0] : bus_cmd_addr[31:0];
-   assign fifo_byteen_in[7:0]   = {8{~dbg_cmd_valid}} & bus_cmd_byteen[7:0];    // Byte enable is used only for bus requests
-   assign fifo_sz_in[2:0]       = dbg_cmd_valid ? {1'b0,dbg_cmd_size[1:0]} : bus_cmd_sz[2:0];
-   assign fifo_write_in         = dbg_cmd_valid ? dbg_cmd_write : bus_cmd_write;
-   assign fifo_posted_write_in  = ~dbg_cmd_valid & bus_cmd_posted_write;
-   assign fifo_dbg_in           = dbg_cmd_valid;
-
-   for (genvar i=0 ;i<DEPTH; i++) begin: GenFifo
-      assign fifo_cmd_en[i]   = ((bus_cmd_sent & dma_bus_clk_en) | (dbg_cmd_valid & dbg_cmd_type[1])) & (i == WrPtr[DEPTH_PTR-1:0]);
-      assign fifo_data_en[i] = (((bus_cmd_sent & fifo_write_in & dma_bus_clk_en) | (dbg_cmd_valid & dbg_cmd_type[1] & dbg_cmd_write))  & (i == WrPtr[DEPTH_PTR-1:0])) |
-                               ((dma_address_error | dma_alignment_error) & (i == RdPtr[DEPTH_PTR-1:0])) |
-                               (dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) |
-                               (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0])));
-      assign fifo_pend_en[i] = (dma_dccm_req | dma_iccm_req) & ~dma_mem_write & (i == RdPtr[DEPTH_PTR-1:0]);
-      assign fifo_error_en[i] = ((dma_address_error | dma_alignment_error | dma_dbg_cmd_error) & (i == RdPtr[DEPTH_PTR-1:0])) |
-                                ((dccm_dma_rvalid & dccm_dma_ecc_error) & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) |
-                                ((iccm_dma_rvalid & iccm_dma_ecc_error) & (i == DEPTH_PTR'(iccm_dma_rtag[2:0])));
-      assign fifo_error_bus_en[i] = (((|fifo_error_in[i][1:0]) & fifo_error_en[i]) | (|fifo_error[i])) & dma_bus_clk_en;
-      assign fifo_done_en[i] = ((|fifo_error[i] | fifo_error_en[i] | ((dma_dccm_req | dma_iccm_req) & dma_mem_write)) & (i == RdPtr[DEPTH_PTR-1:0])) |
-                               (dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) |
-                               (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0])));
-      assign fifo_done_bus_en[i] = (fifo_done_en[i] | fifo_done[i]) & dma_bus_clk_en;
-      assign fifo_reset[i] = (((bus_rsp_sent | bus_posted_write_done) & dma_bus_clk_en) | dma_dbg_cmd_done) & (i == RspPtr[DEPTH_PTR-1:0]);
-      assign fifo_error_in[i]   = (dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0]))) ? {1'b0,dccm_dma_ecc_error} : (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0]))) ? {1'b0,iccm_dma_ecc_error}  :
-                                                                                                                {(dma_address_error | dma_alignment_error | dma_dbg_cmd_error), dma_alignment_error};
-      assign fifo_data_in[i]   = (fifo_error_en[i] & (|fifo_error_in[i])) ? {32'b0,fifo_addr[i]} :
-                                                        ((dccm_dma_rvalid & (i == DEPTH_PTR'(dccm_dma_rtag[2:0])))  ? dccm_dma_rdata[63:0] : (iccm_dma_rvalid & (i == DEPTH_PTR'(iccm_dma_rtag[2:0]))) ? iccm_dma_rdata[63:0] :
-                                                                                                                                                       (dbg_cmd_valid ? {2{dma_dbg_mem_wrdata[31:0]}} : bus_cmd_wdata[63:0]));
-
-      rvdffsc #(1) fifo_valid_dff (.din(1'b1), .dout(fifo_valid[i]), .en(fifo_cmd_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(2) fifo_error_dff (.din(fifo_error_in[i]), .dout(fifo_error[i]), .en(fifo_error_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_error_bus_dff (.din(1'b1), .dout(fifo_error_bus[i]), .en(fifo_error_bus_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_rpend_dff (.din(1'b1), .dout(fifo_rpend[i]), .en(fifo_pend_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_done_dff (.din(1'b1), .dout(fifo_done[i]), .en(fifo_done_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffsc #(1) fifo_done_bus_dff (.din(1'b1), .dout(fifo_done_bus[i]), .en(fifo_done_bus_en[i]), .clear(fifo_reset[i]), .clk(dma_free_clk), .*);
-      rvdffe  #(32) fifo_addr_dff (.din(fifo_addr_in[31:0]), .dout(fifo_addr[i]), .en(fifo_cmd_en[i]), .*);
-      rvdffs  #(3) fifo_sz_dff (.din(fifo_sz_in[2:0]), .dout(fifo_sz[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(8) fifo_byteen_dff (.din(fifo_byteen_in[7:0]), .dout(fifo_byteen[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(1) fifo_write_dff (.din(fifo_write_in), .dout(fifo_write[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(1) fifo_posted_write_dff (.din(fifo_posted_write_in), .dout(fifo_posted_write[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(1) fifo_dbg_dff (.din(fifo_dbg_in), .dout(fifo_dbg[i]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffe  #(64) fifo_data_dff (.din(fifo_data_in[i]), .dout(fifo_data[i]), .en(fifo_data_en[i]), .*);
-      rvdffs  #(pt.DMA_BUS_TAG) fifo_tag_dff(.din(bus_cmd_tag[pt.DMA_BUS_TAG-1:0]), .dout(fifo_tag[i][pt.DMA_BUS_TAG-1:0]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(pt.DMA_BUS_ID) fifo_mid_dff(.din(bus_cmd_mid[pt.DMA_BUS_ID-1:0]), .dout(fifo_mid[i][pt.DMA_BUS_ID-1:0]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-      rvdffs  #(pt.DMA_BUS_PRTY) fifo_prty_dff(.din(bus_cmd_prty[pt.DMA_BUS_PRTY-1:0]), .dout(fifo_prty[i][pt.DMA_BUS_PRTY-1:0]), .en(fifo_cmd_en[i]), .clk(dma_buffer_c1_clk), .*);
-   end
-
-   // Pointer logic
-   assign NxtWrPtr[DEPTH_PTR-1:0] = (WrPtr[DEPTH_PTR-1:0] == (DEPTH-1)) ? '0 : WrPtr[DEPTH_PTR-1:0] + 1'b1;
-   assign NxtRdPtr[DEPTH_PTR-1:0] = (RdPtr[DEPTH_PTR-1:0] == (DEPTH-1)) ? '0 : RdPtr[DEPTH_PTR-1:0] + 1'b1;
-   assign NxtRspPtr[DEPTH_PTR-1:0] = (RspPtr[DEPTH_PTR-1:0] == (DEPTH-1)) ? '0 : RspPtr[DEPTH_PTR-1:0] + 1'b1;
-
-   assign WrPtrEn = |fifo_cmd_en[DEPTH-1:0];
-   assign RdPtrEn = dma_dccm_req | dma_iccm_req | (dma_address_error | dma_alignment_error | dma_dbg_cmd_error);
-   assign RspPtrEn = (dma_dbg_cmd_done | (bus_rsp_sent | bus_posted_write_done) & dma_bus_clk_en);
-
-   rvdffs #(DEPTH_PTR) WrPtr_dff(.din(NxtWrPtr[DEPTH_PTR-1:0]), .dout(WrPtr[DEPTH_PTR-1:0]), .en(WrPtrEn), .clk(dma_free_clk), .*);
-   rvdffs #(DEPTH_PTR) RdPtr_dff(.din(NxtRdPtr[DEPTH_PTR-1:0]), .dout(RdPtr[DEPTH_PTR-1:0]), .en(RdPtrEn), .clk(dma_free_clk), .*);
-   rvdffs #(DEPTH_PTR) RspPtr_dff(.din(NxtRspPtr[DEPTH_PTR-1:0]), .dout(RspPtr[DEPTH_PTR-1:0]), .en(RspPtrEn), .clk(dma_free_clk), .*);
-
-   // Miscellaneous signals
-   assign fifo_full = fifo_full_spec_bus;
-
-   always_comb begin
-      num_fifo_vld[3:0] = {3'b0,bus_cmd_sent} - {3'b0,bus_rsp_sent};
-      for (int i=0; i<DEPTH; i++) begin
-         num_fifo_vld[3:0] += {3'b0,fifo_valid[i]};
-      end
-   end
-   assign fifo_full_spec          = (num_fifo_vld[3:0] >= DEPTH);
-
-   assign dma_fifo_ready = ~(fifo_full | dbg_dma_bubble_bus);
-
-   // Error logic
-   assign dma_address_error = fifo_valid[RdPtr] & ~fifo_done[RdPtr] & ~fifo_dbg[RdPtr] & (~(dma_mem_addr_in_dccm | dma_mem_addr_in_iccm));    // request not for ICCM or DCCM
-   assign dma_alignment_error = fifo_valid[RdPtr] & ~fifo_done[RdPtr] & ~fifo_dbg[RdPtr] & ~dma_address_error &
-                                (((dma_mem_sz_int[2:0] == 3'h1) & dma_mem_addr_int[0])                                                       |    // HW size but unaligned
-                                 ((dma_mem_sz_int[2:0] == 3'h2) & (|dma_mem_addr_int[1:0]))                                                  |    // W size but unaligned
-                                 ((dma_mem_sz_int[2:0] == 3'h3) & (|dma_mem_addr_int[2:0]))                                                  |    // DW size but unaligned
-                                 (dma_mem_addr_in_iccm & ~((dma_mem_sz_int[1:0] == 2'b10) | (dma_mem_sz_int[1:0] == 2'b11)))                 |    // ICCM access not word size
-                                 (dma_mem_addr_in_dccm & dma_mem_write & ~((dma_mem_sz_int[1:0] == 2'b10) | (dma_mem_sz_int[1:0] == 2'b11))) |    // DCCM write not word size
-                                 (dma_mem_write & (dma_mem_sz_int[2:0] == 3'h2) & (dma_mem_byteen[dma_mem_addr_int[2:0]+:4] != 4'hf))        |    // Write byte enables not aligned for word store
-                                 (dma_mem_write & (dma_mem_sz_int[2:0] == 3'h3) & ~((dma_mem_byteen[7:0] == 8'h0f) | (dma_mem_byteen[7:0] == 8'hf0) | (dma_mem_byteen[7:0] == 8'hff)))); // Write byte enables not aligned for dword store
-
-
-   //Dbg outputs
-   assign dma_dbg_ready    = fifo_empty & dbg_dma_bubble;
-   assign dma_dbg_cmd_done = (fifo_valid[RspPtr] & fifo_dbg[RspPtr] & fifo_done[RspPtr]);
-   assign dma_dbg_cmd_fail     = |fifo_error[RspPtr];
-
-   assign dma_dbg_sz[1:0]          = fifo_sz[RspPtr][1:0];
-   assign dma_dbg_addr[1:0]        = fifo_addr[RspPtr][1:0];
-   assign dma_dbg_mem_rddata[31:0] = fifo_addr[RspPtr][2] ? fifo_data[RspPtr][63:32] : fifo_data[RspPtr][31:0];
-   assign dma_dbg_rddata[31:0]     = ({32{(dma_dbg_sz[1:0] == 2'h0)}} & ((dma_dbg_mem_rddata[31:0] >> 8*dma_dbg_addr[1:0]) & 32'hff)) |
-                                     ({32{(dma_dbg_sz[1:0] == 2'h1)}} & ((dma_dbg_mem_rddata[31:0] >> 16*dma_dbg_addr[1]) & 32'hffff)) |
-                                     ({32{(dma_dbg_sz[1:0] == 2'h2)}} & dma_dbg_mem_rddata[31:0]);
-
-   assign dma_dbg_cmd_error = fifo_valid[RdPtr] & ~fifo_done[RdPtr] & fifo_dbg[RdPtr] &
-                                 ((~(dma_mem_addr_in_dccm | dma_mem_addr_in_iccm | dma_mem_addr_in_pic)) |             // Address outside of ICCM/DCCM/PIC
-                                  ((dma_mem_addr_in_iccm | dma_mem_addr_in_pic) & (dma_mem_sz_int[1:0] != 2'b10)));    // Only word accesses allowed for ICCM/PIC
-
-   assign dma_dbg_mem_wrdata[31:0] = ({32{dbg_cmd_size[1:0] == 2'h0}} & {4{dbg_cmd_wrdata[7:0]}}) |
-                                     ({32{dbg_cmd_size[1:0] == 2'h1}} & {2{dbg_cmd_wrdata[15:0]}}) |
-                                     ({32{dbg_cmd_size[1:0] == 2'h2}} & dbg_cmd_wrdata[31:0]);
-
-   // Block the decode if fifo full
-   assign dma_dccm_stall_any = dma_mem_req & (dma_mem_addr_in_dccm | dma_mem_addr_in_pic) & (dma_nack_count >= dma_nack_count_csr);
-   assign dma_iccm_stall_any = dma_mem_req & dma_mem_addr_in_iccm & (dma_nack_count >= dma_nack_count_csr);
-
-   // Used to indicate ready to debug
-   assign fifo_empty     = ~((|(fifo_valid[DEPTH-1:0])) | bus_cmd_sent);
-
-   // Nack counter, stall the lsu pipe if 7 nacks
-   assign dma_nack_count_csr[2:0] = dec_tlu_dma_qos_prty[2:0];
-   assign dma_nack_count_d[2:0] = (dma_nack_count[2:0] >= dma_nack_count_csr[2:0]) ? ({3{~(dma_dccm_req | dma_iccm_req)}} & dma_nack_count[2:0]) :
-                                                                                    (dma_mem_req & ~(dma_dccm_req | dma_iccm_req)) ? (dma_nack_count[2:0] + 1'b1) : 3'b0;
-
-   rvdffs #(3) nack_count_dff(.din(dma_nack_count_d[2:0]), .dout(dma_nack_count[2:0]), .en(dma_mem_req), .clk(dma_free_clk), .*);
-
-   // Core outputs
-   assign dma_mem_req         = fifo_valid[RdPtr] & ~fifo_rpend[RdPtr] & ~fifo_done[RdPtr] & ~(dma_address_error | dma_alignment_error | dma_dbg_cmd_error);
-   assign dma_dccm_req        = dma_mem_req & (dma_mem_addr_in_dccm | dma_mem_addr_in_pic) & dccm_ready;
-   assign dma_iccm_req        = dma_mem_req & dma_mem_addr_in_iccm & iccm_ready;
-   assign dma_mem_tag[2:0]    = 3'(RdPtr);
-   assign dma_mem_addr_int[31:0] = fifo_addr[RdPtr];
-   assign dma_mem_sz_int[2:0] = fifo_sz[RdPtr];
-   assign dma_mem_addr[31:0]  = (dma_mem_write & ~fifo_dbg[RdPtr] & (dma_mem_byteen[7:0] == 8'hf0)) ? {dma_mem_addr_int[31:3],1'b1,dma_mem_addr_int[1:0]} : dma_mem_addr_int[31:0];
-   assign dma_mem_sz[2:0]     = (dma_mem_write & ~fifo_dbg[RdPtr] & ((dma_mem_byteen[7:0] == 8'h0f) | (dma_mem_byteen[7:0] == 8'hf0))) ? 3'h2 : dma_mem_sz_int[2:0];
-   assign dma_mem_byteen[7:0] = fifo_byteen[RdPtr];
-   assign dma_mem_write       = fifo_write[RdPtr];
-   assign dma_mem_wdata[63:0] = fifo_data[RdPtr];
-
-   // PMU outputs
-   assign dma_pmu_dccm_read   = dma_dccm_req & ~dma_mem_write;
-   assign dma_pmu_dccm_write  = dma_dccm_req & dma_mem_write;
-   assign dma_pmu_any_read    = (dma_dccm_req | dma_iccm_req) & ~dma_mem_write;
-   assign dma_pmu_any_write   = (dma_dccm_req | dma_iccm_req) & dma_mem_write;
-
-   // Address check  dccm
-   if (pt.DCCM_ENABLE) begin: Gen_dccm_enable
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) addr_dccm_rangecheck (
-         .addr(dma_mem_addr_int[31:0]),
-         .in_range(dma_mem_addr_in_dccm),
-         .in_region(dma_mem_addr_in_dccm_region_nc)
-      );
-   end else begin: Gen_dccm_disable
-      assign dma_mem_addr_in_dccm = '0;
-      assign dma_mem_addr_in_dccm_region_nc = '0;
-   end // else: !if(pt.ICCM_ENABLE)
-
-   // Address check  iccm
-   if (pt.ICCM_ENABLE) begin: Gen_iccm_enable
-      rvrangecheck #(.CCM_SADR(pt.ICCM_SADR),
-                     .CCM_SIZE(pt.ICCM_SIZE)) addr_iccm_rangecheck (
-         .addr(dma_mem_addr_int[31:0]),
-         .in_range(dma_mem_addr_in_iccm),
-         .in_region(dma_mem_addr_in_iccm_region_nc)
-      );
-   end else begin: Gen_iccm_disable
-      assign dma_mem_addr_in_iccm = '0;
-      assign dma_mem_addr_in_iccm_region_nc = '0;
-   end // else: !if(pt.ICCM_ENABLE)
-
-
-   // PIC memory address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) addr_pic_rangecheck (
-      .addr(dma_mem_addr_int[31:0]),
-      .in_range(dma_mem_addr_in_pic),
-      .in_region(dma_mem_addr_in_pic_region_nc)
-    );
-
-   // Inputs
-   rvdff_fpga #(1) fifo_full_bus_ff     (.din(fifo_full_spec),   .dout(fifo_full_spec_bus), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdff_fpga #(1) dbg_dma_bubble_ff    (.din(dbg_dma_bubble),   .dout(dbg_dma_bubble_bus), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdff      #(1) dma_dbg_cmd_doneff   (.din(dma_dbg_cmd_done), .dout(dma_dbg_cmd_done_q), .clk(free_clk), .*);
-
-   // Clock Gating logic
-   assign dma_buffer_c1_clken = (bus_cmd_valid & dma_bus_clk_en) | dbg_cmd_valid | clk_override;
-   assign dma_free_clken = (bus_cmd_valid | bus_rsp_valid | dbg_cmd_valid | dma_dbg_cmd_done | dma_dbg_cmd_done_q | (|fifo_valid[DEPTH-1:0]) | clk_override);
-
-   rvoclkhdr dma_buffer_c1cgc ( .en(dma_buffer_c1_clken), .l1clk(dma_buffer_c1_clk), .* );
-   rvoclkhdr dma_free_cgc (.en(dma_free_clken), .l1clk(dma_free_clk), .*);
-
-
-   rvclkhdr  dma_bus_cgc (.en(dma_bus_clk_en), .l1clk(dma_bus_clk), .*);
-
-   // Write channel buffer
-   assign wrbuf_en       = dma_axi_awvalid & dma_axi_awready;
-   assign wrbuf_data_en  = dma_axi_wvalid & dma_axi_wready;
-   assign wrbuf_cmd_sent = bus_cmd_sent & bus_cmd_write;
-   assign wrbuf_rst      = wrbuf_cmd_sent & ~wrbuf_en;
-   assign wrbuf_data_rst = wrbuf_cmd_sent & ~wrbuf_data_en;
-
-   rvdffsc_fpga  #(.WIDTH(1))              wrbuf_vldff       (.din(1'b1), .dout(wrbuf_vld),      .en(wrbuf_en),      .clear(wrbuf_rst),      .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffsc_fpga  #(.WIDTH(1))              wrbuf_data_vldff  (.din(1'b1), .dout(wrbuf_data_vld), .en(wrbuf_data_en), .clear(wrbuf_data_rst), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(pt.DMA_BUS_TAG)) wrbuf_tagff       (.din(dma_axi_awid[pt.DMA_BUS_TAG-1:0]), .dout(wrbuf_tag[pt.DMA_BUS_TAG-1:0]), .en(wrbuf_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(3))              wrbuf_szff        (.din(dma_axi_awsize[2:0]),  .dout(wrbuf_sz[2:0]),     .en(wrbuf_en),                  .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffe        #(.WIDTH(32))             wrbuf_addrff      (.din(dma_axi_awaddr[31:0]), .dout(wrbuf_addr[31:0]),  .en(wrbuf_en & dma_bus_clk_en), .*);
-   rvdffe        #(.WIDTH(64))             wrbuf_dataff      (.din(dma_axi_wdata[63:0]),  .dout(wrbuf_data[63:0]),  .en(wrbuf_data_en & dma_bus_clk_en), .*);
-   rvdffs_fpga   #(.WIDTH(8))              wrbuf_byteenff    (.din(dma_axi_wstrb[7:0]),   .dout(wrbuf_byteen[7:0]), .en(wrbuf_data_en),             .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-
-   // Read channel buffer
-   assign rdbuf_en    = dma_axi_arvalid & dma_axi_arready;
-   assign rdbuf_cmd_sent = bus_cmd_sent & ~bus_cmd_write;
-   assign rdbuf_rst   = rdbuf_cmd_sent & ~rdbuf_en;
-
-   rvdffsc_fpga  #(.WIDTH(1))              rdbuf_vldff  (.din(1'b1), .dout(rdbuf_vld), .en(rdbuf_en), .clear(rdbuf_rst), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(pt.DMA_BUS_TAG)) rdbuf_tagff  (.din(dma_axi_arid[pt.DMA_BUS_TAG-1:0]), .dout(rdbuf_tag[pt.DMA_BUS_TAG-1:0]), .en(rdbuf_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffs_fpga   #(.WIDTH(3))              rdbuf_szff   (.din(dma_axi_arsize[2:0]),  .dout(rdbuf_sz[2:0]),    .en(rdbuf_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-   rvdffe       #(.WIDTH(32))              rdbuf_addrff (.din(dma_axi_araddr[31:0]), .dout(rdbuf_addr[31:0]), .en(rdbuf_en & dma_bus_clk_en), .*);
-
-   assign dma_axi_awready = ~(wrbuf_vld & ~wrbuf_cmd_sent);
-   assign dma_axi_wready  = ~(wrbuf_data_vld & ~wrbuf_cmd_sent);
-   assign dma_axi_arready = ~(rdbuf_vld & ~rdbuf_cmd_sent);
-
-   //Generate a single request from read/write channel
-   assign bus_cmd_valid                     = (wrbuf_vld & wrbuf_data_vld) | rdbuf_vld;
-   assign bus_cmd_sent                      = bus_cmd_valid & dma_fifo_ready;
-   assign bus_cmd_write                     = axi_mstr_sel;
-   assign bus_cmd_posted_write              = '0;
-   assign bus_cmd_addr[31:0]                = axi_mstr_sel ? wrbuf_addr[31:0] : rdbuf_addr[31:0];
-   assign bus_cmd_sz[2:0]                   = axi_mstr_sel ? wrbuf_sz[2:0] : rdbuf_sz[2:0];
-   assign bus_cmd_wdata[63:0]               = wrbuf_data[63:0];
-   assign bus_cmd_byteen[7:0]               = wrbuf_byteen[7:0];
-   assign bus_cmd_tag[pt.DMA_BUS_TAG-1:0]   = axi_mstr_sel ? wrbuf_tag[pt.DMA_BUS_TAG-1:0] : rdbuf_tag[pt.DMA_BUS_TAG-1:0];
-   assign bus_cmd_mid[pt.DMA_BUS_ID-1:0]    = '0;
-   assign bus_cmd_prty[pt.DMA_BUS_PRTY-1:0] = '0;
-
-   // Sel=1 -> write has higher priority
-   assign axi_mstr_sel     = (wrbuf_vld & wrbuf_data_vld & rdbuf_vld) ? axi_mstr_priority : (wrbuf_vld & wrbuf_data_vld);
-   assign axi_mstr_prty_in = ~axi_mstr_priority;
-   assign axi_mstr_prty_en = bus_cmd_sent;
-   rvdffs_fpga #(.WIDTH(1)) mstr_prtyff(.din(axi_mstr_prty_in), .dout(axi_mstr_priority), .en(axi_mstr_prty_en), .clk(dma_bus_clk), .clken(dma_bus_clk_en), .rawclk(clk), .*);
-
-   assign axi_rsp_valid                   = fifo_valid[RspPtr] & ~fifo_dbg[RspPtr] & fifo_done_bus[RspPtr];
-   assign axi_rsp_rdata[63:0]             = fifo_data[RspPtr];
-   assign axi_rsp_write                   = fifo_write[RspPtr];
-   assign axi_rsp_error[1:0]              = fifo_error[RspPtr][0] ? 2'b10 : (fifo_error[RspPtr][1] ? 2'b11 : 2'b0);
-   assign axi_rsp_tag[pt.DMA_BUS_TAG-1:0] = fifo_tag[RspPtr];
-
-   // AXI response channel signals
-   assign dma_axi_bvalid                  = axi_rsp_valid & axi_rsp_write;
-   assign dma_axi_bresp[1:0]              = axi_rsp_error[1:0];
-   assign dma_axi_bid[pt.DMA_BUS_TAG-1:0] = axi_rsp_tag[pt.DMA_BUS_TAG-1:0];
-
-   assign dma_axi_rvalid                  = axi_rsp_valid & ~axi_rsp_write;
-   assign dma_axi_rresp[1:0]              = axi_rsp_error;
-   assign dma_axi_rdata[63:0]             = axi_rsp_rdata[63:0];
-   assign dma_axi_rlast                   = 1'b1;
-   assign dma_axi_rid[pt.DMA_BUS_TAG-1:0] = axi_rsp_tag[pt.DMA_BUS_TAG-1:0];
-
-   assign bus_posted_write_done = 1'b0;
-   assign bus_rsp_valid      = (dma_axi_bvalid | dma_axi_rvalid);
-   assign bus_rsp_sent       = (dma_axi_bvalid & dma_axi_bready) | (dma_axi_rvalid & dma_axi_rready);
-
-   assign dma_active  = wrbuf_vld | rdbuf_vld | (|fifo_valid[DEPTH-1:0]);
-
-endmodule // eb1_dma_ctrl
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_alu_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input  logic                  clk,                // Top level clock
-   input  logic                  rst_l,              // Reset
-   input  logic                  scan_mode,          // Scan control
-
-   input  logic                  flush_upper_x,      // Branch flush from previous cycle
-   input  logic                  flush_lower_r,      // Master flush of entire pipeline
-   input  logic                  enable,             // Clock enable
-   input  logic                  valid_in,           // Valid
-   input  eb1_alu_pkt_t         ap,                 // predecodes
-   input  logic                  csr_ren_in,         // CSR select
-   input  logic        [31:0]    csr_rddata_in,      // CSR data
-   input  logic signed [31:0]    a_in,               // A operand
-   input  logic        [31:0]    b_in,               // B operand
-   input  logic        [31:1]    pc_in,              // for pc=pc+2,4 calculations
-   input  eb1_predict_pkt_t     pp_in,              // Predicted branch structure
-   input  logic        [12:1]    brimm_in,           // Branch offset
-
-
-   output logic        [31:0]    result_ff,          // final result
-   output logic                  flush_upper_out,    // Branch flush
-   output logic                  flush_final_out,    // Branch flush or flush entire pipeline
-   output logic        [31:1]    flush_path_out,     // Branch flush PC
-   output logic        [31:1]    pc_ff,              // flopped PC
-   output logic                  pred_correct_out,   // NPC control
-   output eb1_predict_pkt_t     predict_p_out       // Predicted branch structure
-  );
-
-
-   logic               [31:0]    zba_a_in;
-   logic               [31:0]    aout;
-   logic                         cout,ov,neg;
-   logic               [31:0]    lout;
-   logic               [31:0]    sout;
-   logic                         sel_shift;
-   logic                         sel_adder;
-   logic                         slt_one;
-   logic                         actual_taken;
-   logic               [31:1]    pcout;
-   logic                         cond_mispredict;
-   logic                         target_mispredict;
-   logic                         eq, ne, lt, ge;
-   logic                         any_jal;
-   logic               [1:0]     newhist;
-   logic                         sel_pc;
-   logic               [31:0]    csr_write_data;
-   logic               [31:0]    result;
-
-
-
-
-   // *** Start - BitManip ***
-
-   // Zbb
-   logic                  ap_clz;
-   logic                  ap_ctz;
-   logic                  ap_pcnt;
-   logic                  ap_sext_b;
-   logic                  ap_sext_h;
-   logic                  ap_min;
-   logic                  ap_max;
-   logic                  ap_pack;
-   logic                  ap_packu;
-   logic                  ap_packh;
-   logic                  ap_rol;
-   logic                  ap_ror;
-   logic                  ap_rev;
-   logic                  ap_rev8;
-   logic                  ap_orc_b;
-   logic                  ap_orc16;
-   logic                  ap_zbb;
-
-   // Zbs
-   logic                  ap_sbset;
-   logic                  ap_sbclr;
-   logic                  ap_sbinv;
-   logic                  ap_sbext;
-
-   // Zbr
-   logic                  ap_slo;
-   logic                  ap_sro;
-
-   // Zba
-   logic                  ap_sh1add;
-   logic                  ap_sh2add;
-   logic                  ap_sh3add;
-   logic                  ap_zba;
-
-
-
-   if (pt.BITMANIP_ZBB == 1)
-     begin
-       assign ap_clz          =  ap.clz;
-       assign ap_ctz          =  ap.ctz;
-       assign ap_pcnt         =  ap.pcnt;
-       assign ap_sext_b       =  ap.sext_b;
-       assign ap_sext_h       =  ap.sext_h;
-       assign ap_min          =  ap.min;
-       assign ap_max          =  ap.max;
-     end
-   else
-     begin
-       assign ap_clz          =  1'b0;
-       assign ap_ctz          =  1'b0;
-       assign ap_pcnt         =  1'b0;
-       assign ap_sext_b       =  1'b0;
-       assign ap_sext_h       =  1'b0;
-       assign ap_min          =  1'b0;
-       assign ap_max          =  1'b0;
-     end
-
-
-   if ( (pt.BITMANIP_ZBB == 1) | (pt.BITMANIP_ZBP == 1) )
-     begin
-       assign ap_pack         =  ap.pack;
-       assign ap_packu        =  ap.packu;
-       assign ap_packh        =  ap.packh;
-       assign ap_rol          =  ap.rol;
-       assign ap_ror          =  ap.ror;
-       assign ap_rev          =  ap.grev & (b_in[4:0] == 5'b11111);
-       assign ap_rev8         =  ap.grev & (b_in[4:0] == 5'b11000);
-       assign ap_orc_b        =  ap.gorc & (b_in[4:0] == 5'b00111);
-       assign ap_orc16        =  ap.gorc & (b_in[4:0] == 5'b10000);
-       assign ap_zbb          =  ap.zbb;
-     end
-   else
-     begin
-       assign ap_pack         =  1'b0;
-       assign ap_packu        =  1'b0;
-       assign ap_packh        =  1'b0;
-       assign ap_rol          =  1'b0;
-       assign ap_ror          =  1'b0;
-       assign ap_rev          =  1'b0;
-       assign ap_rev8         =  1'b0;
-       assign ap_orc_b        =  1'b0;
-       assign ap_orc16        =  1'b0;
-       assign ap_zbb          =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBS == 1)
-     begin
-       assign ap_sbset        =  ap.sbset;
-       assign ap_sbclr        =  ap.sbclr;
-       assign ap_sbinv        =  ap.sbinv;
-       assign ap_sbext        =  ap.sbext;
-     end
-   else
-     begin
-       assign ap_sbset        =  1'b0;
-       assign ap_sbclr        =  1'b0;
-       assign ap_sbinv        =  1'b0;
-       assign ap_sbext        =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBP == 1)
-     begin
-       assign ap_slo          =  ap.slo;
-       assign ap_sro          =  ap.sro;
-     end
-   else
-     begin
-       assign ap_slo          =  1'b0;
-       assign ap_sro          =  1'b0;
-     end
-
-
-   if (pt.BITMANIP_ZBA == 1)
-     begin
-       assign ap_sh1add       =  ap.sh1add;
-       assign ap_sh2add       =  ap.sh2add;
-       assign ap_sh3add       =  ap.sh3add;
-       assign ap_zba          =  ap.zba;
-     end
-   else
-     begin
-       assign ap_sh1add       =  1'b0;
-       assign ap_sh2add       =  1'b0;
-       assign ap_sh3add       =  1'b0;
-       assign ap_zba          =  1'b0;
-     end
-
-
-
-
-   // *** End   - BitManip ***
-
-
-
-
-   rvdffpcie #(31) i_pc_ff      (.*, .clk(clk), .en(enable),              .din(pc_in[31:1]),    .dout(pc_ff[31:1]));   // any PC is run through here - doesn't have to be alu
-   rvdffe    #(32) i_result_ff  (.*, .clk(clk), .en(enable & valid_in),   .din(result[31:0]),   .dout(result_ff[31:0]));
-
-
-
-   // immediates are just muxed into rs2
-
-   // add    =>  add=1;
-   // sub    =>  add=1; sub=1;
-
-   // and    =>  lctl=3
-   // or     =>  lctl=2
-   // xor    =>  lctl=1
-
-   // sll    =>  sctl=3
-   // srl    =>  sctl=2
-   // sra    =>  sctl=1
-
-   // slt    =>  slt
-
-   // lui    =>  lctl=2; or x0, imm20 previously << 12
-   // auipc  =>  add;   add pc, imm20 previously << 12
-
-   // beq    =>  bctl=4; add; add x0, pc, sext(offset[12:1])
-   // bne    =>  bctl=3; add; add x0, pc, sext(offset[12:1])
-   // blt    =>  bctl=2; add; add x0, pc, sext(offset[12:1])
-   // bge    =>  bctl=1; add; add x0, pc, sext(offset[12:1])
-
-   // jal    =>  rs1=pc {pc[31:1],1'b0},  rs2=sext(offset20:1]);   rd=pc+[2,4]
-   // jalr   =>  rs1=rs1,                 rs2=sext(offset20:1]);   rd=pc+[2,4]
-
-
-
-   assign zba_a_in[31:0]      = ( {32{ ap_sh1add}} & {a_in[30:0],1'b0} ) |
-                                ( {32{ ap_sh2add}} & {a_in[29:0],2'b0} ) |
-                                ( {32{ ap_sh3add}} & {a_in[28:0],3'b0} ) |
-                                ( {32{~ap_zba   }} &  a_in[31:0]       );
-
-   logic        [31:0]    bm;
-
-   assign bm[31:0]            = ( ap.sub )  ?  ~b_in[31:0]  :  b_in[31:0];
-
-   assign {cout, aout[31:0]}  = {1'b0, zba_a_in[31:0]} + {1'b0, bm[31:0]} + {32'b0, ap.sub};
-
-   assign ov                  = (~a_in[31] & ~bm[31] &  aout[31]) |
-                                ( a_in[31] &  bm[31] & ~aout[31] );
-
-   assign lt                  = (~ap.unsign & (neg ^ ov)) |
-                                ( ap.unsign & ~cout);
-
-   assign eq                  = (a_in[31:0] == b_in[31:0]);
-   assign ne                  = ~eq;
-   assign neg                 =  aout[31];
-   assign ge                  = ~lt;
-
-
-
-   assign lout[31:0]          =  ( {32{csr_ren_in       }} &  csr_rddata_in[31:0]       ) |
-                                 ( {32{ap.land & ~ap_zbb}} &  a_in[31:0] &  b_in[31:0]  ) |
-                                 ( {32{ap.lor  & ~ap_zbb}} & (a_in[31:0] |  b_in[31:0]) ) |
-                                 ( {32{ap.lxor & ~ap_zbb}} & (a_in[31:0] ^  b_in[31:0]) ) |
-                                 ( {32{ap.land &  ap_zbb}} &  a_in[31:0] & ~b_in[31:0]  ) |
-                                 ( {32{ap.lor  &  ap_zbb}} & (a_in[31:0] | ~b_in[31:0]) ) |
-                                 ( {32{ap.lxor &  ap_zbb}} & (a_in[31:0] ^ ~b_in[31:0]) );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SLO,SRO      * * * * * * * * * * * * * * * * * *
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ROL,ROR      * * * * * * * * * * * * * * * * * *
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ZBEXT        * * * * * * * * * * * * * * * * * *
-
-   logic        [5:0]     shift_amount;
-   logic        [31:0]    shift_mask;
-   logic        [62:0]    shift_extend;
-   logic        [62:0]    shift_long;
-
-
-   assign shift_amount[5:0]            = ( { 6{ap.sll}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |   // [5] unused
-                                         ( { 6{ap.srl}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap.sra}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_rol}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |
-                                         ( { 6{ap_ror}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_slo}}   & (6'd32 - {1'b0,b_in[4:0]}) ) |
-                                         ( { 6{ap_sro}}   &          {1'b0,b_in[4:0]}  ) |
-                                         ( { 6{ap_sbext}} &          {1'b0,b_in[4:0]}  );
-
-
-   assign shift_mask[31:0]             = ( 32'hffffffff << ({5{ap.sll | ap_slo}} & b_in[4:0]) );
-
-
-   assign shift_extend[31:0]           =  a_in[31:0];
-
-   assign shift_extend[62:32]          = ( {31{ap.sra}} & {31{a_in[31]}} ) |
-                                         ( {31{ap.sll}} &     a_in[30:0] ) |
-                                         ( {31{ap_rol}} &     a_in[30:0] ) |
-                                         ( {31{ap_ror}} &     a_in[30:0] ) |
-                                         ( {31{ap_slo}} &     a_in[30:0] ) |
-                                         ( {31{ap_sro}} & {31{  1'b1  }} );
-
-
-   assign shift_long[62:0]    = ( shift_extend[62:0] >> shift_amount[4:0] );   // 62-32 unused
-
-   assign sout[31:0]          = ( shift_long[31:0] & shift_mask[31:0] ) | ( {32{ap_slo}} & ~shift_mask[31:0] );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CLZ,CTZ      * * * * * * * * * * * * * * * * * *
-
-   logic                  bitmanip_clz_ctz_sel;
-   logic        [31:0]    bitmanip_a_reverse_ff;
-   logic        [31:0]    bitmanip_lzd_in;
-   logic        [5:0]     bitmanip_dw_lzd_enc;
-   logic        [5:0]     bitmanip_clz_ctz_result;
-
-   assign bitmanip_clz_ctz_sel         =  ap_clz | ap_ctz;
-
-   assign bitmanip_a_reverse_ff[31:0]  = {a_in[0],  a_in[1],  a_in[2],  a_in[3],  a_in[4],  a_in[5],  a_in[6],  a_in[7],
-                                          a_in[8],  a_in[9],  a_in[10], a_in[11], a_in[12], a_in[13], a_in[14], a_in[15],
-                                          a_in[16], a_in[17], a_in[18], a_in[19], a_in[20], a_in[21], a_in[22], a_in[23],
-                                          a_in[24], a_in[25], a_in[26], a_in[27], a_in[28], a_in[29], a_in[30], a_in[31]};
-
-   assign bitmanip_lzd_in[31:0]        = ( {32{ap_clz}} & a_in[31:0]                 ) |
-                                         ( {32{ap_ctz}} & bitmanip_a_reverse_ff[31:0]);
-
-   logic        [31:0]    bitmanip_lzd_os;
-   integer                i;
-   logic                  found;
-
-   always_comb
-     begin
-        bitmanip_lzd_os[31:0]   =  bitmanip_lzd_in[31:0];
-        bitmanip_dw_lzd_enc[5:0]=  6'b0;
-        found = 1'b0;
-
-        for (int i=0; i<32 && found==0; i++) begin
-           if (bitmanip_lzd_os[31] == 1'b0) begin
-              bitmanip_dw_lzd_enc[5:0]=  bitmanip_dw_lzd_enc[5:0] + 6'b00_0001;
-              bitmanip_lzd_os[31:0]   =  bitmanip_lzd_os[31:0] << 1;
-           end
-           else
-              found=1'b1;
-        end
-     end
-
-
-
-   assign bitmanip_clz_ctz_result[5:0] = {6{bitmanip_clz_ctz_sel}} & {bitmanip_dw_lzd_enc[5],( {5{~bitmanip_dw_lzd_enc[5]}} & bitmanip_dw_lzd_enc[4:0] )};
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  PCNT         * * * * * * * * * * * * * * * * * *
-
-   logic        [5:0]     bitmanip_pcnt;
-   logic        [5:0]     bitmanip_pcnt_result;
-
-
-   integer                bitmanip_pcnt_i;
-
-   always_comb
-     begin
-       bitmanip_pcnt[5:0]               =  6'b0;
-
-       for (bitmanip_pcnt_i=0; bitmanip_pcnt_i<32; bitmanip_pcnt_i++)
-         begin
-            bitmanip_pcnt[5:0]          =  bitmanip_pcnt[5:0] + {5'b0,a_in[bitmanip_pcnt_i]};
-         end      // FOR    bitmanip_pcnt_i
-     end          // ALWAYS_COMB
-
-
-   assign bitmanip_pcnt_result[5:0]    =  {6{ap_pcnt}} & bitmanip_pcnt[5:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SEXT_B,SEXT_H  * * * * * * * * * * * * * * * * *
-
-   logic       [31:0]     bitmanip_sext_result;
-
-   assign bitmanip_sext_result[31:0]   = ( {32{ap_sext_b}} & { {24{a_in[7]}} ,a_in[7:0]  } ) |
-                                         ( {32{ap_sext_h}} & { {16{a_in[15]}},a_in[15:0] } );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  MIN,MAX,MINU,MAXU  * * * * * * * * * * * * * * *
-
-   logic                  bitmanip_minmax_sel;
-   logic        [31:0]    bitmanip_minmax_result;
-
-   assign bitmanip_minmax_sel          =  ap_min | ap_max;
-
-
-   logic                  bitmanip_minmax_sel_a;
-
-   assign bitmanip_minmax_sel_a        =  ge  ^ ap_min;
-
-   assign bitmanip_minmax_result[31:0] = ({32{bitmanip_minmax_sel &  bitmanip_minmax_sel_a}}  &  a_in[31:0]) |
-                                         ({32{bitmanip_minmax_sel & ~bitmanip_minmax_sel_a}}  &  b_in[31:0]);
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  PACK, PACKU, PACKH * * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_pack_result;
-   logic        [31:0]    bitmanip_packu_result;
-   logic        [31:0]    bitmanip_packh_result;
-
-   assign bitmanip_pack_result[31:0]   = {32{ap_pack}}  & {b_in[15:0], a_in[15:0]};
-   assign bitmanip_packu_result[31:0]  = {32{ap_packu}} & {b_in[31:16],a_in[31:16]};
-   assign bitmanip_packh_result[31:0]  = {32{ap_packh}} & {16'b0,b_in[7:0],a_in[7:0]};
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  REV, REV8, ORC_B * * * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_rev_result;
-   logic        [31:0]    bitmanip_rev8_result;
-   logic        [31:0]    bitmanip_orc_b_result;
-   logic        [31:0]    bitmanip_orc16_result;
-
-   assign bitmanip_rev_result[31:0]    = {32{ap_rev}}   &
-                                         {a_in[00],a_in[01],a_in[02],a_in[03],a_in[04],a_in[05],a_in[06],a_in[07],
-                                          a_in[08],a_in[09],a_in[10],a_in[11],a_in[12],a_in[13],a_in[14],a_in[15],
-                                          a_in[16],a_in[17],a_in[18],a_in[19],a_in[20],a_in[21],a_in[22],a_in[23],
-                                          a_in[24],a_in[25],a_in[26],a_in[27],a_in[28],a_in[29],a_in[30],a_in[31]};
-
-   assign bitmanip_rev8_result[31:0]   = {32{ap_rev8}}  & {a_in[7:0],a_in[15:8],a_in[23:16],a_in[31:24]};
-
-
-// uint32_t gorc32(uint32_t rs1, uint32_t rs2)
-// {
-//      uint32_t x = rs1;
-//      int shamt = rs2 & 31;                                                        ORC.B  ORC16
-//      if (shamt &  1) x |= ((x & 0x55555555) <<  1) | ((x & 0xAAAAAAAA) >>  1);      1      0
-//      if (shamt &  2) x |= ((x & 0x33333333) <<  2) | ((x & 0xCCCCCCCC) >>  2);      1      0
-//      if (shamt &  4) x |= ((x & 0x0F0F0F0F) <<  4) | ((x & 0xF0F0F0F0) >>  4);      1      0
-//      if (shamt &  8) x |= ((x & 0x00FF00FF) <<  8) | ((x & 0xFF00FF00) >>  8);      0      0
-//      if (shamt & 16) x |= ((x & 0x0000FFFF) << 16) | ((x & 0xFFFF0000) >> 16);      0      1
-//      return x;
-// }
-
-
-// BEFORE              31  ,   30  ,   29  ,   28  ,    27  ,   26,     25,     24
-// shamt[0]  b =    a31|a30,a31|a30,a29|a28,a29|a28, a27|a26,a27|a26,a25|a24,a25|a24
-// shamt[1]  c =    b31|b29,b30|b28,b31|b29,b30|b28, b27|b25,b26|b24,b27|b25,b26|b24
-// shamt[2]  d =    c31|c27,c30|c26,c29|c25,c28|c24, c31|c27,c30|c26,c29|c25,c28|c24
-//
-// Expand d31 =        c31         |         c27;
-//            =   b31   |   b29    |    b27   |   b25;
-//            = a31|a30 | a29|a28  |  a27|a26 | a25|a24
-
-   assign bitmanip_orc_b_result[31:0]  = {32{ap_orc_b}} & { {8{| a_in[31:24]}}, {8{| a_in[23:16]}}, {8{| a_in[15:8]}}, {8{| a_in[7:0]}} };
-
-   assign bitmanip_orc16_result[31:0]  = {32{ap_orc16}} & {     {a_in[31:16] | a_in[15:0]},             {a_in[31:16] | a_in[15:0]}      };
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  ZBSET, ZBCLR, ZBINV  * * * * * * * * * * * * * *
-
-   logic        [31:0]    bitmanip_sb_1hot;
-   logic        [31:0]    bitmanip_sb_data;
-
-   assign bitmanip_sb_1hot[31:0]       = ( 32'h00000001 << b_in[4:0] );
-
-   assign bitmanip_sb_data[31:0]       = ( {32{ap_sbset}} & ( a_in[31:0] |  bitmanip_sb_1hot[31:0]) ) |
-                                         ( {32{ap_sbclr}} & ( a_in[31:0] & ~bitmanip_sb_1hot[31:0]) ) |
-                                         ( {32{ap_sbinv}} & ( a_in[31:0] ^  bitmanip_sb_1hot[31:0]) );
-
-
-
-
-
-
-   assign sel_shift           =  ap.sll  | ap.srl | ap.sra | ap_slo | ap_sro | ap_rol | ap_ror;
-   assign sel_adder           = (ap.add  | ap.sub | ap_zba) & ~ap.slt & ~ap_min & ~ap_max;
-   assign sel_pc              =  ap.jal  | pp_in.pcall | pp_in.pja | pp_in.pret;
-   assign csr_write_data[31:0]= (ap.csr_imm)  ?  b_in[31:0]  :  a_in[31:0];
-
-   assign slt_one             =  ap.slt & lt;
-
-
-
-   assign result[31:0]        =                        lout[31:0]             |
-                                ({32{sel_shift}}    &  sout[31:0]           ) |
-                                ({32{sel_adder}}    &  aout[31:0]           ) |
-                                ({32{sel_pc}}       & {pcout[31:1],1'b0}    ) |
-                                ({32{ap.csr_write}} &  csr_write_data[31:0] ) |
-                                                      {31'b0, slt_one}        |
-                                ({32{ap_sbext}}     & {31'b0, sout[0]}      ) |
-                                                      {26'b0, bitmanip_clz_ctz_result[5:0]} |
-                                                      {26'b0, bitmanip_pcnt_result[5:0]}    |
-                                                       bitmanip_sext_result[31:0]    |
-                                                       bitmanip_minmax_result[31:0]  |
-                                                       bitmanip_pack_result[31:0]    |
-                                                       bitmanip_packu_result[31:0]   |
-                                                       bitmanip_packh_result[31:0]   |
-                                                       bitmanip_rev_result[31:0]     |
-                                                       bitmanip_rev8_result[31:0]    |
-                                                       bitmanip_orc_b_result[31:0]   |
-                                                       bitmanip_orc16_result[31:0]   |
-                                                       bitmanip_sb_data[31:0];
-
-
-
-   // *** branch handling ***
-
-   assign any_jal             =  ap.jal      |
-                                 pp_in.pcall |
-                                 pp_in.pja   |
-                                 pp_in.pret;
-
-   assign actual_taken        = (ap.beq & eq) |
-                                (ap.bne & ne) |
-                                (ap.blt & lt) |
-                                (ap.bge & ge) |
-                                 any_jal;
-
-   // for a conditional br pcout[] will be the opposite of the branch prediction
-   // for jal or pcall, it will be the link address pc+2 or pc+4
-
-   rvbradder ibradder (
-                     .pc     ( pc_in[31:1]    ),
-                     .offset ( brimm_in[12:1] ),
-                     .dout   ( pcout[31:1]    ));
-
-
-   // pred_correct is for the npc logic
-   // pred_correct indicates not to use the flush_path
-   // for any_jal pred_correct==0
-
-   assign pred_correct_out    = (valid_in & ap.predict_nt & ~actual_taken & ~any_jal) |
-                                (valid_in & ap.predict_t  &  actual_taken & ~any_jal);
-
-
-   // for any_jal adder output is the flush path
-   assign flush_path_out[31:1]= (any_jal) ? aout[31:1] : pcout[31:1];
-
-
-   // pcall and pret are included here
-   assign cond_mispredict     = (ap.predict_t  & ~actual_taken) |
-                                (ap.predict_nt &  actual_taken);
-
-
-   // target mispredicts on ret's
-
-   assign target_mispredict   =  pp_in.pret & (pp_in.prett[31:1] != aout[31:1]);
-
-   assign flush_upper_out     =   (ap.jal | cond_mispredict | target_mispredict) & valid_in & ~flush_upper_x   & ~flush_lower_r;
-   assign flush_final_out     = ( (ap.jal | cond_mispredict | target_mispredict) & valid_in & ~flush_upper_x ) |  flush_lower_r;
-
-
-   // .i 3
-   // .o 2
-   // .ilb hist[1] hist[0] taken
-   // .ob newhist[1] newhist[0]
-   // .type fd
-   //
-   // 00 0 01
-   // 01 0 01
-   // 10 0 00
-   // 11 0 10
-   // 00 1 10
-   // 01 1 00
-   // 10 1 11
-   // 11 1 11
-
-   assign newhist[1]          = ( pp_in.hist[1] &  pp_in.hist[0]) | (~pp_in.hist[0] & actual_taken);
-   assign newhist[0]          = (~pp_in.hist[1] & ~actual_taken)  | ( pp_in.hist[1] & actual_taken);
-
-   always_comb begin
-      predict_p_out           =  pp_in;
-
-      predict_p_out.misp      = ~flush_upper_x & ~flush_lower_r & (cond_mispredict | target_mispredict);
-      predict_p_out.ataken    =  actual_taken;
-      predict_p_out.hist[1]   =  newhist[1];
-      predict_p_out.hist[0]   =  newhist[0];
-
-   end
-
-
-
-endmodule // eb1_exu_alu_ctl
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_div_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic           clk,                       // Top level clock
-   input logic           rst_l,                     // Reset
-   input logic           scan_mode,                 // Scan mode
-
-   input eb1_div_pkt_t  dp,                        // valid, sign, rem
-   input logic  [31:0]   dividend,                  // Numerator
-   input logic  [31:0]   divisor,                   // Denominator
-
-   input logic           cancel,                    // Cancel divide
-
-
-   output logic          finish_dly,                // Finish to match data
-   output logic [31:0]   out                        // Result
-  );
-
-
-   logic [31:0]          out_raw;
-
-   assign out[31:0] = {32{finish_dly}} & out_raw[31:0];     // Qualification added to quiet result bus while divide is iterating
-
-
-
-   if (pt.DIV_NEW == 0)
-      begin
-        eb1_exu_div_existing_1bit_cheapshortq   i_existing_1bit_div_cheapshortq (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 1) )
-      begin
-        eb1_exu_div_new_1bit_fullshortq         i_new_1bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 2) )
-      begin
-        eb1_exu_div_new_2bit_fullshortq         i_new_2bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 3) )
-      begin
-        eb1_exu_div_new_3bit_fullshortq         i_new_3bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-   if ( (pt.DIV_NEW == 1) & (pt.DIV_BIT == 4) )
-      begin
-        eb1_exu_div_new_4bit_fullshortq         i_new_4bit_div_fullshortq       (
-            .clk              ( clk                      ),   // I
-            .rst_l            ( rst_l                    ),   // I
-            .scan_mode        ( scan_mode                ),   // I
-            .cancel           ( cancel                   ),   // I
-            .valid_in         ( dp.valid                 ),   // I
-            .signed_in        (~dp.unsign                ),   // I
-            .rem_in           ( dp.rem                   ),   // I
-            .dividend_in      ( dividend[31:0]           ),   // I
-            .divisor_in       ( divisor[31:0]            ),   // I
-            .valid_out        ( finish_dly               ),   // O
-            .data_out         ( out_raw[31:0]            ));  // O
-      end
-
-
-
-endmodule // eb1_exu_div_ctl
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_existing_1bit_cheapshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic         div_clken;
-   logic         run_in, run_state;
-   logic  [5:0]  count_in, count;
-   logic [32:0]  m_ff;
-   logic         qff_enable;
-   logic         aff_enable;
-   logic [32:0]  q_in, q_ff;
-   logic [32:0]  a_in, a_ff;
-   logic [32:0]  m_eff;
-   logic [32:0]  a_shift;
-   logic         dividend_neg_ff, divisor_neg_ff;
-   logic [31:0]  dividend_comp;
-   logic [31:0]  dividend_eff;
-   logic [31:0]  q_ff_comp;
-   logic [31:0]  q_ff_eff;
-   logic [31:0]  a_ff_comp;
-   logic [31:0]  a_ff_eff;
-   logic         sign_ff, sign_eff;
-   logic         rem_ff;
-   logic         add;
-   logic [32:0]  a_eff;
-   logic [64:0]  a_eff_shift;
-   logic         rem_correct;
-   logic         valid_ff_x;
-   logic         valid_x;
-   logic         finish;
-   logic         finish_ff;
-
-   logic         smallnum_case, smallnum_case_ff;
-   logic  [3:0]  smallnum, smallnum_ff;
-   logic         m_already_comp;
-
-   logic [4:0]   a_cls;
-   logic [4:0]   b_cls;
-   logic [5:0]   shortq_shift;
-   logic [5:0]   shortq_shift_ff;
-   logic [5:0]   shortq;
-   logic         shortq_enable;
-   logic         shortq_enable_ff;
-   logic [32:0]  short_dividend;
-   logic [3:0]   shortq_raw;
-   logic [3:0]   shortq_shift_xx;
-
-
-
-   rvdffe #(23) i_misc_ff        (.*, .clk(clk), .en(div_clken),   .din ({valid_in & ~cancel,
-                                                                          finish   & ~cancel,
-                                                                          run_in,
-                                                                          count_in[5:0],
-                                                                          (valid_in & dividend_in[31]) | (~valid_in & dividend_neg_ff),
-                                                                          (valid_in & divisor_in[31] ) | (~valid_in & divisor_neg_ff ),
-                                                                          (valid_in & sign_eff       ) | (~valid_in & sign_ff        ),
-                                                                          (valid_in & rem_in         ) | (~valid_in & rem_ff         ),
-                                                                          smallnum_case,
-                                                                          smallnum[3:0],
-                                                                          shortq_enable,
-                                                                          shortq_shift[3:0]}),
-
-                                                                   .dout({valid_ff_x,
-                                                                          finish_ff,
-                                                                          run_state,
-                                                                          count[5:0],
-                                                                          dividend_neg_ff,
-                                                                          divisor_neg_ff,
-                                                                          sign_ff,
-                                                                          rem_ff,
-                                                                          smallnum_case_ff,
-                                                                          smallnum_ff[3:0],
-                                                                          shortq_enable_ff,
-                                                                          shortq_shift_xx[3:0]}));
-
-
-   rvdffe #(33) mff              (.*, .clk(clk), .en(valid_in),    .din({signed_in & divisor_in[31], divisor_in[31:0]}),   .dout(m_ff[32:0]));
-   rvdffe #(33) qff              (.*, .clk(clk), .en(qff_enable),  .din(q_in[32:0]),                                       .dout(q_ff[32:0]));
-   rvdffe #(33) aff              (.*, .clk(clk), .en(aff_enable),  .din(a_in[32:0]),                                       .dout(a_ff[32:0]));
-
-   rvtwoscomp #(32) i_dividend_comp (.din(q_ff[31:0]),    .dout(dividend_comp[31:0]));
-   rvtwoscomp #(32) i_q_ff_comp     (.din(q_ff[31:0]),    .dout(q_ff_comp[31:0]));
-   rvtwoscomp #(32) i_a_ff_comp     (.din(a_ff[31:0]),    .dout(a_ff_comp[31:0]));
-
-
-   assign valid_x                 = valid_ff_x & ~cancel;
-
-
-   // START - short circuit logic for small numbers {{
-
-   // small number divides - any 4b / 4b is done in 1 cycle (divisor != 0)
-   // to generate espresso equations:
-   // 1.  smalldiv > smalldiv.e
-   // 2.  espresso -Dso -oeqntott smalldiv.e | addassign > smalldiv
-
-   // smallnum case does not cover divide by 0
-   assign smallnum_case           = ((q_ff[31:4] == 28'b0) & (m_ff[31:4] == 28'b0) & (m_ff[31:0] != 32'b0) & ~rem_ff & valid_x) |
-                                    ((q_ff[31:0] == 32'b0) &                         (m_ff[31:0] != 32'b0) & ~rem_ff & valid_x);
-
-
-   assign smallnum[3]             = ( q_ff[3] &                                  ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           );
-
-
-   assign smallnum[2]             = ( q_ff[3] &                                  ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    ( q_ff[2] &                                  ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] & ~m_ff[2]                      );
-
-
-   assign smallnum[1]             = ( q_ff[2] &                                  ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    (                       q_ff[1] &            ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &                                  ~m_ff[3] &            ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] & ~q_ff[2] &                       ~m_ff[3] & ~m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &                       ~m_ff[3] &  m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &             q_ff[1] & ~m_ff[3] &                       ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &  m_ff[2]                      );
-
-
-   assign smallnum[0]             = (            q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] &  q_ff[0] &            ~m_ff[3] &             m_ff[1] &  m_ff[0]) |
-                                    (            q_ff[2] &                       ~m_ff[3] &            ~m_ff[1] & ~m_ff[0]) |
-                                    (                       q_ff[1] &            ~m_ff[3] & ~m_ff[2] &            ~m_ff[0]) |
-                                    (                                  q_ff[0] & ~m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] & ~q_ff[1] &            ~m_ff[3] & ~m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &                                             ~m_ff[2] & ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] & ~q_ff[2] &                       ~m_ff[3] &  m_ff[2] &  m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &            ~m_ff[3] &  m_ff[2] & ~m_ff[1]           ) |
-                                    (~q_ff[3] &  q_ff[2] &             q_ff[0] & ~m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] & ~q_ff[1] &            ~m_ff[3] &  m_ff[2] &             m_ff[0]) |
-                                    (           ~q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                                             ~m_ff[1] & ~m_ff[0]) |
-                                    ( q_ff[3] &             q_ff[1] &                       ~m_ff[2] &            ~m_ff[0]) |
-                                    (~q_ff[3] &  q_ff[2] &  q_ff[1] &  q_ff[0] & ~m_ff[3] &  m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &                        m_ff[3] & ~m_ff[2]                      ) |
-                                    ( q_ff[3] &             q_ff[1] &             m_ff[3] & ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &                        q_ff[0] &            ~m_ff[2] & ~m_ff[1]           ) |
-                                    ( q_ff[3] &            ~q_ff[1] &            ~m_ff[3] &  m_ff[2] &  m_ff[1] &  m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &             m_ff[3] &                       ~m_ff[0]) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &             m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] &  q_ff[2] &             q_ff[0] &  m_ff[3] &            ~m_ff[1]           ) |
-                                    ( q_ff[3] & ~q_ff[2] &  q_ff[1] &            ~m_ff[3] &             m_ff[1]           ) |
-                                    ( q_ff[3] &             q_ff[1] &  q_ff[0] &            ~m_ff[2]                      ) |
-                                    ( q_ff[3] &  q_ff[2] &  q_ff[1] &  q_ff[0] &  m_ff[3]                                 );
-
-
-   // END   - short circuit logic for small numbers }}
-
-
-   // *** Start Short Q *** {{
-
-   assign short_dividend[31:0]    =  q_ff[31:0];
-   assign short_dividend[32]      =  sign_ff & q_ff[31];
-
-
-   //    A       B
-   //   210     210    SH
-   //   ---     ---    --
-   //   1xx     000     0
-   //   1xx     001     8
-   //   1xx     01x    16
-   //   1xx     1xx    24
-   //   01x     000     8
-   //   01x     001    16
-   //   01x     01x    24
-   //   01x     1xx    32
-   //   001     000    16
-   //   001     001    24
-   //   001     01x    32
-   //   001     1xx    32
-   //   000     000    24
-   //   000     001    32
-   //   000     01x    32
-   //   000     1xx    32
-
-   assign a_cls[4:3]              =  2'b0;
-   assign a_cls[2]                =  (~short_dividend[32] & (short_dividend[31:24] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[31:23] != {9{1'b1}}));
-   assign a_cls[1]                =  (~short_dividend[32] & (short_dividend[23:16] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[22:15] != {8{1'b1}}));
-   assign a_cls[0]                =  (~short_dividend[32] & (short_dividend[15:08] != {8{1'b0}})) | ( short_dividend[32] & (short_dividend[14:07] != {8{1'b1}}));
-
-   assign b_cls[4:3]              =  2'b0;
-   assign b_cls[2]                =  (~m_ff[32]           & (          m_ff[31:24] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[31:24] != {8{1'b1}}));
-   assign b_cls[1]                =  (~m_ff[32]           & (          m_ff[23:16] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[23:16] != {8{1'b1}}));
-   assign b_cls[0]                =  (~m_ff[32]           & (          m_ff[15:08] != {8{1'b0}})) | ( m_ff[32]           & (          m_ff[15:08] != {8{1'b1}}));
-
-   assign shortq_raw[3]           = ( (a_cls[2:1] == 2'b01 ) & (b_cls[2]   == 1'b1  ) ) |   // Shift by 32
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2]   == 1'b1  ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2]   == 1'b1  ) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:0] == 3'b001) );
-
-   assign shortq_raw[2]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2]   == 1'b1  ) ) |   // Shift by 24
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:1] == 2'b01 ) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:0] == 3'b001) ) |
-                                    ( (a_cls[2:0] == 3'b000) & (b_cls[2:0] == 3'b000) );
-
-   assign shortq_raw[1]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2:1] == 2'b01 ) ) |   // Shift by 16
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:0] == 3'b001) ) |
-                                    ( (a_cls[2:0] == 3'b001) & (b_cls[2:0] == 3'b000) );
-
-   assign shortq_raw[0]           = ( (a_cls[2]   == 1'b1  ) & (b_cls[2:0] == 3'b001) ) |   // Shift by  8
-                                    ( (a_cls[2:1] == 2'b01 ) & (b_cls[2:0] == 3'b000) );
-
-
-   assign shortq_enable           =  valid_ff_x & (m_ff[31:0] != 32'b0) & (shortq_raw[3:0] != 4'b0);
-
-   assign shortq_shift[3:0]       = ({4{shortq_enable}} & shortq_raw[3:0]);
-
-   assign shortq[5:0]             =  6'b0;
-   assign shortq_shift[5:4]       =  2'b0;
-   assign shortq_shift_ff[5]      =  1'b0;
-
-   assign shortq_shift_ff[4:0]    = ({5{shortq_shift_xx[3]}} & 5'b1_1111) |   // 31
-                                    ({5{shortq_shift_xx[2]}} & 5'b1_1000) |   // 24
-                                    ({5{shortq_shift_xx[1]}} & 5'b1_0000) |   // 16
-                                    ({5{shortq_shift_xx[0]}} & 5'b0_1000);    //  8
-
-   // *** End   Short *** }}
-
-
-
-
-
-   assign div_clken               =  valid_in | run_state | finish | finish_ff;
-
-   assign run_in                  = (valid_in | run_state) & ~finish & ~cancel;
-
-   assign count_in[5:0]           = {6{run_state & ~finish & ~cancel & ~shortq_enable}} & (count[5:0] + {1'b0,shortq_shift_ff[4:0]} + 6'd1);
-
-
-   assign finish                  = (smallnum_case | ((~rem_ff) ? (count[5:0] == 6'd32) : (count[5:0] == 6'd33)));
-
-   assign valid_out               =  finish_ff & ~cancel;
-
-   assign sign_eff                =  signed_in & (divisor_in[31:0] != 32'b0);
-
-
-   assign q_in[32:0]              = ({33{~run_state                                   }} &  {1'b0,dividend_in[31:0]}) |
-                                    ({33{ run_state &  (valid_ff_x | shortq_enable_ff)}} &  ({dividend_eff[31:0], ~a_in[32]} << shortq_shift_ff[4:0])) |
-                                    ({33{ run_state & ~(valid_ff_x | shortq_enable_ff)}} &  {q_ff[31:0], ~a_in[32]});
-
-   assign qff_enable              =  valid_in | (run_state & ~shortq_enable);
-
-
-
-
-   assign dividend_eff[31:0]      = (sign_ff & dividend_neg_ff) ? dividend_comp[31:0] : q_ff[31:0];
-
-
-   assign m_eff[32:0]             = ( add ) ? m_ff[32:0] : ~m_ff[32:0];
-
-   assign a_eff_shift[64:0]       = {33'b0, dividend_eff[31:0]} << shortq_shift_ff[4:0];
-
-   assign a_eff[32:0]             = ({33{ rem_correct                    }} &  a_ff[32:0]            ) |
-                                    ({33{~rem_correct & ~shortq_enable_ff}} & {a_ff[31:0], q_ff[32]} ) |
-                                    ({33{~rem_correct &  shortq_enable_ff}} &  a_eff_shift[64:32]    );
-
-   assign a_shift[32:0]           = {33{run_state}} & a_eff[32:0];
-
-   assign a_in[32:0]              = {33{run_state}} & (a_shift[32:0] + m_eff[32:0] + {32'b0,~add});
-
-   assign aff_enable              =  valid_in | (run_state & ~shortq_enable & (count[5:0]!=6'd33)) | rem_correct;
-
-
-   assign m_already_comp          = (divisor_neg_ff & sign_ff);
-
-   // if m already complemented, then invert operation add->sub, sub->add
-   assign add                     = (a_ff[32] | rem_correct) ^ m_already_comp;
-
-   assign rem_correct             = (count[5:0] == 6'd33) & rem_ff & a_ff[32];
-
-
-
-   assign q_ff_eff[31:0]          = (sign_ff & (dividend_neg_ff ^ divisor_neg_ff)) ? q_ff_comp[31:0] : q_ff[31:0];
-
-   assign a_ff_eff[31:0]          = (sign_ff &  dividend_neg_ff) ? a_ff_comp[31:0] : a_ff[31:0];
-
-   assign data_out[31:0]          = ({32{ smallnum_case_ff          }} & {28'b0, smallnum_ff[3:0]}) |
-                                    ({32{                     rem_ff}} &  a_ff_eff[31:0]          ) |
-                                    ({32{~smallnum_case_ff & ~rem_ff}} &  q_ff_eff[31:0]          );
-
-
-
-
-endmodule // eb1_exu_div_existing_1bit_cheapshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_1bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in, b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable, r_sign_sel, r_restore_sel, r_adder_sel;
-   logic        [31:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic                   quotient_set;
-   logic        [32:0]     adder_out;
-
-   logic        [63:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(32) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[31:0]),           .dout(r_ff[31:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {6'b0,1'b1} + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[63:0]       = { {32{dividend_sign_ff}} , a_ff[31:0]} << shortq_shift_ff[4:0];
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[30:0],1'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & ~quotient_set & ~shortq_enable_ff;
-   assign r_adder_sel            =  running_state &  quotient_set & ~shortq_enable_ff;
-
-
-   assign r_in[31:0]             = ( {32{r_sign_sel      }} &  32'hffffffff          ) |
-                                   ( {32{r_restore_sel   }} & {r_ff[30:0] ,a_ff[31]} ) |
-                                   ( {32{r_adder_sel     }} &  adder_out[31:0]       ) |
-                                   ( {32{shortq_enable_ff}} &  ar_shifted[63:32]     ) |
-                                   ( {32{by_zero_case    }} &  a_ff[31:0]            );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff       }} & {q_ff[30:0], quotient_set}  ) |
-                                   ( {32{ smallnum_case  }} & {28'b0     , smallnum[3:0]} ) |
-                                   ( {32{ by_zero_case   }} & {32{1'b1}}                  );
-
-
-
-   assign adder_out[32:0]        = {r_ff[31:0],a_ff[31]} + {b_ff[32:0] };
-
-
-   assign quotient_set           = (~adder_out[32] ^ dividend_sign_ff) | ( (a_ff[30:0] == 31'b0) & (adder_out[32:0] == 33'b0) );
-
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:1] ==  4'b1111) & ~cancel;
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  (5'b11111 - shortq[4:0]);
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_1bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_2bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [34:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable, r_sign_sel, r_restore_sel, r_adder1_sel, r_adder2_sel, r_adder3_sel;
-   logic        [31:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic         [3:1]     quotient_raw;
-   logic         [1:0]     quotient_new;
-   logic        [32:0]     adder1_out;
-   logic        [33:0]     adder2_out;
-   logic        [34:0]     adder3_out;
-
-   logic        [63:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:1]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(18) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:1],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:1], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(32) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[31:0]),           .dout(r_ff[31:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {5'b0,2'b10} + {2'b0,shortq_shift_ff[4:1],1'b0});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[63:0]       = { {32{dividend_sign_ff}} , a_ff[31:0]} << {shortq_shift_ff[4:1],1'b0};
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[29:0],2'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[1:0] == 2'b00) & ~shortq_enable_ff;
-   assign r_adder1_sel           =  running_state & (quotient_new[1:0] == 2'b01) & ~shortq_enable_ff;
-   assign r_adder2_sel           =  running_state & (quotient_new[1:0] == 2'b10) & ~shortq_enable_ff;
-   assign r_adder3_sel           =  running_state & (quotient_new[1:0] == 2'b11) & ~shortq_enable_ff;
-
-
-   assign r_in[31:0]             = ( {32{r_sign_sel      }} &  32'hffffffff             ) |
-                                   ( {32{r_restore_sel   }} & {r_ff[29:0] ,a_ff[31:30]} ) |
-                                   ( {32{r_adder1_sel    }} &  adder1_out[31:0]         ) |
-                                   ( {32{r_adder2_sel    }} &  adder2_out[31:0]         ) |
-                                   ( {32{r_adder3_sel    }} &  adder3_out[31:0]         ) |
-                                   ( {32{shortq_enable_ff}} &  ar_shifted[63:32]        ) |
-                                   ( {32{by_zero_case    }} &  a_ff[31:0]               );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff       }} & {q_ff[29:0], quotient_new[1:0]} ) |
-                                   ( {32{ smallnum_case  }} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case   }} & {32{1'b1}}                      );
-
-
-   assign b_ff[34:33]            = {b_ff[32],b_ff[32]};
-
-
-   assign adder1_out[32:0]       = {         r_ff[30:0],a_ff[31:30]}  +                       b_ff[32:0];
-   assign adder2_out[33:0]       = {         r_ff[31:0],a_ff[31:30]}  + {b_ff[32:0],1'b0};
-   assign adder3_out[34:0]       = {r_ff[31],r_ff[31:0],a_ff[31:30]}  + {b_ff[33:0],1'b0}  +  b_ff[34:0];
-
-
-   assign quotient_raw[1]        = (~adder1_out[32] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder1_out[32:0] == 33'b0) );
-   assign quotient_raw[2]        = (~adder2_out[33] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder2_out[33:0] == 34'b0) );
-   assign quotient_raw[3]        = (~adder3_out[34] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder3_out[34:0] == 35'b0) );
-
-   assign quotient_new[1]        = quotient_raw[3] |  quotient_raw[2];
-   assign quotient_new[0]        = quotient_raw[3] |(~quotient_raw[2] & quotient_raw[1]);
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:1] ==  4'b1111) & ~cancel;
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  (5'b11111 - shortq[4:0]);   // [0] is unused
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_2bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_3bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [32:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [36:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable;
-   logic                   r_sign_sel;
-   logic                   r_restore_sel;
-   logic                   r_adder1_sel, r_adder2_sel, r_adder3_sel, r_adder4_sel, r_adder5_sel, r_adder6_sel, r_adder7_sel;
-   logic        [32:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic         [7:1]     quotient_raw;
-   logic         [2:0]     quotient_new;
-   logic        [33:0]     adder1_out;
-   logic        [34:0]     adder2_out;
-   logic        [35:0]     adder3_out;
-   logic        [36:0]     adder4_out;
-   logic        [36:0]     adder5_out;
-   logic        [36:0]     adder6_out;
-   logic        [36:0]     adder7_out;
-
-   logic        [65:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_decode;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),    .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                      .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(33) i_a_ff           (.*, .clk(clk), .en(a_enable),       .din(a_in[32:0]),           .dout(a_ff[32:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),       .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(33) i_r_ff           (.*, .clk(clk), .en(rq_enable),      .din(r_in[32:0]),           .dout(r_ff[32:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),      .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd33);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + {5'b0,2'b11} + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[65:0]       = { {33{dividend_sign_ff}} , a_ff[32:0]} << {shortq_shift_ff[4:0]};
-
-   assign a_in[32:0]             = ( {33{~a_shift & ~shortq_enable_ff}} & {signed_in & dividend_in[31],dividend_in[31:0]} ) |
-                                   ( {33{ a_shift                    }} & {a_ff[29:0],3'b0}  ) |
-                                   ( {33{            shortq_enable_ff}} &  ar_shifted[32:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[2:0] == 3'b000) & ~shortq_enable_ff;
-   assign r_adder1_sel           =  running_state & (quotient_new[2:0] == 3'b001) & ~shortq_enable_ff;
-   assign r_adder2_sel           =  running_state & (quotient_new[2:0] == 3'b010) & ~shortq_enable_ff;
-   assign r_adder3_sel           =  running_state & (quotient_new[2:0] == 3'b011) & ~shortq_enable_ff;
-   assign r_adder4_sel           =  running_state & (quotient_new[2:0] == 3'b100) & ~shortq_enable_ff;
-   assign r_adder5_sel           =  running_state & (quotient_new[2:0] == 3'b101) & ~shortq_enable_ff;
-   assign r_adder6_sel           =  running_state & (quotient_new[2:0] == 3'b110) & ~shortq_enable_ff;
-   assign r_adder7_sel           =  running_state & (quotient_new[2:0] == 3'b111) & ~shortq_enable_ff;
-
-
-   assign r_in[32:0]             = ( {33{r_sign_sel      }} & {33{1'b1}}               ) |
-                                   ( {33{r_restore_sel   }} & {r_ff[29:0] ,a_ff[32:30]} ) |
-                                   ( {33{r_adder1_sel    }} &  adder1_out[32:0]         ) |
-                                   ( {33{r_adder2_sel    }} &  adder2_out[32:0]         ) |
-                                   ( {33{r_adder3_sel    }} &  adder3_out[32:0]         ) |
-                                   ( {33{r_adder4_sel    }} &  adder4_out[32:0]         ) |
-                                   ( {33{r_adder5_sel    }} &  adder5_out[32:0]         ) |
-                                   ( {33{r_adder6_sel    }} &  adder6_out[32:0]         ) |
-                                   ( {33{r_adder7_sel    }} &  adder7_out[32:0]         ) |
-                                   ( {33{shortq_enable_ff}} &  ar_shifted[65:33]        ) |
-                                   ( {33{by_zero_case    }} & {1'b0,a_ff[31:0]}         );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff     }} & {q_ff[28:0], quotient_new[2:0]} ) |
-                                   ( {32{ smallnum_case}} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case }} & {32{1'b1}}                      );
-
-
-   assign b_ff[36:33]            = {b_ff[32],b_ff[32],b_ff[32],b_ff[32]};
-
-
-   assign adder1_out[33:0]       = {         r_ff[30:0],a_ff[32:30]}  +                                              b_ff[33:0];
-   assign adder2_out[34:0]       = {         r_ff[31:0],a_ff[32:30]}  +                        {b_ff[33:0],1'b0};
-   assign adder3_out[35:0]       = {         r_ff[32:0],a_ff[32:30]}  +                        {b_ff[34:0],1'b0}  +  b_ff[35:0];
-   assign adder4_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0};
-   assign adder5_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +                        b_ff[36:0];
-   assign adder6_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +  {b_ff[35:0],1'b0};
-   assign adder7_out[36:0]       = {r_ff[32],r_ff[32:0],a_ff[32:30]}  +  {b_ff[34:0],2'b0}  +  {b_ff[35:0],1'b0}  +  b_ff[36:0];
-
-   assign quotient_raw[1]        = (~adder1_out[33] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder1_out[33:0] == 34'b0) );
-   assign quotient_raw[2]        = (~adder2_out[34] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder2_out[34:0] == 35'b0) );
-   assign quotient_raw[3]        = (~adder3_out[35] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder3_out[35:0] == 36'b0) );
-   assign quotient_raw[4]        = (~adder4_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder4_out[36:0] == 37'b0) );
-   assign quotient_raw[5]        = (~adder5_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder5_out[36:0] == 37'b0) );
-   assign quotient_raw[6]        = (~adder6_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder6_out[36:0] == 37'b0) );
-   assign quotient_raw[7]        = (~adder7_out[36] ^ dividend_sign_ff) | ( (a_ff[29:0] == 30'b0) & (adder7_out[36:0] == 37'b0) );
-
-   assign quotient_new[2]        = quotient_raw[7] |   quotient_raw[6] | quotient_raw[5]  |   quotient_raw[4];
-   assign quotient_new[1]        = quotient_raw[7] |   quotient_raw[6] |                    (~quotient_raw[4] & quotient_raw[3]) | (~quotient_raw[3] & quotient_raw[2]);
-   assign quotient_new[0]        = quotient_raw[7] | (~quotient_raw[6] & quotient_raw[5]) | (~quotient_raw[4] & quotient_raw[3]) | (~quotient_raw[2] & quotient_raw[1]);
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:2] ==  3'b111) & ~cancel;
-
-   assign shortq_decode[4:0]      = ( {5{shortq[4:0] == 5'd31}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd30}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd29}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd28}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd27}} & 5'd03) |
-                                    ( {5{shortq[4:0] == 5'd26}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd25}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd24}} & 5'd06) |
-                                    ( {5{shortq[4:0] == 5'd23}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd22}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd21}} & 5'd09) |
-                                    ( {5{shortq[4:0] == 5'd20}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd19}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd18}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd17}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd16}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd15}} & 5'd15) |
-                                    ( {5{shortq[4:0] == 5'd14}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd13}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd12}} & 5'd18) |
-                                    ( {5{shortq[4:0] == 5'd11}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd10}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd09}} & 5'd21) |
-                                    ( {5{shortq[4:0] == 5'd08}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd07}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd06}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd05}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd04}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd03}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd02}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd01}} & 5'd27) |
-                                    ( {5{shortq[4:0] == 5'd00}} & 5'd27);
-
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  shortq_decode[4:0];
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_3bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-module eb1_exu_div_new_4bit_fullshortq
-  (
-   input  logic            clk,                       // Top level clock
-   input  logic            rst_l,                     // Reset
-   input  logic            scan_mode,                 // Scan mode
-
-   input  logic            cancel,                    // Flush pipeline
-   input  logic            valid_in,
-   input  logic            signed_in,
-   input  logic            rem_in,
-   input  logic [31:0]     dividend_in,
-   input  logic [31:0]     divisor_in,
-
-   output logic            valid_out,
-   output logic [31:0]     data_out
-  );
-
-
-   logic                   valid_ff_in, valid_ff;
-   logic                   finish_raw, finish, finish_ff;
-   logic                   running_state;
-   logic                   misc_enable;
-   logic         [2:0]     control_in, control_ff;
-   logic                   dividend_sign_ff, divisor_sign_ff, rem_ff;
-   logic                   count_enable;
-   logic         [6:0]     count_in, count_ff;
-
-   logic                   smallnum_case;
-   logic         [3:0]     smallnum;
-
-   logic                   a_enable, a_shift;
-   logic        [31:0]     a_in, a_ff;
-
-   logic                   b_enable, b_twos_comp;
-   logic        [32:0]     b_in;
-   logic        [37:0]     b_ff;
-
-   logic        [31:0]     q_in, q_ff;
-
-   logic                   rq_enable;
-   logic                   r_sign_sel;
-   logic                   r_restore_sel;
-   logic                   r_adder01_sel, r_adder02_sel, r_adder03_sel;
-   logic                   r_adder04_sel, r_adder05_sel, r_adder06_sel, r_adder07_sel;
-   logic                   r_adder08_sel, r_adder09_sel, r_adder10_sel, r_adder11_sel;
-   logic                   r_adder12_sel, r_adder13_sel, r_adder14_sel, r_adder15_sel;
-   logic        [32:0]     r_in, r_ff;
-
-   logic                   twos_comp_q_sel, twos_comp_b_sel;
-   logic        [31:0]     twos_comp_in, twos_comp_out;
-
-   logic        [15:1]     quotient_raw;
-   logic         [3:0]     quotient_new;
-   logic        [34:0]     adder01_out;
-   logic        [35:0]     adder02_out;
-   logic        [36:0]     adder03_out;
-   logic        [37:0]     adder04_out;
-   logic        [37:0]     adder05_out;
-   logic        [37:0]     adder06_out;
-   logic        [37:0]     adder07_out;
-   logic        [37:0]     adder08_out;
-   logic        [37:0]     adder09_out;
-   logic        [37:0]     adder10_out;
-   logic        [37:0]     adder11_out;
-   logic        [37:0]     adder12_out;
-   logic        [37:0]     adder13_out;
-   logic        [37:0]     adder14_out;
-   logic        [37:0]     adder15_out;
-
-   logic        [64:0]     ar_shifted;
-   logic         [5:0]     shortq;
-   logic         [4:0]     shortq_shift;
-   logic         [4:0]     shortq_decode;
-   logic         [4:0]     shortq_shift_ff;
-   logic                   shortq_enable;
-   logic                   shortq_enable_ff;
-   logic        [32:0]     shortq_dividend;
-
-   logic                   by_zero_case;
-   logic                   by_zero_case_ff;
-
-
-
-   rvdffe #(19) i_misc_ff        (.*, .clk(clk), .en(misc_enable),     .din ({valid_ff_in, control_in[2:0], by_zero_case,    shortq_enable,    shortq_shift[4:0],    finish,    count_in[6:0]}),
-                                                                       .dout({valid_ff,    control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]}));
-
-   rvdffe #(32) i_a_ff           (.*, .clk(clk), .en(a_enable),        .din(a_in[31:0]),           .dout(a_ff[31:0]));
-   rvdffe #(33) i_b_ff           (.*, .clk(clk), .en(b_enable),        .din(b_in[32:0]),           .dout(b_ff[32:0]));
-   rvdffe #(33) i_r_ff           (.*, .clk(clk), .en(rq_enable),       .din(r_in[32:0]),           .dout(r_ff[32:0]));
-   rvdffe #(32) i_q_ff           (.*, .clk(clk), .en(rq_enable),       .din(q_in[31:0]),           .dout(q_ff[31:0]));
-
-
-
-
-   assign valid_ff_in            =  valid_in  & ~cancel;
-
-   assign control_in[2]          = (~valid_in & control_ff[2]) | (valid_in & signed_in  & dividend_in[31]);
-   assign control_in[1]          = (~valid_in & control_ff[1]) | (valid_in & signed_in  &  divisor_in[31]);
-   assign control_in[0]          = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-
-   assign dividend_sign_ff       =  control_ff[2];
-   assign divisor_sign_ff        =  control_ff[1];
-   assign rem_ff                 =  control_ff[0];
-
-
-   assign by_zero_case           =  valid_ff & (b_ff[31:0] == 32'b0);
-
-   assign misc_enable            =  valid_in | valid_ff | cancel | running_state | finish_ff;
-   assign running_state          = (| count_ff[6:0]) | shortq_enable_ff;
-   assign finish_raw             =   smallnum_case      |
-                                     by_zero_case       |
-                                    (count_ff[6:0] == 7'd32);
-
-
-   assign finish                 =  finish_raw & ~cancel;
-   assign count_enable           = (valid_ff | running_state) & ~finish & ~finish_ff & ~cancel & ~shortq_enable;
-   assign count_in[6:0]          = {7{count_enable}} & (count_ff[6:0] + 7'd4 + {2'b0,shortq_shift_ff[4:0]});
-
-
-   assign a_enable               =  valid_in | running_state;
-   assign a_shift                =  running_state & ~shortq_enable_ff;
-
-   assign ar_shifted[64:0]       = { {33{dividend_sign_ff}} , a_ff[31:0]} << {shortq_shift_ff[4:0]};
-
-   assign a_in[31:0]             = ( {32{~a_shift & ~shortq_enable_ff}} &  dividend_in[31:0] ) |
-                                   ( {32{ a_shift                    }} & {a_ff[27:0],4'b0}  ) |
-                                   ( {32{            shortq_enable_ff}} &  ar_shifted[31:0]  );
-
-
-
-   assign b_enable               =    valid_in | b_twos_comp;
-   assign b_twos_comp            =    valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-
-   assign b_in[32:0]             = ( {33{~b_twos_comp}} & { (signed_in & divisor_in[31]),divisor_in[31:0] } ) |
-                                   ( {33{ b_twos_comp}} & {~divisor_sign_ff,twos_comp_out[31:0] } );
-
-
-   assign rq_enable              =  valid_in | valid_ff | running_state;
-   assign r_sign_sel             =  valid_ff      &  dividend_sign_ff & ~by_zero_case;
-   assign r_restore_sel          =  running_state & (quotient_new[3:0] == 4'd00) & ~shortq_enable_ff;
-   assign r_adder01_sel          =  running_state & (quotient_new[3:0] == 4'd01) & ~shortq_enable_ff;
-   assign r_adder02_sel          =  running_state & (quotient_new[3:0] == 4'd02) & ~shortq_enable_ff;
-   assign r_adder03_sel          =  running_state & (quotient_new[3:0] == 4'd03) & ~shortq_enable_ff;
-   assign r_adder04_sel          =  running_state & (quotient_new[3:0] == 4'd04) & ~shortq_enable_ff;
-   assign r_adder05_sel          =  running_state & (quotient_new[3:0] == 4'd05) & ~shortq_enable_ff;
-   assign r_adder06_sel          =  running_state & (quotient_new[3:0] == 4'd06) & ~shortq_enable_ff;
-   assign r_adder07_sel          =  running_state & (quotient_new[3:0] == 4'd07) & ~shortq_enable_ff;
-   assign r_adder08_sel          =  running_state & (quotient_new[3:0] == 4'd08) & ~shortq_enable_ff;
-   assign r_adder09_sel          =  running_state & (quotient_new[3:0] == 4'd09) & ~shortq_enable_ff;
-   assign r_adder10_sel          =  running_state & (quotient_new[3:0] == 4'd10) & ~shortq_enable_ff;
-   assign r_adder11_sel          =  running_state & (quotient_new[3:0] == 4'd11) & ~shortq_enable_ff;
-   assign r_adder12_sel          =  running_state & (quotient_new[3:0] == 4'd12) & ~shortq_enable_ff;
-   assign r_adder13_sel          =  running_state & (quotient_new[3:0] == 4'd13) & ~shortq_enable_ff;
-   assign r_adder14_sel          =  running_state & (quotient_new[3:0] == 4'd14) & ~shortq_enable_ff;
-   assign r_adder15_sel          =  running_state & (quotient_new[3:0] == 4'd15) & ~shortq_enable_ff;
-
-   assign r_in[32:0]             = ( {33{r_sign_sel      }} & {33{1'b1}}               ) |
-                                   ( {33{r_restore_sel   }} & {r_ff[28:0],a_ff[31:28]} ) |
-                                   ( {33{r_adder01_sel   }} &  adder01_out[32:0]       ) |
-                                   ( {33{r_adder02_sel   }} &  adder02_out[32:0]       ) |
-                                   ( {33{r_adder03_sel   }} &  adder03_out[32:0]       ) |
-                                   ( {33{r_adder04_sel   }} &  adder04_out[32:0]       ) |
-                                   ( {33{r_adder05_sel   }} &  adder05_out[32:0]       ) |
-                                   ( {33{r_adder06_sel   }} &  adder06_out[32:0]       ) |
-                                   ( {33{r_adder07_sel   }} &  adder07_out[32:0]       ) |
-                                   ( {33{r_adder08_sel   }} &  adder08_out[32:0]       ) |
-                                   ( {33{r_adder09_sel   }} &  adder09_out[32:0]       ) |
-                                   ( {33{r_adder10_sel   }} &  adder10_out[32:0]       ) |
-                                   ( {33{r_adder11_sel   }} &  adder11_out[32:0]       ) |
-                                   ( {33{r_adder12_sel   }} &  adder12_out[32:0]       ) |
-                                   ( {33{r_adder13_sel   }} &  adder13_out[32:0]       ) |
-                                   ( {33{r_adder14_sel   }} &  adder14_out[32:0]       ) |
-                                   ( {33{r_adder15_sel   }} &  adder15_out[32:0]       ) |
-                                   ( {33{shortq_enable_ff}} &  ar_shifted[64:32]       ) |
-                                   ( {33{by_zero_case    }} & {1'b0,a_ff[31:0]}        );
-
-
-   assign q_in[31:0]             = ( {32{~valid_ff     }} & {q_ff[27:0], quotient_new[3:0]} ) |
-                                   ( {32{ smallnum_case}} & {28'b0     , smallnum[3:0]}     ) |
-                                   ( {32{ by_zero_case }} & {32{1'b1}}                      );
-
-
-   assign b_ff[37:33]            = {b_ff[32],b_ff[32],b_ff[32],b_ff[32],b_ff[32]};
-
-
-   assign adder01_out[34:0]      = {         r_ff[30:0],a_ff[31:28]}  +                                                                   b_ff[34:0];
-   assign adder02_out[35:0]      = {         r_ff[31:0],a_ff[31:28]}  +                                             {b_ff[34:0],1'b0};
-   assign adder03_out[36:0]      = {         r_ff[32:0],a_ff[31:28]}  +                                             {b_ff[35:0],1'b0}  +  b_ff[36:0];
-   assign adder04_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0};
-   assign adder05_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +                        b_ff[37:0];
-   assign adder06_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0};
-   assign adder07_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +                       {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0}  +  b_ff[37:0];
-   assign adder08_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0};
-   assign adder09_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                                              b_ff[37:0];
-   assign adder10_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                        {b_ff[36:0],1'b0};
-   assign adder11_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +                        {b_ff[36:0],1'b0}  +  b_ff[37:0];
-   assign adder12_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0};
-   assign adder13_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +                        b_ff[37:0];
-   assign adder14_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0};
-   assign adder15_out[37:0]      = {r_ff[32],r_ff[32:0],a_ff[31:28]}  +  {b_ff[34:0],3'b0} +  {b_ff[35:0],2'b0}  +  {b_ff[36:0],1'b0}  +  b_ff[37:0];
-
-   assign quotient_raw[01]       = (~adder01_out[34] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder01_out[34:0] == 35'b0) );
-   assign quotient_raw[02]       = (~adder02_out[35] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder02_out[35:0] == 36'b0) );
-   assign quotient_raw[03]       = (~adder03_out[36] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder03_out[36:0] == 37'b0) );
-   assign quotient_raw[04]       = (~adder04_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder04_out[37:0] == 38'b0) );
-   assign quotient_raw[05]       = (~adder05_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder05_out[37:0] == 38'b0) );
-   assign quotient_raw[06]       = (~adder06_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder06_out[37:0] == 38'b0) );
-   assign quotient_raw[07]       = (~adder07_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder07_out[37:0] == 38'b0) );
-   assign quotient_raw[08]       = (~adder08_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder08_out[37:0] == 38'b0) );
-   assign quotient_raw[09]       = (~adder09_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder09_out[37:0] == 38'b0) );
-   assign quotient_raw[10]       = (~adder10_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder10_out[37:0] == 38'b0) );
-   assign quotient_raw[11]       = (~adder11_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder11_out[37:0] == 38'b0) );
-   assign quotient_raw[12]       = (~adder12_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder12_out[37:0] == 38'b0) );
-   assign quotient_raw[13]       = (~adder13_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder13_out[37:0] == 38'b0) );
-   assign quotient_raw[14]       = (~adder14_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder14_out[37:0] == 38'b0) );
-   assign quotient_raw[15]       = (~adder15_out[37] ^ dividend_sign_ff) | ( (a_ff[27:0] == 28'b0) & (adder15_out[37:0] == 38'b0) );
-
-
-   assign quotient_new[0]        = ( quotient_raw[15:01] == 15'b000_0000_0000_0001 ) |  //  1
-                                   ( quotient_raw[15:03] == 13'b000_0000_0000_01   ) |  //  3
-                                   ( quotient_raw[15:05] == 11'b000_0000_0001      ) |  //  5
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:09] ==  7'b000_0001           ) |  //  9
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[1]        = ( quotient_raw[15:02] == 14'b000_0000_0000_001  ) |  //  2
-                                   ( quotient_raw[15:03] == 13'b000_0000_0000_01   ) |  //  3
-                                   ( quotient_raw[15:06] == 10'b000_0000_001       ) |  //  6
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:10] ==  6'b000_001            ) |  // 10
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[2]        = ( quotient_raw[15:04] == 12'b000_0000_0000_1    ) |  //  4
-                                   ( quotient_raw[15:05] == 11'b000_0000_0001      ) |  //  5
-                                   ( quotient_raw[15:06] == 10'b000_0000_001       ) |  //  6
-                                   ( quotient_raw[15:07] ==  9'b000_0000_01        ) |  //  7
-                                   ( quotient_raw[15:12] ==  4'b000_1              ) |  // 12
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-   assign quotient_new[3]        = ( quotient_raw[15:08] ==  8'b000_0000_1         ) |  //  8
-                                   ( quotient_raw[15:09] ==  7'b000_0001           ) |  //  9
-                                   ( quotient_raw[15:10] ==  6'b000_001            ) |  // 10
-                                   ( quotient_raw[15:11] ==  5'b000_01             ) |  // 11
-                                   ( quotient_raw[15:12] ==  4'b000_1              ) |  // 12
-                                   ( quotient_raw[15:13] ==  3'b001                ) |  // 13
-                                   ( quotient_raw[15:14] ==  2'b01                 ) |  // 14
-                                   ( quotient_raw[   15] ==  1'b1                  );   // 15
-
-
-   assign twos_comp_b_sel        =  valid_ff           & ~(dividend_sign_ff ^ divisor_sign_ff);
-   assign twos_comp_q_sel        = ~valid_ff & ~rem_ff &  (dividend_sign_ff ^ divisor_sign_ff) & ~by_zero_case_ff;
-
-   assign twos_comp_in[31:0]     = ( {32{twos_comp_q_sel}} & q_ff[31:0] ) |
-                                   ( {32{twos_comp_b_sel}} & b_ff[31:0] );
-
-   rvtwoscomp #(32) i_twos_comp  (.din(twos_comp_in[31:0]), .dout(twos_comp_out[31:0]));
-
-
-
-   assign valid_out              =  finish_ff & ~cancel;
-
-   assign data_out[31:0]         = ( {32{~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]          ) |
-                                   ( {32{ rem_ff                   }} & r_ff[31:0]          ) |
-                                   ( {32{           twos_comp_q_sel}} & twos_comp_out[31:0] );
-
-
-
-
-   // *** *** *** START : SMALLNUM {{
-
-   assign smallnum_case          = ( (a_ff[31:4]  == 28'b0) & (b_ff[31:4] == 28'b0) & ~by_zero_case & ~rem_ff & valid_ff & ~cancel) |
-                                   ( (a_ff[31:0]  == 32'b0) &                         ~by_zero_case & ~rem_ff & valid_ff & ~cancel);
-
-   assign smallnum[3]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           );
-
-   assign smallnum[2]            = ( a_ff[3] &                                  ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] & ~b_ff[2]                      );
-
-   assign smallnum[1]            = (            a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                                  ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &                       ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &            ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2]                      );
-
-   assign smallnum[0]            = (            a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &             a_ff[0] & ~b_ff[3] &             b_ff[1] &  b_ff[0]) |
-                                   (            a_ff[2] &                       ~b_ff[3] &            ~b_ff[1] & ~b_ff[0]) |
-                                   (                       a_ff[1] &            ~b_ff[3] & ~b_ff[2] &            ~b_ff[0]) |
-                                   (                                  a_ff[0] & ~b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] & ~a_ff[1] &            ~b_ff[3] & ~b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &                                             ~b_ff[2] & ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] & ~a_ff[2] &                       ~b_ff[3] &  b_ff[2] &  b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &            ~b_ff[3] &  b_ff[2] & ~b_ff[1]           ) |
-                                   (~a_ff[3] &  a_ff[2] &             a_ff[0] & ~b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] & ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &             b_ff[0]) |
-                                   (           ~a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                                             ~b_ff[1] & ~b_ff[0]) |
-                                   ( a_ff[3] &             a_ff[1] &                       ~b_ff[2] &            ~b_ff[0]) |
-                                   (~a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] & ~b_ff[3] &  b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &                        b_ff[3] & ~b_ff[2]                      ) |
-                                   ( a_ff[3] &             a_ff[1] &             b_ff[3] & ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &                        a_ff[0] &            ~b_ff[2] & ~b_ff[1]           ) |
-                                   ( a_ff[3] &            ~a_ff[1] &            ~b_ff[3] &  b_ff[2] &  b_ff[1] &  b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &                       ~b_ff[0]) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &             b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] &  a_ff[2] &             a_ff[0] &  b_ff[3] &            ~b_ff[1]           ) |
-                                   ( a_ff[3] & ~a_ff[2] &  a_ff[1] &            ~b_ff[3] &             b_ff[1]           ) |
-                                   ( a_ff[3] &             a_ff[1] &  a_ff[0] &            ~b_ff[2]                      ) |
-                                   ( a_ff[3] &  a_ff[2] &  a_ff[1] &  a_ff[0] &  b_ff[3]                                 );
-
-   // *** *** *** END   : SMALLNUM }}
-
-
-
-
-   // *** *** *** Start : Short Q {{
-
-   assign shortq_dividend[32:0]   = {dividend_sign_ff,a_ff[31:0]};
-
-
-   logic [5:0]  dw_a_enc;
-   logic [5:0]  dw_b_enc;
-   logic [6:0]  dw_shortq_raw;
-
-
-
-   eb1_exu_div_cls i_a_cls  (
-       .operand  ( shortq_dividend[32:0]  ),
-       .cls      ( dw_a_enc[4:0]          ));
-
-   eb1_exu_div_cls i_b_cls  (
-       .operand  ( b_ff[32:0]             ),
-       .cls      ( dw_b_enc[4:0]          ));
-
-   assign dw_a_enc[5]             =  1'b0;
-   assign dw_b_enc[5]             =  1'b0;
-
-
-   assign dw_shortq_raw[6:0]      =  {1'b0,dw_b_enc[5:0]} - {1'b0,dw_a_enc[5:0]} + 7'd1;
-   assign shortq[5:0]             =  dw_shortq_raw[6]  ?  6'd0  :  dw_shortq_raw[5:0];
-
-   assign shortq_enable           =  valid_ff & ~shortq[5] & ~(shortq[4:2] ==  3'b111) & ~cancel;
-
-   assign shortq_decode[4:0]      = ( {5{shortq[4:0] == 5'd31}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd30}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd29}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd28}} & 5'd00) |
-                                    ( {5{shortq[4:0] == 5'd27}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd26}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd25}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd24}} & 5'd04) |
-                                    ( {5{shortq[4:0] == 5'd23}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd22}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd21}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd20}} & 5'd08) |
-                                    ( {5{shortq[4:0] == 5'd19}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd18}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd17}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd16}} & 5'd12) |
-                                    ( {5{shortq[4:0] == 5'd15}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd14}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd13}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd12}} & 5'd16) |
-                                    ( {5{shortq[4:0] == 5'd11}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd10}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd09}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd08}} & 5'd20) |
-                                    ( {5{shortq[4:0] == 5'd07}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd06}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd05}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd04}} & 5'd24) |
-                                    ( {5{shortq[4:0] == 5'd03}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd02}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd01}} & 5'd28) |
-                                    ( {5{shortq[4:0] == 5'd00}} & 5'd28);
-
-
-   assign shortq_shift[4:0]       = ~shortq_enable     ?  5'd0  :  shortq_decode[4:0];
-
-
-   // *** *** *** End   : Short Q }}
-
-
-
-
-
-endmodule // eb1_exu_div_new_4bit_fullshortq
-
-
-
-
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-module eb1_exu_div_cls
-  (
-   input  logic [32:0] operand,
-
-   output logic [4:0]  cls                  // Count leading sign bits - "n" format ignoring [32]
-   );
-
-
-   logic [4:0]   cls_zeros;
-   logic [4:0]   cls_ones;
-
-
-assign cls_zeros[4:0]             = ({5{operand[31]    ==  {           1'b1} }} & 5'd00) |
-                                    ({5{operand[31:30] ==  {{ 1{1'b0}},1'b1} }} & 5'd01) |
-                                    ({5{operand[31:29] ==  {{ 2{1'b0}},1'b1} }} & 5'd02) |
-                                    ({5{operand[31:28] ==  {{ 3{1'b0}},1'b1} }} & 5'd03) |
-                                    ({5{operand[31:27] ==  {{ 4{1'b0}},1'b1} }} & 5'd04) |
-                                    ({5{operand[31:26] ==  {{ 5{1'b0}},1'b1} }} & 5'd05) |
-                                    ({5{operand[31:25] ==  {{ 6{1'b0}},1'b1} }} & 5'd06) |
-                                    ({5{operand[31:24] ==  {{ 7{1'b0}},1'b1} }} & 5'd07) |
-                                    ({5{operand[31:23] ==  {{ 8{1'b0}},1'b1} }} & 5'd08) |
-                                    ({5{operand[31:22] ==  {{ 9{1'b0}},1'b1} }} & 5'd09) |
-                                    ({5{operand[31:21] ==  {{10{1'b0}},1'b1} }} & 5'd10) |
-                                    ({5{operand[31:20] ==  {{11{1'b0}},1'b1} }} & 5'd11) |
-                                    ({5{operand[31:19] ==  {{12{1'b0}},1'b1} }} & 5'd12) |
-                                    ({5{operand[31:18] ==  {{13{1'b0}},1'b1} }} & 5'd13) |
-                                    ({5{operand[31:17] ==  {{14{1'b0}},1'b1} }} & 5'd14) |
-                                    ({5{operand[31:16] ==  {{15{1'b0}},1'b1} }} & 5'd15) |
-                                    ({5{operand[31:15] ==  {{16{1'b0}},1'b1} }} & 5'd16) |
-                                    ({5{operand[31:14] ==  {{17{1'b0}},1'b1} }} & 5'd17) |
-                                    ({5{operand[31:13] ==  {{18{1'b0}},1'b1} }} & 5'd18) |
-                                    ({5{operand[31:12] ==  {{19{1'b0}},1'b1} }} & 5'd19) |
-                                    ({5{operand[31:11] ==  {{20{1'b0}},1'b1} }} & 5'd20) |
-                                    ({5{operand[31:10] ==  {{21{1'b0}},1'b1} }} & 5'd21) |
-                                    ({5{operand[31:09] ==  {{22{1'b0}},1'b1} }} & 5'd22) |
-                                    ({5{operand[31:08] ==  {{23{1'b0}},1'b1} }} & 5'd23) |
-                                    ({5{operand[31:07] ==  {{24{1'b0}},1'b1} }} & 5'd24) |
-                                    ({5{operand[31:06] ==  {{25{1'b0}},1'b1} }} & 5'd25) |
-                                    ({5{operand[31:05] ==  {{26{1'b0}},1'b1} }} & 5'd26) |
-                                    ({5{operand[31:04] ==  {{27{1'b0}},1'b1} }} & 5'd27) |
-                                    ({5{operand[31:03] ==  {{28{1'b0}},1'b1} }} & 5'd28) |
-                                    ({5{operand[31:02] ==  {{29{1'b0}},1'b1} }} & 5'd29) |
-                                    ({5{operand[31:01] ==  {{30{1'b0}},1'b1} }} & 5'd30) |
-                                    ({5{operand[31:00] ==  {{31{1'b0}},1'b1} }} & 5'd31) |
-                                    ({5{operand[31:00] ==  {{32{1'b0}}     } }} & 5'd00);    // Don't care case as it will be handled as special case
-
-
-assign cls_ones[4:0]              = ({5{operand[31:30] ==  {{ 1{1'b1}},1'b0} }} & 5'd00) |
-                                    ({5{operand[31:29] ==  {{ 2{1'b1}},1'b0} }} & 5'd01) |
-                                    ({5{operand[31:28] ==  {{ 3{1'b1}},1'b0} }} & 5'd02) |
-                                    ({5{operand[31:27] ==  {{ 4{1'b1}},1'b0} }} & 5'd03) |
-                                    ({5{operand[31:26] ==  {{ 5{1'b1}},1'b0} }} & 5'd04) |
-                                    ({5{operand[31:25] ==  {{ 6{1'b1}},1'b0} }} & 5'd05) |
-                                    ({5{operand[31:24] ==  {{ 7{1'b1}},1'b0} }} & 5'd06) |
-                                    ({5{operand[31:23] ==  {{ 8{1'b1}},1'b0} }} & 5'd07) |
-                                    ({5{operand[31:22] ==  {{ 9{1'b1}},1'b0} }} & 5'd08) |
-                                    ({5{operand[31:21] ==  {{10{1'b1}},1'b0} }} & 5'd09) |
-                                    ({5{operand[31:20] ==  {{11{1'b1}},1'b0} }} & 5'd10) |
-                                    ({5{operand[31:19] ==  {{12{1'b1}},1'b0} }} & 5'd11) |
-                                    ({5{operand[31:18] ==  {{13{1'b1}},1'b0} }} & 5'd12) |
-                                    ({5{operand[31:17] ==  {{14{1'b1}},1'b0} }} & 5'd13) |
-                                    ({5{operand[31:16] ==  {{15{1'b1}},1'b0} }} & 5'd14) |
-                                    ({5{operand[31:15] ==  {{16{1'b1}},1'b0} }} & 5'd15) |
-                                    ({5{operand[31:14] ==  {{17{1'b1}},1'b0} }} & 5'd16) |
-                                    ({5{operand[31:13] ==  {{18{1'b1}},1'b0} }} & 5'd17) |
-                                    ({5{operand[31:12] ==  {{19{1'b1}},1'b0} }} & 5'd18) |
-                                    ({5{operand[31:11] ==  {{20{1'b1}},1'b0} }} & 5'd19) |
-                                    ({5{operand[31:10] ==  {{21{1'b1}},1'b0} }} & 5'd20) |
-                                    ({5{operand[31:09] ==  {{22{1'b1}},1'b0} }} & 5'd21) |
-                                    ({5{operand[31:08] ==  {{23{1'b1}},1'b0} }} & 5'd22) |
-                                    ({5{operand[31:07] ==  {{24{1'b1}},1'b0} }} & 5'd23) |
-                                    ({5{operand[31:06] ==  {{25{1'b1}},1'b0} }} & 5'd24) |
-                                    ({5{operand[31:05] ==  {{26{1'b1}},1'b0} }} & 5'd25) |
-                                    ({5{operand[31:04] ==  {{27{1'b1}},1'b0} }} & 5'd26) |
-                                    ({5{operand[31:03] ==  {{28{1'b1}},1'b0} }} & 5'd27) |
-                                    ({5{operand[31:02] ==  {{29{1'b1}},1'b0} }} & 5'd28) |
-                                    ({5{operand[31:01] ==  {{30{1'b1}},1'b0} }} & 5'd29) |
-                                    ({5{operand[31:00] ==  {{31{1'b1}},1'b0} }} & 5'd30) |
-                                    ({5{operand[31:00] ==  {{32{1'b1}}     } }} & 5'd31);
-
-
-assign cls[4:0]                   =  operand[32]  ?  cls_ones[4:0]  :  cls_zeros[4:0];
-
-endmodule // eb1_exu_div_cls
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-module eb1_exu_mul_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic          clk,              // Top level clock
-   input logic          rst_l,            // Reset
-   input logic          scan_mode,        // Scan mode
-
-   input eb1_mul_pkt_t mul_p,            // {Valid, RS1 signed operand, RS2 signed operand, Select low 32-bits of result}
-
-   input logic [31:0]   rs1_in,           // A operand
-   input logic [31:0]   rs2_in,           // B operand
-
-
-   output logic [31:0]  result_x          // Result
-  );
-
-
-   logic                mul_x_enable;
-   logic                bit_x_enable;
-   logic signed [32:0]  rs1_ext_in;
-   logic signed [32:0]  rs2_ext_in;
-   logic        [65:0]  prod_x;
-   logic                low_x;
-
-
-
-   // *** Start - BitManip ***
-
-   logic                bitmanip_sel_d;
-   logic                bitmanip_sel_x;
-   logic        [31:0]  bitmanip_d;
-   logic        [31:0]  bitmanip_x;
-
-
-
-   // ZBE
-   logic                ap_bext;
-   logic                ap_bdep;
-
-   // ZBC
-   logic                ap_clmul;
-   logic                ap_clmulh;
-   logic                ap_clmulr;
-
-   // ZBP
-   logic                ap_grev;
-   logic                ap_gorc;
-   logic                ap_shfl;
-   logic                ap_unshfl;
-
-   // ZBR
-   logic                ap_crc32_b;
-   logic                ap_crc32_h;
-   logic                ap_crc32_w;
-   logic                ap_crc32c_b;
-   logic                ap_crc32c_h;
-   logic                ap_crc32c_w;
-
-   // ZBF
-   logic                ap_bfp;
-
-
-   if (pt.BITMANIP_ZBE == 1)
-     begin
-       assign ap_bext         =  mul_p.bext;
-       assign ap_bdep         =  mul_p.bdep;
-     end
-   else
-     begin
-       assign ap_bext         =  1'b0;
-       assign ap_bdep         =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBC == 1)
-     begin
-       assign ap_clmul        =  mul_p.clmul;
-       assign ap_clmulh       =  mul_p.clmulh;
-       assign ap_clmulr       =  mul_p.clmulr;
-     end
-   else
-     begin
-       assign ap_clmul        =  1'b0;
-       assign ap_clmulh       =  1'b0;
-       assign ap_clmulr       =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBP == 1)
-     begin
-       assign ap_grev         =  mul_p.grev;
-       assign ap_gorc         =  mul_p.gorc;
-       assign ap_shfl         =  mul_p.shfl;
-       assign ap_unshfl       =  mul_p.unshfl;
-     end
-   else
-     begin
-       assign ap_grev         =  1'b0;
-       assign ap_gorc         =  1'b0;
-       assign ap_shfl         =  1'b0;
-       assign ap_unshfl       =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBR == 1)
-     begin
-       assign ap_crc32_b      =  mul_p.crc32_b;
-       assign ap_crc32_h      =  mul_p.crc32_h;
-       assign ap_crc32_w      =  mul_p.crc32_w;
-       assign ap_crc32c_b     =  mul_p.crc32c_b;
-       assign ap_crc32c_h     =  mul_p.crc32c_h;
-       assign ap_crc32c_w     =  mul_p.crc32c_w;
-     end
-   else
-     begin
-       assign ap_crc32_b      =  1'b0;
-       assign ap_crc32_h      =  1'b0;
-       assign ap_crc32_w      =  1'b0;
-       assign ap_crc32c_b     =  1'b0;
-       assign ap_crc32c_h     =  1'b0;
-       assign ap_crc32c_w     =  1'b0;
-     end
-
-   if (pt.BITMANIP_ZBF == 1)
-     begin
-       assign ap_bfp          =  mul_p.bfp;
-     end
-   else
-     begin
-       assign ap_bfp          =  1'b0;
-     end
-
-
-   // *** End   - BitManip ***
-
-
-
-   assign mul_x_enable           =  mul_p.valid;
-   assign bit_x_enable           =  mul_p.valid;
-
-   assign rs1_ext_in[32]         =  mul_p.rs1_sign & rs1_in[31];
-   assign rs2_ext_in[32]         =  mul_p.rs2_sign & rs2_in[31];
-
-   assign rs1_ext_in[31:0]       =  rs1_in[31:0];
-   assign rs2_ext_in[31:0]       =  rs2_in[31:0];
-
-
-
-   // --------------------------- Multiply       ----------------------------------
-
-
-   logic signed [32:0]  rs1_x;
-   logic signed [32:0]  rs2_x;
-
-   rvdffe #(34) i_a_x_ff         (.*, .clk(clk),  .din({mul_p.low,rs1_ext_in[32:0]}),        .dout({low_x,rs1_x[32:0]}),                 .en(mul_x_enable));
-   rvdffe #(33) i_b_x_ff         (.*, .clk(clk),  .din(           rs2_ext_in[32:0] ),        .dout(       rs2_x[32:0] ),                 .en(mul_x_enable));
-
-
-   assign prod_x[65:0]           =  rs1_x  *  rs2_x;
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  BEXT, BDEP   * * * * * * * * * * * * * * * * * *
-
-
-   // *** BEXT == "gather"  ***
-
-   logic        [31:0]    bext_d;
-   logic                  bext_test_bit_d;
-   integer                bext_i, bext_j;
-
-
-   always_comb
-     begin
-
-       bext_j                    =      0;
-       bext_test_bit_d           =   1'b0;
-       bext_d[31:0]              =  32'b0;
-
-       for (bext_i=0; bext_i<32; bext_i++)
-         begin
-             bext_test_bit_d     =  rs2_in[bext_i];
-             if (bext_test_bit_d)
-               begin
-                  bext_d[bext_j] =  rs1_in[bext_i];
-                  bext_j         =  bext_j + 1;
-               end  // IF  bext_test_bit
-         end        // FOR bext_i
-     end            // ALWAYS_COMB
-
-
-
-   // *** BDEP == "scatter" ***
-
-   logic        [31:0]    bdep_d;
-   logic                  bdep_test_bit_d;
-   integer                bdep_i, bdep_j;
-
-
-   always_comb
-     begin
-
-       bdep_j                    =      0;
-       bdep_test_bit_d           =   1'b0;
-       bdep_d[31:0]              =  32'b0;
-
-       for (bdep_i=0; bdep_i<32; bdep_i++)
-         begin
-             bdep_test_bit_d     =  rs2_in[bdep_i];
-             if (bdep_test_bit_d)
-               begin
-                  bdep_d[bdep_i] =  rs1_in[bdep_j];
-                  bdep_j         =  bdep_j + 1;
-               end  // IF  bdep_test_bit
-         end        // FOR bdep_i
-     end            // ALWAYS_COMB
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CLMUL, CLMULH, CLMULR  * * * * * * * * * * * * *
-
-   logic        [62:0]    clmul_raw_d;
-
-
-   assign clmul_raw_d[62:0]      = ( {63{rs2_in[00]}} & {31'b0,rs1_in[31:0]      } ) ^
-                                   ( {63{rs2_in[01]}} & {30'b0,rs1_in[31:0], 1'b0} ) ^
-                                   ( {63{rs2_in[02]}} & {29'b0,rs1_in[31:0], 2'b0} ) ^
-                                   ( {63{rs2_in[03]}} & {28'b0,rs1_in[31:0], 3'b0} ) ^
-                                   ( {63{rs2_in[04]}} & {27'b0,rs1_in[31:0], 4'b0} ) ^
-                                   ( {63{rs2_in[05]}} & {26'b0,rs1_in[31:0], 5'b0} ) ^
-                                   ( {63{rs2_in[06]}} & {25'b0,rs1_in[31:0], 6'b0} ) ^
-                                   ( {63{rs2_in[07]}} & {24'b0,rs1_in[31:0], 7'b0} ) ^
-                                   ( {63{rs2_in[08]}} & {23'b0,rs1_in[31:0], 8'b0} ) ^
-                                   ( {63{rs2_in[09]}} & {22'b0,rs1_in[31:0], 9'b0} ) ^
-                                   ( {63{rs2_in[10]}} & {21'b0,rs1_in[31:0],10'b0} ) ^
-                                   ( {63{rs2_in[11]}} & {20'b0,rs1_in[31:0],11'b0} ) ^
-                                   ( {63{rs2_in[12]}} & {19'b0,rs1_in[31:0],12'b0} ) ^
-                                   ( {63{rs2_in[13]}} & {18'b0,rs1_in[31:0],13'b0} ) ^
-                                   ( {63{rs2_in[14]}} & {17'b0,rs1_in[31:0],14'b0} ) ^
-                                   ( {63{rs2_in[15]}} & {16'b0,rs1_in[31:0],15'b0} ) ^
-                                   ( {63{rs2_in[16]}} & {15'b0,rs1_in[31:0],16'b0} ) ^
-                                   ( {63{rs2_in[17]}} & {14'b0,rs1_in[31:0],17'b0} ) ^
-                                   ( {63{rs2_in[18]}} & {13'b0,rs1_in[31:0],18'b0} ) ^
-                                   ( {63{rs2_in[19]}} & {12'b0,rs1_in[31:0],19'b0} ) ^
-                                   ( {63{rs2_in[20]}} & {11'b0,rs1_in[31:0],20'b0} ) ^
-                                   ( {63{rs2_in[21]}} & {10'b0,rs1_in[31:0],21'b0} ) ^
-                                   ( {63{rs2_in[22]}} & { 9'b0,rs1_in[31:0],22'b0} ) ^
-                                   ( {63{rs2_in[23]}} & { 8'b0,rs1_in[31:0],23'b0} ) ^
-                                   ( {63{rs2_in[24]}} & { 7'b0,rs1_in[31:0],24'b0} ) ^
-                                   ( {63{rs2_in[25]}} & { 6'b0,rs1_in[31:0],25'b0} ) ^
-                                   ( {63{rs2_in[26]}} & { 5'b0,rs1_in[31:0],26'b0} ) ^
-                                   ( {63{rs2_in[27]}} & { 4'b0,rs1_in[31:0],27'b0} ) ^
-                                   ( {63{rs2_in[28]}} & { 3'b0,rs1_in[31:0],28'b0} ) ^
-                                   ( {63{rs2_in[29]}} & { 2'b0,rs1_in[31:0],29'b0} ) ^
-                                   ( {63{rs2_in[30]}} & { 1'b0,rs1_in[31:0],30'b0} ) ^
-                                   ( {63{rs2_in[31]}} & {      rs1_in[31:0],31'b0} );
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  GREV         * * * * * * * * * * * * * * * * * *
-
-   // uint32_t grev32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 31;
-   //
-   //     if (shamt &  1)  x = ( (x & 0x55555555) <<  1) | ( (x & 0xAAAAAAAA) >>  1);
-   //     if (shamt &  2)  x = ( (x & 0x33333333) <<  2) | ( (x & 0xCCCCCCCC) >>  2);
-   //     if (shamt &  4)  x = ( (x & 0x0F0F0F0F) <<  4) | ( (x & 0xF0F0F0F0) >>  4);
-   //     if (shamt &  8)  x = ( (x & 0x00FF00FF) <<  8) | ( (x & 0xFF00FF00) >>  8);
-   //     if (shamt & 16)  x = ( (x & 0x0000FFFF) << 16) | ( (x & 0xFFFF0000) >> 16);
-   //
-   //     return x;
-   //  }
-
-
-   logic        [31:0]    grev1_d;
-   logic        [31:0]    grev2_d;
-   logic        [31:0]    grev4_d;
-   logic        [31:0]    grev8_d;
-   logic        [31:0]    grev_d;
-
-
-   assign grev1_d[31:0]       = (rs2_in[0])  ?  {rs1_in[30],rs1_in[31],rs1_in[28],rs1_in[29],rs1_in[26],rs1_in[27],rs1_in[24],rs1_in[25],
-                                                 rs1_in[22],rs1_in[23],rs1_in[20],rs1_in[21],rs1_in[18],rs1_in[19],rs1_in[16],rs1_in[17],
-                                                 rs1_in[14],rs1_in[15],rs1_in[12],rs1_in[13],rs1_in[10],rs1_in[11],rs1_in[08],rs1_in[09],
-                                                 rs1_in[06],rs1_in[07],rs1_in[04],rs1_in[05],rs1_in[02],rs1_in[03],rs1_in[00],rs1_in[01]}  :  rs1_in[31:0];
-
-   assign grev2_d[31:0]       = (rs2_in[1])  ?  {grev1_d[29:28],grev1_d[31:30],grev1_d[25:24],grev1_d[27:26],
-                                                 grev1_d[21:20],grev1_d[23:22],grev1_d[17:16],grev1_d[19:18],
-                                                 grev1_d[13:12],grev1_d[15:14],grev1_d[09:08],grev1_d[11:10],
-                                                 grev1_d[05:04],grev1_d[07:06],grev1_d[01:00],grev1_d[03:02]}  :  grev1_d[31:0];
-
-   assign grev4_d[31:0]       = (rs2_in[2])  ?  {grev2_d[27:24],grev2_d[31:28],grev2_d[19:16],grev2_d[23:20],
-                                                 grev2_d[11:08],grev2_d[15:12],grev2_d[03:00],grev2_d[07:04]}  :  grev2_d[31:0];
-
-   assign grev8_d[31:0]       = (rs2_in[3])  ?  {grev4_d[23:16],grev4_d[31:24],grev4_d[07:00],grev4_d[15:08]}  :  grev4_d[31:0];
-
-   assign grev_d[31:0]        = (rs2_in[4])  ?  {grev8_d[15:00],grev8_d[31:16]}  :  grev8_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  GORC         * * * * * * * * * * * * * * * * * *
-
-   // uint32_t gorc32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 31;
-   //
-   //     if (shamt &  1)  x |= ( (x & 0x55555555) <<  1) | ( (x & 0xAAAAAAAA) >>  1);
-   //     if (shamt &  2)  x |= ( (x & 0x33333333) <<  2) | ( (x & 0xCCCCCCCC) >>  2);
-   //     if (shamt &  4)  x |= ( (x & 0x0F0F0F0F) <<  4) | ( (x & 0xF0F0F0F0) >>  4);
-   //     if (shamt &  8)  x |= ( (x & 0x00FF00FF) <<  8) | ( (x & 0xFF00FF00) >>  8);
-   //     if (shamt & 16)  x |= ( (x & 0x0000FFFF) << 16) | ( (x & 0xFFFF0000) >> 16);
-   //
-   //     return x;
-   //  }
-
-
-   logic        [31:0]    gorc1_d;
-   logic        [31:0]    gorc2_d;
-   logic        [31:0]    gorc4_d;
-   logic        [31:0]    gorc8_d;
-   logic        [31:0]    gorc_d;
-
-
-   assign gorc1_d[31:0]       = ( {32{rs2_in[0]}} & {rs1_in[30],rs1_in[31],rs1_in[28],rs1_in[29],rs1_in[26],rs1_in[27],rs1_in[24],rs1_in[25],
-                                                     rs1_in[22],rs1_in[23],rs1_in[20],rs1_in[21],rs1_in[18],rs1_in[19],rs1_in[16],rs1_in[17],
-                                                     rs1_in[14],rs1_in[15],rs1_in[12],rs1_in[13],rs1_in[10],rs1_in[11],rs1_in[08],rs1_in[09],
-                                                     rs1_in[06],rs1_in[07],rs1_in[04],rs1_in[05],rs1_in[02],rs1_in[03],rs1_in[00],rs1_in[01]} ) | rs1_in[31:0];
-
-   assign gorc2_d[31:0]       = ( {32{rs2_in[1]}} & {gorc1_d[29:28],gorc1_d[31:30],gorc1_d[25:24],gorc1_d[27:26],
-                                                     gorc1_d[21:20],gorc1_d[23:22],gorc1_d[17:16],gorc1_d[19:18],
-                                                     gorc1_d[13:12],gorc1_d[15:14],gorc1_d[09:08],gorc1_d[11:10],
-                                                     gorc1_d[05:04],gorc1_d[07:06],gorc1_d[01:00],gorc1_d[03:02]} ) | gorc1_d[31:0];
-
-   assign gorc4_d[31:0]       = ( {32{rs2_in[2]}} & {gorc2_d[27:24],gorc2_d[31:28],gorc2_d[19:16],gorc2_d[23:20],
-                                                     gorc2_d[11:08],gorc2_d[15:12],gorc2_d[03:00],gorc2_d[07:04]} ) | gorc2_d[31:0];
-
-   assign gorc8_d[31:0]       = ( {32{rs2_in[3]}} & {gorc4_d[23:16],gorc4_d[31:24],gorc4_d[07:00],gorc4_d[15:08]} ) | gorc4_d[31:0];
-
-   assign gorc_d[31:0]        = ( {32{rs2_in[4]}} & {gorc8_d[15:00],gorc8_d[31:16]} ) | gorc8_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  SHFL, UNSHLF * * * * * * * * * * * * * * * * * *
-
-   // uint32_t shuffle32_stage (uint32_t src, uint32_t maskL, uint32_t maskR, int N)
-   // {
-   //     uint32_t x  = src & ~(maskL | maskR);
-   //     x          |= ((src << N) & maskL) | ((src >> N) & maskR);
-   //     return x;
-   // }
-   //
-   //
-   //
-   // uint32_t shfl32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 15
-   //
-   //     if (shamt & 8)  x = shuffle32_stage(x, 0x00ff0000, 0x0000ff00, 8);
-   //     if (shamt & 4)  x = shuffle32_stage(x, 0x0f000f00, 0x00f000f0, 4);
-   //     if (shamt & 2)  x = shuffle32_stage(x, 0x30303030, 0xc0c0c0c0, 2);
-   //     if (shamt & 1)  x = shuffle32_stage(x, 0x44444444, 0x22222222, 1);
-   //
-   //     return x;
-   // }
-
-
-   logic        [31:0]    shfl8_d;
-   logic        [31:0]    shfl4_d;
-   logic        [31:0]    shfl2_d;
-   logic        [31:0]    shfl_d;
-
-
-
-   assign shfl8_d[31:0]       = (rs2_in[3])  ?  {rs1_in[31:24],rs1_in[15:08],rs1_in[23:16],rs1_in[07:00]}      :  rs1_in[31:0];
-
-   assign shfl4_d[31:0]       = (rs2_in[2])  ?  {shfl8_d[31:28],shfl8_d[23:20],shfl8_d[27:24],shfl8_d[19:16],
-                                                 shfl8_d[15:12],shfl8_d[07:04],shfl8_d[11:08],shfl8_d[03:00]}  :  shfl8_d[31:0];
-
-   assign shfl2_d[31:0]       = (rs2_in[1])  ?  {shfl4_d[31:30],shfl4_d[27:26],shfl4_d[29:28],shfl4_d[25:24],
-                                                 shfl4_d[23:22],shfl4_d[19:18],shfl4_d[21:20],shfl4_d[17:16],
-                                                 shfl4_d[15:14],shfl4_d[11:10],shfl4_d[13:12],shfl4_d[09:08],
-                                                 shfl4_d[07:06],shfl4_d[03:02],shfl4_d[05:04],shfl4_d[01:00]}  :  shfl4_d[31:0];
-
-   assign shfl_d[31:0]        = (rs2_in[0])  ?  {shfl2_d[31],shfl2_d[29],shfl2_d[30],shfl2_d[28],shfl2_d[27],shfl2_d[25],shfl2_d[26],shfl2_d[24],
-                                                 shfl2_d[23],shfl2_d[21],shfl2_d[22],shfl2_d[20],shfl2_d[19],shfl2_d[17],shfl2_d[18],shfl2_d[16],
-                                                 shfl2_d[15],shfl2_d[13],shfl2_d[14],shfl2_d[12],shfl2_d[11],shfl2_d[09],shfl2_d[10],shfl2_d[08],
-                                                 shfl2_d[07],shfl2_d[05],shfl2_d[06],shfl2_d[04],shfl2_d[03],shfl2_d[01],shfl2_d[02],shfl2_d[00]}  :  shfl2_d[31:0];
-
-
-
-
-   // uint32_t unshfl32(uint32_t rs1, uint32_t rs2)
-   // {
-   //     uint32_t x = rs1;
-   //     int shamt = rs2 & 15
-   //
-   //     if (shamt & 1)  x = shuffle32_stage(x, 0x44444444, 0x22222222, 1);
-   //     if (shamt & 2)  x = shuffle32_stage(x, 0x30303030, 0xc0c0c0c0, 2);
-   //     if (shamt & 4)  x = shuffle32_stage(x, 0x0f000f00, 0x00f000f0, 4);
-   //     if (shamt & 8)  x = shuffle32_stage(x, 0x00ff0000, 0x0000ff00, 8);
-   //
-   //     return x;
-   // }
-
-
-   logic        [31:0]    unshfl1_d;
-   logic        [31:0]    unshfl2_d;
-   logic        [31:0]    unshfl4_d;
-   logic        [31:0]    unshfl_d;
-
-
-   assign unshfl1_d[31:0]     = (rs2_in[0])  ?  {rs1_in[31],rs1_in[29],rs1_in[30],rs1_in[28],rs1_in[27],rs1_in[25],rs1_in[26],rs1_in[24],
-                                                 rs1_in[23],rs1_in[21],rs1_in[22],rs1_in[20],rs1_in[19],rs1_in[17],rs1_in[18],rs1_in[16],
-                                                 rs1_in[15],rs1_in[13],rs1_in[14],rs1_in[12],rs1_in[11],rs1_in[09],rs1_in[10],rs1_in[08],
-                                                 rs1_in[07],rs1_in[05],rs1_in[06],rs1_in[04],rs1_in[03],rs1_in[01],rs1_in[02],rs1_in[00]}  :  rs1_in[31:0];
-
-   assign unshfl2_d[31:0]     = (rs2_in[1])  ?  {unshfl1_d[31:30],unshfl1_d[27:26],unshfl1_d[29:28],unshfl1_d[25:24],
-                                                 unshfl1_d[23:22],unshfl1_d[19:18],unshfl1_d[21:20],unshfl1_d[17:16],
-                                                 unshfl1_d[15:14],unshfl1_d[11:10],unshfl1_d[13:12],unshfl1_d[09:08],
-                                                 unshfl1_d[07:06],unshfl1_d[03:02],unshfl1_d[05:04],unshfl1_d[01:00]}  :  unshfl1_d[31:0];
-
-   assign unshfl4_d[31:0]     = (rs2_in[2])  ?  {unshfl2_d[31:28],unshfl2_d[23:20],unshfl2_d[27:24],unshfl2_d[19:16],
-                                                 unshfl2_d[15:12],unshfl2_d[07:04],unshfl2_d[11:08],unshfl2_d[03:00]}  :  unshfl2_d[31:0];
-
-   assign unshfl_d[31:0]      = (rs2_in[3])  ?  {unshfl4_d[31:24],unshfl4_d[15:08],unshfl4_d[23:16],unshfl4_d[07:00]}  :  unshfl4_d[31:0];
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  CRC32, CRC32c  * * * * * * * * * * * * * * * * *
-
-   // ***  computed from   https: //crccalc.com  ***
-   //
-   // "a" is 8'h61 = 8'b0110_0001    (8'h61 ^ 8'hff = 8'h9e)
-   //
-   // Input must first be XORed with 32'hffff_ffff
-   //
-   //
-   // CRC32
-   //
-   // Input    Output        Input      Output
-   // -----   --------      --------   --------
-   // "a"     e8b7be43      ffffff9e   174841bc
-   // "aa"    078a19d7      ffff9e9e   f875e628
-   // "aaaa"  ad98e545      9e9e9e9e   5267a1ba
-   //
-   //
-   //
-   // CRC32c
-   //
-   // Input    Output        Input      Output
-   // -----   --------      --------   --------
-   // "a"     c1d04330      ffffff9e   3e2fbccf
-   // "aa"    f1f2dac2      ffff9e9e   0e0d253d
-   // "aaaa"  6a52eeb0      9e9e9e9e   95ad114f
-
-
-   logic                  crc32_all;
-   logic        [31:0]    crc32_poly_rev;
-   logic        [31:0]    crc32c_poly_rev;
-   integer                crc32_bi, crc32_hi, crc32_wi, crc32c_bi, crc32c_hi, crc32c_wi;
-   logic        [31:0]    crc32_bd, crc32_hd, crc32_wd, crc32c_bd, crc32c_hd, crc32c_wd;
-
-
-   assign crc32_all              =  ap_crc32_b  | ap_crc32_h  | ap_crc32_w | ap_crc32c_b | ap_crc32c_h | ap_crc32c_w;
-
-   assign crc32_poly_rev[31:0]   =  32'hEDB88320;    // bit reverse of 32'h04C11DB7
-   assign crc32c_poly_rev[31:0]  =  32'h82F63B78;    // bit reverse of 32'h1EDC6F41
-
-
-   always_comb
-     begin
-       crc32_bd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_bi=0; crc32_bi<8; crc32_bi++)
-         begin
-            crc32_bd[31:0] = (crc32_bd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_bd[0]}});
-         end      // FOR    crc32_bi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32_hd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_hi=0; crc32_hi<16; crc32_hi++)
-         begin
-            crc32_hd[31:0] = (crc32_hd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_hd[0]}});
-         end      // FOR    crc32_hi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32_wd[31:0]            =  rs1_in[31:0];
-
-       for (crc32_wi=0; crc32_wi<32; crc32_wi++)
-         begin
-            crc32_wd[31:0] = (crc32_wd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32{crc32_wd[0]}});
-         end      // FOR    crc32_wi
-     end          // ALWAYS_COMB
-
-
-
-
-   always_comb
-     begin
-       crc32c_bd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_bi=0; crc32c_bi<8; crc32c_bi++)
-         begin
-            crc32c_bd[31:0] = (crc32c_bd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_bd[0]}});
-         end      // FOR    crc32c_bi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32c_hd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_hi=0; crc32c_hi<16; crc32c_hi++)
-         begin
-            crc32c_hd[31:0] = (crc32c_hd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_hd[0]}});
-         end      // FOR    crc32c_hi
-     end          // ALWAYS_COMB
-
-
-   always_comb
-     begin
-       crc32c_wd[31:0]           =  rs1_in[31:0];
-
-       for (crc32c_wi=0; crc32c_wi<32; crc32c_wi++)
-         begin
-            crc32c_wd[31:0] = (crc32c_wd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32{crc32c_wd[0]}});
-         end      // FOR    crc32c_wi
-     end          // ALWAYS_COMB
-
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  BFP          * * * * * * * * * * * * * * * * * *
-
-   logic        [4:0]     bfp_len;
-   logic        [4:0]     bfp_off;
-   logic        [31:0]    bfp_len_mask_;
-   logic        [15:0]    bfp_preshift_data;
-   logic        [63:0]    bfp_shift_data;
-   logic        [63:0]    bfp_shift_mask;
-   logic        [31:0]    bfp_result_d;
-
-
-   assign bfp_len[3:0]           =  rs2_in[27:24];
-   assign bfp_len[4]             = (bfp_len[3:0] == 4'b0);   // If LEN field is zero, then LEN=16
-   assign bfp_off[4:0]           =  rs2_in[20:16];
-
-   assign bfp_len_mask_[31:0]    =  32'hffff_ffff  <<  bfp_len[4:0];
-   assign bfp_preshift_data[15:0]=  rs2_in[15:0] & ~bfp_len_mask_[15:0];
-
-   assign bfp_shift_data[63:0]   = {16'b0,bfp_preshift_data[15:0], 16'b0,bfp_preshift_data[15:0]}  <<  bfp_off[4:0];
-   assign bfp_shift_mask[63:0]   = {bfp_len_mask_[31:0],           bfp_len_mask_[31:0]}            <<  bfp_off[4:0];
-
-   assign bfp_result_d[31:0]     = bfp_shift_data[63:32] | (rs1_in[31:0] & bfp_shift_mask[63:32]);
-
-
-
-
-
-   // * * * * * * * * * * * * * * * * * *  BitManip  :  Common logic * * * * * * * * * * * * * * * * * *
-
-
-   assign bitmanip_sel_d         =  ap_bext | ap_bdep | ap_clmul | ap_clmulh | ap_clmulr | ap_grev | ap_gorc | ap_shfl | ap_unshfl | crc32_all | ap_bfp;
-
-   assign bitmanip_d[31:0]       = ( {32{ap_bext}}     &       bext_d[31:0]        ) |
-                                   ( {32{ap_bdep}}     &       bdep_d[31:0]        ) |
-                                   ( {32{ap_clmul}}    &       clmul_raw_d[31:0]   ) |
-                                   ( {32{ap_clmulh}}   & {1'b0,clmul_raw_d[62:32]} ) |
-                                   ( {32{ap_clmulr}}   &       clmul_raw_d[62:31]  ) |
-                                   ( {32{ap_grev}}     &       grev_d[31:0]        ) |
-                                   ( {32{ap_gorc}}     &       gorc_d[31:0]        ) |
-                                   ( {32{ap_shfl}}     &       shfl_d[31:0]        ) |
-                                   ( {32{ap_unshfl}}   &       unshfl_d[31:0]      ) |
-                                   ( {32{ap_crc32_b}}  &       crc32_bd[31:0]      ) |
-                                   ( {32{ap_crc32_h}}  &       crc32_hd[31:0]      ) |
-                                   ( {32{ap_crc32_w}}  &       crc32_wd[31:0]      ) |
-                                   ( {32{ap_crc32c_b}} &       crc32c_bd[31:0]     ) |
-                                   ( {32{ap_crc32c_h}} &       crc32c_hd[31:0]     ) |
-                                   ( {32{ap_crc32c_w}} &       crc32c_wd[31:0]     ) |
-                                   ( {32{ap_bfp}}      &       bfp_result_d[31:0]  );
-
-
-
-   rvdffe #(33) i_bitmanip_ff    (.*, .clk(clk),  .din({bitmanip_sel_d,bitmanip_d[31:0]}),   .dout({bitmanip_sel_x,bitmanip_x[31:0]}),   .en(bit_x_enable));
-
-
-
-
-   assign result_x[31:0]         =  ( {32{~bitmanip_sel_x & ~low_x}} & prod_x[63:32]    ) |
-                                    ( {32{~bitmanip_sel_x &  low_x}} & prod_x[31:0]     ) |
-                                                                       bitmanip_x[31:0];
-
-
-
-endmodule  // eb1_exu_mul_ctl
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-//********************************************************************************
-// Function: Top level file for Icache, Fetch, Branch prediction & Aligner
-// BFF -> F1 -> F2 -> A
-//********************************************************************************
-
-module eb1_ifu
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic free_l2clk,                   // Clock always.                  Through one clock header.  For flops with    second header built in.
-   input logic active_clk,                   // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic clk,                          // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic rst_l,                        // reset, active low
-
-   input logic dec_i0_decode_d,              // Valid instruction at D and not blocked
-
-   input logic exu_flush_final, // flush, includes upper and lower
-   input logic dec_tlu_i0_commit_cmt , // committed i0
-   input logic dec_tlu_flush_err_wb , // flush due to parity error.
-   input logic dec_tlu_flush_noredir_wb, // don't fetch, validated with exu_flush_final
-   input logic [31:1] exu_flush_path_final, // flush fetch address
-
-   input logic [31:0]  dec_tlu_mrac_ff ,// Side_effect , cacheable for each region
-   input logic         dec_tlu_fence_i_wb, // fence.i, invalidate icache, validated with exu_flush_final
-   input logic         dec_tlu_flush_leak_one_wb, // ignore bp for leak one fetches
-
-   input logic                       dec_tlu_bpred_disable,     // disable all branch prediction
-   input logic                       dec_tlu_core_ecc_disable,  // disable ecc checking and flagging
-   input logic                       dec_tlu_force_halt,        // force halt
-
-  //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   output logic                            ifu_axi_bready,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-
-   input  logic                      ifu_bus_clk_en,
-
-   input  logic                      dma_iccm_req,
-   input  logic [31:0]               dma_mem_addr,
-   input  logic [2:0]                dma_mem_sz,
-   input  logic                      dma_mem_write,
-   input  logic [63:0]               dma_mem_wdata,
-   input  logic [2:0]                dma_mem_tag,       //  DMA Buffer entry number
-
-
-   input  logic                      dma_iccm_stall_any,
-   output logic                      iccm_dma_ecc_error,
-   output logic                      iccm_dma_rvalid,
-   output logic [63:0]               iccm_dma_rdata,
-   output logic [2:0]                iccm_dma_rtag,     //   Tag of the DMA req
-   output logic                      iccm_ready,
-
-   output logic       ifu_pmu_instr_aligned,
-   output logic       ifu_pmu_fetch_stall,
-   output logic       ifu_ic_error_start,     // has all of the I$ ecc/parity for data/tag
-
-//   I$ & ITAG Ports
-   output logic [31:1]               ic_rw_addr,         // Read/Write addresss to the Icache.
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_wr_en,           // Icache write enable, when filling the Icache.
-   output logic                      ic_rd_en,           // Icache read  enable.
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0][70:0]               ic_wr_data,         // Data to fill to the Icache. With ECC
-   input  logic [63:0]              ic_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]              ic_debug_rd_data ,        // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]                     ictag_debug_rd_data,// Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,   // Debug wr cache.
-
-   output logic [70:0]               ifu_ic_debug_rd_data,
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    //
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-   output logic [63:0]               ic_premux_data,     // Premux data to be muxed with each way of the Icache.
-   output logic                      ic_sel_premux_data, // Select the premux data.
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_tag_valid,       // Valid bits when accessing the Icache. One valid bit per way. F2 stage
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_rd_hit,          // Compare hits from Icache tags. Per way.  F2 stage
-   input  logic                      ic_tag_perr,        // Icache Tag parity error
-
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]               iccm_rw_addr,       // ICCM read/write address.
-   output logic                      iccm_wren,          // ICCM write enable (through the DMA)
-   output logic                      iccm_rden,          // ICCM read enable.
-   output logic [77:0]               iccm_wr_data,       // ICCM write data.
-   output logic [2:0]                iccm_wr_size,       // ICCM write location within DW.
-
-   input  logic [63:0]               iccm_rd_data,       // Data read from ICCM.
-   input  logic [77:0]               iccm_rd_data_ecc,   // Data + ECC read from ICCM.
-
-   output logic                      ifu_iccm_rd_ecc_single_err, // This fetch has a single ICCM ecc  error.
-
-// Perf counter sigs
-   output logic       ifu_pmu_ic_miss, // ic miss
-   output logic       ifu_pmu_ic_hit, // ic hit
-   output logic       ifu_pmu_bus_error, // iside bus error
-   output logic       ifu_pmu_bus_busy,  // iside bus busy
-   output logic       ifu_pmu_bus_trxn, // iside bus transactions
-
-
-   output logic       ifu_i0_icaf,         // Instruction 0 access fault. From Aligner to Decode
-   output logic [1:0] ifu_i0_icaf_type, // Instruction 0 access fault type
-
-   output logic  ifu_i0_valid,        // Instruction 0 valid. From Aligner to Decode
-   output logic  ifu_i0_icaf_second,  // Instruction 0 has access fault on second 2B of 4B inst
-   output logic  ifu_i0_dbecc,        // Instruction 0 has double bit ecc error
-   output logic  iccm_dma_sb_error,   // Single Bit ECC error from a DMA access
-   output logic[31:0] ifu_i0_instr,   // Instruction 0 . From Aligner to Decode
-   output logic[31:1] ifu_i0_pc,      // Instruction 0 pc. From Aligner to Decode
-   output logic ifu_i0_pc4,           // Instruction 0 is 4 byte. From Aligner to Decode
-
-   output logic ifu_miss_state_idle,   // There is no outstanding miss. Cache miss state is idle.
-
-   output eb1_br_pkt_t i0_brp,           // Instruction 0 branch packet. From Aligner to Decode
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ifu_i0_bp_index, // BP index
-   output logic [pt.BHT_GHR_SIZE-1:0] ifu_i0_bp_fghr, // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0] ifu_i0_bp_btag, // BP tag
-   output logic [$clog2(pt.BTB_SIZE)-1:0]         ifu_i0_fa_index,          // Fully associt btb index
-
-   input eb1_predict_pkt_t  exu_mp_pkt, // mispredict packet
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_mp_eghr, // execute ghr
-   input logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   input logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-   input eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // slot0 update/error pkt
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_i0_br_fghr_r, // fghr to bp
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r, // bp index
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associt btb error index
-
-   input dec_tlu_flush_lower_wb,
-
-   output logic [15:0] ifu_i0_cinst,
-
-
-/// Icache debug
-   input  eb1_cache_debug_pkt_t        dec_tlu_ic_diag_pkt ,
-   output logic                    ifu_ic_debug_rd_data_valid,
-   output logic                                iccm_buf_correct_ecc,
-   output logic                                iccm_correction_state,
-
-   input logic scan_mode
-   );
-
-   localparam TAGWIDTH = 2 ;
-   localparam IDWIDTH  = 2 ;
-
-   logic                   ifu_fb_consume1, ifu_fb_consume2;
-   logic [31:1]            ifc_fetch_addr_f;
-   logic [31:1]            ifc_fetch_addr_bf;
-
-   logic [1:0]   ifu_fetch_val;  // valids on a 2B boundary, left justified [7] implies valid fetch
-   logic [31:1]  ifu_fetch_pc;   // starting pc of fetch
-
-   logic iccm_rd_ecc_single_err, ic_error_start;
-   assign ifu_iccm_rd_ecc_single_err = iccm_rd_ecc_single_err;
-   assign ifu_ic_error_start = ic_error_start;
-
-
-   logic        ic_write_stall;
-   logic        ic_dma_active;
-   logic        ifc_dma_access_ok;
-   logic [1:0]  ic_access_fault_f;
-   logic [1:0]  ic_access_fault_type_f;
-   logic        ifu_ic_mb_empty;
-
-   logic ic_hit_f;
-
-   logic [1:0] ifu_bp_way_f; // way indication; right justified
-   logic       ifu_bp_hit_taken_f; // kill next fetch; taken target found
-   logic [31:1] ifu_bp_btb_target_f; //  predicted target PC
-   logic        ifu_bp_inst_mask_f; // tell ic which valids to kill because of a taken branch; right justified
-   logic [1:0]  ifu_bp_hist1_f; // history counters for all 4 potential branches; right justified
-   logic [1:0]  ifu_bp_hist0_f; // history counters for all 4 potential branches; right justified
-   logic [11:0] ifu_bp_poffset_f; // predicted target
-   logic [1:0]  ifu_bp_ret_f; // predicted ret ; right justified
-   logic [1:0]  ifu_bp_pc4_f; // pc4 indication; right justified
-   logic [1:0]  ifu_bp_valid_f; // branch valid, right justified
-   logic [pt.BHT_GHR_SIZE-1:0] ifu_bp_fghr_f;
-   logic [1:0] [$clog2(pt.BTB_SIZE)-1:0] ifu_bp_fa_index_f;
-
-
-   // fetch control
-   eb1_ifu_ifc_ctl #(.pt(pt)) ifc (.*
-                    );
-
-   // branch predictor
-   if (pt.BTB_ENABLE==1) begin  : bpred
-      eb1_ifu_bp_ctl #(.pt(pt)) bp (.*);
-   end
-   else begin : bpred
-      assign ifu_bp_hit_taken_f = '0;
-      // verif wires
-      logic btb_wr_en_way0, btb_wr_en_way1,dec_tlu_error_wb;
-      logic [16+pt.BTB_BTAG_SIZE:0] btb_wr_data;
-      assign btb_wr_en_way0 = '0;
-      assign btb_wr_en_way1 = '0;
-      assign btb_wr_data = '0;
-      assign dec_tlu_error_wb ='0;
-      assign ifu_bp_inst_mask_f = 1'b1;
-   end
-
-
-   logic [1:0]   ic_fetch_val_f;
-   logic [31:0] ic_data_f;
-   logic [31:0] ifu_fetch_data_f;
-   logic ifc_fetch_req_f;
-   logic ifc_fetch_req_f_raw;
-   logic [1:0] iccm_rd_ecc_double_err;  // This fetch has an iccm double error.
-
-   logic ifu_async_error_start;
-
-
-   assign ifu_fetch_data_f[31:0] = ic_data_f[31:0];
-   assign ifu_fetch_val[1:0] = ic_fetch_val_f[1:0];
-   assign ifu_fetch_pc[31:1] = ifc_fetch_addr_f[31:1];
-
- logic                       ifc_fetch_uncacheable_bf;      // The fetch request is uncacheable space. BF stage
- logic                       ifc_fetch_req_bf;              // Fetch request. Comes with the address.  BF stage
- logic                       ifc_fetch_req_bf_raw;          // Fetch request without some qualifications. Used for clock-gating. BF stage
- logic                       ifc_iccm_access_bf;            // This request is to the ICCM. Do not generate misses to the bus.
- logic                       ifc_region_acc_fault_bf;       // Access fault. in ICCM region but offset is outside defined ICCM.
-
-   // aligner
-
-   eb1_ifu_aln_ctl #(.pt(pt)) aln (
-                                    .*
-                                    );
-
-
-   // icache
-   eb1_ifu_mem_ctl #(.pt(pt)) mem_ctl
-     (.*,
-      .ic_data_f(ic_data_f[31:0])
-      );
-
-
-
-   // Performance debug info
-   //
-   //
-/*`ifdef DUMP_BTB_ON
-   logic              exu_mp_valid; // conditional branch mispredict
-   logic exu_mp_way; // conditional branch mispredict
-   logic exu_mp_ataken; // direction is actual taken
-   logic exu_mp_boffset; // branch offsett
-   logic exu_mp_pc4; // branch is a 4B inst
-   logic exu_mp_call; // branch is a call inst
-   logic exu_mp_ret; // branch is a ret inst
-   logic exu_mp_ja; // branch is a jump always
-   logic [1:0] exu_mp_hist; // new history
-   logic [11:0] exu_mp_tgt; // target offset
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_addr; // BTB/BHT address
-
-   assign exu_mp_valid = exu_mp_pkt.misp; // conditional branch mispredict
-   assign exu_mp_ataken = exu_mp_pkt.ataken;  // direction is actual taken
-   assign exu_mp_boffset = exu_mp_pkt.boffset;  // branch offset
-   assign exu_mp_pc4 = exu_mp_pkt.pc4;  // branch is a 4B inst
-   assign exu_mp_call = exu_mp_pkt.pcall;  // branch is a call inst
-   assign exu_mp_ret = exu_mp_pkt.pret;  // branch is a ret inst
-   assign exu_mp_ja = exu_mp_pkt.pja;  // branch is a jump always
-   assign exu_mp_way = exu_mp_pkt.way;  // branch is a jump always
-   assign exu_mp_hist[1:0] = exu_mp_pkt.hist[1:0];  // new history
-   assign exu_mp_tgt[11:0]  = exu_mp_pkt.toffset[11:0] ;  // target offset
-   assign exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  = exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ;  // BTB/BHT address
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] btb_rd_addr_f;
- `define DEC `CPU_TOP.dec
- `define EXU `CPU_TOP.exu
-   eb1_btb_addr_hash f2hash(.pc(ifc_fetch_addr_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-   logic [31:0] mppc_ns, mppc;
-   logic        exu_flush_final_d1;
-   assign mppc_ns[31:1] = `EXU.i0_flush_upper_x ? `EXU.exu_i0_pc_x : `EXU.dec_i0_pc_d;
-   assign mppc_ns[0] = 1'b0;
-   rvdff #(33)  junk_ff (.*, .clk(active_clk), .din({mppc_ns[31:0], exu_flush_final}), .dout({mppc[31:0], exu_flush_final_d1}));
-   logic  tmp_bnk;
-   assign tmp_bnk = bpred.bp.btb_sel_f[1];
-
-   always @(negedge clk) begin
-      if(`DEC.tlu.mcyclel[31:0] == 32'h0000_0010) begin
-         $display("BTB_CONFIG: %d",pt.BTB_SIZE);
-         `ifndef BP_NOGSHARE
-         $display("BHT_CONFIG: %d gshare: 1",pt.BHT_SIZE);
-         `else
-         $display("BHT_CONFIG: %d gshare: 0",pt.BHT_SIZE);
-         `endif
-         $display("RS_CONFIG: %d", pt.RET_STACK_SIZE);
-      end
-       if(exu_flush_final_d1 & ~(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error) & (exu_mp_pkt.misp | exu_mp_pkt.ataken))
-         $display("%7d BTB_MP  : index: %0h bank: %0h call: %b ret: %b ataken: %b hist: %h valid: %b tag: %h targ: %h eghr: %b pred: %b ghr_index: %h brpc: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha, exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO], 1'b0, exu_mp_call, exu_mp_ret, exu_mp_ataken, exu_mp_hist[1:0], exu_mp_valid, exu_mp_btag[pt.BTB_BTAG_SIZE-1:0], {exu_flush_path_final[31:1], 1'b0}, exu_mp_eghr[pt.BHT_GHR_SIZE-1:0], exu_mp_valid, bpred.bp.bht_wr_addr0, mppc[31:0], exu_mp_pkt.way);
-
-     for(int i = 0; i < 8; i++) begin
-      if(ifu_bp_valid_f[i] & ifc_fetch_req_f)
-        $display("%7d BTB_HIT : index: %0h bank: %0h call: %b ret: %b taken: %b strength: %b tag: %h targ: %0h ghr: %4b ghr_index: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],bpred.bp.btb_sel_f[1], bpred.bp.btb_rd_call_f, bpred.bp.btb_rd_ret_f, ifu_bp_hist1_f[tmp_bnk], ifu_bp_hist0_f[tmp_bnk], bpred.bp.fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0], {ifu_bp_btb_target_f[31:1], 1'b0}, bpred.bp.fghr[pt.BHT_GHR_SIZE-1:0], bpred.bp.bht_rd_addr_f, ifu_bp_way_f[tmp_bnk]);
-     end
-      if(dec_tlu_br0_r_pkt.valid & ~(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error))
-        $display("%7d BTB_UPD0: ghr_index: %0h bank: %0h hist: %h  way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,bpred.bp.br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO],{dec_tlu_br0_r_pkt.middle}, dec_tlu_br0_r_pkt.hist, dec_tlu_br0_r_pkt.way);
-
-      if(dec_tlu_br0_r_pkt.br_error | dec_tlu_br0_r_pkt.br_start_error)
-        $display("%7d BTB_ERR0: index: %0h bank: %0h start: %b rfpc: %h way: %h", `DEC.tlu.mcyclel[31:0]+32'ha,exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO],1'b0, dec_tlu_br0_r_pkt.br_start_error, {exu_flush_path_final[31:1], 1'b0}, dec_tlu_br0_r_pkt.way);
-   end // always @ (negedge clk)
-      function [1:0] encode4_2;
-      input [3:0] in;
-
-      encode4_2[1] = in[3] | in[2];
-      encode4_2[0] = in[3] | in[1];
-
-   endfunction
-`endif
-*/
-endmodule // eb1_ifu
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Instruction aligner
-//********************************************************************************
-module eb1_ifu_aln_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-
-   input logic                                    scan_mode,                // Flop scan mode control
-   input logic                                    rst_l,                    // reset, active low
-   input logic                                    clk,                      // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                                    active_clk,               // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-
-   input logic                                    ifu_async_error_start,    // ecc/parity related errors with current fetch - not sent down the pipe
-
-   input logic [1:0]                              iccm_rd_ecc_double_err,   // This fetch has a double ICCM ecc  error.
-
-   input logic [1:0]                              ic_access_fault_f,        // Instruction access fault for the current fetch.
-   input logic [1:0]                              ic_access_fault_type_f,   // Instruction access fault types
-
-   input logic                                    exu_flush_final,          // Flush from the pipeline.
-
-   input logic                                    dec_i0_decode_d,          // Valid instruction at D-stage and not blocked
-
-   input logic [31:0]                             ifu_fetch_data_f,         // fetch data in memory format - not right justified
-
-   input logic [1:0]                              ifu_fetch_val,            // valids on a 2B boundary, right justified
-   input logic [31:1]                             ifu_fetch_pc,             // starting pc of fetch
-
-
-
-   output logic                                   ifu_i0_valid,             // Instruction 0 is valid
-   output logic                                   ifu_i0_icaf,              // Instruction 0 has access fault
-   output logic [1:0]                             ifu_i0_icaf_type,         // Instruction 0 access fault type
-   output logic                                   ifu_i0_icaf_second,       // Instruction 0 has access fault on second 2B of 4B inst
-
-   output logic                                   ifu_i0_dbecc,             // Instruction 0 has double bit ecc error
-   output logic [31:0]                            ifu_i0_instr,             // Instruction 0
-   output logic [31:1]                            ifu_i0_pc,                // Instruction 0 PC
-   output logic                                   ifu_i0_pc4,
-
-   output logic                                   ifu_fb_consume1,          // Consumed one buffer. To fetch control fetch for buffer mass balance
-   output logic                                   ifu_fb_consume2,          // Consumed two buffers.To fetch control fetch for buffer mass balance
-
-
-   input logic [pt.BHT_GHR_SIZE-1:0]              ifu_bp_fghr_f,            // fetch GHR
-   input logic [31:1]                             ifu_bp_btb_target_f,      // predicted RET target
-   input logic [11:0]                             ifu_bp_poffset_f,         // predicted target offset
-   input logic [1:0] [$clog2(pt.BTB_SIZE)-1:0]    ifu_bp_fa_index_f,        // predicted branch index (fully associative option)
-
-   input logic [1:0]                              ifu_bp_hist0_f,           // history counters for all 4 potential branches, bit 1, right justified
-   input logic [1:0]                              ifu_bp_hist1_f,           // history counters for all 4 potential branches, bit 1, right justified
-   input logic [1:0]                              ifu_bp_pc4_f,             // pc4 indication, right justified
-   input logic [1:0]                              ifu_bp_way_f,             // way indication, right justified
-   input logic [1:0]                              ifu_bp_valid_f,           // branch valid, right justified
-   input logic [1:0]                              ifu_bp_ret_f,             // predicted ret indication, right justified
-
-
-   output eb1_br_pkt_t                           i0_brp,                   // Branch packet for I0.
-   output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]   ifu_i0_bp_index,          // BP index
-   output logic [pt.BHT_GHR_SIZE-1:0]             ifu_i0_bp_fghr,           // BP FGHR
-   output logic [pt.BTB_BTAG_SIZE-1:0]            ifu_i0_bp_btag,           // BP tag
-
-   output logic [$clog2(pt.BTB_SIZE)-1:0]         ifu_i0_fa_index,          // Fully associt btb index
-
-   output logic                                   ifu_pmu_instr_aligned,    // number of inst aligned this cycle
-
-   output logic [15:0]                            ifu_i0_cinst              // 16b compress inst for i0
-   );
-
-
-
-   logic                                          ifvalid;
-   logic                                          shift_f1_f0, shift_f2_f0, shift_f2_f1;
-   logic                                          fetch_to_f0, fetch_to_f1, fetch_to_f2;
-
-   logic [1:0]                                    f2val_in, f2val;
-   logic [1:0]                                    f1val_in, f1val;
-   logic [1:0]                                    f0val_in, f0val;
-   logic [1:0]                                    sf1val, sf0val;
-
-   logic [31:0]                                   aligndata;
-   logic                                          first4B, first2B;
-
-   logic [31:0]                                   uncompress0;
-   logic                                          i0_shift;
-   logic                                          shift_2B, shift_4B;
-   logic                                          f1_shift_2B;
-   logic                                          f2_valid, sf1_valid, sf0_valid;
-
-   logic [31:0]                                   ifirst;
-   logic [1:0]                                    alignval;
-   logic [31:1]                                   firstpc, secondpc;
-
-   logic [11:0]                                   f1poffset;
-   logic [11:0]                                   f0poffset;
-   logic [pt.BHT_GHR_SIZE-1:0]                    f1fghr;
-   logic [pt.BHT_GHR_SIZE-1:0]                    f0fghr;
-   logic [1:0]                                    f1hist1;
-   logic [1:0]                                    f0hist1;
-   logic [1:0]                                    f1hist0;
-   logic [1:0]                                    f0hist0;
-
-   logic [1:0][$clog2(pt.BTB_SIZE)-1:0]           f0index, f1index, alignindex;
-
-   logic [1:0]                                    f1ictype;
-   logic [1:0]                                    f0ictype;
-
-   logic [1:0]                                    f1pc4;
-   logic [1:0]                                    f0pc4;
-
-   logic [1:0]                                    f1ret;
-   logic [1:0]                                    f0ret;
-   logic [1:0]                                    f1way;
-   logic [1:0]                                    f0way;
-
-   logic [1:0]                                    f1brend;
-   logic [1:0]                                    f0brend;
-
-   logic [1:0]                                    alignbrend;
-   logic [1:0]                                    alignpc4;
-
-   logic [1:0]                                    alignret;
-   logic [1:0]                                    alignway;
-   logic [1:0]                                    alignhist1;
-   logic [1:0]                                    alignhist0;
-   logic [1:1]                                    alignfromf1;
-   logic                                          i0_ends_f1;
-   logic                                          i0_br_start_error;
-
-   logic [31:1]                                   f1prett;
-   logic [31:1]                                   f0prett;
-   logic [1:0]                                    f1dbecc;
-   logic [1:0]                                    f0dbecc;
-   logic [1:0]                                    f1icaf;
-   logic [1:0]                                    f0icaf;
-
-   logic [1:0]                                    aligndbecc;
-   logic [1:0]                                    alignicaf;
-   logic                                          i0_brp_pc4;
-
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]          firstpc_hash, secondpc_hash;
-
-   logic                                          first_legal;
-
-   logic [1:0]                                    wrptr, wrptr_in;
-   logic [1:0]                                    rdptr, rdptr_in;
-   logic [2:0]                                    qwen;
-   logic [31:0]                                   q2,q1,q0;
-   logic                                          q2off_in, q2off;
-   logic                                          q1off_in, q1off;
-   logic                                          q0off_in, q0off;
-   logic                                          f0_shift_2B;
-
-   logic [31:0]                                   q0eff;
-   logic [31:0]                                   q0final;
-   logic                                          q0ptr;
-   logic [1:0]                                    q0sel;
-
-   logic [31:0]                                   q1eff;
-   logic [15:0]                                   q1final;
-   logic                                          q1ptr;
-   logic [1:0]                                    q1sel;
-
-   logic [2:0]                                    qren;
-
-   logic                                          consume_fb1, consume_fb0;
-   logic [1:0]                                    icaf_eff;
-
-   localparam                                     BRDATA_SIZE  = pt.BTB_ENABLE ? 16+($clog2(pt.BTB_SIZE)*2*pt.BTB_FULLYA) : 2;
-   localparam                                     BRDATA_WIDTH = pt.BTB_ENABLE ? 8+($clog2(pt.BTB_SIZE)*pt.BTB_FULLYA) : 1;
-   logic [BRDATA_SIZE-1:0]                        brdata_in, brdata2, brdata1, brdata0;
-   logic [BRDATA_SIZE-1:0]                        brdata1eff, brdata0eff;
-   logic [BRDATA_SIZE-1:0]                        brdata1final, brdata0final;
-
-   localparam                                     MHI   = 1+(pt.BTB_ENABLE * (43+pt.BHT_GHR_SIZE));
-   localparam                                     MSIZE = 2+(pt.BTB_ENABLE * (43+pt.BHT_GHR_SIZE));
-
-   logic [MHI:0]                                  misc_data_in, misc2, misc1, misc0;
-   logic [MHI:0]                                  misc1eff, misc0eff;
-
-   logic [pt.BTB_BTAG_SIZE-1:0]                  firstbrtag_hash, secondbrtag_hash;
-
-   logic                                         error_stall_in, error_stall;
-
-   assign error_stall_in = (error_stall | ifu_async_error_start) & ~exu_flush_final;
-
-   rvdff #(.WIDTH(7))  bundle1ff (.*,
-                                  .clk(active_clk),
-                                  .din ({wrptr_in[1:0],rdptr_in[1:0],q2off_in,q1off_in,q0off_in}),
-                                  .dout({wrptr[1:0],   rdptr[1:0],   q2off,   q1off,   q0off})
-                                  );
-
-   rvdffie #(.WIDTH(7),.OVERRIDE(1))  bundle2ff (.*,
-                                                 .din ({error_stall_in,f2val_in[1:0],f1val_in[1:0],f0val_in[1:0]}),
-                                                 .dout({error_stall,   f2val[1:0],   f1val[1:0],   f0val[1:0]   })
-                                                 );
-
-if(pt.BTB_ENABLE==1) begin
-   rvdffe #(BRDATA_SIZE)  brdata2ff   (.*, .clk(clk), .en(qwen[2]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata2[BRDATA_SIZE-1:0]));
-   rvdffe #(BRDATA_SIZE)  brdata1ff   (.*, .clk(clk), .en(qwen[1]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata1[BRDATA_SIZE-1:0]));
-   rvdffe #(BRDATA_SIZE)  brdata0ff   (.*, .clk(clk), .en(qwen[0]),        .din(brdata_in[BRDATA_SIZE-1:0]), .dout(brdata0[BRDATA_SIZE-1:0]));
-   rvdffe #(MSIZE)        misc2ff     (.*, .clk(clk), .en(qwen[2]),        .din(misc_data_in[MHI:0]),        .dout(misc2[MHI:0]));
-   rvdffe #(MSIZE)        misc1ff     (.*, .clk(clk), .en(qwen[1]),        .din(misc_data_in[MHI:0]),        .dout(misc1[MHI:0]));
-   rvdffe #(MSIZE)        misc0ff     (.*, .clk(clk), .en(qwen[0]),        .din(misc_data_in[MHI:0]),        .dout(misc0[MHI:0]));
-end
-else begin
-
-   rvdffie #((MSIZE*3)+(BRDATA_SIZE*3))    miscff      (.*,
-                                                        .din({qwen[2] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc2[MHI:0], brdata2[BRDATA_SIZE-1:0]},
-                                                              qwen[1] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc1[MHI:0], brdata1[BRDATA_SIZE-1:0]},
-                                                              qwen[0] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE-1:0]} : {misc0[MHI:0], brdata0[BRDATA_SIZE-1:0]}}),
-                                                        .dout({misc2[MHI:0],misc1[MHI:0],misc0[MHI:0],
-                                                               brdata2[BRDATA_SIZE-1:0], brdata1[BRDATA_SIZE-1:0], brdata0[BRDATA_SIZE-1:0]})
-                                                        );
-end
-
-  logic [31:1] q2pc, q1pc, q0pc;
-
-   rvdffe #(31)           q2pcff        (.*, .clk(clk), .en(qwen[2]),        .din(ifu_fetch_pc[31:1]),     .dout(q2pc[31:1]));
-   rvdffe #(31)           q1pcff        (.*, .clk(clk), .en(qwen[1]),        .din(ifu_fetch_pc[31:1]),     .dout(q1pc[31:1]));
-   rvdffe #(31)           q0pcff        (.*, .clk(clk), .en(qwen[0]),        .din(ifu_fetch_pc[31:1]),     .dout(q0pc[31:1]));
-
-   rvdffe #(32)           q2ff        (.*, .clk(clk), .en(qwen[2]),        .din(ifu_fetch_data_f[31:0]),     .dout(q2[31:0]));
-   rvdffe #(32)           q1ff        (.*, .clk(clk), .en(qwen[1]),        .din(ifu_fetch_data_f[31:0]),     .dout(q1[31:0]));
-   rvdffe #(32)           q0ff        (.*, .clk(clk), .en(qwen[0]),        .din(ifu_fetch_data_f[31:0]),     .dout(q0[31:0]));
-
-
-   // new queue control logic
-
-   assign qren[2:0]          = {  rdptr[1:0] == 2'b10,
-                                  rdptr[1:0] == 2'b01,
-                                  rdptr[1:0] == 2'b00 };
-
-   assign qwen[2:0]          = { (wrptr[1:0] == 2'b10) & ifvalid,
-                                 (wrptr[1:0] == 2'b01) & ifvalid,
-                                 (wrptr[1:0] == 2'b00) & ifvalid };
-
-
-   assign rdptr_in[1:0]      = ({2{ qren[0]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{ qren[1]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qren[2]         &  ifu_fb_consume1 & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{ qren[0]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qren[1]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{ qren[2]         &  ifu_fb_consume2 & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{~ifu_fb_consume1 & ~ifu_fb_consume2 & ~exu_flush_final}} & rdptr[1:0]);
-
-   assign wrptr_in[1:0]      = ({2{ qwen[0] & ~exu_flush_final}} & 2'b01     ) |
-                               ({2{ qwen[1] & ~exu_flush_final}} & 2'b10     ) |
-                               ({2{ qwen[2] & ~exu_flush_final}} & 2'b00     ) |
-                               ({2{~ifvalid & ~exu_flush_final}} & wrptr[1:0]);
-
-
-
-   assign q2off_in          = ( ~qwen[2] & (rdptr[1:0]==2'd2)  &  (q2off | f0_shift_2B) ) |
-                              ( ~qwen[2] & (rdptr[1:0]==2'd1)  &  (q2off | f1_shift_2B) ) |
-                              ( ~qwen[2] & (rdptr[1:0]==2'd0)  &   q2off                );
-
-   assign q1off_in          = ( ~qwen[1] & (rdptr[1:0]==2'd1)  &  (q1off | f0_shift_2B) ) |
-                              ( ~qwen[1] & (rdptr[1:0]==2'd0)  &  (q1off | f1_shift_2B) ) |
-                              ( ~qwen[1] & (rdptr[1:0]==2'd2)  &   q1off                );
-
-   assign q0off_in          = ( ~qwen[0] & (rdptr[1:0]==2'd0)  &  (q0off | f0_shift_2B) ) |
-                              ( ~qwen[0] & (rdptr[1:0]==2'd2)  &  (q0off | f1_shift_2B) ) |
-                              ( ~qwen[0] & (rdptr[1:0]==2'd1)  &   q0off                );
-
-
-
-   assign q0ptr              = ( (rdptr[1:0]==2'b00) & q0off ) |
-                               ( (rdptr[1:0]==2'b01) & q1off ) |
-                               ( (rdptr[1:0]==2'b10) & q2off );
-
-   assign q1ptr              = ( (rdptr[1:0]==2'b00) & q1off ) |
-                               ( (rdptr[1:0]==2'b01) & q2off ) |
-                               ( (rdptr[1:0]==2'b10) & q0off );
-
-   assign q0sel[1:0]         = {q0ptr,~q0ptr};
-
-   assign q1sel[1:0]         = {q1ptr,~q1ptr};
-
-   // end new queue control logic
-
-
-   // misc data that is associated with each fetch buffer
-
-   if(pt.BTB_ENABLE==1)
-     assign misc_data_in[MHI:0] = {
-
-                                    ic_access_fault_type_f[1:0],
-                                    ifu_bp_btb_target_f[31:1],
-                                    ifu_bp_poffset_f[11:0],
-                                    ifu_bp_fghr_f[pt.BHT_GHR_SIZE-1:0]
-                                    };
-   else
-     assign misc_data_in[MHI:0] = {
-                                    ic_access_fault_type_f[1:0]
-                                    };
-
-
-   assign {misc1eff[MHI:0],misc0eff[MHI:0]} = (({MSIZE*2{qren[0]}} & {misc1[MHI:0],misc0[MHI:0]}) |
-                                               ({MSIZE*2{qren[1]}} & {misc2[MHI:0],misc1[MHI:0]}) |
-                                               ({MSIZE*2{qren[2]}} & {misc0[MHI:0],misc2[MHI:0]}));
-
-   if(pt.BTB_ENABLE==1) begin
-   assign {
-            f1ictype[1:0],
-            f1prett[31:1],
-            f1poffset[11:0],
-            f1fghr[pt.BHT_GHR_SIZE-1:0]
-            } = misc1eff[MHI:0];
-
-   assign {
-            f0ictype[1:0],
-            f0prett[31:1],
-            f0poffset[11:0],
-            f0fghr[pt.BHT_GHR_SIZE-1:0]
-            } = misc0eff[MHI:0];
-
-      if(pt.BTB_FULLYA) begin
-         assign brdata_in[BRDATA_SIZE-1:0] = {
-                                               ifu_bp_fa_index_f[1], iccm_rd_ecc_double_err[1],ic_access_fault_f[1],ifu_bp_hist1_f[1],ifu_bp_hist0_f[1],ifu_bp_pc4_f[1],ifu_bp_way_f[1],ifu_bp_valid_f[1],ifu_bp_ret_f[1],
-                                               ifu_bp_fa_index_f[0], iccm_rd_ecc_double_err[0],ic_access_fault_f[0],ifu_bp_hist1_f[0],ifu_bp_hist0_f[0],ifu_bp_pc4_f[0],ifu_bp_way_f[0],ifu_bp_valid_f[0],ifu_bp_ret_f[0]
-                                               };
-         assign {f0index[1],f0dbecc[1],f0icaf[1],f0hist1[1],f0hist0[1],f0pc4[1],f0way[1],f0brend[1],f0ret[1],
-                 f0index[0],f0dbecc[0],f0icaf[0],f0hist1[0],f0hist0[0],f0pc4[0],f0way[0],f0brend[0],f0ret[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-         assign {f1index[1],f1dbecc[1],f1icaf[1],f1hist1[1],f1hist0[1],f1pc4[1],f1way[1],f1brend[1],f1ret[1],
-                 f1index[0],f1dbecc[0],f1icaf[0],f1hist1[0],f1hist0[0],f1pc4[0],f1way[0],f1brend[0],f1ret[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      end
-      else begin
-         assign brdata_in[BRDATA_SIZE-1:0] = {
-                                               iccm_rd_ecc_double_err[1],ic_access_fault_f[1],ifu_bp_hist1_f[1],ifu_bp_hist0_f[1],ifu_bp_pc4_f[1],ifu_bp_way_f[1],ifu_bp_valid_f[1],ifu_bp_ret_f[1],
-                                               iccm_rd_ecc_double_err[0],ic_access_fault_f[0],ifu_bp_hist1_f[0],ifu_bp_hist0_f[0],ifu_bp_pc4_f[0],ifu_bp_way_f[0],ifu_bp_valid_f[0],ifu_bp_ret_f[0]
-                                               };
-         assign {f0dbecc[1],f0icaf[1],f0hist1[1],f0hist0[1],f0pc4[1],f0way[1],f0brend[1],f0ret[1],
-                 f0dbecc[0],f0icaf[0],f0hist1[0],f0hist0[0],f0pc4[0],f0way[0],f0brend[0],f0ret[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-         assign {f1dbecc[1],f1icaf[1],f1hist1[1],f1hist0[1],f1pc4[1],f1way[1],f1brend[1],f1ret[1],
-                 f1dbecc[0],f1icaf[0],f1hist1[0],f1hist0[0],f1pc4[0],f1way[0],f1brend[0],f1ret[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      end
-
-
-
-
-   assign {brdata1eff[BRDATA_SIZE-1:0],brdata0eff[BRDATA_SIZE-1:0]} = (({BRDATA_SIZE*2{qren[0]}} & {brdata1[BRDATA_SIZE-1:0],brdata0[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[1]}} & {brdata2[BRDATA_SIZE-1:0],brdata1[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[2]}} & {brdata0[BRDATA_SIZE-1:0],brdata2[BRDATA_SIZE-1:0]}));
-
-   assign brdata0final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q0sel[0]}} & {                     brdata0eff[2*BRDATA_WIDTH-1:0]}) |
-                                           ({BRDATA_SIZE{q0sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata0eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   assign brdata1final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q1sel[0]}} & {                     brdata1eff[2*BRDATA_WIDTH-1:0]}) |
-                                           ({BRDATA_SIZE{q1sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata1eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   end // if (pt.BTB_ENABLE==1)
-   else begin
-      assign {
-               f1ictype[1:0]
-               } = misc1eff[MHI:0];
-
-      assign {
-               f0ictype[1:0]
-               } = misc0eff[MHI:0];
-
-      assign brdata_in[BRDATA_SIZE-1:0] = {
-                                            iccm_rd_ecc_double_err[1],ic_access_fault_f[1],
-                                            iccm_rd_ecc_double_err[0],ic_access_fault_f[0]
-                                            };
-      assign {f0dbecc[1],f0icaf[1],
-              f0dbecc[0],f0icaf[0]} = brdata0final[BRDATA_SIZE-1:0];
-
-      assign {f1dbecc[1],f1icaf[1],
-              f1dbecc[0],f1icaf[0]} = brdata1final[BRDATA_SIZE-1:0];
-
-      assign {brdata1eff[BRDATA_SIZE-1:0],brdata0eff[BRDATA_SIZE-1:0]} = (({BRDATA_SIZE*2{qren[0]}} & {brdata1[BRDATA_SIZE-1:0],brdata0[BRDATA_SIZE-1:0]}) |
-                                                                          ({BRDATA_SIZE*2{qren[1]}} & {brdata2[BRDATA_SIZE-1:0],brdata1[BRDATA_SIZE-1:0]}) |
-                                                                       ({BRDATA_SIZE*2{qren[2]}} & {brdata0[BRDATA_SIZE-1:0],brdata2[BRDATA_SIZE-1:0]}));
-
-      assign brdata0final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q0sel[0]}} & {                     brdata0eff[2*BRDATA_WIDTH-1:0]}) |
-                                              ({BRDATA_SIZE{q0sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata0eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-      assign brdata1final[BRDATA_SIZE-1:0] = (({BRDATA_SIZE{q1sel[0]}} & {                     brdata1eff[2*BRDATA_WIDTH-1:0]}) |
-                                              ({BRDATA_SIZE{q1sel[1]}} & {{BRDATA_WIDTH{1'b0}},brdata1eff[BRDATA_SIZE-1:BRDATA_WIDTH]}));
-
-   end // else: !if(pt.BTB_ENABLE==1)
-
-
-   // possible states of { sf0_valid, sf1_valid, f2_valid }
-   //
-   // 000    if->f0
-   // 100    if->f1
-   // 101    illegal
-   // 010    if->f1, f1->f0
-   // 110    if->f2
-   // 001    if->f1, f2->f0
-   // 011    if->f2, f2->f1, f1->f0
-   // 111   !if,     no shift
-
-   assign f2_valid           =  f2val[0];
-   assign sf1_valid          =  sf1val[0];
-   assign sf0_valid          =  sf0val[0];
-
-   // interface to fetch
-
-   assign consume_fb0        = ~sf0val[0] & f0val[0];
-
-   assign consume_fb1        = ~sf1val[0] & f1val[0];
-
-   assign ifu_fb_consume1    =  consume_fb0 & ~consume_fb1 & ~exu_flush_final;
-   assign ifu_fb_consume2    =  consume_fb0 &  consume_fb1 & ~exu_flush_final;
-
-   assign ifvalid            =  ifu_fetch_val[0];
-
-   assign shift_f1_f0        =  ~sf0_valid &  sf1_valid;
-   assign shift_f2_f0        =  ~sf0_valid & ~sf1_valid &  f2_valid;
-   assign shift_f2_f1        =  ~sf0_valid &  sf1_valid &  f2_valid;
-
-   assign fetch_to_f0        =  ~sf0_valid & ~sf1_valid & ~f2_valid & ifvalid;
-
-   assign fetch_to_f1        = (~sf0_valid & ~sf1_valid &  f2_valid & ifvalid)  |
-                               (~sf0_valid &  sf1_valid & ~f2_valid & ifvalid)  |
-                               ( sf0_valid & ~sf1_valid & ~f2_valid & ifvalid);
-
-   assign fetch_to_f2        = (~sf0_valid &  sf1_valid &  f2_valid & ifvalid)  |
-                               ( sf0_valid &  sf1_valid & ~f2_valid & ifvalid);
-
-
-   assign f2val_in[1:0]      = ({2{ fetch_to_f2 &                               ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{~fetch_to_f2 & ~shift_f2_f1 & ~shift_f2_f0 & ~exu_flush_final}} & f2val[1:0]        );
-
-
-   assign sf1val[1:0]        = ({2{ f1_shift_2B}} & {1'b0,f1val[1]}) |
-                               ({2{~f1_shift_2B}} & f1val[1:0]     );
-
-   assign f1val_in[1:0]      = ({2{ fetch_to_f1                               & ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{                shift_f2_f1                & ~exu_flush_final}} & f2val[1:0]        ) |
-                               ({2{~fetch_to_f1 & ~shift_f2_f1 & ~shift_f1_f0 & ~exu_flush_final}} & sf1val[1:0]       );
-
-
-
-   assign sf0val[1:0]        = ({2{ shift_2B            }} & {1'b0,f0val[1]}) |
-                               ({2{~shift_2B & ~shift_4B}} & f0val[1:0]);
-
-   assign f0val_in[1:0]      = ({2{fetch_to_f0                                & ~exu_flush_final}} & ifu_fetch_val[1:0]) |
-                               ({2{                shift_f2_f0                & ~exu_flush_final}} & f2val[1:0]        ) |
-                               ({2{                               shift_f1_f0 & ~exu_flush_final}} & sf1val[1:0]       ) |
-                               ({2{~fetch_to_f0 & ~shift_f2_f0 & ~shift_f1_f0 & ~exu_flush_final}} & sf0val[1:0]       );
-
-   assign {q1eff[31:0],q0eff[31:0]} = (({64{qren[0]}} & {q1[31:0],q0[31:0]}) |
-                                       ({64{qren[1]}} & {q2[31:0],q1[31:0]}) |
-                                       ({64{qren[2]}} & {q0[31:0],q2[31:0]}));
-
-   assign q0final[31:0]      = ({32{q0sel[0]}} & {      q0eff[31:0]}) |
-                               ({32{q0sel[1]}} & {16'b0,q0eff[31:16]});
-
-   assign q1final[15:0]      = ({16{q1sel[0]}} & q1eff[15:0] ) |
-                               ({16{q1sel[1]}} & q1eff[31:16]);
-   logic [31:1] q0pceff, q0pcfinal;
-   logic [31:1] q1pceff;
-
-   assign {q1pceff[31:1],q0pceff[31:1]} = (({62{qren[0]}} & {q1pc[31:1],q0pc[31:1]}) |
-                                           ({62{qren[1]}} & {q2pc[31:1],q1pc[31:1]}) |
-                                           ({62{qren[2]}} & {q0pc[31:1],q2pc[31:1]}));
-
-
-   assign q0pcfinal[31:1]      = ({31{q0sel[0]}} & ( q0pceff[31:1])) |
-                                 ({31{q0sel[1]}} & ( q0pceff[31:1] + 31'd1));
-
-   assign aligndata[31:0]    = ({32{ f0val[1]           }} & {q0final[31:0]}) |
-                               ({32{~f0val[1] & f0val[0]}} & {q1final[15:0],q0final[15:0]});
-
-   assign alignval[1:0]      = ({ 2{ f0val[1]           }} & {2'b11}) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1val[0],1'b1});
-
-   assign alignicaf[1:0]    = ({ 2{ f0val[1]           }} &  f0icaf[1:0]          ) |
-                              ({ 2{~f0val[1] & f0val[0]}} & {f1icaf[0],f0icaf[0]});
-
-   assign aligndbecc[1:0]    = ({ 2{ f0val[1]           }} &  f0dbecc[1:0]          ) |
-                              ({ 2{~f0val[1] & f0val[0]}} & {f1dbecc[0],f0dbecc[0]});
-
-   if (pt.BTB_ENABLE==1) begin
-
-   // for branch prediction
-
-   assign alignbrend[1:0]    = ({ 2{ f0val[1]           }} &  f0brend[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1brend[0],f0brend[0]});
-
-   assign alignpc4[1:0]      = ({ 2{ f0val[1]           }} &  f0pc4[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1pc4[0],f0pc4[0]});
-
-      if(pt.BTB_FULLYA) begin
-         assign alignindex[0]      = f0index[0];
-         assign alignindex[1]      = f0val[1] ? f0index[1] : f1index[0];
-      end
-
-   assign alignret[1:0]      = ({ 2{ f0val[1]           }} &  f0ret[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1ret[0],f0ret[0]});
-
-   assign alignway[1:0]      = ({ 2{ f0val[1]           }} &  f0way[1:0]        ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1way[0],f0way[0]});
-
-   assign alignhist1[1:0]    = ({ 2{ f0val[1]           }} &  f0hist1[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1hist1[0],f0hist1[0]});
-
-   assign alignhist0[1:0]    = ({ 2{ f0val[1]           }} &  f0hist0[1:0]          ) |
-                               ({ 2{~f0val[1] & f0val[0]}} & {f1hist0[0],f0hist0[0]});
-
-   assign secondpc[31:1]     = ({31{ f0val[1]           }} &  (q0pceff[31:1] + 31'd1)) |
-                               // you need the base pc for 2nd one only (4B max, 2B for the 1st and 2B for the 2nd)
-                               ({31{~f0val[1] & f0val[0]}} &   q1pceff[31:1]      );
-
-
-   assign firstpc[31:1]      =  q0pcfinal[31:1];
-      end // if (pt.BTB_ENABLE==1)
-
-   assign alignfromf1[1]     =      ~f0val[1] & f0val[0];
-
-
-   assign ifu_i0_pc[31:1]    =  q0pcfinal[31:1];
-
-
-   assign ifu_i0_pc4         =  first4B;
-
-
-   assign ifu_i0_cinst[15:0] = aligndata[15:0];
-
-   assign first4B            = (aligndata[1:0] == 2'b11);
-   assign first2B            = ~first4B;
-
-   assign ifu_i0_valid       = (first4B & alignval[1]) |
-                               (first2B & alignval[0]);
-
-   // inst access fault on any byte of inst results in access fault for the inst
-   assign ifu_i0_icaf        = (first4B & (|alignicaf[1:0])) |
-                               (first2B &   alignicaf[0]   );
-
-   assign ifu_i0_icaf_type[1:0] = (first4B & ~f0val[1] & f0val[0] & ~alignicaf[0] & ~aligndbecc[0]) ? f1ictype[1:0] : f0ictype[1:0];
-
-
-   assign icaf_eff[1:0] = alignicaf[1:0] | aligndbecc[1:0];
-
-   assign ifu_i0_icaf_second = first4B & ~icaf_eff[0] & icaf_eff[1];
-
-   assign ifu_i0_dbecc       = (first4B & (|aligndbecc[1:0])) |
-                               (first2B &   aligndbecc[0]   );
-
-
-   assign ifirst[31:0]       =  aligndata[31:0];
-
-
-   assign ifu_i0_instr[31:0] = ({32{first4B & alignval[1]}} & ifirst[31:0]) |
-                               ({32{first2B & alignval[0]}} & uncompress0[31:0]);
-
-if(pt.BTB_ENABLE==1) begin
-
-   // if you detect br does not start on instruction boundary
-
-   eb1_btb_addr_hash #(.pt(pt)) firsthash (.pc(firstpc [pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]),
-                                            .hash(firstpc_hash [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-   eb1_btb_addr_hash #(.pt(pt)) secondhash(.pc(secondpc[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]),
-                                            .hash(secondpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-   if(pt.BTB_FULLYA) begin
-      assign firstbrtag_hash = firstpc;
-      assign secondbrtag_hash = secondpc;
-   end
-   else begin
-      if(pt.BTB_BTAG_FOLD) begin : btbfold
-         eb1_btb_tag_hash_fold #(.pt(pt)) first_brhash (.pc(firstpc [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                         .hash(firstbrtag_hash [pt.BTB_BTAG_SIZE-1:0]));
-         eb1_btb_tag_hash_fold #(.pt(pt)) second_brhash(.pc(secondpc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                         .hash(secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0]));
-      end
-      else begin
-         eb1_btb_tag_hash #(.pt(pt)) first_brhash (.pc(firstpc [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                    .hash(firstbrtag_hash [pt.BTB_BTAG_SIZE-1:0]));
-         eb1_btb_tag_hash #(.pt(pt)) second_brhash(.pc(secondpc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]),
-                                                    .hash(secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0]));
-      end
-   end // else: !if(pt.BTB_FULLYA)
-
-
-   // start_indexing - you want pc to be based on where the end of branch is prediction
-   // normal indexing pc based that's incorrect now for pc4 cases it's pc4 + 2
-
-   always_comb begin
-
-      i0_brp                 = '0;
-
-      i0_br_start_error      = (first4B & alignval[1] & alignbrend[0]);
-
-      i0_brp.valid           = (first2B & alignbrend[0]) |
-                               (first4B & alignbrend[1]) |
-                                i0_br_start_error;
-
-      i0_brp_pc4             = (first2B & alignpc4[0]) |
-                               (first4B & alignpc4[1]);
-
-      i0_brp.ret             = (first2B & alignret[0]) |
-                               (first4B & alignret[1]);
-
-      i0_brp.way             = (first2B | alignbrend[0])  ?  alignway[0]  :  alignway[1];
-
-      i0_brp.hist[1]         = (first2B & alignhist1[0]) |
-                               (first4B & alignhist1[1]);
-
-      i0_brp.hist[0]         = (first2B & alignhist0[0]) |
-                               (first4B & alignhist0[1]);
-
-      i0_ends_f1             =  first4B & alignfromf1[1];
-
-      i0_brp.toffset[11:0]   = (i0_ends_f1)  ?  f1poffset[11:0]  :  f0poffset[11:0];
-
-      i0_brp.prett[31:1]     = (i0_ends_f1)  ?  f1prett[31:1]    :  f0prett[31:1];
-
-      i0_brp.br_start_error  = i0_br_start_error;
-
-      i0_brp.bank            = (first2B | alignbrend[0])  ?  firstpc[1]  :  secondpc[1];
-
-      i0_brp.br_error        = (i0_brp.valid &  i0_brp_pc4 &  first2B) |
-                               (i0_brp.valid & ~i0_brp_pc4 &  first4B);
-
-      if(pt.BTB_FULLYA)
-        ifu_i0_fa_index = (first2B | alignbrend[0])  ?  alignindex[0]  :  alignindex[1];
-      else
-        ifu_i0_fa_index = '0;
-
- end
-
-
-   assign ifu_i0_bp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = (first2B | alignbrend[0])  ?  firstpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  :
-                                                                                         secondpc_hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign ifu_i0_bp_fghr[pt.BHT_GHR_SIZE-1:0]            = (i0_ends_f1)               ?  f1fghr[pt.BHT_GHR_SIZE-1:0]  :
-                                                                                         f0fghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign ifu_i0_bp_btag[pt.BTB_BTAG_SIZE-1:0]           = (first2B | alignbrend[0])  ?  firstbrtag_hash[pt.BTB_BTAG_SIZE-1:0]  :
-                                                                                         secondbrtag_hash[pt.BTB_BTAG_SIZE-1:0];
-end
-else begin
-   assign i0_brp = '0;
-   assign ifu_i0_bp_index = '0;
-   assign ifu_i0_bp_fghr = '0;
-   assign ifu_i0_bp_btag = '0;
-end // else: !if(pt.BTB_ENABLE==1)
-
-   // decompress
-
-   // quiet inputs for 4B inst
-   eb1_ifu_compress_ctl #(.pt(pt)) compress0 (.din((first2B) ? aligndata[15:0] : '0), .dout(uncompress0[31:0]));
-
-
-
-   assign i0_shift           =  dec_i0_decode_d & ~error_stall;
-
-   assign ifu_pmu_instr_aligned = i0_shift;
-
-
-   // compute how many bytes are being shifted from f0
-
-   assign shift_2B           =  i0_shift & first2B;
-
-   assign shift_4B           =  i0_shift & first4B;
-
-   // exact equations for the queue logic
-   assign f0_shift_2B        = (shift_2B & f0val[0]            ) |
-                               (shift_4B & f0val[0] & ~f0val[1]);
-
-
-   // f0 valid states
-   //     11
-   //     10
-   //     00
-
-   assign f1_shift_2B        =  f0val[0] & ~f0val[1] & shift_4B;
-
-
-
-endmodule
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Function: Branch predictor
-// Comments:
-//
-//
-//  Bank3 : Bank2 : Bank1 : Bank0
-//  FA  C       8       4       0
-//********************************************************************************
-
-module eb1_ifu_bp_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-
-   input logic clk,
-   input logic rst_l,
-
-   input logic ic_hit_f,      // Icache hit, enables F address capture
-
-   input logic [31:1] ifc_fetch_addr_f, // look up btb address
-   input logic ifc_fetch_req_f,  // F1 valid
-
-   input eb1_br_tlu_pkt_t dec_tlu_br0_r_pkt, // BP commit update packet, includes errors
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_i0_br_fghr_r, // fghr to bp
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_i0_br_index_r, // bp index
-
-   input logic [$clog2(pt.BTB_SIZE)-1:0] dec_fa_error_index, // Fully associative btb error index
-
-   input logic dec_tlu_flush_lower_wb, // used to move EX4 RS to EX1 and F
-   input logic dec_tlu_flush_leak_one_wb, // don't hit for leak one fetches
-
-   input logic dec_tlu_bpred_disable, // disable all branch prediction
-
-   input eb1_predict_pkt_t  exu_mp_pkt, // mispredict packet
-
-   input logic [pt.BHT_GHR_SIZE-1:0] exu_mp_eghr, // execute ghr (for patching fghr)
-   input logic [pt.BHT_GHR_SIZE-1:0]  exu_mp_fghr,                    // Mispredict fghr
-   input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  exu_mp_index,         // Mispredict index
-   input logic [pt.BTB_BTAG_SIZE-1:0]  exu_mp_btag,                   // Mispredict btag
-
-   input logic exu_flush_final, // all flushes
-
-   output logic ifu_bp_hit_taken_f, // btb hit, select target
-   output logic [31:1] ifu_bp_btb_target_f, //  predicted target PC
-   output logic ifu_bp_inst_mask_f, // tell ic which valids to kill because of a taken branch, right justified
-
-   output logic [pt.BHT_GHR_SIZE-1:0] ifu_bp_fghr_f, // fetch ghr
-
-   output logic [1:0] ifu_bp_way_f, // way
-   output logic [1:0] ifu_bp_ret_f, // predicted ret
-   output logic [1:0] ifu_bp_hist1_f, // history counters for all 4 potential branches, bit 1, right justified
-   output logic [1:0] ifu_bp_hist0_f, // history counters for all 4 potential branches, bit 0, right justified
-   output logic [1:0] ifu_bp_pc4_f, // pc4 indication, right justified
-   output logic [1:0] ifu_bp_valid_f, // branch valid, right justified
-   output logic [11:0] ifu_bp_poffset_f, // predicted target
-
-   output logic [1:0] [$clog2(pt.BTB_SIZE)-1:0]    ifu_bp_fa_index_f, // predicted branch index (fully associative option)
-
-   input  logic       scan_mode
-   );
-
-
-   localparam BTB_DWIDTH =  pt.BTB_TOFFSET_SIZE+pt.BTB_BTAG_SIZE+5;
-   localparam BTB_DWIDTH_TOP =  int'(pt.BTB_TOFFSET_SIZE)+int'(pt.BTB_BTAG_SIZE)+4;
-   localparam BTB_FA_INDEX = $clog2(pt.BTB_SIZE)-1;
-   localparam FA_CMP_LOWER = $clog2(pt.ICACHE_LN_SZ);
-   localparam FA_TAG_END_UPPER= 5+int'(pt.BTB_TOFFSET_SIZE)+int'(FA_CMP_LOWER)-1; // must cast to int or vcs build fails
-   localparam FA_TAG_START_LOWER = 3+int'(pt.BTB_TOFFSET_SIZE)+int'(FA_CMP_LOWER);
-   localparam FA_TAG_END_LOWER = 5+int'(pt.BTB_TOFFSET_SIZE);
-
-   localparam TAG_START=BTB_DWIDTH-1;
-   localparam PC4=4;
-   localparam BOFF=3;
-   localparam CALL=2;
-   localparam RET=1;
-   localparam BV=0;
-
-   localparam LRU_SIZE=pt.BTB_ARRAY_DEPTH;
-   localparam NUM_BHT_LOOP = (pt.BHT_ARRAY_DEPTH > 16 ) ? 16 : pt.BHT_ARRAY_DEPTH;
-   localparam NUM_BHT_LOOP_INNER_HI =  (pt.BHT_ARRAY_DEPTH > 16 ) ?pt.BHT_ADDR_LO+3 : pt.BHT_ADDR_HI;
-   localparam NUM_BHT_LOOP_OUTER_LO =  (pt.BHT_ARRAY_DEPTH > 16 ) ?pt.BHT_ADDR_LO+4 : pt.BHT_ADDR_LO;
-   localparam BHT_NO_ADDR_MATCH  = ( pt.BHT_ARRAY_DEPTH <= 16 );
-
-
-   logic exu_mp_valid_write;
-   logic exu_mp_ataken;
-   logic exu_mp_valid; // conditional branch mispredict
-   logic exu_mp_boffset; // branch offsett
-   logic exu_mp_pc4; // branch is a 4B inst
-   logic exu_mp_call; // branch is a call inst
-   logic exu_mp_ret; // branch is a ret inst
-   logic exu_mp_ja; // branch is a jump always
-   logic [1:0] exu_mp_hist; // new history
-   logic [11:0] exu_mp_tgt; // target offset
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] exu_mp_addr; // BTB/BHT address
-   logic                                   dec_tlu_br0_v_wb; // WB stage history update
-   logic [1:0]                             dec_tlu_br0_hist_wb; // new history
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] dec_tlu_br0_addr_wb; // addr
-   logic                                   dec_tlu_br0_error_wb; // error; invalidate bank
-   logic                                   dec_tlu_br0_start_error_wb; // error; invalidate all 4 banks in fg
-   logic [pt.BHT_GHR_SIZE-1:0]             exu_i0_br_fghr_wb;
-
-   logic use_mp_way, use_mp_way_p1;
-   logic [pt.RET_STACK_SIZE-1:0][31:0] rets_out, rets_in;
-   logic [pt.RET_STACK_SIZE-1:0]        rsenable;
-
-
-   logic [11:0]       btb_rd_tgt_f;
-   logic              btb_rd_pc4_f, btb_rd_call_f, btb_rd_ret_f;
-   logic [1:1]        bp_total_branch_offset_f;
-
-   logic [31:1]       bp_btb_target_adder_f;
-   logic [31:1]       bp_rs_call_target_f;
-   logic              rs_push, rs_pop, rs_hold;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] btb_rd_addr_p1_f, btb_wr_addr, btb_rd_addr_f;
-   logic [pt.BTB_BTAG_SIZE-1:0] btb_wr_tag, fetch_rd_tag_f, fetch_rd_tag_p1_f;
-   logic [BTB_DWIDTH-1:0]        btb_wr_data;
-   logic               btb_wr_en_way0, btb_wr_en_way1;
-
-
-   logic               dec_tlu_error_wb, btb_valid, dec_tlu_br0_middle_wb;
-   logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]        btb_error_addr_wb;
-   logic branch_error_collision_f, fetch_mp_collision_f, branch_error_collision_p1_f, fetch_mp_collision_p1_f;
-
-   logic  branch_error_bank_conflict_f;
-   logic [pt.BHT_GHR_SIZE-1:0] merged_ghr, fghr_ns, fghr;
-   logic [1:0] num_valids;
-   logic [LRU_SIZE-1:0] btb_lru_b0_f, btb_lru_b0_hold, btb_lru_b0_ns,
-                        fetch_wrindex_dec, fetch_wrindex_p1_dec, fetch_wrlru_b0, fetch_wrlru_p1_b0,
-                        mp_wrindex_dec, mp_wrlru_b0;
-   logic                btb_lru_rd_f, btb_lru_rd_p1_f, lru_update_valid_f;
-   logic  tag_match_way0_f, tag_match_way1_f;
-   logic [1:0] way_raw, bht_dir_f, btb_sel_f, wayhit_f, vwayhit_f, wayhit_p1_f;
-   logic [1:0] bht_valid_f, bht_force_taken_f;
-
-   logic leak_one_f, leak_one_f_d1;
-
-   logic [LRU_SIZE-1:0][BTB_DWIDTH-1:0]  btb_bank0_rd_data_way0_out ;
-
-   logic [LRU_SIZE-1:0][BTB_DWIDTH-1:0]  btb_bank0_rd_data_way1_out ;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way0_f ;
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way1_f ;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way0_p1_f ;
-   logic                [BTB_DWIDTH-1:0] btb_bank0_rd_data_way1_p1_f ;
-
-   logic                [BTB_DWIDTH-1:0] btb_vbank0_rd_data_f, btb_vbank1_rd_data_f;
-
-   logic                                         final_h;
-   logic                                         btb_fg_crossing_f;
-   logic                                         middle_of_bank;
-
-
-   logic [1:0]                                   bht_vbank0_rd_data_f, bht_vbank1_rd_data_f;
-   logic                                         branch_error_bank_conflict_p1_f;
-   logic                                         tag_match_way0_p1_f, tag_match_way1_p1_f;
-
-   logic [1:0]                                   btb_vlru_rd_f, fetch_start_f, tag_match_vway1_expanded_f, tag_match_way0_expanded_p1_f, tag_match_way1_expanded_p1_f;
-   logic [31:2] fetch_addr_p1_f;
-
-
-   logic exu_mp_way, exu_mp_way_f, dec_tlu_br0_way_wb, dec_tlu_way_wb;
-   logic                [BTB_DWIDTH-1:0] btb_bank0e_rd_data_f, btb_bank0e_rd_data_p1_f;
-
-   logic                [BTB_DWIDTH-1:0] btb_bank0o_rd_data_f;
-
-   logic [1:0] tag_match_way0_expanded_f, tag_match_way1_expanded_f;
-
-
-    logic [1:0]                                  bht_bank0_rd_data_f;
-    logic [1:0]                                  bht_bank1_rd_data_f;
-    logic [1:0]                                  bht_bank0_rd_data_p1_f;
-   genvar                                        j, i;
-
-   assign exu_mp_valid = exu_mp_pkt.misp & ~leak_one_f; // conditional branch mispredict
-   assign exu_mp_boffset = exu_mp_pkt.boffset;  // branch offset
-   assign exu_mp_pc4 = exu_mp_pkt.pc4;  // branch is a 4B inst
-   assign exu_mp_call = exu_mp_pkt.pcall;  // branch is a call inst
-   assign exu_mp_ret = exu_mp_pkt.pret;  // branch is a ret inst
-   assign exu_mp_ja = exu_mp_pkt.pja;  // branch is a jump always
-   assign exu_mp_way = exu_mp_pkt.way;  // repl way
-   assign exu_mp_hist[1:0] = exu_mp_pkt.hist[1:0];  // new history
-   assign exu_mp_tgt[11:0]  = exu_mp_pkt.toffset[11:0] ;  // target offset
-   assign exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]  = exu_mp_index[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] ;  // BTB/BHT address
-   assign exu_mp_ataken = exu_mp_pkt.ataken;
-
-
-   assign dec_tlu_br0_v_wb = dec_tlu_br0_r_pkt.valid;
-   assign dec_tlu_br0_hist_wb[1:0]  = dec_tlu_br0_r_pkt.hist[1:0];
-   assign dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = exu_i0_br_index_r[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-   assign dec_tlu_br0_error_wb = dec_tlu_br0_r_pkt.br_error;
-   assign dec_tlu_br0_middle_wb = dec_tlu_br0_r_pkt.middle;
-   assign dec_tlu_br0_way_wb = dec_tlu_br0_r_pkt.way;
-   assign dec_tlu_br0_start_error_wb = dec_tlu_br0_r_pkt.br_start_error;
-   assign exu_i0_br_fghr_wb[pt.BHT_GHR_SIZE-1:0] = exu_i0_br_fghr_r[pt.BHT_GHR_SIZE-1:0];
-
-
-
-
-   // ----------------------------------------------------------------------
-   // READ
-   // ----------------------------------------------------------------------
-
-   // hash the incoming fetch PC, first guess at hashing algorithm
-   eb1_btb_addr_hash #(.pt(pt)) f1hash(.pc(ifc_fetch_addr_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-
-   assign fetch_addr_p1_f[31:2] = ifc_fetch_addr_f[31:2] + 30'b1;
-   eb1_btb_addr_hash #(.pt(pt)) f1hash_p1(.pc(fetch_addr_p1_f[pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO]), .hash(btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]));
-
-   assign btb_sel_f[1] = ~bht_dir_f[0];
-   assign btb_sel_f[0] =  bht_dir_f[0];
-
-   assign fetch_start_f[1:0] = {ifc_fetch_addr_f[1], ~ifc_fetch_addr_f[1]};
-
-   // Errors colliding with fetches must kill the btb/bht hit.
-
-   assign branch_error_collision_f = dec_tlu_error_wb & (btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]);
-   assign branch_error_collision_p1_f = dec_tlu_error_wb & (btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]);
-
-   assign branch_error_bank_conflict_f = branch_error_collision_f & dec_tlu_error_wb;
-   assign branch_error_bank_conflict_p1_f = branch_error_collision_p1_f & dec_tlu_error_wb;
-
-   // set on leak one, hold until next flush without leak one
-   assign leak_one_f = (dec_tlu_flush_leak_one_wb & dec_tlu_flush_lower_wb) | (leak_one_f_d1 & ~dec_tlu_flush_lower_wb);
-
-logic exu_flush_final_d1;
-
- if(!pt.BTB_FULLYA) begin
-   assign fetch_mp_collision_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                                    exu_mp_valid & ifc_fetch_req_f &
-                                    (exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO])
-                                    );
-   assign fetch_mp_collision_p1_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                                       exu_mp_valid & ifc_fetch_req_f &
-                                       (exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO])
-                                       );
-   // 2 -way SA, figure out the way hit and mux accordingly
-   assign tag_match_way0_f = btb_bank0_rd_data_way0_f[BV] & (btb_bank0_rd_data_way0_f[TAG_START:17] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way1_f = btb_bank0_rd_data_way1_f[BV] & (btb_bank0_rd_data_way1_f[TAG_START:17] == fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way0_p1_f = btb_bank0_rd_data_way0_p1_f[BV] & (btb_bank0_rd_data_way0_p1_f[TAG_START:17] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_p1_f) & ifc_fetch_req_f & ~leak_one_f;
-
-   assign tag_match_way1_p1_f = btb_bank0_rd_data_way1_p1_f[BV] & (btb_bank0_rd_data_way1_p1_f[TAG_START:17] == fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]) &
-                              ~(dec_tlu_way_wb & branch_error_bank_conflict_p1_f) & ifc_fetch_req_f & ~leak_one_f;
-
-
-   // Both ways could hit, use the offset bit to reorder
-
-   assign tag_match_way0_expanded_f[1:0] = {tag_match_way0_f &  (btb_bank0_rd_data_way0_f[BOFF] ^ btb_bank0_rd_data_way0_f[PC4]),
-                                             tag_match_way0_f & ~(btb_bank0_rd_data_way0_f[BOFF] ^ btb_bank0_rd_data_way0_f[PC4])};
-
-   assign tag_match_way1_expanded_f[1:0] = {tag_match_way1_f &  (btb_bank0_rd_data_way1_f[BOFF] ^ btb_bank0_rd_data_way1_f[PC4]),
-                                             tag_match_way1_f & ~(btb_bank0_rd_data_way1_f[BOFF] ^ btb_bank0_rd_data_way1_f[PC4])};
-
-   assign tag_match_way0_expanded_p1_f[1:0] = {tag_match_way0_p1_f &  (btb_bank0_rd_data_way0_p1_f[BOFF] ^ btb_bank0_rd_data_way0_p1_f[PC4]),
-                                                tag_match_way0_p1_f & ~(btb_bank0_rd_data_way0_p1_f[BOFF] ^ btb_bank0_rd_data_way0_p1_f[PC4])};
-
-   assign tag_match_way1_expanded_p1_f[1:0] = {tag_match_way1_p1_f &  (btb_bank0_rd_data_way1_p1_f[BOFF] ^ btb_bank0_rd_data_way1_p1_f[PC4]),
-                                                tag_match_way1_p1_f & ~(btb_bank0_rd_data_way1_p1_f[BOFF] ^ btb_bank0_rd_data_way1_p1_f[PC4])};
-
-   assign wayhit_f[1:0] = tag_match_way0_expanded_f[1:0] | tag_match_way1_expanded_f[1:0];
-   assign wayhit_p1_f[1:0] = tag_match_way0_expanded_p1_f[1:0] | tag_match_way1_expanded_p1_f[1:0];
-
-   assign btb_bank0o_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_f[1]}} & btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_f[1]}} & btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0]) );
-   assign btb_bank0e_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_f[0]}} & btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_f[0]}} & btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0]) );
-
-   assign btb_bank0e_rd_data_p1_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{tag_match_way0_expanded_p1_f[0]}} & btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0]) |
-                                                               ({17+pt.BTB_BTAG_SIZE{tag_match_way1_expanded_p1_f[0]}} & btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0]) );
-
-   // virtual bank order
-
-   assign btb_vbank0_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{fetch_start_f[0]}} &  btb_bank0e_rd_data_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{fetch_start_f[1]}} &  btb_bank0o_rd_data_f[BTB_DWIDTH-1:0]) );
-   assign btb_vbank1_rd_data_f[BTB_DWIDTH-1:0] = ( ({17+pt.BTB_BTAG_SIZE{fetch_start_f[0]}} &  btb_bank0o_rd_data_f[BTB_DWIDTH-1:0]) |
-                                                            ({17+pt.BTB_BTAG_SIZE{fetch_start_f[1]}} &  btb_bank0e_rd_data_p1_f[BTB_DWIDTH-1:0]) );
-
-   assign way_raw[1:0] =  tag_match_vway1_expanded_f[1:0] | (~vwayhit_f[1:0] & btb_vlru_rd_f[1:0]);
-
-   // --------------------------------------------------------------------------------
-   // --------------------------------------------------------------------------------
-   // update lru
-   // mp
-
-   // create a onehot lru write vector
-   assign mp_wrindex_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   // fetch
-   assign fetch_wrindex_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-   assign fetch_wrindex_p1_dec[LRU_SIZE-1:0] = {{LRU_SIZE-1{1'b0}},1'b1} <<  btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign mp_wrlru_b0[LRU_SIZE-1:0] = mp_wrindex_dec[LRU_SIZE-1:0] & {LRU_SIZE{exu_mp_valid}};
-
-
-   assign btb_lru_b0_hold[LRU_SIZE-1:0] = ~mp_wrlru_b0[LRU_SIZE-1:0] & ~fetch_wrlru_b0[LRU_SIZE-1:0];
-
-   // Forward the mp lru information to the fetch, avoids multiple way hits later
-   assign use_mp_way = fetch_mp_collision_f;
-   assign use_mp_way_p1 = fetch_mp_collision_p1_f;
-
-   assign lru_update_valid_f = (vwayhit_f[0] | vwayhit_f[1]) & ifc_fetch_req_f & ~leak_one_f;
-
-
-   assign fetch_wrlru_b0[LRU_SIZE-1:0] = fetch_wrindex_dec[LRU_SIZE-1:0] &
-                                         {LRU_SIZE{lru_update_valid_f}};
-   assign fetch_wrlru_p1_b0[LRU_SIZE-1:0] = fetch_wrindex_p1_dec[LRU_SIZE-1:0] &
-                                         {LRU_SIZE{lru_update_valid_f}};
-
-   assign btb_lru_b0_ns[LRU_SIZE-1:0] = ( (btb_lru_b0_hold[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]) |
-                                          (mp_wrlru_b0[LRU_SIZE-1:0] & {LRU_SIZE{~exu_mp_way}}) |
-                                          (fetch_wrlru_b0[LRU_SIZE-1:0] & {LRU_SIZE{tag_match_way0_f}}) |
-                                          (fetch_wrlru_p1_b0[LRU_SIZE-1:0] & {LRU_SIZE{tag_match_way0_p1_f}}) );
-
-
-
-   assign btb_lru_rd_f = use_mp_way ? exu_mp_way_f : |(fetch_wrindex_dec[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]);
-
-   assign btb_lru_rd_p1_f = use_mp_way_p1 ? exu_mp_way_f : |(fetch_wrindex_p1_dec[LRU_SIZE-1:0] & btb_lru_b0_f[LRU_SIZE-1:0]);
-
-   // rotated
-   assign btb_vlru_rd_f[1:0] = ( ({2{fetch_start_f[0]}} & {btb_lru_rd_f, btb_lru_rd_f}) |
-                                  ({2{fetch_start_f[1]}} & {btb_lru_rd_p1_f, btb_lru_rd_f}));
-
-   assign tag_match_vway1_expanded_f[1:0] = ( ({2{fetch_start_f[0]}} & {tag_match_way1_expanded_f[1:0]}) |
-                                               ({2{fetch_start_f[1]}} & {tag_match_way1_expanded_p1_f[0], tag_match_way1_expanded_f[1]}) );
-
-
-   rvdffe #(LRU_SIZE) btb_lru_ff (.*, .en(ifc_fetch_req_f | exu_mp_valid),
-                                    .din(btb_lru_b0_ns[(LRU_SIZE)-1:0]),
-                                   .dout(btb_lru_b0_f[(LRU_SIZE)-1:0]));
-
- end // if (!pt.BTB_FULLYA)
-   // Detect end of cache line and mask as needed
-   logic eoc_near;
-   logic eoc_mask;
-   assign eoc_near = &ifc_fetch_addr_f[pt.ICACHE_BEAT_ADDR_HI:3];
-   assign eoc_mask = ~eoc_near| (|(~ifc_fetch_addr_f[2:1]));
-
-
-
-   // --------------------------------------------------------------------------------
-   // --------------------------------------------------------------------------------
-
-   // mux out critical hit bank for pc computation
-   // This is only useful for the first taken branch in the fetch group
-   logic [16:1] btb_sel_data_f;
-
-   assign btb_rd_tgt_f[11:0] = btb_sel_data_f[16:5];
-   assign btb_rd_pc4_f       = btb_sel_data_f[4];
-   assign btb_rd_call_f      = btb_sel_data_f[2];
-   assign btb_rd_ret_f       = btb_sel_data_f[1];
-
-   assign btb_sel_data_f[16:1] = ( ({16{btb_sel_f[1]}} & btb_vbank1_rd_data_f[16:1]) |
-                                    ({16{btb_sel_f[0]}} & btb_vbank0_rd_data_f[16:1]) );
-
-
-   logic [1:0] hist0_raw, hist1_raw, pc4_raw, pret_raw;
-
-   // a valid taken target needs to kill the next fetch as we compute the target address
-   assign ifu_bp_hit_taken_f = |(vwayhit_f[1:0] & hist1_raw[1:0]) & ifc_fetch_req_f & ~leak_one_f_d1 & ~dec_tlu_bpred_disable;
-
-
-   // Don't put calls/rets/ja in the predictor, force the bht taken instead
-   assign bht_force_taken_f[1:0] = {(btb_vbank1_rd_data_f[CALL] | btb_vbank1_rd_data_f[RET]),
-                                     (btb_vbank0_rd_data_f[CALL] | btb_vbank0_rd_data_f[RET])};
-
-
-   // taken and valid, otherwise, branch errors must clear the bht
-   assign bht_valid_f[1:0] = vwayhit_f[1:0];
-
-   assign bht_vbank0_rd_data_f[1:0] = ( ({2{fetch_start_f[0]}} & bht_bank0_rd_data_f[1:0]) |
-                                         ({2{fetch_start_f[1]}} & bht_bank1_rd_data_f[1:0]) );
-
-   assign bht_vbank1_rd_data_f[1:0] = ( ({2{fetch_start_f[0]}} & bht_bank1_rd_data_f[1:0]) |
-                                         ({2{fetch_start_f[1]}} & bht_bank0_rd_data_p1_f[1:0]) );
-
-
-   assign bht_dir_f[1:0] = {(bht_force_taken_f[1] | bht_vbank1_rd_data_f[1]) & bht_valid_f[1],
-                             (bht_force_taken_f[0] | bht_vbank0_rd_data_f[1]) & bht_valid_f[0]};
-
-   assign ifu_bp_inst_mask_f = (ifu_bp_hit_taken_f & btb_sel_f[1]) | ~ifu_bp_hit_taken_f;
-
-
-
-
-   // Branch prediction info is sent with the 2byte lane associated with the end of the branch.
-   // Cases
-   //       BANK1         BANK0
-   // -------------------------------
-   // |      :       |      :       |
-   // -------------------------------
-   //         <------------>                   : PC4 branch, offset, should be in B1 (indicated on [2])
-   //                <------------>            : PC4 branch, no offset, indicate PC4, VALID, HIST on [1]
-   //                       <------------>     : PC4 branch, offset, indicate PC4, VALID, HIST on [0]
-   //                <------>                  : PC2 branch, offset, indicate VALID, HIST on [1]
-   //                       <------>           : PC2 branch, no offset, indicate VALID, HIST on [0]
-   //
-
-
-
-   assign hist1_raw[1:0] = bht_force_taken_f[1:0] | {bht_vbank1_rd_data_f[1],
-                                                      bht_vbank0_rd_data_f[1]};
-
-   assign hist0_raw[1:0] = {bht_vbank1_rd_data_f[0],
-                            bht_vbank0_rd_data_f[0]};
-
-
-   assign pc4_raw[1:0] = {vwayhit_f[1] & btb_vbank1_rd_data_f[PC4],
-                          vwayhit_f[0] & btb_vbank0_rd_data_f[PC4]};
-
-   assign pret_raw[1:0] = {vwayhit_f[1] & ~btb_vbank1_rd_data_f[CALL] & btb_vbank1_rd_data_f[RET],
-                           vwayhit_f[0] & ~btb_vbank0_rd_data_f[CALL] & btb_vbank0_rd_data_f[RET]};
-
-   // GHR
-
-
-  // count the valids with masking based on first taken
-   assign num_valids[1:0] = countones(bht_valid_f[1:0]);
-
-   // Note that the following property holds
-   // P: prior ghr, H: history bit of last valid branch in line (could be 1 or 0)
-   // Num valid branches   What new GHR must be
-   // 2                    0H
-   // 1                    PH
-   // 0                    PP
-
-   assign final_h = |(btb_sel_f[1:0] & bht_dir_f[1:0]);
-
-   assign merged_ghr[pt.BHT_GHR_SIZE-1:0] = (
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h2}} & {fghr[pt.BHT_GHR_SIZE-3:0], 1'b0, final_h}) | // 0H
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h1}} & {fghr[pt.BHT_GHR_SIZE-2:0], final_h}) | // PH
-                                            ({pt.BHT_GHR_SIZE{num_valids[1:0] == 2'h0}} & {fghr[pt.BHT_GHR_SIZE-1:0]}) ); // PP
-
-   logic [pt.BHT_GHR_SIZE-1:0] exu_flush_ghr;
-   assign exu_flush_ghr[pt.BHT_GHR_SIZE-1:0] = exu_mp_fghr[pt.BHT_GHR_SIZE-1:0];
-
-   assign fghr_ns[pt.BHT_GHR_SIZE-1:0] = ( ({pt.BHT_GHR_SIZE{exu_flush_final_d1}} & exu_flush_ghr[pt.BHT_GHR_SIZE-1:0]) |
-                                         ({pt.BHT_GHR_SIZE{~exu_flush_final_d1 & ifc_fetch_req_f & ic_hit_f & ~leak_one_f_d1}} & merged_ghr[pt.BHT_GHR_SIZE-1:0]) |
-                                         ({pt.BHT_GHR_SIZE{~exu_flush_final_d1 & ~(ifc_fetch_req_f & ic_hit_f & ~leak_one_f_d1)}} & fghr[pt.BHT_GHR_SIZE-1:0]));
-
-   rvdffie #(.WIDTH(pt.BHT_GHR_SIZE+3),.OVERRIDE(1)) fetchghr (.*,
-                                          .din ({exu_flush_final, exu_mp_way, leak_one_f, fghr_ns[pt.BHT_GHR_SIZE-1:0]}),
-                                          .dout({exu_flush_final_d1, exu_mp_way_f, leak_one_f_d1, fghr[pt.BHT_GHR_SIZE-1:0]}));
-
-   assign ifu_bp_fghr_f[pt.BHT_GHR_SIZE-1:0] = fghr[pt.BHT_GHR_SIZE-1:0];
-
-
-   assign ifu_bp_way_f[1:0] = way_raw[1:0];
-   assign ifu_bp_hist1_f[1:0]    = hist1_raw[1:0];
-   assign ifu_bp_hist0_f[1:0]    = hist0_raw[1:0];
-   assign ifu_bp_pc4_f[1:0]     = pc4_raw[1:0];
-
-   assign ifu_bp_valid_f[1:0]   = vwayhit_f[1:0] & ~{2{dec_tlu_bpred_disable}};
-   assign ifu_bp_ret_f[1:0]     = pret_raw[1:0];
-
-
-   // compute target
-   // Form the fetch group offset based on the btb hit location and the location of the branch within the 4 byte chunk
-
-//  .i 5
-//  .o 3
-//  .ilb bht_dir_f[1] bht_dir_f[0] fetch_start_f[1] fetch_start_f[0] btb_rd_pc4_f
-//  .ob bloc_f[1] bloc_f[0] use_fa_plus
-//  .type fr
-//
-//
-//  ## rotdir[1:0]  fs   pc4  off fapl
-//    -1            01 -  01  0
-//    10            01 -  10  0
-//
-//    -1            10 -  10  0
-//    10            10 0  01  1
-//    10            10 1  01  0
-logic [1:0] bloc_f;
-logic use_fa_plus;
-assign bloc_f[1] = (bht_dir_f[0] & ~fetch_start_f[0]) | (~bht_dir_f[0]
-     & fetch_start_f[0]);
-assign bloc_f[0] = (bht_dir_f[0] & fetch_start_f[0]) | (~bht_dir_f[0]
-     & ~fetch_start_f[0]);
-assign use_fa_plus = (~bht_dir_f[0] & ~fetch_start_f[0] & ~btb_rd_pc4_f);
-
-
-
-
-    assign btb_fg_crossing_f = fetch_start_f[0] & btb_sel_f[0] & btb_rd_pc4_f;
-
-   assign bp_total_branch_offset_f =  bloc_f[1] ^ btb_rd_pc4_f;
-
-   logic [31:2] adder_pc_in_f, ifc_fetch_adder_prior;
-   rvdfflie #(.WIDTH(30), .LEFT(19)) faddrf_ff (.*, .en(ifc_fetch_req_f & ~ifu_bp_hit_taken_f & ic_hit_f), .din(ifc_fetch_addr_f[31:2]), .dout(ifc_fetch_adder_prior[31:2]));
-
-
-   assign ifu_bp_poffset_f[11:0] = btb_rd_tgt_f[11:0];
-
-   assign adder_pc_in_f[31:2] = ( ({30{ use_fa_plus}} & fetch_addr_p1_f[31:2]) |
-                                   ({30{ btb_fg_crossing_f}} & ifc_fetch_adder_prior[31:2]) |
-                                   ({30{~btb_fg_crossing_f & ~use_fa_plus}} & ifc_fetch_addr_f[31:2]));
-
-   rvbradder predtgt_addr (.pc({adder_pc_in_f[31:2], bp_total_branch_offset_f}),
-                         .offset(btb_rd_tgt_f[11:0]),
-                         .dout(bp_btb_target_adder_f[31:1])
-                         );
-   // mux in the return stack address here for a predicted return assuming the RS is valid, quite if no prediction
-   assign ifu_bp_btb_target_f[31:1] = (({31{btb_rd_ret_f & ~btb_rd_call_f & rets_out[0][0] & ifu_bp_hit_taken_f}} & rets_out[0][31:1]) |
-                                       ({31{~(btb_rd_ret_f & ~btb_rd_call_f & rets_out[0][0]) & ifu_bp_hit_taken_f}} & bp_btb_target_adder_f[31:1]) );
-
-
-   // ----------------------------------------------------------------------
-   // Return Stack
-   // ----------------------------------------------------------------------
-
-   rvbradder rs_addr (.pc({adder_pc_in_f[31:2], bp_total_branch_offset_f}),
-                    .offset({11'b0,  ~btb_rd_pc4_f}),
-                    .dout(bp_rs_call_target_f[31:1])
-                         );
-
-   assign rs_push = (btb_rd_call_f & ~btb_rd_ret_f & ifu_bp_hit_taken_f);
-   assign rs_pop = (btb_rd_ret_f & ~btb_rd_call_f & ifu_bp_hit_taken_f);
-   assign rs_hold = ~rs_push & ~rs_pop;
-
-
-
-   // Fetch based (bit 0 is a valid)
-   assign rets_in[0][31:0] = ( ({32{rs_push}} & {bp_rs_call_target_f[31:1], 1'b1}) | // target[31:1], valid
-                               ({32{rs_pop}}  & rets_out[1][31:0]) );
-
-   assign rsenable[0] = ~rs_hold;
-
-   for (i=0; i<pt.RET_STACK_SIZE; i++) begin : retstack
-
-      // for the last entry in the stack, we don't have a pop position
-      if(i==pt.RET_STACK_SIZE-1) begin
-         assign rets_in[i][31:0] = rets_out[i-1][31:0];
-         assign rsenable[i] = rs_push;
-      end
-      else if(i>0) begin
-        assign rets_in[i][31:0] = ( ({32{rs_push}} & rets_out[i-1][31:0]) |
-                                    ({32{rs_pop}}  & rets_out[i+1][31:0]) );
-         assign rsenable[i] = rs_push | rs_pop;
-      end
-      rvdffe #(32) rets_ff (.*, .en(rsenable[i]), .din(rets_in[i][31:0]), .dout(rets_out[i][31:0]));
-
-   end : retstack
-
-   // ----------------------------------------------------------------------
-   // WRITE
-   // ----------------------------------------------------------------------
-
-
-   assign dec_tlu_error_wb = dec_tlu_br0_start_error_wb | dec_tlu_br0_error_wb;
-
-   assign btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-   assign dec_tlu_way_wb = dec_tlu_br0_way_wb;
-
-   assign btb_valid = exu_mp_valid & ~dec_tlu_error_wb;
-
-   assign btb_wr_tag[pt.BTB_BTAG_SIZE-1:0] = exu_mp_btag[pt.BTB_BTAG_SIZE-1:0];
-
-   if(!pt.BTB_FULLYA) begin
-
-      if(pt.BTB_BTAG_FOLD) begin : btbfold
-         eb1_btb_tag_hash_fold #(.pt(pt)) rdtagf  (.hash(fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]),
-                                                    .pc({ifc_fetch_addr_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-         eb1_btb_tag_hash_fold #(.pt(pt)) rdtagp1f(.hash(fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]),
-                                                    .pc({fetch_addr_p1_f[ pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-      end
-      else begin
-         eb1_btb_tag_hash #(.pt(pt)) rdtagf(.hash(fetch_rd_tag_f[pt.BTB_BTAG_SIZE-1:0]),
-                                             .pc({ifc_fetch_addr_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-         eb1_btb_tag_hash #(.pt(pt)) rdtagp1f(.hash(fetch_rd_tag_p1_f[pt.BTB_BTAG_SIZE-1:0]),
-                                               .pc({fetch_addr_p1_f[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1]}));
-      end
-
-      assign btb_wr_en_way0 = ( ({{~exu_mp_way & exu_mp_valid_write & ~dec_tlu_error_wb}}) |
-                                ({{~dec_tlu_way_wb & dec_tlu_error_wb}}));
-
-      assign btb_wr_en_way1 = ( ({{exu_mp_way & exu_mp_valid_write & ~dec_tlu_error_wb}}) |
-                                ({{dec_tlu_way_wb & dec_tlu_error_wb}}));
-      assign btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = dec_tlu_error_wb ? btb_error_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] : exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO];
-
-
-      assign vwayhit_f[1:0] = ( ({2{fetch_start_f[0]}} & {wayhit_f[1:0]}) |
-                                ({2{fetch_start_f[1]}} & {wayhit_p1_f[0], wayhit_f[1]})) & {eoc_mask, 1'b1};
-
-   end // if (!pt.BTB_FULLYA)
-
-   assign btb_wr_data[BTB_DWIDTH-1:0] = {btb_wr_tag[pt.BTB_BTAG_SIZE-1:0], exu_mp_tgt[pt.BTB_TOFFSET_SIZE-1:0], exu_mp_pc4, exu_mp_boffset,
-                                                exu_mp_call | exu_mp_ja, exu_mp_ret | exu_mp_ja, btb_valid} ;
-
-   assign exu_mp_valid_write = exu_mp_valid & exu_mp_ataken & ~exu_mp_pkt.valid;
-   logic [1:0] bht_wr_data0, bht_wr_data2;
-   logic [1:0] bht_wr_en0, bht_wr_en2;
-
-   assign middle_of_bank = exu_mp_pc4 ^ exu_mp_boffset;
-   assign bht_wr_en0[1:0] = {2{exu_mp_valid & ~exu_mp_call & ~exu_mp_ret & ~exu_mp_ja}} & {middle_of_bank, ~middle_of_bank};
-   assign bht_wr_en2[1:0] = {2{dec_tlu_br0_v_wb}} & {dec_tlu_br0_middle_wb, ~dec_tlu_br0_middle_wb} ;
-
-   // Experiments show this is the best priority scheme for same bank/index writes at the same time.
-   assign bht_wr_data0[1:0] = exu_mp_hist[1:0]; // lowest priority
-   assign bht_wr_data2[1:0] = dec_tlu_br0_hist_wb[1:0]; // highest priority
-
-
-
-   logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] bht_rd_addr_f, bht_rd_addr_p1_f, bht_wr_addr0, bht_wr_addr2;
-
-   logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] mp_hashed, br0_hashed_wb, bht_rd_addr_hashed_f, bht_rd_addr_hashed_p1_f;
-   eb1_btb_ghr_hash #(.pt(pt)) mpghrhs  (.hashin(exu_mp_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(exu_mp_eghr[pt.BHT_GHR_SIZE-1:0]), .hash(mp_hashed[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) br0ghrhs (.hashin(dec_tlu_br0_addr_wb[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(exu_i0_br_fghr_wb[pt.BHT_GHR_SIZE-1:0]), .hash(br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) fghrhs (.hashin(btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(fghr[pt.BHT_GHR_SIZE-1:0]), .hash(bht_rd_addr_hashed_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-   eb1_btb_ghr_hash #(.pt(pt)) fghrhs_p1 (.hashin(btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO]), .ghr(fghr[pt.BHT_GHR_SIZE-1:0]), .hash(bht_rd_addr_hashed_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO]));
-
-   assign bht_wr_addr0[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = mp_hashed[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_wr_addr2[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = br0_hashed_wb[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_rd_addr_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = bht_rd_addr_hashed_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-   assign bht_rd_addr_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = bht_rd_addr_hashed_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO];
-
-
-   // ----------------------------------------------------------------------
-   // Structures. Using FLOPS
-   // ----------------------------------------------------------------------
-   // BTB
-   // Entry -> tag[pt.BTB_BTAG_SIZE-1:0], toffset[11:0], pc4, boffset, call, ret, valid
-
-   if(!pt.BTB_FULLYA) begin
-
-      for (j=0 ; j<LRU_SIZE ; j++) begin : BTB_FLOPS
-         // Way 0
-         rvdffe #(17+pt.BTB_BTAG_SIZE) btb_bank0_way0 (.*,
-                    .en(((btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == j) & btb_wr_en_way0)),
-                    .din        (btb_wr_data[BTB_DWIDTH-1:0]),
-                    .dout       (btb_bank0_rd_data_way0_out[j]));
-
-         // Way 1
-         rvdffe #(17+pt.BTB_BTAG_SIZE) btb_bank0_way1 (.*,
-                    .en(((btb_wr_addr[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == j) & btb_wr_en_way1)),
-                    .din        (btb_wr_data[BTB_DWIDTH-1:0]),
-                    .dout       (btb_bank0_rd_data_way1_out[j]));
-
-      end
-
-
-    always_comb begin : BTB_rd_mux
-        btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0] = '0 ;
-        btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0] = '0 ;
-
-        for (int j=0; j< LRU_SIZE; j++) begin
-          if (btb_rd_addr_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == (pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1)'(j)) begin
-
-           btb_bank0_rd_data_way0_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way0_out[j];
-           btb_bank0_rd_data_way1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way1_out[j];
-
-          end
-        end
-        for (int j=0; j< LRU_SIZE; j++) begin
-          if (btb_rd_addr_p1_f[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] == (pt.BTB_ADDR_HI-pt.BTB_ADDR_LO+1)'(j)) begin
-
-           btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way0_out[j];
-           btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH-1:0] =  btb_bank0_rd_data_way1_out[j];
-
-          end
-        end
-    end
-end // if (!pt.BTB_FULLYA)
-
-
-
-
-
-      if(pt.BTB_FULLYA) begin : fa
-
-         logic found1, hit0, hit1;
-         logic btb_used_reset, write_used;
-         logic [$clog2(pt.BTB_SIZE)-1:0] btb_fa_wr_addr0, hit0_index, hit1_index;
-
-         logic [pt.BTB_SIZE-1:0]         btb_tag_hit, btb_offset_0, btb_offset_1, btb_used_ns, btb_used,
-                                         wr0_en, btb_upper_hit;
-         logic [pt.BTB_SIZE-1:0][BTB_DWIDTH-1:0] btbdata;
-
-         // Fully Associative tag hash uses bits 31:3. Bits 2:1 are the offset bits used for the 4 tag comp banks
-         // Full tag used to speed up lookup. There is one 31:3 cmp per entry, and 4 2:1 cmps per entry.
-
-         logic [FA_CMP_LOWER-1:1]  ifc_fetch_addr_p1_f;
-
-
-         assign ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1] = ifc_fetch_addr_f[FA_CMP_LOWER-1:1] + 1'b1;
-
-         assign fetch_mp_collision_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == ifc_fetch_addr_f[31:1]) &
-                                      exu_mp_valid & ifc_fetch_req_f & ~exu_mp_pkt.way);
-         assign fetch_mp_collision_p1_f = ( (exu_mp_btag[pt.BTB_BTAG_SIZE-1:0] == {ifc_fetch_addr_f[31:FA_CMP_LOWER], ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1]}) &
-                                      exu_mp_valid & ifc_fetch_req_f & ~exu_mp_pkt.way);
-
-      always_comb begin
-         btb_vbank0_rd_data_f = '0;
-         btb_vbank1_rd_data_f = '0;
-         btb_tag_hit = '0;
-         btb_upper_hit = '0;
-         btb_offset_0 = '0;
-         btb_offset_1 = '0;
-
-         found1 = 1'b0;
-         hit0 = 1'b0;
-         hit1 = 1'b0;
-         hit0_index = '0;
-         hit1_index = '0;
-         btb_fa_wr_addr0 = '0;
-
-         for(int i=0; i<pt.BTB_SIZE; i++) begin
-            // Break the cmp into chunks for lower area.
-            // Chunk1: FA 31:6 or 31:5 depending on icache line size
-            // Chunk2: FA 5:1 or 4:1 depending on icache line size
-            btb_upper_hit[i] = (btbdata[i][BTB_DWIDTH_TOP:FA_TAG_END_UPPER] == ifc_fetch_addr_f[31:FA_CMP_LOWER]) & btbdata[i][0] & ~wr0_en[i];
-            btb_offset_0[i] = (btbdata[i][FA_TAG_START_LOWER:FA_TAG_END_LOWER] == ifc_fetch_addr_f[FA_CMP_LOWER-1:1]) & btb_upper_hit[i];
-            btb_offset_1[i] = (btbdata[i][FA_TAG_START_LOWER:FA_TAG_END_LOWER] == ifc_fetch_addr_p1_f[FA_CMP_LOWER-1:1]) & btb_upper_hit[i];
-
-            if(~hit0) begin
-               if(btb_offset_0[i]) begin
-                  hit0_index[BTB_FA_INDEX:0] = (BTB_FA_INDEX+1)'(i);
-                  // hit unless we are also writing this entry at the same time
-                  hit0 = 1'b1;
-               end
-            end
-            if(~hit1) begin
-               if(btb_offset_1[i]) begin
-                  hit1_index[BTB_FA_INDEX:0] = (BTB_FA_INDEX+1)'(i);
-                  hit1 = 1'b1;
-               end
-            end
-
-
-            // Mux out the 2 potential branches
-            if(btb_offset_0[i] == 1'b1)
-              btb_vbank0_rd_data_f[BTB_DWIDTH-1:0] = fetch_mp_collision_f ? btb_wr_data : btbdata[i];
-            if(btb_offset_1[i] == 1'b1)
-              btb_vbank1_rd_data_f[BTB_DWIDTH-1:0] = fetch_mp_collision_p1_f ? btb_wr_data : btbdata[i];
-
-            // find the first zero from bit zero in the used vector, this is the write address
-            if(~found1) begin
-               if(~btb_used[i]) begin
-                  btb_fa_wr_addr0[BTB_FA_INDEX:0] = i[BTB_FA_INDEX:0];
-                  found1 = 1'b1;
-               end
-            end
-         end
-      end // always_comb begin
-
-
-   assign vwayhit_f[1:0] = {hit1, hit0} & {eoc_mask, 1'b1};
-
-   // way bit is reused as the predicted bit
-   assign way_raw[1:0] =  vwayhit_f[1:0] | {fetch_mp_collision_p1_f, fetch_mp_collision_f};
-
-   for (j=0 ; j<pt.BTB_SIZE ; j++) begin : BTB_FAFLOPS
-
-      assign wr0_en[j] = ((btb_fa_wr_addr0[BTB_FA_INDEX:0] == j) & (exu_mp_valid_write & ~exu_mp_pkt.way)) |
-                         ((dec_fa_error_index == j) & dec_tlu_error_wb);
-
-      rvdffe #(BTB_DWIDTH) btb_fa (.*, .clk(clk),
-                                   .en  (wr0_en[j]),
-                                   .din (btb_wr_data[BTB_DWIDTH-1:0]),
-                                   .dout(btbdata[j]));
-   end // block: BTB_FAFLOPS
-
-   assign ifu_bp_fa_index_f[1] = hit1 ? hit1_index : '0;
-   assign ifu_bp_fa_index_f[0] = hit0 ? hit0_index : '0;
-
-   assign btb_used_reset = &btb_used[pt.BTB_SIZE-1:0];
-   assign btb_used_ns[pt.BTB_SIZE-1:0] = ({pt.BTB_SIZE{vwayhit_f[1]}} & (32'b1 << hit1_index[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{vwayhit_f[0]}} & (32'b1 << hit0_index[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{exu_mp_valid_write & ~exu_mp_pkt.way & ~dec_tlu_error_wb}} & (32'b1 << btb_fa_wr_addr0[BTB_FA_INDEX:0])) |
-                                         ({pt.BTB_SIZE{btb_used_reset}} & {pt.BTB_SIZE{1'b0}}) |
-                                         ({pt.BTB_SIZE{~btb_used_reset & dec_tlu_error_wb}} & (btb_used[pt.BTB_SIZE-1:0] & ~(32'b1 << dec_fa_error_index[BTB_FA_INDEX:0]))) |
-                                         (~{pt.BTB_SIZE{btb_used_reset | dec_tlu_error_wb}} & btb_used[pt.BTB_SIZE-1:0]);
-
-   assign write_used = btb_used_reset | ifu_bp_hit_taken_f | exu_mp_valid_write | dec_tlu_error_wb;
-
-
-   rvdffe #(pt.BTB_SIZE) btb_usedf (.*, .clk(clk),
-                    .en  (write_used),
-                    .din (btb_used_ns[pt.BTB_SIZE-1:0]),
-                    .dout(btb_used[pt.BTB_SIZE-1:0]));
-
-end // block: fa
-
-
-   //-----------------------------------------------------------------------------
-   // BHT
-   // 2 bit Entry -> direction, strength
-   //
-   //-----------------------------------------------------------------------------
-
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0][NUM_BHT_LOOP-1:0][1:0]      bht_bank_wr_data ;
-   logic [1:0] [pt.BHT_ARRAY_DEPTH-1:0] [1:0]                bht_bank_rd_data_out ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0]                 bht_bank_clken ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0]                 bht_bank_clk   ;
-   logic [1:0] [(pt.BHT_ARRAY_DEPTH/NUM_BHT_LOOP)-1:0][NUM_BHT_LOOP-1:0]           bht_bank_sel   ;
-
-   for ( i=0; i<2; i++) begin : BANKS
-     for (genvar k=0 ; k < (pt.BHT_ARRAY_DEPTH)/NUM_BHT_LOOP ; k++) begin : BHT_CLK_GROUP
-     assign bht_bank_clken[i][k]  = (bht_wr_en0[i] & ((bht_wr_addr0[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) |  BHT_NO_ADDR_MATCH)) |
-                                    (bht_wr_en2[i] & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) |  BHT_NO_ADDR_MATCH));
-
-     rvclkhdr bht_bank_grp_cgc ( .en(bht_bank_clken[i][k]), .l1clk(bht_bank_clk[i][k]), .* ); // ifndef RV_FPGA_OPTIMIZE
-
-
-     for (j=0 ; j<NUM_BHT_LOOP ; j++) begin : BHT_FLOPS
-       assign   bht_bank_sel[i][k][j]    = (bht_wr_en0[i] & (bht_wr_addr0[NUM_BHT_LOOP_INNER_HI :pt.BHT_ADDR_LO] == j) & ((bht_wr_addr0[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) |
-                                           (bht_wr_en2[i] & (bht_wr_addr2[NUM_BHT_LOOP_INNER_HI :pt.BHT_ADDR_LO] == j) & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) ;
-
-       assign bht_bank_wr_data[i][k][j]  = (bht_wr_en2[i] & (bht_wr_addr2[NUM_BHT_LOOP_INNER_HI:pt.BHT_ADDR_LO] == j) & ((bht_wr_addr2[pt.BHT_ADDR_HI: NUM_BHT_LOOP_OUTER_LO]==k) | BHT_NO_ADDR_MATCH)) ? bht_wr_data2[1:0] :
-                                                                                                                      bht_wr_data0[1:0]   ;
-
-
-          rvdffs_fpga #(2) bht_bank (.*,
-                    .clk        (bht_bank_clk[i][k]),
-                    .en         (bht_bank_sel[i][k][j]),
-                    .rawclk     (clk),
-                    .clken      (bht_bank_sel[i][k][j]),
-                    .din        (bht_bank_wr_data[i][k][j]),
-                    .dout       (bht_bank_rd_data_out[i][(16*k)+j]));
-
-      end // block: BHT_FLOPS
-   end // block: BHT_CLK_GROUP
- end // block: BANKS
-
-    always_comb begin : BHT_rd_mux
-     bht_bank0_rd_data_f[1:0] = '0 ;
-     bht_bank1_rd_data_f[1:0] = '0 ;
-     bht_bank0_rd_data_p1_f[1:0] = '0 ;
-     for (int j=0; j< pt.BHT_ARRAY_DEPTH; j++) begin
-       if (bht_rd_addr_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] == (pt.BHT_ADDR_HI-pt.BHT_ADDR_LO+1)'(j)) begin
-         bht_bank0_rd_data_f[1:0] = bht_bank_rd_data_out[0][j];
-         bht_bank1_rd_data_f[1:0] = bht_bank_rd_data_out[1][j];
-       end
-       if (bht_rd_addr_p1_f[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] == (pt.BHT_ADDR_HI-pt.BHT_ADDR_LO+1)'(j)) begin
-         bht_bank0_rd_data_p1_f[1:0] = bht_bank_rd_data_out[0][j];
-       end
-      end
-    end // block: BHT_rd_mux
-
-
-function [1:0] countones;
-      input [1:0] valid;
-
-      begin
-
-countones[1:0] = {2'b0, valid[1]} +
-                 {2'b0, valid[0]};
-      end
-   endfunction
-endmodule // eb1_ifu_bp_ctl
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-// purpose of this file is to convert 16b RISCV compressed instruction into 32b equivalent
-
-module eb1_ifu_compress_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input  logic [15:0] din,        // 16-bit   compressed instruction
-   output logic [31:0] dout        // 32-bit uncompressed instruction
-   );
-
-
-   logic               legal;
-
-   logic [15:0]  i;
-
-   logic [31:0]  o,l1,l2,l3;
-
-
-   assign i[15:0] = din[15:0];
-
-
-   logic [4:0]   rs2d,rdd,rdpd,rs2pd;
-
-   logic rdrd;
-   logic rdrs1;
-   logic rs2rs2;
-   logic rdprd;
-   logic rdprs1;
-   logic rs2prs2;
-   logic rs2prd;
-   logic uimm9_2;
-   logic ulwimm6_2;
-   logic ulwspimm7_2;
-   logic rdeq2;
-   logic rdeq1;
-   logic rs1eq2;
-   logic sbroffset8_1;
-   logic simm9_4;
-   logic simm5_0;
-   logic sjaloffset11_1;
-   logic sluimm17_12;
-   logic uimm5_0;
-   logic uswimm6_2;
-   logic uswspimm7_2;
-
-
-
-   // form the opcodes
-
-   // formats
-   //
-   // c.add rd 11:7 rs2  6:2
-   // c.and rdp 9:7 rs2p 4:2
-   //
-   // add rs2 24:20 rs1 19:15  rd 11:7
-
-   assign rs2d[4:0] = i[6:2];
-
-   assign rdd[4:0] = i[11:7];
-
-   assign rdpd[4:0] = {2'b01, i[9:7]};
-
-   assign rs2pd[4:0] = {2'b01, i[4:2]};
-
-
-
-   // merge in rd, rs1, rs2
-
-
-   // rd
-   assign l1[6:0] = o[6:0];
-
-   assign l1[11:7] = o[11:7] |
-                     ({5{rdrd}} & rdd[4:0]) |
-                     ({5{rdprd}} & rdpd[4:0]) |
-                     ({5{rs2prd}} & rs2pd[4:0]) |
-                     ({5{rdeq1}} & 5'd1) |
-                     ({5{rdeq2}} & 5'd2);
-
-
-   // rs1
-   assign l1[14:12] = o[14:12];
-   assign l1[19:15] = o[19:15] |
-                      ({5{rdrs1}} & rdd[4:0]) |
-                      ({5{rdprs1}} & rdpd[4:0]) |
-                      ({5{rs1eq2}} & 5'd2);
-
-
-   // rs2
-   assign l1[24:20] = o[24:20] |
-                      ({5{rs2rs2}} & rs2d[4:0]) |
-                      ({5{rs2prs2}} & rs2pd[4:0]);
-
-   assign l1[31:25] = o[31:25];
-
-   logic [5:0] simm5d;
-   logic [9:2] uimm9d;
-
-   logic [9:4] simm9d;
-   logic [6:2] ulwimm6d;
-   logic [7:2] ulwspimm7d;
-   logic [5:0] uimm5d;
-   logic [20:1] sjald;
-
-   logic [31:12] sluimmd;
-
-   // merge in immediates + jal offset
-
-   assign simm5d[5:0] = { i[12], i[6:2] };
-
-   assign uimm9d[9:2] = { i[10:7], i[12:11], i[5], i[6] };
-
-   assign simm9d[9:4] = { i[12], i[4:3], i[5], i[2], i[6] };
-
-   assign ulwimm6d[6:2] = { i[5], i[12:10], i[6] };
-
-   assign ulwspimm7d[7:2] = { i[3:2], i[12], i[6:4] };
-
-   assign uimm5d[5:0] = { i[12], i[6:2] };
-
-   assign sjald[11:1] = { i[12], i[8], i[10:9], i[6], i[7], i[2], i[11], i[5:4], i[3] };
-
-   assign sjald[20:12] =  {9{i[12]}};
-
-
-
-   assign sluimmd[31:12] = { {15{i[12]}}, i[6:2] };
-
-
-   assign l2[31:20] = ( l1[31:20] ) |
-                      ( {12{simm5_0}}   &  {{7{simm5d[5]}},simm5d[4:0]} ) |
-                      ( {12{uimm9_2}}   &  {2'b0,uimm9d[9:2],2'b0} ) |
-                      ( {12{simm9_4}}   &   {{3{simm9d[9]}},simm9d[8:4],4'b0} ) |
-                      ( {12{ulwimm6_2}} &   {5'b0,ulwimm6d[6:2],2'b0} ) |
-                      ( {12{ulwspimm7_2}}  & {4'b0,ulwspimm7d[7:2],2'b0} ) |
-                      ( {12{uimm5_0}}      &    {6'b0,uimm5d[5:0]} ) |
-                      ( {12{sjaloffset11_1}} &  {sjald[20],sjald[10:1],sjald[11]} ) |
-                      ( {12{sluimm17_12}}    &  sluimmd[31:20] );
-
-
-
-   assign l2[19:12] = ( l1[19:12] ) |
-                      ( {8{sjaloffset11_1}} & sjald[19:12] ) |
-                      ( {8{sluimm17_12}} & sluimmd[19:12] );
-
-
-   assign l2[11:0] = l1[11:0];
-
-
-   // merge in branch offset and store immediates
-
-   logic [8:1]   sbr8d;
-   logic [6:2]   uswimm6d;
-   logic [7:2]   uswspimm7d;
-
-
-   assign sbr8d[8:1] =   { i[12], i[6], i[5], i[2], i[11], i[10], i[4], i[3] };
-
-   assign uswimm6d[6:2] = { i[5], i[12:10], i[6] };
-
-   assign uswspimm7d[7:2] = { i[8:7], i[12:9] };
-
-   assign l3[31:25] = ( l2[31:25] ) |
-                      ( {7{sbroffset8_1}} & { {4{sbr8d[8]}},sbr8d[7:5] } ) |
-                      ( {7{uswimm6_2}}    & { 5'b0, uswimm6d[6:5] } ) |
-                      ( {7{uswspimm7_2}} & { 4'b0, uswspimm7d[7:5] } );
-
-
-   assign l3[24:12] = l2[24:12];
-
-   assign l3[11:7] = ( l2[11:7] ) |
-                     ( {5{sbroffset8_1}} & { sbr8d[4:1], sbr8d[8] } ) |
-                     ( {5{uswimm6_2}} & { uswimm6d[4:2], 2'b0 } ) |
-                     ( {5{uswspimm7_2}} & { uswspimm7d[4:2], 2'b0 } );
-
-   assign l3[6:0] = l2[6:0];
-
-
-   assign dout[31:0] = l3[31:0] & {32{legal}};
-
-
-// file "cdecode" is human readable file that has all of the compressed instruction decodes defined and is part of git repo
-// modify this file as needed
-
-// to generate all the equations below from "cdecode" except legal equation:
-
-// 1) coredecode -in cdecode > cdecode.e
-
-// 2) espresso -Dso -oeqntott cdecode.e | addassign > compress_equations
-
-// to generate the legal (16b compressed instruction is legal)  equation below:
-
-// 1) coredecode -in cdecode -legal > clegal.e
-
-// 2) espresso -Dso -oeqntott clegal.e | addassign > clegal_equation
-
-
-
-
-
-// espresso decodes
-assign rdrd = (!i[14]&i[6]&i[1]) | (!i[15]&i[14]&i[11]&i[0]) | (!i[14]&i[5]&i[1]) | (
-    !i[15]&i[14]&i[10]&i[0]) | (!i[14]&i[4]&i[1]) | (!i[15]&i[14]&i[9]
-    &i[0]) | (!i[14]&i[3]&i[1]) | (!i[15]&i[14]&!i[8]&i[0]) | (!i[14]
-    &i[2]&i[1]) | (!i[15]&i[14]&i[7]&i[0]) | (!i[15]&i[1]) | (!i[15]
-    &!i[13]&i[0]);
-
-assign rdrs1 = (!i[14]&i[12]&i[11]&i[1]) | (!i[14]&i[12]&i[10]&i[1]) | (!i[14]
-    &i[12]&i[9]&i[1]) | (!i[14]&i[12]&i[8]&i[1]) | (!i[14]&i[12]&i[7]
-    &i[1]) | (!i[14]&!i[12]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[6]&i[1]) | (!i[14]&i[12]&i[5]&i[1]) | (!i[14]&i[12]&i[4]
-    &i[1]) | (!i[14]&i[12]&i[3]&i[1]) | (!i[14]&i[12]&i[2]&i[1]) | (
-    !i[15]&!i[14]&!i[13]&i[0]) | (!i[15]&!i[14]&i[1]);
-
-assign rs2rs2 = (i[15]&i[6]&i[1]) | (i[15]&i[5]&i[1]) | (i[15]&i[4]&i[1]) | (
-    i[15]&i[3]&i[1]) | (i[15]&i[2]&i[1]) | (i[15]&i[14]&i[1]);
-
-assign rdprd = (i[15]&!i[14]&!i[13]&i[0]);
-
-assign rdprs1 = (i[15]&!i[13]&i[0]) | (i[15]&i[14]&i[0]) | (i[14]&!i[1]&!i[0]);
-
-assign rs2prs2 = (i[15]&!i[14]&!i[13]&i[11]&i[10]&i[0]) | (i[15]&!i[1]&!i[0]);
-
-assign rs2prd = (!i[15]&!i[1]&!i[0]);
-
-assign uimm9_2 = (!i[14]&!i[1]&!i[0]);
-
-assign ulwimm6_2 = (!i[15]&i[14]&!i[1]&!i[0]);
-
-assign ulwspimm7_2 = (!i[15]&i[14]&i[1]);
-
-assign rdeq2 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]);
-
-assign rdeq1 = (!i[14]&i[12]&i[11]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[10]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[9]
-    &!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[8]&!i[6]&!i[5]
-    &!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[7]&!i[6]&!i[5]&!i[4]&!i[3]
-    &!i[2]&i[1]) | (!i[15]&!i[14]&i[13]);
-
-assign rs1eq2 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]) | (i[14]
-    &i[1]) | (!i[14]&!i[1]&!i[0]);
-
-assign sbroffset8_1 = (i[15]&i[14]&i[0]);
-
-assign simm9_4 = (!i[15]&i[14]&i[13]&!i[11]&!i[10]&!i[9]&i[8]&!i[7]);
-
-assign simm5_0 = (!i[14]&!i[13]&i[11]&!i[10]&i[0]) | (!i[15]&!i[13]&i[0]);
-
-assign sjaloffset11_1 = (!i[14]&i[13]);
-
-assign sluimm17_12 = (!i[15]&i[14]&i[13]&i[7]) | (!i[15]&i[14]&i[13]&!i[8]) | (
-    !i[15]&i[14]&i[13]&i[9]) | (!i[15]&i[14]&i[13]&i[10]) | (!i[15]&i[14]
-    &i[13]&i[11]);
-
-assign uimm5_0 = (i[15]&!i[14]&!i[13]&!i[11]&i[0]) | (!i[15]&!i[14]&i[1]);
-
-assign uswimm6_2 = (i[15]&!i[1]&!i[0]);
-
-assign uswspimm7_2 = (i[15]&i[14]&i[1]);
-
-assign o[31]  = 1'b0;
-
-assign o[30] = (i[15]&!i[14]&!i[13]&i[10]&!i[6]&!i[5]&i[0]) | (i[15]&!i[14]
-    &!i[13]&!i[11]&i[10]&i[0]);
-
-assign o[29]  = 1'b0;
-
-assign o[28]  = 1'b0;
-
-assign o[27]  = 1'b0;
-
-assign o[26]  = 1'b0;
-
-assign o[25]  = 1'b0;
-
-assign o[24]  = 1'b0;
-
-assign o[23]  = 1'b0;
-
-assign o[22]  = 1'b0;
-
-assign o[21]  = 1'b0;
-
-assign o[20] = (!i[14]&i[12]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[6]&!i[5]&!i[4]
-    &!i[3]&!i[2]&i[1]);
-
-assign o[19]  = 1'b0;
-
-assign o[18]  = 1'b0;
-
-assign o[17]  = 1'b0;
-
-assign o[16]  = 1'b0;
-
-assign o[15]  = 1'b0;
-
-assign o[14] = (i[15]&!i[14]&!i[13]&!i[11]&i[0]) | (i[15]&!i[14]&!i[13]&!i[10]
-    &i[0]) | (i[15]&!i[14]&!i[13]&i[6]&i[0]) | (i[15]&!i[14]&!i[13]&i[5]
-    &i[0]);
-
-assign o[13] = (i[15]&!i[14]&!i[13]&i[11]&!i[10]&i[0]) | (i[15]&!i[14]&!i[13]
-    &i[11]&i[6]&i[0]) | (i[14]&!i[0]);
-
-assign o[12] = (i[15]&!i[14]&!i[13]&i[6]&i[5]&i[0]) | (i[15]&!i[14]&!i[13]&!i[11]
-    &i[0]) | (i[15]&!i[14]&!i[13]&!i[10]&i[0]) | (!i[15]&!i[14]&i[1]) | (
-    i[15]&i[14]&i[13]);
-
-assign o[11]  = 1'b0;
-
-assign o[10]  = 1'b0;
-
-assign o[9]  = 1'b0;
-
-assign o[8]  = 1'b0;
-
-assign o[7]  = 1'b0;
-
-assign o[6] = (i[15]&!i[14]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&!i[0]) | (!i[14]&i[13]) | (
-    i[15]&i[14]&i[0]);
-
-assign o[5] = (i[15]&!i[0]) | (i[15]&i[11]&i[10]) | (i[13]&!i[8]) | (i[13]&i[7]) | (
-    i[13]&i[9]) | (i[13]&i[10]) | (i[13]&i[11]) | (!i[14]&i[13]) | (
-    i[15]&i[14]);
-
-assign o[4] = (!i[14]&!i[11]&!i[10]&!i[9]&!i[8]&!i[7]&!i[0]) | (!i[15]&!i[14]
-    &!i[0]) | (!i[14]&i[6]&!i[0]) | (!i[15]&i[14]&i[0]) | (!i[14]&i[5]
-    &!i[0]) | (!i[14]&i[4]&!i[0]) | (!i[14]&!i[13]&i[0]) | (!i[14]&i[3]
-    &!i[0]) | (!i[14]&i[2]&!i[0]);
-
-assign o[3] = (!i[14]&i[13]);
-
-assign o[2] = (!i[14]&i[12]&i[11]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]
-    &i[12]&i[10]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[9]
-    &!i[6]&!i[5]&!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[8]&!i[6]&!i[5]
-    &!i[4]&!i[3]&!i[2]&i[1]) | (!i[14]&i[12]&i[7]&!i[6]&!i[5]&!i[4]&!i[3]
-    &!i[2]&i[1]) | (i[15]&!i[14]&!i[12]&!i[6]&!i[5]&!i[4]&!i[3]&!i[2]
-    &!i[0]) | (!i[15]&i[13]&!i[8]) | (!i[15]&i[13]&i[7]) | (!i[15]&i[13]
-    &i[9]) | (!i[15]&i[13]&i[10]) | (!i[15]&i[13]&i[11]) | (!i[14]&i[13]);
-
-// 32b instruction has lower two bits 2'b11
-
-assign o[1]  = 1'b1;
-
-assign o[0]  = 1'b1;
-
-assign legal = (!i[13]&!i[12]&i[11]&i[1]&!i[0]) | (!i[13]&!i[12]&i[6]&i[1]&!i[0]) | (
-    !i[15]&!i[13]&i[11]&!i[1]) | (!i[13]&!i[12]&i[5]&i[1]&!i[0]) | (
-    !i[13]&!i[12]&i[10]&i[1]&!i[0]) | (!i[15]&!i[13]&i[6]&!i[1]) | (
-    i[15]&!i[12]&!i[1]&i[0]) | (!i[13]&!i[12]&i[9]&i[1]&!i[0]) | (!i[12]
-    &i[6]&!i[1]&i[0]) | (!i[15]&!i[13]&i[5]&!i[1]) | (!i[13]&!i[12]&i[8]
-    &i[1]&!i[0]) | (!i[12]&i[5]&!i[1]&i[0]) | (!i[15]&!i[13]&i[10]&!i[1]) | (
-    !i[13]&!i[12]&i[7]&i[1]&!i[0]) | (i[12]&i[11]&!i[10]&!i[1]&i[0]) | (
-    !i[15]&!i[13]&i[9]&!i[1]) | (!i[13]&!i[12]&i[4]&i[1]&!i[0]) | (i[13]
-    &i[12]&!i[1]&i[0]) | (!i[15]&!i[13]&i[8]&!i[1]) | (!i[13]&!i[12]&i[3]
-    &i[1]&!i[0]) | (i[13]&i[4]&!i[1]&i[0]) | (!i[13]&!i[12]&i[2]&i[1]
-    &!i[0]) | (!i[15]&!i[13]&i[7]&!i[1]) | (i[13]&i[3]&!i[1]&i[0]) | (
-    i[13]&i[2]&!i[1]&i[0]) | (i[14]&!i[13]&!i[1]) | (!i[14]&!i[12]&!i[1]
-    &i[0]) | (i[15]&!i[13]&i[12]&i[1]&!i[0]) | (!i[15]&!i[13]&!i[12]&i[1]
-    &!i[0]) | (!i[15]&!i[13]&i[12]&!i[1]) | (i[14]&!i[13]&!i[0]);
-
-
-
-
-endmodule
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-//********************************************************************************
-// Icache closely coupled memory --- ICCM
-//********************************************************************************
-
-module eb1_ifu_iccm_mem
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-
-   input logic 					VPWR,
-   input logic						VGND,
-   
-   input logic                                        clk,                                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                                        active_clk,                          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                                        rst_l,                               // reset, active low
-   input logic                                        clk_override,                        // Override non-functional clock gating
-
-   input logic                                        iccm_wren,                           // ICCM write enable
-   input logic                                        iccm_rden,                           // ICCM read enable
-   input logic [pt.ICCM_BITS-1:1]                     iccm_rw_addr,                        // ICCM read/write address
-   input logic                                        iccm_buf_correct_ecc,                // ICCM is doing a single bit error correct cycle
-   input logic                                        iccm_correction_state,               // ICCM under a correction - This is needed to guard replacements when hit
-   input logic [2:0]                                  iccm_wr_size,                        // ICCM write size
-   input logic [77:0]                                 iccm_wr_data,                        // ICCM write data
-
-   input eb1_ccm_ext_in_pkt_t [pt.ICCM_NUM_BANKS-1:0] iccm_ext_in_pkt,                    // External packet
-
-   output logic [63:0]                                iccm_rd_data,                        // ICCM read data
-   output logic [77:0]                                iccm_rd_data_ecc,                    // ICCM read ecc
-   input  logic                                       scan_mode                            // Scan mode control
-
-);
-
-
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                wren_bank;
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                rden_bank;
-   logic [pt.ICCM_NUM_BANKS-1:0]                                                iccm_clken;
-   logic [pt.ICCM_NUM_BANKS-1:0] [pt.ICCM_BITS-1:pt.ICCM_BANK_INDEX_LO] addr_bank;
-
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_dout, iccm_bank_dout_fn;
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_wr_data;
-   logic [pt.ICCM_BITS-1:1]              addr_bank_inc;
-   logic [pt.ICCM_BANK_HI : 2]           iccm_rd_addr_hi_q;
-   logic [pt.ICCM_BANK_HI : 1]           iccm_rd_addr_lo_q;
-   logic             [63:0]              iccm_rd_data_pre;
-   logic             [63:0]              iccm_data;
-   logic [1:0]                           addr_incr;
-   logic [pt.ICCM_NUM_BANKS-1:0] [38:0]  iccm_bank_wr_data_vec;
-
-   // logic to handle hard persisten faults
-   logic [1:0] [pt.ICCM_BITS-1:2]        redundant_address;
-   logic [1:0] [38:0]                    redundant_data;
-   logic [1:0]                           redundant_valid;
-   logic [pt.ICCM_NUM_BANKS-1:0]         sel_red1, sel_red0, sel_red1_q, sel_red0_q;
-
-
-   logic [38:0]                          redundant_data0_in, redundant_data1_in;
-   logic                                 redundant_lru, redundant_lru_in, redundant_lru_en;
-   logic                                 redundant_data0_en;
-   logic                                 redundant_data1_en;
-   logic                                 r0_addr_en, r1_addr_en;
-
-   // Testing persistent flip
-   //   logic [3:0]                              not_iccm_bank_dout;
-   //   logic [15:3]                     ecc_insert_flip_in, ecc_insert_flip;
-   //   logic                                 flip_en, flip_match, flip_match_q;
-   //
-   //   assign      flip_in = (iccm_rw_addr[3:2] != 2'b00);    // dont flip when bank0 - this is to make some progress in DMA streaming cases
-   //   assign      flip_en = iccm_rden;
-   //
-   //   rvdffs #(1) flipmatch  (.*,
-   //                   .clk(clk),
-   //                   .din(flip_in),
-   //                   .en(flip_en),
-   //                   .dout(flip_match_q));
-   //
-   // end of testing flip
-
-
-   assign addr_incr[1:0]                    = (iccm_wr_size[1:0] == 2'b11) ?  2'b10: 2'b01;
-   assign addr_bank_inc[pt.ICCM_BITS-1 : 1] = iccm_rw_addr[pt.ICCM_BITS-1 : 1] + addr_incr[1:0];
-
-   for (genvar i=0; i<pt.ICCM_NUM_BANKS/2; i++) begin: mem_bank_data
-      assign iccm_bank_wr_data_vec[(2*i)]   = iccm_wr_data[38:0];
-      assign iccm_bank_wr_data_vec[(2*i)+1] = iccm_wr_data[77:39];
-   end
-
-   for (genvar i=0; i<pt.ICCM_NUM_BANKS; i++) begin: mem_bank
-      assign wren_bank[i]         = iccm_wren & ((iccm_rw_addr[pt.ICCM_BANK_HI:2] == i) | (addr_bank_inc[pt.ICCM_BANK_HI:2] == i));
-      assign iccm_bank_wr_data[i] = iccm_bank_wr_data_vec[i];
-      assign rden_bank[i]         = iccm_rden & ( (iccm_rw_addr[pt.ICCM_BANK_HI:2] == i) | (addr_bank_inc[pt.ICCM_BANK_HI:2] == i));
-      assign iccm_clken[i]        =  wren_bank[i] | rden_bank[i] | clk_override;
-      assign addr_bank[i][pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] = wren_bank[i] ? iccm_rw_addr[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] :
-                                                                                      ((addr_bank_inc[pt.ICCM_BANK_HI:2] == i) ?
-                                                                                                    addr_bank_inc[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO] :
-                                                                                                    iccm_rw_addr[pt.ICCM_BITS-1 : pt.ICCM_BANK_INDEX_LO]);
-
-
-     if (pt.ICCM_INDEX_BITS == 6 ) begin : iccm
-               ram_64x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-
-   else if (pt.ICCM_INDEX_BITS == 7 ) begin : iccm
-               ram_128x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-
-     else if (pt.ICCM_INDEX_BITS == 8 ) begin : iccm
-               /*ram_256x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );*/
-                                      sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									.vccd1(VPWR),
-    									.vssd1(VGND),
-									.clk0(clk),
-									.csb0(~iccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(iccm_bank_wr_data[i][31:0]),
-									.dout0(iccm_bank_dout[i][31:0]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-  					);
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 9 ) begin : iccm
-               ram_512x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 10 ) begin : iccm
-              /* ram_1024x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-                                     );*/
-                                     
-                                     sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									
-    									.vccd1(VPWR),
-    									.vssd1(VGND),
-    									
-									.clk0(clk),
-									.csb0(~iccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(iccm_bank_wr_data[i]),
-									.dout0(iccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-  					);
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 11 ) begin : iccm
-               ram_2048x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 12 ) begin : iccm
-               ram_4096x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 13 ) begin : iccm
-               ram_8192x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else if (pt.ICCM_INDEX_BITS == 14 ) begin : iccm
-               ram_16384x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-     else begin : iccm
-               ram_32768x39 iccm_bank (
-                                     // Primary ports
-                                     .CLK(clk),
-                                     .ME(iccm_clken[i]),
-                                     .WE(wren_bank[i]),
-                                     .ADR(addr_bank[i]),
-                                     .D(iccm_bank_wr_data[i][38:0]),
-                                     .Q(iccm_bank_dout[i][38:0]),
-                                     .ROP ( ),
-                                     // These are used by SoC
-                                     .TEST1(iccm_ext_in_pkt[i].TEST1),
-                                     .RME(iccm_ext_in_pkt[i].RME),
-                                     .RM(iccm_ext_in_pkt[i].RM),
-                                     .LS(iccm_ext_in_pkt[i].LS),
-                                     .DS(iccm_ext_in_pkt[i].DS),
-                                     .SD(iccm_ext_in_pkt[i].SD) ,
-                                     .TEST_RNM(iccm_ext_in_pkt[i].TEST_RNM),
-                                     .BC1(iccm_ext_in_pkt[i].BC1),
-                                     .BC2(iccm_ext_in_pkt[i].BC2)
-
-                                      );
-     end // block: iccm
-
-
-   // match the redundant rows
-   assign sel_red1[i]  = (redundant_valid[1]  & (((iccm_rw_addr[pt.ICCM_BITS-1:2] == redundant_address[1][pt.ICCM_BITS-1:2]) & (iccm_rw_addr[3:2] == i)) |
-                                                 ((addr_bank_inc[pt.ICCM_BITS-1:2]== redundant_address[1][pt.ICCM_BITS-1:2]) & (addr_bank_inc[3:2] == i))));
-
-   assign sel_red0[i]  = (redundant_valid[0]  & (((iccm_rw_addr[pt.ICCM_BITS-1:2] == redundant_address[0][pt.ICCM_BITS-1:2]) & (iccm_rw_addr[3:2] == i)) |
-                                                 ((addr_bank_inc[pt.ICCM_BITS-1:2]== redundant_address[0][pt.ICCM_BITS-1:2]) & (addr_bank_inc[3:2] == i))));
-
-   rvdff #(1) selred0  (.*,
-                   .clk(active_clk),
-                   .din(sel_red0[i]),
-                   .dout(sel_red0_q[i]));
-
-   rvdff #(1) selred1  (.*,
-                   .clk(active_clk),
-                   .din(sel_red1[i]),
-                   .dout(sel_red1_q[i]));
-
-
-  // muxing out the memory data with the redundant data if the address matches
-   assign iccm_bank_dout_fn[i][38:0] = ({39{sel_red1_q[i]}}                         & redundant_data[1][38:0]) |
-                                       ({39{sel_red0_q[i]}}                         & redundant_data[0][38:0]) |
-                                       ({39{~sel_red0_q[i] & ~sel_red1_q[i]}}       & iccm_bank_dout[i][38:0]);
-
-  end : mem_bank
-// This section does the redundancy for tolerating single bit errors
-// 2x 39 bit data values with address[hi:2] and a valid bit is needed to CAM and sub out the reads/writes to the particular locations
-// Also a LRU flop is kept to decide which of the redundant element to replace.
-   assign r0_addr_en              = ~redundant_lru & iccm_buf_correct_ecc;
-   assign r1_addr_en              = redundant_lru  & iccm_buf_correct_ecc;
-   assign redundant_lru_en         = iccm_buf_correct_ecc | (((|sel_red0[pt.ICCM_NUM_BANKS-1:0]) | (|sel_red1[pt.ICCM_NUM_BANKS-1:0])) & iccm_rden & iccm_correction_state);
-   assign redundant_lru_in        = iccm_buf_correct_ecc ? ~redundant_lru : (|sel_red0[pt.ICCM_NUM_BANKS-1:0]) ? 1'b1 : 1'b0;
-
-   rvdffs #() red_lru  (.*,                               // LRU flop for the redundant replacements
-                   .clk(active_clk),
-                   .en(redundant_lru_en),
-                   .din(redundant_lru_in),
-                   .dout(redundant_lru));
-
-    rvdffs #(pt.ICCM_BITS-2) r0_address  (.*,                 // Redundant Row 0 address
-                   .clk(active_clk),
-                   .en(r0_addr_en),
-                   .din(iccm_rw_addr[pt.ICCM_BITS-1:2]),
-                   .dout(redundant_address[0][pt.ICCM_BITS-1:2]));
-
-   rvdffs #(pt.ICCM_BITS-2) r1_address  (.*,                   // Redundant Row 0 address
-                   .clk(active_clk),
-                   .en(r1_addr_en),
-                   .din(iccm_rw_addr[pt.ICCM_BITS-1:2]),
-                   .dout(redundant_address[1][pt.ICCM_BITS-1:2]));
-
-    rvdffs #(1) r0_valid  (.*,
-                   .clk(active_clk),                                  // Redundant Row 0 Valid
-                   .en(r0_addr_en),
-                   .din(1'b1),
-                   .dout(redundant_valid[0]));
-
-   rvdffs #(1) r1_valid  (.*,                                   // Redundant Row 1 Valid
-                   .clk(active_clk),
-                   .en(r1_addr_en),
-                   .din(1'b1),
-                   .dout(redundant_valid[1]));
-
-
-
-   // We will have to update the Redundant copies in addition to the memory on subsequent writes to this memory location.
-   // The data gets updated on : 1) correction cycle, 2) Future writes - this could be W writes from DMA ( match up till addr[2]) or DW writes ( match till address[3])
-   // The data to pick also depends on the current address[2], size and the addr[2] stored in the address field of the redundant flop. Correction cycle is always W write and the data is splat on both legs, so choosing lower Word
-
-    assign redundant_data0_en      = ((iccm_rw_addr[pt.ICCM_BITS-1:3] == redundant_address[0][pt.ICCM_BITS-1:3]) & ((iccm_rw_addr[2] == redundant_address[0][2]) | (iccm_wr_size[1:0] == 2'b11)) & redundant_valid[0] & iccm_wren) |
-                                      (~redundant_lru & iccm_buf_correct_ecc);
-
-    assign redundant_data0_in[38:0] = (((iccm_rw_addr[2] == redundant_address[0][2]) & iccm_rw_addr[2]) | (redundant_address[0][2] & (iccm_wr_size[1:0] == 2'b11))) ? iccm_wr_data[77:39]  : iccm_wr_data[38:0];
-
-    rvdffs #(39) r0_data  (.*,                                 // Redundant Row 1 data
-                   .clk(active_clk),
-                   .en(redundant_data0_en),
-                   .din(redundant_data0_in[38:0]),
-                   .dout(redundant_data[0][38:0]));
-
-   assign redundant_data1_en      =  ((iccm_rw_addr[pt.ICCM_BITS-1:3] == redundant_address[1][pt.ICCM_BITS-1:3]) & ((iccm_rw_addr[2] == redundant_address[1][2]) | (iccm_wr_size[1:0] == 2'b11)) & redundant_valid[1] & iccm_wren) |
-                                     (redundant_lru & iccm_buf_correct_ecc);
-
-   assign redundant_data1_in[38:0] = (((iccm_rw_addr[2] == redundant_address[1][2]) & iccm_rw_addr[2]) | (redundant_address[1][2] & (iccm_wr_size[1:0] == 2'b11))) ? iccm_wr_data[77:39]  : iccm_wr_data[38:0];
-
-    rvdffs #(39) r1_data  (.*,                                  // Redundant Row 1 data
-                   .clk(active_clk),
-                   .en(redundant_data1_en),
-                   .din(redundant_data1_in[38:0]),
-                   .dout(redundant_data[1][38:0]));
-
-
-   rvdffs  #(pt.ICCM_BANK_HI)   rd_addr_lo_ff (.*, .clk(active_clk), .din(iccm_rw_addr [pt.ICCM_BANK_HI:1]), .dout(iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:1]), .en(1'b1));   // bit 0 of address is always 0
-   rvdffs  #(pt.ICCM_BANK_BITS) rd_addr_hi_ff (.*, .clk(active_clk), .din(addr_bank_inc[pt.ICCM_BANK_HI:2]), .dout(iccm_rd_addr_hi_q[pt.ICCM_BANK_HI:2]), .en(1'b1));
-
-   assign iccm_rd_data_pre[63:0] = {iccm_bank_dout_fn[iccm_rd_addr_hi_q][31:0], iccm_bank_dout_fn[iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:2]][31:0]};
-   assign iccm_data[63:0]        = 64'({16'b0, (iccm_rd_data_pre[63:0] >> (16*iccm_rd_addr_lo_q[1]))});
-   assign iccm_rd_data[63:0]     = {iccm_data[63:0]};
-   assign iccm_rd_data_ecc[77:0] = {iccm_bank_dout_fn[iccm_rd_addr_hi_q][38:0], iccm_bank_dout_fn[iccm_rd_addr_lo_q[pt.ICCM_BANK_HI:2]][38:0]};
-
-endmodule // eb1_ifu_iccm_mem
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// eb1_ifu_ifc_ctl.sv
-// Function: Fetch pipe control
-//
-// Comments:
-//********************************************************************************
-
-module eb1_ifu_ifc_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic clk,                         // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic free_l2clk,                  // Clock always.                  Through one clock header.  For flops with    second header built in.
-
-   input logic rst_l, // reset enable, from core pin
-   input logic scan_mode, // scan
-
-   input logic ic_hit_f,      // Icache hit
-   input logic ifu_ic_mb_empty, // Miss buffer empty
-
-   input logic ifu_fb_consume1,  // Aligner consumed 1 fetch buffer
-   input logic ifu_fb_consume2,  // Aligner consumed 2 fetch buffers
-
-   input logic dec_tlu_flush_noredir_wb, // Don't fetch on flush
-   input logic exu_flush_final, // FLush
-   input logic [31:1] exu_flush_path_final, // Flush path
-
-   input logic ifu_bp_hit_taken_f, // btb hit, select the target path
-   input logic [31:1] ifu_bp_btb_target_f, //  predicted target PC
-
-   input logic ic_dma_active, // IC DMA active, stop fetching
-   input logic ic_write_stall, // IC is writing, stop fetching
-   input logic dma_iccm_stall_any, // force a stall in the fetch pipe for DMA ICCM access
-
-   input logic [31:0]  dec_tlu_mrac_ff ,   // side_effect and cacheable for each region
-
-   output logic [31:1] ifc_fetch_addr_f, // fetch addr F
-   output logic [31:1] ifc_fetch_addr_bf, // fetch addr BF
-
-   output logic  ifc_fetch_req_f,  // fetch request valid F
-
-   output logic  ifu_pmu_fetch_stall, // pmu event measuring fetch stall
-
-   output logic                       ifc_fetch_uncacheable_bf,      // The fetch request is uncacheable space. BF stage
-   output logic                      ifc_fetch_req_bf,              // Fetch request. Comes with the address.  BF stage
-   output logic                       ifc_fetch_req_bf_raw,          // Fetch request without some qualifications. Used for clock-gating. BF stage
-   output logic                       ifc_iccm_access_bf,            // This request is to the ICCM. Do not generate misses to the bus.
-   output logic                       ifc_region_acc_fault_bf,       // Access fault. in ICCM region but offset is outside defined ICCM.
-
-   output logic  ifc_dma_access_ok // fetch is not accessing the ICCM, DMA can proceed
-
-   
-
-   );
-
-   logic [31:1]  fetch_addr_bf;
-   logic [31:1]  fetch_addr_next;
-   logic [3:0]   fb_write_f, fb_write_ns;
-
-   logic     fb_full_f_ns, fb_full_f;
-   logic     fb_right, fb_right2, fb_left, wfm, idle;
-   logic     sel_last_addr_bf, sel_next_addr_bf;
-   logic     miss_f, miss_a;
-   logic     flush_fb, dma_iccm_stall_any_f;
-   logic     mb_empty_mod, goto_idle, leave_idle;
-   logic     fetch_bf_en;
-   logic         line_wrap;
-   logic         fetch_addr_next_1;
-
-   // FSM assignment
-    typedef enum logic [1:0] { IDLE  = 2'b00 ,
-                               FETCH = 2'b01 ,
-                               STALL = 2'b10 ,
-                               WFM   = 2'b11   } state_t ;
-   state_t state      ;
-   state_t next_state ;
-
-   logic     dma_stall;
-   assign dma_stall = ic_dma_active | dma_iccm_stall_any_f;
-
-
-
-   // Fetch address mux
-   // - flush
-   // - Miss *or* flush during WFM (icache miss buffer is blocking)
-   // - Sequential
-
-if(pt.BTB_ENABLE==1) begin
-   logic sel_btb_addr_bf;
-
-   assign sel_last_addr_bf = ~exu_flush_final & (~ifc_fetch_req_f | ~ic_hit_f);
-   assign sel_btb_addr_bf  = ~exu_flush_final & ifc_fetch_req_f & ifu_bp_hit_taken_f & ic_hit_f;
-   assign sel_next_addr_bf = ~exu_flush_final & ifc_fetch_req_f & ~ifu_bp_hit_taken_f & ic_hit_f;
-
-
-   assign fetch_addr_bf[31:1] = ( ({31{exu_flush_final}} &  exu_flush_path_final[31:1]) | // FLUSH path
-                  ({31{sel_last_addr_bf}} & ifc_fetch_addr_f[31:1]) | // MISS path
-                  ({31{sel_btb_addr_bf}} & {ifu_bp_btb_target_f[31:1]})| // BTB target
-                  ({31{sel_next_addr_bf}} & {fetch_addr_next[31:1]})); // SEQ path
-
-
-end // if (pt.BTB_ENABLE=1)
-   else begin
-   assign sel_last_addr_bf = ~exu_flush_final & (~ifc_fetch_req_f | ~ic_hit_f);
-   assign sel_next_addr_bf = ~exu_flush_final & ifc_fetch_req_f & ic_hit_f;
-
-
-   assign fetch_addr_bf[31:1] = ( ({31{exu_flush_final}} &  exu_flush_path_final[31:1]) | // FLUSH path
-                  ({31{sel_last_addr_bf}} & ifc_fetch_addr_f[31:1]) | // MISS path
-                  ({31{sel_next_addr_bf}} & {fetch_addr_next[31:1]})); // SEQ path
-
-end
-   assign fetch_addr_next[31:1] = {({ifc_fetch_addr_f[31:2]} + 31'b1), fetch_addr_next_1 };
-   assign line_wrap = (fetch_addr_next[pt.ICACHE_TAG_INDEX_LO] ^ ifc_fetch_addr_f[pt.ICACHE_TAG_INDEX_LO]);
-
-   assign fetch_addr_next_1 = line_wrap ? 1'b0 : ifc_fetch_addr_f[1];
-
-   assign ifc_fetch_req_bf_raw = ~idle;
-   assign ifc_fetch_req_bf =  ifc_fetch_req_bf_raw &
-
-                 ~(fb_full_f_ns & ~(ifu_fb_consume2 | ifu_fb_consume1)) &
-                 ~dma_stall &
-                 ~ic_write_stall &
-                 ~dec_tlu_flush_noredir_wb ;
-
-
-   assign fetch_bf_en = exu_flush_final | ifc_fetch_req_f;
-
-   assign miss_f = ifc_fetch_req_f & ~ic_hit_f & ~exu_flush_final;
-
-   assign mb_empty_mod = (ifu_ic_mb_empty | exu_flush_final) & ~dma_stall & ~miss_f & ~miss_a;
-
-   // Halt flushes and takes us to IDLE
-   assign goto_idle = exu_flush_final & dec_tlu_flush_noredir_wb;
-   // If we're in IDLE, and we get a flush, goto FETCH
-   assign leave_idle = exu_flush_final & ~dec_tlu_flush_noredir_wb & idle;
-
-//.i 7
-//.o 2
-//.ilb state[1] state[0] reset_delayed miss_f mb_empty_mod  goto_idle leave_idle
-//.ob next_state[1] next_state[0]
-//.type fr
-//
-//# fetch 01, stall 10, wfm 11, idle 00
-//-- 1---- 01
-//-- 0--1- 00
-//00 0--00 00
-//00 0--01 01
-//
-//01 01-0- 11
-//01 00-0- 01
-//
-//11 0-10- 01
-//11 0-00- 11
-
-   assign next_state[1] = (~state[1] & state[0] & miss_f & ~goto_idle) |
-              (state[1] & ~mb_empty_mod & ~goto_idle);
-
-   assign next_state[0] = (~goto_idle & leave_idle) | (state[0] & ~goto_idle);
-
-   assign flush_fb = exu_flush_final;
-
-   // model fb write logic to mass balance the fetch buffers
-   assign fb_right = ( ifu_fb_consume1 & ~ifu_fb_consume2 & (~ifc_fetch_req_f | miss_f)) | // Consumed and no new fetch
-              (ifu_fb_consume2 &  ifc_fetch_req_f); // Consumed 2 and new fetch
-
-
-   assign fb_right2 = (ifu_fb_consume2 & (~ifc_fetch_req_f | miss_f)); // Consumed 2 and no new fetch
-
-   assign fb_left = ifc_fetch_req_f & ~(ifu_fb_consume1 | ifu_fb_consume2) & ~miss_f;
-
-// CBH
-   assign fb_write_ns[3:0] = ( ({4{(flush_fb)}} & 4'b0001) |
-                   ({4{~flush_fb & fb_right }} & {1'b0, fb_write_f[3:1]}) |
-                   ({4{~flush_fb & fb_right2}} & {2'b0, fb_write_f[3:2]}) |
-                   ({4{~flush_fb & fb_left  }} & {fb_write_f[2:0], 1'b0}) |
-                   ({4{~flush_fb & ~fb_right & ~fb_right2 & ~fb_left}}  & fb_write_f[3:0]));
-
-
-   assign fb_full_f_ns = fb_write_ns[3];
-
-   assign idle     = state      == IDLE  ;
-   assign wfm      = state      == WFM   ;
-
-   rvdffie #(10) fbwrite_ff (.*, .clk(free_l2clk),
-                          .din( {dma_iccm_stall_any, miss_f, ifc_fetch_req_bf, next_state[1:0], fb_full_f_ns, fb_write_ns[3:0]}),
-                          .dout({dma_iccm_stall_any_f, miss_a, ifc_fetch_req_f, state[1:0], fb_full_f, fb_write_f[3:0]}));
-
-   assign ifu_pmu_fetch_stall = wfm | 
-                (ifc_fetch_req_bf_raw & ( (fb_full_f & ~(ifu_fb_consume2 | ifu_fb_consume1 | exu_flush_final)) |
-                  dma_stall));
-
-
-
-   assign ifc_fetch_addr_bf[31:1] = fetch_addr_bf[31:1];
-
-   rvdffpcie #(31) faddrf1_ff  (.*, .en(fetch_bf_en), .din(fetch_addr_bf[31:1]), .dout(ifc_fetch_addr_f[31:1]));
-
-
- if (pt.ICCM_ENABLE)  begin
-   logic iccm_acc_in_region_bf;
-   logic iccm_acc_in_range_bf;
-   rvrangecheck #( .CCM_SADR    (pt.ICCM_SADR),
-                   .CCM_SIZE    (pt.ICCM_SIZE) ) iccm_rangecheck (
-                                     .addr     ({ifc_fetch_addr_bf[31:1],1'b0}) ,
-                                     .in_range (iccm_acc_in_range_bf) ,
-                                     .in_region(iccm_acc_in_region_bf)
-                                     );
-
-   assign ifc_iccm_access_bf = iccm_acc_in_range_bf ;
-
-  assign ifc_dma_access_ok = ( (~ifc_iccm_access_bf |
-                 (fb_full_f & ~(ifu_fb_consume2 | ifu_fb_consume1)) |
-                 (wfm  & ~ifc_fetch_req_bf) |
-                 idle ) & ~exu_flush_final) |
-                  dma_iccm_stall_any_f;
-
-  assign ifc_region_acc_fault_bf = ~iccm_acc_in_range_bf & iccm_acc_in_region_bf ;
- end
- else  begin
-   assign ifc_iccm_access_bf = 1'b0 ;
-   assign ifc_dma_access_ok  = 1'b0 ;
-   assign ifc_region_acc_fault_bf  = 1'b0 ;
- end
-
-   assign ifc_fetch_uncacheable_bf =  ~dec_tlu_mrac_ff[{ifc_fetch_addr_bf[31:28] , 1'b0 }]  ; // bit 0 of each region description is the cacheable bit
-
-endmodule // eb1_ifu_ifc_ctl
-
-//********************************************************************************
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//********************************************************************************
-
-
-//********************************************************************************
-// Function: Icache , iccm  control
-// BFF -> F1 -> F2 -> A
-//********************************************************************************
-
-module eb1_ifu_mem_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic clk,                                                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic active_clk,                                          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic free_l2clk,                                          // Clock always.                  Through one clock header.  For flops with    second header built in.
-   input logic rst_l,                                               // reset, active low
-
-   input logic                       exu_flush_final,               // Flush from the pipeline., includes flush lower
-   input logic                       dec_tlu_flush_lower_wb,        // Flush lower from the pipeline.
-   input logic                       dec_tlu_flush_err_wb,          // Flush from the pipeline due to perr.
-   input logic                       dec_tlu_i0_commit_cmt,         // committed i0 instruction
-   input logic                       dec_tlu_force_halt,            // force halt.
-
-   input logic [31:1]                ifc_fetch_addr_bf,             // Fetch Address byte aligned always.      F1 stage.
-   input logic                       ifc_fetch_uncacheable_bf,      // The fetch request is uncacheable space. F1 stage
-   input logic                       ifc_fetch_req_bf,              // Fetch request. Comes with the address.  F1 stage
-   input logic                       ifc_fetch_req_bf_raw,          // Fetch request without some qualifications. Used for clock-gating. F1 stage
-   input logic                       ifc_iccm_access_bf,            // This request is to the ICCM. Do not generate misses to the bus.
-   input logic                       ifc_region_acc_fault_bf,       // Access fault. in ICCM region but offset is outside defined ICCM.
-   input logic                       ifc_dma_access_ok,             // It is OK to give dma access to the ICCM. (ICCM is not busy this cycle).
-   input logic                       dec_tlu_fence_i_wb,            // Fence.i instruction is committing. Clear all Icache valids.
-   input logic                       ifu_bp_hit_taken_f,            // Branch is predicted taken. Kill the fetch next cycle.
-
-   input logic                       ifu_bp_inst_mask_f,            // tell ic which valids to kill because of a taken branch, right justified
-
-   output logic                      ifu_miss_state_idle,           // No icache misses are outstanding.
-   output logic                      ifu_ic_mb_empty,               // Continue with normal fetching. This does not mean that miss is finished.
-   output logic                      ic_dma_active  ,               // In the middle of servicing dma request to ICCM. Do not make any new requests.
-   output logic                      ic_write_stall,                // Stall fetch the cycle we are writing the cache.
-
-/// PMU signals
-   output logic                      ifu_pmu_ic_miss,               // IC miss event
-   output logic                      ifu_pmu_ic_hit,                // IC hit event
-   output logic                      ifu_pmu_bus_error,             // Bus error event
-   output logic                      ifu_pmu_bus_busy,              // Bus busy event
-   output logic                      ifu_pmu_bus_trxn,              // Bus transaction
-
-  //-------------------------- IFU AXI signals--------------------------
-   // AXI Write Channels
-   output logic                            ifu_axi_awvalid,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_awid,
-   output logic [31:0]                     ifu_axi_awaddr,
-   output logic [3:0]                      ifu_axi_awregion,
-   output logic [7:0]                      ifu_axi_awlen,
-   output logic [2:0]                      ifu_axi_awsize,
-   output logic [1:0]                      ifu_axi_awburst,
-   output logic                            ifu_axi_awlock,
-   output logic [3:0]                      ifu_axi_awcache,
-   output logic [2:0]                      ifu_axi_awprot,
-   output logic [3:0]                      ifu_axi_awqos,
-
-   output logic                            ifu_axi_wvalid,
-   output logic [63:0]                     ifu_axi_wdata,
-   output logic [7:0]                      ifu_axi_wstrb,
-   output logic                            ifu_axi_wlast,
-
-   output logic                            ifu_axi_bready,
-
-   // AXI Read Channels
-   output logic                            ifu_axi_arvalid,
-   input  logic                            ifu_axi_arready,
-   output logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_arid,
-   output logic [31:0]                     ifu_axi_araddr,
-   output logic [3:0]                      ifu_axi_arregion,
-   output logic [7:0]                      ifu_axi_arlen,
-   output logic [2:0]                      ifu_axi_arsize,
-   output logic [1:0]                      ifu_axi_arburst,
-   output logic                            ifu_axi_arlock,
-   output logic [3:0]                      ifu_axi_arcache,
-   output logic [2:0]                      ifu_axi_arprot,
-   output logic [3:0]                      ifu_axi_arqos,
-
-   input  logic                            ifu_axi_rvalid,
-   output logic                            ifu_axi_rready,
-   input  logic [pt.IFU_BUS_TAG-1:0]       ifu_axi_rid,
-   input  logic [63:0]                     ifu_axi_rdata,
-   input  logic [1:0]                      ifu_axi_rresp,
-
-    input  logic                     ifu_bus_clk_en,
-
-
-   input  logic                      dma_iccm_req,      //  dma iccm command (read or write)
-   input  logic [31:0]               dma_mem_addr,      //  dma address
-   input  logic [2:0]                dma_mem_sz,        //  size
-   input  logic                      dma_mem_write,     //  write
-   input  logic [63:0]               dma_mem_wdata,     //  write data
-   input  logic [2:0]                dma_mem_tag,       //  DMA Buffer entry number
-
-   output logic                      iccm_dma_ecc_error,//   Data read from iccm has an ecc error
-   output logic                      iccm_dma_rvalid,   //   Data read from iccm is valid
-   output logic [63:0]               iccm_dma_rdata,    //   dma data read from iccm
-   output logic [2:0]                iccm_dma_rtag,     //   Tag of the DMA req
-   output logic                      iccm_ready,        //   iccm ready to accept new command.
-
-
-//   I$ & ITAG Ports
-   output logic [31:1]               ic_rw_addr,         // Read/Write addresss to the Icache.
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_wr_en,           // Icache write enable, when filling the Icache.
-   output logic                      ic_rd_en,           // Icache read  enable.
-
-   output logic [pt.ICACHE_BANKS_WAY-1:0] [70:0]               ic_wr_data,           // Data to fill to the Icache. With ECC
-   input  logic [63:0]               ic_rd_data ,          // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [70:0]               ic_debug_rd_data ,          // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC
-   input  logic [25:0]               ictag_debug_rd_data,  // Debug icache tag.
-   output logic [70:0]               ic_debug_wr_data,     // Debug wr cache.
-   output logic [70:0]               ifu_ic_debug_rd_data, // debug data read
-
-
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_eccerr,    //
-   input  logic [pt.ICACHE_BANKS_WAY-1:0] ic_parerr,
-
-   output logic [pt.ICACHE_INDEX_HI:3]               ic_debug_addr,      // Read/Write addresss to the Icache.
-   output logic                      ic_debug_rd_en,     // Icache debug rd
-   output logic                      ic_debug_wr_en,     // Icache debug wr
-   output logic                      ic_debug_tag_array, // Debug tag array
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_debug_way,       // Debug way. Rd or Wr.
-
-
-   output logic [pt.ICACHE_NUM_WAYS-1:0]                ic_tag_valid,       // Valid bits when accessing the Icache. One valid bit per way. F2 stage
-
-   input  logic [pt.ICACHE_NUM_WAYS-1:0]                ic_rd_hit,          // Compare hits from Icache tags. Per way.  F2 stage
-   input  logic                      ic_tag_perr,        // Icache Tag parity error
-
-   // ICCM ports
-   output logic [pt.ICCM_BITS-1:1]  iccm_rw_addr,       // ICCM read/write address.
-   output logic                      iccm_wren,          // ICCM write enable (through the DMA)
-   output logic                      iccm_rden,          // ICCM read enable.
-   output logic [77:0]               iccm_wr_data,       // ICCM write data.
-   output logic [2:0]                iccm_wr_size,       // ICCM write location within DW.
-
-   input  logic [63:0]               iccm_rd_data,       // Data read from ICCM.
-   input  logic [77:0]               iccm_rd_data_ecc,   // Data + ECC read from ICCM.
-   input  logic [1:0]                ifu_fetch_val,
-   // IFU control signals
-   output logic                      ic_hit_f,               // Hit in Icache(if Icache access) or ICCM access( ICCM always has ic_hit_f)
-   output logic [1:0]                ic_access_fault_f,      // Access fault (bus error or ICCM access in region but out of offset range).
-   output logic [1:0]                ic_access_fault_type_f, // Access fault types
-   output logic                      iccm_rd_ecc_single_err, // This fetch has a single ICCM ecc  error.
-   output logic [1:0]                iccm_rd_ecc_double_err, // This fetch has a double ICCM ecc  error.
-   output logic                      ic_error_start,         // This has any I$ errors ( data/tag/ecc/parity )
-
-   output logic                      ifu_async_error_start,  // Or of the sb iccm, and all the icache errors sent to aligner to stop
-   output logic                      iccm_dma_sb_error,      // Single Bit ECC error from a DMA access
-   output logic [1:0]                ic_fetch_val_f,         // valid bytes for fetch. To the Aligner.
-   output logic [31:0]               ic_data_f,              // Data read from Icache or ICCM. To the Aligner.
-   output logic [63:0]               ic_premux_data,         // Premuxed data to be muxed with Icache data
-   output logic                      ic_sel_premux_data,     // Select premux data.
-
-/////  Debug
-   input  eb1_cache_debug_pkt_t     dec_tlu_ic_diag_pkt ,       // Icache/tag debug read/write packet
-   input  logic                      dec_tlu_core_ecc_disable,   // disable the ecc checking and flagging
-   output logic                      ifu_ic_debug_rd_data_valid, // debug data valid.
-   output logic                      iccm_buf_correct_ecc,
-   output logic                      iccm_correction_state,
-
-
-   input  logic         scan_mode
-   );
-
-//  Create different defines for ICACHE and ICCM enable combinations
-
- localparam   NUM_OF_BEATS = 8 ;
-
-
-
-   logic [31:3]    ifu_ic_req_addr_f;
-   logic           uncacheable_miss_in ;
-   logic           uncacheable_miss_ff;
-
-
-
-   logic           bus_ifu_wr_en     ;
-   logic           bus_ifu_wr_en_ff  ;
-   logic           bus_ifu_wr_en_ff_q  ;
-   logic           bus_ifu_wr_en_ff_wo_err  ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     bus_ic_wr_en ;
-
-   logic           reset_tag_valid_for_miss  ;
-
-
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_mb_in;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_rep_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_mb_ff;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_hit_new;
-   logic [pt.ICACHE_STATUS_BITS-1:0]     way_status_new_w_debug;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     tagv_mb_in;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     tagv_mb_ff;
-
-
-   logic           ifu_wr_data_comb_err ;
-   logic           ifu_byp_data_err_new;
-   logic  [1:0]    ifu_byp_data_err_f;
-   logic           ifu_wr_cumulative_err_data;
-   logic           ifu_wr_cumulative_err;
-   logic           ifu_wr_data_comb_err_ff;
-   logic           scnd_miss_index_match ;
-
-
-   logic           ifc_dma_access_q_ok;
-   logic           ifc_iccm_access_f ;
-   logic           ifc_region_acc_fault_f;
-   logic           ifc_region_acc_fault_final_f;
-   logic  [1:0]    ifc_bus_acc_fault_f;
-   logic           ic_act_miss_f;
-   logic           ic_miss_under_miss_f;
-   logic           ic_ignore_2nd_miss_f;
-   logic           ic_act_hit_f;
-   logic           miss_pending;
-   logic [31:1]    imb_in , imb_ff  ;
-   logic [31:pt.ICACHE_BEAT_ADDR_HI+1]    miss_addr_in , miss_addr  ;
-   logic           miss_wrap_f ;
-   logic           flush_final_f;
-   logic           ifc_fetch_req_f;
-   logic           ifc_fetch_req_f_raw;
-   logic           fetch_req_f_qual   ;
-   logic           ifc_fetch_req_qual_bf ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     replace_way_mb_any;
-   logic           last_beat;
-   logic           reset_beat_cnt  ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]     ic_req_addr_bits_hi_3 ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]     ic_wr_addr_bits_hi_3 ;
-   logic [31:1]    ifu_fetch_addr_int_f ;
-   logic [31:1]    ifu_ic_rw_int_addr ;
-   logic           crit_wd_byp_ok_ff ;
-   logic           ic_crit_wd_rdy_new_ff;
-   logic   [79:0]  ic_byp_data_only_pre_new;
-   logic   [79:0]  ic_byp_data_only_new;
-   logic           ic_byp_hit_f ;
-   logic           ic_valid ;
-   logic           ic_valid_ff;
-   logic           reset_all_tags;
-   logic           ic_valid_w_debug;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ifu_tag_wren,ifu_tag_wren_ff;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ic_debug_tag_wr_en;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ifu_tag_wren_w_debug;
-   logic [pt.ICACHE_NUM_WAYS-1:0]     ic_debug_way_ff;
-   logic           ic_debug_rd_en_ff   ;
-   logic           fetch_bf_f_c1_clken ;
-   logic           fetch_bf_f_c1_clk;
-   logic           debug_c1_clken;
-   logic           debug_c1_clk;
-
-   logic           reset_ic_in ;
-   logic           reset_ic_ff ;
-   logic [pt.ICACHE_BEAT_ADDR_HI:1]     vaddr_f ;
-   logic [31:1]    ifu_status_wr_addr;
-   logic           sel_mb_addr ;
-   logic           sel_mb_addr_ff ;
-   logic           sel_mb_status_addr ;
-   logic [63:0]    ic_final_data;
-
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_ic_rw_int_addr_ff ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_status_wr_addr_ff ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_ic_rw_int_addr_w_debug ;
-   logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] ifu_status_wr_addr_w_debug ;
-
-   logic [pt.ICACHE_STATUS_BITS-1:0]                              way_status_new_ff ;
-   logic                                    way_status_wr_en_ff ;
-   logic [pt.ICACHE_TAG_DEPTH-1:0][pt.ICACHE_STATUS_BITS-1:0]        way_status_out ;
-   logic [1:0]                              ic_debug_way_enc;
-
-   logic [pt.IFU_BUS_TAG-1:0]             ifu_bus_rid_ff;
-
-   logic         fetch_req_icache_f;
-   logic         fetch_req_iccm_f;
-   logic         ic_iccm_hit_f;
-   logic         fetch_uncacheable_ff;
-   logic         way_status_wr_en;
-   logic         sel_byp_data;
-   logic         sel_ic_data;
-   logic         sel_iccm_data;
-   logic         ic_rd_parity_final_err;
-   logic         ic_act_miss_f_delayed;
-   logic         bus_ifu_wr_data_error;
-   logic         bus_ifu_wr_data_error_ff;
-   logic         way_status_wr_en_w_debug;
-   logic         ic_debug_tag_val_rd_out;
-   logic         ifu_pmu_ic_miss_in;
-   logic         ifu_pmu_ic_hit_in;
-   logic         ifu_pmu_bus_error_in;
-   logic         ifu_pmu_bus_trxn_in;
-   logic         ifu_pmu_bus_busy_in;
-   logic         ic_debug_ict_array_sel_in;
-   logic         ic_debug_ict_array_sel_ff;
-   logic         debug_data_clken;
-   logic         last_data_recieved_in ;
-   logic         last_data_recieved_ff ;
-
-   logic                          ifu_bus_rvalid           ;
-   logic                          ifu_bus_rvalid_ff        ;
-   logic                          ifu_bus_rvalid_unq_ff    ;
-   logic                          ifu_bus_arready_unq       ;
-   logic                          ifu_bus_arready_unq_ff    ;
-   logic                          ifu_bus_arvalid           ;
-   logic                          ifu_bus_arvalid_ff        ;
-   logic                          ifu_bus_arready           ;
-   logic                          ifu_bus_arready_ff        ;
-   logic [63:0]                   ifu_bus_rdata_ff        ;
-   logic [1:0]                    ifu_bus_rresp_ff          ;
-   logic                          ifu_bus_rsp_valid ;
-   logic                          ifu_bus_rsp_ready ;
-   logic [pt.IFU_BUS_TAG-1:0]     ifu_bus_rsp_tag;
-   logic [63:0]                   ifu_bus_rsp_rdata;
-   logic [1:0]                    ifu_bus_rsp_opc;
-
-   logic [pt.ICACHE_NUM_BEATS-1:0]    write_fill_data;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    wr_data_c1_clk;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_valid_in;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_valid;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_error_in;
-   logic [pt.ICACHE_NUM_BEATS-1:0]    ic_miss_buff_data_error;
-   logic [pt.ICACHE_BEAT_ADDR_HI:1]    byp_fetch_index;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_0;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_1;
-   logic [pt.ICACHE_BEAT_ADDR_HI:3]    byp_fetch_index_inc;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_inc_0;
-   logic [pt.ICACHE_BEAT_ADDR_HI:2]    byp_fetch_index_inc_1;
-   logic          miss_buff_hit_unq_f ;
-   logic          stream_hit_f ;
-   logic          stream_miss_f ;
-   logic          stream_eol_f ;
-   logic          crit_byp_hit_f ;
-   logic [pt.IFU_BUS_TAG-1:0] other_tag ;
-   logic [(2*pt.ICACHE_NUM_BEATS)-1:0] [31:0] ic_miss_buff_data;
-   logic [63:0] ic_miss_buff_half;
-   logic        scnd_miss_req, scnd_miss_req_q;
-   logic        scnd_miss_req_in;
-
-
-   logic [pt.ICCM_BITS-1:2]                iccm_ecc_corr_index_ff;
-   logic [pt.ICCM_BITS-1:2]                iccm_ecc_corr_index_in;
-   logic [38:0]                         iccm_ecc_corr_data_ff;
-   logic                                iccm_ecc_write_status     ;
-   logic                                iccm_rd_ecc_single_err_ff   ;
-   logic                                iccm_error_start;     // start the error fsm
-   logic                                perr_state_en;
-   logic                                miss_state_en;
-
-   logic        busclk;
-   logic        busclk_force;
-   logic        busclk_reset;
-   logic        bus_ifu_bus_clk_en_ff;
-   logic        bus_ifu_bus_clk_en ;
-
-   logic        ifc_bus_ic_req_ff_in;
-   logic        ifu_bus_cmd_valid ;
-   logic        ifu_bus_cmd_ready ;
-
-   logic        bus_inc_data_beat_cnt     ;
-   logic        bus_reset_data_beat_cnt   ;
-   logic        bus_hold_data_beat_cnt    ;
-
-   logic        bus_inc_cmd_beat_cnt     ;
-   logic        bus_reset_cmd_beat_cnt_0   ;
-   logic        bus_reset_cmd_beat_cnt_secondlast   ;
-   logic        bus_hold_cmd_beat_cnt    ;
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_data_beat_count  ;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_data_beat_count      ;
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_cmd_beat_count  ;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_cmd_beat_count      ;
-
-
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_new_rd_addr_count;
-   logic [pt.ICACHE_BEAT_BITS-1:0]  bus_rd_addr_count;
-
-
-   logic        bus_cmd_sent           ;
-   logic        bus_last_data_beat     ;
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]       bus_wren            ;
-
-   logic [pt.ICACHE_NUM_WAYS-1:0]       bus_wren_last       ;
-   logic [pt.ICACHE_NUM_WAYS-1:0]       wren_reset_miss      ;
-   logic        ifc_dma_access_ok_d;
-   logic        ifc_dma_access_ok_prev;
-
-   logic   bus_cmd_req_in ;
-   logic   bus_cmd_req_hold ;
-
-   logic   second_half_available ;
-   logic   write_ic_16_bytes ;
-
-   logic   ifc_region_acc_fault_final_bf;
-   logic   ifc_region_acc_fault_memory_bf;
-   logic   ifc_region_acc_fault_memory_f;
-   logic   ifc_region_acc_okay;
-
-   logic   iccm_correct_ecc;
-   logic   dma_sb_err_state, dma_sb_err_state_ff;
-   logic   two_byte_instr;
-
-   typedef enum logic [2:0] {IDLE=3'b000, CRIT_BYP_OK=3'b001, HIT_U_MISS=3'b010, MISS_WAIT=3'b011,CRIT_WRD_RDY=3'b100,SCND_MISS=3'b101,STREAM=3'b110 , STALL_SCND_MISS=3'b111} miss_state_t;
-   miss_state_t miss_state, miss_nxtstate;
-
-   typedef enum logic [1:0] {ERR_STOP_IDLE=2'b00, ERR_FETCH1=2'b01 , ERR_FETCH2=2'b10 , ERR_STOP_FETCH=2'b11} err_stop_state_t;
-   err_stop_state_t err_stop_state, err_stop_nxtstate;
-   logic   err_stop_state_en ;
-   logic   err_stop_fetch ;
-
-   logic   ic_crit_wd_rdy;         // Critical fetch is ready to be bypassed.
-
-   logic   ifu_bp_hit_taken_q_f;
-   logic   ifu_bus_rvalid_unq;
-   logic   bus_cmd_beat_en;
-
-
-// ---- Clock gating section -----
-// c1 clock enables
-
-
-   assign fetch_bf_f_c1_clken  = ifc_fetch_req_bf_raw | ifc_fetch_req_f | miss_pending | exu_flush_final | scnd_miss_req;
-   assign debug_c1_clken       = ic_debug_rd_en | ic_debug_wr_en ;
-   // C1 - 1 clock pulse for data
-
-   rvclkhdr fetch_bf_f_c1_cgc    ( .en(fetch_bf_f_c1_clken),     .l1clk(fetch_bf_f_c1_clk), .* );
-   rvclkhdr debug_c1_cgc         ( .en(debug_c1_clken),          .l1clk(debug_c1_clk), .* );
-
-
-
-// ------ end clock gating section ------------------------
-
-   logic [1:0]    iccm_single_ecc_error;
-   logic          dma_iccm_req_f ;
-   assign iccm_dma_sb_error     = (|iccm_single_ecc_error[1:0] )  & dma_iccm_req_f ;
-   assign ifu_async_error_start = iccm_rd_ecc_single_err | ic_error_start;
-
-
-   typedef enum logic [2:0] {ERR_IDLE=3'b000, IC_WFF=3'b001 , ECC_WFF=3'b010 , ECC_CORR=3'b011, DMA_SB_ERR=3'b100} perr_state_t;
-   perr_state_t perr_state, perr_nxtstate;
-
-
-   assign ic_dma_active = iccm_correct_ecc | (perr_state == DMA_SB_ERR) | (err_stop_state == ERR_STOP_FETCH) | err_stop_fetch |
-                          dec_tlu_flush_err_wb; // The last term is to give a error-correction a chance to finish before refetch starts
-
-   assign scnd_miss_req_in     = ifu_bus_rsp_valid & bus_ifu_bus_clk_en & ifu_bus_rsp_ready &
-                                 (&bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]) &
-                                 ~uncacheable_miss_ff &  ((miss_state == SCND_MISS) | (miss_nxtstate == SCND_MISS)) & ~exu_flush_final;
-
-   assign ifu_bp_hit_taken_q_f = ifu_bp_hit_taken_f & ic_hit_f ;
-
-   //////////////////////////////////// Create Miss State Machine ///////////////////////
-   //                                   Create Miss State Machine                      //
-   //                                   Create Miss State Machine                      //
-   //                                   Create Miss State Machine                      //
-   //////////////////////////////////// Create Miss State Machine ///////////////////////
-   // FIFO state machine
-   always_comb begin : MISS_SM
-      miss_nxtstate   = IDLE;
-      miss_state_en   = 1'b0;
-      case (miss_state)
-         IDLE: begin : idle
-                  miss_nxtstate = (ic_act_miss_f & ~exu_flush_final) ? CRIT_BYP_OK : HIT_U_MISS ;
-                  miss_state_en = ic_act_miss_f & ~dec_tlu_force_halt ;
-         end
-         CRIT_BYP_OK: begin : crit_byp_ok
-                  miss_nxtstate =  (dec_tlu_force_halt ) ?                                                                             IDLE :
-                                  ( ic_byp_hit_f &  (last_data_recieved_ff | (bus_ifu_wr_en_ff & last_beat)) &  uncacheable_miss_ff) ? IDLE :
-                                  ( ic_byp_hit_f &  ~last_data_recieved_ff                                &  uncacheable_miss_ff) ? MISS_WAIT :
-                                  (~ic_byp_hit_f &  ~exu_flush_final &  (bus_ifu_wr_en_ff & last_beat)       &  uncacheable_miss_ff) ? CRIT_WRD_RDY :
-                                  (                                      (bus_ifu_wr_en_ff & last_beat)       & ~uncacheable_miss_ff) ? IDLE :
-                                  ( ic_byp_hit_f  &  ~exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat)       & ~ifu_bp_hit_taken_q_f   & ~uncacheable_miss_ff) ? STREAM :
-                                  ( bus_ifu_wr_en_ff &  ~exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat)       & ~ifu_bp_hit_taken_q_f   & ~uncacheable_miss_ff) ? STREAM :
-                                  (~ic_byp_hit_f  &  ~exu_flush_final &  (bus_ifu_wr_en_ff & last_beat)       & ~uncacheable_miss_ff) ? IDLE :
-                                  ( (exu_flush_final | ifu_bp_hit_taken_q_f)  & ~(bus_ifu_wr_en_ff & last_beat)                      ) ? HIT_U_MISS : IDLE;
-                  miss_state_en =  dec_tlu_force_halt | exu_flush_final | ic_byp_hit_f | ifu_bp_hit_taken_q_f | (bus_ifu_wr_en_ff & last_beat) | (bus_ifu_wr_en_ff & ~uncacheable_miss_ff)  ;
-         end
-         CRIT_WRD_RDY: begin : crit_wrd_rdy
-                  miss_nxtstate =  IDLE ;
-                  miss_state_en =  exu_flush_final | flush_final_f | ic_byp_hit_f | dec_tlu_force_halt  ;
-         end
-         STREAM: begin : stream
-                  miss_nxtstate =  ((exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f ) & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt) ? HIT_U_MISS  : IDLE ;
-                  miss_state_en =    exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f   |  (bus_ifu_wr_en_ff & last_beat) | dec_tlu_force_halt ;
-         end
-         MISS_WAIT: begin : miss_wait
-                  miss_nxtstate =  (exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt) ? HIT_U_MISS  : IDLE ;
-                  miss_state_en =   exu_flush_final | (bus_ifu_wr_en_ff & last_beat) | dec_tlu_force_halt ;
-         end
-         HIT_U_MISS: begin : hit_u_miss
-                  miss_nxtstate =  ic_miss_under_miss_f & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt ? SCND_MISS :
-                                   ic_ignore_2nd_miss_f & ~(bus_ifu_wr_en_ff & last_beat) & ~dec_tlu_force_halt ? STALL_SCND_MISS : IDLE  ;
-                  miss_state_en = (bus_ifu_wr_en_ff & last_beat) | ic_miss_under_miss_f | ic_ignore_2nd_miss_f | dec_tlu_force_halt;
-         end
-         SCND_MISS: begin : scnd_miss
-                  miss_nxtstate   = dec_tlu_force_halt ? IDLE  :
-                                    exu_flush_final ?  ((bus_ifu_wr_en_ff & last_beat) ? IDLE : HIT_U_MISS) : CRIT_BYP_OK;
-                  miss_state_en   = (bus_ifu_wr_en_ff & last_beat) | exu_flush_final | dec_tlu_force_halt;
-         end
-         STALL_SCND_MISS: begin : stall_scnd_miss
-                  miss_nxtstate   =  dec_tlu_force_halt ? IDLE  :
-                                     exu_flush_final ?  ((bus_ifu_wr_en_ff & last_beat) ? IDLE : HIT_U_MISS) : IDLE;
-                  miss_state_en   = (bus_ifu_wr_en_ff & last_beat) | exu_flush_final | dec_tlu_force_halt;
-         end
-         default: begin : def_case
-                  miss_nxtstate   = IDLE;
-                  miss_state_en   = 1'b0;
-         end
-      endcase
-   end
-   rvdffs #(($bits(miss_state_t))) miss_state_ff (.clk(active_clk), .din(miss_nxtstate), .dout({miss_state}), .en(miss_state_en),   .*);
-
-  logic    sel_hold_imb     ;
-
-   assign miss_pending       =  (miss_state != IDLE) ;
-   assign crit_wd_byp_ok_ff  =  (miss_state == CRIT_BYP_OK) | ((miss_state == CRIT_WRD_RDY) & ~flush_final_f);
-   assign sel_hold_imb       =  (miss_pending & ~(bus_ifu_wr_en_ff & last_beat) & ~((miss_state == CRIT_WRD_RDY) & exu_flush_final) &
-                              ~((miss_state == CRIT_WRD_RDY) & crit_byp_hit_f) ) | ic_act_miss_f |
-                                (miss_pending & (miss_nxtstate == CRIT_WRD_RDY)) ;
-
-
-   logic         sel_hold_imb_scnd;
-   logic  [31:1] imb_scnd_in;
-   logic  [31:1] imb_scnd_ff;
-   logic         uncacheable_miss_scnd_in ;
-   logic         uncacheable_miss_scnd_ff ;
-
-   logic  [pt.ICACHE_NUM_WAYS-1:0] tagv_mb_scnd_in;
-   logic  [pt.ICACHE_NUM_WAYS-1:0] tagv_mb_scnd_ff;
-
-   logic  [pt.ICACHE_STATUS_BITS-1:0] way_status_mb_scnd_in;
-   logic  [pt.ICACHE_STATUS_BITS-1:0] way_status_mb_scnd_ff;
-
-   assign sel_hold_imb_scnd                                =((miss_state == SCND_MISS) | ic_miss_under_miss_f) & ~flush_final_f ;
-   assign way_status_mb_scnd_in[pt.ICACHE_STATUS_BITS-1:0] = (miss_state == SCND_MISS) ? way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0] : {way_status[pt.ICACHE_STATUS_BITS-1:0]} ;
-   assign tagv_mb_scnd_in[pt.ICACHE_NUM_WAYS-1:0]          = (miss_state == SCND_MISS) ? tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0]          : ({ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0]} & {pt.ICACHE_NUM_WAYS{~reset_all_tags & ~exu_flush_final}});
-   assign uncacheable_miss_scnd_in   = sel_hold_imb_scnd ? uncacheable_miss_scnd_ff : ifc_fetch_uncacheable_bf ;
-
-
-   rvdff_fpga #(1)  unc_miss_scnd_ff    (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din (uncacheable_miss_scnd_in), .dout(uncacheable_miss_scnd_ff));
-   rvdffpcie #(31) imb_f_scnd_ff       (.*, .en(fetch_bf_f_c1_clken),  .din ({imb_scnd_in[31:1]}), .dout({imb_scnd_ff[31:1]}));
-   rvdff_fpga #(pt.ICACHE_STATUS_BITS)  mb_rep_wayf2_scnd_ff (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din ({way_status_mb_scnd_in[pt.ICACHE_STATUS_BITS-1:0]}), .dout({way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0]}));
-   rvdff_fpga #(pt.ICACHE_NUM_WAYS)     mb_tagv_scnd_ff      (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk), .din ({tagv_mb_scnd_in[pt.ICACHE_NUM_WAYS-1:0]}), .dout({tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0]}));
-
-
-
-
-   assign ic_req_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] = bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] ;
-   assign ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3]  = ifu_bus_rid_ff[pt.ICACHE_BEAT_BITS-1:0] & {pt.ICACHE_BEAT_BITS{bus_ifu_wr_en_ff}};
-   // NOTE: Cacheline size is 16 bytes in this example.
-   // Tag     Index  Bank Offset
-   // [31:16] [15:5] [4]  [3:0]
-
-
-   assign fetch_req_icache_f   = ifc_fetch_req_f & ~ifc_iccm_access_f & ~ifc_region_acc_fault_final_f;
-   assign fetch_req_iccm_f     = ifc_fetch_req_f &  ifc_iccm_access_f;
-
-   assign ic_iccm_hit_f        = fetch_req_iccm_f  &  (~miss_pending | (miss_state==HIT_U_MISS) | (miss_state==STREAM));
-   assign ic_byp_hit_f         = (crit_byp_hit_f | stream_hit_f)  & fetch_req_icache_f &  miss_pending ;
-   assign ic_act_hit_f         = (|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) & fetch_req_icache_f & ~reset_all_tags & (~miss_pending | (miss_state==HIT_U_MISS)) & ~sel_mb_addr_ff;
-   assign ic_act_miss_f        = (((~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & ~miss_pending) | scnd_miss_req) & ~ifc_region_acc_fault_final_f;
-   assign ic_miss_under_miss_f = (~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & (miss_state == HIT_U_MISS) &
-                                   (imb_ff[31:pt.ICACHE_TAG_INDEX_LO] != ifu_fetch_addr_int_f[31:pt.ICACHE_TAG_INDEX_LO]) & ~uncacheable_miss_ff & ~sel_mb_addr_ff & ~ifc_region_acc_fault_final_f;
-   assign ic_ignore_2nd_miss_f = (~(|ic_rd_hit[pt.ICACHE_NUM_WAYS-1:0]) | reset_all_tags) & fetch_req_icache_f & (miss_state == HIT_U_MISS) &
-                                   ((imb_ff[31:pt.ICACHE_TAG_INDEX_LO] == ifu_fetch_addr_int_f[31:pt.ICACHE_TAG_INDEX_LO])  |   uncacheable_miss_ff) ;
-   assign ic_hit_f             =  ic_act_hit_f | ic_byp_hit_f | ic_iccm_hit_f | (ifc_region_acc_fault_final_f & ifc_fetch_req_f);
-
-   assign uncacheable_miss_in   = scnd_miss_req ? uncacheable_miss_scnd_ff : sel_hold_imb ? uncacheable_miss_ff : ifc_fetch_uncacheable_bf ;
-   assign imb_in[31:1]          = scnd_miss_req ? imb_scnd_ff[31:1]        : sel_hold_imb ? imb_ff[31:1] : {ifc_fetch_addr_bf[31:1]} ;
-
-   assign imb_scnd_in[31:1]     = sel_hold_imb_scnd ? imb_scnd_ff[31:1] : {ifc_fetch_addr_bf[31:1]} ;
-
-   assign scnd_miss_index_match  =  (imb_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == imb_scnd_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]) & scnd_miss_req & ~ifu_wr_cumulative_err_data;
-   assign way_status_mb_in[pt.ICACHE_STATUS_BITS-1:0] = (scnd_miss_req & ~scnd_miss_index_match) ? way_status_mb_scnd_ff[pt.ICACHE_STATUS_BITS-1:0] :
-                                                        (scnd_miss_req &  scnd_miss_index_match) ? way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] :
-                                                         miss_pending                            ? way_status_mb_ff[pt.ICACHE_STATUS_BITS-1:0] :
-                                                                                                  {way_status[pt.ICACHE_STATUS_BITS-1:0]} ;
-   assign tagv_mb_in[pt.ICACHE_NUM_WAYS-1:0]          = scnd_miss_req ? (tagv_mb_scnd_ff[pt.ICACHE_NUM_WAYS-1:0] | ({pt.ICACHE_NUM_WAYS {scnd_miss_index_match}} & replace_way_mb_any[pt.ICACHE_NUM_WAYS-1:0])) :
-                                                         miss_pending ? tagv_mb_ff[pt.ICACHE_NUM_WAYS-1:0]  : ({ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0]} & {pt.ICACHE_NUM_WAYS{~reset_all_tags & ~exu_flush_final}}) ;
-
-   assign reset_ic_in           = miss_pending & ~scnd_miss_req_q &  (reset_all_tags |  reset_ic_ff) ;
-
-
-
-   rvdffpcie #(31) ifu_fetch_addr_f_ff (.*, .en(fetch_bf_f_c1_clken), .din ({ifc_fetch_addr_bf[31:1]}), .dout({ifu_fetch_addr_int_f[31:1]}));
-
-   assign vaddr_f[pt.ICACHE_BEAT_ADDR_HI:1] = ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:1] ;
-
-   rvdffpcie #(31) imb_f_ff        (.*, .en(fetch_bf_f_c1_clken), .din (imb_in[31:1]), .dout(imb_ff[31:1]));
-   rvdff_fpga #(1) unc_miss_ff     (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ( uncacheable_miss_in),               .dout( uncacheable_miss_ff));
-
-
-   assign miss_addr_in[31:pt.ICACHE_BEAT_ADDR_HI+1]      = (~miss_pending                    ) ? imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] :
-                                                           (                scnd_miss_req_q  ) ? imb_scnd_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] : miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1] ;
-
-
-   rvdfflie #(.WIDTH(31-pt.ICACHE_BEAT_ADDR_HI),.LEFT(31-pt.ICACHE_BEAT_ADDR_HI-8)) miss_f_ff       (.*, .en(bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .din ({miss_addr_in[31:pt.ICACHE_BEAT_ADDR_HI+1]}), .dout({miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1]}));
-
-
-
-
-
-   rvdff_fpga #(pt.ICACHE_STATUS_BITS)  mb_rep_wayf2_ff (.*, .clk(fetch_bf_f_c1_clk),  .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ({way_status_mb_in[pt.ICACHE_STATUS_BITS-1:0]}), .dout({way_status_mb_ff[pt.ICACHE_STATUS_BITS-1:0]}));
-   rvdff_fpga #(pt.ICACHE_NUM_WAYS)     mb_tagv_ff      (.*, .clk(fetch_bf_f_c1_clk),  .clken(fetch_bf_f_c1_clken), .rawclk(clk),  .din ({tagv_mb_in[pt.ICACHE_NUM_WAYS-1:0]}), .dout({tagv_mb_ff[pt.ICACHE_NUM_WAYS-1:0]}));
-
-   assign ifc_fetch_req_qual_bf  = ifc_fetch_req_bf  & ~((miss_state == CRIT_WRD_RDY) & flush_final_f) & ~stream_miss_f ;// & ~exu_flush_final ;
-
-   assign ifc_fetch_req_f       = ifc_fetch_req_f_raw & ~exu_flush_final ;
-
-   rvdff_fpga #(1) ifu_iccm_acc_ff     (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_iccm_access_bf),      .dout(ifc_iccm_access_f));
-   rvdff_fpga #(1) ifu_iccm_reg_acc_ff (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_region_acc_fault_final_bf), .dout(ifc_region_acc_fault_final_f));
-   rvdff_fpga #(1) rgn_acc_ff          (.*, .clk(fetch_bf_f_c1_clk), .clken(fetch_bf_f_c1_clken), .rawclk(clk),   .din(ifc_region_acc_fault_bf),       .dout(ifc_region_acc_fault_f));
-
-
-   assign ifu_ic_req_addr_f[31:3]  = {miss_addr[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_req_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] };
-   assign ifu_ic_mb_empty          = (((miss_state == HIT_U_MISS) | (miss_state == STREAM)) & ~(bus_ifu_wr_en_ff & last_beat)) |  ~miss_pending ;
-   assign ifu_miss_state_idle      = (miss_state == IDLE) ;
-
-
-   assign sel_mb_addr  = ((miss_pending & write_ic_16_bytes & ~uncacheable_miss_ff) | reset_tag_valid_for_miss) ;
-   assign ifu_ic_rw_int_addr[31:1] = ({31{ sel_mb_addr}}  &  {imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] , imb_ff[2:1]})  |
-                                     ({31{~sel_mb_addr}}  &  ifc_fetch_addr_bf[31:1] )   ;
-
-   assign sel_mb_status_addr  = ((miss_pending & write_ic_16_bytes & ~uncacheable_miss_ff & last_beat & bus_ifu_wr_en_ff_q) | reset_tag_valid_for_miss) ;
-   assign ifu_status_wr_addr[31:1] = ({31{ sel_mb_status_addr}}  &  {imb_ff[31:pt.ICACHE_BEAT_ADDR_HI+1] , ic_wr_addr_bits_hi_3[pt.ICACHE_BEAT_ADDR_HI:3] , imb_ff[2:1]})  |
-                                     ({31{~sel_mb_status_addr}}  &  ifu_fetch_addr_int_f[31:1] )   ;
-
-
-  assign ic_rw_addr[31:1]      = ifu_ic_rw_int_addr[31:1] ;
-
-
-if (pt.ICACHE_ECC == 1) begin: icache_ecc_1
-   logic [6:0]       ic_wr_ecc;
-   logic [6:0]       ic_miss_buff_ecc;
-   logic [141:0]     ic_wr_16bytes_data ;
-   logic [70:0]      ifu_ic_debug_rd_data_in   ;
-
-                rvecc_encode_64  ic_ecc_encode_64_bus (
-                           .din    (ifu_bus_rdata_ff[63:0]),
-                           .ecc_out(ic_wr_ecc[6:0]));
-                rvecc_encode_64  ic_ecc_encode_64_buff (
-                           .din    (ic_miss_buff_half[63:0]),
-                           .ecc_out(ic_miss_buff_ecc[6:0]));
-
-   for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_wr_data_loop
-      assign ic_wr_data[i][70:0]  =  ic_wr_16bytes_data[((71*i)+70): (71*i)];
-   end
-
-
-   assign ic_debug_wr_data[70:0]   = {dec_tlu_ic_diag_pkt.icache_wrdata[70:0]} ;
-   assign ic_error_start           = ((|ic_eccerr[pt.ICACHE_BANKS_WAY-1:0]) & ic_act_hit_f)  | ic_rd_parity_final_err;
-
-
-
-  assign ifu_ic_debug_rd_data_in[70:0] = ic_debug_ict_array_sel_ff ? {2'b0,ictag_debug_rd_data[25:21],32'b0,ictag_debug_rd_data[20:0],{7-pt.ICACHE_STATUS_BITS{1'b0}}, way_status[pt.ICACHE_STATUS_BITS-1:0],3'b0,ic_debug_tag_val_rd_out} :
-                                                                     ic_debug_rd_data[70:0];
-
-  rvdffe #(71) ifu_debug_data_ff (.*,
-                                  .en (debug_data_clken),
-                                  .din ({
-                                         ifu_ic_debug_rd_data_in[70:0]
-                                         }),
-                                  .dout({
-                                         ifu_ic_debug_rd_data[70:0]
-                                         })
-                                  );
-
-  assign ic_wr_16bytes_data[141:0] =  ifu_bus_rid_ff[0] ? {ic_wr_ecc[6:0] , ifu_bus_rdata_ff[63:0] ,  ic_miss_buff_ecc[6:0] , ic_miss_buff_half[63:0] } :
-                                                        {ic_miss_buff_ecc[6:0] ,  ic_miss_buff_half[63:0] , ic_wr_ecc[6:0] , ifu_bus_rdata_ff[63:0] } ;
-
-
-end
-else begin : icache_parity_1
-   logic [3:0]   ic_wr_parity;
-   logic [3:0]   ic_miss_buff_parity;
-   logic [135:0] ic_wr_16bytes_data ;
-   logic [70:0]  ifu_ic_debug_rd_data_in   ;
-    for (genvar i=0 ; i < 4 ; i++) begin : DATA_PGEN
-       rveven_paritygen #(16) par_bus  (.data_in   (ifu_bus_rdata_ff[((16*i)+15):(16*i)]),
-                                      .parity_out(ic_wr_parity[i]));
-       rveven_paritygen #(16) par_buff  (.data_in   (ic_miss_buff_half[((16*i)+15):(16*i)]),
-                                      .parity_out(ic_miss_buff_parity[i]));
-    end
-
-
-   for (genvar i=0; i < pt.ICACHE_BANKS_WAY ; i++) begin : ic_wr_data_loop
-      assign ic_wr_data[i][70:0]  =  {3'b0, ic_wr_16bytes_data[((68*i)+67): (68*i)]};
-   end
-
-
-
-
-
-   assign ic_debug_wr_data[70:0]   = {dec_tlu_ic_diag_pkt.icache_wrdata[70:0]} ;
-   assign ic_error_start           = ((|ic_parerr[pt.ICACHE_BANKS_WAY-1:0]) & ic_act_hit_f) | ic_rd_parity_final_err;
-
-   assign ifu_ic_debug_rd_data_in[70:0] = ic_debug_ict_array_sel_ff ? {6'b0,ictag_debug_rd_data[21],32'b0,ictag_debug_rd_data[20:0],{7-pt.ICACHE_STATUS_BITS{1'b0}},way_status[pt.ICACHE_STATUS_BITS-1:0],3'b0,ic_debug_tag_val_rd_out} :
-                                                                      ic_debug_rd_data[70:0] ;
-
-   rvdffe #(71) ifu_debug_data_ff (.*,
-                                   .en (debug_data_clken),
-                                   .din ({
-                                          ifu_ic_debug_rd_data_in[70:0]
-                                          }),
-                                   .dout({
-                                          ifu_ic_debug_rd_data[70:0]
-                                          })
-                                   );
-
-   assign ic_wr_16bytes_data[135:0] =  ifu_bus_rid_ff[0] ? {ic_wr_parity[3:0] , ifu_bus_rdata_ff[63:0] ,  ic_miss_buff_parity[3:0] , ic_miss_buff_half[63:0] } :
-                                                        {ic_miss_buff_parity[3:0] ,  ic_miss_buff_half[63:0] , ic_wr_parity[3:0] , ifu_bus_rdata_ff[63:0] } ;
-
-end
-
-
-  assign ifu_wr_data_comb_err       =  bus_ifu_wr_data_error_ff ;
-  assign ifu_wr_cumulative_err      = (ifu_wr_data_comb_err | ifu_wr_data_comb_err_ff) & ~reset_beat_cnt;
-  assign ifu_wr_cumulative_err_data =  ifu_wr_data_comb_err | ifu_wr_data_comb_err_ff ;
-
-
-  assign sel_byp_data     =  (ic_crit_wd_rdy | (miss_state == STREAM) | (miss_state == CRIT_BYP_OK));
-  assign sel_ic_data      = ~(ic_crit_wd_rdy | (miss_state == STREAM) | (miss_state == CRIT_BYP_OK) | (miss_state == MISS_WAIT)) & ~fetch_req_iccm_f & ~ifc_region_acc_fault_final_f;
-
- if (pt.ICCM_ICACHE==1) begin: iccm_icache
-  assign sel_iccm_data    =  fetch_req_iccm_f  ;
-
-  assign ic_final_data[63:0]  = ({64{sel_byp_data | sel_iccm_data | sel_ic_data}} & {ic_rd_data[63:0]} ) ;
-
-  assign ic_premux_data[63:0] = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) |
-                          ({64{sel_iccm_data}} & {iccm_rd_data[63:0]});
-
-  assign ic_sel_premux_data = sel_iccm_data | sel_byp_data ;
- end
-
-if (pt.ICCM_ONLY == 1 ) begin: iccm_only
-  assign sel_iccm_data    =  fetch_req_iccm_f  ;
-  assign ic_final_data[63:0]  = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) |
-                          ({64{sel_iccm_data}} & {iccm_rd_data[63:0]});
-  assign ic_premux_data = '0 ;
-  assign ic_sel_premux_data = '0 ;
-end
-
-if (pt.ICACHE_ONLY == 1 ) begin: icache_only
-  assign ic_final_data[63:0]  = ({64{sel_byp_data | sel_ic_data}} & {ic_rd_data[63:0]} ) ;
-  assign ic_premux_data[63:0] = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) ;
-  assign ic_sel_premux_data =  sel_byp_data ;
-end
-
-
-if (pt.NO_ICCM_NO_ICACHE == 1 ) begin: no_iccm_no_icache
-  assign ic_final_data[63:0]  = ({64{sel_byp_data }} & {ic_byp_data_only_new[63:0]} ) ;
-  assign ic_premux_data = 0 ;
-  assign ic_sel_premux_data = '0 ;
-end
-
-
-  assign ifc_bus_acc_fault_f[1:0]   =  {2{ic_byp_hit_f}} & ifu_byp_data_err_f[1:0] ;
-  assign ic_data_f[31:0]      = ic_final_data[31:0];
-
-
-
-assign fetch_req_f_qual       = ic_hit_f & ~exu_flush_final;
-assign ic_access_fault_f[1:0]  = ({2{ifc_region_acc_fault_final_f}} | ifc_bus_acc_fault_f[1:0])  & {2{~exu_flush_final}};
-assign ic_access_fault_type_f[1:0] = |iccm_rd_ecc_double_err       ? 2'b01 :
-                                     ifc_region_acc_fault_f        ? 2'b10 :
-                                     ifc_region_acc_fault_memory_f ? 2'b11 :  2'b00 ;
-
-  // right justified
-
-assign ic_fetch_val_f[1] = fetch_req_f_qual & ifu_bp_inst_mask_f & ~(vaddr_f[pt.ICACHE_BEAT_ADDR_HI:1] == {pt.ICACHE_BEAT_ADDR_HI{1'b1}}) & (err_stop_state != ERR_FETCH2);
-assign ic_fetch_val_f[0] = fetch_req_f_qual ;
-assign two_byte_instr    =  (ic_data_f[1:0] != 2'b11 )  ;
-
-/////////////////////////////////////////////////////////////////////////////////////
-//  Create full buffer...                                                          //
-/////////////////////////////////////////////////////////////////////////////////////
-     logic [63:0]       ic_miss_buff_data_in;
-     assign ic_miss_buff_data_in[63:0] = ifu_bus_rsp_rdata[63:0];
-
-     for (genvar i=0; i<pt.ICACHE_NUM_BEATS; i++) begin :  wr_flop
-
-        assign write_fill_data[i]        =   bus_ifu_wr_en & (  (pt.IFU_BUS_TAG)'(i)  == ifu_bus_rsp_tag[pt.IFU_BUS_TAG-1:0]);
-
-        rvdffe #(32) byp_data_0_ff (.*,
-                                    .en (write_fill_data[i]),
-                                    .din (ic_miss_buff_data_in[31:0]),
-                                    .dout(ic_miss_buff_data[i*2][31:0])
-                                    );
-
-        rvdffe #(32) byp_data_1_ff (.*,
-                                    .en (write_fill_data[i]),
-                                    .din (ic_miss_buff_data_in[63:32]),
-                                    .dout(ic_miss_buff_data[i*2+1][31:0])
-                                    );
-
-        assign ic_miss_buff_data_valid_in[i]  = write_fill_data[i] ? 1'b1  : (ic_miss_buff_data_valid[i]  & ~ic_act_miss_f) ;
-
-        rvdff #(1) byp_data_valid_ff (.*,
-                  .clk (active_clk),
-                  .din (ic_miss_buff_data_valid_in[i]),
-                  .dout(ic_miss_buff_data_valid[i]));
-
-        assign ic_miss_buff_data_error_in[i]  = write_fill_data[i] ? bus_ifu_wr_data_error  : (ic_miss_buff_data_error[i]  & ~ic_act_miss_f) ;
-
-        rvdff #(1) byp_data_error_ff (.*,
-                  .clk (active_clk),
-                  .din (ic_miss_buff_data_error_in[i] ),
-                  .dout(ic_miss_buff_data_error[i]));
-     end
-
-/////////////////////////////////////////////////////////////////////////////////////
-// New bypass ready                                                                //
-/////////////////////////////////////////////////////////////////////////////////////
-   logic   [pt.ICACHE_BEAT_ADDR_HI:1]  bypass_index;
-   logic   [pt.ICACHE_BEAT_ADDR_HI:3]  bypass_index_5_3_inc;
-   logic   bypass_data_ready_in;
-   logic   ic_crit_wd_rdy_new_in;
-
-   assign bypass_index[pt.ICACHE_BEAT_ADDR_HI:1] = imb_ff[pt.ICACHE_BEAT_ADDR_HI:1] ;
-   assign bypass_index_5_3_inc[pt.ICACHE_BEAT_ADDR_HI:3] = bypass_index[pt.ICACHE_BEAT_ADDR_HI:3] + 1 ;
-
-
-   assign bypass_data_ready_in = ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      & ~bypass_index[2] & ~bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      & ~bypass_index[2] &  bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                      &  bypass_index[2] & ~bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]] & ic_miss_buff_data_valid_in[bypass_index_5_3_inc[pt.ICACHE_BEAT_ADDR_HI:3]] &  bypass_index[2] & bypass_index[1])) |
-                                 ((ic_miss_buff_data_valid_in[bypass_index[pt.ICACHE_BEAT_ADDR_HI:3]] & (bypass_index[pt.ICACHE_BEAT_ADDR_HI:3] == {pt.ICACHE_BEAT_ADDR_HI{1'b1}})))   ;
-
-
-
-   assign    ic_crit_wd_rdy_new_in = ( bypass_data_ready_in & crit_wd_byp_ok_ff   &  uncacheable_miss_ff &  ~exu_flush_final & ~ifu_bp_hit_taken_q_f) |
-                                     (                        crit_wd_byp_ok_ff   & ~uncacheable_miss_ff &  ~exu_flush_final & ~ifu_bp_hit_taken_q_f) |
-                                     (ic_crit_wd_rdy_new_ff & ~fetch_req_icache_f & crit_wd_byp_ok_ff    &  ~exu_flush_final) ;
-
-
-  assign byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:1]          =    ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:1]       ;
-  assign byp_fetch_index_0[pt.ICACHE_BEAT_ADDR_HI:2]        =   {ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3],1'b0} ;
-  assign byp_fetch_index_1[pt.ICACHE_BEAT_ADDR_HI:2]        =   {ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3],1'b1} ;
-  assign byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]      =    ifu_fetch_addr_int_f[pt.ICACHE_BEAT_ADDR_HI:3]+1'b1 ;
-  assign byp_fetch_index_inc_0[pt.ICACHE_BEAT_ADDR_HI:2]    =   {byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3], 1'b0} ;
-  assign byp_fetch_index_inc_1[pt.ICACHE_BEAT_ADDR_HI:2]    =   {byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3], 1'b1} ;
-
-  assign  ifu_byp_data_err_new = (~ifu_fetch_addr_int_f[2] &  ~ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 (~ifu_fetch_addr_int_f[2] &   ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 ( ifu_fetch_addr_int_f[2] &  ~ifu_fetch_addr_int_f[1] &                                                                           ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  |
-                                 ( ifu_fetch_addr_int_f[2] &   ifu_fetch_addr_int_f[1] & (ic_miss_buff_data_error[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]] | ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )) ;
-
-  assign  ifu_byp_data_err_f[1:0]  =   (ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] )  ? 2'b11 :
-                                      ( ifu_fetch_addr_int_f[2] &  ifu_fetch_addr_int_f[1] &   ~(ic_miss_buff_data_error[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] ) & (~miss_wrap_f & ic_miss_buff_data_error[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]])) ? 2'b10 : 2'b00;
-
-
-
-
-
-  assign ic_byp_data_only_pre_new[79:0] =  ({80{~ifu_fetch_addr_int_f[2]}} &   {ic_miss_buff_data[byp_fetch_index_inc_0][15:0],ic_miss_buff_data[byp_fetch_index_1][31:0]     , ic_miss_buff_data[byp_fetch_index_0][31:0]}) |
-                                           ({80{ ifu_fetch_addr_int_f[2]}} &   {ic_miss_buff_data[byp_fetch_index_inc_1][15:0],ic_miss_buff_data[byp_fetch_index_inc_0][31:0] , ic_miss_buff_data[byp_fetch_index_1][31:0]}) ;
-
-  assign ic_byp_data_only_new[79:0]      = ~ifu_fetch_addr_int_f[1] ? {ic_byp_data_only_pre_new[79:0]} :
-                                                                      {16'b0,ic_byp_data_only_pre_new[79:16]} ;
-
-  assign miss_wrap_f      =  (imb_ff[pt.ICACHE_TAG_INDEX_LO] != ifu_fetch_addr_int_f[pt.ICACHE_TAG_INDEX_LO] ) ;
-
-  assign miss_buff_hit_unq_f  = ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     & ~byp_fetch_index[2] & ~byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     & ~byp_fetch_index[2] &  byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]]                                                     &  byp_fetch_index[2] & ~byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] & ic_miss_buff_data_valid[byp_fetch_index_inc[pt.ICACHE_BEAT_ADDR_HI:3]] &  byp_fetch_index[2] &  byp_fetch_index[1])) |
-                             ((ic_miss_buff_data_valid[byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3]] &  (byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:3] == {pt.ICACHE_BEAT_BITS{1'b1}})))   ;
-
-  assign stream_hit_f     =  (miss_buff_hit_unq_f & ~miss_wrap_f ) & (miss_state==STREAM) ;
-  assign stream_miss_f    = ~(miss_buff_hit_unq_f & ~miss_wrap_f ) & (miss_state==STREAM) & ifc_fetch_req_f;
-  assign stream_eol_f     =  (byp_fetch_index[pt.ICACHE_BEAT_ADDR_HI:2] == {pt.ICACHE_BEAT_BITS+1{1'b1}}) & ifc_fetch_req_f & stream_hit_f;
-
-  assign crit_byp_hit_f   =  (miss_buff_hit_unq_f ) & ((miss_state == CRIT_WRD_RDY) | (miss_state==CRIT_BYP_OK)) ;
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Figure out if you have the data to write.                                       //
-/////////////////////////////////////////////////////////////////////////////////////
-
-assign other_tag[pt.IFU_BUS_TAG-1:0] = {ifu_bus_rid_ff[pt.IFU_BUS_TAG-1:1] , ~ifu_bus_rid_ff[0] } ;
-assign second_half_available      = ic_miss_buff_data_valid[other_tag] ;
-assign write_ic_16_bytes          = second_half_available & bus_ifu_wr_en_ff ;
-assign ic_miss_buff_half[63:0]    = {ic_miss_buff_data[{other_tag,1'b1}],ic_miss_buff_data[{other_tag,1'b0}] } ;
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Parity checking logic for Icache logic.                                         //
-/////////////////////////////////////////////////////////////////////////////////////
-
-
-assign ic_rd_parity_final_err = ic_tag_perr & ~exu_flush_final & sel_ic_data & ~(ifc_region_acc_fault_final_f | (|ifc_bus_acc_fault_f)) &
-                                      (fetch_req_icache_f & ~reset_all_tags & (~miss_pending | (miss_state==HIT_U_MISS)) & ~sel_mb_addr_ff);
-
-logic [pt.ICACHE_NUM_WAYS-1:0]                   perr_err_inv_way;
-logic [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]   perr_ic_index_ff;
-logic                                         perr_sel_invalidate;
-logic                                         perr_sb_write_status   ;
-
-
-
-   rvdffe #(.WIDTH(pt.ICACHE_INDEX_HI-pt.ICACHE_TAG_INDEX_LO+1),.OVERRIDE(1)) perr_dat_ff    (.din(ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO]), .dout(perr_ic_index_ff[pt.ICACHE_INDEX_HI : pt.ICACHE_TAG_INDEX_LO]), .en(perr_sb_write_status),  .*);
-
-   assign perr_err_inv_way[pt.ICACHE_NUM_WAYS-1:0]   =  {pt.ICACHE_NUM_WAYS{perr_sel_invalidate}} ;
-   assign iccm_correct_ecc     = (perr_state == ECC_CORR);
-   assign dma_sb_err_state     = (perr_state == DMA_SB_ERR);
-   assign iccm_buf_correct_ecc = iccm_correct_ecc & ~dma_sb_err_state_ff;
-
-
-
-   //////////////////////////////////// Create Parity Error State Machine ///////////////////////
-   //                                   Create Parity Error State Machine                      //
-   //                                   Create Parity Error State Machine                      //
-   //                                   Create Parity Error State Machine                      //
-   //////////////////////////////////// Create Parity Error State Machine ///////////////////////
-
-
-   // FIFO state machine
-   always_comb begin  : ERROR_SM
-      perr_nxtstate            = ERR_IDLE;
-      perr_state_en            = 1'b0;
-      perr_sb_write_status     = 1'b0;
-      perr_sel_invalidate      = 1'b0;
-
-      case (perr_state)
-         ERR_IDLE: begin : err_idle
-                  perr_nxtstate         =  iccm_dma_sb_error ? DMA_SB_ERR : (ic_error_start & ~exu_flush_final) ? IC_WFF : ECC_WFF;
-                  perr_state_en         =  (((iccm_error_start | ic_error_start) & ~exu_flush_final) | iccm_dma_sb_error) & ~dec_tlu_force_halt;
-                  perr_sb_write_status  =  perr_state_en;
-         end
-         IC_WFF: begin : icache_wff    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  perr_nxtstate       =  ERR_IDLE ;
-                  perr_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_force_halt ;
-                  perr_sel_invalidate =  (dec_tlu_flush_err_wb &  dec_tlu_flush_lower_wb);
-         end
-         ECC_WFF: begin : ecc_wff
-                  perr_nxtstate       =  ((~dec_tlu_flush_err_wb &  dec_tlu_flush_lower_wb ) | dec_tlu_force_halt) ? ERR_IDLE : ECC_CORR ;
-                  perr_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_force_halt  ;
-         end
-         DMA_SB_ERR : begin : dma_sb_ecc
-                 perr_nxtstate       = dec_tlu_force_halt ? ERR_IDLE : ECC_CORR;
-                 perr_state_en       = 1'b1;
-         end
-         ECC_CORR: begin : ecc_corr
-                  perr_nxtstate       =  ERR_IDLE  ;
-                  perr_state_en       =   1'b1   ;
-         end
-         default: begin : def_case
-                  perr_nxtstate            = ERR_IDLE;
-                  perr_state_en            = 1'b0;
-                  perr_sb_write_status     = 1'b0;
-                  perr_sel_invalidate      = 1'b0;
-         end
-      endcase
-   end
-
-   rvdffs #(($bits(perr_state_t))) perr_state_ff (.clk(active_clk), .din(perr_nxtstate), .dout({perr_state}), .en(perr_state_en),   .*);
-
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   //////////////////////////////////// Create stop fetch State Machine /////////////////////////
-   always_comb begin  : ERROR_STOP_FETCH
-      err_stop_nxtstate            = ERR_STOP_IDLE;
-      err_stop_state_en            = 1'b0;
-      err_stop_fetch               = 1'b0;
-      iccm_correction_state        = 1'b0;
-
-      case (err_stop_state)
-         ERR_STOP_IDLE: begin : err_stop_idle
-                  err_stop_nxtstate         =  ERR_FETCH1;
-                  err_stop_state_en         =  dec_tlu_flush_err_wb & (perr_state  == ECC_WFF) & ~dec_tlu_force_halt;
-         end
-         ERR_FETCH1: begin : err_fetch1    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  err_stop_nxtstate       =  (dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : ((ifu_fetch_val[1:0] == 2'b11) | (ifu_fetch_val[0] & two_byte_instr))   ?  ERR_STOP_FETCH : ifu_fetch_val[0] ? ERR_FETCH2 :  ERR_FETCH1;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | ifu_fetch_val[0] | ifu_bp_hit_taken_q_f | dec_tlu_force_halt;
-                  err_stop_fetch          =   ((ifu_fetch_val[1:0] == 2'b11) | (ifu_fetch_val[0] & two_byte_instr))  & ~(exu_flush_final | dec_tlu_i0_commit_cmt);
-                  iccm_correction_state   = 1'b1;
-
-        end
-         ERR_FETCH2: begin : err_fetch2    // All the I$ data and/or Tag errors ( parity/ECC ) will come to this state
-                  err_stop_nxtstate       =  (dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : ifu_fetch_val[0] ?  ERR_STOP_FETCH : ERR_FETCH2;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt | ifu_fetch_val[0] | dec_tlu_force_halt ;
-                  err_stop_fetch          =   ifu_fetch_val[0] & ~exu_flush_final & ~dec_tlu_i0_commit_cmt ;
-                  iccm_correction_state   = 1'b1;
-
-         end
-         ERR_STOP_FETCH: begin : ecc_wff
-                  err_stop_nxtstate       =  ( (dec_tlu_flush_lower_wb & ~dec_tlu_flush_err_wb) | dec_tlu_i0_commit_cmt | dec_tlu_force_halt) ? ERR_STOP_IDLE : dec_tlu_flush_err_wb ? ERR_FETCH1 : ERR_STOP_FETCH ;
-                  err_stop_state_en       =   dec_tlu_flush_lower_wb |  dec_tlu_i0_commit_cmt | dec_tlu_force_halt   ;
-                  err_stop_fetch          =  1'b1;
-                  iccm_correction_state   = 1'b1;
-
-         end
-         default: begin : def_case
-                  err_stop_nxtstate            = ERR_STOP_IDLE;
-                  err_stop_state_en            = 1'b0;
-                  err_stop_fetch               = 1'b0 ;
-                  iccm_correction_state   = 1'b1;
-
-         end
-      endcase
-   end
-   rvdffs #(($bits(err_stop_state_t))) err_stop_state_ff (.clk(active_clk), .din(err_stop_nxtstate), .dout({err_stop_state}), .en(err_stop_state_en),   .*);
-
-
-
-   assign bus_ifu_bus_clk_en =  ifu_bus_clk_en ;
-
-   rvclkhdr bus_clk_f(.en(bus_ifu_bus_clk_en), .l1clk(busclk), .*);
-   rvclkhdr bus_clk(.en(bus_ifu_bus_clk_en | dec_tlu_force_halt), .l1clk(busclk_force), .*);
-
-
-
-
-   assign  scnd_miss_req = scnd_miss_req_q & ~exu_flush_final;
-
-   assign  ifc_bus_ic_req_ff_in  = (ic_act_miss_f | bus_cmd_req_hold | ifu_bus_cmd_valid) & ~dec_tlu_force_halt & ~((bus_cmd_beat_count== {pt.ICACHE_BEAT_BITS{1'b1}}) & ifu_bus_cmd_valid & ifu_bus_cmd_ready & miss_pending);
-
-   rvdff_fpga #(1) bus_ic_req_ff2(.*, .clk(busclk_force), .clken(bus_ifu_bus_clk_en | dec_tlu_force_halt), .rawclk(clk), .din(ifc_bus_ic_req_ff_in), .dout(ifu_bus_cmd_valid));
-
-   assign    bus_cmd_req_in  = (ic_act_miss_f | bus_cmd_req_hold) & ~bus_cmd_sent & ~dec_tlu_force_halt ; // hold until first command sent
-
-
-
-    // AXI command signals
-    //  Read Channel
-    assign ifu_axi_arvalid               =  ifu_bus_cmd_valid ;
-    assign ifu_axi_arid[pt.IFU_BUS_TAG-1:0] = ((pt.IFU_BUS_TAG)'(bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0])) & {pt.IFU_BUS_TAG{ifu_bus_cmd_valid}};
-    assign ifu_axi_araddr[31:0]          =   {ifu_ic_req_addr_f[31:3],3'b0}  & {32{ifu_bus_cmd_valid}};
-    assign ifu_axi_arsize[2:0]           =  3'b011;
-    assign ifu_axi_arprot[2:0]           = 3'b101;
-    assign ifu_axi_arcache[3:0]          = 4'b1111;
-    assign ifu_axi_arregion[3:0]         = ifu_ic_req_addr_f[31:28];
-    assign ifu_axi_arlen[7:0]            = '0;
-    assign ifu_axi_arburst[1:0]          = 2'b01;
-    assign ifu_axi_arqos[3:0]            = '0;
-    assign ifu_axi_arlock                = '0;
-    assign ifu_axi_rready                = 1'b1;
-
-    //  Write Channel
-    assign ifu_axi_awvalid                  = '0 ;
-    assign ifu_axi_awid[pt.IFU_BUS_TAG-1:0] = '0 ;
-    assign ifu_axi_awaddr[31:0]             = '0 ;
-    assign ifu_axi_awsize[2:0]              = '0 ;
-    assign ifu_axi_awprot[2:0]              = '0;
-    assign ifu_axi_awcache[3:0]             = '0 ;
-    assign ifu_axi_awregion[3:0]            = '0 ;
-    assign ifu_axi_awlen[7:0]               = '0;
-    assign ifu_axi_awburst[1:0]             = '0 ;
-    assign ifu_axi_awqos[3:0]               = '0;
-    assign ifu_axi_awlock                   = '0;
-
-    assign ifu_axi_wvalid                =  '0;
-    assign ifu_axi_wstrb[7:0]            =  '0;
-    assign ifu_axi_wdata[63:0]           =  '0;
-    assign ifu_axi_wlast                 =  '0;
-    assign ifu_axi_bready                =  '0;
-
-
-   assign ifu_bus_arready_unq     =  ifu_axi_arready ;
-   assign ifu_bus_rvalid_unq      =  ifu_axi_rvalid ;
-   assign ifu_bus_arvalid         =  ifu_axi_arvalid ;
-
-   rvdff_fpga #(1)               bus_rdy_ff      (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_arready_unq),            .dout(ifu_bus_arready_unq_ff));
-   rvdff_fpga #(1)               bus_rsp_vld_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_rvalid_unq),             .dout(ifu_bus_rvalid_unq_ff));
-   rvdff_fpga #(1)               bus_cmd_ff      (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_bus_arvalid),                .dout(ifu_bus_arvalid_ff));
-   rvdff_fpga #(2)               bus_rsp_cmd_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_axi_rresp[1:0]),             .dout(ifu_bus_rresp_ff[1:0]));
-   rvdff_fpga #(pt.IFU_BUS_TAG)  bus_rsp_tag_ff  (.*, .clk(busclk),  .clken(bus_ifu_bus_clk_en), .rawclk(clk), .din(ifu_axi_rid[pt.IFU_BUS_TAG-1:0]),.dout(ifu_bus_rid_ff[pt.IFU_BUS_TAG-1:0]));
-   rvdffe #(64)                  bus_data_ff     (.*, .clk(clk),     .din(ifu_axi_rdata[63:0]),            .dout(ifu_bus_rdata_ff[63:0]), .en(ifu_bus_clk_en & ifu_axi_rvalid));
-
-   assign ifu_bus_cmd_ready = ifu_axi_arready ;
-   assign ifu_bus_rsp_valid = ifu_axi_rvalid ;
-   assign ifu_bus_rsp_ready = ifu_axi_rready ;
-   assign ifu_bus_rsp_tag[pt.IFU_BUS_TAG-1:0] = ifu_axi_rid[pt.IFU_BUS_TAG-1:0] ;
-   assign ifu_bus_rsp_rdata[63:0] = ifu_axi_rdata[63:0] ;
-   assign ifu_bus_rsp_opc[1:0] = {ifu_axi_rresp[1:0]} ;
-
-
-
-
-
-
-
-
-
-   // Create write signals so we can write to the miss-buffer directly from the bus.
-
-   assign ifu_bus_rvalid            =  ifu_bus_rsp_valid & bus_ifu_bus_clk_en ;
-
-
-
-   assign ifu_bus_arready            =  ifu_bus_arready_unq    & bus_ifu_bus_clk_en    ;
-   assign ifu_bus_arready_ff         =  ifu_bus_arready_unq_ff & bus_ifu_bus_clk_en_ff ;
-
-   assign ifu_bus_rvalid_ff          =  ifu_bus_rvalid_unq_ff & bus_ifu_bus_clk_en_ff ;
-   assign bus_cmd_sent               =  ifu_bus_arvalid & ifu_bus_arready & miss_pending & ~dec_tlu_force_halt;
-   assign bus_inc_data_beat_cnt      = (bus_ifu_wr_en_ff & ~bus_last_data_beat & ~dec_tlu_force_halt) ;
-   assign bus_reset_data_beat_cnt    =  ic_act_miss_f | (bus_ifu_wr_en_ff &  bus_last_data_beat) | dec_tlu_force_halt;
-   assign bus_hold_data_beat_cnt     = ~bus_inc_data_beat_cnt & ~bus_reset_data_beat_cnt ;
-
-   assign bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] = ({pt.ICACHE_BEAT_BITS{bus_reset_data_beat_cnt}} & (pt.ICACHE_BEAT_BITS)'(0)) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_inc_data_beat_cnt}}   & (bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] + {{pt.ICACHE_BEAT_BITS-1{1'b0}},1'b1})) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_hold_data_beat_cnt}}  &  bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]);
-
-
-   assign last_data_recieved_in =  (bus_ifu_wr_en_ff &  bus_last_data_beat & ~scnd_miss_req) | (last_data_recieved_ff & ~ic_act_miss_f) ;
-
-
-
-// Request Address Count
-   assign bus_new_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] = (~miss_pending                    ) ? imb_ff[pt.ICACHE_BEAT_ADDR_HI:3] :
-                                                           (                scnd_miss_req_q  ) ? imb_scnd_ff[pt.ICACHE_BEAT_ADDR_HI:3] :
-                                                           ( bus_cmd_sent                    ) ? (bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0] + 3'b001) :
-                                                                                                  bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0];
-
-   rvdff_fpga #(pt.ICACHE_BEAT_BITS)  bus_rd_addr_ff (.*,  .clk(busclk_reset),  .clken (bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .rawclk(clk), .din ({bus_new_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0]}), .dout({bus_rd_addr_count[pt.ICACHE_BEAT_BITS-1:0]}));
-
-
-
-// command beat Count
-   assign bus_inc_cmd_beat_cnt              =  ifu_bus_cmd_valid    &  ifu_bus_cmd_ready & miss_pending & ~dec_tlu_force_halt;
-   assign bus_reset_cmd_beat_cnt_0          =  (ic_act_miss_f        & ~uncacheable_miss_in) | dec_tlu_force_halt ;
-   assign bus_reset_cmd_beat_cnt_secondlast =  ic_act_miss_f        &  uncacheable_miss_in ;
-   assign bus_hold_cmd_beat_cnt             = ~bus_inc_cmd_beat_cnt & ~(ic_act_miss_f | scnd_miss_req | dec_tlu_force_halt) ;
-   assign bus_cmd_beat_en                   =  bus_inc_cmd_beat_cnt | ic_act_miss_f | dec_tlu_force_halt;
-
-   assign bus_new_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0] =  ({pt.ICACHE_BEAT_BITS{bus_reset_cmd_beat_cnt_0}}       & (pt.ICACHE_BEAT_BITS)'(0) ) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_reset_cmd_beat_cnt_secondlast}} & (pt.ICACHE_BEAT_BITS)'(pt.ICACHE_SCND_LAST)) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_inc_cmd_beat_cnt}}              & (bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0] + {{pt.ICACHE_BEAT_BITS-1{1'b0}}, 1'b1})) |
-                                                          ({pt.ICACHE_BEAT_BITS{bus_hold_cmd_beat_cnt}}             &  bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]) ;
-
-
-   rvclkhdr bus_clk_reset(.en(bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .l1clk(busclk_reset), .*);
-
-
-
-
-   rvdffs_fpga #(pt.ICACHE_BEAT_BITS)  bus_cmd_beat_ff (.*, .clk(busclk_reset), .clken (bus_ifu_bus_clk_en | ic_act_miss_f | dec_tlu_force_halt), .rawclk(clk), .en (bus_cmd_beat_en), .din ({bus_new_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]}),
-                    .dout({bus_cmd_beat_count[pt.ICACHE_BEAT_BITS-1:0]}));
-
-
-    assign bus_last_data_beat     =  uncacheable_miss_ff ? (bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0] == {{pt.ICACHE_BEAT_BITS-1{1'b0}},1'b1}) : (&bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0]);
-
-   assign  bus_ifu_wr_en            =  ifu_bus_rvalid     & miss_pending ;
-   assign  bus_ifu_wr_en_ff         =  ifu_bus_rvalid_ff  & miss_pending ;
-   assign  bus_ifu_wr_en_ff_q       =  ifu_bus_rvalid_ff  & miss_pending & ~uncacheable_miss_ff & ~(|ifu_bus_rresp_ff[1:0]) & write_ic_16_bytes; // qualify with no-error conditions ;
-   assign  bus_ifu_wr_en_ff_wo_err  =  ifu_bus_rvalid_ff & miss_pending &  ~uncacheable_miss_ff;
-
-
-   rvdffie #(10) misc_ff
-       ( .*,
-         .clk(free_l2clk),
-         .din( {ic_act_miss_f,        ifu_wr_cumulative_err,exu_flush_final,  ic_crit_wd_rdy_new_in,bus_ifu_bus_clk_en,   scnd_miss_req_in,bus_cmd_req_in,  last_data_recieved_in,
-ifc_dma_access_ok_d,   dma_iccm_req}),
-         .dout({ic_act_miss_f_delayed,ifu_wr_data_comb_err_ff,  flush_final_f,ic_crit_wd_rdy_new_ff,bus_ifu_bus_clk_en_ff,scnd_miss_req_q, bus_cmd_req_hold,last_data_recieved_ff,
-ifc_dma_access_ok_prev,dma_iccm_req_f})
-         );
-
-   rvdffie #(.WIDTH(pt.ICACHE_BEAT_BITS+5),.OVERRIDE(1)) misc1_ff
-       ( .*,
-         .clk(free_l2clk),
-         .din( {reset_ic_in,sel_mb_addr,   bus_new_data_beat_count[pt.ICACHE_BEAT_BITS-1:0],ifc_region_acc_fault_memory_bf,ic_debug_rd_en,       ic_debug_rd_en_ff}),
-         .dout({reset_ic_ff,sel_mb_addr_ff,bus_data_beat_count[pt.ICACHE_BEAT_BITS-1:0],    ifc_region_acc_fault_memory_f, ic_debug_rd_en_ff,ifu_ic_debug_rd_data_valid})
-         );
-
-   assign    reset_tag_valid_for_miss = ic_act_miss_f_delayed & (miss_state == CRIT_BYP_OK) & ~uncacheable_miss_ff;
-   assign    bus_ifu_wr_data_error    = |ifu_bus_rsp_opc[1:0] &  ifu_bus_rvalid  & miss_pending;
-   assign    bus_ifu_wr_data_error_ff = |ifu_bus_rresp_ff[1:0] &  ifu_bus_rvalid_ff  & miss_pending;
-
-
-   assign ic_crit_wd_rdy   =  ic_crit_wd_rdy_new_in | ic_crit_wd_rdy_new_ff ;
-   assign last_beat        =  bus_last_data_beat & bus_ifu_wr_en_ff;
-   assign reset_beat_cnt    = bus_reset_data_beat_cnt ;
-
-// DMA
-   // Making sure that the dma_access is allowed when we have 2 back to back dma_access_ok. Also gating with current state == idle
-   assign ifc_dma_access_ok_d  = ifc_dma_access_ok &  ~iccm_correct_ecc & ~iccm_dma_sb_error;
-   assign ifc_dma_access_q_ok  = ifc_dma_access_ok &  ~iccm_correct_ecc & ifc_dma_access_ok_prev &  (perr_state == ERR_IDLE)  & ~iccm_dma_sb_error;
-   assign iccm_ready           = ifc_dma_access_q_ok ;
-
-   logic [1:0]        iccm_ecc_word_enable;
-
-    if (pt.ICCM_ENABLE == 1 ) begin: iccm_enabled
-         logic  [3:2] dma_mem_addr_ff  ;
-         logic  iccm_dma_rden    ;
-
-         logic  iccm_dma_ecc_error_in;
-         logic  [13:0] dma_mem_ecc;
-         logic  [63:0] iccm_dma_rdata_in;
-         logic  [31:0] iccm_dma_rdata_1_muxed;
-         logic [1:0] [31:0] iccm_corrected_data;
-         logic [1:0] [06:0] iccm_corrected_ecc;
-
-
-         logic [1:0]        iccm_double_ecc_error;
-
-
-         logic [pt.ICCM_BITS-1:2]       iccm_rw_addr_f;
-
-         logic [31:0]       iccm_corrected_data_f_mux;
-         logic [06:0]       iccm_corrected_ecc_f_mux;
-         logic              iccm_dma_rvalid_in;
-         logic [77:0]       iccm_rdmux_data;
-         logic              iccm_rd_ecc_single_err_hold_in ;
-         logic [2:0]        dma_mem_tag_ff;
-
-
-
-
-         assign iccm_wren          =  (ifc_dma_access_q_ok & dma_iccm_req &  dma_mem_write) | iccm_correct_ecc;
-         assign iccm_rden          =  (ifc_dma_access_q_ok & dma_iccm_req & ~dma_mem_write) | (ifc_iccm_access_bf & ifc_fetch_req_bf);
-         assign iccm_dma_rden      =  (ifc_dma_access_q_ok & dma_iccm_req & ~dma_mem_write)                     ;
-         assign iccm_wr_size[2:0]  =  {3{dma_iccm_req}}    & dma_mem_sz[2:0] ;
-
-         rvecc_encode  iccm_ecc_encode0 (
-                           .din(dma_mem_wdata[31:0]),
-                           .ecc_out(dma_mem_ecc[6:0]));
-
-         rvecc_encode  iccm_ecc_encode1 (
-                           .din(dma_mem_wdata[63:32]),
-                           .ecc_out(dma_mem_ecc[13:7]));
-
-        assign iccm_wr_data[77:0]   =  (iccm_correct_ecc & ~(ifc_dma_access_q_ok & dma_iccm_req)) ?  {iccm_ecc_corr_data_ff[38:0], iccm_ecc_corr_data_ff[38:0]} :
-                                       {dma_mem_ecc[13:7],dma_mem_wdata[63:32], dma_mem_ecc[6:0],dma_mem_wdata[31:0]};
-
-         assign iccm_dma_rdata_1_muxed[31:0] = dma_mem_addr_ff[2] ?  iccm_corrected_data[0][31:0] : iccm_corrected_data[1][31:0] ;
-         assign iccm_dma_rdata_in[63:0]      = iccm_dma_ecc_error_in ? {2{dma_mem_addr[31:0]}} : {iccm_dma_rdata_1_muxed[31:0], iccm_corrected_data[0]};
-         assign iccm_dma_ecc_error_in   =   |(iccm_double_ecc_error[1:0]);
-
-         rvdffe    #(64) dma_data_ff      (.*, .clk(clk), .en(iccm_dma_rvalid_in),  .din(iccm_dma_rdata_in[63:0]), .dout(iccm_dma_rdata[63:0]));
-         rvdffie   #(11) dma_misc_bits    (.*, .clk(free_l2clk), .din({dma_mem_tag[2:0],
-                                                                       dma_mem_tag_ff[2:0],
-                                                                       dma_mem_addr[3:2],
-                                                                       iccm_dma_rden,
-                                                                       iccm_dma_rvalid_in,
-                                                                       iccm_dma_ecc_error_in }),
-                                                                .dout({dma_mem_tag_ff[2:0],
-                                                                       iccm_dma_rtag[2:0],
-                                                                       dma_mem_addr_ff[3:2],
-                                                                       iccm_dma_rvalid_in,
-                                                                       iccm_dma_rvalid,
-                                                                       iccm_dma_ecc_error }));
-
-         assign iccm_rw_addr[pt.ICCM_BITS-1:1]    = (  ifc_dma_access_q_ok & dma_iccm_req  & ~iccm_correct_ecc) ? dma_mem_addr[pt.ICCM_BITS-1:1] :
-                                                 (~(ifc_dma_access_q_ok & dma_iccm_req) &  iccm_correct_ecc) ? {iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2],1'b0} : ifc_fetch_addr_bf[pt.ICCM_BITS-1:1] ;
-
-
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// ECC checking logic for ICCM data.                                               //
-/////////////////////////////////////////////////////////////////////////////////////
-
-  logic [3:0] ic_fetch_val_int_f;
-  logic [3:0] ic_fetch_val_shift_right;
-  assign ic_fetch_val_int_f[3:0] = {2'b00 , ic_fetch_val_f[1:0] } ;
-  assign ic_fetch_val_shift_right[3:0] = {ic_fetch_val_int_f << ifu_fetch_addr_int_f[1] } ;
-
-   assign iccm_rdmux_data[77:0] = iccm_rd_data_ecc[77:0];
-   for (genvar i=0; i < 2 ; i++) begin : ICCM_ECC_CHECK
-      assign iccm_ecc_word_enable[i] = ((|ic_fetch_val_shift_right[(2*i+1):(2*i)] & ~exu_flush_final & sel_iccm_data) | iccm_dma_rvalid_in) & ~dec_tlu_core_ecc_disable;
-   rvecc_decode  ecc_decode (
-                           .en(iccm_ecc_word_enable[i]),
-                           .sed_ded ( 1'b0 ),    // 1 : means only detection
-                           .din(iccm_rdmux_data[(39*i+31):(39*i)]),
-                           .ecc_in(iccm_rdmux_data[(39*i+38):(39*i+32)]),
-                           .dout(iccm_corrected_data[i][31:0]),
-                           .ecc_out(iccm_corrected_ecc[i][6:0]),
-                           .single_ecc_error(iccm_single_ecc_error[i]),
-                           .double_ecc_error(iccm_double_ecc_error[i]));
-end
-
-  assign iccm_rd_ecc_single_err  = (|iccm_single_ecc_error[1:0] ) & ifc_iccm_access_f & ifc_fetch_req_f;
-  assign iccm_rd_ecc_double_err[1:0]  = ~ifu_fetch_addr_int_f[1] ? ({iccm_double_ecc_error[0], iccm_double_ecc_error[0]} ) & {2{ifc_iccm_access_f}} :
-                                                                   ({iccm_double_ecc_error[1], iccm_double_ecc_error[0]} ) & {2{ifc_iccm_access_f}} ;
-
-  assign iccm_corrected_data_f_mux[31:0] = iccm_single_ecc_error[0] ? iccm_corrected_data[0] : iccm_corrected_data[1];
-  assign iccm_corrected_ecc_f_mux[6:0]   = iccm_single_ecc_error[0] ? iccm_corrected_ecc[0]  : iccm_corrected_ecc[1];
-
-  assign iccm_ecc_write_status           = ((iccm_rd_ecc_single_err & ~iccm_rd_ecc_single_err_ff)  & ~exu_flush_final) | iccm_dma_sb_error;
-  assign iccm_rd_ecc_single_err_hold_in  = (iccm_rd_ecc_single_err | iccm_rd_ecc_single_err_ff) & ~exu_flush_final ;
-  assign iccm_error_start                =  iccm_rd_ecc_single_err;
-  assign iccm_ecc_corr_index_in[pt.ICCM_BITS-1:2] = iccm_single_ecc_error[0] ? iccm_rw_addr_f[pt.ICCM_BITS-1:2] : iccm_rw_addr_f[pt.ICCM_BITS-1:2] + 1'b1 ;
-
-   rvdffie #(pt.ICCM_BITS-1) iccm_index_f   (.*, .clk(free_l2clk), .din({iccm_rw_addr[pt.ICCM_BITS-1:2],
-                                                                         iccm_rd_ecc_single_err_hold_in
-                                                                                                       }),
-                                                                  .dout({iccm_rw_addr_f[pt.ICCM_BITS-1:2],
-                                                                         iccm_rd_ecc_single_err_ff}));
-
-   rvdffe #((39+(pt.ICCM_BITS-2)))      ecc_dat0_ff  (
-                                                      .clk(clk),
-                                                      .din({iccm_corrected_ecc_f_mux[6:0],  iccm_corrected_data_f_mux[31:0],iccm_ecc_corr_index_in[pt.ICCM_BITS-1:2]}),
-                                                      .dout({iccm_ecc_corr_data_ff[38:0]   ,iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2]}),
-                                                      .en(iccm_ecc_write_status),
-                                                      .*
-                                                      );
-
-     end else begin : iccm_disabled
-         assign iccm_dma_rvalid = 1'b0 ;
-         assign iccm_dma_ecc_error = 1'b0 ;
-         assign iccm_dma_rdata[63:0] = '0 ;
-         assign iccm_single_ecc_error = '0 ;
-         assign iccm_dma_rtag         = '0 ;
-
-
-
-
-
-
-         assign iccm_rd_ecc_single_err                 = 1'b0 ;
-         assign iccm_rd_ecc_double_err                 = '0 ;
-         assign iccm_rd_ecc_single_err_ff              = 1'b0 ;
-         assign iccm_error_start                         = 1'b0;
-         assign iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2]  =  '0;
-         assign iccm_ecc_corr_data_ff[38:0]            =  '0;
-         assign iccm_ecc_write_status                  =  '0;
-
-
-
-
-
-
-    end
-
-
-////// ICCM signals
-
-
- assign   ic_rd_en    =  (ifc_fetch_req_bf & ~ifc_fetch_uncacheable_bf & ~ifc_iccm_access_bf  &
-                            ~(((miss_state == STREAM) & ~miss_state_en)                                       |
-                              ((miss_state == CRIT_BYP_OK) & ~miss_state_en)                                  |
-                              ((miss_state == STALL_SCND_MISS) & ~miss_state_en)                              |
-                              ((miss_state == MISS_WAIT) & ~miss_state_en)                                    |
-                              ((miss_state == CRIT_WRD_RDY) & ~miss_state_en)  |
-                              ((miss_state == CRIT_BYP_OK) &  miss_state_en &  (miss_nxtstate == MISS_WAIT))  ))  |
-                             ( ifc_fetch_req_bf & exu_flush_final  & ~ifc_fetch_uncacheable_bf & ~ifc_iccm_access_bf )     ;
-
-logic   ic_real_rd_wp_unused;
-assign  ic_real_rd_wp_unused  =  (ifc_fetch_req_bf &  ~ifc_iccm_access_bf  &  ~ifc_region_acc_fault_final_bf & ~dec_tlu_fence_i_wb & ~stream_miss_f & ~ic_act_miss_f &
-                            ~(((miss_state == STREAM) & ~miss_state_en) |
-                              ((miss_state == CRIT_BYP_OK) & ~miss_state_en & ~(miss_nxtstate == MISS_WAIT)) |
-                              ((miss_state == CRIT_BYP_OK) &  miss_state_en &  (miss_nxtstate == MISS_WAIT)) |
-                              ((miss_state == MISS_WAIT) & ~miss_state_en) |
-                              ((miss_state == STALL_SCND_MISS) & ~miss_state_en)  |
-                              ((miss_state == CRIT_WRD_RDY) & ~miss_state_en)  |
-                              ((miss_nxtstate == STREAM) &  miss_state_en)  |
-                              ((miss_state == SCND_MISS) & ~miss_state_en))) |
-                          (ifc_fetch_req_bf &  ~ifc_iccm_access_bf  &  ~ifc_region_acc_fault_final_bf & ~dec_tlu_fence_i_wb & ~stream_miss_f & exu_flush_final)  ;
-
-
-assign ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] = bus_ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] & {pt.ICACHE_NUM_WAYS{write_ic_16_bytes}};
-assign ic_write_stall                =  write_ic_16_bytes &  ~((((miss_state== CRIT_BYP_OK) | ((miss_state==STREAM) & ~(exu_flush_final | ifu_bp_hit_taken_q_f  | stream_eol_f ))) & ~(bus_ifu_wr_en_ff & last_beat & ~uncacheable_miss_ff)));
-
-
-
-
-///////////////////////////////////////////////////////////////
-// Icache status and LRU
-///////////////////////////////////////////////////////////////
-logic [pt.ICACHE_NUM_WAYS-1:0] ic_tag_valid_unq;
-if (pt.ICACHE_ENABLE == 1 ) begin: icache_enabled
-   assign  ic_valid  = ~ifu_wr_cumulative_err_data & ~(reset_ic_in | reset_ic_ff) & ~reset_tag_valid_for_miss;
-
-   assign ifu_status_wr_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] = ((ic_debug_rd_en | ic_debug_wr_en ) & ic_debug_tag_array) ?
-                                                                           ic_debug_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] :
-                                                                           ifu_status_wr_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO];
-
-   // status
-
-         assign way_status_wr_en_w_debug = way_status_wr_en | (ic_debug_wr_en  & ic_debug_tag_array);
-
-         assign way_status_new_w_debug[pt.ICACHE_STATUS_BITS-1:0]  = (ic_debug_wr_en  & ic_debug_tag_array) ? (pt.ICACHE_STATUS_BITS == 1) ? ic_debug_wr_data[4] : ic_debug_wr_data[6:4] :
-                                                way_status_new[pt.ICACHE_STATUS_BITS-1:0] ;
-
-   rvdffie #(.WIDTH(pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO+1+pt.ICACHE_STATUS_BITS),.OVERRIDE(1))  status_misc_ff
-     (.*,
-      .clk(free_l2clk),
-      .din({ ifu_status_wr_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO], way_status_wr_en_w_debug, way_status_new_w_debug[pt.ICACHE_STATUS_BITS-1:0]}),
-      .dout({ifu_status_wr_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],      way_status_wr_en_ff,      way_status_new_ff[pt.ICACHE_STATUS_BITS-1:0]} )
-      );
-
-   logic [(pt.ICACHE_TAG_DEPTH/8)-1 : 0] way_status_clken;
-   logic [(pt.ICACHE_TAG_DEPTH/8)-1 : 0] way_status_clk;
-
-   for (genvar i=0 ; i<pt.ICACHE_TAG_DEPTH/8 ; i++) begin : CLK_GRP_WAY_STATUS
-      assign way_status_clken[i] = (ifu_status_wr_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+3] == i );
-
-           rvclkhdr way_status_cgc ( .en(way_status_clken[i]),   .l1clk(way_status_clk[i]), .* );
-
-
-
-      for (genvar j=0 ; j<8 ; j++) begin : WAY_STATUS
-         rvdffs_fpga #(pt.ICACHE_STATUS_BITS) ic_way_status (.*,
-                   .clk(way_status_clk[i]),
-                   .clken(way_status_clken[i]),
-                   .rawclk(clk),
-                   .en(((ifu_status_wr_addr_ff[pt.ICACHE_TAG_INDEX_LO+2:pt.ICACHE_TAG_INDEX_LO] == j) & way_status_wr_en_ff)),
-                   .din(way_status_new_ff[pt.ICACHE_STATUS_BITS-1:0]),
-                   .dout(way_status_out[8*i+j]));
-      end  // WAY_STATUS
-   end  // CLK_GRP_WAY_STATUS
-
-  always_comb begin : way_status_out_mux
-      way_status[pt.ICACHE_STATUS_BITS-1:0] = '0 ;
-      for (int j=0; j< pt.ICACHE_TAG_DEPTH; j++) begin : status_mux_loop
-        if (ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO)'(j)) begin : mux_out
-         way_status[pt.ICACHE_STATUS_BITS-1:0] =  way_status_out[j];
-        end
-      end
-  end
-
-         assign ifu_ic_rw_int_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] = ((ic_debug_rd_en | ic_debug_wr_en ) & ic_debug_tag_array) ?
-                                                                        ic_debug_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] :
-                                                                        ifu_ic_rw_int_addr[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO];
-         assign ifu_tag_wren_w_debug[pt.ICACHE_NUM_WAYS-1:0] = ifu_tag_wren[pt.ICACHE_NUM_WAYS-1:0] | ic_debug_tag_wr_en[pt.ICACHE_NUM_WAYS-1:0] ;
-
-         assign ic_valid_w_debug = (ic_debug_wr_en & ic_debug_tag_array) ? ic_debug_wr_data[0] : ic_valid;
-
-         rvdffie #(pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO+pt.ICACHE_NUM_WAYS+1) tag_addr_ff (.*,
-                                                                                              .clk(free_l2clk),
-                                                                                              .din({ifu_ic_rw_int_addr_w_debug[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],
-                                                                                                    ifu_tag_wren_w_debug[pt.ICACHE_NUM_WAYS-1:0],
-                                                                                                    ic_valid_w_debug}),
-                                                                                              .dout({ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO],
-                                                                                                     ifu_tag_wren_ff[pt.ICACHE_NUM_WAYS-1:0],
-                                                                                                     ic_valid_ff})
-                                                                                              );
-
-
-   logic [pt.ICACHE_NUM_WAYS-1:0] [pt.ICACHE_TAG_DEPTH-1:0] ic_tag_valid_out ;
-
-   logic [(pt.ICACHE_TAG_DEPTH/32)-1:0] [pt.ICACHE_NUM_WAYS-1:0] tag_valid_clken ;
-   logic [(pt.ICACHE_TAG_DEPTH/32)-1:0] [pt.ICACHE_NUM_WAYS-1:0] tag_valid_clk   ;
-
-   for (genvar i=0 ; i<pt.ICACHE_TAG_DEPTH/32 ; i++) begin : CLK_GRP_TAG_VALID
-      for (genvar j=0; j<pt.ICACHE_NUM_WAYS; j++) begin : way_clken
-      if (pt.ICACHE_TAG_DEPTH == 32 ) begin
-        assign tag_valid_clken[i][j] =  ifu_tag_wren_ff[j] | perr_err_inv_way[j] | reset_all_tags;
-      end else begin
-         assign tag_valid_clken[i][j] = (((ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+5] == i ) &  ifu_tag_wren_ff[j] ) |
-                                        ((perr_ic_index_ff     [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO+5] == i ) &  perr_err_inv_way[j]) | reset_all_tags);
-      end
-
-
-           rvclkhdr way_status_cgc ( .en(tag_valid_clken[i][j]),   .l1clk(tag_valid_clk[i][j]), .* );
-
-
-
-
-      for (genvar k=0 ; k<32 ; k++) begin : TAG_VALID
-         rvdffs_fpga #(1) ic_way_tagvalid_dup (.*,
-                   .clk(tag_valid_clk[i][j]),
-                   .clken(tag_valid_clken[i][j]),
-                   .rawclk(clk),
-                   .en(((ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (k + 32*i)) & ifu_tag_wren_ff[j] ) |
-                       ((perr_ic_index_ff     [pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (k + 32*i)) & perr_err_inv_way[j]) | reset_all_tags),
-                   .din(ic_valid_ff & ~reset_all_tags & ~perr_sel_invalidate),
-                   .dout(ic_tag_valid_out[j][32*i+k]));
-      end
-      end
-   end
-
-
-  always_comb begin : tag_valid_out_mux
-      ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0] = '0;
-      for (int j=0; j< pt.ICACHE_TAG_DEPTH; j++) begin : tag_valid_loop
-        if (ifu_ic_rw_int_addr_ff[pt.ICACHE_INDEX_HI:pt.ICACHE_TAG_INDEX_LO] == (pt.ICACHE_TAG_LO-pt.ICACHE_TAG_INDEX_LO)'(j)) begin : valid_out
-           for ( int k=0; k<pt.ICACHE_NUM_WAYS; k++) begin
-             ic_tag_valid_unq[k] |= ic_tag_valid_out[k][j];
-        end
-      end
-      end
-  end
-   //   four-way set associative - three bits
-//   each bit represents one branch point in a binary decision tree; let 1
-//   represent that the left side has been referenced more recently than the
-//   right side, and 0 vice-versa
-//
-//              are all 4 ways valid?
-//                   /       \
-//                  |        no, use an invalid way.
-//                  |
-//                  |
-//             bit_0 == 0?             state | replace      ref to | next state
-//               /       \             ------+--------      -------+-----------
-//              y         n             x00  |  way_0      way_0 |    _11
-//             /           \            x10  |  way_1      way_1 |    _01
-//      bit_1 == 0?    bit_2 == 0?      0x1  |  way_2      way_2 |    1_0
-//        /    \          /    \        1x1  |  way_3      way_3 |    0_0
-//       y      n        y      n
-//      /        \      /        \        ('x' means don't care       ('_' means unchanged)
-//    way_0    way_1  way_2     way_3      don't care)
-
-   if (pt.ICACHE_NUM_WAYS == 4) begin: four_way_plru
-   assign replace_way_mb_any[3] = ( way_status_mb_ff[2]  & way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[3]& tagv_mb_ff[2] &  tagv_mb_ff[1] &  tagv_mb_ff[0]) ;
-   assign replace_way_mb_any[2] = (~way_status_mb_ff[2]  & way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[2]& tagv_mb_ff[1] &  tagv_mb_ff[0]) ;
-   assign replace_way_mb_any[1] = ( way_status_mb_ff[1] & ~way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[1]& tagv_mb_ff[0] ) ;
-   assign replace_way_mb_any[0] = (~way_status_mb_ff[1] & ~way_status_mb_ff[0] & (&tagv_mb_ff[3:0])) |
-                                  (~tagv_mb_ff[0] ) ;
-
-   assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = ({3{~exu_flush_final & ic_rd_hit[0]}} & {way_status[2] , 1'b1 , 1'b1}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[1]}} & {way_status[2] , 1'b0 , 1'b1}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[2]}} & {1'b1 ,way_status[1]  , 1'b0}) |
-                                                          ({3{~exu_flush_final & ic_rd_hit[3]}} & {1'b0 ,way_status[1]  , 1'b0}) ;
-
-  assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = ({3{replace_way_mb_any[0]}} & {way_status_mb_ff[2] , 1'b1 , 1'b1}) |
-                                   ({3{replace_way_mb_any[1]}} & {way_status_mb_ff[2] , 1'b0 , 1'b1}) |
-                                   ({3{replace_way_mb_any[2]}} & {1'b1 ,way_status_mb_ff[1]  , 1'b0}) |
-                                   ({3{replace_way_mb_any[3]}} & {1'b0 ,way_status_mb_ff[1]  , 1'b0}) ;
-  end
-   else begin : two_ways_plru
-      assign replace_way_mb_any[0]                      = (~way_status_mb_ff  & tagv_mb_ff[0] & tagv_mb_ff[1]) | ~tagv_mb_ff[0];
-      assign replace_way_mb_any[1]                      = ( way_status_mb_ff  & tagv_mb_ff[0] & tagv_mb_ff[1]) | ~tagv_mb_ff[1] & tagv_mb_ff[0];
-      assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = ic_rd_hit[0];
-      assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = replace_way_mb_any[0];
-
-   end
-  // Make sure to select the way_status_hit_new even when in hit_under_miss.
-  assign way_status_new[pt.ICACHE_STATUS_BITS-1:0]     = (bus_ifu_wr_en_ff_q  & last_beat )  ? way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] :
-                                                          way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] ;
-
-
-  assign way_status_wr_en  = (bus_ifu_wr_en_ff_q  & last_beat) | ic_act_hit_f;
-
-   for (genvar i=0; i<pt.ICACHE_NUM_WAYS; i++) begin  : bus_wren_loop
-      assign bus_wren[i]           = bus_ifu_wr_en_ff_q & replace_way_mb_any[i] & miss_pending ;
-      assign bus_wren_last[i]      = bus_ifu_wr_en_ff_wo_err & replace_way_mb_any[i] & miss_pending & bus_last_data_beat;
-      assign ifu_tag_wren[i]       = bus_wren_last[i] | wren_reset_miss[i];
-      assign wren_reset_miss[i]    = replace_way_mb_any[i] & reset_tag_valid_for_miss ;
-
-   end
-   assign bus_ic_wr_en[pt.ICACHE_NUM_WAYS-1:0] = bus_wren[pt.ICACHE_NUM_WAYS-1:0];
-
-
-end else begin: icache_disabled
-   assign ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0]      = '0;
-   assign way_status[pt.ICACHE_STATUS_BITS-1:0]         = '0;
-   assign replace_way_mb_any[pt.ICACHE_NUM_WAYS-1:0]    = '0;
-   assign way_status_hit_new[pt.ICACHE_STATUS_BITS-1:0] = '0;
-   assign way_status_rep_new[pt.ICACHE_STATUS_BITS-1:0] = '0;
-   assign way_status_new[pt.ICACHE_STATUS_BITS-1:0]     = '0;
-   assign way_status_wr_en                           = '0;
-   assign bus_wren[pt.ICACHE_NUM_WAYS-1:0]              = '0;
-
-end
-
-   assign ic_tag_valid[pt.ICACHE_NUM_WAYS-1:0] = ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0]   & {pt.ICACHE_NUM_WAYS{(~fetch_uncacheable_ff & ifc_fetch_req_f_raw) }} ;
-   assign ic_debug_tag_val_rd_out           = |(ic_tag_valid_unq[pt.ICACHE_NUM_WAYS-1:0] &  ic_debug_way_ff[pt.ICACHE_NUM_WAYS-1:0]   & {pt.ICACHE_NUM_WAYS{ic_debug_rd_en_ff}}) ;
-///////////////////////////////////////////
-// PMU signals
-///////////////////////////////////////////
-
- assign ifu_pmu_ic_miss_in   = ic_act_miss_f ;
- assign ifu_pmu_ic_hit_in    = ic_act_hit_f  ;
- assign ifu_pmu_bus_error_in = |ifc_bus_acc_fault_f;
- assign ifu_pmu_bus_trxn_in  = bus_cmd_sent ;
- assign ifu_pmu_bus_busy_in  = ifu_bus_arvalid_ff & ~ifu_bus_arready_ff & miss_pending ;
-
-   rvdffie #(9) ifu_pmu_sigs_ff (.*,
-                    .clk (free_l2clk),
-                    .din ({ifc_fetch_uncacheable_bf, ifc_fetch_req_qual_bf, dma_sb_err_state, dec_tlu_fence_i_wb,
-                           ifu_pmu_ic_miss_in,
-                           ifu_pmu_ic_hit_in,
-                           ifu_pmu_bus_error_in,
-                           ifu_pmu_bus_busy_in,
-                           ifu_pmu_bus_trxn_in
-                          }),
-                    .dout({fetch_uncacheable_ff, ifc_fetch_req_f_raw, dma_sb_err_state_ff, reset_all_tags,
-                           ifu_pmu_ic_miss,
-                           ifu_pmu_ic_hit,
-                           ifu_pmu_bus_error,
-                           ifu_pmu_bus_busy,
-                           ifu_pmu_bus_trxn
-                           }));
-
-
-///////////////////////////////////////////////////////
-// Cache debug logic                                 //
-///////////////////////////////////////////////////////
-assign ic_debug_addr[pt.ICACHE_INDEX_HI:3] = dec_tlu_ic_diag_pkt.icache_dicawics[pt.ICACHE_INDEX_HI-3:0] ;
-assign ic_debug_way_enc[01:00]             = dec_tlu_ic_diag_pkt.icache_dicawics[15:14] ;
-
-
-assign ic_debug_tag_array       = dec_tlu_ic_diag_pkt.icache_dicawics[16] ;
-assign ic_debug_rd_en           = dec_tlu_ic_diag_pkt.icache_rd_valid ;
-assign ic_debug_wr_en           = dec_tlu_ic_diag_pkt.icache_wr_valid ;
-
-
-assign ic_debug_way[pt.ICACHE_NUM_WAYS-1:0]        = {(ic_debug_way_enc[1:0] == 2'b11),
-                                                      (ic_debug_way_enc[1:0] == 2'b10),
-                                                      (ic_debug_way_enc[1:0] == 2'b01),
-                                                      (ic_debug_way_enc[1:0] == 2'b00) };
-
-assign ic_debug_tag_wr_en[pt.ICACHE_NUM_WAYS-1:0] = {pt.ICACHE_NUM_WAYS{ic_debug_wr_en & ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ;
-
-assign ic_debug_ict_array_sel_in      =  ic_debug_rd_en & ic_debug_tag_array ;
-
-rvdff_fpga #(01+pt.ICACHE_NUM_WAYS) ifu_debug_sel_ff (.*, .clk (debug_c1_clk),
-                    .clken(debug_c1_clken), .rawclk(clk),
-                    .din ({ic_debug_ict_array_sel_in,
-                           ic_debug_way[pt.ICACHE_NUM_WAYS-1:0]
-                          }),
-                    .dout({ic_debug_ict_array_sel_ff,
-                           ic_debug_way_ff[pt.ICACHE_NUM_WAYS-1:0]
-                           }));
-
-
-
-
-assign debug_data_clken  =  ic_debug_rd_en_ff;
-
-
-
-
-// memory protection  - equation to look identical to the LSU equation
-   assign ifc_region_acc_okay = (~(|{pt.INST_ACCESS_ENABLE0,pt.INST_ACCESS_ENABLE1,pt.INST_ACCESS_ENABLE2,pt.INST_ACCESS_ENABLE3,pt.INST_ACCESS_ENABLE4,pt.INST_ACCESS_ENABLE5,pt.INST_ACCESS_ENABLE6,pt.INST_ACCESS_ENABLE7})) |
-                               (pt.INST_ACCESS_ENABLE0 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK0)) == (pt.INST_ACCESS_ADDR0 | pt.INST_ACCESS_MASK0)) |
-                               (pt.INST_ACCESS_ENABLE1 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK1)) == (pt.INST_ACCESS_ADDR1 | pt.INST_ACCESS_MASK1)) |
-                               (pt.INST_ACCESS_ENABLE2 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK2)) == (pt.INST_ACCESS_ADDR2 | pt.INST_ACCESS_MASK2)) |
-                               (pt.INST_ACCESS_ENABLE3 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK3)) == (pt.INST_ACCESS_ADDR3 | pt.INST_ACCESS_MASK3)) |
-                               (pt.INST_ACCESS_ENABLE4 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK4)) == (pt.INST_ACCESS_ADDR4 | pt.INST_ACCESS_MASK4)) |
-                               (pt.INST_ACCESS_ENABLE5 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK5)) == (pt.INST_ACCESS_ADDR5 | pt.INST_ACCESS_MASK5)) |
-                               (pt.INST_ACCESS_ENABLE6 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK6)) == (pt.INST_ACCESS_ADDR6 | pt.INST_ACCESS_MASK6)) |
-                               (pt.INST_ACCESS_ENABLE7 & (({ifc_fetch_addr_bf[31:1],1'b0} | pt.INST_ACCESS_MASK7)) == (pt.INST_ACCESS_ADDR7 | pt.INST_ACCESS_MASK7));
-
-   assign ifc_region_acc_fault_memory_bf   =  ~ifc_iccm_access_bf & ~ifc_region_acc_okay & ifc_fetch_req_bf;
-
-   assign ifc_region_acc_fault_final_bf = ifc_region_acc_fault_bf | ifc_region_acc_fault_memory_bf;
-
-
-
-
-endmodule  // eb1_ifu_mem_ctl
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Function: Top level file for load store unit
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-
-module eb1_lsu
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-(
-
-   input logic                             clk_override,             // Override non-functional clock gating
-   input logic                             dec_tlu_flush_lower_r,    // I0/I1 writeback flush. This is used to flush the old packets only
-   input logic                             dec_tlu_i0_kill_writeb_r, // I0 is flushed, don't writeback any results to arch state
-   input logic                             dec_tlu_force_halt,       // This will be high till TLU goes to debug halt
-
-   // chicken signals
-   input logic                             dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                             dec_tlu_wb_coalescing_disable,     // disable the write buffer coalesce
-   input logic                             dec_tlu_sideeffect_posted_disable, // disable the posted sideeffect load store to the bus
-   input logic                             dec_tlu_core_ecc_disable,          // disable the generation of the ecc
-
-   input logic [31:0]                      exu_lsu_rs1_d,        // address rs operand
-   input logic [31:0]                      exu_lsu_rs2_d,        // store data
-   input logic [11:0]                      dec_lsu_offset_d,     // address offset operand
-
-   input                                   eb1_lsu_pkt_t lsu_p,  // lsu control packet
-   input logic                             dec_lsu_valid_raw_d,   // Raw valid for address computation
-   input logic [31:0]                      dec_tlu_mrac_ff,       // CSR for memory region control
-
-   output logic [31:0]                     lsu_result_m,          // lsu load data
-   output logic [31:0]                     lsu_result_corr_r,     // This is the ECC corrected data going to RF
-   output logic                            lsu_load_stall_any,    // This is for blocking loads in the decode
-   output logic                            lsu_store_stall_any,   // This is for blocking stores in the decode
-   output logic                            lsu_fastint_stall_any, // Stall the fastint in decode-1 stage
-   output logic                            lsu_idle_any,          // lsu buffers are empty and no instruction in the pipeline. Doesn't include DMA
-   output logic                            lsu_active,            // Used to turn off top level clk
-
-   output logic [31:1]                     lsu_fir_addr,        // fast interrupt address
-   output logic [1:0]                      lsu_fir_error,       // Error during fast interrupt lookup
-
-   output logic                            lsu_single_ecc_error_incr,     // Increment the ecc counter
-   output eb1_lsu_error_pkt_t             lsu_error_pkt_r,               // lsu exception packet
-   output logic                            lsu_imprecise_error_load_any,  // bus load imprecise error
-   output logic                            lsu_imprecise_error_store_any, // bus store imprecise error
-   output logic [31:0]                     lsu_imprecise_error_addr_any,  // bus store imprecise error address
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,      // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,        // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,        // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r,    // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,   // the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,   // non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,     // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,         // Data of the non block load
-
-   output logic                            lsu_pmu_load_external_m,        // PMU : Bus loads
-   output logic                            lsu_pmu_store_external_m,       // PMU : Bus loads
-   output logic                            lsu_pmu_misaligned_m,           // PMU : misaligned
-   output logic                            lsu_pmu_bus_trxn,               // PMU : bus transaction
-   output logic                            lsu_pmu_bus_misaligned,         // PMU : misaligned access going to the bus
-   output logic                            lsu_pmu_bus_error,              // PMU : bus sending error back
-   output logic                            lsu_pmu_bus_busy,               // PMU : bus is not ready
-
-   // Trigger signals
-   input                                   eb1_trigger_pkt_t [3:0] trigger_pkt_any, // Trigger info from the decode
-   output logic [3:0]                      lsu_trigger_match_m,                      // lsu trigger hit (one bit per trigger)
-
-   // DCCM ports
-   output logic                            dccm_wren,       // DCCM write enable
-   output logic                            dccm_rden,       // DCCM read enable
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo, // DCCM write address low bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi, // DCCM write address hi bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo, // DCCM read address low bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi, // DCCM read address hi bank (hi and low same if aligned read)
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo, // DCCM write data for lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi, // DCCM write data for hi bank
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_lo, // DCCM read data low bank
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_hi, // DCCM read data hi bank
-
-   // PIC ports
-   output logic                            picm_wren,    // PIC memory write enable
-   output logic                            picm_rden,    // PIC memory read enable
-   output logic                            picm_mken,    // Need to read the mask for stores to determine which bits to write/forward
-   output logic [31:0]                     picm_rdaddr,  // address for pic read access
-   output logic [31:0]                     picm_wraddr,  // address for pic write access
-   output logic [31:0]                     picm_wr_data, // PIC memory write data
-   input logic [31:0]                      picm_rd_data, // PIC memory read/mask data
-
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-   input  logic                            lsu_axi_rlast,
-
-   input logic                             lsu_bus_clk_en,    // external drives a clock_en to control bus ratio
-
-   // DMA slave
-   input logic                             dma_dccm_req,       // DMA read/write to dccm
-   input logic [2:0]                       dma_mem_tag,        // DMA request tag
-   input logic [31:0]                      dma_mem_addr,       // DMA address
-   input logic [2:0]                       dma_mem_sz,         // DMA access size
-   input logic                             dma_mem_write,      // DMA access is a write
-   input logic [63:0]                      dma_mem_wdata,      // DMA write data
-
-   output logic                            dccm_dma_rvalid,     // lsu data valid for DMA dccm read
-   output logic                            dccm_dma_ecc_error,  // DMA load had ecc error
-   output logic [2:0]                      dccm_dma_rtag,       // DMA request tag
-   output logic [63:0]                     dccm_dma_rdata,      // lsu data for DMA dccm read
-   output logic                            dccm_ready,          // lsu ready for DMA access
-
-   input logic                             scan_mode,           // scan mode
-   input logic                             clk,                 // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                             active_clk,          // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                             rst_l                // reset, active low
-
-   );
-
-
-   logic        lsu_dccm_rden_m;
-   logic        lsu_dccm_rden_r;
-   logic [31:0] store_data_m;
-   logic [31:0] store_data_r;
-   logic [31:0] store_data_hi_r, store_data_lo_r;
-   logic [31:0] store_datafn_hi_r, store_datafn_lo_r;
-   logic [31:0] sec_data_lo_m, sec_data_hi_m;
-   logic [31:0] sec_data_lo_r, sec_data_hi_r;
-
-   logic [31:0] lsu_ld_data_m;
-   logic [31:0] dccm_rdata_hi_m, dccm_rdata_lo_m;
-   logic [6:0]  dccm_data_ecc_hi_m, dccm_data_ecc_lo_m;
-   logic        lsu_single_ecc_error_m;
-   logic        lsu_double_ecc_error_m;
-
-   logic [31:0] lsu_ld_data_r;
-   logic [31:0] lsu_ld_data_corr_r;
-   logic [31:0] dccm_rdata_hi_r, dccm_rdata_lo_r;
-   logic [6:0]  dccm_data_ecc_hi_r, dccm_data_ecc_lo_r;
-   logic        single_ecc_error_hi_r, single_ecc_error_lo_r;
-   logic        lsu_single_ecc_error_r;
-   logic        lsu_double_ecc_error_r;
-   logic        ld_single_ecc_error_r, ld_single_ecc_error_r_ff;
-
-   logic [31:0] picm_mask_data_m;
-
-   logic [31:0] lsu_addr_d, lsu_addr_m, lsu_addr_r;
-   logic [31:0] end_addr_d, end_addr_m, end_addr_r;
-
-   eb1_lsu_pkt_t    lsu_pkt_d, lsu_pkt_m, lsu_pkt_r;
-   logic        lsu_i0_valid_d, lsu_i0_valid_m, lsu_i0_valid_r;
-
-   // Store Buffer signals
-   logic        store_stbuf_reqvld_r;
-   logic        ldst_stbuf_reqvld_r;
-
-   logic        lsu_commit_r;
-   logic        lsu_exc_m;
-
-   logic        addr_in_dccm_d, addr_in_dccm_m, addr_in_dccm_r;
-   logic        addr_in_pic_d, addr_in_pic_m, addr_in_pic_r;
-   logic        ldst_dual_d, ldst_dual_m, ldst_dual_r;
-   logic        addr_external_m;
-
-   logic                          stbuf_reqvld_any;
-   logic                          stbuf_reqvld_flushed_any;
-   logic [pt.LSU_SB_BITS-1:0]     stbuf_addr_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_data_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  stbuf_ecc_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r_ff, sec_data_hi_r_ff;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_hi_r_ff, sec_data_ecc_lo_r_ff;
-
-   logic                          lsu_cmpen_m;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_hi_m;
-   logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_lo_m;
-   logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_hi_m;
-   logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_lo_m;
-
-   logic        lsu_stbuf_commit_any;
-   logic        lsu_stbuf_empty_any;   // This is for blocking loads
-   logic        lsu_stbuf_full_any;
-
-    // Bus signals
-   logic        lsu_busreq_r;
-   logic        lsu_bus_buffer_pend_any;
-   logic        lsu_bus_buffer_empty_any;
-   logic        lsu_bus_buffer_full_any;
-   logic        lsu_busreq_m;
-   logic [31:0] bus_read_data_m;
-
-   logic        flush_m_up, flush_r;
-   logic        is_sideeffects_m;
-   logic [2:0]  dma_mem_tag_d, dma_mem_tag_m;
-   logic        ldst_nodma_mtor;
-   logic        dma_dccm_wen, dma_pic_wen;
-   logic [31:0] dma_dccm_wdata_lo, dma_dccm_wdata_hi;
-   logic [pt.DCCM_ECC_WIDTH-1:0] dma_dccm_wdata_ecc_lo, dma_dccm_wdata_ecc_hi;
-
-   // Clocks
-   logic        lsu_busm_clken;
-   logic        lsu_bus_obuf_c1_clken;
-   logic        lsu_c1_m_clk, lsu_c1_r_clk;
-   logic        lsu_c2_m_clk, lsu_c2_r_clk;
-   logic        lsu_store_c1_m_clk, lsu_store_c1_r_clk;
-
-   logic        lsu_stbuf_c1_clk;
-   logic        lsu_bus_ibuf_c1_clk, lsu_bus_obuf_c1_clk, lsu_bus_buf_c1_clk;
-   logic        lsu_busm_clk;
-   logic        lsu_free_c2_clk;
-
-   logic        lsu_raw_fwd_lo_m, lsu_raw_fwd_hi_m;
-   logic        lsu_raw_fwd_lo_r, lsu_raw_fwd_hi_r;
-
-   assign       lsu_raw_fwd_lo_m = (|stbuf_fwdbyteen_lo_m[pt.DCCM_BYTE_WIDTH-1:0]);
-   assign       lsu_raw_fwd_hi_m = (|stbuf_fwdbyteen_hi_m[pt.DCCM_BYTE_WIDTH-1:0]);
-
-   eb1_lsu_lsc_ctl #(.pt(pt)) lsu_lsc_ctl (.*);
-
-   // block stores in decode  - for either bus or stbuf reasons
-   assign lsu_store_stall_any = lsu_stbuf_full_any | lsu_bus_buffer_full_any | ld_single_ecc_error_r_ff;
-   assign lsu_load_stall_any = lsu_bus_buffer_full_any | ld_single_ecc_error_r_ff;
-   assign lsu_fastint_stall_any = ld_single_ecc_error_r;    // Stall the fastint in decode-1 stage
-
-   // Ready to accept dma trxns
-   // There can't be any inpipe forwarding from non-dma packet to dma packet since they can be flushed so we can't have st in r when dma is in m
-   assign dma_mem_tag_d[2:0]   = dma_mem_tag[2:0];
-   assign ldst_nodma_mtor = (lsu_pkt_m.valid & ~lsu_pkt_m.dma & (addr_in_dccm_m | addr_in_pic_m) & lsu_pkt_m.store);
-
-   assign dccm_ready = ~(dec_lsu_valid_raw_d | ldst_nodma_mtor | ld_single_ecc_error_r_ff);
-
-   assign dma_dccm_wen = dma_dccm_req & dma_mem_write & addr_in_dccm_d & dma_mem_sz[1];   // Perform DMA writes only for word/dword
-   assign dma_pic_wen  = dma_dccm_req & dma_mem_write & addr_in_pic_d;
-   assign {dma_dccm_wdata_hi[31:0], dma_dccm_wdata_lo[31:0]} = dma_mem_wdata[63:0] >> {dma_mem_addr[2:0], 3'b000};   // Shift the dma data to lower bits to make it consistent to lsu stores
-
-
-   // Generate per cycle flush signals
-   assign flush_m_up = dec_tlu_flush_lower_r;
-   assign flush_r    = dec_tlu_i0_kill_writeb_r;
-
-   // lsu idle
-   // lsu halt idle. This is used for entering the halt mode. Also, DMA accesses are allowed during fence.
-   // Indicates non-idle if there is a instruction valid in d-r or read/write buffers are non-empty since they can come with error
-   // Store buffer now have only non-dma dccm stores
-   // stbuf_empty not needed since it has only dccm stores
-   assign lsu_idle_any = ~((lsu_pkt_m.valid & ~lsu_pkt_m.dma) |
-                           (lsu_pkt_r.valid & ~lsu_pkt_r.dma)) &
-                           lsu_bus_buffer_empty_any;
-
-   assign lsu_active = (lsu_pkt_m.valid | lsu_pkt_r.valid | ld_single_ecc_error_r_ff) | ~lsu_bus_buffer_empty_any;  // This includes DMA. Used for gating top clock
-
-   // Instantiate the store buffer
-   assign store_stbuf_reqvld_r = lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_dccm_r & ~flush_r & (~lsu_pkt_r.dma | ((lsu_pkt_r.by | lsu_pkt_r.half) & ~lsu_double_ecc_error_r));
-
-   // Disable Forwarding for now
-   assign lsu_cmpen_m = lsu_pkt_m.valid & (lsu_pkt_m.load | lsu_pkt_m.store) & (addr_in_dccm_m | addr_in_pic_m);
-
-   // Bus signals
-   assign lsu_busreq_m = lsu_pkt_m.valid & ((lsu_pkt_m.load | lsu_pkt_m.store) & addr_external_m) & ~flush_m_up & ~lsu_exc_m & ~lsu_pkt_m.fast_int;
-
-   // Dual signals
-   assign ldst_dual_d  = (lsu_addr_d[2] != end_addr_d[2]);
-   assign ldst_dual_m  = (lsu_addr_m[2] != end_addr_m[2]);
-   assign ldst_dual_r  = (lsu_addr_r[2] != end_addr_r[2]);
-
-   // PMU signals
-   assign lsu_pmu_misaligned_m     = lsu_pkt_m.valid & ((lsu_pkt_m.half & lsu_addr_m[0]) | (lsu_pkt_m.word & (|lsu_addr_m[1:0])));
-   assign lsu_pmu_load_external_m  = lsu_pkt_m.valid & lsu_pkt_m.load & addr_external_m;
-   assign lsu_pmu_store_external_m = lsu_pkt_m.valid & lsu_pkt_m.store & addr_external_m;
-
-   eb1_lsu_dccm_ctl #(.pt(pt)) dccm_ctl (
-      .lsu_addr_d(lsu_addr_d[31:0]),
-      .end_addr_d(end_addr_d[pt.DCCM_BITS-1:0]),
-      .lsu_addr_m(lsu_addr_m[pt.DCCM_BITS-1:0]),
-      .lsu_addr_r(lsu_addr_r[31:0]),
-
-      .end_addr_m(end_addr_m[pt.DCCM_BITS-1:0]),
-      .end_addr_r(end_addr_r[pt.DCCM_BITS-1:0]),
-      .*
-   );
-
-   eb1_lsu_stbuf #(.pt(pt)) stbuf (
-      .lsu_addr_d(lsu_addr_d[pt.LSU_SB_BITS-1:0]),
-      .end_addr_d(end_addr_d[pt.LSU_SB_BITS-1:0]),
-
-      .*
-
-   );
-
-   eb1_lsu_ecc #(.pt(pt)) ecc (
-      .lsu_addr_r(lsu_addr_r[pt.DCCM_BITS-1:0]),
-      .end_addr_r(end_addr_r[pt.DCCM_BITS-1:0]),
-      .lsu_addr_m(lsu_addr_m[pt.DCCM_BITS-1:0]),
-      .end_addr_m(end_addr_m[pt.DCCM_BITS-1:0]),
-      .*
-   );
-
-   eb1_lsu_trigger #(.pt(pt)) trigger (
-      .store_data_m(store_data_m[31:0]),
-      .*
-   );
-
-   // Clk domain
-   eb1_lsu_clkdomain #(.pt(pt)) clkdomain (.*);
-
-   // Bus interface
-   eb1_lsu_bus_intf #(.pt(pt)) bus_intf (
-      .lsu_addr_m(lsu_addr_m[31:0] & {32{addr_external_m & lsu_pkt_m.valid}}),
-      .lsu_addr_r(lsu_addr_r[31:0] & {32{lsu_busreq_r}}),
-
-      .end_addr_m(end_addr_m[31:0] & {32{addr_external_m & lsu_pkt_m.valid}}),
-      .end_addr_r(end_addr_r[31:0] & {32{lsu_busreq_r}}),
-
-      .store_data_r(store_data_r[31:0] & {32{lsu_busreq_r}}),
-      .*
-   );
-
-   //Flops
-   rvdff #(3) dma_mem_tag_mff     (.*, .din(dma_mem_tag_d[2:0]), .dout(dma_mem_tag_m[2:0]), .clk(lsu_c1_m_clk));
-   rvdff #(2) lsu_raw_fwd_r_ff    (.*, .din({lsu_raw_fwd_hi_m, lsu_raw_fwd_lo_m}),     .dout({lsu_raw_fwd_hi_r, lsu_raw_fwd_lo_r}),     .clk(lsu_c2_r_clk));
-
-
-endmodule // eb1_lsu
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Checks the memory map for the address
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_addrcheck
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic          lsu_c2_m_clk,              // clock
-   input logic          rst_l,                     // reset
-
-   input logic [31:0]   start_addr_d,              // start address for lsu
-   input logic [31:0]   end_addr_d,                // end address for lsu
-   input eb1_lsu_pkt_t lsu_pkt_d,                 // packet in d
-   input logic [31:0]   dec_tlu_mrac_ff,           // CSR read
-   input logic [3:0]    rs1_region_d,              // address rs operand [31:28]
-
-   input logic [31:0]   rs1_d,                     // address rs operand
-
-   output logic         is_sideeffects_m,          // is sideffects space
-   output logic         addr_in_dccm_d,            // address in dccm
-   output logic         addr_in_pic_d,             // address in pic
-   output logic         addr_external_d,           // address in external
-
-   output logic         access_fault_d,            // access fault
-   output logic         misaligned_fault_d,        // misaligned
-   output logic [3:0]   exc_mscause_d,             // mscause for access/misaligned faults
-
-   output logic         fir_dccm_access_error_d,   // Fast interrupt dccm access error
-   output logic         fir_nondccm_access_error_d,// Fast interrupt dccm access error
-
-   input  logic         scan_mode                  // Scan mode
-);
-
-
-   logic        non_dccm_access_ok;
-   logic        is_sideeffects_d, is_aligned_d;
-   logic        start_addr_in_dccm_d, end_addr_in_dccm_d;
-   logic        start_addr_in_dccm_region_d, end_addr_in_dccm_region_d;
-   logic        start_addr_in_pic_d, end_addr_in_pic_d;
-   logic        start_addr_in_pic_region_d, end_addr_in_pic_region_d;
-   logic [4:0]  csr_idx;
-   logic        addr_in_iccm;
-   logic        start_addr_dccm_or_pic;
-   logic        base_reg_dccm_or_pic;
-   logic        unmapped_access_fault_d, mpu_access_fault_d, picm_access_fault_d, regpred_access_fault_d;
-   logic        regcross_misaligned_fault_d, sideeffect_misaligned_fault_d;
-   logic [3:0]  access_fault_mscause_d;
-   logic [3:0]  misaligned_fault_mscause_d;
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      // Start address check
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) start_addr_dccm_rangecheck (
-         .addr(start_addr_d[31:0]),
-         .in_range(start_addr_in_dccm_d),
-         .in_region(start_addr_in_dccm_region_d)
-      );
-
-      // End address check
-      rvrangecheck #(.CCM_SADR(pt.DCCM_SADR),
-                     .CCM_SIZE(pt.DCCM_SIZE)) end_addr_dccm_rangecheck (
-         .addr(end_addr_d[31:0]),
-         .in_range(end_addr_in_dccm_d),
-         .in_region(end_addr_in_dccm_region_d)
-      );
-   end else begin: Gen_dccm_disable // block: Gen_dccm_enable
-      assign start_addr_in_dccm_d = '0;
-      assign start_addr_in_dccm_region_d = '0;
-      assign end_addr_in_dccm_d = '0;
-      assign end_addr_in_dccm_region_d = '0;
-   end
-
-   if (pt.ICCM_ENABLE == 1) begin : check_iccm
-      assign addr_in_iccm =  (start_addr_d[31:28] == pt.ICCM_REGION);
-   end else begin
-     assign addr_in_iccm = 1'b0;
-   end
-
-   // PIC memory check
-   // Start address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) start_addr_pic_rangecheck (
-      .addr(start_addr_d[31:0]),
-      .in_range(start_addr_in_pic_d),
-      .in_region(start_addr_in_pic_region_d)
-   );
-
-   // End address check
-   rvrangecheck #(.CCM_SADR(pt.PIC_BASE_ADDR),
-                  .CCM_SIZE(pt.PIC_SIZE)) end_addr_pic_rangecheck (
-      .addr(end_addr_d[31:0]),
-      .in_range(end_addr_in_pic_d),
-      .in_region(end_addr_in_pic_region_d)
-   );
-
-   assign start_addr_dccm_or_pic  = start_addr_in_dccm_region_d | start_addr_in_pic_region_d;
-   assign base_reg_dccm_or_pic    = ((rs1_region_d[3:0] == pt.DCCM_REGION) & pt.DCCM_ENABLE) | (rs1_region_d[3:0] == pt.PIC_REGION);
-   assign addr_in_dccm_d          = (start_addr_in_dccm_d & end_addr_in_dccm_d);
-   assign addr_in_pic_d           = (start_addr_in_pic_d & end_addr_in_pic_d);
-
-   assign addr_external_d   = ~(start_addr_in_dccm_region_d | start_addr_in_pic_region_d);
-   assign csr_idx[4:0]       = {start_addr_d[31:28], 1'b1};
-   assign is_sideeffects_d = dec_tlu_mrac_ff[csr_idx] & ~(start_addr_in_dccm_region_d | start_addr_in_pic_region_d | addr_in_iccm) & lsu_pkt_d.valid & (lsu_pkt_d.store | lsu_pkt_d.load);  //every region has the 2 LSB indicating ( 1: sideeffects/no_side effects, and 0: cacheable ). Ignored in internal regions
-   assign is_aligned_d    = (lsu_pkt_d.word & (start_addr_d[1:0] == 2'b0)) |
-                              (lsu_pkt_d.half & (start_addr_d[0] == 1'b0)) |
-                              lsu_pkt_d.by;
-
-   assign non_dccm_access_ok = (~(|{pt.DATA_ACCESS_ENABLE0,pt.DATA_ACCESS_ENABLE1,pt.DATA_ACCESS_ENABLE2,pt.DATA_ACCESS_ENABLE3,pt.DATA_ACCESS_ENABLE4,pt.DATA_ACCESS_ENABLE5,pt.DATA_ACCESS_ENABLE6,pt.DATA_ACCESS_ENABLE7})) |
-                               (((pt.DATA_ACCESS_ENABLE0 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK0)) == (pt.DATA_ACCESS_ADDR0 | pt.DATA_ACCESS_MASK0)) |
-                                 (pt.DATA_ACCESS_ENABLE1 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK1)) == (pt.DATA_ACCESS_ADDR1 | pt.DATA_ACCESS_MASK1)) |
-                                 (pt.DATA_ACCESS_ENABLE2 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK2)) == (pt.DATA_ACCESS_ADDR2 | pt.DATA_ACCESS_MASK2)) |
-                                 (pt.DATA_ACCESS_ENABLE3 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK3)) == (pt.DATA_ACCESS_ADDR3 | pt.DATA_ACCESS_MASK3)) |
-                                 (pt.DATA_ACCESS_ENABLE4 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK4)) == (pt.DATA_ACCESS_ADDR4 | pt.DATA_ACCESS_MASK4)) |
-                                 (pt.DATA_ACCESS_ENABLE5 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK5)) == (pt.DATA_ACCESS_ADDR5 | pt.DATA_ACCESS_MASK5)) |
-                                 (pt.DATA_ACCESS_ENABLE6 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK6)) == (pt.DATA_ACCESS_ADDR6 | pt.DATA_ACCESS_MASK6)) |
-                                 (pt.DATA_ACCESS_ENABLE7 & ((start_addr_d[31:0] | pt.DATA_ACCESS_MASK7)) == (pt.DATA_ACCESS_ADDR7 | pt.DATA_ACCESS_MASK7)))   &
-                                ((pt.DATA_ACCESS_ENABLE0 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK0)) == (pt.DATA_ACCESS_ADDR0 | pt.DATA_ACCESS_MASK0)) |
-                                 (pt.DATA_ACCESS_ENABLE1 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK1)) == (pt.DATA_ACCESS_ADDR1 | pt.DATA_ACCESS_MASK1)) |
-                                 (pt.DATA_ACCESS_ENABLE2 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK2)) == (pt.DATA_ACCESS_ADDR2 | pt.DATA_ACCESS_MASK2)) |
-                                 (pt.DATA_ACCESS_ENABLE3 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK3)) == (pt.DATA_ACCESS_ADDR3 | pt.DATA_ACCESS_MASK3)) |
-                                 (pt.DATA_ACCESS_ENABLE4 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK4)) == (pt.DATA_ACCESS_ADDR4 | pt.DATA_ACCESS_MASK4)) |
-                                 (pt.DATA_ACCESS_ENABLE5 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK5)) == (pt.DATA_ACCESS_ADDR5 | pt.DATA_ACCESS_MASK5)) |
-                                 (pt.DATA_ACCESS_ENABLE6 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK6)) == (pt.DATA_ACCESS_ADDR6 | pt.DATA_ACCESS_MASK6)) |
-                                 (pt.DATA_ACCESS_ENABLE7 & ((end_addr_d[31:0]   | pt.DATA_ACCESS_MASK7)) == (pt.DATA_ACCESS_ADDR7 | pt.DATA_ACCESS_MASK7))));
-
-   // Access fault logic
-   // 0. Unmapped local memory : Addr in dccm region but not in dccm offset OR Addr in picm region but not in picm offset OR DCCM -> PIC cross when DCCM/PIC in same region
-   // 1. Uncorrectable (double bit) ECC error
-   // 3. Address is not in a populated non-dccm region
-   // 5. Region predication access fault: Base Address in DCCM/PIC and Final address in non-DCCM/non-PIC region or vice versa
-   // 6. Ld/St access to picm are not word aligned or word size
-   assign regpred_access_fault_d  = (start_addr_dccm_or_pic ^ base_reg_dccm_or_pic);                   // 5. Region predication access fault: Base Address in DCCM/PIC and Final address in non-DCCM/non-PIC region or vice versa
-   assign picm_access_fault_d     = (addr_in_pic_d & ((start_addr_d[1:0] != 2'b0) | ~lsu_pkt_d.word));                                               // 6. Ld/St access to picm are not word aligned or word size
-
-   if (pt.DCCM_ENABLE & (pt.DCCM_REGION == pt.PIC_REGION)) begin
-      assign unmapped_access_fault_d = ((start_addr_in_dccm_region_d & ~(start_addr_in_dccm_d | start_addr_in_pic_d)) |   // 0. Addr in dccm/pic region but not in dccm/pic offset
-                                        (end_addr_in_dccm_region_d & ~(end_addr_in_dccm_d | end_addr_in_pic_d))       |   // 0. Addr in dccm/pic region but not in dccm/pic offset
-                                        (start_addr_in_dccm_d & end_addr_in_pic_d)                                    |   // 0. DCCM -> PIC cross when DCCM/PIC in same region
-                                        (start_addr_in_pic_d  & end_addr_in_dccm_d));                                     // 0. DCCM -> PIC cross when DCCM/PIC in same region
-      assign mpu_access_fault_d      = (~start_addr_in_dccm_region_d & ~non_dccm_access_ok);                              // 3. Address is not in a populated non-dccm region
-   end else begin
-      assign unmapped_access_fault_d = ((start_addr_in_dccm_region_d & ~start_addr_in_dccm_d)                              |   // 0. Addr in dccm region but not in dccm offset
-                                        (end_addr_in_dccm_region_d & ~end_addr_in_dccm_d)                                  |   // 0. Addr in dccm region but not in dccm offset
-                                        (start_addr_in_pic_region_d & ~start_addr_in_pic_d)                                |   // 0. Addr in picm region but not in picm offset
-                                        (end_addr_in_pic_region_d & ~end_addr_in_pic_d));                                      // 0. Addr in picm region but not in picm offset
-      assign mpu_access_fault_d      = (~start_addr_in_pic_region_d & ~start_addr_in_dccm_region_d & ~non_dccm_access_ok);     // 3. Address is not in a populated non-dccm region
-   end
-
-   assign access_fault_d = (unmapped_access_fault_d | mpu_access_fault_d | picm_access_fault_d | regpred_access_fault_d) & lsu_pkt_d.valid & ~lsu_pkt_d.dma;
-   assign access_fault_mscause_d[3:0] = unmapped_access_fault_d ? 4'h2 : mpu_access_fault_d ? 4'h3 : regpred_access_fault_d ? 4'h5 : picm_access_fault_d ? 4'h6 : 4'h0;
-
-   // Misaligned happens due to 2 reasons
-   // 0. Region cross
-   // 1. sideeffects access which are not aligned
-   assign regcross_misaligned_fault_d = (start_addr_d[31:28] != end_addr_d[31:28]);
-   assign sideeffect_misaligned_fault_d = (is_sideeffects_d & ~is_aligned_d);
-   assign misaligned_fault_d = (regcross_misaligned_fault_d | (sideeffect_misaligned_fault_d & addr_external_d)) & lsu_pkt_d.valid & ~lsu_pkt_d.dma;
-   assign misaligned_fault_mscause_d[3:0] = regcross_misaligned_fault_d ? 4'h2 : sideeffect_misaligned_fault_d ? 4'h1 : 4'h0;
-
-   assign exc_mscause_d[3:0] = misaligned_fault_d ? misaligned_fault_mscause_d[3:0] : access_fault_mscause_d[3:0];
-
-   // Fast interrupt error logic
-   assign fir_dccm_access_error_d    = ((start_addr_in_dccm_region_d & ~start_addr_in_dccm_d) |
-                                        (end_addr_in_dccm_region_d   & ~end_addr_in_dccm_d)) & lsu_pkt_d.valid & lsu_pkt_d.fast_int;
-   assign fir_nondccm_access_error_d = ~(start_addr_in_dccm_region_d & end_addr_in_dccm_region_d) & lsu_pkt_d.valid & lsu_pkt_d.fast_int;
-
-   rvdff #(.WIDTH(1))   is_sideeffects_mff (.din(is_sideeffects_d), .dout(is_sideeffects_m), .clk(lsu_c2_m_clk), .*);
-
-endmodule // eb1_lsu_addrcheck
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: lsu interface with interface queue
-// Comments:
-//
-//********************************************************************************
-
-module eb1_lsu_bus_buffer
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic                          clk,                                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                          clk_override,                       // Override non-functional clock gating
-   input logic                          rst_l,                              // reset, active low
-   input logic                          scan_mode,                          // scan mode
-   input logic                          dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                          dec_tlu_wb_coalescing_disable,      // disable write buffer coalescing
-   input logic                          dec_tlu_sideeffect_posted_disable,  // Don't block the sideeffect load store to the bus
-   input logic                          dec_tlu_force_halt,
-
-   // various clocks needed for the bus reads and writes
-   input logic                          lsu_bus_obuf_c1_clken,
-   input logic                          lsu_busm_clken,
-   input logic                          lsu_c2_r_clk,
-   input logic                          lsu_bus_ibuf_c1_clk,
-   input logic                          lsu_bus_obuf_c1_clk,
-   input logic                          lsu_bus_buf_c1_clk,
-   input logic                          lsu_free_c2_clk,
-   input logic                          lsu_busm_clk,
-
-
-   input logic                          dec_lsu_valid_raw_d,            // Raw valid for address computation
-   input eb1_lsu_pkt_t                 lsu_pkt_m,                      // lsu packet flowing down the pipe
-   input eb1_lsu_pkt_t                 lsu_pkt_r,                      // lsu packet flowing down the pipe
-
-   input logic [31:0]                   lsu_addr_m,                     // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_m,                     // lsu address flowing down the pipe
-   input logic [31:0]                   lsu_addr_r,                     // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_r,                     // lsu address flowing down the pipe
-   input logic [31:0]                   store_data_r,                   // store data flowing down the pipe
-
-   input logic                          no_word_merge_r,                // r store doesn't need to wait in ibuf since it will not coalesce
-   input logic                          no_dword_merge_r,               // r store doesn't need to wait in ibuf since it will not coalesce
-   input logic                          lsu_busreq_m,                   // bus request is in m
-   output logic                         lsu_busreq_r,                   // bus request is in r
-   input logic                          ld_full_hit_m,                  // load can get all its byte from a write buffer entry
-   input logic                          flush_m_up,                     // flush
-   input logic                          flush_r,                        // flush
-   input logic                          lsu_commit_r,                   // lsu instruction in r commits
-   input logic                          is_sideeffects_r,               // lsu attribute is side_effects
-   input logic                          ldst_dual_d,                    // load/store is unaligned at 32 bit boundary
-   input logic                          ldst_dual_m,                    // load/store is unaligned at 32 bit boundary
-   input logic                          ldst_dual_r,                    // load/store is unaligned at 32 bit boundary
-
-   input logic [7:0]                    ldst_byteen_ext_m,              // HI and LO signals
-
-   output logic                         lsu_bus_buffer_pend_any,          // bus buffer has a pending bus entry
-   output logic                         lsu_bus_buffer_full_any,          // bus buffer is full
-   output logic                         lsu_bus_buffer_empty_any,         // bus buffer is empty
-
-   output logic [3:0]                   ld_byte_hit_buf_lo, ld_byte_hit_buf_hi,    // Byte enables for forwarding data
-   output logic [31:0]                  ld_fwddata_buf_lo, ld_fwddata_buf_hi,      // load forwarding data
-
-   output logic                         lsu_imprecise_error_load_any,     // imprecise load bus error
-   output logic                         lsu_imprecise_error_store_any,    // imprecise store bus error
-   output logic [31:0]                  lsu_imprecise_error_addr_any,     // address of the imprecise error
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,     // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,       // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,       // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r,   // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,  // the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,  // non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,    // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,        // Data of the non block load
-
-   // PMU events
-   output logic                         lsu_pmu_bus_trxn,
-   output logic                         lsu_pmu_bus_misaligned,
-   output logic                         lsu_pmu_bus_error,
-   output logic                         lsu_pmu_bus_busy,
-
-   // AXI Write Channels
-   output logic                            lsu_axi_awvalid,
-   input  logic                            lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_awid,
-   output logic [31:0]                     lsu_axi_awaddr,
-   output logic [3:0]                      lsu_axi_awregion,
-   output logic [7:0]                      lsu_axi_awlen,
-   output logic [2:0]                      lsu_axi_awsize,
-   output logic [1:0]                      lsu_axi_awburst,
-   output logic                            lsu_axi_awlock,
-   output logic [3:0]                      lsu_axi_awcache,
-   output logic [2:0]                      lsu_axi_awprot,
-   output logic [3:0]                      lsu_axi_awqos,
-
-   output logic                            lsu_axi_wvalid,
-   input  logic                            lsu_axi_wready,
-   output logic [63:0]                     lsu_axi_wdata,
-   output logic [7:0]                      lsu_axi_wstrb,
-   output logic                            lsu_axi_wlast,
-
-   input  logic                            lsu_axi_bvalid,
-   output logic                            lsu_axi_bready,
-   input  logic [1:0]                      lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                            lsu_axi_arvalid,
-   input  logic                            lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_arid,
-   output logic [31:0]                     lsu_axi_araddr,
-   output logic [3:0]                      lsu_axi_arregion,
-   output logic [7:0]                      lsu_axi_arlen,
-   output logic [2:0]                      lsu_axi_arsize,
-   output logic [1:0]                      lsu_axi_arburst,
-   output logic                            lsu_axi_arlock,
-   output logic [3:0]                      lsu_axi_arcache,
-   output logic [2:0]                      lsu_axi_arprot,
-   output logic [3:0]                      lsu_axi_arqos,
-
-   input  logic                            lsu_axi_rvalid,
-   output logic                            lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]       lsu_axi_rid,
-   input  logic [63:0]                     lsu_axi_rdata,
-   input  logic [1:0]                      lsu_axi_rresp,
-
-   input logic                             lsu_bus_clk_en,
-   input logic                             lsu_bus_clk_en_q
-
-);
-
-   // For Ld: IDLE -> WAIT -> CMD -> RESP -> DONE_PARTIAL(?) -> DONE_WAIT(?) -> DONE -> IDLE
-   // For St: IDLE -> WAIT -> CMD -> RESP(?) -> IDLE
-   typedef enum logic [2:0] {IDLE=3'b000, WAIT=3'b001, CMD=3'b010, RESP=3'b011, DONE_PARTIAL=3'b100, DONE_WAIT=3'b101, DONE=3'b110} state_t;
-
-   localparam DEPTH     = pt.LSU_NUM_NBLOAD;
-   localparam DEPTH_LOG2 = pt.LSU_NUM_NBLOAD_WIDTH;
-   localparam TIMER     = 8;   // This can be only power of 2
-   localparam TIMER_MAX = TIMER - 1;  // Maximum value of timer
-   localparam TIMER_LOG2 = (TIMER < 2) ? 1 : $clog2(TIMER);
-
-   logic [3:0]                          ldst_byteen_hi_m, ldst_byteen_lo_m;
-   logic [DEPTH-1:0]                    ld_addr_hitvec_lo, ld_addr_hitvec_hi;
-   logic [3:0][DEPTH-1:0]               ld_byte_hitvec_lo, ld_byte_hitvec_hi;
-   logic [3:0][DEPTH-1:0]               ld_byte_hitvecfn_lo, ld_byte_hitvecfn_hi;
-
-   logic                                ld_addr_ibuf_hit_lo, ld_addr_ibuf_hit_hi;
-   logic [3:0]                          ld_byte_ibuf_hit_lo, ld_byte_ibuf_hit_hi;
-
-   logic [3:0]                          ldst_byteen_r;
-   logic [3:0]                          ldst_byteen_hi_r, ldst_byteen_lo_r;
-   logic [31:0]                         store_data_hi_r, store_data_lo_r;
-   logic                                is_aligned_r;                   // Aligned load/store
-   logic                                ldst_samedw_r;
-
-   logic                                lsu_nonblock_load_valid_r;
-   logic [31:0]                         lsu_nonblock_load_data_hi, lsu_nonblock_load_data_lo, lsu_nonblock_data_unalgn;
-   logic [1:0]                          lsu_nonblock_addr_offset;
-   logic [1:0]                          lsu_nonblock_sz;
-   logic                                lsu_nonblock_unsign;
-   logic                                lsu_nonblock_load_data_ready;
-
-   logic [DEPTH-1:0]                    CmdPtr0Dec, CmdPtr1Dec;
-   logic [DEPTH-1:0]                    RspPtrDec;
-   logic [DEPTH_LOG2-1:0]               CmdPtr0, CmdPtr1;
-   logic [DEPTH_LOG2-1:0]               RspPtr;
-   logic [DEPTH_LOG2-1:0]               WrPtr0_m, WrPtr0_r;
-   logic [DEPTH_LOG2-1:0]               WrPtr1_m, WrPtr1_r;
-   logic                                found_wrptr0, found_wrptr1, found_cmdptr0, found_cmdptr1;
-   logic [3:0]                          buf_numvld_any, buf_numvld_wrcmd_any, buf_numvld_cmd_any, buf_numvld_pend_any;
-   logic                                any_done_wait_state;
-   logic                                bus_sideeffect_pend;
-   logic                                bus_coalescing_disable;
-
-   logic                                bus_addr_match_pending;
-   logic                                bus_cmd_sent, bus_cmd_ready;
-   logic                                bus_wcmd_sent, bus_wdata_sent;
-   logic                                bus_rsp_read, bus_rsp_write;
-   logic [pt.LSU_BUS_TAG-1:0]           bus_rsp_read_tag, bus_rsp_write_tag;
-   logic                                bus_rsp_read_error, bus_rsp_write_error;
-   logic [63:0]                         bus_rsp_rdata;
-
-   // Bus buffer signals
-   state_t [DEPTH-1:0]                  buf_state;
-   logic   [DEPTH-1:0][1:0]             buf_sz;
-   logic   [DEPTH-1:0][31:0]            buf_addr;
-   logic   [DEPTH-1:0][3:0]             buf_byteen;
-   logic   [DEPTH-1:0]                  buf_sideeffect;
-   logic   [DEPTH-1:0]                  buf_write;
-   logic   [DEPTH-1:0]                  buf_unsign;
-   logic   [DEPTH-1:0]                  buf_dual;
-   logic   [DEPTH-1:0]                  buf_samedw;
-   logic   [DEPTH-1:0]                  buf_nomerge;
-   logic   [DEPTH-1:0]                  buf_dualhi;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_dualtag;
-   logic   [DEPTH-1:0]                  buf_ldfwd;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_ldfwdtag;
-   logic   [DEPTH-1:0]                  buf_error;
-   logic   [DEPTH-1:0][31:0]            buf_data;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_age, buf_age_younger;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage, buf_rsp_pickage;
-
-   state_t [DEPTH-1:0]                  buf_nxtstate;
-   logic   [DEPTH-1:0]                  buf_rst;
-   logic   [DEPTH-1:0]                  buf_state_en;
-   logic   [DEPTH-1:0]                  buf_cmd_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_resp_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_state_bus_en;
-   logic   [DEPTH-1:0]                  buf_dual_in;
-   logic   [DEPTH-1:0]                  buf_samedw_in;
-   logic   [DEPTH-1:0]                  buf_nomerge_in;
-   logic   [DEPTH-1:0]                  buf_sideeffect_in;
-   logic   [DEPTH-1:0]                  buf_unsign_in;
-   logic   [DEPTH-1:0][1:0]             buf_sz_in;
-   logic   [DEPTH-1:0]                  buf_write_in;
-   logic   [DEPTH-1:0]                  buf_wr_en;
-   logic   [DEPTH-1:0]                  buf_dualhi_in;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_dualtag_in;
-   logic   [DEPTH-1:0]                  buf_ldfwd_en;
-   logic   [DEPTH-1:0]                  buf_ldfwd_in;
-   logic   [DEPTH-1:0][DEPTH_LOG2-1:0]  buf_ldfwdtag_in;
-   logic   [DEPTH-1:0][3:0]             buf_byteen_in;
-   logic   [DEPTH-1:0][31:0]            buf_addr_in;
-   logic   [DEPTH-1:0][31:0]            buf_data_in;
-   logic   [DEPTH-1:0]                  buf_error_en;
-   logic   [DEPTH-1:0]                  buf_data_en;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_age_in;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_ageQ;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage_set;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspage_in;
-   logic   [DEPTH-1:0][DEPTH-1:0]       buf_rspageQ;
-
-   // Input buffer signals
-   logic                               ibuf_valid;
-   logic                               ibuf_dual;
-   logic                               ibuf_samedw;
-   logic                               ibuf_nomerge;
-   logic [DEPTH_LOG2-1:0]              ibuf_tag;
-   logic [DEPTH_LOG2-1:0]              ibuf_dualtag;
-   logic                               ibuf_sideeffect;
-   logic                               ibuf_unsign;
-   logic                               ibuf_write;
-   logic [1:0]                         ibuf_sz;
-   logic [3:0]                         ibuf_byteen;
-   logic [31:0]                        ibuf_addr;
-   logic [31:0]                        ibuf_data;
-   logic [TIMER_LOG2-1:0]              ibuf_timer;
-
-   logic                               ibuf_byp;
-   logic                               ibuf_wr_en;
-   logic                               ibuf_rst;
-   logic                               ibuf_force_drain;
-   logic                               ibuf_drain_vld;
-   logic [DEPTH-1:0]                   ibuf_drainvec_vld;
-   logic [DEPTH_LOG2-1:0]              ibuf_tag_in;
-   logic [DEPTH_LOG2-1:0]              ibuf_dualtag_in;
-   logic [1:0]                         ibuf_sz_in;
-   logic [31:0]                        ibuf_addr_in;
-   logic [3:0]                         ibuf_byteen_in;
-   logic [31:0]                        ibuf_data_in;
-   logic [TIMER_LOG2-1:0]              ibuf_timer_in;
-   logic [3:0]                         ibuf_byteen_out;
-   logic [31:0]                        ibuf_data_out;
-   logic                               ibuf_merge_en, ibuf_merge_in;
-
-   // Output buffer signals
-   logic                               obuf_valid;
-   logic                               obuf_write;
-   logic                               obuf_nosend;
-   logic                               obuf_rdrsp_pend;
-   logic                               obuf_sideeffect;
-   logic [31:0]                        obuf_addr;
-   logic [63:0]                        obuf_data;
-   logic [1:0]                         obuf_sz;
-   logic [7:0]                         obuf_byteen;
-   logic                               obuf_merge;
-   logic                               obuf_cmd_done, obuf_data_done;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag0;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag1;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_rdrsp_tag;
-
-   logic                               ibuf_buf_byp;
-   logic                               obuf_force_wr_en;
-   logic                               obuf_wr_wait;
-   logic                               obuf_wr_en, obuf_wr_enQ;
-   logic                               obuf_rst;
-   logic                               obuf_write_in;
-   logic                               obuf_nosend_in;
-   logic                               obuf_rdrsp_pend_en;
-   logic                               obuf_rdrsp_pend_in;
-   logic                               obuf_sideeffect_in;
-   logic                               obuf_aligned_in;
-   logic [31:0]                        obuf_addr_in;
-   logic [63:0]                        obuf_data_in;
-   logic [1:0]                         obuf_sz_in;
-   logic [7:0]                         obuf_byteen_in;
-   logic                               obuf_merge_in;
-   logic                               obuf_cmd_done_in, obuf_data_done_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag0_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_tag1_in;
-   logic [pt.LSU_BUS_TAG-1:0]          obuf_rdrsp_tag_in;
-
-   logic                               obuf_merge_en;
-   logic [TIMER_LOG2-1:0]              obuf_wr_timer, obuf_wr_timer_in;
-   logic [7:0]                         obuf_byteen0_in, obuf_byteen1_in;
-   logic [63:0]                        obuf_data0_in, obuf_data1_in;
-
-   logic                               lsu_axi_awvalid_q, lsu_axi_awready_q;
-   logic                               lsu_axi_wvalid_q, lsu_axi_wready_q;
-   logic                               lsu_axi_arvalid_q, lsu_axi_arready_q;
-   logic                               lsu_axi_bvalid_q, lsu_axi_bready_q;
-   logic                               lsu_axi_rvalid_q, lsu_axi_rready_q;
-   logic [pt.LSU_BUS_TAG-1:0]          lsu_axi_bid_q, lsu_axi_rid_q;
-   logic [1:0]                         lsu_axi_bresp_q, lsu_axi_rresp_q;
-   logic [pt.LSU_BUS_TAG-1:0]          lsu_imprecise_error_store_tag;
-   logic [63:0]                        lsu_axi_rdata_q;
-
-   //------------------------------------------------------------------------------
-   // Load forwarding logic start
-   //------------------------------------------------------------------------------
-
-   // Function to do 8 to 3 bit encoding
-   function automatic logic [2:0] f_Enc8to3;
-      input logic [7:0] Dec_value;
-
-      logic [2:0]       Enc_value;
-      Enc_value[0] = Dec_value[1] | Dec_value[3] | Dec_value[5] | Dec_value[7];
-      Enc_value[1] = Dec_value[2] | Dec_value[3] | Dec_value[6] | Dec_value[7];
-      Enc_value[2] = Dec_value[4] | Dec_value[5] | Dec_value[6] | Dec_value[7];
-
-      return Enc_value[2:0];
-   endfunction // f_Enc8to3
-
-   // Buffer hit logic for bus load forwarding
-   assign ldst_byteen_hi_m[3:0]   = ldst_byteen_ext_m[7:4];
-   assign ldst_byteen_lo_m[3:0]   = ldst_byteen_ext_m[3:0];
-   for (genvar i=0; i<DEPTH; i++) begin
-      assign ld_addr_hitvec_lo[i] = (lsu_addr_m[31:2] == buf_addr[i][31:2]) & buf_write[i] & (buf_state[i] != IDLE) & lsu_busreq_m;
-      assign ld_addr_hitvec_hi[i] = (end_addr_m[31:2] == buf_addr[i][31:2]) & buf_write[i] & (buf_state[i] != IDLE) & lsu_busreq_m;
-   end
-
-   for (genvar j=0; j<4; j++) begin
-     assign ld_byte_hit_buf_lo[j] = |(ld_byte_hitvecfn_lo[j]) | ld_byte_ibuf_hit_lo[j];
-     assign ld_byte_hit_buf_hi[j] = |(ld_byte_hitvecfn_hi[j]) | ld_byte_ibuf_hit_hi[j];
-     for (genvar i=0; i<DEPTH; i++) begin
-         assign ld_byte_hitvec_lo[j][i] = ld_addr_hitvec_lo[i] & buf_byteen[i][j] & ldst_byteen_lo_m[j];
-         assign ld_byte_hitvec_hi[j][i] = ld_addr_hitvec_hi[i] & buf_byteen[i][j] & ldst_byteen_hi_m[j];
-
-         assign ld_byte_hitvecfn_lo[j][i] = ld_byte_hitvec_lo[j][i] & ~(|(ld_byte_hitvec_lo[j] & buf_age_younger[i])) & ~ld_byte_ibuf_hit_lo[j];  // Kill the byte enable if younger entry exists or byte exists in ibuf
-         assign ld_byte_hitvecfn_hi[j][i] = ld_byte_hitvec_hi[j][i] & ~(|(ld_byte_hitvec_hi[j] & buf_age_younger[i])) & ~ld_byte_ibuf_hit_hi[j];  // Kill the byte enable if younger entry exists or byte exists in ibuf
-      end
-   end
-
-   // Hit in the ibuf
-   assign ld_addr_ibuf_hit_lo = (lsu_addr_m[31:2] == ibuf_addr[31:2]) & ibuf_write & ibuf_valid & lsu_busreq_m;
-   assign ld_addr_ibuf_hit_hi = (end_addr_m[31:2] == ibuf_addr[31:2]) & ibuf_write & ibuf_valid & lsu_busreq_m;
-
-   for (genvar i=0; i<4; i++) begin
-      assign ld_byte_ibuf_hit_lo[i] = ld_addr_ibuf_hit_lo & ibuf_byteen[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_ibuf_hit_hi[i] = ld_addr_ibuf_hit_hi & ibuf_byteen[i] & ldst_byteen_hi_m[i];
-   end
-
-   always_comb begin
-      ld_fwddata_buf_lo[31:0] = {{8{ld_byte_ibuf_hit_lo[3]}},{8{ld_byte_ibuf_hit_lo[2]}},{8{ld_byte_ibuf_hit_lo[1]}},{8{ld_byte_ibuf_hit_lo[0]}}} & ibuf_data[31:0];
-      ld_fwddata_buf_hi[31:0] = {{8{ld_byte_ibuf_hit_hi[3]}},{8{ld_byte_ibuf_hit_hi[2]}},{8{ld_byte_ibuf_hit_hi[1]}},{8{ld_byte_ibuf_hit_hi[0]}}} & ibuf_data[31:0];
-      for (int i=0; i<DEPTH; i++) begin
-         ld_fwddata_buf_lo[7:0]   |= {8{ld_byte_hitvecfn_lo[0][i]}} & buf_data[i][7:0];
-         ld_fwddata_buf_lo[15:8]  |= {8{ld_byte_hitvecfn_lo[1][i]}} & buf_data[i][15:8];
-         ld_fwddata_buf_lo[23:16] |= {8{ld_byte_hitvecfn_lo[2][i]}} & buf_data[i][23:16];
-         ld_fwddata_buf_lo[31:24] |= {8{ld_byte_hitvecfn_lo[3][i]}} & buf_data[i][31:24];
-
-         ld_fwddata_buf_hi[7:0]   |= {8{ld_byte_hitvecfn_hi[0][i]}} & buf_data[i][7:0];
-         ld_fwddata_buf_hi[15:8]  |= {8{ld_byte_hitvecfn_hi[1][i]}} & buf_data[i][15:8];
-         ld_fwddata_buf_hi[23:16] |= {8{ld_byte_hitvecfn_hi[2][i]}} & buf_data[i][23:16];
-         ld_fwddata_buf_hi[31:24] |= {8{ld_byte_hitvecfn_hi[3][i]}} & buf_data[i][31:24];
-      end
-   end
-
-   //------------------------------------------------------------------------------
-   // Load forwarding logic end
-   //------------------------------------------------------------------------------
-
-   assign bus_coalescing_disable = dec_tlu_wb_coalescing_disable | pt.BUILD_AHB_LITE;
-
-   // Get the hi/lo byte enable
-   assign ldst_byteen_r[3:0] = ({4{lsu_pkt_r.by}}   & 4'b0001) |
-                                 ({4{lsu_pkt_r.half}} & 4'b0011) |
-                                 ({4{lsu_pkt_r.word}} & 4'b1111);
-
-   assign {ldst_byteen_hi_r[3:0], ldst_byteen_lo_r[3:0]} = {4'b0,ldst_byteen_r[3:0]} << lsu_addr_r[1:0];
-   assign {store_data_hi_r[31:0], store_data_lo_r[31:0]} = {32'b0,store_data_r[31:0]} << 8*lsu_addr_r[1:0];
-   assign ldst_samedw_r    = (lsu_addr_r[3] == end_addr_r[3]);
-   assign is_aligned_r    = (lsu_pkt_r.word & (lsu_addr_r[1:0] == 2'b0)) |
-                            (lsu_pkt_r.half & (lsu_addr_r[0] == 1'b0))   |
-                            lsu_pkt_r.by;
-
-   //------------------------------------------------------------------------------
-   // Input buffer logic starts here
-   //------------------------------------------------------------------------------
-
-   assign ibuf_byp = lsu_busreq_r & (lsu_pkt_r.load | no_word_merge_r) & ~ibuf_valid;
-   assign ibuf_wr_en = lsu_busreq_r & lsu_commit_r & ~ibuf_byp;
-   assign ibuf_rst   = (ibuf_drain_vld & ~ibuf_wr_en) | dec_tlu_force_halt;
-   assign ibuf_force_drain = lsu_busreq_m & ~lsu_busreq_r & ibuf_valid & (lsu_pkt_m.load | (ibuf_addr[31:2] != lsu_addr_m[31:2]));  // Move the ibuf to buf if there is a non-colaescable ld/st in m but nothing in r
-   assign ibuf_drain_vld = ibuf_valid & (((ibuf_wr_en | (ibuf_timer == TIMER_MAX)) & ~(ibuf_merge_en & ibuf_merge_in)) | ibuf_byp | ibuf_force_drain | ibuf_sideeffect | ~ibuf_write | bus_coalescing_disable);
-   assign ibuf_tag_in[DEPTH_LOG2-1:0] = (ibuf_merge_en & ibuf_merge_in) ? ibuf_tag[DEPTH_LOG2-1:0] : (ldst_dual_r ? WrPtr1_r : WrPtr0_r);
-   assign ibuf_dualtag_in[DEPTH_LOG2-1:0] = WrPtr0_r;
-   assign ibuf_sz_in[1:0]   = {lsu_pkt_r.word, lsu_pkt_r.half};
-   assign ibuf_addr_in[31:0] = ldst_dual_r ? end_addr_r[31:0] : lsu_addr_r[31:0];
-   assign ibuf_byteen_in[3:0] = (ibuf_merge_en & ibuf_merge_in) ? (ibuf_byteen[3:0] | ldst_byteen_lo_r[3:0]) : (ldst_dual_r ? ldst_byteen_hi_r[3:0] : ldst_byteen_lo_r[3:0]);
-   for (genvar i=0; i<4; i++) begin
-      assign ibuf_data_in[(8*i)+7:(8*i)] = (ibuf_merge_en & ibuf_merge_in) ? (ldst_byteen_lo_r[i] ? store_data_lo_r[(8*i)+7:(8*i)] : ibuf_data[(8*i)+7:(8*i)]) :
-                                                                             (ldst_dual_r ? store_data_hi_r[(8*i)+7:(8*i)] : store_data_lo_r[(8*i)+7:(8*i)]);
-   end
-   assign ibuf_timer_in = ibuf_wr_en ? '0 : (ibuf_timer < TIMER_MAX) ? (ibuf_timer + 1'b1) : ibuf_timer;
-
-
-   assign ibuf_merge_en = lsu_busreq_r & lsu_commit_r & lsu_pkt_r.store & ibuf_valid & ibuf_write & (lsu_addr_r[31:2] == ibuf_addr[31:2]) & ~is_sideeffects_r & ~bus_coalescing_disable;
-   assign ibuf_merge_in = ~ldst_dual_r;   // If it's a unaligned store, merge needs to happen on the way out of ibuf
-
-   // ibuf signals going to bus buffer after merging
-   for (genvar i=0; i<4; i++) begin
-      assign ibuf_byteen_out[i] = (ibuf_merge_en & ~ibuf_merge_in) ? (ibuf_byteen[i] | ldst_byteen_lo_r[i]) : ibuf_byteen[i];
-      assign ibuf_data_out[(8*i)+7:(8*i)] = (ibuf_merge_en & ~ibuf_merge_in) ? (ldst_byteen_lo_r[i] ? store_data_lo_r[(8*i)+7:(8*i)] : ibuf_data[(8*i)+7:(8*i)]) :
-                                                                                                        ibuf_data[(8*i)+7:(8*i)];
-   end
-
-   rvdffsc #(.WIDTH(1))              ibuf_valid_ff     (.din(1'b1),                      .dout(ibuf_valid),      .en(ibuf_wr_en), .clear(ibuf_rst), .clk(lsu_free_c2_clk), .*);
-   rvdffs  #(.WIDTH(DEPTH_LOG2))     ibuf_tagff        (.din(ibuf_tag_in),               .dout(ibuf_tag),        .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(DEPTH_LOG2))     ibuf_dualtagff    (.din(ibuf_dualtag_in),           .dout(ibuf_dualtag),    .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_dualff       (.din(ldst_dual_r),               .dout(ibuf_dual),       .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_samedwff     (.din(ldst_samedw_r),             .dout(ibuf_samedw),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_nomergeff    (.din(no_dword_merge_r),          .dout(ibuf_nomerge),    .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_sideeffectff (.din(is_sideeffects_r),          .dout(ibuf_sideeffect), .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_unsignff     (.din(lsu_pkt_r.unsign),          .dout(ibuf_unsign),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(1))              ibuf_writeff      (.din(lsu_pkt_r.store),           .dout(ibuf_write),      .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffs  #(.WIDTH(2))              ibuf_szff         (.din(ibuf_sz_in[1:0]),           .dout(ibuf_sz),         .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffe  #(.WIDTH(32))             ibuf_addrff       (.din(ibuf_addr_in[31:0]),        .dout(ibuf_addr),       .en(ibuf_wr_en),                                              .*);
-   rvdffs  #(.WIDTH(4))              ibuf_byteenff     (.din(ibuf_byteen_in[3:0]),       .dout(ibuf_byteen),     .en(ibuf_wr_en),                   .clk(lsu_bus_ibuf_c1_clk), .*);
-   rvdffe  #(.WIDTH(32))             ibuf_dataff       (.din(ibuf_data_in[31:0]),        .dout(ibuf_data),       .en(ibuf_wr_en),                                              .*);
-   rvdff   #(.WIDTH(TIMER_LOG2))     ibuf_timerff      (.din(ibuf_timer_in),             .dout(ibuf_timer),                                         .clk(lsu_free_c2_clk),     .*);
-
-
-   //------------------------------------------------------------------------------
-   // Input buffer logic ends here
-   //------------------------------------------------------------------------------
-
-
-   //------------------------------------------------------------------------------
-   // Output buffer logic starts here
-   //------------------------------------------------------------------------------
-
-   assign obuf_wr_wait = (buf_numvld_wrcmd_any[3:0] == 4'b1) & (buf_numvld_cmd_any[3:0] == 4'b1) & (obuf_wr_timer != TIMER_MAX) &
-                         ~bus_coalescing_disable & ~buf_nomerge[CmdPtr0] & ~buf_sideeffect[CmdPtr0] & ~obuf_force_wr_en;
-   assign obuf_wr_timer_in = obuf_wr_en ? 3'b0: (((buf_numvld_cmd_any > 4'b0) & (obuf_wr_timer < TIMER_MAX)) ? (obuf_wr_timer + 1'b1) : obuf_wr_timer);
-   assign obuf_force_wr_en = lsu_busreq_m & ~lsu_busreq_r & ~ibuf_valid & (buf_numvld_cmd_any[3:0] == 4'b1) & (lsu_addr_m[31:2] != buf_addr[CmdPtr0][31:2]);   // Entry in m can't merge with entry going to obuf and there is no entry in between
-   assign ibuf_buf_byp = ibuf_byp & (buf_numvld_pend_any[3:0] == 4'b0) & (~lsu_pkt_r.store | no_dword_merge_r);
-
-   assign obuf_wr_en = ((ibuf_buf_byp & lsu_commit_r & ~(is_sideeffects_r & bus_sideeffect_pend)) |
-                        ((buf_state[CmdPtr0] == CMD) & found_cmdptr0 & ~buf_cmd_state_bus_en[CmdPtr0] & ~(buf_sideeffect[CmdPtr0] & bus_sideeffect_pend) &
-                         (~(buf_dual[CmdPtr0] & buf_samedw[CmdPtr0] & ~buf_write[CmdPtr0]) | found_cmdptr1 | buf_nomerge[CmdPtr0] | obuf_force_wr_en))) &
-                       (bus_cmd_ready | ~obuf_valid | obuf_nosend) & ~obuf_wr_wait  & ~bus_addr_match_pending & lsu_bus_clk_en;
-
-   assign obuf_rst   = ((bus_cmd_sent | (obuf_valid & obuf_nosend)) & ~obuf_wr_en & lsu_bus_clk_en) | dec_tlu_force_halt;
-
-   assign obuf_write_in      = ibuf_buf_byp ? lsu_pkt_r.store : buf_write[CmdPtr0];
-   assign obuf_sideeffect_in = ibuf_buf_byp ? is_sideeffects_r : buf_sideeffect[CmdPtr0];
-   assign obuf_addr_in[31:0] = ibuf_buf_byp ? lsu_addr_r[31:0] : buf_addr[CmdPtr0];
-   assign obuf_sz_in[1:0]    = ibuf_buf_byp ? {lsu_pkt_r.word, lsu_pkt_r.half} : buf_sz[CmdPtr0];
-   assign obuf_merge_in      = obuf_merge_en;
-   assign obuf_tag0_in[pt.LSU_BUS_TAG-1:0] = ibuf_buf_byp ? (pt.LSU_BUS_TAG)'(WrPtr0_r) : (pt.LSU_BUS_TAG)'(CmdPtr0);
-   assign obuf_tag1_in[pt.LSU_BUS_TAG-1:0] = ibuf_buf_byp ? (pt.LSU_BUS_TAG)'(WrPtr1_r) : (pt.LSU_BUS_TAG)'(CmdPtr1);
-
-   assign obuf_cmd_done_in    = ~(obuf_wr_en | obuf_rst) & (obuf_cmd_done | bus_wcmd_sent);
-   assign obuf_data_done_in   = ~(obuf_wr_en | obuf_rst) & (obuf_data_done | bus_wdata_sent);
-
-   assign obuf_aligned_in    = ibuf_buf_byp ? is_aligned_r : ((obuf_sz_in[1:0] == 2'b0) |
-                                                              (obuf_sz_in[0] & ~obuf_addr_in[0]) |
-                                                              (obuf_sz_in[1] & ~(|obuf_addr_in[1:0])));
-
-   assign obuf_rdrsp_pend_in  = ((~(obuf_wr_en & ~obuf_nosend_in) & obuf_rdrsp_pend & ~(bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag))) | (bus_cmd_sent & ~obuf_write)) & ~dec_tlu_force_halt;
-   assign obuf_rdrsp_pend_en  = lsu_bus_clk_en | dec_tlu_force_halt;
-   assign obuf_rdrsp_tag_in[pt.LSU_BUS_TAG-1:0] = (bus_cmd_sent & ~obuf_write) ? obuf_tag0[pt.LSU_BUS_TAG-1:0] : obuf_rdrsp_tag[pt.LSU_BUS_TAG-1:0];
-   // No ld to ld fwd for aligned
-   assign obuf_nosend_in      = (obuf_addr_in[31:3] == obuf_addr[31:3]) & obuf_aligned_in & ~obuf_sideeffect & ~obuf_write & ~obuf_write_in & ~dec_tlu_external_ldfwd_disable &
-                                ((obuf_valid & ~obuf_nosend) | (obuf_rdrsp_pend & ~(bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag))));
-
-   assign obuf_byteen0_in[7:0] = ibuf_buf_byp ? (lsu_addr_r[2] ? {ldst_byteen_lo_r[3:0],4'b0} : {4'b0,ldst_byteen_lo_r[3:0]}) :
-                                                (buf_addr[CmdPtr0][2] ? {buf_byteen[CmdPtr0],4'b0} : {4'b0,buf_byteen[CmdPtr0]});
-   assign obuf_byteen1_in[7:0] = ibuf_buf_byp ? (end_addr_r[2] ? {ldst_byteen_hi_r[3:0],4'b0} : {4'b0,ldst_byteen_hi_r[3:0]}) :
-                                                (buf_addr[CmdPtr1][2] ? {buf_byteen[CmdPtr1],4'b0} : {4'b0,buf_byteen[CmdPtr1]});
-   assign obuf_data0_in[63:0]  = ibuf_buf_byp ? (lsu_addr_r[2] ? {store_data_lo_r[31:0],32'b0} : {32'b0,store_data_lo_r[31:0]}) :
-                                                (buf_addr[CmdPtr0][2] ? {buf_data[CmdPtr0],32'b0} : {32'b0,buf_data[CmdPtr0]});
-   assign obuf_data1_in[63:0]  = ibuf_buf_byp ? (end_addr_r[2] ? {store_data_hi_r[31:0],32'b0} :{32'b0,store_data_hi_r[31:0]}) :
-                                                (buf_addr[CmdPtr1][2] ? {buf_data[CmdPtr1],32'b0} : {32'b0,buf_data[CmdPtr1]});
-
-   for (genvar i=0 ;i<8; i++) begin
-      assign obuf_byteen_in[i] = obuf_byteen0_in[i] | (obuf_merge_en & obuf_byteen1_in[i]);
-      assign obuf_data_in[(8*i)+7:(8*i)] = (obuf_merge_en & obuf_byteen1_in[i]) ? obuf_data1_in[(8*i)+7:(8*i)] : obuf_data0_in[(8*i)+7:(8*i)];
-   end
-
-   // No store obuf merging for AXI since all stores are sent non-posted. Can't track the second id right now
-   assign obuf_merge_en = ((CmdPtr0 != CmdPtr1) & found_cmdptr0 & found_cmdptr1 & (buf_state[CmdPtr0] == CMD) & (buf_state[CmdPtr1] == CMD) &
-                           ~buf_cmd_state_bus_en[CmdPtr0] & ~buf_sideeffect[CmdPtr0] &
-                           (~buf_write[CmdPtr0] & buf_dual[CmdPtr0] & ~buf_dualhi[CmdPtr0] & buf_samedw[CmdPtr0])) |  // CmdPtr0/CmdPtr1 are for same load which is within a DW
-                          (ibuf_buf_byp & ldst_samedw_r & ldst_dual_r);
-
-
-   rvdff_fpga  #(.WIDTH(1))              obuf_wren_ff      (.din(obuf_wr_en),                  .dout(obuf_wr_enQ),                                        .clk(lsu_busm_clk),        .clken(lsu_busm_clken), .rawclk(clk),        .*);
-   rvdffsc     #(.WIDTH(1))              obuf_valid_ff     (.din(1'b1),                        .dout(obuf_valid),      .en(obuf_wr_en), .clear(obuf_rst), .clk(lsu_free_c2_clk),                                                  .*);
-   rvdffs      #(.WIDTH(1))              obuf_nosend_ff    (.din(obuf_nosend_in),              .dout(obuf_nosend),     .en(obuf_wr_en),                   .clk(lsu_free_c2_clk),                                                  .*);
-   rvdffs      #(.WIDTH(1))              obuf_rdrsp_pend_ff(.din(obuf_rdrsp_pend_in),          .dout(obuf_rdrsp_pend), .en(obuf_rdrsp_pend_en),           .clk(lsu_free_c2_clk),                                                  .*);
-   rvdff_fpga  #(.WIDTH(1))              obuf_cmd_done_ff  (.din(obuf_cmd_done_in),            .dout(obuf_cmd_done),                                      .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              obuf_data_done_ff (.din(obuf_data_done_in),           .dout(obuf_data_done),                                     .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) obuf_rdrsp_tagff  (.din(obuf_rdrsp_tag_in),           .dout(obuf_rdrsp_tag),                                     .clk(lsu_busm_clk),        .clken(lsu_busm_clken),        .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(pt.LSU_BUS_TAG)) obuf_tag0ff       (.din(obuf_tag0_in),                .dout(obuf_tag0),       .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(pt.LSU_BUS_TAG)) obuf_tag1ff       (.din(obuf_tag1_in),                .dout(obuf_tag1),       .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_mergeff      (.din(obuf_merge_in),               .dout(obuf_merge),      .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_writeff      (.din(obuf_write_in),               .dout(obuf_write),      .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(1))              obuf_sideeffectff (.din(obuf_sideeffect_in),          .dout(obuf_sideeffect), .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(2))              obuf_szff         (.din(obuf_sz_in[1:0]),             .dout(obuf_sz),         .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffs_fpga #(.WIDTH(8))              obuf_byteenff     (.din(obuf_byteen_in[7:0]),         .dout(obuf_byteen),     .en(obuf_wr_en),                   .clk(lsu_bus_obuf_c1_clk), .clken(lsu_bus_obuf_c1_clken), .rawclk(clk), .*);
-   rvdffe     #(.WIDTH(32))              obuf_addrff       (.din(obuf_addr_in[31:0]),          .dout(obuf_addr),       .en(obuf_wr_en),                                                                                           .*);
-   rvdffe     #(.WIDTH(64))              obuf_dataff       (.din(obuf_data_in[63:0]),          .dout(obuf_data),       .en(obuf_wr_en),                                                                                           .*);
-   rvdff_fpga #(.WIDTH(TIMER_LOG2))      obuf_timerff      (.din(obuf_wr_timer_in),            .dout(obuf_wr_timer),                                      .clk(lsu_busm_clk),        .clken(lsu_busm_clken), .rawclk(clk),        .*);
-
-
-   //------------------------------------------------------------------------------
-   // Output buffer logic ends here
-   //------------------------------------------------------------------------------
-
-   // Find the entry to allocate and entry to send
-   always_comb begin
-      WrPtr0_m[DEPTH_LOG2-1:0] = '0;
-      WrPtr1_m[DEPTH_LOG2-1:0] = '0;
-      found_wrptr0  = '0;
-      found_wrptr1  = '0;
-
-      // Find first write pointer
-      for (int i=0; i<DEPTH; i++) begin
-         if (~found_wrptr0) begin
-            WrPtr0_m[DEPTH_LOG2-1:0] = DEPTH_LOG2'(i);
-            found_wrptr0 = (buf_state[i] == IDLE) & ~((ibuf_valid & (ibuf_tag == i))                                               |
-                                                      (lsu_busreq_r & ((WrPtr0_r == i) | (ldst_dual_r & (WrPtr1_r == i)))));
-         end
-      end
-
-      // Find second write pointer
-      for (int i=0; i<DEPTH; i++) begin
-         if (~found_wrptr1) begin
-            WrPtr1_m[DEPTH_LOG2-1:0] = DEPTH_LOG2'(i);
-            found_wrptr1 = (buf_state[i] == IDLE) & ~((ibuf_valid & (ibuf_tag == i))                                               |
-                                                      (lsu_busreq_m & (WrPtr0_m == i))                                         |
-                                                      (lsu_busreq_r & ((WrPtr0_r == i) | (ldst_dual_r & (WrPtr1_r == i)))));
-         end
-      end
-   end
-
-   // Get the command ptr
-   for (genvar i=0; i<DEPTH; i++) begin
-      // These should be one-hot
-      assign CmdPtr0Dec[i] = ~(|buf_age[i]) & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i];
-      assign CmdPtr1Dec[i] = ~(|(buf_age[i] & ~CmdPtr0Dec)) & ~CmdPtr0Dec[i] & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i];
-      assign RspPtrDec[i]  = ~(|buf_rsp_pickage[i]) & (buf_state[i] == DONE_WAIT);
-   end
-
-   assign found_cmdptr0 = |CmdPtr0Dec;
-   assign found_cmdptr1 = |CmdPtr1Dec;
-   assign CmdPtr0 = f_Enc8to3(8'(CmdPtr0Dec[DEPTH-1:0]));
-   assign CmdPtr1 = f_Enc8to3(8'(CmdPtr1Dec[DEPTH-1:0]));
-   assign RspPtr  = f_Enc8to3(8'(RspPtrDec[DEPTH-1:0]));
-
-   // Age vector
-   for (genvar i=0; i<DEPTH; i++) begin: GenAgeVec
-      for (genvar j=0; j<DEPTH; j++) begin
-         assign buf_age_in[i][j] = (((buf_state[i] == IDLE) & buf_state_en[i]) &
-                                    (((buf_state[j] == WAIT) | ((buf_state[j] == CMD) & ~buf_cmd_state_bus_en[j]))                   |       // Set age bit for older entries
-                                     (ibuf_drain_vld & lsu_busreq_r & (ibuf_byp | ldst_dual_r) & (i == WrPtr0_r) & (j == ibuf_tag))  |       // Set case for dual lo
-                                     (ibuf_byp & lsu_busreq_r & ldst_dual_r & (i == WrPtr1_r) & (j == WrPtr0_r))))                      |     // ibuf bypass case
-                                   buf_age[i][j];
-
-
-         assign buf_age[i][j]    = buf_ageQ[i][j] & ~((buf_state[j] == CMD) & buf_cmd_state_bus_en[j]) & ~dec_tlu_force_halt;  // Reset case
-
-         assign buf_age_younger[i][j] = (i == j) ? 1'b0: (~buf_age[i][j] & (buf_state[j] != IDLE));   // Younger entries
-      end
-   end
-
-   // Age vector for responses
-   for (genvar i=0; i<DEPTH; i++) begin: GenRspAgeVec
-      for (genvar j=0; j<DEPTH; j++) begin
-         assign buf_rspage_set[i][j] = ((buf_state[i] == IDLE) & buf_state_en[i]) &
-                                           (~((buf_state[j] == IDLE) | (buf_state[j] == DONE))                                         |       // Set age bit for older entries
-                                            (ibuf_drain_vld & lsu_busreq_r & (ibuf_byp | ldst_dual_r) & (DEPTH_LOG2'(i) == WrPtr0_r) & (DEPTH_LOG2'(j) == ibuf_tag))  |       // Set case for dual lo
-                                            (ibuf_byp & lsu_busreq_r & ldst_dual_r & (DEPTH_LOG2'(i) == WrPtr1_r) & (DEPTH_LOG2'(j) == WrPtr0_r)));
-         assign buf_rspage_in[i][j] = buf_rspage_set[i][j] | buf_rspage[i][j];
-         assign buf_rspage[i][j]    = buf_rspageQ[i][j] & ~((buf_state[j] == DONE) | (buf_state[j] == IDLE)) & ~dec_tlu_force_halt;  // Reset case
-         assign buf_rsp_pickage[i][j] = buf_rspageQ[i][j] & (buf_state[j] == DONE_WAIT);
-     end
-   end
-
-   //------------------------------------------------------------------------------
-   // Buffer logic
-   //------------------------------------------------------------------------------
-   for (genvar i=0; i<DEPTH; i++) begin
-
-      assign ibuf_drainvec_vld[i] = (ibuf_drain_vld & (i == ibuf_tag));
-      assign buf_byteen_in[i]     = ibuf_drainvec_vld[i] ? ibuf_byteen_out[3:0] : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? ldst_byteen_hi_r[3:0] : ldst_byteen_lo_r[3:0]);
-      assign buf_addr_in[i]       = ibuf_drainvec_vld[i] ? ibuf_addr[31:0] : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? end_addr_r[31:0] : lsu_addr_r[31:0]);
-      assign buf_dual_in[i]       = ibuf_drainvec_vld[i] ? ibuf_dual : ldst_dual_r;
-      assign buf_samedw_in[i]     = ibuf_drainvec_vld[i] ? ibuf_samedw : ldst_samedw_r;
-      assign buf_nomerge_in[i]    = ibuf_drainvec_vld[i] ? (ibuf_nomerge | ibuf_force_drain) : no_dword_merge_r;
-      assign buf_dualhi_in[i]     = ibuf_drainvec_vld[i] ? ibuf_dual : (ibuf_byp & ldst_dual_r & (i == WrPtr1_r));   // If it's dual, ibuf will always have the high
-      assign buf_dualtag_in[i]    = ibuf_drainvec_vld[i] ? ibuf_dualtag : ((ibuf_byp & ldst_dual_r & (i == WrPtr1_r)) ? WrPtr0_r : WrPtr1_r);
-      assign buf_sideeffect_in[i] = ibuf_drainvec_vld[i] ? ibuf_sideeffect : is_sideeffects_r;
-      assign buf_unsign_in[i]     = ibuf_drainvec_vld[i] ? ibuf_unsign : lsu_pkt_r.unsign;
-      assign buf_sz_in[i]         = ibuf_drainvec_vld[i] ? ibuf_sz : {lsu_pkt_r.word, lsu_pkt_r.half};
-      assign buf_write_in[i]      = ibuf_drainvec_vld[i] ? ibuf_write : lsu_pkt_r.store;
-
-      // Buffer entry state machine
-      always_comb begin
-         buf_nxtstate[i]          = IDLE;
-         buf_state_en[i]          = '0;
-         buf_resp_state_bus_en[i] = '0;
-         buf_state_bus_en[i]      = '0;
-         buf_wr_en[i]             = '0;
-         buf_data_in[i]           = '0;
-         buf_data_en[i]           = '0;
-         buf_error_en[i]          = '0;
-         buf_rst[i]               = dec_tlu_force_halt;
-         buf_ldfwd_en[i]          = dec_tlu_force_halt;
-         buf_ldfwd_in[i]          = '0;
-         buf_ldfwdtag_in[i]       = '0;
-
-         case (buf_state[i])
-            IDLE: begin
-                     buf_nxtstate[i] = lsu_bus_clk_en ? CMD : WAIT;
-                     buf_state_en[i] = (lsu_busreq_r & lsu_commit_r & (((ibuf_byp | ldst_dual_r) & ~ibuf_merge_en & (i == WrPtr0_r)) | (ibuf_byp & ldst_dual_r & (i == WrPtr1_r)))) |
-                                       (ibuf_drain_vld & (i == ibuf_tag));
-                     buf_wr_en[i]    = buf_state_en[i];
-                     buf_data_en[i]  = buf_state_en[i];
-                     buf_data_in[i]   = (ibuf_drain_vld & (i == ibuf_tag)) ? ibuf_data_out[31:0] : store_data_lo_r[31:0];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            WAIT: begin
-                     buf_nxtstate[i] = dec_tlu_force_halt ? IDLE : CMD;
-                     buf_state_en[i] = lsu_bus_clk_en | dec_tlu_force_halt;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            CMD: begin
-                     buf_nxtstate[i]          = dec_tlu_force_halt ? IDLE : (obuf_nosend & bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag)) ? DONE_WAIT : RESP;
-                     buf_cmd_state_bus_en[i]  = ((obuf_tag0 == i) | (obuf_merge & (obuf_tag1 == i))) & obuf_valid & obuf_wr_enQ;  // Just use the recently written obuf_valid
-                     buf_state_bus_en[i]      = buf_cmd_state_bus_en[i];
-                     buf_state_en[i]          = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_ldfwd_in[i]          = 1'b1;
-                     buf_ldfwd_en[i]          = buf_state_en[i] & ~buf_write[i] & obuf_nosend & ~dec_tlu_force_halt;
-                     buf_ldfwdtag_in[i]       = DEPTH_LOG2'(obuf_rdrsp_tag[pt.LSU_BUS_TAG-2:0]);
-                     buf_data_en[i]           = buf_state_bus_en[i] & lsu_bus_clk_en & obuf_nosend & bus_rsp_read;
-                     buf_error_en[i]          = buf_state_bus_en[i] & lsu_bus_clk_en & obuf_nosend & bus_rsp_read_error;
-                     buf_data_in[i]           = buf_error_en[i] ? bus_rsp_rdata[31:0] : (buf_addr[i][2] ? bus_rsp_rdata[63:32] : bus_rsp_rdata[31:0]);
-            end
-            RESP: begin
-                     buf_nxtstate[i]           = (dec_tlu_force_halt | (buf_write[i] & ~bus_rsp_write_error)) ? IDLE :    // Side-effect writes will be non-posted
-                                                      (buf_dual[i] & ~buf_samedw[i] & ~buf_write[i] & (buf_state[buf_dualtag[i]] != DONE_PARTIAL)) ? DONE_PARTIAL : // Goto DONE_PARTIAL if this is the first return of dual
-                                                           (buf_ldfwd[i] | any_done_wait_state |
-                                                            (buf_dual[i] & ~buf_samedw[i] & ~buf_write[i] & buf_ldfwd[buf_dualtag[i]] &
-                                                             (buf_state[buf_dualtag[i]] == DONE_PARTIAL) & any_done_wait_state)) ? DONE_WAIT : DONE;
-                     buf_resp_state_bus_en[i]  = (bus_rsp_write & (bus_rsp_write_tag == (pt.LSU_BUS_TAG)'(i))) |
-                                                 (bus_rsp_read  & ((bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(i)) |
-                                                                   (buf_ldfwd[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[i]))) |
-                                                                   (buf_dual[i] & buf_dualhi[i] & ~buf_write[i] & buf_samedw[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_dualtag[i])))));
-                     buf_state_bus_en[i]       = buf_resp_state_bus_en[i];
-                     buf_state_en[i]           = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_data_en[i]            = buf_state_bus_en[i] & bus_rsp_read & lsu_bus_clk_en;
-                      // Need to capture the error for stores as well for AXI
-                     buf_error_en[i]           = buf_state_bus_en[i] & lsu_bus_clk_en & ((bus_rsp_read_error  & (bus_rsp_read_tag  == (pt.LSU_BUS_TAG)'(i))) |
-                                                                                         (bus_rsp_read_error  & buf_ldfwd[i] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[i]))) |
-                                                                                         (bus_rsp_write_error & (bus_rsp_write_tag == (pt.LSU_BUS_TAG)'(i))));
-                     buf_data_in[i][31:0]      = (buf_state_en[i] & ~buf_error_en[i]) ? (buf_addr[i][2] ? bus_rsp_rdata[63:32] : bus_rsp_rdata[31:0]) : bus_rsp_rdata[31:0];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE_PARTIAL: begin   // Other part of dual load hasn't returned
-                     buf_nxtstate[i]           = dec_tlu_force_halt ? IDLE : (buf_ldfwd[i] | buf_ldfwd[buf_dualtag[i]] | any_done_wait_state) ? DONE_WAIT : DONE;
-                     buf_state_bus_en[i]       = bus_rsp_read & ((bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_dualtag[i])) |
-                                                                 (buf_ldfwd[buf_dualtag[i]] & (bus_rsp_read_tag == (pt.LSU_BUS_TAG)'(buf_ldfwdtag[buf_dualtag[i]]))));
-                     buf_state_en[i]           = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE_WAIT: begin  // WAIT state if there are multiple outstanding nb returns
-                      buf_nxtstate[i]           = dec_tlu_force_halt ? IDLE : DONE;
-                      buf_state_en[i]           = ((RspPtr == DEPTH_LOG2'(i)) | (buf_dual[i] & (buf_dualtag[i] == RspPtr))) | dec_tlu_force_halt;
-                      buf_cmd_state_bus_en[i]  = '0;
-            end
-            DONE: begin
-                     buf_nxtstate[i]           = IDLE;
-                     buf_rst[i]                = 1'b1;
-                     buf_state_en[i]           = 1'b1;
-                     buf_ldfwd_in[i]           = 1'b0;
-                     buf_ldfwd_en[i]           = buf_state_en[i];
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-            default : begin
-                     buf_nxtstate[i]          = IDLE;
-                     buf_state_en[i]          = '0;
-                     buf_resp_state_bus_en[i] = '0;
-                     buf_state_bus_en[i]      = '0;
-                     buf_wr_en[i]             = '0;
-                     buf_data_in[i]           = '0;
-                     buf_data_en[i]           = '0;
-                     buf_error_en[i]          = '0;
-                     buf_rst[i]               = '0;
-                     buf_cmd_state_bus_en[i]  = '0;
-            end
-         endcase
-      end
-
-      rvdffs  #(.WIDTH($bits(state_t))) buf_state_ff     (.din(buf_nxtstate[i]),             .dout({buf_state[i]}),    .en(buf_state_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdff   #(.WIDTH(DEPTH))          buf_ageff        (.din(buf_age_in[i]),               .dout(buf_ageQ[i]),                                                                    .clk(lsu_bus_buf_c1_clk), .*);
-      rvdff   #(.WIDTH(DEPTH))          buf_rspageff     (.din(buf_rspage_in[i]),            .dout(buf_rspageQ[i]),                                                                 .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(DEPTH_LOG2))     buf_dualtagff    (.din(buf_dualtag_in[i]),           .dout(buf_dualtag[i]),    .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_dualff       (.din(buf_dual_in[i]),              .dout(buf_dual[i]),       .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_samedwff     (.din(buf_samedw_in[i]),            .dout(buf_samedw[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_nomergeff    (.din(buf_nomerge_in[i]),           .dout(buf_nomerge[i]),    .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_dualhiff     (.din(buf_dualhi_in[i]),            .dout(buf_dualhi[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_ldfwdff      (.din(buf_ldfwd_in[i]),             .dout(buf_ldfwd[i]),      .en(buf_ldfwd_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(DEPTH_LOG2))     buf_ldfwdtagff   (.din(buf_ldfwdtag_in[i]),          .dout(buf_ldfwdtag[i]),   .en(buf_ldfwd_en[i]),                                        .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_sideeffectff (.din(buf_sideeffect_in[i]),        .dout(buf_sideeffect[i]), .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_unsignff     (.din(buf_unsign_in[i]),            .dout(buf_unsign[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(1))              buf_writeff      (.din(buf_write_in[i]),             .dout(buf_write[i]),      .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffs  #(.WIDTH(2))              buf_szff         (.din(buf_sz_in[i]),                .dout(buf_sz[i]),         .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffe  #(.WIDTH(32))             buf_addrff       (.din(buf_addr_in[i][31:0]),        .dout(buf_addr[i]),       .en(buf_wr_en[i]),                                                                     .*);
-      rvdffs  #(.WIDTH(4))              buf_byteenff     (.din(buf_byteen_in[i][3:0]),       .dout(buf_byteen[i]),     .en(buf_wr_en[i]),                                           .clk(lsu_bus_buf_c1_clk), .*);
-      rvdffe  #(.WIDTH(32))             buf_dataff       (.din(buf_data_in[i][31:0]),        .dout(buf_data[i]),       .en(buf_data_en[i]),                                                                   .*);
-      rvdffsc #(.WIDTH(1))              buf_errorff      (.din(1'b1),                        .dout(buf_error[i]),      .en(buf_error_en[i]),                    .clear(buf_rst[i]), .clk(lsu_bus_buf_c1_clk), .*);
-
-   end
-
-   // buffer full logic
-   always_comb begin
-      buf_numvld_any[3:0] =  ({1'b0,lsu_busreq_m} << ldst_dual_m) +
-                             ({1'b0,lsu_busreq_r} << ldst_dual_r) +
-                             ibuf_valid;
-      buf_numvld_wrcmd_any[3:0] = 4'b0;
-      buf_numvld_cmd_any[3:0] = 4'b0;
-      buf_numvld_pend_any[3:0] = 4'b0;
-      any_done_wait_state = 1'b0;
-      for (int i=0; i<DEPTH; i++) begin
-         buf_numvld_any[3:0] += {3'b0, (buf_state[i] != IDLE)};
-         buf_numvld_wrcmd_any[3:0] += {3'b0, (buf_write[i] & (buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i])};
-         buf_numvld_cmd_any[3:0]   += {3'b0, ((buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i])};
-         buf_numvld_pend_any[3:0]   += {3'b0, ((buf_state[i] == WAIT) | ((buf_state[i] == CMD) & ~buf_cmd_state_bus_en[i]))};
-         any_done_wait_state |= (buf_state[i] == DONE_WAIT);
-      end
-   end
-
-   assign lsu_bus_buffer_pend_any = (buf_numvld_pend_any != 0);
-   assign lsu_bus_buffer_full_any = (ldst_dual_d & dec_lsu_valid_raw_d) ? (buf_numvld_any[3:0] >= (DEPTH-1)) : (buf_numvld_any[3:0] == DEPTH);
-   assign lsu_bus_buffer_empty_any = ~(|buf_state[DEPTH-1:0]) & ~ibuf_valid & ~obuf_valid;
-
-
-   // Non blocking ports
-   assign lsu_nonblock_load_valid_m = lsu_busreq_m & lsu_pkt_m.valid & lsu_pkt_m.load & ~flush_m_up & ~ld_full_hit_m;
-   assign lsu_nonblock_load_tag_m[DEPTH_LOG2-1:0] = WrPtr0_m[DEPTH_LOG2-1:0];
-   assign lsu_nonblock_load_inv_r = lsu_nonblock_load_valid_r & ~lsu_commit_r;
-   assign lsu_nonblock_load_inv_tag_r[DEPTH_LOG2-1:0] = WrPtr0_r[DEPTH_LOG2-1:0];      // r tag needs to be accurate even if there is no invalidate
-
-   always_comb begin
-      lsu_nonblock_load_data_ready = '0;
-      lsu_nonblock_load_data_error = '0;
-      lsu_nonblock_load_data_tag[DEPTH_LOG2-1:0] = '0;
-      lsu_nonblock_load_data_lo[31:0] = '0;
-      lsu_nonblock_load_data_hi[31:0] = '0;
-      for (int i=0; i<DEPTH; i++) begin
-          // Use buf_rst[i] instead of buf_state_en[i] for timing
-          lsu_nonblock_load_data_ready      |= (buf_state[i] == DONE) & ~buf_write[i];
-          lsu_nonblock_load_data_error      |= (buf_state[i] == DONE) & buf_error[i] & ~buf_write[i];
-          lsu_nonblock_load_data_tag[DEPTH_LOG2-1:0]   |= DEPTH_LOG2'(i) & {DEPTH_LOG2{((buf_state[i] == DONE) & ~buf_write[i] & (~buf_dual[i] | ~buf_dualhi[i]))}};
-          lsu_nonblock_load_data_lo[31:0]     |= buf_data[i][31:0] & {32{((buf_state[i] == DONE) & ~buf_write[i] & (~buf_dual[i] | ~buf_dualhi[i]))}};
-          lsu_nonblock_load_data_hi[31:0]     |= buf_data[i][31:0] & {32{((buf_state[i] == DONE) & ~buf_write[i] & (buf_dual[i] & buf_dualhi[i]))}};
-      end
-   end
-
-   assign lsu_nonblock_addr_offset[1:0] = buf_addr[lsu_nonblock_load_data_tag][1:0];
-   assign lsu_nonblock_sz[1:0]          = buf_sz[lsu_nonblock_load_data_tag][1:0];
-   assign lsu_nonblock_unsign           = buf_unsign[lsu_nonblock_load_data_tag];
-   assign lsu_nonblock_data_unalgn[31:0] = 32'({lsu_nonblock_load_data_hi[31:0], lsu_nonblock_load_data_lo[31:0]} >> 8*lsu_nonblock_addr_offset[1:0]);
-
-   assign lsu_nonblock_load_data_valid = lsu_nonblock_load_data_ready & ~lsu_nonblock_load_data_error;
-   assign lsu_nonblock_load_data[31:0] = ({32{ lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b00)}} & {24'b0,lsu_nonblock_data_unalgn[7:0]}) |
-                                         ({32{ lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b01)}} & {16'b0,lsu_nonblock_data_unalgn[15:0]}) |
-                                         ({32{~lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b00)}} & {{24{lsu_nonblock_data_unalgn[7]}}, lsu_nonblock_data_unalgn[7:0]}) |
-                                         ({32{~lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b01)}} & {{16{lsu_nonblock_data_unalgn[15]}},lsu_nonblock_data_unalgn[15:0]}) |
-                                         ({32{(lsu_nonblock_sz[1:0] == 2'b10)}} & lsu_nonblock_data_unalgn[31:0]);
-
-   // Determine if there is a pending return to sideeffect load/store
-   always_comb begin
-      bus_sideeffect_pend = obuf_valid & obuf_sideeffect & dec_tlu_sideeffect_posted_disable;
-      for (int i=0; i<DEPTH; i++) begin
-         bus_sideeffect_pend |= ((buf_state[i] == RESP) & buf_sideeffect[i] & dec_tlu_sideeffect_posted_disable);
-      end
-   end
-
-   // We have no ordering rules for AXI. Need to check outstanding trxns to same address for AXI
-   always_comb begin
-      bus_addr_match_pending = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         bus_addr_match_pending |= (obuf_valid & (obuf_addr[31:3] == buf_addr[i][31:3]) & (buf_state[i] == RESP) & ~((obuf_tag0 == (pt.LSU_BUS_TAG)'(i)) | (obuf_merge & (obuf_tag1 == (pt.LSU_BUS_TAG)'(i)))));
-      end
-   end
-
-   // Generic bus signals
-   assign bus_cmd_ready                      = obuf_write ? ((obuf_cmd_done | obuf_data_done) ? (obuf_cmd_done ? lsu_axi_wready : lsu_axi_awready) : (lsu_axi_awready & lsu_axi_wready)) : lsu_axi_arready;
-   assign bus_wcmd_sent                      = lsu_axi_awvalid & lsu_axi_awready;
-   assign bus_wdata_sent                     = lsu_axi_wvalid & lsu_axi_wready;
-   assign bus_cmd_sent                       = ((obuf_cmd_done | bus_wcmd_sent) & (obuf_data_done | bus_wdata_sent)) | (lsu_axi_arvalid & lsu_axi_arready);
-
-   assign bus_rsp_read                       = lsu_axi_rvalid & lsu_axi_rready;
-   assign bus_rsp_write                      = lsu_axi_bvalid & lsu_axi_bready;
-   assign bus_rsp_read_tag[pt.LSU_BUS_TAG-1:0]  = lsu_axi_rid[pt.LSU_BUS_TAG-1:0];
-   assign bus_rsp_write_tag[pt.LSU_BUS_TAG-1:0] = lsu_axi_bid[pt.LSU_BUS_TAG-1:0];
-   assign bus_rsp_write_error                = bus_rsp_write & (lsu_axi_bresp[1:0] != 2'b0);
-   assign bus_rsp_read_error                 = bus_rsp_read  & (lsu_axi_rresp[1:0] != 2'b0);
-   assign bus_rsp_rdata[63:0]                = lsu_axi_rdata[63:0];
-
-   // AXI command signals
-   assign lsu_axi_awvalid               = obuf_valid & obuf_write & ~obuf_cmd_done & ~bus_addr_match_pending;
-   assign lsu_axi_awid[pt.LSU_BUS_TAG-1:0] = (pt.LSU_BUS_TAG)'(obuf_tag0);
-   assign lsu_axi_awaddr[31:0]          = obuf_sideeffect ? obuf_addr[31:0] : {obuf_addr[31:3],3'b0};
-   assign lsu_axi_awsize[2:0]           = obuf_sideeffect ? {1'b0, obuf_sz[1:0]} : 3'b011;
-   assign lsu_axi_awprot[2:0]           = 3'b001;
-   assign lsu_axi_awcache[3:0]          = obuf_sideeffect ? 4'b0 : 4'b1111;
-   assign lsu_axi_awregion[3:0]         = obuf_addr[31:28];
-   assign lsu_axi_awlen[7:0]            = '0;
-   assign lsu_axi_awburst[1:0]          = 2'b01;
-   assign lsu_axi_awqos[3:0]            = '0;
-   assign lsu_axi_awlock                = '0;
-
-   assign lsu_axi_wvalid                = obuf_valid & obuf_write & ~obuf_data_done & ~bus_addr_match_pending;
-   assign lsu_axi_wstrb[7:0]            = obuf_byteen[7:0] & {8{obuf_write}};
-   assign lsu_axi_wdata[63:0]           = obuf_data[63:0];
-   assign lsu_axi_wlast                 = '1;
-
-   assign lsu_axi_arvalid               = obuf_valid & ~obuf_write & ~obuf_nosend & ~bus_addr_match_pending;
-   assign lsu_axi_arid[pt.LSU_BUS_TAG-1:0] = (pt.LSU_BUS_TAG)'(obuf_tag0);
-   assign lsu_axi_araddr[31:0]          = obuf_sideeffect ? obuf_addr[31:0] : {obuf_addr[31:3],3'b0};
-   assign lsu_axi_arsize[2:0]           = obuf_sideeffect ? {1'b0, obuf_sz[1:0]} : 3'b011;
-   assign lsu_axi_arprot[2:0]           = 3'b001;
-   assign lsu_axi_arcache[3:0]          = obuf_sideeffect ? 4'b0 : 4'b1111;
-   assign lsu_axi_arregion[3:0]         = obuf_addr[31:28];
-   assign lsu_axi_arlen[7:0]            = '0;
-   assign lsu_axi_arburst[1:0]          = 2'b01;
-   assign lsu_axi_arqos[3:0]            = '0;
-   assign lsu_axi_arlock                = '0;
-
-   assign lsu_axi_bready = 1;
-   assign lsu_axi_rready = 1;
-
-   always_comb begin
-      lsu_imprecise_error_store_any = '0;
-      lsu_imprecise_error_store_tag = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         lsu_imprecise_error_store_any |= lsu_bus_clk_en_q & (buf_state[i] == DONE) & buf_error[i] & buf_write[i];
-         lsu_imprecise_error_store_tag |= DEPTH_LOG2'(i) & {DEPTH_LOG2{((buf_state[i] == DONE) & buf_error[i] & buf_write[i])}};
-      end
-   end
-   assign lsu_imprecise_error_load_any       = lsu_nonblock_load_data_error & ~lsu_imprecise_error_store_any;   // This is to make sure we send only one imprecise error for load/store
-   assign lsu_imprecise_error_addr_any[31:0] = lsu_imprecise_error_store_any ? buf_addr[lsu_imprecise_error_store_tag] : buf_addr[lsu_nonblock_load_data_tag];
-
-   // PMU signals
-   assign lsu_pmu_bus_trxn  = (lsu_axi_awvalid & lsu_axi_awready) | (lsu_axi_wvalid & lsu_axi_wready) | (lsu_axi_arvalid & lsu_axi_arready);
-   assign lsu_pmu_bus_misaligned = lsu_busreq_r & ldst_dual_r & lsu_commit_r;
-   assign lsu_pmu_bus_error = lsu_imprecise_error_load_any | lsu_imprecise_error_store_any;
-   assign lsu_pmu_bus_busy  = (lsu_axi_awvalid & ~lsu_axi_awready) | (lsu_axi_wvalid & ~lsu_axi_wready) | (lsu_axi_arvalid & ~lsu_axi_arready);
-
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_awvalid_ff (.din(lsu_axi_awvalid),                .dout(lsu_axi_awvalid_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_awready_ff (.din(lsu_axi_awready),                .dout(lsu_axi_awready_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_wvalid_ff  (.din(lsu_axi_wvalid),                 .dout(lsu_axi_wvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_wready_ff  (.din(lsu_axi_wready),                 .dout(lsu_axi_wready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_arvalid_ff (.din(lsu_axi_arvalid),                .dout(lsu_axi_arvalid_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga #(.WIDTH(1))               lsu_axi_arready_ff (.din(lsu_axi_arready),                .dout(lsu_axi_arready_q),                .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_bvalid_ff  (.din(lsu_axi_bvalid),                 .dout(lsu_axi_bvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_bready_ff  (.din(lsu_axi_bready),                 .dout(lsu_axi_bready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(2))              lsu_axi_bresp_ff   (.din(lsu_axi_bresp[1:0]),             .dout(lsu_axi_bresp_q[1:0]),             .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) lsu_axi_bid_ff     (.din(lsu_axi_bid[pt.LSU_BUS_TAG-1:0]),.dout(lsu_axi_bid_q[pt.LSU_BUS_TAG-1:0]),.clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdffe      #(.WIDTH(64))             lsu_axi_rdata_ff   (.din(lsu_axi_rdata[63:0]),            .dout(lsu_axi_rdata_q[63:0]),            .en((lsu_axi_rvalid | clk_override) & lsu_bus_clk_en), .*);
-
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_rvalid_ff  (.din(lsu_axi_rvalid),                 .dout(lsu_axi_rvalid_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(1))              lsu_axi_rready_ff  (.din(lsu_axi_rready),                 .dout(lsu_axi_rready_q),                 .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(2))              lsu_axi_rresp_ff   (.din(lsu_axi_rresp[1:0]),             .dout(lsu_axi_rresp_q[1:0]),             .clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-   rvdff_fpga  #(.WIDTH(pt.LSU_BUS_TAG)) lsu_axi_rid_ff     (.din(lsu_axi_rid[pt.LSU_BUS_TAG-1:0]),.dout(lsu_axi_rid_q[pt.LSU_BUS_TAG-1:0]),.clk(lsu_busm_clk), .clken(lsu_busm_clken), .rawclk(clk), .*);
-
-   rvdff #(.WIDTH(DEPTH_LOG2)) lsu_WrPtr0_rff (.din(WrPtr0_m), .dout(WrPtr0_r), .clk(lsu_c2_r_clk), .*);
-   rvdff #(.WIDTH(DEPTH_LOG2)) lsu_WrPtr1_rff (.din(WrPtr1_m), .dout(WrPtr1_r), .clk(lsu_c2_r_clk), .*);
-
-   rvdff #(.WIDTH(1)) lsu_busreq_rff (.din(lsu_busreq_m & ~flush_r & ~ld_full_hit_m),      .dout(lsu_busreq_r), .clk(lsu_c2_r_clk), .*);
-   rvdff #(.WIDTH(1)) lsu_nonblock_load_valid_rff  (.din(lsu_nonblock_load_valid_m),  .dout(lsu_nonblock_load_valid_r), .clk(lsu_c2_r_clk), .*);
-
-
-endmodule // eb1_lsu_bus_buffer
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: lsu interface with interface queue
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_bus_intf
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic                          clk,                                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                          clk_override,                       // Override non-functional clock gating
-   input logic                          rst_l,                              // reset, active low
-   input logic                          scan_mode,                          // scan mode
-   input logic                          dec_tlu_external_ldfwd_disable,     // disable load to load forwarding for externals
-   input logic                          dec_tlu_wb_coalescing_disable,      // disable write buffer coalescing
-   input logic                          dec_tlu_sideeffect_posted_disable,  // disable the posted sideeffect load store to the bus
-
-   // various clocks needed for the bus reads and writes
-   input logic                          lsu_bus_obuf_c1_clken,              // obuf clock enable
-   input logic                          lsu_busm_clken,                     // bus clock enable
-
-   input logic                          lsu_c1_r_clk,                       // r pipe single pulse clock
-   input logic                          lsu_c2_r_clk,                       // r pipe double pulse clock
-   input logic                          lsu_bus_ibuf_c1_clk,                // ibuf single pulse clock
-   input logic                          lsu_bus_obuf_c1_clk,                // obuf single pulse clock
-   input logic                          lsu_bus_buf_c1_clk,                 // buf  single pulse clock
-   input logic                          lsu_free_c2_clk,                    // free clock double pulse clock
-   input logic                          active_clk,                         // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic                          lsu_busm_clk,                       // bus clock
-
-   input logic                          dec_lsu_valid_raw_d,               // Raw valid for address computation
-   input logic                          lsu_busreq_m,                      // bus request is in m
-
-   input                                eb1_lsu_pkt_t lsu_pkt_m,          // lsu packet flowing down the pipe
-   input                                eb1_lsu_pkt_t lsu_pkt_r,          // lsu packet flowing down the pipe
-
-   input logic [31:0]                   lsu_addr_m,                        // lsu address flowing down the pipe
-   input logic [31:0]                   lsu_addr_r,                        // lsu address flowing down the pipe
-
-   input logic [31:0]                   end_addr_m,                        // lsu address flowing down the pipe
-   input logic [31:0]                   end_addr_r,                        // lsu address flowing down the pipe
-
-   input logic [31:0]                   store_data_r,                      // store data flowing down the pipe
-   input logic                          dec_tlu_force_halt,
-
-   input logic                          lsu_commit_r,                      // lsu instruction in r commits
-   input logic                          is_sideeffects_m,                  // lsu attribute is side_effects
-   input logic                          flush_m_up,                        // flush
-   input logic                          flush_r,                           // flush
-   input logic                          ldst_dual_d, ldst_dual_m, ldst_dual_r,
-
-   output logic                         lsu_busreq_r,                      // bus request is in r
-   output logic                         lsu_bus_buffer_pend_any,           // bus buffer has a pending bus entry
-   output logic                         lsu_bus_buffer_full_any,           // write buffer is full
-   output logic                         lsu_bus_buffer_empty_any,          // write buffer is empty
-   output logic [31:0]                  bus_read_data_m,                   // the bus return data
-
-
-   output logic                         lsu_imprecise_error_load_any,      // imprecise load bus error
-   output logic                         lsu_imprecise_error_store_any,     // imprecise store bus error
-   output logic [31:0]                  lsu_imprecise_error_addr_any,      // address of the imprecise error
-
-   // Non-blocking loads
-   output logic                               lsu_nonblock_load_valid_m,   // there is an external load -> put in the cam
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_tag_m,     // the tag of the external non block load
-   output logic                               lsu_nonblock_load_inv_r,     // invalidate signal for the cam entry for non block loads
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_inv_tag_r, // tag of the enrty which needs to be invalidated
-   output logic                               lsu_nonblock_load_data_valid,// the non block is valid - sending information back to the cam
-   output logic                               lsu_nonblock_load_data_error,// non block load has an error
-   output logic [pt.LSU_NUM_NBLOAD_WIDTH-1:0] lsu_nonblock_load_data_tag,  // the tag of the non block load sending the data/error
-   output logic [31:0]                        lsu_nonblock_load_data,      // Data of the non block load
-
-   // PMU events
-   output logic                         lsu_pmu_bus_trxn,
-   output logic                         lsu_pmu_bus_misaligned,
-   output logic                         lsu_pmu_bus_error,
-   output logic                         lsu_pmu_bus_busy,
-
-   // AXI Write Channels
-   output logic                        lsu_axi_awvalid,
-   input  logic                        lsu_axi_awready,
-   output logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_awid,
-   output logic [31:0]                 lsu_axi_awaddr,
-   output logic [3:0]                  lsu_axi_awregion,
-   output logic [7:0]                  lsu_axi_awlen,
-   output logic [2:0]                  lsu_axi_awsize,
-   output logic [1:0]                  lsu_axi_awburst,
-   output logic                        lsu_axi_awlock,
-   output logic [3:0]                  lsu_axi_awcache,
-   output logic [2:0]                  lsu_axi_awprot,
-   output logic [3:0]                  lsu_axi_awqos,
-
-   output logic                        lsu_axi_wvalid,
-   input  logic                        lsu_axi_wready,
-   output logic [63:0]                 lsu_axi_wdata,
-   output logic [7:0]                  lsu_axi_wstrb,
-   output logic                        lsu_axi_wlast,
-
-   input  logic                        lsu_axi_bvalid,
-   output logic                        lsu_axi_bready,
-   input  logic [1:0]                  lsu_axi_bresp,
-   input  logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_bid,
-
-   // AXI Read Channels
-   output logic                        lsu_axi_arvalid,
-   input  logic                        lsu_axi_arready,
-   output logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_arid,
-   output logic [31:0]                 lsu_axi_araddr,
-   output logic [3:0]                  lsu_axi_arregion,
-   output logic [7:0]                  lsu_axi_arlen,
-   output logic [2:0]                  lsu_axi_arsize,
-   output logic [1:0]                  lsu_axi_arburst,
-   output logic                        lsu_axi_arlock,
-   output logic [3:0]                  lsu_axi_arcache,
-   output logic [2:0]                  lsu_axi_arprot,
-   output logic [3:0]                  lsu_axi_arqos,
-
-   input  logic                        lsu_axi_rvalid,
-   output logic                        lsu_axi_rready,
-   input  logic [pt.LSU_BUS_TAG-1:0]   lsu_axi_rid,
-   input  logic [63:0]                 lsu_axi_rdata,
-   input  logic [1:0]                  lsu_axi_rresp,
-
-   input logic                         lsu_bus_clk_en
-
-);
-
-
-
-   logic              lsu_bus_clk_en_q;
-
-   logic [3:0]        ldst_byteen_m, ldst_byteen_r;
-   logic [7:0]        ldst_byteen_ext_m, ldst_byteen_ext_r;
-   logic [3:0]        ldst_byteen_hi_m, ldst_byteen_hi_r;
-   logic [3:0]        ldst_byteen_lo_m, ldst_byteen_lo_r;
-   logic              is_sideeffects_r;
-
-   logic [63:0]       store_data_ext_r;
-   logic [31:0]       store_data_hi_r;
-   logic [31:0]       store_data_lo_r;
-
-   logic              addr_match_dw_lo_r_m;
-   logic              addr_match_word_lo_r_m;
-   logic              no_word_merge_r, no_dword_merge_r;
-
-   logic              ld_addr_rhit_lo_lo, ld_addr_rhit_hi_lo, ld_addr_rhit_lo_hi, ld_addr_rhit_hi_hi;
-   logic [3:0]        ld_byte_rhit_lo_lo, ld_byte_rhit_hi_lo, ld_byte_rhit_lo_hi, ld_byte_rhit_hi_hi;
-
-   logic [3:0]        ld_byte_hit_lo, ld_byte_rhit_lo;
-   logic [3:0]        ld_byte_hit_hi, ld_byte_rhit_hi;
-
-   logic [31:0]       ld_fwddata_rpipe_lo;
-   logic [31:0]       ld_fwddata_rpipe_hi;
-
-   logic [3:0]        ld_byte_hit_buf_lo, ld_byte_hit_buf_hi;
-   logic [31:0]       ld_fwddata_buf_lo, ld_fwddata_buf_hi;
-
-   logic [63:0]       ld_fwddata_lo, ld_fwddata_hi;
-   logic [63:0]       ld_fwddata_m;
-
-   logic              ld_full_hit_hi_m, ld_full_hit_lo_m;
-   logic              ld_full_hit_m;
-
-   assign ldst_byteen_m[3:0] = ({4{lsu_pkt_m.by}}   & 4'b0001) |
-                                 ({4{lsu_pkt_m.half}} & 4'b0011) |
-                                 ({4{lsu_pkt_m.word}} & 4'b1111);
-
-   // Read/Write Buffer
-   eb1_lsu_bus_buffer #(.pt(pt)) bus_buffer (
-      .*
-   );
-
-   // Logic to determine if dc5 store can be coalesced or not with younger stores. Bypass ibuf if cannot colaesced
-   assign addr_match_dw_lo_r_m = (lsu_addr_r[31:3] == lsu_addr_m[31:3]);
-   assign addr_match_word_lo_r_m = addr_match_dw_lo_r_m & ~(lsu_addr_r[2]^lsu_addr_m[2]);
-
-   assign no_word_merge_r  = lsu_busreq_r & ~ldst_dual_r & lsu_busreq_m & (lsu_pkt_m.load | ~addr_match_word_lo_r_m);
-   assign no_dword_merge_r = lsu_busreq_r & ~ldst_dual_r & lsu_busreq_m & (lsu_pkt_m.load | ~addr_match_dw_lo_r_m);
-
-   // Create Hi/Lo signals
-   assign ldst_byteen_ext_m[7:0] = {4'b0,ldst_byteen_m[3:0]} << lsu_addr_m[1:0];
-   assign ldst_byteen_ext_r[7:0] = {4'b0,ldst_byteen_r[3:0]} << lsu_addr_r[1:0];
-
-   assign store_data_ext_r[63:0] = {32'b0,store_data_r[31:0]} << {lsu_addr_r[1:0],3'b0};
-
-   assign ldst_byteen_hi_m[3:0]   = ldst_byteen_ext_m[7:4];
-   assign ldst_byteen_lo_m[3:0]   = ldst_byteen_ext_m[3:0];
-   assign ldst_byteen_hi_r[3:0]   = ldst_byteen_ext_r[7:4];
-   assign ldst_byteen_lo_r[3:0]   = ldst_byteen_ext_r[3:0];
-
-   assign store_data_hi_r[31:0]   = store_data_ext_r[63:32];
-   assign store_data_lo_r[31:0]   = store_data_ext_r[31:0];
-
-   assign ld_addr_rhit_lo_lo = (lsu_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_lo_hi = (end_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_hi_lo = (lsu_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-   assign ld_addr_rhit_hi_hi = (end_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & lsu_busreq_m;
-
-   for (genvar i=0; i<4; i++) begin: GenBusBufFwd
-      assign ld_byte_rhit_lo_lo[i] = ld_addr_rhit_lo_lo & ldst_byteen_lo_r[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_rhit_lo_hi[i] = ld_addr_rhit_lo_hi & ldst_byteen_lo_r[i] & ldst_byteen_hi_m[i];
-      assign ld_byte_rhit_hi_lo[i] = ld_addr_rhit_hi_lo & ldst_byteen_hi_r[i] & ldst_byteen_lo_m[i];
-      assign ld_byte_rhit_hi_hi[i] = ld_addr_rhit_hi_hi & ldst_byteen_hi_r[i] & ldst_byteen_hi_m[i];
-
-      assign ld_byte_hit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i] |
-                                 ld_byte_hit_buf_lo[i];
-
-      assign ld_byte_hit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i] |
-                                 ld_byte_hit_buf_hi[i];
-
-      assign ld_byte_rhit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_rhit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-      assign ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_lo[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                    ({8{ld_byte_rhit_hi_lo[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      assign ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_hi[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                    ({8{ld_byte_rhit_hi_hi[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      // Final muxing between m/r
-      assign ld_fwddata_lo[(8*i)+7:(8*i)] = ld_byte_rhit_lo[i]    ? ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] : ld_fwddata_buf_lo[(8*i)+7:(8*i)];
-
-      assign ld_fwddata_hi[(8*i)+7:(8*i)] = ld_byte_rhit_hi[i]    ? ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] : ld_fwddata_buf_hi[(8*i)+7:(8*i)];
-
-   end
-
-   always_comb begin
-      ld_full_hit_lo_m = 1'b1;
-      ld_full_hit_hi_m = 1'b1;
-      for (int i=0; i<4; i++) begin
-         ld_full_hit_lo_m &= (ld_byte_hit_lo[i] | ~ldst_byteen_lo_m[i]);
-         ld_full_hit_hi_m &= (ld_byte_hit_hi[i] | ~ldst_byteen_hi_m[i]);
-      end
-   end
-
-   // This will be high if all the bytes of load hit the stores in pipe/write buffer (m/r/wrbuf)
-   assign ld_full_hit_m = ld_full_hit_lo_m & ld_full_hit_hi_m & lsu_busreq_m & lsu_pkt_m.load & ~is_sideeffects_m;
-
-   assign ld_fwddata_m[63:0] = {ld_fwddata_hi[31:0], ld_fwddata_lo[31:0]} >> (8*lsu_addr_m[1:0]);
-   assign bus_read_data_m[31:0]                        = ld_fwddata_m[31:0];
-
-   // Fifo flops
-
-   rvdff #(.WIDTH(1)) clken_ff (.din(lsu_bus_clk_en), .dout(lsu_bus_clk_en_q), .clk(active_clk), .*);
-
-   rvdff #(.WIDTH(1)) is_sideeffects_rff (.din(is_sideeffects_m), .dout(is_sideeffects_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(4) lsu_byten_rff (.*, .din(ldst_byteen_m[3:0]), .dout(ldst_byteen_r[3:0]), .clk(lsu_c1_r_clk));
-
-endmodule // eb1_lsu_bus_intf
-
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Clock Generation Block
-// Comments: All the clocks are generate here
-//
-// //********************************************************************************
-
-
-module eb1_lsu_clkdomain
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic      clk,                               // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic      active_clk,                        // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic      rst_l,                             // reset, active low
-   input logic      dec_tlu_force_halt,                // This will be high till TLU goes to debug halt
-
-   // Inputs
-   input logic      clk_override,                      // chciken bit to turn off clock gating
-   input logic      dma_dccm_req,                      // dma is active
-   input logic      ldst_stbuf_reqvld_r,               // allocating in to the store queue
-
-   input logic      stbuf_reqvld_any,                  // stbuf is draining
-   input logic      stbuf_reqvld_flushed_any,          // instruction going to stbuf is flushed
-   input logic      lsu_busreq_r,                      // busreq in r
-   input logic      lsu_bus_buffer_pend_any,           // bus buffer has a pending bus entry
-   input logic      lsu_bus_buffer_empty_any,          // external bus buffer is empty
-   input logic      lsu_stbuf_empty_any,               // stbuf is empty
-
-   input logic      lsu_bus_clk_en,                    // bus clock enable
-
-   input eb1_lsu_pkt_t  lsu_p,                        // lsu packet in decode
-   input eb1_lsu_pkt_t  lsu_pkt_d,                    // lsu packet in d
-   input eb1_lsu_pkt_t  lsu_pkt_m,                    // lsu packet in m
-   input eb1_lsu_pkt_t  lsu_pkt_r,                    // lsu packet in r
-
-   // Outputs
-   output logic     lsu_bus_obuf_c1_clken,             // obuf clock enable
-   output logic     lsu_busm_clken,                    // bus clock enable
-
-   output logic     lsu_c1_m_clk,                      // m pipe single pulse clock
-   output logic     lsu_c1_r_clk,                      // r pipe single pulse clock
-
-   output logic     lsu_c2_m_clk,                      // m pipe double pulse clock
-   output logic     lsu_c2_r_clk,                      // r pipe double pulse clock
-
-   output logic     lsu_store_c1_m_clk,                // store in m
-   output logic     lsu_store_c1_r_clk,                // store in r
-
-   output logic     lsu_stbuf_c1_clk,
-   output logic     lsu_bus_obuf_c1_clk,               // ibuf clock
-   output logic     lsu_bus_ibuf_c1_clk,               // ibuf clock
-   output logic     lsu_bus_buf_c1_clk,                // ibuf clock
-   output logic     lsu_busm_clk,                      // bus clock
-
-   output logic     lsu_free_c2_clk,                   // free double pulse clock
-
-   input  logic     scan_mode                          // Scan mode
-);
-
-   logic lsu_c1_m_clken, lsu_c1_r_clken;
-   logic lsu_c2_m_clken, lsu_c2_r_clken;
-   logic lsu_c1_m_clken_q, lsu_c1_r_clken_q;
-   logic lsu_store_c1_m_clken, lsu_store_c1_r_clken;
-
-
-   logic lsu_stbuf_c1_clken;
-   logic lsu_bus_ibuf_c1_clken, lsu_bus_buf_c1_clken;
-
-   logic lsu_free_c1_clken, lsu_free_c1_clken_q, lsu_free_c2_clken;
-
-   //-------------------------------------------------------------------------------------------
-   // Clock Enable logic
-   //-------------------------------------------------------------------------------------------
-
-   assign lsu_c1_m_clken = lsu_p.valid | dma_dccm_req | clk_override;
-   assign lsu_c1_r_clken = lsu_pkt_m.valid | lsu_c1_m_clken_q | clk_override;
-
-   assign lsu_c2_m_clken = lsu_c1_m_clken | lsu_c1_m_clken_q | clk_override;
-   assign lsu_c2_r_clken = lsu_c1_r_clken | lsu_c1_r_clken_q | clk_override;
-
-   assign lsu_store_c1_m_clken = ((lsu_c1_m_clken & lsu_pkt_d.store) | clk_override) ;
-   assign lsu_store_c1_r_clken = ((lsu_c1_r_clken & lsu_pkt_m.store) | clk_override) ;
-
-   assign lsu_stbuf_c1_clken = ldst_stbuf_reqvld_r | stbuf_reqvld_any | stbuf_reqvld_flushed_any | clk_override;
-   assign lsu_bus_ibuf_c1_clken = lsu_busreq_r | clk_override;
-   assign lsu_bus_obuf_c1_clken = (lsu_bus_buffer_pend_any | lsu_busreq_r | clk_override) & lsu_bus_clk_en;
-   assign lsu_bus_buf_c1_clken  = ~lsu_bus_buffer_empty_any | lsu_busreq_r | dec_tlu_force_halt | clk_override;
-
-   assign lsu_free_c1_clken = (lsu_p.valid | lsu_pkt_d.valid | lsu_pkt_m.valid | lsu_pkt_r.valid) |
-                              ~lsu_bus_buffer_empty_any | ~lsu_stbuf_empty_any | clk_override;
-   assign lsu_free_c2_clken = lsu_free_c1_clken | lsu_free_c1_clken_q | clk_override;
-
-    // Flops
-   rvdff #(1) lsu_free_c1_clkenff (.din(lsu_free_c1_clken), .dout(lsu_free_c1_clken_q), .clk(active_clk), .*);
-
-   rvdff #(1) lsu_c1_m_clkenff (.din(lsu_c1_m_clken), .dout(lsu_c1_m_clken_q), .clk(lsu_free_c2_clk), .*);
-   rvdff #(1) lsu_c1_r_clkenff (.din(lsu_c1_r_clken), .dout(lsu_c1_r_clken_q), .clk(lsu_free_c2_clk), .*);
-
-   // Clock Headers
-   rvoclkhdr lsu_c1m_cgc ( .en(lsu_c1_m_clken), .l1clk(lsu_c1_m_clk), .* );
-   rvoclkhdr lsu_c1r_cgc ( .en(lsu_c1_r_clken), .l1clk(lsu_c1_r_clk), .* );
-
-   rvoclkhdr lsu_c2m_cgc ( .en(lsu_c2_m_clken), .l1clk(lsu_c2_m_clk), .* );
-   rvoclkhdr lsu_c2r_cgc ( .en(lsu_c2_r_clken), .l1clk(lsu_c2_r_clk), .* );
-
-   rvoclkhdr lsu_store_c1m_cgc (.en(lsu_store_c1_m_clken), .l1clk(lsu_store_c1_m_clk), .*);
-   rvoclkhdr lsu_store_c1r_cgc (.en(lsu_store_c1_r_clken), .l1clk(lsu_store_c1_r_clk), .*);
-
-   rvoclkhdr lsu_stbuf_c1_cgc ( .en(lsu_stbuf_c1_clken), .l1clk(lsu_stbuf_c1_clk), .* );
-   rvoclkhdr lsu_bus_ibuf_c1_cgc ( .en(lsu_bus_ibuf_c1_clken), .l1clk(lsu_bus_ibuf_c1_clk), .* );
-   rvoclkhdr lsu_bus_buf_c1_cgc  ( .en(lsu_bus_buf_c1_clken),  .l1clk(lsu_bus_buf_c1_clk), .* );
-
-   assign lsu_busm_clken = (~lsu_bus_buffer_empty_any | lsu_busreq_r | clk_override) & lsu_bus_clk_en;
-
-   rvclkhdr  lsu_bus_obuf_c1_cgc ( .en(lsu_bus_obuf_c1_clken), .l1clk(lsu_bus_obuf_c1_clk), .* );
-   rvclkhdr  lsu_busm_cgc (.en(lsu_busm_clken), .l1clk(lsu_busm_clk), .*);
-
-
-   rvoclkhdr lsu_free_cgc (.en(lsu_free_c2_clken), .l1clk(lsu_free_c2_clk), .*);
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DCCM for LSU pipe
-// Comments: Single ported memory
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-module eb1_lsu_dccm_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-  (
-   input logic                             lsu_c2_m_clk,            // clocks
-   input logic                             lsu_c2_r_clk,            // clocks
-   input logic                             lsu_c1_r_clk,            // clocks
-   input logic                             lsu_store_c1_r_clk,      // clocks
-   input logic                             lsu_free_c2_clk,         // clocks
-   input logic                             clk_override,            // Override non-functional clock gating
-   input logic                             clk,                     // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-
-   input logic                             rst_l,                   // reset, active low
-
-   input                                   eb1_lsu_pkt_t lsu_pkt_r,// lsu packets
-   input                                   eb1_lsu_pkt_t lsu_pkt_m,// lsu packets
-   input                                   eb1_lsu_pkt_t lsu_pkt_d,// lsu packets
-   input logic                             addr_in_dccm_d,          // address maps to dccm
-   input logic                             addr_in_pic_d,           // address maps to pic
-   input logic                             addr_in_pic_m,           // address maps to pic
-   input logic                             addr_in_dccm_m, addr_in_dccm_r,   // address in dccm per pipe stage
-   input logic                             addr_in_pic_r,                    // address in pic  per pipe stage
-   input logic                             lsu_raw_fwd_lo_r, lsu_raw_fwd_hi_r,
-   input logic                             lsu_commit_r,            // lsu instruction in r commits
-   input logic                             ldst_dual_m, ldst_dual_r,// load/store is unaligned at 32 bit boundary per pipe stage
-
-   // lsu address down the pipe
-   input logic [31:0]                      lsu_addr_d,
-   input logic [pt.DCCM_BITS-1:0]          lsu_addr_m,
-   input logic [31:0]                      lsu_addr_r,
-
-   // lsu address down the pipe - needed to check unaligned
-   input logic [pt.DCCM_BITS-1:0]          end_addr_d,
-   input logic [pt.DCCM_BITS-1:0]          end_addr_m,
-   input logic [pt.DCCM_BITS-1:0]          end_addr_r,
-
-
-   input logic                             stbuf_reqvld_any,        // write enable
-   input logic [pt.LSU_SB_BITS-1:0]        stbuf_addr_any,          // stbuf address (aligned)
-
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_data_any,          // the read out from stbuf
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     stbuf_ecc_any,           // the encoded data with ECC bits
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_fwddata_hi_m,      // stbuf fowarding to load
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    stbuf_fwddata_lo_m,      // stbuf fowarding to load
-   input logic [pt.DCCM_BYTE_WIDTH-1:0]    stbuf_fwdbyteen_hi_m,    // stbuf fowarding to load
-   input logic [pt.DCCM_BYTE_WIDTH-1:0]    stbuf_fwdbyteen_lo_m,    // stbuf fowarding to load
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_hi_r,         // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_lo_r,         // data from the dccm
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_hi_r,      // data from the dccm + ecc
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_lo_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_r,           // right justified, ie load byte will have data at 7:0
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_corr_r,      // right justified & ECC corrected, ie load byte will have data at 7:0
-
-   input logic                             lsu_double_ecc_error_r,  // lsu has a DED
-   input logic                             single_ecc_error_hi_r,   // sec detected on hi dccm bank
-   input logic                             single_ecc_error_lo_r,   // sec detected on lower dccm bank
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_r,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_r,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_r_ff,        // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_r_ff,        // corrected dccm data
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     sec_data_ecc_hi_r_ff,    // the encoded data with ECC bits
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     sec_data_ecc_lo_r_ff,    // the encoded data with ECC bits
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_hi_m,         // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   dccm_rdata_lo_m,         // data from the dccm
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_hi_m,      // data from the dccm + ecc
-   output logic [pt.DCCM_ECC_WIDTH-1:0]    dccm_data_ecc_lo_m,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   lsu_ld_data_m,           // right justified, ie load byte will have data at 7:0
-
-   input logic                             lsu_double_ecc_error_m,  // lsu has a DED
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_hi_m,           // corrected dccm data
-   input logic [pt.DCCM_DATA_WIDTH-1:0]    sec_data_lo_m,           // corrected dccm data
-
-   input logic [31:0]                      store_data_m,            // Store data M-stage
-   input logic                             dma_dccm_wen,            // Perform DMA writes only for word/dword
-   input logic                             dma_pic_wen,             // Perform PIC writes
-   input logic [2:0]                       dma_mem_tag_m,           // DMA Buffer entry number M-stage
-   input logic [31:0]                      dma_mem_addr,            // DMA request address
-   input logic [63:0]                      dma_mem_wdata,           // DMA write data
-   input logic [31:0]                      dma_dccm_wdata_lo,       // Shift the dma data to lower bits to make it consistent to lsu stores
-   input logic [31:0]                      dma_dccm_wdata_hi,       // Shift the dma data to lower bits to make it consistent to lsu stores
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     dma_dccm_wdata_ecc_hi,   // ECC bits for the DMA wdata
-   input logic [pt.DCCM_ECC_WIDTH-1:0]     dma_dccm_wdata_ecc_lo,   // ECC bits for the DMA wdata
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_data_hi_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_data_lo_r,
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_datafn_hi_r,       // data from the dccm
-   output logic [pt.DCCM_DATA_WIDTH-1:0]   store_datafn_lo_r,       // data from the dccm
-   output logic [31:0]                     store_data_r,            // raw store data to be sent to bus
-   output logic                            ld_single_ecc_error_r,
-   output logic                            ld_single_ecc_error_r_ff,
-
-   output logic [31:0]                     picm_mask_data_m,        // pic data to stbuf
-   output logic                            lsu_stbuf_commit_any,    // stbuf wins the dccm port or is to pic
-   output logic                            lsu_dccm_rden_m,         // dccm read
-   output logic                            lsu_dccm_rden_r,         // dccm read
-
-   output logic                            dccm_dma_rvalid,         // dccm serviving the dma load
-   output logic                            dccm_dma_ecc_error,      // DMA load had ecc error
-   output logic [2:0]                      dccm_dma_rtag,           // DMA return tag
-   output logic [63:0]                     dccm_dma_rdata,          // dccm data to dma request
-
-   // DCCM ports
-   output logic                            dccm_wren,               // dccm interface -- write
-   output logic                            dccm_rden,               // dccm interface -- write
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_lo,         // dccm interface -- wr addr for lo bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_wr_addr_hi,         // dccm interface -- wr addr for hi bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_lo,         // dccm interface -- read address for lo bank
-   output logic [pt.DCCM_BITS-1:0]         dccm_rd_addr_hi,         // dccm interface -- read address for hi bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,         // dccm write data for lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,         // dccm write data for hi bank
-
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_lo,         // dccm read data back from the dccm
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]   dccm_rd_data_hi,         // dccm read data back from the dccm
-
-   // PIC ports
-   output logic                            picm_wren,               // write to pic
-   output logic                            picm_rden,               // read to pick
-   output logic                            picm_mken,               // write to pic need a mask
-   output logic [31:0]                     picm_rdaddr,             // address for pic read access
-   output logic [31:0]                     picm_wraddr,             // address for pic write access
-   output logic [31:0]                     picm_wr_data,            // write data
-   input logic [31:0]                      picm_rd_data,            // read data
-
-   input logic                             scan_mode                // scan mode
-);
-
-
-   localparam DCCM_WIDTH_BITS = $clog2(pt.DCCM_BYTE_WIDTH);
-
-   logic                           lsu_dccm_rden_d, lsu_dccm_wren_d;
-   logic                           ld_single_ecc_error_lo_r, ld_single_ecc_error_hi_r;
-   logic                           ld_single_ecc_error_lo_r_ns, ld_single_ecc_error_hi_r_ns;
-   logic                           ld_single_ecc_error_lo_r_ff, ld_single_ecc_error_hi_r_ff;
-   logic                           lsu_double_ecc_error_r_ff;
-   logic [pt.DCCM_BITS-1:0]        ld_sec_addr_lo_r_ff, ld_sec_addr_hi_r_ff;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_lo_r_in, store_data_hi_r_in ;
-   logic [63:0]                    picm_rd_data_m;
-
-   logic                           dccm_wr_bypass_d_m_hi, dccm_wr_bypass_d_r_hi;
-   logic                           dccm_wr_bypass_d_m_lo, dccm_wr_bypass_d_r_lo;
-   logic                           kill_ecc_corr_lo_r, kill_ecc_corr_hi_r;
-
-    // byte_en flowing down
-   logic [3:0]                     store_byteen_m ,store_byteen_r;
-   logic [7:0]                     store_byteen_ext_m, store_byteen_ext_r;
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic [63:0]  lsu_rdata_r, lsu_rdata_corr_r;
-      logic [63:0]  dccm_rdata_r, dccm_rdata_corr_r;
-      logic [63:0]  stbuf_fwddata_r;
-      logic [7:0]   stbuf_fwdbyteen_r;
-      logic [31:0]  stbuf_fwddata_lo_r, stbuf_fwddata_hi_r;
-      logic [3:0]   stbuf_fwdbyteen_lo_r, stbuf_fwdbyteen_hi_r;
-      logic [31:0]  lsu_rdata_lo_r, lsu_rdata_hi_r;
-      logic [63:0]  picm_rd_data_r;
-      logic [63:32] lsu_ld_data_r_nc, lsu_ld_data_corr_r_nc;
-      logic [2:0]   dma_mem_tag_r;
-      logic         stbuf_fwddata_en;
-
-      assign dccm_dma_rvalid      = lsu_pkt_r.valid & lsu_pkt_r.load & lsu_pkt_r.dma;
-      assign dccm_dma_ecc_error   = lsu_double_ecc_error_r;
-      assign dccm_dma_rtag[2:0]   = dma_mem_tag_r[2:0];
-      assign dccm_dma_rdata[63:0] = ldst_dual_r ? lsu_rdata_corr_r[63:0] : {2{lsu_rdata_corr_r[31:0]}};
-      assign {lsu_ld_data_r_nc[63:32], lsu_ld_data_r[31:0]}           = lsu_rdata_r[63:0] >> 8*lsu_addr_r[1:0];
-      assign {lsu_ld_data_corr_r_nc[63:32], lsu_ld_data_corr_r[31:0]} = lsu_rdata_corr_r[63:0] >> 8*lsu_addr_r[1:0];
-
-      assign picm_rd_data_r[63:32]   = picm_rd_data_r[31:0];
-      assign dccm_rdata_r[63:0]      = {dccm_rdata_hi_r[31:0],dccm_rdata_lo_r[31:0]};
-      assign dccm_rdata_corr_r[63:0] = {sec_data_hi_r[31:0],sec_data_lo_r[31:0]};
-      assign stbuf_fwddata_r[63:0]   = {stbuf_fwddata_hi_r[31:0], stbuf_fwddata_lo_r[31:0]};
-      assign stbuf_fwdbyteen_r[7:0]  = {stbuf_fwdbyteen_hi_r[3:0], stbuf_fwdbyteen_lo_r[3:0]};
-      assign stbuf_fwddata_en        = (|stbuf_fwdbyteen_hi_m[3:0]) | (|stbuf_fwdbyteen_lo_m[3:0]) | clk_override;
-
-      for (genvar i=0; i<8; i++) begin: GenDMAData
-         assign lsu_rdata_corr_r[(8*i)+7:8*i]  = stbuf_fwdbyteen_r[i] ? stbuf_fwddata_r[(8*i)+7:8*i] :
-                                                                        (addr_in_pic_r ? picm_rd_data_r[(8*i)+7:8*i] :  ({8{addr_in_dccm_r}} & dccm_rdata_corr_r[(8*i)+7:8*i]));
-
-         assign lsu_rdata_r[(8*i)+7:8*i]       = stbuf_fwdbyteen_r[i] ? stbuf_fwddata_r[(8*i)+7:8*i] :
-                                                                        (addr_in_pic_r ? picm_rd_data_r[(8*i)+7:8*i] :  ({8{addr_in_dccm_r}} & dccm_rdata_r[(8*i)+7:8*i]));
-      end
-      rvdffe #(pt.DCCM_DATA_WIDTH) dccm_rdata_hi_r_ff    (.*, .din(dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(dccm_rdata_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en((lsu_dccm_rden_m & ldst_dual_m) | clk_override));
-      rvdffe #(pt.DCCM_DATA_WIDTH) dccm_rdata_lo_r_ff    (.*, .din(dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(dccm_rdata_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_dccm_rden_m | clk_override));
-      rvdffe #(2*pt.DCCM_ECC_WIDTH)  dccm_data_ecc_r_ff  (.*, .din({dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0], dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0]}),
-                                                              .dout({dccm_data_ecc_hi_r[pt.DCCM_ECC_WIDTH-1:0], dccm_data_ecc_lo_r[pt.DCCM_ECC_WIDTH-1:0]}),                                  .en(lsu_dccm_rden_m | clk_override));
-      rvdff #(8)                   stbuf_fwdbyteen_ff    (.*, .din({stbuf_fwdbyteen_hi_m[3:0], stbuf_fwdbyteen_lo_m[3:0]}), .dout({stbuf_fwdbyteen_hi_r[3:0], stbuf_fwdbyteen_lo_r[3:0]}), .clk(lsu_c2_r_clk));
-      rvdffe #(64)                 stbuf_fwddata_ff      (.*, .din({stbuf_fwddata_hi_m[31:0], stbuf_fwddata_lo_m[31:0]}),   .dout({stbuf_fwddata_hi_r[31:0], stbuf_fwddata_lo_r[31:0]}),   .en(stbuf_fwddata_en));
-      rvdffe #(32)                 picm_rddata_rff       (.*, .din(picm_rd_data_m[31:0]),                                   .dout(picm_rd_data_r[31:0]),                                   .en(addr_in_pic_m | clk_override));
-      rvdff #(3)                   dma_mem_tag_rff       (.*, .din(dma_mem_tag_m[2:0]),                                     .dout(dma_mem_tag_r[2:0]),                                     .clk(lsu_c1_r_clk));
-
-   end else begin: L2U_Plus1_0
-
-      logic [63:0]  lsu_rdata_m, lsu_rdata_corr_m;
-      logic [63:0]  dccm_rdata_m, dccm_rdata_corr_m;
-      logic [63:0]  stbuf_fwddata_m;
-      logic [7:0]   stbuf_fwdbyteen_m;
-      logic [63:32] lsu_ld_data_m_nc, lsu_ld_data_corr_m_nc;
-      logic [31:0]  lsu_ld_data_corr_m;
-
-      assign dccm_dma_rvalid      = lsu_pkt_m.valid & lsu_pkt_m.load & lsu_pkt_m.dma;
-      assign dccm_dma_ecc_error   = lsu_double_ecc_error_m;
-      assign dccm_dma_rtag[2:0]   = dma_mem_tag_m[2:0];
-      assign dccm_dma_rdata[63:0] = ldst_dual_m ? lsu_rdata_corr_m[63:0] : {2{lsu_rdata_corr_m[31:0]}};
-      assign {lsu_ld_data_m_nc[63:32], lsu_ld_data_m[31:0]} = lsu_rdata_m[63:0] >> 8*lsu_addr_m[1:0];
-      assign {lsu_ld_data_corr_m_nc[63:32], lsu_ld_data_corr_m[31:0]} = lsu_rdata_corr_m[63:0] >> 8*lsu_addr_m[1:0];
-
-      assign dccm_rdata_m[63:0]      = {dccm_rdata_hi_m[31:0],dccm_rdata_lo_m[31:0]};
-      assign dccm_rdata_corr_m[63:0] = {sec_data_hi_m[31:0],sec_data_lo_m[31:0]};
-      assign stbuf_fwddata_m[63:0]   = {stbuf_fwddata_hi_m[31:0], stbuf_fwddata_lo_m[31:0]};
-      assign stbuf_fwdbyteen_m[7:0]  = {stbuf_fwdbyteen_hi_m[3:0], stbuf_fwdbyteen_lo_m[3:0]};
-
-      for (genvar i=0; i<8; i++) begin: GenLoop
-         assign lsu_rdata_corr_m[(8*i)+7:8*i] = stbuf_fwdbyteen_m[i] ? stbuf_fwddata_m[(8*i)+7:8*i] :
-                                                                       (addr_in_pic_m ? picm_rd_data_m[(8*i)+7:8*i] : ({8{addr_in_dccm_m}} & dccm_rdata_corr_m[(8*i)+7:8*i]));
-
-         assign lsu_rdata_m[(8*i)+7:8*i]      = stbuf_fwdbyteen_m[i] ? stbuf_fwddata_m[(8*i)+7:8*i] :
-                                                                       (addr_in_pic_m ? picm_rd_data_m[(8*i)+7:8*i] : ({8{addr_in_dccm_m}} & dccm_rdata_m[(8*i)+7:8*i]));
-      end
-
-      rvdffe #(32) lsu_ld_data_corr_rff(.*, .din(lsu_ld_data_corr_m[31:0]), .dout(lsu_ld_data_corr_r[31:0]), .en((lsu_pkt_m.valid & lsu_pkt_m.load & (addr_in_pic_m | addr_in_dccm_m)) | clk_override));
-   end
-
-   assign kill_ecc_corr_lo_r = (((lsu_addr_d[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_d[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_d.valid & lsu_pkt_d.store & lsu_pkt_d.dma & addr_in_dccm_d) |
-                               (((lsu_addr_m[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_m[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_m.valid & lsu_pkt_m.store & lsu_pkt_m.dma & addr_in_dccm_m);
-
-   assign kill_ecc_corr_hi_r = (((lsu_addr_d[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_d[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_d.valid & lsu_pkt_d.store & lsu_pkt_d.dma & addr_in_dccm_d) |
-                               (((lsu_addr_m[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) | (end_addr_m[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2])) & lsu_pkt_m.valid & lsu_pkt_m.store & lsu_pkt_m.dma & addr_in_dccm_m);
-
-   assign ld_single_ecc_error_lo_r = lsu_pkt_r.load & single_ecc_error_lo_r & ~lsu_raw_fwd_lo_r;
-   assign ld_single_ecc_error_hi_r = lsu_pkt_r.load & single_ecc_error_hi_r & ~lsu_raw_fwd_hi_r;
-   assign ld_single_ecc_error_r    = (ld_single_ecc_error_lo_r | ld_single_ecc_error_hi_r) & ~lsu_double_ecc_error_r;
-
-   assign ld_single_ecc_error_lo_r_ns = ld_single_ecc_error_lo_r & (lsu_commit_r | lsu_pkt_r.dma) & ~kill_ecc_corr_lo_r;
-   assign ld_single_ecc_error_hi_r_ns = ld_single_ecc_error_hi_r & (lsu_commit_r | lsu_pkt_r.dma) & ~kill_ecc_corr_hi_r;
-   assign ld_single_ecc_error_r_ff = (ld_single_ecc_error_lo_r_ff | ld_single_ecc_error_hi_r_ff) & ~lsu_double_ecc_error_r_ff;
-
-   assign lsu_stbuf_commit_any = stbuf_reqvld_any &
-                                 (~(lsu_dccm_rden_d | lsu_dccm_wren_d | ld_single_ecc_error_r_ff) |
-                                  (lsu_dccm_rden_d & ~((stbuf_addr_any[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] == lsu_addr_d[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]) |
-                                                       (stbuf_addr_any[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] == end_addr_d[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]))));
-
-   // No need to read for aligned word/dword stores since ECC will come by new data completely
-   assign lsu_dccm_rden_d = lsu_pkt_d.valid & (lsu_pkt_d.load | (lsu_pkt_d.store & (~(lsu_pkt_d.word | lsu_pkt_d.dword) | (lsu_addr_d[1:0] != 2'b0)))) & addr_in_dccm_d;
-
-   // DMA will read/write in decode stage
-   assign lsu_dccm_wren_d = dma_dccm_wen;
-
-   // DCCM inputs
-   assign dccm_wren                             = lsu_dccm_wren_d | lsu_stbuf_commit_any | ld_single_ecc_error_r_ff;
-   assign dccm_rden                             = lsu_dccm_rden_d & addr_in_dccm_d;
-   assign dccm_wr_addr_lo[pt.DCCM_BITS-1:0]     = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_lo_r_ff ? ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0] : ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0]) :
-                                                                             lsu_dccm_wren_d ? lsu_addr_d[pt.DCCM_BITS-1:0] : stbuf_addr_any[pt.DCCM_BITS-1:0];
-   assign dccm_wr_addr_hi[pt.DCCM_BITS-1:0]     = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_hi_r_ff ? ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0] : ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0]) :
-                                                                             lsu_dccm_wren_d ? end_addr_d[pt.DCCM_BITS-1:0] : stbuf_addr_any[pt.DCCM_BITS-1:0];
-   assign dccm_rd_addr_lo[pt.DCCM_BITS-1:0]     = lsu_addr_d[pt.DCCM_BITS-1:0];
-   assign dccm_rd_addr_hi[pt.DCCM_BITS-1:0]     = end_addr_d[pt.DCCM_BITS-1:0];
-   assign dccm_wr_data_lo[pt.DCCM_FDATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_lo_r_ff ? {sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                               {sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]}) :
-                                                                                (dma_dccm_wen ? {dma_dccm_wdata_ecc_lo[pt.DCCM_ECC_WIDTH-1:0],dma_dccm_wdata_lo[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                {stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0],stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]});
-   assign dccm_wr_data_hi[pt.DCCM_FDATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? (ld_single_ecc_error_hi_r_ff ? {sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                               {sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0],sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]}) :
-                                                                                (dma_dccm_wen ? {dma_dccm_wdata_ecc_hi[pt.DCCM_ECC_WIDTH-1:0],dma_dccm_wdata_hi[pt.DCCM_DATA_WIDTH-1:0]} :
-                                                                                                {stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0],stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]});
-
-   // DCCM outputs
-   assign store_byteen_m[3:0] = {4{lsu_pkt_m.store}} &
-                                (({4{lsu_pkt_m.by}}    & 4'b0001) |
-                                 ({4{lsu_pkt_m.half}}  & 4'b0011) |
-                                 ({4{lsu_pkt_m.word}}  & 4'b1111));
-
-   assign store_byteen_r[3:0] =  {4{lsu_pkt_r.store}} &
-                                 (({4{lsu_pkt_r.by}}    & 4'b0001) |
-                                  ({4{lsu_pkt_r.half}}  & 4'b0011) |
-                                  ({4{lsu_pkt_r.word}}  & 4'b1111));
-
-   assign store_byteen_ext_m[7:0] = {4'b0,store_byteen_m[3:0]} << lsu_addr_m[1:0];      // The packet in m
-   assign store_byteen_ext_r[7:0] = {4'b0,store_byteen_r[3:0]} << lsu_addr_r[1:0];
-
-
-
-   assign dccm_wr_bypass_d_m_lo   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == lsu_addr_m[pt.DCCM_BITS-1:2]) & addr_in_dccm_m;
-   assign dccm_wr_bypass_d_m_hi   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == end_addr_m[pt.DCCM_BITS-1:2]) & addr_in_dccm_m;
-
-   assign dccm_wr_bypass_d_r_lo   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == lsu_addr_r[pt.DCCM_BITS-1:2]) & addr_in_dccm_r;
-   assign dccm_wr_bypass_d_r_hi   = (stbuf_addr_any[pt.DCCM_BITS-1:2] == end_addr_r[pt.DCCM_BITS-1:2]) & addr_in_dccm_r;
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U1_Plus1_1
-      logic        dccm_wren_Q;
-      logic [31:0] dccm_wr_data_Q;
-      logic        dccm_wr_bypass_d_m_lo_Q, dccm_wr_bypass_d_m_hi_Q;
-      logic [31:0] store_data_pre_hi_r, store_data_pre_lo_r;
-
-      assign {store_data_pre_hi_r[31:0], store_data_pre_lo_r[31:0]} = {32'b0,store_data_r[31:0]} << 8*lsu_addr_r[1:0];
-
-      for (genvar i=0; i<4; i++) begin
-          assign store_data_lo_r[(8*i)+7:(8*i)]   = store_byteen_ext_r[i] ? store_data_pre_lo_r[(8*i)+7:(8*i)] : ((dccm_wren_Q & dccm_wr_bypass_d_m_lo_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_lo_r[(8*i)+7:(8*i)]);
-          assign store_data_hi_r[(8*i)+7:(8*i)]   = store_byteen_ext_r[i+4] ? store_data_pre_hi_r[(8*i)+7:(8*i)] : ((dccm_wren_Q & dccm_wr_bypass_d_m_hi_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_hi_r[(8*i)+7:(8*i)]);
-
-          assign store_datafn_lo_r[(8*i)+7:(8*i)] = store_byteen_ext_r[i] ? store_data_pre_lo_r[(8*i)+7:(8*i)] : ((lsu_stbuf_commit_any & dccm_wr_bypass_d_r_lo) ? stbuf_data_any[(8*i)+7:(8*i)] :
-                                                                                                                    ((dccm_wren_Q & dccm_wr_bypass_d_m_lo_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_lo_r[(8*i)+7:(8*i)]));
-          assign store_datafn_hi_r[(8*i)+7:(8*i)] = store_byteen_ext_r[i+4] ? store_data_pre_hi_r[(8*i)+7:(8*i)] : ((lsu_stbuf_commit_any & dccm_wr_bypass_d_r_hi) ? stbuf_data_any[(8*i)+7:(8*i)] :
-                                                                                                                    ((dccm_wren_Q & dccm_wr_bypass_d_m_hi_Q) ? dccm_wr_data_Q[(8*i)+7:(8*i)] : sec_data_hi_r[(8*i)+7:(8*i)]));
-      end
-
-      rvdff #(1)   dccm_wren_ff       (.*, .din(lsu_stbuf_commit_any),  .dout(dccm_wren_Q),             .clk(lsu_free_c2_clk));   // ECC load errors writing to dccm shouldn't fwd to stores in pipe
-      rvdffe #(32) dccm_wrdata_ff     (.*, .din(stbuf_data_any[31:0]),  .dout(dccm_wr_data_Q[31:0]),    .en(lsu_stbuf_commit_any | clk_override), .clk(clk));
-      rvdff #(1)   dccm_wrbyp_dm_loff (.*, .din(dccm_wr_bypass_d_m_lo), .dout(dccm_wr_bypass_d_m_lo_Q), .clk(lsu_free_c2_clk));
-      rvdff #(1)   dccm_wrbyp_dm_hiff (.*, .din(dccm_wr_bypass_d_m_hi), .dout(dccm_wr_bypass_d_m_hi_Q), .clk(lsu_free_c2_clk));
-      rvdff #(32)  store_data_rff     (.*, .din(store_data_m[31:0]),    .dout(store_data_r[31:0]),      .clk(lsu_store_c1_r_clk));
-
-   end else begin: L2U1_Plus1_0
-
-      logic [31:0] store_data_hi_m, store_data_lo_m;
-      logic [63:0] store_data_mask;
-      assign {store_data_hi_m[31:0] , store_data_lo_m[31:0]} = {32'b0,store_data_m[31:0]} << 8*lsu_addr_m[1:0];
-
-      for (genvar i=0; i<4; i++) begin
-         assign store_data_hi_r_in[(8*i)+7:(8*i)]  = store_byteen_ext_m[i+4] ? store_data_hi_m[(8*i)+7:(8*i)] :
-                                                                               ((lsu_stbuf_commit_any &  dccm_wr_bypass_d_m_hi)   ? stbuf_data_any[(8*i)+7:(8*i)] : sec_data_hi_m[(8*i)+7:(8*i)]);
-         assign store_data_lo_r_in[(8*i)+7:(8*i)]  = store_byteen_ext_m[i]   ? store_data_lo_m[(8*i)+7:(8*i)] :
-                                                                               ((lsu_stbuf_commit_any &  dccm_wr_bypass_d_m_lo) ? stbuf_data_any[(8*i)+7:(8*i)] : sec_data_lo_m[(8*i)+7:(8*i)]);
-
-         assign store_datafn_lo_r[(8*i)+7:(8*i)]   = (lsu_stbuf_commit_any & dccm_wr_bypass_d_r_lo & ~store_byteen_ext_r[i])   ? stbuf_data_any[(8*i)+7:(8*i)] : store_data_lo_r[(8*i)+7:(8*i)];
-         assign store_datafn_hi_r[(8*i)+7:(8*i)]   = (lsu_stbuf_commit_any & dccm_wr_bypass_d_r_hi & ~store_byteen_ext_r[i+4]) ? stbuf_data_any[(8*i)+7:(8*i)] : store_data_hi_r[(8*i)+7:(8*i)];
-      end // for (genvar i=0; i<BYTE_WIDTH; i++)
-
-      for (genvar i=0; i<4; i++) begin
-         assign store_data_mask[(8*i)+7:(8*i)] = {8{store_byteen_r[i]}};
-      end
-      assign store_data_r[31:0]      = 32'({store_data_hi_r[31:0],store_data_lo_r[31:0]} >> 8*lsu_addr_r[1:0]) & store_data_mask[31:0];
-
-      rvdffe #(pt.DCCM_DATA_WIDTH) store_data_hi_rff (.*, .din(store_data_hi_r_in[pt.DCCM_DATA_WIDTH-1:0]), .dout(store_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en((ldst_dual_m & lsu_pkt_m.valid & lsu_pkt_m.store) | clk_override), .clk(clk));
-      rvdff  #(pt.DCCM_DATA_WIDTH) store_data_lo_rff (.*, .din(store_data_lo_r_in[pt.DCCM_DATA_WIDTH-1:0]), .dout(store_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .clk(lsu_store_c1_r_clk));
-
-   end
-
-   assign dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rd_data_lo[pt.DCCM_DATA_WIDTH-1:0]; // for ld choose dccm_out
-   assign dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rd_data_hi[pt.DCCM_DATA_WIDTH-1:0]; // for ld this is used for ecc
-
-   assign dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0] = dccm_rd_data_lo[pt.DCCM_FDATA_WIDTH-1:pt.DCCM_DATA_WIDTH];
-   assign dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0] = dccm_rd_data_hi[pt.DCCM_FDATA_WIDTH-1:pt.DCCM_DATA_WIDTH];
-
-   // PIC signals. PIC ignores the lower 2 bits of address since PIC memory registers are 32-bits
-   assign picm_wren          = (lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_pic_r & lsu_commit_r) | dma_pic_wen;
-   assign picm_rden          = lsu_pkt_d.valid & lsu_pkt_d.load  & addr_in_pic_d;
-   assign picm_mken          = lsu_pkt_d.valid & lsu_pkt_d.store & addr_in_pic_d;  // Get the mask for stores
-   assign picm_rdaddr[31:0]  = pt.PIC_BASE_ADDR | {{32-pt.PIC_BITS{1'b0}},lsu_addr_d[pt.PIC_BITS-1:0]};
-
-   assign picm_wraddr[31:0]  = pt.PIC_BASE_ADDR | {{32-pt.PIC_BITS{1'b0}},(dma_pic_wen ? dma_mem_addr[pt.PIC_BITS-1:0] : lsu_addr_r[pt.PIC_BITS-1:0])};
-
-   assign picm_wr_data[31:0] = dma_pic_wen ? dma_mem_wdata[31:0] : store_datafn_lo_r[31:0];
-
-   assign picm_mask_data_m[31:0] = picm_rd_data_m[31:0];
-   assign picm_rd_data_m[63:0]   = {picm_rd_data[31:0],picm_rd_data[31:0]};
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      rvdff #(1) dccm_rden_mff (.*, .din(lsu_dccm_rden_d), .dout(lsu_dccm_rden_m), .clk(lsu_c2_m_clk));
-      rvdff #(1) dccm_rden_rff (.*, .din(lsu_dccm_rden_m), .dout(lsu_dccm_rden_r), .clk(lsu_c2_r_clk));
-
-      // ECC correction flops since dccm write happens next cycle
-      // We are writing to dccm in r+1 for ecc correction since fast_int needs to be blocked in decode - 1. We can probably write in r for plus0 configuration since we know ecc error in M.
-      // In that case these (_ff) flops are needed only in plus1 configuration
-      rvdff #(1) ld_double_ecc_error_rff    (.*, .din(lsu_double_ecc_error_r),   .dout(lsu_double_ecc_error_r_ff),   .clk(lsu_free_c2_clk));
-      rvdff #(1) ld_single_ecc_error_hi_rff (.*, .din(ld_single_ecc_error_hi_r_ns), .dout(ld_single_ecc_error_hi_r_ff), .clk(lsu_free_c2_clk));
-      rvdff #(1) ld_single_ecc_error_lo_rff (.*, .din(ld_single_ecc_error_lo_r_ns), .dout(ld_single_ecc_error_lo_r_ff), .clk(lsu_free_c2_clk));
-      rvdffe #(pt.DCCM_BITS) ld_sec_addr_hi_rff (.*, .din(end_addr_r[pt.DCCM_BITS-1:0]), .dout(ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk));
-      rvdffe #(pt.DCCM_BITS) ld_sec_addr_lo_rff (.*, .din(lsu_addr_r[pt.DCCM_BITS-1:0]), .dout(ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk));
-
-   end else begin: Gen_dccm_disable
-      assign lsu_dccm_rden_m = '0;
-      assign lsu_dccm_rden_r = '0;
-
-      assign lsu_double_ecc_error_r_ff = 1'b0;
-      assign ld_single_ecc_error_hi_r_ff = 1'b0;
-      assign ld_single_ecc_error_lo_r_ff = 1'b0;
-      assign ld_sec_addr_hi_r_ff[pt.DCCM_BITS-1:0] = '0;
-      assign ld_sec_addr_lo_r_ff[pt.DCCM_BITS-1:0] = '0;
-   end
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: DCCM for LSU pipe
-// Comments: Single ported memory
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-
-`define eb1_LOCAL_DCCM_RAM_TEST_PORTS    .TEST1(dccm_ext_in_pkt[i].TEST1),                      \
-                                     .RME(dccm_ext_in_pkt[i].RME),                      \
-                                     .RM(dccm_ext_in_pkt[i].RM),                        \
-                                     .LS(dccm_ext_in_pkt[i].LS),                        \
-                                     .DS(dccm_ext_in_pkt[i].DS),                        \
-                                     .SD(dccm_ext_in_pkt[i].SD),                        \
-                                     .TEST_RNM(dccm_ext_in_pkt[i].TEST_RNM),            \
-                                     .BC1(dccm_ext_in_pkt[i].BC1),                      \
-                                     .BC2(dccm_ext_in_pkt[i].BC2),                      \
-
-
-
-module eb1_lsu_dccm_mem
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-
-   input logic 	VPWR,
-   input logic		VGND,
-
-   input logic         clk,                                             // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic         active_clk,                                      // Clock only while core active.  Through two clock headers. For flops without second clock header built in.
-   input logic         rst_l,                                           // reset, active low
-   input logic         clk_override,                                    // Override non-functional clock gating
-
-   input logic         dccm_wren,                                       // write enable
-   input logic         dccm_rden,                                       // read enable
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_lo,                     // write address
-   input logic [pt.DCCM_BITS-1:0]  dccm_wr_addr_hi,                     // write address
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_lo,                     // read address
-   input logic [pt.DCCM_BITS-1:0]  dccm_rd_addr_hi,                     // read address for the upper bank in case of a misaligned access
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_lo,              // write data
-   input logic [pt.DCCM_FDATA_WIDTH-1:0]  dccm_wr_data_hi,              // write data
-   input eb1_dccm_ext_in_pkt_t  [pt.DCCM_NUM_BANKS-1:0] dccm_ext_in_pkt,    // the dccm packet from the soc
-
-   output logic [pt.DCCM_FDATA_WIDTH-1:0] dccm_rd_data_lo,              // read data from the lo bank
-   output logic [pt.DCCM_FDATA_WIDTH-1:0] dccm_rd_data_hi,              // read data from the hi bank
-
-   input  logic         scan_mode
-);
-
-
-   localparam DCCM_WIDTH_BITS = $clog2(pt.DCCM_BYTE_WIDTH);
-   localparam DCCM_INDEX_BITS = (pt.DCCM_BITS - pt.DCCM_BANK_BITS - pt.DCCM_WIDTH_BITS);
-   localparam DCCM_INDEX_DEPTH = ((pt.DCCM_SIZE)*1024)/((pt.DCCM_BYTE_WIDTH)*(pt.DCCM_NUM_BANKS));  // Depth of memory bank
-
-   logic [pt.DCCM_NUM_BANKS-1:0]                                        wren_bank;
-   logic [pt.DCCM_NUM_BANKS-1:0]                                        rden_bank;
-   logic [pt.DCCM_NUM_BANKS-1:0] [pt.DCCM_BITS-1:(pt.DCCM_BANK_BITS+2)] addr_bank;
-   logic [pt.DCCM_BITS-1:(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)]           rd_addr_even, rd_addr_odd;
-   logic                                                                rd_unaligned, wr_unaligned;
-   logic [pt.DCCM_NUM_BANKS-1:0] [pt.DCCM_FDATA_WIDTH-1:0]              dccm_bank_dout;
-   logic [pt.DCCM_FDATA_WIDTH-1:0]                                      wrdata;
-
-   logic [pt.DCCM_NUM_BANKS-1:0][pt.DCCM_FDATA_WIDTH-1:0]               wr_data_bank;
-
-   logic [(DCCM_WIDTH_BITS+pt.DCCM_BANK_BITS-1):DCCM_WIDTH_BITS]        dccm_rd_addr_lo_q;
-   logic [(DCCM_WIDTH_BITS+pt.DCCM_BANK_BITS-1):DCCM_WIDTH_BITS]        dccm_rd_addr_hi_q;
-
-   logic [pt.DCCM_NUM_BANKS-1:0]            dccm_clken;
-
-   assign rd_unaligned = (dccm_rd_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] != dccm_rd_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]);
-   assign wr_unaligned = (dccm_wr_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS] != dccm_wr_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]);
-
-   // Align the read data
-   assign dccm_rd_data_lo[pt.DCCM_FDATA_WIDTH-1:0]  = dccm_bank_dout[dccm_rd_addr_lo_q[pt.DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]][pt.DCCM_FDATA_WIDTH-1:0];
-   assign dccm_rd_data_hi[pt.DCCM_FDATA_WIDTH-1:0]  = dccm_bank_dout[dccm_rd_addr_hi_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]][pt.DCCM_FDATA_WIDTH-1:0];
-
-
-   // 8 Banks, 16KB each (2048 x 72)
-   for (genvar i=0; i<pt.DCCM_NUM_BANKS; i++) begin: mem_bank
-      assign  wren_bank[i]        = dccm_wren & ((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) | (dccm_wr_addr_lo[2+:pt.DCCM_BANK_BITS] == i));
-      assign  rden_bank[i]        = dccm_rden & ((dccm_rd_addr_hi[2+:pt.DCCM_BANK_BITS] == i) | (dccm_rd_addr_lo[2+:pt.DCCM_BANK_BITS] == i));
-      assign  addr_bank[i][(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] = wren_bank[i] ? (((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & wr_unaligned) ?
-                                                                                                        dccm_wr_addr_hi[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] :
-                                                                                                        dccm_wr_addr_lo[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS])  :
-                                                                                                  (((dccm_rd_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & rd_unaligned) ?
-                                                                                                        dccm_rd_addr_hi[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS] :
-                                                                                                        dccm_rd_addr_lo[(pt.DCCM_BANK_BITS+DCCM_WIDTH_BITS)+:DCCM_INDEX_BITS]);
-
-      assign wr_data_bank[i]     = ((dccm_wr_addr_hi[2+:pt.DCCM_BANK_BITS] == i) & wr_unaligned) ? dccm_wr_data_hi[pt.DCCM_FDATA_WIDTH-1:0] : dccm_wr_data_lo[pt.DCCM_FDATA_WIDTH-1:0];
-
-      // clock gating section
-      assign  dccm_clken[i] = (wren_bank[i] | rden_bank[i] | clk_override) ;
-      // end clock gating section
-
-
-
-      if (DCCM_INDEX_DEPTH == 32768) begin : dccm
-         ram_32768x39  dccm_bank (
-                                  // Primary ports
-                                  .ME(dccm_clken[i]),
-                                  .CLK(clk),
-                                  .WE(wren_bank[i]),
-                                  .ADR(addr_bank[i]),
-                                  .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .ROP ( ),
-                                  // These are used by SoC
-                                  `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                  .*
-                                  );
-      end
-      else if (DCCM_INDEX_DEPTH == 16384) begin : dccm
-         ram_16384x39  dccm_bank (
-                                  // Primary ports
-                                  .ME(dccm_clken[i]),
-                                  .CLK(clk),
-                                  .WE(wren_bank[i]),
-                                  .ADR(addr_bank[i]),
-                                  .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                  .ROP ( ),
-                                  // These are used by SoC
-                                  `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                  .*
-                                  );
-      end
-      else if (DCCM_INDEX_DEPTH == 8192) begin : dccm
-         ram_8192x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 4096) begin : dccm
-         ram_4096x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 3072) begin : dccm
-         ram_3072x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 2048) begin : dccm
-         ram_2048x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-      end
-      else if (DCCM_INDEX_DEPTH == 1024) begin : dccm
-         /*ram_1024x39  dccm_bank (
-                                 // Primary ports
-                                 .ME(dccm_clken[i]),
-                                 .CLK(clk),
-                                 .WE(wren_bank[i]),
-                                 .ADR(addr_bank[i]),
-                                 .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                 .ROP ( ),
-                                 // These are used by SoC
-                                 `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                 .*
-                                 );
-                                 */
-                                 sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									
-    									.vccd1(VPWR),
-    									.vssd1(VGND),
-    									
-									.clk0(clk),
-									.csb0(~dccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(wr_data_bank[i]),
-									.dout0(dccm_bank_dout[i]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-    				   );
-      end
-      else if (DCCM_INDEX_DEPTH == 512) begin : dccm
-         ram_512x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );
-      end
-      else if (DCCM_INDEX_DEPTH == 256) begin : dccm
-         /*ram_256x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );*/
-                                sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-    									
-    									.vccd1(VPWR),
-    									.vssd1(VGND),
-    									
-									.clk0(clk),
-									.csb0(~dccm_clken[i]),
-									.web0(~wren_bank[i]),
-									.wmask0(4'hf),
-									.addr0(addr_bank[i]),
-									.din0(wr_data_bank[i][31:0]),
-									.dout0(dccm_bank_dout[i][31:0]),
-    									.clk1(clk),
-    									.csb1(1'b1),
-    									.addr1(10'h000),
-    									.dout1()
-    				   );
-      end
-      else if (DCCM_INDEX_DEPTH == 128) begin : dccm
-         ram_128x39  dccm_bank (
-                                // Primary ports
-                                .ME(dccm_clken[i]),
-                                .CLK(clk),
-                                .WE(wren_bank[i]),
-                                .ADR(addr_bank[i]),
-                                .D(wr_data_bank[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .Q(dccm_bank_dout[i][pt.DCCM_FDATA_WIDTH-1:0]),
-                                .ROP ( ),
-                                // These are used by SoC
-                                `eb1_LOCAL_DCCM_RAM_TEST_PORTS
-                                .*
-                                );
-      end
-
-
-   end : mem_bank
-
-   // Flops
-   rvdff  #(pt.DCCM_BANK_BITS) rd_addr_lo_ff (.*, .din(dccm_rd_addr_lo[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .dout(dccm_rd_addr_lo_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .clk(active_clk));
-   rvdff  #(pt.DCCM_BANK_BITS) rd_addr_hi_ff (.*, .din(dccm_rd_addr_hi[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .dout(dccm_rd_addr_hi_q[DCCM_WIDTH_BITS+:pt.DCCM_BANK_BITS]), .clk(active_clk));
-
-`undef eb1_LOCAL_DCCM_RAM_TEST_PORTS
-
-endmodule // eb1_lsu_dccm_mem
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Top level file for load store unit
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-module eb1_lsu_ecc
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-(
-   input logic                           clk,                // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-   input logic                           lsu_c2_r_clk,       // clock
-   input logic                           clk_override,       // Override non-functional clock gating
-   input logic                           rst_l,              // reset, active low
-   input logic                           scan_mode,          // scan mode
-
-   input eb1_lsu_pkt_t                  lsu_pkt_m,          // packet in m
-   input eb1_lsu_pkt_t                  lsu_pkt_r,          // packet in r
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  stbuf_data_any,
-
-   input logic                           dec_tlu_core_ecc_disable,  // disables the ecc computation and error flagging
-
-   input logic                           lsu_dccm_rden_r,          // dccm rden
-   input logic                           addr_in_dccm_r,           // address in dccm
-   input logic  [pt.DCCM_BITS-1:0]       lsu_addr_r,               // start address
-   input logic  [pt.DCCM_BITS-1:0]       end_addr_r,               // end address
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_hi_r,          // data from the dccm
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_lo_r,          // data from the dccm
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_hi_r,       // data from the dccm + ecc
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_lo_r,       // data from the dccm + ecc
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_r,            // corrected dccm data R-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r,            // corrected dccm data R-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_r_ff,         // corrected dccm data R+1 stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_r_ff,         // corrected dccm data R+1 stage
-
-   input logic                           ld_single_ecc_error_r,     // ld has a single ecc error
-   input logic                           ld_single_ecc_error_r_ff,  // ld has a single ecc error
-   input logic                           lsu_dccm_rden_m,           // dccm rden
-   input logic                           addr_in_dccm_m,            // address in dccm
-   input logic  [pt.DCCM_BITS-1:0]       lsu_addr_m,                // start address
-   input logic  [pt.DCCM_BITS-1:0]       end_addr_m,                // end address
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_hi_m,           // raw data from mem
-   input logic  [pt.DCCM_DATA_WIDTH-1:0] dccm_rdata_lo_m,           // raw data from mem
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_hi_m,        // ecc read out from mem
-   input logic  [pt.DCCM_ECC_WIDTH-1:0]  dccm_data_ecc_lo_m,        // ecc read out from mem
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_hi_m,             // corrected dccm data M-stage
-   output logic [pt.DCCM_DATA_WIDTH-1:0] sec_data_lo_m,             // corrected dccm data M-stage
-
-   input logic                           dma_dccm_wen,              // Perform DMA writes only for word/dword
-   input logic  [31:0]                   dma_dccm_wdata_lo,         // Shifted dma data to lower bits to make it consistent to lsu stores
-   input logic  [31:0]                   dma_dccm_wdata_hi,         // Shifted dma data to lower bits to make it consistent to lsu stores
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  dma_dccm_wdata_ecc_hi,     // ECC bits for the DMA wdata
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  dma_dccm_wdata_ecc_lo,     // ECC bits for the DMA wdata
-
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  stbuf_ecc_any,             // Encoded data with ECC bits
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_hi_r_ff,      // Encoded data with ECC bits
-   output logic [pt.DCCM_ECC_WIDTH-1:0]  sec_data_ecc_lo_r_ff,      // Encoded data with ECC bits
-
-   output logic                          single_ecc_error_hi_r,                   // sec detected
-   output logic                          single_ecc_error_lo_r,                   // sec detected on lower dccm bank
-   output logic                          lsu_single_ecc_error_r,                  // or of the 2
-   output logic                          lsu_double_ecc_error_r,                   // double error detected
-
-   output logic                          lsu_single_ecc_error_m,                  // or of the 2
-   output logic                          lsu_double_ecc_error_m                   // double error detected
-
- );
-
-   logic                           is_ldst_r;
-   logic                           is_ldst_hi_any, is_ldst_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  dccm_wdata_hi_any, dccm_wdata_lo_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]  dccm_wdata_ecc_hi_any, dccm_wdata_ecc_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  dccm_rdata_hi_any, dccm_rdata_lo_any;
-   logic [pt.DCCM_ECC_WIDTH-1:0]   dccm_data_ecc_hi_any, dccm_data_ecc_lo_any;
-   logic [pt.DCCM_DATA_WIDTH-1:0]  sec_data_hi_any, sec_data_lo_any;
-   logic                           single_ecc_error_hi_any, single_ecc_error_lo_any;
-   logic                           double_ecc_error_hi_any, double_ecc_error_lo_any;
-
-   logic                           double_ecc_error_hi_m, double_ecc_error_lo_m;
-   logic                           double_ecc_error_hi_r, double_ecc_error_lo_r;
-
-   logic [6:0]                     ecc_out_hi_nc, ecc_out_lo_nc;
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic        ldst_dual_m, ldst_dual_r;
-      logic        is_ldst_m;
-      logic        is_ldst_hi_r, is_ldst_lo_r;
-
-      assign ldst_dual_r                                 = (lsu_addr_r[2] != end_addr_r[2]);
-      assign is_ldst_r                                   = lsu_pkt_r.valid & (lsu_pkt_r.load | lsu_pkt_r.store) & addr_in_dccm_r & lsu_dccm_rden_r;
-      assign is_ldst_lo_r                                = is_ldst_r & ~dec_tlu_core_ecc_disable;
-      assign is_ldst_hi_r                                = is_ldst_r & ldst_dual_r & ~dec_tlu_core_ecc_disable;   // Always check the ECC Hi/Lo for DMA since we don't align for DMA
-
-      assign is_ldst_hi_any                              = is_ldst_hi_r;
-      assign dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_hi_r[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_hi_r[pt.DCCM_ECC_WIDTH-1:0];
-      assign is_ldst_lo_any                              = is_ldst_lo_r;
-      assign dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_lo_r[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_lo_r[pt.DCCM_ECC_WIDTH-1:0];
-
-      assign sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign single_ecc_error_hi_r                       = single_ecc_error_hi_any;
-      assign double_ecc_error_hi_r                       = double_ecc_error_hi_any;
-      assign sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign single_ecc_error_lo_r                       = single_ecc_error_lo_any;
-      assign double_ecc_error_lo_r                       = double_ecc_error_lo_any;
-
-      assign lsu_single_ecc_error_r                      = single_ecc_error_hi_r | single_ecc_error_lo_r;
-      assign lsu_double_ecc_error_r                      = double_ecc_error_hi_r | double_ecc_error_lo_r;
-
-   end else begin: L2U_Plus1_0
-
-      logic        ldst_dual_m;
-      logic        is_ldst_m;
-      logic        is_ldst_hi_m, is_ldst_lo_m;
-
-      assign ldst_dual_m                                 = (lsu_addr_m[2] != end_addr_m[2]);
-      assign is_ldst_m                                   = lsu_pkt_m.valid & (lsu_pkt_m.load | lsu_pkt_m.store) & addr_in_dccm_m & lsu_dccm_rden_m;
-      assign is_ldst_lo_m                                = is_ldst_m & ~dec_tlu_core_ecc_disable;
-      assign is_ldst_hi_m                                = is_ldst_m & (ldst_dual_m | lsu_pkt_m.dma) & ~dec_tlu_core_ecc_disable;   // Always check the ECC Hi/Lo for DMA since we don't align for DMA
-
-      assign is_ldst_hi_any                              = is_ldst_hi_m;
-      assign dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_hi_m[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_hi_m[pt.DCCM_ECC_WIDTH-1:0];
-      assign is_ldst_lo_any                              = is_ldst_lo_m;
-      assign dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]   = dccm_rdata_lo_m[pt.DCCM_DATA_WIDTH-1:0];
-      assign dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0] = dccm_data_ecc_lo_m[pt.DCCM_ECC_WIDTH-1:0];
-
-      assign sec_data_hi_m[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign double_ecc_error_hi_m                       = double_ecc_error_hi_any;
-      assign sec_data_lo_m[pt.DCCM_DATA_WIDTH-1:0]       = sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0];
-      assign double_ecc_error_lo_m                       = double_ecc_error_lo_any;
-
-      assign lsu_single_ecc_error_m                      = single_ecc_error_hi_any | single_ecc_error_lo_any;
-      assign lsu_double_ecc_error_m                      = double_ecc_error_hi_m   | double_ecc_error_lo_m;
-
-      // Flops
-      rvdff  #(1) lsu_single_ecc_err_r    (.din(lsu_single_ecc_error_m), .dout(lsu_single_ecc_error_r), .clk(lsu_c2_r_clk), .*);
-      rvdff  #(1) lsu_double_ecc_err_r    (.din(lsu_double_ecc_error_m), .dout(lsu_double_ecc_error_r), .clk(lsu_c2_r_clk), .*);
-      rvdff  #(.WIDTH(1)) ldst_sec_lo_rff (.din(single_ecc_error_lo_any),  .dout(single_ecc_error_lo_r),  .clk(lsu_c2_r_clk), .*);
-      rvdff  #(.WIDTH(1)) ldst_sec_hi_rff (.din(single_ecc_error_hi_any),  .dout(single_ecc_error_hi_r),  .clk(lsu_c2_r_clk), .*);
-      rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_hi_rff (.din(sec_data_hi_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_single_ecc_error_m | clk_override), .*);
-      rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_lo_rff (.din(sec_data_lo_m[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .en(lsu_single_ecc_error_m | clk_override), .*);
-
-   end
-
-   // Logic for ECC generation during write
-   assign dccm_wdata_lo_any[pt.DCCM_DATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0] : (dma_dccm_wen ? dma_dccm_wdata_lo[pt.DCCM_DATA_WIDTH-1:0] : stbuf_data_any[pt.DCCM_DATA_WIDTH-1:0]);
-   assign dccm_wdata_hi_any[pt.DCCM_DATA_WIDTH-1:0] = ld_single_ecc_error_r_ff ? sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0] : (dma_dccm_wen ? dma_dccm_wdata_hi[pt.DCCM_DATA_WIDTH-1:0] : 32'h0);
-
-   assign sec_data_ecc_hi_r_ff[pt.DCCM_ECC_WIDTH-1:0]  = dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign sec_data_ecc_lo_r_ff[pt.DCCM_ECC_WIDTH-1:0]  = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign stbuf_ecc_any[pt.DCCM_ECC_WIDTH-1:0]         = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign dma_dccm_wdata_ecc_hi[pt.DCCM_ECC_WIDTH-1:0] = dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0];
-   assign dma_dccm_wdata_ecc_lo[pt.DCCM_ECC_WIDTH-1:0] = dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0];
-
-   // Instantiate ECC blocks
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-
-      //Detect/Repair for Hi
-      rvecc_decode lsu_ecc_decode_hi (
-         // Inputs
-         .en(is_ldst_hi_any),
-         .sed_ded (1'b0),    // 1 : means only detection
-         .din(dccm_rdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_in(dccm_data_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0]),
-         // Outputs
-         .dout(sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_out (ecc_out_hi_nc[6:0]),
-         .single_ecc_error(single_ecc_error_hi_any),
-         .double_ecc_error(double_ecc_error_hi_any),
-         .*
-      );
-
-      //Detect/Repair for Lo
-      rvecc_decode lsu_ecc_decode_lo (
-         // Inputs
-         .en(is_ldst_lo_any),
-         .sed_ded (1'b0),    // 1 : means only detection
-         .din(dccm_rdata_lo_any[pt.DCCM_DATA_WIDTH-1:0] ),
-         .ecc_in(dccm_data_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0]),
-         // Outputs
-         .dout(sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0]),
-         .ecc_out (ecc_out_lo_nc[6:0]),
-         .single_ecc_error(single_ecc_error_lo_any),
-         .double_ecc_error(double_ecc_error_lo_any),
-         .*
-      );
-
-      rvecc_encode lsu_ecc_encode_hi (
-         //Inputs
-         .din(dccm_wdata_hi_any[pt.DCCM_DATA_WIDTH-1:0]),
-         //Outputs
-         .ecc_out(dccm_wdata_ecc_hi_any[pt.DCCM_ECC_WIDTH-1:0]),
-         .*
-      );
-      rvecc_encode lsu_ecc_encode_lo (
-         //Inputs
-         .din(dccm_wdata_lo_any[pt.DCCM_DATA_WIDTH-1:0]),
-         //Outputs
-         .ecc_out(dccm_wdata_ecc_lo_any[pt.DCCM_ECC_WIDTH-1:0]),
-         .*
-      );
-   end else begin: Gen_dccm_disable // block: Gen_dccm_enable
-      assign sec_data_hi_any[pt.DCCM_DATA_WIDTH-1:0] = '0;
-      assign sec_data_lo_any[pt.DCCM_DATA_WIDTH-1:0] = '0;
-      assign single_ecc_error_hi_any = '0;
-      assign double_ecc_error_hi_any = '0;
-      assign single_ecc_error_lo_any = '0;
-      assign double_ecc_error_lo_any = '0;
-   end
-
-   rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_hi_rplus1ff (.din(sec_data_hi_r[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_hi_r_ff[pt.DCCM_DATA_WIDTH-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk), .*);
-   rvdffe #(.WIDTH(pt.DCCM_DATA_WIDTH)) sec_data_lo_rplus1ff (.din(sec_data_lo_r[pt.DCCM_DATA_WIDTH-1:0]), .dout(sec_data_lo_r_ff[pt.DCCM_DATA_WIDTH-1:0]), .en(ld_single_ecc_error_r | clk_override), .clk(clk), .*);
-
-
-endmodule // eb1_lsu_ecc
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: LSU control
-// Comments:
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-//********************************************************************************
-module eb1_lsu_lsc_ctl
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input logic                rst_l,                     // reset, active low
-   input logic                clk_override,              // Override non-functional clock gating
-   input logic                clk,                       // Clock only while core active.  Through one clock header.  For flops with    second clock header built in.  Connected to ACTIVE_L2CLK.
-
-   // clocks per pipe
-   input logic                lsu_c1_m_clk,
-   input logic                lsu_c1_r_clk,
-   input logic                lsu_c2_m_clk,
-   input logic                lsu_c2_r_clk,
-   input logic                lsu_store_c1_m_clk,
-
-   input logic [31:0]         lsu_ld_data_r,             // Load data R-stage
-   input logic [31:0]         lsu_ld_data_corr_r,        // ECC corrected data R-stage
-   input logic                lsu_single_ecc_error_r,    // ECC single bit error R-stage
-   input logic                lsu_double_ecc_error_r,    // ECC double bit error R-stage
-
-   input logic [31:0]         lsu_ld_data_m,             // Load data M-stage
-   input logic                lsu_single_ecc_error_m,    // ECC single bit error M-stage
-   input logic                lsu_double_ecc_error_m,    // ECC double bit error M-stage
-
-   input logic                flush_m_up,                // Flush M and D stage
-   input logic                flush_r,                   // Flush R-stage
-   input logic                ldst_dual_d,               // load/store is unaligned at 32 bit boundary D-stage
-   input logic                ldst_dual_m,               // load/store is unaligned at 32 bit boundary M-stage
-   input logic                ldst_dual_r,               // load/store is unaligned at 32 bit boundary R-stage
-
-   input logic [31:0]         exu_lsu_rs1_d,             // address
-   input logic [31:0]         exu_lsu_rs2_d,             // store data
-
-   input eb1_lsu_pkt_t       lsu_p,                     // lsu control packet
-   input logic                dec_lsu_valid_raw_d,       // Raw valid for address computation
-   input logic [11:0]         dec_lsu_offset_d,          // 12b offset for load/store addresses
-
-   input  logic [31:0]        picm_mask_data_m,          // PIC data M-stage
-   input  logic [31:0]        bus_read_data_m,           // the bus return data
-   output logic [31:0]        lsu_result_m,              // lsu load data
-   output logic [31:0]        lsu_result_corr_r,         // This is the ECC corrected data going to RF
-   // lsu address down the pipe
-   output logic [31:0]        lsu_addr_d,
-   output logic [31:0]        lsu_addr_m,
-   output logic [31:0]        lsu_addr_r,
-   // lsu address down the pipe - needed to check unaligned
-   output logic [31:0]        end_addr_d,
-   output logic [31:0]        end_addr_m,
-   output logic [31:0]        end_addr_r,
-   // store data down the pipe
-   output logic [31:0]        store_data_m,
-
-   input  logic [31:0]         dec_tlu_mrac_ff,          // CSR for memory region control
-   output logic                lsu_exc_m,                // Access or misaligned fault
-   output logic                is_sideeffects_m,         // is sideffects space
-   output logic                lsu_commit_r,             // lsu instruction in r commits
-   output logic                lsu_single_ecc_error_incr,// LSU inc SB error counter
-   output eb1_lsu_error_pkt_t lsu_error_pkt_r,          // lsu exception packet
-
-   output logic [31:1]         lsu_fir_addr,             // fast interrupt address
-   output logic [1:0]          lsu_fir_error,            // Error during fast interrupt lookup
-
-   // address in dccm/pic/external per pipe stage
-   output logic               addr_in_dccm_d,
-   output logic               addr_in_dccm_m,
-   output logic               addr_in_dccm_r,
-
-   output logic               addr_in_pic_d,
-   output logic               addr_in_pic_m,
-   output logic               addr_in_pic_r,
-
-   output logic               addr_external_m,
-
-   // DMA slave
-   input logic                dma_dccm_req,
-   input logic [31:0]         dma_mem_addr,
-   input logic [2:0]          dma_mem_sz,
-   input logic                dma_mem_write,
-   input logic [63:0]         dma_mem_wdata,
-
-   // Store buffer related signals
-   output eb1_lsu_pkt_t      lsu_pkt_d,
-   output eb1_lsu_pkt_t      lsu_pkt_m,
-   output eb1_lsu_pkt_t      lsu_pkt_r,
-
-   input  logic               scan_mode                  // Scan mode
-
-   );
-
-   logic [31:3]        end_addr_pre_m, end_addr_pre_r;
-   logic [31:0]        full_addr_d;
-   logic [31:0]        full_end_addr_d;
-   logic [31:0]        lsu_rs1_d;
-   logic [11:0]        lsu_offset_d;
-   logic [31:0]        rs1_d;
-   logic [11:0]        offset_d;
-   logic [12:0]        end_addr_offset_d;
-   logic [2:0]         addr_offset_d;
-
-   logic [63:0]        dma_mem_wdata_shifted;
-   logic               addr_external_d;
-   logic               addr_external_r;
-   logic               access_fault_d, misaligned_fault_d;
-   logic               access_fault_m, misaligned_fault_m;
-
-   logic               fir_dccm_access_error_d, fir_nondccm_access_error_d;
-   logic               fir_dccm_access_error_m, fir_nondccm_access_error_m;
-
-   logic [3:0]         exc_mscause_d, exc_mscause_m;
-   logic [31:0]        rs1_d_raw;
-   logic [31:0]        store_data_d, store_data_pre_m, store_data_m_in;
-   logic [31:0]        bus_read_data_r;
-
-   eb1_lsu_pkt_t           dma_pkt_d;
-   eb1_lsu_pkt_t           lsu_pkt_m_in, lsu_pkt_r_in;
-   eb1_lsu_error_pkt_t     lsu_error_pkt_m;
-
-
-   // Premux the rs1/offset for dma
-   assign lsu_rs1_d[31:0]    = dec_lsu_valid_raw_d ? exu_lsu_rs1_d[31:0] : dma_mem_addr[31:0];
-   assign lsu_offset_d[11:0] = dec_lsu_offset_d[11:0] & {12{dec_lsu_valid_raw_d}};
-   assign rs1_d_raw[31:0]    = lsu_rs1_d[31:0];
-   assign offset_d[11:0]     = lsu_offset_d[11:0];
-
-   assign rs1_d[31:0] = (lsu_pkt_d.load_ldst_bypass_d) ? lsu_result_m[31:0] : rs1_d_raw[31:0];
-
-   // generate the ls address
-   rvlsadder   lsadder  (.rs1(rs1_d[31:0]),
-                       .offset(offset_d[11:0]),
-                       .dout(full_addr_d[31:0])
-                       );
-
-   // Module to generate the memory map of the address
-   eb1_lsu_addrcheck #(.pt(pt)) addrcheck (
-              .start_addr_d(full_addr_d[31:0]),
-              .end_addr_d(full_end_addr_d[31:0]),
-              .rs1_region_d(rs1_d[31:28]),
-              .*
-  );
-
-   // Calculate start/end address for load/store
-   assign addr_offset_d[2:0]      = ({3{lsu_pkt_d.half}} & 3'b01) | ({3{lsu_pkt_d.word}} & 3'b11) | ({3{lsu_pkt_d.dword}} & 3'b111);
-   assign end_addr_offset_d[12:0] = {offset_d[11],offset_d[11:0]} + {9'b0,addr_offset_d[2:0]};
-   assign full_end_addr_d[31:0]   = rs1_d[31:0] + {{19{end_addr_offset_d[12]}},end_addr_offset_d[12:0]};
-   assign end_addr_d[31:0]        = full_end_addr_d[31:0];
-   assign lsu_exc_m               = access_fault_m | misaligned_fault_m;
-
-   // Goes to TLU to increment the ECC error counter
-   assign lsu_single_ecc_error_incr = (lsu_single_ecc_error_r & ~lsu_double_ecc_error_r) & (lsu_commit_r | lsu_pkt_r.dma) & lsu_pkt_r.valid;
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U_Plus1_1
-      logic               access_fault_r, misaligned_fault_r;
-      logic [3:0]         exc_mscause_r;
-      logic               fir_dccm_access_error_r, fir_nondccm_access_error_r;
-
-      // Generate exception packet
-      assign lsu_error_pkt_r.exc_valid = (access_fault_r | misaligned_fault_r | lsu_double_ecc_error_r) & lsu_pkt_r.valid & ~lsu_pkt_r.dma & ~lsu_pkt_r.fast_int;
-      assign lsu_error_pkt_r.single_ecc_error = lsu_single_ecc_error_r & ~lsu_error_pkt_r.exc_valid & ~lsu_pkt_r.dma;
-      assign lsu_error_pkt_r.inst_type = lsu_pkt_r.store;
-      assign lsu_error_pkt_r.exc_type  = ~misaligned_fault_r;
-      assign lsu_error_pkt_r.mscause[3:0] = (lsu_double_ecc_error_r & ~misaligned_fault_r & ~access_fault_r) ? 4'h1 : exc_mscause_r[3:0];
-      assign lsu_error_pkt_r.addr[31:0] = lsu_addr_r[31:0];
-
-      assign lsu_fir_error[1:0] = fir_nondccm_access_error_r ? 2'b11 : (fir_dccm_access_error_r ? 2'b10 : ((lsu_pkt_r.fast_int & lsu_double_ecc_error_r) ? 2'b01 : 2'b00));
-
-      rvdff #(1) access_fault_rff             (.din(access_fault_m),             .dout(access_fault_r),             .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) misaligned_fault_rff         (.din(misaligned_fault_m),         .dout(misaligned_fault_r),         .clk(lsu_c1_r_clk), .*);
-      rvdff #(4) exc_mscause_rff              (.din(exc_mscause_m[3:0]),         .dout(exc_mscause_r[3:0]),         .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) fir_dccm_access_error_mff    (.din(fir_dccm_access_error_m),    .dout(fir_dccm_access_error_r),    .clk(lsu_c1_r_clk), .*);
-      rvdff #(1) fir_nondccm_access_error_mff (.din(fir_nondccm_access_error_m), .dout(fir_nondccm_access_error_r), .clk(lsu_c1_r_clk), .*);
-
-   end else begin: L2U_Plus1_0
-      logic [1:0] lsu_fir_error_m;
-
-      // Generate exception packet
-      assign lsu_error_pkt_m.exc_valid = (access_fault_m | misaligned_fault_m | lsu_double_ecc_error_m) & lsu_pkt_m.valid & ~lsu_pkt_m.dma & ~lsu_pkt_m.fast_int & ~flush_m_up;
-      assign lsu_error_pkt_m.single_ecc_error = lsu_single_ecc_error_m & ~lsu_error_pkt_m.exc_valid & ~lsu_pkt_m.dma;
-      assign lsu_error_pkt_m.inst_type = lsu_pkt_m.store;
-      assign lsu_error_pkt_m.exc_type  = ~misaligned_fault_m;
-      assign lsu_error_pkt_m.mscause[3:0] = (lsu_double_ecc_error_m & ~misaligned_fault_m & ~access_fault_m) ? 4'h1 : exc_mscause_m[3:0];
-      assign lsu_error_pkt_m.addr[31:0] = lsu_addr_m[31:0];
-
-      assign lsu_fir_error_m[1:0] = fir_nondccm_access_error_m ? 2'b11 : (fir_dccm_access_error_m ? 2'b10 : ((lsu_pkt_m.fast_int & lsu_double_ecc_error_m) ? 2'b01 : 2'b00));
-
-      rvdff  #(1)                             lsu_exc_valid_rff       (.*, .din(lsu_error_pkt_m.exc_valid),                        .dout(lsu_error_pkt_r.exc_valid),                        .clk(lsu_c2_r_clk));
-      rvdff  #(1)                             lsu_single_ecc_error_rff(.*, .din(lsu_error_pkt_m.single_ecc_error),                 .dout(lsu_error_pkt_r.single_ecc_error),                 .clk(lsu_c2_r_clk));
-      rvdffe #($bits(eb1_lsu_error_pkt_t)-2) lsu_error_pkt_rff       (.*, .din(lsu_error_pkt_m[$bits(eb1_lsu_error_pkt_t)-1:2]), .dout(lsu_error_pkt_r[$bits(eb1_lsu_error_pkt_t)-1:2]), .en(lsu_error_pkt_m.exc_valid | lsu_error_pkt_m.single_ecc_error | clk_override));
-      rvdff #(2)                              lsu_fir_error_rff       (.*, .din(lsu_fir_error_m[1:0]),                             .dout(lsu_fir_error[1:0]),                               .clk(lsu_c2_r_clk));
-   end
-
-   //Create DMA packet
-   always_comb begin
-      dma_pkt_d = '0;
-      dma_pkt_d.valid   = dma_dccm_req;
-      dma_pkt_d.dma     = 1'b1;
-      dma_pkt_d.store   = dma_mem_write;
-      dma_pkt_d.load    = ~dma_mem_write;
-      dma_pkt_d.by      = (dma_mem_sz[2:0] == 3'b0);
-      dma_pkt_d.half    = (dma_mem_sz[2:0] == 3'b1);
-      dma_pkt_d.word    = (dma_mem_sz[2:0] == 3'b10);
-      dma_pkt_d.dword   = (dma_mem_sz[2:0] == 3'b11);
-   end
-
-   always_comb begin
-      lsu_pkt_d = dec_lsu_valid_raw_d ? lsu_p : dma_pkt_d;
-      lsu_pkt_m_in = lsu_pkt_d;
-      lsu_pkt_r_in = lsu_pkt_m;
-
-      lsu_pkt_d.valid = (lsu_p.valid & ~(flush_m_up & ~lsu_p.fast_int)) | dma_dccm_req;
-      lsu_pkt_m_in.valid = lsu_pkt_d.valid & ~(flush_m_up & ~lsu_pkt_d.dma);
-      lsu_pkt_r_in.valid = lsu_pkt_m.valid & ~(flush_m_up & ~lsu_pkt_m.dma) ;
-   end
-
-   // C2 clock for valid and C1 for other bits of packet
-   rvdff #(1) lsu_pkt_vldmff (.*, .din(lsu_pkt_m_in.valid), .dout(lsu_pkt_m.valid), .clk(lsu_c2_m_clk));
-   rvdff #(1) lsu_pkt_vldrff (.*, .din(lsu_pkt_r_in.valid), .dout(lsu_pkt_r.valid), .clk(lsu_c2_r_clk));
-
-   rvdff #($bits(eb1_lsu_pkt_t)-1) lsu_pkt_mff (.*, .din(lsu_pkt_m_in[$bits(eb1_lsu_pkt_t)-1:1]), .dout(lsu_pkt_m[$bits(eb1_lsu_pkt_t)-1:1]), .clk(lsu_c1_m_clk));
-   rvdff #($bits(eb1_lsu_pkt_t)-1) lsu_pkt_rff (.*, .din(lsu_pkt_r_in[$bits(eb1_lsu_pkt_t)-1:1]), .dout(lsu_pkt_r[$bits(eb1_lsu_pkt_t)-1:1]), .clk(lsu_c1_r_clk));
-
-
-
-   if (pt.LOAD_TO_USE_PLUS1 == 1) begin: L2U1_Plus1_1
-      logic [31:0] lsu_ld_datafn_r, lsu_ld_datafn_corr_r;
-
-      assign lsu_ld_datafn_r[31:0]  = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_r[31:0];
-      assign lsu_ld_datafn_corr_r[31:0]  = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_corr_r[31:0];
-
-      // this is really R stage signal
-      assign lsu_result_m[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_r[7:0]}) |
-                                  ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_r[15:0]}) |
-                                  ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_r[7]}}, lsu_ld_datafn_r[7:0]}) |
-                                  ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_r[15]}},lsu_ld_datafn_r[15:0]}) |
-                                  ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_r[31:0]);
-
-      // this signal is used for gpr update
-      assign lsu_result_corr_r[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_corr_r[7]}}, lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_corr_r[15]}},lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_corr_r[31:0]);
-
-   end else begin: L2U1_Plus1_0 // block: L2U1_Plus1_1
-      logic [31:0] lsu_ld_datafn_m, lsu_ld_datafn_corr_r;
-
-      assign lsu_ld_datafn_m[31:0] = addr_external_m ? bus_read_data_m[31:0] : lsu_ld_data_m[31:0];
-      assign lsu_ld_datafn_corr_r[31:0] = addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_corr_r[31:0];
-
-      // this result must look at prior stores and merge them in
-      assign lsu_result_m[31:0] = ({32{ lsu_pkt_m.unsign & lsu_pkt_m.by  }} & {24'b0,lsu_ld_datafn_m[7:0]}) |
-                                  ({32{ lsu_pkt_m.unsign & lsu_pkt_m.half}} & {16'b0,lsu_ld_datafn_m[15:0]}) |
-                                  ({32{~lsu_pkt_m.unsign & lsu_pkt_m.by  }} & {{24{  lsu_ld_datafn_m[7]}}, lsu_ld_datafn_m[7:0]}) |
-                                  ({32{~lsu_pkt_m.unsign & lsu_pkt_m.half}} & {{16{  lsu_ld_datafn_m[15]}},lsu_ld_datafn_m[15:0]}) |
-                                  ({32{lsu_pkt_m.word}}                     & lsu_ld_datafn_m[31:0]);
-
-      // this signal is used for gpr update
-      assign lsu_result_corr_r[31:0] = ({32{ lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {24'b0,lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{ lsu_pkt_r.unsign & lsu_pkt_r.half}} & {16'b0,lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.by  }} & {{24{  lsu_ld_datafn_corr_r[7]}}, lsu_ld_datafn_corr_r[7:0]}) |
-                                       ({32{~lsu_pkt_r.unsign & lsu_pkt_r.half}} & {{16{  lsu_ld_datafn_corr_r[15]}},lsu_ld_datafn_corr_r[15:0]}) |
-                                       ({32{lsu_pkt_r.word}}                     & lsu_ld_datafn_corr_r[31:0]);
-   end
-
-   // Fast interrupt address
-   assign lsu_fir_addr[31:1]    = lsu_ld_data_corr_r[31:1];
-
-   // absence load/store all 0's
-   assign lsu_addr_d[31:0] = full_addr_d[31:0];
-
-   // Interrupt as a flush source allows the WB to occur
-   assign lsu_commit_r = lsu_pkt_r.valid & (lsu_pkt_r.store | lsu_pkt_r.load) & ~flush_r & ~lsu_pkt_r.dma;
-
-   assign dma_mem_wdata_shifted[63:0] = dma_mem_wdata[63:0] >> {dma_mem_addr[2:0], 3'b000};   // Shift the dma data to lower bits to make it consistent to lsu stores
-   assign store_data_d[31:0] = dma_dccm_req ? dma_mem_wdata_shifted[31:0] : exu_lsu_rs2_d[31:0];  // Write to PIC still happens in r stage
-
-   assign store_data_m_in[31:0] = (lsu_pkt_d.store_data_bypass_d) ? lsu_result_m[31:0] : store_data_d[31:0];
-
-   assign store_data_m[31:0] = (picm_mask_data_m[31:0] | {32{~addr_in_pic_m}}) & ((lsu_pkt_m.store_data_bypass_m) ? lsu_result_m[31:0] : store_data_pre_m[31:0]);
-
-
-   rvdff #(32)  sdmff (.*, .din(store_data_m_in[31:0]), .dout(store_data_pre_m[31:0]),                       .clk(lsu_store_c1_m_clk));
-
-   rvdff #(32) samff (.*, .din(lsu_addr_d[31:0]), .dout(lsu_addr_m[31:0]), .clk(lsu_c1_m_clk));
-   rvdff #(32) sarff (.*, .din(lsu_addr_m[31:0]), .dout(lsu_addr_r[31:0]), .clk(lsu_c1_r_clk));
-
-   assign end_addr_m[31:3] = ldst_dual_m ? end_addr_pre_m[31:3] : lsu_addr_m[31:3];       // This is for power saving
-   assign end_addr_r[31:3] = ldst_dual_r ? end_addr_pre_r[31:3] : lsu_addr_r[31:3];       // This is for power saving
-
-   rvdffe #(29) end_addr_hi_mff (.*, .din(end_addr_d[31:3]), .dout(end_addr_pre_m[31:3]), .en((lsu_pkt_d.valid & ldst_dual_d) | clk_override));
-   rvdffe #(29) end_addr_hi_rff (.*, .din(end_addr_m[31:3]), .dout(end_addr_pre_r[31:3]), .en((lsu_pkt_m.valid & ldst_dual_m) | clk_override));
-
-   rvdff #(3)  end_addr_lo_mff (.*, .din(end_addr_d[2:0]), .dout(end_addr_m[2:0]), .clk(lsu_c1_m_clk));
-   rvdff #(3)  end_addr_lo_rff (.*, .din(end_addr_m[2:0]), .dout(end_addr_r[2:0]), .clk(lsu_c1_r_clk));
-
-   rvdff #(1) addr_in_dccm_mff(.din(addr_in_dccm_d), .dout(addr_in_dccm_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_in_dccm_rff(.din(addr_in_dccm_m), .dout(addr_in_dccm_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) addr_in_pic_mff(.din(addr_in_pic_d), .dout(addr_in_pic_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_in_pic_rff(.din(addr_in_pic_m), .dout(addr_in_pic_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) addr_external_mff(.din(addr_external_d), .dout(addr_external_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) addr_external_rff(.din(addr_external_m), .dout(addr_external_r), .clk(lsu_c1_r_clk), .*);
-
-   rvdff #(1) access_fault_mff     (.din(access_fault_d),     .dout(access_fault_m),     .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) misaligned_fault_mff (.din(misaligned_fault_d), .dout(misaligned_fault_m), .clk(lsu_c1_m_clk), .*);
-   rvdff #(4) exc_mscause_mff      (.din(exc_mscause_d[3:0]), .dout(exc_mscause_m[3:0]), .clk(lsu_c1_m_clk), .*);
-
-   rvdff #(1) fir_dccm_access_error_mff    (.din(fir_dccm_access_error_d),    .dout(fir_dccm_access_error_m),    .clk(lsu_c1_m_clk), .*);
-   rvdff #(1) fir_nondccm_access_error_mff (.din(fir_nondccm_access_error_d), .dout(fir_nondccm_access_error_m), .clk(lsu_c1_m_clk), .*);
-
-   rvdffe #(32) bus_read_data_r_ff (.*, .din(bus_read_data_m[31:0]), .dout(bus_read_data_r[31:0]), .en(addr_external_m | clk_override));
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: Store Buffer
-// Comments: Dual writes and single drain
-//
-//
-// DC1 -> DC2 -> DC3 -> DC4 (Commit)
-//
-// //********************************************************************************
-
-
-module eb1_lsu_stbuf
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})
-(
-   input logic                           clk,                         // core clock
-   input logic                           rst_l,                       // reset
-
-   input logic                           lsu_stbuf_c1_clk,            // stbuf clock
-   input logic                           lsu_free_c2_clk,             // free clk
-
-   // Store Buffer input
-   input logic                           store_stbuf_reqvld_r,        // core instruction goes to stbuf
-   input logic                           lsu_commit_r,                // lsu commits
-   input logic                           dec_lsu_valid_raw_d,         // Speculative decode valid
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_hi_r,             // merged data from the dccm for stores. This is used for fwding
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_data_lo_r,             // merged data from the dccm for stores. This is used for fwding
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_datafn_hi_r,           // merged data from the dccm for stores
-   input logic [pt.DCCM_DATA_WIDTH-1:0]  store_datafn_lo_r,           // merged data from the dccm for stores
-
-   // Store Buffer output
-   output logic                          stbuf_reqvld_any,            // stbuf is draining
-   output logic                          stbuf_reqvld_flushed_any,    // Top entry is flushed
-   output logic [pt.LSU_SB_BITS-1:0]     stbuf_addr_any,              // address
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_data_any,              // stbuf data
-
-   input  logic                          lsu_stbuf_commit_any,        // pop the stbuf as it commite
-   output logic                          lsu_stbuf_full_any,          // stbuf is full
-   output logic                          lsu_stbuf_empty_any,         // stbuf is empty
-   output logic                          ldst_stbuf_reqvld_r,         // needed for clocking
-
-   input logic [pt.LSU_SB_BITS-1:0]      lsu_addr_d,                  // lsu address D-stage
-   input logic [31:0]                    lsu_addr_m,                  // lsu address M-stage
-   input logic [31:0]                    lsu_addr_r,                  // lsu address R-stage
-
-   input logic [pt.LSU_SB_BITS-1:0]      end_addr_d,                  // lsu end address D-stage - needed to check unaligned
-   input logic [31:0]                    end_addr_m,                  // lsu end address M-stage - needed to check unaligned
-   input logic [31:0]                    end_addr_r,                  // lsu end address R-stage - needed to check unaligned
-
-   input logic                           ldst_dual_d, ldst_dual_m, ldst_dual_r,
-   input logic                           addr_in_dccm_m,              // address is in dccm
-   input logic                           addr_in_dccm_r,              // address is in dccm
-
-   // Forwarding signals
-   input logic                           lsu_cmpen_m,                 // needed for forwarding stbuf - load
-   input eb1_lsu_pkt_t                  lsu_pkt_m,                   // LSU packet M-stage
-   input eb1_lsu_pkt_t                  lsu_pkt_r,                   // LSU packet R-stage
-
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_hi_m,          // stbuf data
-   output logic [pt.DCCM_DATA_WIDTH-1:0] stbuf_fwddata_lo_m,          // stbuf data
-   output logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_hi_m,        // stbuf data
-   output logic [pt.DCCM_BYTE_WIDTH-1:0] stbuf_fwdbyteen_lo_m,        // stbuf data
-
-   input  logic       scan_mode                                       // Scan mode
-
-);
-
-
-   localparam DEPTH      = pt.LSU_STBUF_DEPTH;
-   localparam DATA_WIDTH = pt.DCCM_DATA_WIDTH;
-   localparam BYTE_WIDTH = pt.DCCM_BYTE_WIDTH;
-   localparam DEPTH_LOG2 = $clog2(DEPTH);
-
-   // These are the fields in the store queue
-   logic [DEPTH-1:0]                     stbuf_vld;
-   logic [DEPTH-1:0]                     stbuf_dma_kill;
-   logic [DEPTH-1:0][pt.LSU_SB_BITS-1:0] stbuf_addr;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0]     stbuf_byteen;
-   logic [DEPTH-1:0][DATA_WIDTH-1:0]     stbuf_data;
-
-   logic [DEPTH-1:0]                     sel_lo;
-   logic [DEPTH-1:0]                     stbuf_wr_en;
-   logic [DEPTH-1:0]                     stbuf_dma_kill_en;
-   logic [DEPTH-1:0]                     stbuf_reset;
-   logic [DEPTH-1:0][pt.LSU_SB_BITS-1:0] stbuf_addrin;
-   logic [DEPTH-1:0][DATA_WIDTH-1:0]     stbuf_datain;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0]     stbuf_byteenin;
-
-   logic [7:0]             store_byteen_ext_r;
-   logic [BYTE_WIDTH-1:0]  store_byteen_hi_r;
-   logic [BYTE_WIDTH-1:0]  store_byteen_lo_r;
-
-   logic                   WrPtrEn, RdPtrEn;
-   logic [DEPTH_LOG2-1:0]  WrPtr, RdPtr;
-   logic [DEPTH_LOG2-1:0]  NxtWrPtr, NxtRdPtr;
-   logic [DEPTH_LOG2-1:0]  WrPtrPlus1, WrPtrPlus2, RdPtrPlus1;
-
-   logic                   dual_stbuf_write_r;
-
-   logic                   isdccmst_m, isdccmst_r;
-   logic [3:0]             stbuf_numvld_any, stbuf_specvld_any;
-   logic [1:0]             stbuf_specvld_m, stbuf_specvld_r;
-
-   logic [pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] cmpaddr_hi_m, cmpaddr_lo_m;
-
-   // variables to detect matching from the store queue
-   logic [DEPTH-1:0]                 stbuf_match_hi, stbuf_match_lo;
-   logic [DEPTH-1:0][BYTE_WIDTH-1:0] stbuf_fwdbyteenvec_hi, stbuf_fwdbyteenvec_lo;
-   logic [DATA_WIDTH-1:0]            stbuf_fwddata_hi_pre_m, stbuf_fwddata_lo_pre_m;
-   logic [BYTE_WIDTH-1:0]            stbuf_fwdbyteen_hi_pre_m, stbuf_fwdbyteen_lo_pre_m;
-
-   // logic to detect matching from the pipe - needed for store - load forwarding
-   logic [BYTE_WIDTH-1:0]  ld_byte_rhit_lo_lo, ld_byte_rhit_hi_lo, ld_byte_rhit_lo_hi, ld_byte_rhit_hi_hi;
-   logic                   ld_addr_rhit_lo_lo, ld_addr_rhit_hi_lo, ld_addr_rhit_lo_hi, ld_addr_rhit_hi_hi;
-
-   logic [BYTE_WIDTH-1:0]  ld_byte_hit_lo, ld_byte_rhit_lo;
-   logic [BYTE_WIDTH-1:0]  ld_byte_hit_hi, ld_byte_rhit_hi;
-
-   logic [BYTE_WIDTH-1:0]  ldst_byteen_hi_r;
-   logic [BYTE_WIDTH-1:0]  ldst_byteen_lo_r;
-   // byte_en flowing down
-   logic [7:0]             ldst_byteen_r;
-   logic [7:0]             ldst_byteen_ext_r;
-   // fwd data through the pipe
-   logic [31:0]       ld_fwddata_rpipe_lo;
-   logic [31:0]       ld_fwddata_rpipe_hi;
-
-   // coalescing signals
-   logic [DEPTH-1:0]      store_matchvec_lo_r, store_matchvec_hi_r;
-   logic                  store_coalesce_lo_r, store_coalesce_hi_r;
-
-   //----------------------------------------
-   // Logic starts here
-   //----------------------------------------
-   // Create high/low byte enables
-   assign store_byteen_ext_r[7:0]           = ldst_byteen_r[7:0] << lsu_addr_r[1:0];
-   assign store_byteen_hi_r[BYTE_WIDTH-1:0] = store_byteen_ext_r[7:4] & {4{lsu_pkt_r.store}};
-   assign store_byteen_lo_r[BYTE_WIDTH-1:0] = store_byteen_ext_r[3:0] & {4{lsu_pkt_r.store}};
-
-   assign RdPtrPlus1[DEPTH_LOG2-1:0]     = RdPtr[DEPTH_LOG2-1:0] + 1'b1;
-   assign WrPtrPlus1[DEPTH_LOG2-1:0]     = WrPtr[DEPTH_LOG2-1:0] + 1'b1;
-   assign WrPtrPlus2[DEPTH_LOG2-1:0]     = WrPtr[DEPTH_LOG2-1:0] + 2'b10;
-
-   // ecc error on both hi/lo
-   assign dual_stbuf_write_r   = ldst_dual_r & store_stbuf_reqvld_r;
-   assign ldst_stbuf_reqvld_r  = ((lsu_commit_r | lsu_pkt_r.dma) & store_stbuf_reqvld_r);
-
-  // Store Buffer coalescing
-   for (genvar i=0; i<DEPTH; i++) begin: FindMatchEntry
-       assign store_matchvec_lo_r[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == lsu_addr_r[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & ~stbuf_reset[i];
-       assign store_matchvec_hi_r[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == end_addr_r[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & dual_stbuf_write_r & ~stbuf_reset[i];
-   end: FindMatchEntry
-
-   assign store_coalesce_lo_r = |store_matchvec_lo_r[DEPTH-1:0];
-   assign store_coalesce_hi_r = |store_matchvec_hi_r[DEPTH-1:0];
-
-
-   if (pt.DCCM_ENABLE == 1) begin: Gen_dccm_enable
-      // Allocate new in this entry if :
-      // 1. wrptr, single allocate, lo did not coalesce
-      // 2. wrptr, double allocate, lo ^ hi coalesced
-      // 3. wrptr + 1, double alloacte, niether lo or hi coalesced
-      // Also update if there is a hi or a lo coalesce to this entry
-      // Store Buffer instantiation
-      for (genvar i=0; i<DEPTH; i++) begin: GenStBuf
-         assign stbuf_wr_en[i] = ldst_stbuf_reqvld_r & (
-                                   ( (i == WrPtr[DEPTH_LOG2-1:0])      &  ~store_coalesce_lo_r)   |                                                    // Allocate : new Lo
-                                   ( (i == WrPtr[DEPTH_LOG2-1:0])      &  dual_stbuf_write_r & ~store_coalesce_hi_r) |                               // Allocate : only 1 new Write Either
-                                   ( (i == WrPtrPlus1[DEPTH_LOG2-1:0]) &  dual_stbuf_write_r & ~(store_coalesce_lo_r | store_coalesce_hi_r)) |     // Allocate2 : 2 new so Write Hi
-                                   store_matchvec_lo_r[i] | store_matchvec_hi_r[i]);                                                                 // Coalesced Write Lo or Hi
-         assign stbuf_reset[i] = (lsu_stbuf_commit_any | stbuf_reqvld_flushed_any) & (i == RdPtr[DEPTH_LOG2-1:0]);
-
-         // Mux select for start/end address
-         assign sel_lo[i]                         = ((~ldst_dual_r | store_stbuf_reqvld_r) & (i == WrPtr[DEPTH_LOG2-1:0]) & ~store_coalesce_lo_r) |   // lo allocated new entry
-                                                    store_matchvec_lo_r[i];                                                                                                           // lo coalesced in to this entry
-         assign stbuf_addrin[i][pt.LSU_SB_BITS-1:0]  = sel_lo[i] ? lsu_addr_r[pt.LSU_SB_BITS-1:0]       : end_addr_r[pt.LSU_SB_BITS-1:0];
-         assign stbuf_byteenin[i][BYTE_WIDTH-1:0] = sel_lo[i] ? (stbuf_byteen[i][BYTE_WIDTH-1:0] | store_byteen_lo_r[BYTE_WIDTH-1:0])          : (stbuf_byteen[i][BYTE_WIDTH-1:0] | store_byteen_hi_r[BYTE_WIDTH-1:0]);
-         assign stbuf_datain[i][7:0]              = sel_lo[i] ? ((~stbuf_byteen[i][0] | store_byteen_lo_r[0]) ? store_datafn_lo_r[7:0]   : stbuf_data[i][7:0])    :
-                                                                ((~stbuf_byteen[i][0] | store_byteen_hi_r[0]) ? store_datafn_hi_r[7:0]   : stbuf_data[i][7:0]);
-         assign stbuf_datain[i][15:8]             = sel_lo[i] ? ((~stbuf_byteen[i][1] | store_byteen_lo_r[1]) ? store_datafn_lo_r[15:8]  : stbuf_data[i][15:8])    :
-                                                                ((~stbuf_byteen[i][1] | store_byteen_hi_r[1]) ? store_datafn_hi_r[15:8]  : stbuf_data[i][15:8]);
-         assign stbuf_datain[i][23:16]            = sel_lo[i] ? ((~stbuf_byteen[i][2] | store_byteen_lo_r[2]) ? store_datafn_lo_r[23:16] : stbuf_data[i][23:16])    :
-                                                                ((~stbuf_byteen[i][2] | store_byteen_hi_r[2]) ? store_datafn_hi_r[23:16] : stbuf_data[i][23:16]);
-         assign stbuf_datain[i][31:24]            = sel_lo[i] ? ((~stbuf_byteen[i][3] | store_byteen_lo_r[3]) ? store_datafn_lo_r[31:24] : stbuf_data[i][31:24])    :
-                                                                ((~stbuf_byteen[i][3] | store_byteen_hi_r[3]) ? store_datafn_hi_r[31:24] : stbuf_data[i][31:24]);
-
-         rvdffsc #(.WIDTH(1))              stbuf_vldff         (.din(1'b1),                                .dout(stbuf_vld[i]),                      .en(stbuf_wr_en[i]), .clear(stbuf_reset[i]), .clk(lsu_free_c2_clk), .*);
-         rvdffsc #(.WIDTH(1))              stbuf_killff        (.din(1'b1),                                .dout(stbuf_dma_kill[i]),                 .en(stbuf_dma_kill_en[i]), .clear(stbuf_reset[i]), .clk(lsu_free_c2_clk), .*);
-         rvdffe  #(.WIDTH(pt.LSU_SB_BITS)) stbuf_addrff        (.din(stbuf_addrin[i][pt.LSU_SB_BITS-1:0]), .dout(stbuf_addr[i][pt.LSU_SB_BITS-1:0]), .en(stbuf_wr_en[i]), .*);
-         rvdffsc #(.WIDTH(BYTE_WIDTH))     stbuf_byteenff      (.din(stbuf_byteenin[i][BYTE_WIDTH-1:0]),   .dout(stbuf_byteen[i][BYTE_WIDTH-1:0]),   .en(stbuf_wr_en[i]), .clear(stbuf_reset[i]), .clk(lsu_stbuf_c1_clk), .*);
-         rvdffe  #(.WIDTH(DATA_WIDTH))     stbuf_dataff        (.din(stbuf_datain[i][DATA_WIDTH-1:0]),     .dout(stbuf_data[i][DATA_WIDTH-1:0]),     .en(stbuf_wr_en[i]), .*);
-      end
-   end else begin: Gen_dccm_disable
-      assign stbuf_wr_en[DEPTH-1:0] = '0;
-      assign stbuf_reset[DEPTH-1:0] = '0;
-      assign stbuf_vld[DEPTH-1:0]   = '0;
-      assign stbuf_dma_kill[DEPTH-1:0] = '0;
-      assign stbuf_addr[DEPTH-1:0]  = '0;
-      assign stbuf_byteen[DEPTH-1:0] = '0;
-      assign stbuf_data[DEPTH-1:0]   = '0;
-   end
-
-   // Store Buffer drain logic
-   assign stbuf_reqvld_flushed_any            = stbuf_vld[RdPtr] & stbuf_dma_kill[RdPtr];
-   assign stbuf_reqvld_any                    = stbuf_vld[RdPtr] & ~stbuf_dma_kill[RdPtr] & ~(|stbuf_dma_kill_en[DEPTH-1:0]);  // Don't drain if some kill bit is being set this cycle
-   assign stbuf_addr_any[pt.LSU_SB_BITS-1:0]  = stbuf_addr[RdPtr][pt.LSU_SB_BITS-1:0];
-   assign stbuf_data_any[DATA_WIDTH-1:0]      = stbuf_data[RdPtr][DATA_WIDTH-1:0];
-
-   // Update the RdPtr/WrPtr logic
-   // Need to revert the WrPtr for flush cases. Also revert the pipe WrPtrs
-   assign WrPtrEn                  = (ldst_stbuf_reqvld_r  & ~dual_stbuf_write_r & ~(store_coalesce_hi_r | store_coalesce_lo_r))  |  // writing 1 and did not coalesce
-                                     (ldst_stbuf_reqvld_r  &  dual_stbuf_write_r & ~(store_coalesce_hi_r & store_coalesce_lo_r));    // writing 2 and atleast 1 did not coalesce
-   assign NxtWrPtr[DEPTH_LOG2-1:0] = (ldst_stbuf_reqvld_r & dual_stbuf_write_r & ~(store_coalesce_hi_r | store_coalesce_lo_r)) ? WrPtrPlus2[DEPTH_LOG2-1:0] : WrPtrPlus1[DEPTH_LOG2-1:0];
-   assign RdPtrEn                  = lsu_stbuf_commit_any | stbuf_reqvld_flushed_any;
-   assign NxtRdPtr[DEPTH_LOG2-1:0] = RdPtrPlus1[DEPTH_LOG2-1:0];
-
-   always_comb begin
-      stbuf_numvld_any[3:0] = '0;
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_numvld_any[3:0] += {3'b0, stbuf_vld[i]};
-      end
-   end
-
-    // These go to store buffer to detect full
-   assign isdccmst_m = lsu_pkt_m.valid & lsu_pkt_m.store & addr_in_dccm_m & ~lsu_pkt_m.dma;
-   assign isdccmst_r = lsu_pkt_r.valid & lsu_pkt_r.store & addr_in_dccm_r & ~lsu_pkt_r.dma;
-
-   assign stbuf_specvld_m[1:0] = {1'b0,isdccmst_m} << (isdccmst_m & ldst_dual_m);
-   assign stbuf_specvld_r[1:0] = {1'b0,isdccmst_r} << (isdccmst_r & ldst_dual_r);
-   assign stbuf_specvld_any[3:0] = stbuf_numvld_any[3:0] +  {2'b0, stbuf_specvld_m[1:0]} + {2'b0, stbuf_specvld_r[1:0]};
-
-   assign lsu_stbuf_full_any  = (~ldst_dual_d & dec_lsu_valid_raw_d) ? (stbuf_specvld_any[3:0] >= DEPTH) : (stbuf_specvld_any[3:0] >= (DEPTH-1));
-   assign lsu_stbuf_empty_any = (stbuf_numvld_any[3:0] == 4'b0);
-
-   // Load forwarding logic from the store queue
-   assign cmpaddr_hi_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] = end_addr_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)];
-
-   assign cmpaddr_lo_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] = lsu_addr_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)];
-
-   always_comb begin: GenLdFwd
-      stbuf_fwdbyteen_hi_pre_m[BYTE_WIDTH-1:0]   = '0;
-      stbuf_fwdbyteen_lo_pre_m[BYTE_WIDTH-1:0]   = '0;
-
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_match_hi[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == cmpaddr_hi_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & addr_in_dccm_m;
-         stbuf_match_lo[i] = (stbuf_addr[i][pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)] == cmpaddr_lo_m[pt.LSU_SB_BITS-1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i] & ~stbuf_dma_kill[i] & addr_in_dccm_m;
-
-         // Kill the store buffer entry if there is a dma store since it already updated the dccm
-         stbuf_dma_kill_en[i] = (stbuf_match_hi[i] | stbuf_match_lo[i]) & lsu_pkt_m.valid & lsu_pkt_m.dma & lsu_pkt_m.store;
-
-         for (int j=0; j<BYTE_WIDTH; j++) begin
-            stbuf_fwdbyteenvec_hi[i][j] = stbuf_match_hi[i] & stbuf_byteen[i][j] & stbuf_vld[i];
-            stbuf_fwdbyteen_hi_pre_m[j]  |= stbuf_fwdbyteenvec_hi[i][j];
-
-            stbuf_fwdbyteenvec_lo[i][j] = stbuf_match_lo[i] & stbuf_byteen[i][j] & stbuf_vld[i];
-            stbuf_fwdbyteen_lo_pre_m[j]  |= stbuf_fwdbyteenvec_lo[i][j];
-         end
-      end
-   end // block: GenLdFwd
-
-   always_comb begin: GenLdData
-      stbuf_fwddata_hi_pre_m[31:0]   = '0;
-      stbuf_fwddata_lo_pre_m[31:0]   = '0;
-
-      for (int i=0; i<DEPTH; i++) begin
-         stbuf_fwddata_hi_pre_m[31:0] |= {32{stbuf_match_hi[i]}} & stbuf_data[i][31:0];
-         stbuf_fwddata_lo_pre_m[31:0] |= {32{stbuf_match_lo[i]}} & stbuf_data[i][31:0];
-
-      end
-
-   end // block: GenLdData
-
-   // Create Hi/Lo signals - needed for the pipe forwarding
-   assign ldst_byteen_r[7:0] =  ({8{lsu_pkt_r.by}}    & 8'b0000_0001) |
-                                 ({8{lsu_pkt_r.half}}  & 8'b0000_0011) |
-                                 ({8{lsu_pkt_r.word}}  & 8'b0000_1111) |
-                                 ({8{lsu_pkt_r.dword}} & 8'b1111_1111);
-
-   assign ldst_byteen_ext_r[7:0] = ldst_byteen_r[7:0] << lsu_addr_r[1:0];
-
-   assign ldst_byteen_hi_r[3:0]   = ldst_byteen_ext_r[7:4];
-   assign ldst_byteen_lo_r[3:0]   = ldst_byteen_ext_r[3:0];
-
-   assign ld_addr_rhit_lo_lo = (lsu_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma;
-   assign ld_addr_rhit_lo_hi = (end_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma;
-   assign ld_addr_rhit_hi_lo = (lsu_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma & dual_stbuf_write_r;
-   assign ld_addr_rhit_hi_hi = (end_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r.valid & lsu_pkt_r.store & ~lsu_pkt_r.dma & dual_stbuf_write_r;
-
-   for (genvar i=0; i<BYTE_WIDTH; i++) begin
-      assign ld_byte_rhit_lo_lo[i] = ld_addr_rhit_lo_lo & ldst_byteen_lo_r[i];
-      assign ld_byte_rhit_lo_hi[i] = ld_addr_rhit_lo_hi & ldst_byteen_lo_r[i];
-      assign ld_byte_rhit_hi_lo[i] = ld_addr_rhit_hi_lo & ldst_byteen_hi_r[i];
-      assign ld_byte_rhit_hi_hi[i] = ld_addr_rhit_hi_hi & ldst_byteen_hi_r[i];
-
-      assign ld_byte_rhit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_rhit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-       assign ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_lo[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                     ({8{ld_byte_rhit_hi_lo[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-       assign ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] = ({8{ld_byte_rhit_lo_hi[i]}} & store_data_lo_r[(8*i)+7:(8*i)]) |
-                                                     ({8{ld_byte_rhit_hi_hi[i]}} & store_data_hi_r[(8*i)+7:(8*i)]);
-
-      assign ld_byte_hit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-      assign ld_byte_hit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-
-      assign stbuf_fwdbyteen_hi_m[i] = ld_byte_hit_hi[i] | stbuf_fwdbyteen_hi_pre_m[i];
-      assign stbuf_fwdbyteen_lo_m[i] = ld_byte_hit_lo[i] | stbuf_fwdbyteen_lo_pre_m[i];
-      // // Pipe vs Store Queue priority
-      assign stbuf_fwddata_lo_m[(8*i)+7:(8*i)] = ld_byte_rhit_lo[i]    ? ld_fwddata_rpipe_lo[(8*i)+7:(8*i)] : stbuf_fwddata_lo_pre_m[(8*i)+7:(8*i)];
-      // // Pipe vs Store Queue priority
-      assign stbuf_fwddata_hi_m[(8*i)+7:(8*i)] = ld_byte_rhit_hi[i]    ? ld_fwddata_rpipe_hi[(8*i)+7:(8*i)] : stbuf_fwddata_hi_pre_m[(8*i)+7:(8*i)];
-   end
-
-   // Flops
-   rvdffs #(.WIDTH(DEPTH_LOG2)) WrPtrff (.din(NxtWrPtr[DEPTH_LOG2-1:0]), .dout(WrPtr[DEPTH_LOG2-1:0]), .en(WrPtrEn), .clk(lsu_stbuf_c1_clk), .*);
-   rvdffs #(.WIDTH(DEPTH_LOG2)) RdPtrff (.din(NxtRdPtr[DEPTH_LOG2-1:0]), .dout(RdPtr[DEPTH_LOG2-1:0]), .en(RdPtrEn), .clk(lsu_stbuf_c1_clk), .*);
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//********************************************************************************
-// $Id$
-//
-//
-// Owner:
-// Function: LSU Trigger logic
-// Comments:
-//
-//********************************************************************************
-module eb1_lsu_trigger
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-   input eb1_trigger_pkt_t [3:0] trigger_pkt_any,            // trigger packet from dec
-   input eb1_lsu_pkt_t           lsu_pkt_m,                  // lsu packet
-   input logic [31:0]             lsu_addr_m,                 // address
-   input logic [31:0]             store_data_m,               // store data
-
-   output logic [3:0]             lsu_trigger_match_m         // match result
-);
-
-   logic               trigger_enable;
-   logic [3:0][31:0]  lsu_match_data;
-   logic [3:0]        lsu_trigger_data_match;
-   logic [31:0]       store_data_trigger_m;
-   logic [31:0]       ldst_addr_trigger_m;
-
-   // Generate the trigger enable (This is for power)
-   always_comb begin
-      trigger_enable = 1'b0;
-      for (int i=0; i<4; i++) begin
-         trigger_enable |= trigger_pkt_any[i].m;
-      end
-   end
-
-   assign store_data_trigger_m[31:0] = {({16{lsu_pkt_m.word}} & store_data_m[31:16]),({8{(lsu_pkt_m.half | lsu_pkt_m.word)}} & store_data_m[15:8]), store_data_m[7:0]} & {32{trigger_enable}};
-   assign ldst_addr_trigger_m[31:0]  = lsu_addr_m[31:0] & {32{trigger_enable}};
-
-
-   for (genvar i=0; i<4; i++) begin
-      assign lsu_match_data[i][31:0] = ({32{~trigger_pkt_any[i].select}} & ldst_addr_trigger_m[31:0]) |
-                                       ({32{trigger_pkt_any[i].select & trigger_pkt_any[i].store}} & store_data_trigger_m[31:0]);
-
-      rvmaskandmatch trigger_match (.mask(trigger_pkt_any[i].tdata2[31:0]), .data(lsu_match_data[i][31:0]), .masken(trigger_pkt_any[i].match), .match(lsu_trigger_data_match[i]));
-
-      assign lsu_trigger_match_m[i] = lsu_pkt_m.valid & ~lsu_pkt_m.dma & trigger_enable &
-                                        ((trigger_pkt_any[i].store & lsu_pkt_m.store) | (trigger_pkt_any[i].load & lsu_pkt_m.load & ~trigger_pkt_any[i].select)) &
-                                        lsu_trigger_data_match[i];
-   end
-
-
-endmodule // eb1_lsu_trigger
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or it's affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License
-
-module rvjtag_tap #(
-parameter AWIDTH = 7
-)
-(
-input               trst,
-input               tck,
-input               tms,
-input               tdi,
-output   reg        tdo,
-output              tdoEnable,
-
-output [31:0]       wr_data,
-output [AWIDTH-1:0] wr_addr,
-output              wr_en,
-output              rd_en,
-
-input   [31:0]      rd_data,
-input   [1:0]       rd_status,
-
-output  reg         dmi_reset,
-output  reg         dmi_hard_reset,
-
-input   [2:0]       idle,
-input   [1:0]       dmi_stat,
-/*
---  revisionCode        : 4'h0;
---  manufacturersIdCode : 11'h45;
---  deviceIdCode        : 16'h0001;
---  order MSB .. LSB -> [4 bit version or revision] [16 bit part number] [11 bit manufacturer id] [value of 1'b1 in LSB]
-*/
-input   [31:1]      jtag_id,
-input   [3:0]       version
-);
-
-localparam USER_DR_LENGTH = AWIDTH + 34;
-
-
-reg [USER_DR_LENGTH-1:0] sr, nsr, dr;
-
-///////////////////////////////////////////////////////
-//                      Tap controller
-///////////////////////////////////////////////////////
-logic[3:0] state, nstate;
-logic [4:0] ir;
-wire jtag_reset;
-wire shift_dr;
-wire pause_dr;
-wire update_dr;
-wire capture_dr;
-wire shift_ir;
-wire pause_ir ;
-wire update_ir ;
-wire capture_ir;
-wire[1:0] dr_en;
-wire devid_sel;
-wire [5:0] abits;
-
-assign abits = AWIDTH[5:0];
-
-
-localparam TEST_LOGIC_RESET_STATE = 0;
-localparam RUN_TEST_IDLE_STATE    = 1;
-localparam SELECT_DR_SCAN_STATE   = 2;
-localparam CAPTURE_DR_STATE       = 3;
-localparam SHIFT_DR_STATE         = 4;
-localparam EXIT1_DR_STATE         = 5;
-localparam PAUSE_DR_STATE         = 6;
-localparam EXIT2_DR_STATE         = 7;
-localparam UPDATE_DR_STATE        = 8;
-localparam SELECT_IR_SCAN_STATE   = 9;
-localparam CAPTURE_IR_STATE       = 10;
-localparam SHIFT_IR_STATE         = 11;
-localparam EXIT1_IR_STATE         = 12;
-localparam PAUSE_IR_STATE         = 13;
-localparam EXIT2_IR_STATE         = 14;
-localparam UPDATE_IR_STATE        = 15;
-
-always_comb  begin
-    nstate = state;
-    case(state)
-    TEST_LOGIC_RESET_STATE: nstate = tms ? TEST_LOGIC_RESET_STATE : RUN_TEST_IDLE_STATE;
-    RUN_TEST_IDLE_STATE:    nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    SELECT_DR_SCAN_STATE:   nstate = tms ? SELECT_IR_SCAN_STATE   : CAPTURE_DR_STATE;
-    CAPTURE_DR_STATE:       nstate = tms ? EXIT1_DR_STATE         : SHIFT_DR_STATE;
-    SHIFT_DR_STATE:         nstate = tms ? EXIT1_DR_STATE         : SHIFT_DR_STATE;
-    EXIT1_DR_STATE:         nstate = tms ? UPDATE_DR_STATE        : PAUSE_DR_STATE;
-    PAUSE_DR_STATE:         nstate = tms ? EXIT2_DR_STATE         : PAUSE_DR_STATE;
-    EXIT2_DR_STATE:         nstate = tms ? UPDATE_DR_STATE        : SHIFT_DR_STATE;
-    UPDATE_DR_STATE:        nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    SELECT_IR_SCAN_STATE:   nstate = tms ? TEST_LOGIC_RESET_STATE : CAPTURE_IR_STATE;
-    CAPTURE_IR_STATE:       nstate = tms ? EXIT1_IR_STATE         : SHIFT_IR_STATE;
-    SHIFT_IR_STATE:         nstate = tms ? EXIT1_IR_STATE         : SHIFT_IR_STATE;
-    EXIT1_IR_STATE:         nstate = tms ? UPDATE_IR_STATE        : PAUSE_IR_STATE;
-    PAUSE_IR_STATE:         nstate = tms ? EXIT2_IR_STATE         : PAUSE_IR_STATE;
-    EXIT2_IR_STATE:         nstate = tms ? UPDATE_IR_STATE        : SHIFT_IR_STATE;
-    UPDATE_IR_STATE:        nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    default:                nstate = TEST_LOGIC_RESET_STATE;
-    endcase
-end
-
-always @ (posedge tck or negedge trst) begin
-    if(!trst) state <= TEST_LOGIC_RESET_STATE;
-    else state <= nstate;
-end
-
-assign jtag_reset = state == TEST_LOGIC_RESET_STATE;
-assign shift_dr   = state == SHIFT_DR_STATE;
-assign pause_dr   = state == PAUSE_DR_STATE;
-assign update_dr  = state == UPDATE_DR_STATE;
-assign capture_dr = state == CAPTURE_DR_STATE;
-assign shift_ir   = state == SHIFT_IR_STATE;
-assign pause_ir   = state == PAUSE_IR_STATE;
-assign update_ir  = state == UPDATE_IR_STATE;
-assign capture_ir = state == CAPTURE_IR_STATE;
-
-assign tdoEnable = shift_dr | shift_ir;
-
-///////////////////////////////////////////////////////
-//                      IR register
-///////////////////////////////////////////////////////
-
-always @ (negedge tck or negedge trst) begin
-   if (!trst) ir <= 5'b1;
-   else begin
-      if (jtag_reset) ir <= 5'b1;
-      else if (update_ir) ir <= (sr[4:0] == '0) ? 5'h1f :sr[4:0];
-   end
-end
-
-
-assign devid_sel  = ir == 5'b00001;
-assign dr_en[0]   = ir == 5'b10000;
-assign dr_en[1]   = ir == 5'b10001;
-
-///////////////////////////////////////////////////////
-//                      Shift register
-///////////////////////////////////////////////////////
-always @ (posedge tck or negedge trst) begin
-    if(!trst)begin
-        sr <= '0;
-    end
-    else begin
-        sr <= nsr;
-    end
-end
-
-// SR next value
-always_comb begin
-    nsr = sr;
-    case(1)
-    shift_dr:   begin
-                    case(1)
-                    dr_en[1]:   nsr = {tdi, sr[USER_DR_LENGTH-1:1]};
-
-                    dr_en[0],
-                    devid_sel:  nsr = {{USER_DR_LENGTH-32{1'b0}},tdi, sr[31:1]};
-                    default:    nsr = {{USER_DR_LENGTH-1{1'b0}},tdi}; // bypass
-                    endcase
-                end
-    capture_dr: begin
-                    nsr[0] = 1'b0;
-                    case(1)
-                    dr_en[0]:   nsr = {{USER_DR_LENGTH-15{1'b0}}, idle, dmi_stat, abits, version};
-                    dr_en[1]:   nsr = {{AWIDTH{1'b0}}, rd_data, rd_status};
-                    devid_sel:  nsr = {{USER_DR_LENGTH-32{1'b0}}, jtag_id, 1'b1};
-                    endcase
-                end
-    shift_ir:   nsr = {{USER_DR_LENGTH-5{1'b0}},tdi, sr[4:1]};
-    capture_ir: nsr = {{USER_DR_LENGTH-1{1'b0}},1'b1};
-    endcase
-end
-
-// TDO retiming
-always @ (negedge tck ) tdo <= sr[0];
-
-// DMI CS register
-always @ (posedge tck or negedge trst) begin
-    if(!trst) begin
-        dmi_hard_reset <= 1'b0;
-        dmi_reset      <= 1'b0;
-    end
-    else if (update_dr & dr_en[0]) begin
-        dmi_hard_reset <= sr[17];
-        dmi_reset      <= sr[16];
-    end
-    else begin
-        dmi_hard_reset <= 1'b0;
-        dmi_reset      <= 1'b0;
-    end
-end
-
-// DR register
-always @ (posedge tck or negedge trst) begin
-    if(!trst)
-        dr <=  '0;
-    else begin
-        if (update_dr & dr_en[1])
-            dr <= sr;
-        else
-            dr <= {dr[USER_DR_LENGTH-1:2],2'b0};
-    end
-end
-
-assign {wr_addr, wr_data, wr_en, rd_en} = dr;
-
-
-
-
-endmodule
-
-module eb1_btb_tag_hash 
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-}) (
-                       input logic [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1] pc,
-                       output logic [pt.BTB_BTAG_SIZE-1:0] hash
-                       );
-
-    assign hash = {(pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1])};
-endmodule
-
-module eb1_btb_tag_hash_fold  
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-                       input logic [pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1] pc,
-                       output logic [pt.BTB_BTAG_SIZE-1:0] hash
-                       );
-
-    assign hash = {(
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE+1] ^
-                   pc[pt.BTB_ADDR_HI+pt.BTB_BTAG_SIZE:pt.BTB_ADDR_HI+1])};
-
-endmodule
-
-module eb1_btb_addr_hash  
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-                        input logic [pt.BTB_INDEX3_HI:pt.BTB_INDEX1_LO] pc,
-                        output logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] hash
-                        );
-
-
-if(pt.BTB_FOLD2_INDEX_HASH) begin : fold2
-   assign hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = pc[pt.BTB_INDEX1_HI:pt.BTB_INDEX1_LO] ^
-                                                pc[pt.BTB_INDEX3_HI:pt.BTB_INDEX3_LO];
-end
-   else begin
-   assign hash[pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] = pc[pt.BTB_INDEX1_HI:pt.BTB_INDEX1_LO] ^
-                                                pc[pt.BTB_INDEX2_HI:pt.BTB_INDEX2_LO] ^
-                                                pc[pt.BTB_INDEX3_HI:pt.BTB_INDEX3_LO];
-end
-
-endmodule
-
-module eb1_btb_ghr_hash 
-import eb1_pkg::*;
-#(
-parameter eb1_param_t pt = '{
-	BHT_ADDR_HI            : 8'h08         ,
-	BHT_ADDR_LO            : 6'h02         ,
-	BHT_ARRAY_DEPTH        : 15'h0080       ,
-	BHT_GHR_HASH_1         : 5'h00         ,
-	BHT_GHR_SIZE           : 8'h07         ,
-	BHT_SIZE               : 16'h0100       ,
-	BITMANIP_ZBA           : 5'h00         ,
-	BITMANIP_ZBB           : 5'h00         ,
-	BITMANIP_ZBC           : 5'h00         ,
-	BITMANIP_ZBE           : 5'h00         ,
-	BITMANIP_ZBF           : 5'h00         ,
-	BITMANIP_ZBP           : 5'h00         ,
-	BITMANIP_ZBR           : 5'h00         ,
-	BITMANIP_ZBS           : 5'h00         ,
-	BTB_ADDR_HI            : 9'h008        ,
-	BTB_ADDR_LO            : 6'h02         ,
-	BTB_ARRAY_DEPTH        : 13'h0080       ,
-	BTB_BTAG_FOLD          : 5'h00         ,
-	BTB_BTAG_SIZE          : 9'h006        ,
-	BTB_ENABLE             : 5'h01         ,
-	BTB_FOLD2_INDEX_HASH   : 5'h00         ,
-	BTB_FULLYA             : 5'h00         ,
-	BTB_INDEX1_HI          : 9'h008        ,
-	BTB_INDEX1_LO          : 9'h002        ,
-	BTB_INDEX2_HI          : 9'h00F        ,
-	BTB_INDEX2_LO          : 9'h009        ,
-	BTB_INDEX3_HI          : 9'h016        ,
-	BTB_INDEX3_LO          : 9'h010        ,
-	BTB_SIZE               : 14'h0100       ,
-	BTB_TOFFSET_SIZE       : 9'h00C        ,
-	BUILD_AHB_LITE         : 4'h0          ,
-	BUILD_AXI4             : 5'h01         ,
-	BUILD_AXI_NATIVE       : 5'h01         ,
-	BUS_PRTY_DEFAULT       : 6'h03         ,
-	DATA_ACCESS_ADDR0      : 36'h000000000  ,
-	DATA_ACCESS_ADDR1      : 36'h000000000  ,
-	DATA_ACCESS_ADDR2      : 36'h000000000  ,
-	DATA_ACCESS_ADDR3      : 36'h000000000  ,
-	DATA_ACCESS_ADDR4      : 36'h000000000  ,
-	DATA_ACCESS_ADDR5      : 36'h000000000  ,
-	DATA_ACCESS_ADDR6      : 36'h000000000  ,
-	DATA_ACCESS_ADDR7      : 36'h000000000  ,
-	DATA_ACCESS_ENABLE0    : 5'h00         ,
-	DATA_ACCESS_ENABLE1    : 5'h00         ,
-	DATA_ACCESS_ENABLE2    : 5'h00         ,
-	DATA_ACCESS_ENABLE3    : 5'h00         ,
-	DATA_ACCESS_ENABLE4    : 5'h00         ,
-	DATA_ACCESS_ENABLE5    : 5'h00         ,
-	DATA_ACCESS_ENABLE6    : 5'h00         ,
-	DATA_ACCESS_ENABLE7    : 5'h00         ,
-	DATA_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	DATA_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	DCCM_BANK_BITS         : 7'h02         ,
-	DCCM_BITS              : 9'h00C        ,
-	DCCM_BYTE_WIDTH        : 7'h04         ,
-	DCCM_DATA_WIDTH        : 10'h020        ,
-	DCCM_ECC_WIDTH         : 7'h07         ,
-	DCCM_ENABLE            : 5'h01         ,
-	DCCM_FDATA_WIDTH       : 10'h027        ,
-	DCCM_INDEX_BITS        : 8'h08         ,
-	DCCM_NUM_BANKS         : 9'h004        ,
-	DCCM_REGION            : 8'h0F         ,
-	DCCM_SADR              : 36'h0F0040000  ,
-	DCCM_SIZE              : 14'h0004       ,
-	DCCM_WIDTH_BITS        : 6'h02         ,
-	DIV_BIT                : 7'h03         ,
-	DIV_NEW                : 5'h01         ,
-	DMA_BUF_DEPTH          : 7'h05         ,
-	DMA_BUS_ID             : 9'h001        ,
-	DMA_BUS_PRTY           : 6'h02         ,
-	DMA_BUS_TAG            : 8'h01         ,
-	FAST_INTERRUPT_REDIRECT : 5'h01         ,
-	ICACHE_2BANKS          : 5'h01         ,
-	ICACHE_BANK_BITS       : 7'h01         ,
-	ICACHE_BANK_HI         : 7'h03         ,
-	ICACHE_BANK_LO         : 6'h03         ,
-	ICACHE_BANK_WIDTH      : 8'h08         ,
-	ICACHE_BANKS_WAY       : 7'h02         ,
-	ICACHE_BEAT_ADDR_HI    : 8'h05         ,
-	ICACHE_BEAT_BITS       : 8'h03         ,
-	ICACHE_BYPASS_ENABLE   : 5'h01         ,
-	ICACHE_DATA_DEPTH      : 18'h00200      ,
-	ICACHE_DATA_INDEX_LO   : 7'h04         ,
-	ICACHE_DATA_WIDTH      : 11'h040        ,
-	ICACHE_ECC             : 5'h01         ,
-	ICACHE_ENABLE          : 5'h00         ,
-	ICACHE_FDATA_WIDTH     : 11'h047        ,
-	ICACHE_INDEX_HI        : 9'h00C        ,
-	ICACHE_LN_SZ           : 11'h040        ,
-	ICACHE_NUM_BEATS       : 8'h08         ,
-	ICACHE_NUM_BYPASS      : 8'h02         ,
-	ICACHE_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_NUM_WAYS        : 7'h02         ,
-	ICACHE_ONLY            : 5'h00         ,
-	ICACHE_SCND_LAST       : 8'h06         ,
-	ICACHE_SIZE            : 13'h0010       ,
-	ICACHE_STATUS_BITS     : 7'h01         ,
-	ICACHE_TAG_BYPASS_ENABLE : 5'h01         ,
-	ICACHE_TAG_DEPTH       : 17'h00080      ,
-	ICACHE_TAG_INDEX_LO    : 7'h06         ,
-	ICACHE_TAG_LO          : 9'h00D        ,
-	ICACHE_TAG_NUM_BYPASS  : 8'h02         ,
-	ICACHE_TAG_NUM_BYPASS_WIDTH : 8'h02         ,
-	ICACHE_WAYPACK         : 5'h01         ,
-	ICCM_BANK_BITS         : 7'h02         ,
-	ICCM_BANK_HI           : 9'h003        ,
-	ICCM_BANK_INDEX_LO     : 9'h004        ,
-	ICCM_BITS              : 9'h00C        ,
-	ICCM_ENABLE            : 5'h01         ,
-	ICCM_ICACHE            : 5'h00         ,
-	ICCM_INDEX_BITS        : 8'h08         ,
-	ICCM_NUM_BANKS         : 9'h004        ,
-	ICCM_ONLY              : 5'h01         ,
-	ICCM_REGION            : 8'h0A         ,
-	ICCM_SADR              : 36'h0AFFFF000  ,
-	ICCM_SIZE              : 14'h0004       ,
-	IFU_BUS_ID             : 5'h01         ,
-	IFU_BUS_PRTY           : 6'h02         ,
-	IFU_BUS_TAG            : 8'h03         ,
-	INST_ACCESS_ADDR0      : 36'h000000000  ,
-	INST_ACCESS_ADDR1      : 36'h000000000  ,
-	INST_ACCESS_ADDR2      : 36'h000000000  ,
-	INST_ACCESS_ADDR3      : 36'h000000000  ,
-	INST_ACCESS_ADDR4      : 36'h000000000  ,
-	INST_ACCESS_ADDR5      : 36'h000000000  ,
-	INST_ACCESS_ADDR6      : 36'h000000000  ,
-	INST_ACCESS_ADDR7      : 36'h000000000  ,
-	INST_ACCESS_ENABLE0    : 5'h00         ,
-	INST_ACCESS_ENABLE1    : 5'h00         ,
-	INST_ACCESS_ENABLE2    : 5'h00         ,
-	INST_ACCESS_ENABLE3    : 5'h00         ,
-	INST_ACCESS_ENABLE4    : 5'h00         ,
-	INST_ACCESS_ENABLE5    : 5'h00         ,
-	INST_ACCESS_ENABLE6    : 5'h00         ,
-	INST_ACCESS_ENABLE7    : 5'h00         ,
-	INST_ACCESS_MASK0      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK1      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK2      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK3      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK4      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK5      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK6      : 36'h0FFFFFFFF  ,
-	INST_ACCESS_MASK7      : 36'h0FFFFFFFF  ,
-	LOAD_TO_USE_PLUS1      : 5'h00         ,
-	LSU2DMA                : 5'h00         ,
-	LSU_BUS_ID             : 5'h01         ,
-	LSU_BUS_PRTY           : 6'h02         ,
-	LSU_BUS_TAG            : 8'h03         ,
-	LSU_NUM_NBLOAD         : 9'h004        ,
-	LSU_NUM_NBLOAD_WIDTH   : 7'h02         ,
-	LSU_SB_BITS            : 9'h00C        ,
-	LSU_STBUF_DEPTH        : 8'h04         ,
-	NO_ICCM_NO_ICACHE      : 5'h00         ,
-	PIC_2CYCLE             : 5'h00         ,
-	PIC_BASE_ADDR          : 36'h0F00C0000  ,
-	PIC_BITS               : 9'h00F        ,
-	PIC_INT_WORDS          : 8'h01         ,
-	PIC_REGION             : 8'h0F         ,
-	PIC_SIZE               : 13'h0020       ,
-	PIC_TOTAL_INT          : 12'h01F        ,
-	PIC_TOTAL_INT_PLUS1    : 13'h0020       ,
-	RET_STACK_SIZE         : 8'h08         ,
-	SB_BUS_ID              : 5'h01         ,
-	SB_BUS_PRTY            : 6'h02         ,
-	SB_BUS_TAG             : 8'h01         ,
-	TIMER_LEGAL_EN         : 5'h01         
-})(
-                       input logic [pt.BTB_ADDR_HI:pt.BTB_ADDR_LO] hashin,
-                       input logic [pt.BHT_GHR_SIZE-1:0] ghr,
-                       output logic [pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] hash
-                       );
-
-   // The hash function is too complex to write in verilog for all cases.
-   // The config script generates the logic string based on the bp config.
-   if(pt.BHT_GHR_HASH_1) begin : ghrhash_cfg1
-     assign hash[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = { ghr[pt.BHT_GHR_SIZE-1:pt.BTB_INDEX1_HI-1], hashin[pt.BTB_INDEX1_HI:2]^ghr[pt.BTB_INDEX1_HI-2:0]};
-   end
-   else begin : ghrhash_cfg2
-     assign hash[pt.BHT_ADDR_HI:pt.BHT_ADDR_LO] = { hashin[pt.BHT_GHR_SIZE+1:2]^ghr[pt.BHT_GHR_SIZE-1:0]};
-   end
-
-
-endmodule
-
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// all flops call the rvdff flop
-
-//// `include "common_defines.vh"
-module rvdff #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic           clk,
-     input logic                   rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin
-   assign dout = din;
-end
-
-
-   always_ff @(posedge clk or negedge rst_l) begin
-      if (rst_l == 0)
-        dout[WIDTH-1:0] <= 0;
-      else
-        dout[WIDTH-1:0] <= din[WIDTH-1:0];
-   end
-
-endmodule
-
-// rvdff with 2:1 input mux to flop din iff sel==1
-module rvdffs #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic           clk,
-     input logic                   rst_l,
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin : genblock
-   assign dout = din;
-end
-else begin : genblock
-   rvdff #(WIDTH) dffs (.din((en) ? din[WIDTH-1:0] : dout[WIDTH-1:0]), .*);
-end
-
-endmodule
-
-// rvdff with en and clear
-module rvdffsc #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic             clear,
-     input logic           clk,
-     input logic                   rst_l,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:0]          din_new;
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-   assign din_new = {WIDTH{~clear}} & (en ? din[WIDTH-1:0] : dout[WIDTH-1:0]);
-   rvdff #(WIDTH) dffsc (.din(din_new[WIDTH-1:0]), .*);
-end
-endmodule
-
-// _fpga versions
-module rvdff_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic           clk,
-     input logic           clken,
-     input logic           rawclk,
-     input logic           rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-    rvdff #(WIDTH)  dff (.*);
-end
-endmodule
-
-// rvdff with 2:1 input mux to flop din iff sel==1
-module rvdffs_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic           clk,
-     input logic           clken,
-     input logic           rawclk,
-     input logic           rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-if (SHORT == 1) begin : genblock
-   assign dout = din;
-end
-else begin : genblock
-   rvdffs #(WIDTH)   dffs (.*);
-end
-
-endmodule
-
-// rvdff with en and clear
-module rvdffsc_fpga #( parameter WIDTH=1, SHORT=0 )
-   (
-     input logic [WIDTH-1:0] din,
-     input logic             en,
-     input logic             clear,
-     input logic             clk,
-     input logic             clken,
-     input logic             rawclk,
-     input logic             rst_l,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:0]          din_new;
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-   rvdffsc #(WIDTH)   dffsc (.*);
-end
-endmodule
-
-
-module rvdffe #( parameter WIDTH=1, SHORT=0, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic           en,
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-
-if (SHORT == 1) begin : genblock
-   if (1) begin : genblock
-      assign dout = din;
-   end
-end
-else begin : genblock
-
-      rvclkhdr clkhdr ( .* );
-      rvdff #(WIDTH) dff (.*, .clk(l1clk));
-
-end // else: !if(SHORT == 1)
-
-endmodule // rvdffe
-
-
-module rvdffpcie #( parameter WIDTH=31 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-
-      rvdfflie #(.WIDTH(WIDTH), .LEFT(19)) dff (.*);
-
-endmodule
-
-// format: { LEFT, EXTRA }
-// LEFT # of bits will be done with rvdffie, all else EXTRA with rvdffe
-module rvdfflie #( parameter WIDTH=16, LEFT=8 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   localparam EXTRA = WIDTH-LEFT;
-   localparam LMSB = WIDTH-1;
-   localparam LLSB = LMSB-LEFT+1;
-   localparam XMSB = LLSB-1;
-   localparam XLSB = LLSB-EXTRA;
-
-
-
-
-      rvdffiee #(LEFT)  dff_left  (.*, .din(din[LMSB:LLSB]), .dout(dout[LMSB:LLSB]));
-
-
-      rvdffe  #(EXTRA)  dff_extra (.*, .din(din[XMSB:XLSB]), .dout(dout[XMSB:XLSB]));
-
-endmodule
-
-
-
-
-// special power flop for predict packet
-// format: { LEFT, RIGHT==31 }
-// LEFT # of bits will be done with rvdffe; RIGHT is enabled by LEFT[LSB] & en
-module rvdffppe #( parameter WIDTH=32 )
-   (
-     input  logic [WIDTH-1:0] din,
-     input  logic             clk,
-     input  logic             rst_l,
-     input  logic             en,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   localparam RIGHT = 31;
-   localparam LEFT = WIDTH - RIGHT;
-
-   localparam LMSB = WIDTH-1;
-   localparam LLSB = LMSB-LEFT+1;
-   localparam RMSB = LLSB-1;
-   localparam RLSB = LLSB-RIGHT;
-
-
-
-
-
-      rvdffe #(LEFT)     dff_left (.*, .din(din[LMSB:LLSB]), .dout(dout[LMSB:LLSB]));
-
-      rvdffe #(RIGHT)   dff_right (.*, .din(din[RMSB:RLSB]), .dout(dout[RMSB:RLSB]), .en(en & din[LLSB]));  // qualify with pret
-
-endmodule
-
-
-
-
-module rvdffie #( parameter WIDTH=1, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic             scan_mode,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-   logic                      en;
-
-
-
-
-
-
-
-
-
-      assign en = |(din ^ dout);
-
-
-      rvclkhdr clkhdr ( .* );
-      rvdff #(WIDTH) dff (.*, .clk(l1clk));
-
-
-
-
-endmodule
-
-// ie flop but it has an .en input
-module rvdffiee #( parameter WIDTH=1, OVERRIDE=0 )
-   (
-     input  logic [WIDTH-1:0] din,
-
-     input  logic           clk,
-     input  logic           rst_l,
-     input  logic           scan_mode,
-     input  logic           en,
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic                      l1clk;
-   logic                      final_en;
-
-
-
-      assign final_en = (|(din ^ dout)) & en;
-
-
-      rvdffe #(WIDTH) dff (.*,  .en(final_en));
-
-
-
-endmodule
-
-
-
-module rvsyncss #(parameter WIDTH = 251)
-   (
-     input  logic                 clk,
-     input  logic                 rst_l,
-     input  logic [WIDTH-1:0]     din,
-     output logic [WIDTH-1:0]     dout
-     );
-
-   logic [WIDTH-1:0]              din_ff1;
-
-   rvdff #(WIDTH) sync_ff1  (.*, .din (din[WIDTH-1:0]),     .dout(din_ff1[WIDTH-1:0]));
-   rvdff #(WIDTH) sync_ff2  (.*, .din (din_ff1[WIDTH-1:0]), .dout(dout[WIDTH-1:0]));
-
-endmodule // rvsyncss
-
-module rvsyncss_fpga #(parameter WIDTH = 251)
-   (
-     input  logic                 gw_clk,
-     input  logic                 rawclk,
-     input  logic                 clken,
-     input  logic                 rst_l,
-     input  logic [WIDTH-1:0]     din,
-     output logic [WIDTH-1:0]     dout
-     );
-
-   logic [WIDTH-1:0]              din_ff1;
-
-   rvdff_fpga #(WIDTH) sync_ff1  (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (din[WIDTH-1:0]),     .dout(din_ff1[WIDTH-1:0]));
-   rvdff_fpga #(WIDTH) sync_ff2  (.*, .clk(gw_clk), .rawclk(rawclk), .clken(clken), .din (din_ff1[WIDTH-1:0]), .dout(dout[WIDTH-1:0]));
-
-endmodule // rvsyncss
-
-module rvlsadder
-  (
-    input logic [31:0] rs1,
-    input logic [11:0] offset,
-
-    output logic [31:0] dout
-    );
-
-   logic                cout;
-   logic                sign;
-
-   logic [31:12]        rs1_inc;
-   logic [31:12]        rs1_dec;
-
-   assign {cout,dout[11:0]} = {1'b0,rs1[11:0]} + {1'b0,offset[11:0]};
-
-   assign rs1_inc[31:12] = rs1[31:12] + 1;
-
-   assign rs1_dec[31:12] = rs1[31:12] - 1;
-
-   assign sign = offset[11];
-
-   assign dout[31:12] = ({20{  sign ^~  cout}} &     rs1[31:12]) |
-                        ({20{ ~sign &   cout}}  & rs1_inc[31:12]) |
-                        ({20{  sign &  ~cout}}  & rs1_dec[31:12]);
-
-endmodule // rvlsadder
-
-// assume we only maintain pc[31:1] in the pipe
-
-module rvbradder
-  (
-    input [31:1] pc,
-    input [12:1] offset,
-
-    output [31:1] dout
-    );
-
-   logic          cout;
-   logic          sign;
-
-   logic [31:13]  pc_inc;
-   logic [31:13]  pc_dec;
-
-   assign {cout,dout[12:1]} = {1'b0,pc[12:1]} + {1'b0,offset[12:1]};
-
-   assign pc_inc[31:13] = pc[31:13] + 1;
-
-   assign pc_dec[31:13] = pc[31:13] - 1;
-
-   assign sign = offset[12];
-
-
-   assign dout[31:13] = ({19{  sign ^~  cout}} &     pc[31:13]) |
-                        ({19{ ~sign &   cout}}  & pc_inc[31:13]) |
-                        ({19{  sign &  ~cout}}  & pc_dec[31:13]);
-
-
-endmodule // rvbradder
-
-
-// 2s complement circuit
-module rvtwoscomp #( parameter WIDTH=32 )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [WIDTH-1:0] dout
-     );
-
-   logic [WIDTH-1:1]          dout_temp;   // holding for all other bits except for the lsb. LSB is always din
-
-   genvar                     i;
-
-   for ( i = 1; i < WIDTH; i++ )  begin : flip_after_first_one
-      assign dout_temp[i] = (|din[i-1:0]) ? ~din[i] : din[i];
-   end : flip_after_first_one
-
-   assign dout[WIDTH-1:0]  = { dout_temp[WIDTH-1:1], din[0] };
-
-endmodule  // 2'scomp
-
-// find first
-module rvfindfirst1 #( parameter WIDTH=32, SHIFT=$clog2(WIDTH) )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [SHIFT-1:0] dout
-     );
-   logic                      done;
-
-   always_comb begin
-      dout[SHIFT-1:0] = {SHIFT{1'b0}};
-      done    = 1'b0;
-
-      for ( int i = WIDTH-1; i > 0; i-- )  begin : find_first_one
-         done |= din[i];
-         dout[SHIFT-1:0] += done ? 1'b0 : 1'b1;
-      end : find_first_one
-   end
-endmodule // rvfindfirst1
-
-module rvfindfirst1hot #( parameter WIDTH=32 )
-   (
-     input logic [WIDTH-1:0] din,
-
-     output logic [WIDTH-1:0] dout
-     );
-   logic                      done;
-
-   always_comb begin
-      dout[WIDTH-1:0] = {WIDTH{1'b0}};
-      done    = 1'b0;
-      for ( int i = 0; i < WIDTH; i++ )  begin : find_first_one
-         dout[i] = ~done & din[i];
-         done   |= din[i];
-      end : find_first_one
-   end
-endmodule // rvfindfirst1hot
-
-// mask and match function matches bits after finding the first 0 position
-// find first starting from LSB. Skip that location and match the rest of the bits
-module rvmaskandmatch #( parameter WIDTH=32 )
-   (
-     input  logic [WIDTH-1:0] mask,     // this will have the mask in the lower bit positions
-     input  logic [WIDTH-1:0] data,     // this is what needs to be matched on the upper bits with the mask's upper bits
-     input  logic             masken,   // when 1 : do mask. 0 : full match
-     output logic             match
-     );
-
-   logic [WIDTH-1:0]          matchvec;
-   logic                      masken_or_fullmask;
-
-   assign masken_or_fullmask = masken &  ~(&mask[WIDTH-1:0]);
-
-   assign matchvec[0]        = masken_or_fullmask | (mask[0] == data[0]);
-   genvar                     i;
-
-   for ( i = 1; i < WIDTH; i++ )  begin : match_after_first_zero
-      assign matchvec[i] = (&mask[i-1:0] & masken_or_fullmask) ? 1'b1 : (mask[i] == data[i]);
-   end : match_after_first_zero
-
-   assign match  = &matchvec[WIDTH-1:0];    // all bits either matched or were masked off
-
-endmodule // rvmaskandmatch
-
-
-
-
-// Check if the S_ADDR <= addr < E_ADDR
-module rvrangecheck  #(CCM_SADR = 32'h0,
-                       CCM_SIZE  = 128) (
-   input  logic [31:0]   addr,                             // Address to be checked for range
-   output logic          in_range,                            // S_ADDR <= start_addr < E_ADDR
-   output logic          in_region
-);
-
-   localparam REGION_BITS = 4;
-   localparam MASK_BITS = 10 + $clog2(CCM_SIZE);
-
-   logic [31:0]          start_addr;
-   logic [3:0]           region;
-
-   assign start_addr[31:0]        = CCM_SADR;
-   assign region[REGION_BITS-1:0] = start_addr[31:(32-REGION_BITS)];
-
-   assign in_region = (addr[31:(32-REGION_BITS)] == region[REGION_BITS-1:0]);
-   if (CCM_SIZE  == 48)
-    assign in_range  = (addr[31:MASK_BITS] == start_addr[31:MASK_BITS]) & ~(&addr[MASK_BITS-1 : MASK_BITS-2]);
-   else
-    assign in_range  = (addr[31:MASK_BITS] == start_addr[31:MASK_BITS]);
-
-endmodule  // rvrangechecker
-
-// 16 bit even parity generator
-module rveven_paritygen #(WIDTH = 16)  (
-                                         input  logic [WIDTH-1:0]  data_in,         // Data
-                                         output logic              parity_out       // generated even parity
-                                         );
-
-   assign  parity_out =  ^(data_in[WIDTH-1:0]) ;
-
-endmodule  // rveven_paritygen
-
-module rveven_paritycheck #(WIDTH = 16)  (
-                                           input  logic [WIDTH-1:0]  data_in,         // Data
-                                           input  logic              parity_in,
-                                           output logic              parity_err       // Parity error
-                                           );
-
-   assign  parity_err =  ^(data_in[WIDTH-1:0]) ^ parity_in ;
-
-endmodule  // rveven_paritycheck
-
-module rvecc_encode  (
-                      input [31:0] din,
-                      output [6:0] ecc_out
-                      );
-logic [5:0] ecc_out_temp;
-
-   assign ecc_out_temp[0] = din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30];
-   assign ecc_out_temp[1] = din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31];
-   assign ecc_out_temp[2] = din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31];
-   assign ecc_out_temp[3] = din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_out_temp[4] = din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_out_temp[5] = din[26]^din[27]^din[28]^din[29]^din[30]^din[31];
-
-   assign ecc_out[6:0] = {(^din[31:0])^(^ecc_out_temp[5:0]),ecc_out_temp[5:0]};
-
-endmodule // rvecc_encode
-
-module rvecc_decode  (
-                      input         en,
-                      input [31:0]  din,
-                      input [6:0]   ecc_in,
-                      input         sed_ded,    // only do detection and no correction. Used for the I$
-                      output [31:0] dout,
-                      output [6:0]  ecc_out,
-                      output        single_ecc_error,
-                      output        double_ecc_error
-
-                      );
-
-   logic [6:0]                      ecc_check;
-   logic [38:0]                     error_mask;
-   logic [38:0]                     din_plus_parity, dout_plus_parity;
-
-   // Generate the ecc bits
-   assign ecc_check[0] = ecc_in[0]^din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30];
-   assign ecc_check[1] = ecc_in[1]^din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31];
-   assign ecc_check[2] = ecc_in[2]^din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31];
-   assign ecc_check[3] = ecc_in[3]^din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_check[4] = ecc_in[4]^din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25];
-   assign ecc_check[5] = ecc_in[5]^din[26]^din[27]^din[28]^din[29]^din[30]^din[31];
-
-   // This is the parity bit
-   assign ecc_check[6] = ((^din[31:0])^(^ecc_in[6:0])) & ~sed_ded;
-
-   assign single_ecc_error = en & (ecc_check[6:0] != 0) & ecc_check[6];   // this will never be on for sed_ded
-   assign double_ecc_error = en & (ecc_check[6:0] != 0) & ~ecc_check[6];  // all errors in the sed_ded case will be recorded as DE
-
-   // Generate the mask for error correctiong
-   for (genvar i=1; i<40; i++) begin
-      assign error_mask[i-1] = (ecc_check[5:0] == i);
-   end
-
-   // Generate the corrected data
-   assign din_plus_parity[38:0] = {ecc_in[6], din[31:26], ecc_in[5], din[25:11], ecc_in[4], din[10:4], ecc_in[3], din[3:1], ecc_in[2], din[0], ecc_in[1:0]};
-
-   assign dout_plus_parity[38:0] = single_ecc_error ? (error_mask[38:0] ^ din_plus_parity[38:0]) : din_plus_parity[38:0];
-   assign dout[31:0]             = {dout_plus_parity[37:32], dout_plus_parity[30:16], dout_plus_parity[14:8], dout_plus_parity[6:4], dout_plus_parity[2]};
-   assign ecc_out[6:0]           = {(dout_plus_parity[38] ^ (ecc_check[6:0] == 7'b1000000)), dout_plus_parity[31], dout_plus_parity[15], dout_plus_parity[7], dout_plus_parity[3], dout_plus_parity[1:0]};
-
-endmodule // rvecc_decode
-
-module rvecc_encode_64  (
-                      input [63:0] din,
-                      output [6:0] ecc_out
-                      );
-  assign ecc_out[0] = din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30]^din[32]^din[34]^din[36]^din[38]^din[40]^din[42]^din[44]^din[46]^din[48]^din[50]^din[52]^din[54]^din[56]^din[57]^din[59]^din[61]^din[63];
-
-   assign ecc_out[1] = din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31]^din[32]^din[35]^din[36]^din[39]^din[40]^din[43]^din[44]^din[47]^din[48]^din[51]^din[52]^din[55]^din[56]^din[58]^din[59]^din[62]^din[63];
-
-   assign ecc_out[2] = din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31]^din[32]^din[37]^din[38]^din[39]^din[40]^din[45]^din[46]^din[47]^din[48]^din[53]^din[54]^din[55]^din[56]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_out[3] = din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[4] = din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[5] = din[26]^din[27]^din[28]^din[29]^din[30]^din[31]^din[32]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_out[6] = din[57]^din[58]^din[59]^din[60]^din[61]^din[62]^din[63];
-
-endmodule // rvecc_encode_64
-
-
-module rvecc_decode_64  (
-                      input         en,
-                      input [63:0]  din,
-                      input [6:0]   ecc_in,
-                      output        ecc_error
-                      );
-
-   logic [6:0]                      ecc_check;
-
-   // Generate the ecc bits
-   assign ecc_check[0] = ecc_in[0]^din[0]^din[1]^din[3]^din[4]^din[6]^din[8]^din[10]^din[11]^din[13]^din[15]^din[17]^din[19]^din[21]^din[23]^din[25]^din[26]^din[28]^din[30]^din[32]^din[34]^din[36]^din[38]^din[40]^din[42]^din[44]^din[46]^din[48]^din[50]^din[52]^din[54]^din[56]^din[57]^din[59]^din[61]^din[63];
-
-   assign ecc_check[1] = ecc_in[1]^din[0]^din[2]^din[3]^din[5]^din[6]^din[9]^din[10]^din[12]^din[13]^din[16]^din[17]^din[20]^din[21]^din[24]^din[25]^din[27]^din[28]^din[31]^din[32]^din[35]^din[36]^din[39]^din[40]^din[43]^din[44]^din[47]^din[48]^din[51]^din[52]^din[55]^din[56]^din[58]^din[59]^din[62]^din[63];
-
-   assign ecc_check[2] = ecc_in[2]^din[1]^din[2]^din[3]^din[7]^din[8]^din[9]^din[10]^din[14]^din[15]^din[16]^din[17]^din[22]^din[23]^din[24]^din[25]^din[29]^din[30]^din[31]^din[32]^din[37]^din[38]^din[39]^din[40]^din[45]^din[46]^din[47]^din[48]^din[53]^din[54]^din[55]^din[56]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_check[3] = ecc_in[3]^din[4]^din[5]^din[6]^din[7]^din[8]^din[9]^din[10]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[4] = ecc_in[4]^din[11]^din[12]^din[13]^din[14]^din[15]^din[16]^din[17]^din[18]^din[19]^din[20]^din[21]^din[22]^din[23]^din[24]^din[25]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[5] = ecc_in[5]^din[26]^din[27]^din[28]^din[29]^din[30]^din[31]^din[32]^din[33]^din[34]^din[35]^din[36]^din[37]^din[38]^din[39]^din[40]^din[41]^din[42]^din[43]^din[44]^din[45]^din[46]^din[47]^din[48]^din[49]^din[50]^din[51]^din[52]^din[53]^din[54]^din[55]^din[56];
-
-   assign ecc_check[6] = ecc_in[6]^din[57]^din[58]^din[59]^din[60]^din[61]^din[62]^din[63];
-
-   assign ecc_error = en & (ecc_check[6:0] != 0);  // all errors in the sed_ded case will be recorded as DE
-
- endmodule // rvecc_decode_64
-
-// Skywater cell
-//sky130_fd_sc_hd__dlclkp_1 CG( .CLK(clk), .GCLK(l1clk), .GATE(en_i | test_en_i));
-
-
-/*module `TEC_RV_ICG 
-  (
-   input logic SE, EN, CK,
-   output Q
-   );
-
-   logic  en_ff;
-   logic  enable;
-
-   assign      enable = EN | SE;
-
-`ifdef VERILATOR
-   always @(negedge CK) begin
-      en_ff <= enable;
-   end
-`else
-   always @(CK, enable) begin
-      if(!CK)
-        en_ff = enable;
-   end
-`endif
-   assign Q = CK & en_ff;
-
-endmodule
-*/
-
-
-module rvclkhdr
-  (
-   input  logic en,
-   input  logic clk,
-   input  logic scan_mode,
-   output logic l1clk
-   );
-
-   logic   SE;
-   assign       SE = 0;
-
-   sky130_fd_sc_hd__dlclkp_1 clkhdr( .VPWR(1'b1), .VGND(1'b0), .CLK(clk), .GCLK(l1clk), .GATE(en)); /*clkhdr ( .*, .EN(en), .CK(clk), .Q(l1clk));*/
-
-endmodule // rvclkhdr
-
-
-module rvoclkhdr
-  (
-   input  logic en,
-   input  logic clk,
-   input  logic scan_mode,
-   output logic l1clk
-   );
-
-   logic   SE;
-   assign       SE = 0;
-
-
-   sky130_fd_sc_hd__dlclkp_1 clkhdr( .VPWR(1'b1), .VGND(1'b0), .CLK(clk), .GCLK(l1clk), .GATE(en)); //clkhdr ( .*, .EN(en), .CK(clk), .Q(l1clk));
-
-
-endmodule
-
-
-
-
-
-
-
-
-
diff --git a/verilog/rtl/BrqRV_EB1/design/openlane/BrqRV_EB1.v b/verilog/rtl/BrqRV_EB1/design/openlane/BrqRV_EB1.v
deleted file mode 100644
index 020487e..0000000
--- a/verilog/rtl/BrqRV_EB1/design/openlane/BrqRV_EB1.v
+++ /dev/null
@@ -1,22971 +0,0 @@
-module eb1_brqrv_wrapper (
-	VPWR,
-	VGND,
-	clk,
-	rst_l,
-	dbg_rst_l,
-	rst_vec,
-	nmi_int,
-	nmi_vec,
-	jtag_id,
-	uart_rx,
-	trace_rv_i_insn_ip,
-	trace_rv_i_address_ip,
-	trace_rv_i_valid_ip,
-	trace_rv_i_exception_ip,
-	trace_rv_i_ecause_ip,
-	trace_rv_i_interrupt_ip,
-	trace_rv_i_tval_ip,
-	lsu_axi_awvalid,
-	lsu_axi_awready,
-	lsu_axi_awid,
-	lsu_axi_awaddr,
-	lsu_axi_awregion,
-	lsu_axi_awlen,
-	lsu_axi_awsize,
-	lsu_axi_awburst,
-	lsu_axi_awlock,
-	lsu_axi_awcache,
-	lsu_axi_awprot,
-	lsu_axi_awqos,
-	lsu_axi_wvalid,
-	lsu_axi_wready,
-	lsu_axi_wdata,
-	lsu_axi_wstrb,
-	lsu_axi_wlast,
-	lsu_axi_bvalid,
-	lsu_axi_bready,
-	lsu_axi_bresp,
-	lsu_axi_bid,
-	lsu_axi_arvalid,
-	lsu_axi_arready,
-	lsu_axi_arid,
-	lsu_axi_araddr,
-	lsu_axi_arregion,
-	lsu_axi_arlen,
-	lsu_axi_arsize,
-	lsu_axi_arburst,
-	lsu_axi_arlock,
-	lsu_axi_arcache,
-	lsu_axi_arprot,
-	lsu_axi_arqos,
-	lsu_axi_rvalid,
-	lsu_axi_rready,
-	lsu_axi_rid,
-	lsu_axi_rdata,
-	lsu_axi_rresp,
-	lsu_axi_rlast,
-	ifu_axi_awvalid,
-	ifu_axi_awready,
-	ifu_axi_awid,
-	ifu_axi_awaddr,
-	ifu_axi_awregion,
-	ifu_axi_awlen,
-	ifu_axi_awsize,
-	ifu_axi_awburst,
-	ifu_axi_awlock,
-	ifu_axi_awcache,
-	ifu_axi_awprot,
-	ifu_axi_awqos,
-	ifu_axi_wvalid,
-	ifu_axi_wready,
-	ifu_axi_wdata,
-	ifu_axi_wstrb,
-	ifu_axi_wlast,
-	ifu_axi_bvalid,
-	ifu_axi_bready,
-	ifu_axi_bresp,
-	ifu_axi_bid,
-	ifu_axi_arvalid,
-	ifu_axi_arready,
-	ifu_axi_arid,
-	ifu_axi_araddr,
-	ifu_axi_arregion,
-	ifu_axi_arlen,
-	ifu_axi_arsize,
-	ifu_axi_arburst,
-	ifu_axi_arlock,
-	ifu_axi_arcache,
-	ifu_axi_arprot,
-	ifu_axi_arqos,
-	ifu_axi_rvalid,
-	ifu_axi_rready,
-	ifu_axi_rid,
-	ifu_axi_rdata,
-	ifu_axi_rresp,
-	ifu_axi_rlast,
-	sb_axi_awvalid,
-	sb_axi_awready,
-	sb_axi_awid,
-	sb_axi_awaddr,
-	sb_axi_awregion,
-	sb_axi_awlen,
-	sb_axi_awsize,
-	sb_axi_awburst,
-	sb_axi_awlock,
-	sb_axi_awcache,
-	sb_axi_awprot,
-	sb_axi_awqos,
-	sb_axi_wvalid,
-	sb_axi_wready,
-	sb_axi_wdata,
-	sb_axi_wstrb,
-	sb_axi_wlast,
-	sb_axi_bvalid,
-	sb_axi_bready,
-	sb_axi_bresp,
-	sb_axi_bid,
-	sb_axi_arvalid,
-	sb_axi_arready,
-	sb_axi_arid,
-	sb_axi_araddr,
-	sb_axi_arregion,
-	sb_axi_arlen,
-	sb_axi_arsize,
-	sb_axi_arburst,
-	sb_axi_arlock,
-	sb_axi_arcache,
-	sb_axi_arprot,
-	sb_axi_arqos,
-	sb_axi_rvalid,
-	sb_axi_rready,
-	sb_axi_rid,
-	sb_axi_rdata,
-	sb_axi_rresp,
-	sb_axi_rlast,
-	dma_axi_awvalid,
-	dma_axi_awready,
-	dma_axi_awid,
-	dma_axi_awaddr,
-	dma_axi_awsize,
-	dma_axi_awprot,
-	dma_axi_awlen,
-	dma_axi_awburst,
-	dma_axi_wvalid,
-	dma_axi_wready,
-	dma_axi_wdata,
-	dma_axi_wstrb,
-	dma_axi_wlast,
-	dma_axi_bvalid,
-	dma_axi_bready,
-	dma_axi_bresp,
-	dma_axi_bid,
-	dma_axi_arvalid,
-	dma_axi_arready,
-	dma_axi_arid,
-	dma_axi_araddr,
-	dma_axi_arsize,
-	dma_axi_arprot,
-	dma_axi_arlen,
-	dma_axi_arburst,
-	dma_axi_rvalid,
-	dma_axi_rready,
-	dma_axi_rid,
-	dma_axi_rdata,
-	dma_axi_rresp,
-	dma_axi_rlast,
-	lsu_bus_clk_en,
-	ifu_bus_clk_en,
-	dbg_bus_clk_en,
-	dma_bus_clk_en,
-	dccm_ext_in_pkt,
-	iccm_ext_in_pkt,
-	ic_data_ext_in_pkt,
-	ic_tag_ext_in_pkt,
-	timer_int,
-	soft_int,
-	extintsrc_req,
-	dec_tlu_perfcnt0,
-	dec_tlu_perfcnt1,
-	dec_tlu_perfcnt2,
-	dec_tlu_perfcnt3,
-	jtag_tck,
-	jtag_tms,
-	jtag_tdi,
-	jtag_trst_n,
-	jtag_tdo,
-	core_id,
-	mpc_debug_halt_req,
-	mpc_debug_run_req,
-	mpc_reset_run_req,
-	mpc_debug_halt_ack,
-	mpc_debug_run_ack,
-	debug_brkpt_status,
-	i_cpu_halt_req,
-	o_cpu_halt_ack,
-	o_cpu_halt_status,
-	o_debug_mode_status,
-	i_cpu_run_req,
-	o_cpu_run_ack,
-	scan_mode,
-	mbist_mode,
-	CLKS_PER_BIT
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire VPWR;
-	input wire VGND;
-	input wire clk;
-	input wire rst_l;
-	input wire dbg_rst_l;
-	input wire [31:1] rst_vec;
-	input wire nmi_int;
-	input wire [31:1] nmi_vec;
-	input wire [31:1] jtag_id;
-	input uart_rx;
-	output wire [31:0] trace_rv_i_insn_ip;
-	output wire [31:0] trace_rv_i_address_ip;
-	output wire trace_rv_i_valid_ip;
-	output wire trace_rv_i_exception_ip;
-	output wire [4:0] trace_rv_i_ecause_ip;
-	output wire trace_rv_i_interrupt_ip;
-	output wire [31:0] trace_rv_i_tval_ip;
-	output wire lsu_axi_awvalid;
-	input wire lsu_axi_awready;
-	output wire [pt[181-:8] - 1:0] lsu_axi_awid;
-	output wire [31:0] lsu_axi_awaddr;
-	output wire [3:0] lsu_axi_awregion;
-	output wire [7:0] lsu_axi_awlen;
-	output wire [2:0] lsu_axi_awsize;
-	output wire [1:0] lsu_axi_awburst;
-	output wire lsu_axi_awlock;
-	output wire [3:0] lsu_axi_awcache;
-	output wire [2:0] lsu_axi_awprot;
-	output wire [3:0] lsu_axi_awqos;
-	output wire lsu_axi_wvalid;
-	input wire lsu_axi_wready;
-	output wire [63:0] lsu_axi_wdata;
-	output wire [7:0] lsu_axi_wstrb;
-	output wire lsu_axi_wlast;
-	input wire lsu_axi_bvalid;
-	output wire lsu_axi_bready;
-	input wire [1:0] lsu_axi_bresp;
-	input wire [pt[181-:8] - 1:0] lsu_axi_bid;
-	output wire lsu_axi_arvalid;
-	input wire lsu_axi_arready;
-	output wire [pt[181-:8] - 1:0] lsu_axi_arid;
-	output wire [31:0] lsu_axi_araddr;
-	output wire [3:0] lsu_axi_arregion;
-	output wire [7:0] lsu_axi_arlen;
-	output wire [2:0] lsu_axi_arsize;
-	output wire [1:0] lsu_axi_arburst;
-	output wire lsu_axi_arlock;
-	output wire [3:0] lsu_axi_arcache;
-	output wire [2:0] lsu_axi_arprot;
-	output wire [3:0] lsu_axi_arqos;
-	input wire lsu_axi_rvalid;
-	output wire lsu_axi_rready;
-	input wire [pt[181-:8] - 1:0] lsu_axi_rid;
-	input wire [63:0] lsu_axi_rdata;
-	input wire [1:0] lsu_axi_rresp;
-	input wire lsu_axi_rlast;
-	output wire ifu_axi_awvalid;
-	input wire ifu_axi_awready;
-	output wire [pt[826-:8] - 1:0] ifu_axi_awid;
-	output wire [31:0] ifu_axi_awaddr;
-	output wire [3:0] ifu_axi_awregion;
-	output wire [7:0] ifu_axi_awlen;
-	output wire [2:0] ifu_axi_awsize;
-	output wire [1:0] ifu_axi_awburst;
-	output wire ifu_axi_awlock;
-	output wire [3:0] ifu_axi_awcache;
-	output wire [2:0] ifu_axi_awprot;
-	output wire [3:0] ifu_axi_awqos;
-	output wire ifu_axi_wvalid;
-	input wire ifu_axi_wready;
-	output wire [63:0] ifu_axi_wdata;
-	output wire [7:0] ifu_axi_wstrb;
-	output wire ifu_axi_wlast;
-	input wire ifu_axi_bvalid;
-	output wire ifu_axi_bready;
-	input wire [1:0] ifu_axi_bresp;
-	input wire [pt[826-:8] - 1:0] ifu_axi_bid;
-	output wire ifu_axi_arvalid;
-	input wire ifu_axi_arready;
-	output wire [pt[826-:8] - 1:0] ifu_axi_arid;
-	output wire [31:0] ifu_axi_araddr;
-	output wire [3:0] ifu_axi_arregion;
-	output wire [7:0] ifu_axi_arlen;
-	output wire [2:0] ifu_axi_arsize;
-	output wire [1:0] ifu_axi_arburst;
-	output wire ifu_axi_arlock;
-	output wire [3:0] ifu_axi_arcache;
-	output wire [2:0] ifu_axi_arprot;
-	output wire [3:0] ifu_axi_arqos;
-	input wire ifu_axi_rvalid;
-	output wire ifu_axi_rready;
-	input wire [pt[826-:8] - 1:0] ifu_axi_rid;
-	input wire [63:0] ifu_axi_rdata;
-	input wire [1:0] ifu_axi_rresp;
-	input wire ifu_axi_rlast;
-	output wire sb_axi_awvalid;
-	input wire sb_axi_awready;
-	output wire [pt[12-:8] - 1:0] sb_axi_awid;
-	output wire [31:0] sb_axi_awaddr;
-	output wire [3:0] sb_axi_awregion;
-	output wire [7:0] sb_axi_awlen;
-	output wire [2:0] sb_axi_awsize;
-	output wire [1:0] sb_axi_awburst;
-	output wire sb_axi_awlock;
-	output wire [3:0] sb_axi_awcache;
-	output wire [2:0] sb_axi_awprot;
-	output wire [3:0] sb_axi_awqos;
-	output wire sb_axi_wvalid;
-	input wire sb_axi_wready;
-	output wire [63:0] sb_axi_wdata;
-	output wire [7:0] sb_axi_wstrb;
-	output wire sb_axi_wlast;
-	input wire sb_axi_bvalid;
-	output wire sb_axi_bready;
-	input wire [1:0] sb_axi_bresp;
-	input wire [pt[12-:8] - 1:0] sb_axi_bid;
-	output wire sb_axi_arvalid;
-	input wire sb_axi_arready;
-	output wire [pt[12-:8] - 1:0] sb_axi_arid;
-	output wire [31:0] sb_axi_araddr;
-	output wire [3:0] sb_axi_arregion;
-	output wire [7:0] sb_axi_arlen;
-	output wire [2:0] sb_axi_arsize;
-	output wire [1:0] sb_axi_arburst;
-	output wire sb_axi_arlock;
-	output wire [3:0] sb_axi_arcache;
-	output wire [2:0] sb_axi_arprot;
-	output wire [3:0] sb_axi_arqos;
-	input wire sb_axi_rvalid;
-	output wire sb_axi_rready;
-	input wire [pt[12-:8] - 1:0] sb_axi_rid;
-	input wire [63:0] sb_axi_rdata;
-	input wire [1:0] sb_axi_rresp;
-	input wire sb_axi_rlast;
-	input wire dma_axi_awvalid;
-	output wire dma_axi_awready;
-	input wire [pt[1235-:8] - 1:0] dma_axi_awid;
-	input wire [31:0] dma_axi_awaddr;
-	input wire [2:0] dma_axi_awsize;
-	input wire [2:0] dma_axi_awprot;
-	input wire [7:0] dma_axi_awlen;
-	input wire [1:0] dma_axi_awburst;
-	input wire dma_axi_wvalid;
-	output wire dma_axi_wready;
-	input wire [63:0] dma_axi_wdata;
-	input wire [7:0] dma_axi_wstrb;
-	input wire dma_axi_wlast;
-	output wire dma_axi_bvalid;
-	input wire dma_axi_bready;
-	output wire [1:0] dma_axi_bresp;
-	output wire [pt[1235-:8] - 1:0] dma_axi_bid;
-	input wire dma_axi_arvalid;
-	output wire dma_axi_arready;
-	input wire [pt[1235-:8] - 1:0] dma_axi_arid;
-	input wire [31:0] dma_axi_araddr;
-	input wire [2:0] dma_axi_arsize;
-	input wire [2:0] dma_axi_arprot;
-	input wire [7:0] dma_axi_arlen;
-	input wire [1:0] dma_axi_arburst;
-	output wire dma_axi_rvalid;
-	input wire dma_axi_rready;
-	output wire [pt[1235-:8] - 1:0] dma_axi_rid;
-	output wire [63:0] dma_axi_rdata;
-	output wire [1:0] dma_axi_rresp;
-	output wire dma_axi_rlast;
-	input wire lsu_bus_clk_en;
-	input wire ifu_bus_clk_en;
-	input wire dbg_bus_clk_en;
-	input wire dma_bus_clk_en;
-	input wire [(pt[1342-:9] * 12) - 1:0] dccm_ext_in_pkt;
-	input wire [(pt[909-:9] * 12) - 1:0] iccm_ext_in_pkt;
-	input wire [((pt[1060-:7] * pt[1189-:7]) * 12) - 1:0] ic_data_ext_in_pkt;
-	input wire [(pt[1060-:7] * 12) - 1:0] ic_tag_ext_in_pkt;
-	input wire timer_int;
-	input wire soft_int;
-	input wire [pt[56-:12]:1] extintsrc_req;
-	output wire dec_tlu_perfcnt0;
-	output wire dec_tlu_perfcnt1;
-	output wire dec_tlu_perfcnt2;
-	output wire dec_tlu_perfcnt3;
-	input wire jtag_tck;
-	input wire jtag_tms;
-	input wire jtag_tdi;
-	input wire jtag_trst_n;
-	output wire jtag_tdo;
-	input wire [31:4] core_id;
-	input wire mpc_debug_halt_req;
-	input wire mpc_debug_run_req;
-	input wire mpc_reset_run_req;
-	output wire mpc_debug_halt_ack;
-	output wire mpc_debug_run_ack;
-	output wire debug_brkpt_status;
-	input wire i_cpu_halt_req;
-	output wire o_cpu_halt_ack;
-	output wire o_cpu_halt_status;
-	output wire o_debug_mode_status;
-	input wire i_cpu_run_req;
-	output wire o_cpu_run_ack;
-	input wire scan_mode;
-	input wire mbist_mode;
-	input [15:0] CLKS_PER_BIT;
-	wire active_l2clk;
-	wire free_l2clk;
-	wire dccm_wren;
-	wire dccm_rden;
-	wire [pt[1398-:9] - 1:0] dccm_wr_addr_lo;
-	wire [pt[1398-:9] - 1:0] dccm_wr_addr_hi;
-	wire [pt[1398-:9] - 1:0] dccm_rd_addr_lo;
-	wire [pt[1398-:9] - 1:0] dccm_rd_addr_hi;
-	wire [pt[1360-:10] - 1:0] dccm_wr_data_lo;
-	wire [pt[1360-:10] - 1:0] dccm_wr_data_hi;
-	wire [pt[1360-:10] - 1:0] dccm_rd_data_lo;
-	wire [pt[1360-:10] - 1:0] dccm_rd_data_hi;
-	wire [31:1] ic_rw_addr;
-	wire [pt[1060-:7] - 1:0] ic_wr_en;
-	wire ic_rd_en;
-	wire [pt[1060-:7] - 1:0] ic_tag_valid;
-	wire [pt[1060-:7] - 1:0] ic_rd_hit;
-	wire ic_tag_perr;
-	wire [pt[1104-:9]:3] ic_debug_addr;
-	wire ic_debug_rd_en;
-	wire ic_debug_wr_en;
-	wire ic_debug_tag_array;
-	wire [pt[1060-:7] - 1:0] ic_debug_way;
-	wire [25:0] ictag_debug_rd_data;
-	wire [(pt[1189-:7] * 71) - 1:0] ic_wr_data;
-	wire [63:0] ic_rd_data;
-	wire [70:0] ic_debug_rd_data;
-	wire [70:0] ic_debug_wr_data;
-	wire [pt[1189-:7] - 1:0] ic_eccerr;
-	wire [pt[1189-:7] - 1:0] ic_parerr;
-	wire [63:0] ic_premux_data;
-	wire ic_sel_premux_data;
-	wire [pt[936-:9] - 1:1] iccm_rw_addr;
-	wire iccm_wren;
-	wire iccm_rden;
-	wire [2:0] iccm_wr_size;
-	wire [77:0] iccm_wr_data;
-	wire iccm_buf_correct_ecc;
-	wire iccm_correction_state;
-	wire [63:0] iccm_rd_data;
-	wire [77:0] iccm_rd_data_ecc;
-	wire core_rst;
-	wire core_rst_l;
-	wire jtag_tdoEn;
-	wire dccm_clk_override;
-	wire icm_clk_override;
-	wire dec_tlu_core_ecc_disable;
-	wire [31:0] haddr;
-	wire [2:0] hburst;
-	wire hmastlock;
-	wire [3:0] hprot;
-	wire [2:0] hsize;
-	wire [1:0] htrans;
-	wire hwrite;
-	wire [63:0] hrdata;
-	wire hready;
-	wire hresp;
-	wire [31:0] lsu_haddr;
-	wire [2:0] lsu_hburst;
-	wire lsu_hmastlock;
-	wire [3:0] lsu_hprot;
-	wire [2:0] lsu_hsize;
-	wire [1:0] lsu_htrans;
-	wire lsu_hwrite;
-	wire [63:0] lsu_hwdata;
-	wire [63:0] lsu_hrdata;
-	wire lsu_hready;
-	wire lsu_hresp;
-	wire [31:0] sb_haddr;
-	wire [2:0] sb_hburst;
-	wire sb_hmastlock;
-	wire [3:0] sb_hprot;
-	wire [2:0] sb_hsize;
-	wire [1:0] sb_htrans;
-	wire sb_hwrite;
-	wire [63:0] sb_hwdata;
-	wire [63:0] sb_hrdata;
-	wire sb_hready;
-	wire sb_hresp;
-	wire dma_hsel;
-	wire [31:0] dma_haddr;
-	wire [2:0] dma_hburst;
-	wire dma_hmastlock;
-	wire [3:0] dma_hprot;
-	wire [2:0] dma_hsize;
-	wire [1:0] dma_htrans;
-	wire dma_hwrite;
-	wire [63:0] dma_hwdata;
-	wire dma_hreadyin;
-	wire [63:0] dma_hrdata;
-	wire dma_hreadyout;
-	wire dma_hresp;
-	assign hrdata[63:0] = {64 {1'sb0}};
-	assign hready = 1'b0;
-	assign hresp = 1'b0;
-	assign lsu_hrdata[63:0] = {64 {1'sb0}};
-	assign lsu_hready = 1'b0;
-	assign lsu_hresp = 1'b0;
-	assign sb_hrdata[63:0] = {64 {1'sb0}};
-	assign sb_hready = 1'b0;
-	assign sb_hresp = 1'b0;
-	assign dma_hsel = 1'b0;
-	assign dma_haddr[31:0] = {32 {1'sb0}};
-	assign dma_hburst[2:0] = {3 {1'sb0}};
-	assign dma_hmastlock = 1'b0;
-	assign dma_hprot[3:0] = {4 {1'sb0}};
-	assign dma_hsize[2:0] = {3 {1'sb0}};
-	assign dma_htrans[1:0] = {2 {1'sb0}};
-	assign dma_hwrite = 1'b0;
-	assign dma_hwdata[63:0] = {64 {1'sb0}};
-	assign dma_hreadyin = 1'b0;
-	wire dmi_reg_en;
-	wire [6:0] dmi_reg_addr;
-	wire dmi_reg_wr_en;
-	wire [31:0] dmi_reg_wdata;
-	wire [31:0] dmi_reg_rdata;
-	wire rx_dv_i;
-	wire [7:0] rx_byte_i;
-	wire iccm_instr_we;
-	wire [13:0] iccm_instr_addr;
-	wire [31:0] iccm_instr_wdata;
-	eb1_brqrv #(.pt(pt)) brqrv(
-		.clk(clk),
-		.rst_l(core_rst),
-		.dbg_rst_l(dbg_rst_l),
-		.rst_vec(rst_vec),
-		.nmi_int(nmi_int),
-		.nmi_vec(nmi_vec),
-		.core_rst_l(core_rst_l),
-		.active_l2clk(active_l2clk),
-		.free_l2clk(free_l2clk),
-		.trace_rv_i_insn_ip(trace_rv_i_insn_ip),
-		.trace_rv_i_address_ip(trace_rv_i_address_ip),
-		.trace_rv_i_valid_ip(trace_rv_i_valid_ip),
-		.trace_rv_i_exception_ip(trace_rv_i_exception_ip),
-		.trace_rv_i_ecause_ip(trace_rv_i_ecause_ip),
-		.trace_rv_i_interrupt_ip(trace_rv_i_interrupt_ip),
-		.trace_rv_i_tval_ip(trace_rv_i_tval_ip),
-		.dccm_clk_override(dccm_clk_override),
-		.icm_clk_override(icm_clk_override),
-		.dec_tlu_core_ecc_disable(dec_tlu_core_ecc_disable),
-		.i_cpu_halt_req(i_cpu_halt_req),
-		.i_cpu_run_req(i_cpu_run_req),
-		.o_cpu_halt_ack(o_cpu_halt_ack),
-		.o_cpu_halt_status(o_cpu_halt_status),
-		.o_cpu_run_ack(o_cpu_run_ack),
-		.o_debug_mode_status(o_debug_mode_status),
-		.core_id(core_id),
-		.mpc_debug_halt_req(mpc_debug_halt_req),
-		.mpc_debug_run_req(mpc_debug_run_req),
-		.mpc_reset_run_req(mpc_reset_run_req),
-		.mpc_debug_halt_ack(mpc_debug_halt_ack),
-		.mpc_debug_run_ack(mpc_debug_run_ack),
-		.debug_brkpt_status(debug_brkpt_status),
-		.dec_tlu_perfcnt0(dec_tlu_perfcnt0),
-		.dec_tlu_perfcnt1(dec_tlu_perfcnt1),
-		.dec_tlu_perfcnt2(dec_tlu_perfcnt2),
-		.dec_tlu_perfcnt3(dec_tlu_perfcnt3),
-		.dccm_wren(dccm_wren),
-		.dccm_rden(dccm_rden),
-		.dccm_wr_addr_lo(dccm_wr_addr_lo),
-		.dccm_wr_addr_hi(dccm_wr_addr_hi),
-		.dccm_rd_addr_lo(dccm_rd_addr_lo),
-		.dccm_rd_addr_hi(dccm_rd_addr_hi),
-		.dccm_wr_data_lo(dccm_wr_data_lo),
-		.dccm_wr_data_hi(dccm_wr_data_hi),
-		.dccm_rd_data_lo(dccm_rd_data_lo),
-		.dccm_rd_data_hi(dccm_rd_data_hi),
-		.iccm_rw_addr(iccm_rw_addr),
-		.iccm_wren(iccm_wren),
-		.iccm_rden(iccm_rden),
-		.iccm_wr_size(iccm_wr_size),
-		.iccm_wr_data(iccm_wr_data),
-		.iccm_buf_correct_ecc(iccm_buf_correct_ecc),
-		.iccm_correction_state(iccm_correction_state),
-		.iccm_rd_data(iccm_rd_data),
-		.iccm_rd_data_ecc(iccm_rd_data_ecc),
-		.ic_rw_addr(ic_rw_addr),
-		.ic_tag_valid(ic_tag_valid),
-		.ic_wr_en(ic_wr_en),
-		.ic_rd_en(ic_rd_en),
-		.ic_wr_data(ic_wr_data),
-		.ic_rd_data(ic_rd_data),
-		.ic_debug_rd_data(ic_debug_rd_data),
-		.ictag_debug_rd_data(ictag_debug_rd_data),
-		.ic_debug_wr_data(ic_debug_wr_data),
-		.ic_eccerr(ic_eccerr),
-		.ic_parerr(ic_parerr),
-		.ic_premux_data(ic_premux_data),
-		.ic_sel_premux_data(ic_sel_premux_data),
-		.ic_debug_addr(ic_debug_addr),
-		.ic_debug_rd_en(ic_debug_rd_en),
-		.ic_debug_wr_en(ic_debug_wr_en),
-		.ic_debug_tag_array(ic_debug_tag_array),
-		.ic_debug_way(ic_debug_way),
-		.ic_rd_hit(ic_rd_hit),
-		.ic_tag_perr(ic_tag_perr),
-		.lsu_axi_awvalid(lsu_axi_awvalid),
-		.lsu_axi_awready(lsu_axi_awready),
-		.lsu_axi_awid(lsu_axi_awid),
-		.lsu_axi_awaddr(lsu_axi_awaddr),
-		.lsu_axi_awregion(lsu_axi_awregion),
-		.lsu_axi_awlen(lsu_axi_awlen),
-		.lsu_axi_awsize(lsu_axi_awsize),
-		.lsu_axi_awburst(lsu_axi_awburst),
-		.lsu_axi_awlock(lsu_axi_awlock),
-		.lsu_axi_awcache(lsu_axi_awcache),
-		.lsu_axi_awprot(lsu_axi_awprot),
-		.lsu_axi_awqos(lsu_axi_awqos),
-		.lsu_axi_wvalid(lsu_axi_wvalid),
-		.lsu_axi_wready(lsu_axi_wready),
-		.lsu_axi_wdata(lsu_axi_wdata),
-		.lsu_axi_wstrb(lsu_axi_wstrb),
-		.lsu_axi_wlast(lsu_axi_wlast),
-		.lsu_axi_bvalid(lsu_axi_bvalid),
-		.lsu_axi_bready(lsu_axi_bready),
-		.lsu_axi_bresp(lsu_axi_bresp),
-		.lsu_axi_bid(lsu_axi_bid),
-		.lsu_axi_arvalid(lsu_axi_arvalid),
-		.lsu_axi_arready(lsu_axi_arready),
-		.lsu_axi_arid(lsu_axi_arid),
-		.lsu_axi_araddr(lsu_axi_araddr),
-		.lsu_axi_arregion(lsu_axi_arregion),
-		.lsu_axi_arlen(lsu_axi_arlen),
-		.lsu_axi_arsize(lsu_axi_arsize),
-		.lsu_axi_arburst(lsu_axi_arburst),
-		.lsu_axi_arlock(lsu_axi_arlock),
-		.lsu_axi_arcache(lsu_axi_arcache),
-		.lsu_axi_arprot(lsu_axi_arprot),
-		.lsu_axi_arqos(lsu_axi_arqos),
-		.lsu_axi_rvalid(lsu_axi_rvalid),
-		.lsu_axi_rready(lsu_axi_rready),
-		.lsu_axi_rid(lsu_axi_rid),
-		.lsu_axi_rdata(lsu_axi_rdata),
-		.lsu_axi_rresp(lsu_axi_rresp),
-		.lsu_axi_rlast(lsu_axi_rlast),
-		.ifu_axi_awvalid(ifu_axi_awvalid),
-		.ifu_axi_awready(ifu_axi_awready),
-		.ifu_axi_awid(ifu_axi_awid),
-		.ifu_axi_awaddr(ifu_axi_awaddr),
-		.ifu_axi_awregion(ifu_axi_awregion),
-		.ifu_axi_awlen(ifu_axi_awlen),
-		.ifu_axi_awsize(ifu_axi_awsize),
-		.ifu_axi_awburst(ifu_axi_awburst),
-		.ifu_axi_awlock(ifu_axi_awlock),
-		.ifu_axi_awcache(ifu_axi_awcache),
-		.ifu_axi_awprot(ifu_axi_awprot),
-		.ifu_axi_awqos(ifu_axi_awqos),
-		.ifu_axi_wvalid(ifu_axi_wvalid),
-		.ifu_axi_wready(ifu_axi_wready),
-		.ifu_axi_wdata(ifu_axi_wdata),
-		.ifu_axi_wstrb(ifu_axi_wstrb),
-		.ifu_axi_wlast(ifu_axi_wlast),
-		.ifu_axi_bvalid(ifu_axi_bvalid),
-		.ifu_axi_bready(ifu_axi_bready),
-		.ifu_axi_bresp(ifu_axi_bresp),
-		.ifu_axi_bid(ifu_axi_bid),
-		.ifu_axi_arvalid(ifu_axi_arvalid),
-		.ifu_axi_arready(ifu_axi_arready),
-		.ifu_axi_arid(ifu_axi_arid),
-		.ifu_axi_araddr(ifu_axi_araddr),
-		.ifu_axi_arregion(ifu_axi_arregion),
-		.ifu_axi_arlen(ifu_axi_arlen),
-		.ifu_axi_arsize(ifu_axi_arsize),
-		.ifu_axi_arburst(ifu_axi_arburst),
-		.ifu_axi_arlock(ifu_axi_arlock),
-		.ifu_axi_arcache(ifu_axi_arcache),
-		.ifu_axi_arprot(ifu_axi_arprot),
-		.ifu_axi_arqos(ifu_axi_arqos),
-		.ifu_axi_rvalid(ifu_axi_rvalid),
-		.ifu_axi_rready(ifu_axi_rready),
-		.ifu_axi_rid(ifu_axi_rid),
-		.ifu_axi_rdata(ifu_axi_rdata),
-		.ifu_axi_rresp(ifu_axi_rresp),
-		.ifu_axi_rlast(ifu_axi_rlast),
-		.sb_axi_awvalid(sb_axi_awvalid),
-		.sb_axi_awready(sb_axi_awready),
-		.sb_axi_awid(sb_axi_awid),
-		.sb_axi_awaddr(sb_axi_awaddr),
-		.sb_axi_awregion(sb_axi_awregion),
-		.sb_axi_awlen(sb_axi_awlen),
-		.sb_axi_awsize(sb_axi_awsize),
-		.sb_axi_awburst(sb_axi_awburst),
-		.sb_axi_awlock(sb_axi_awlock),
-		.sb_axi_awcache(sb_axi_awcache),
-		.sb_axi_awprot(sb_axi_awprot),
-		.sb_axi_awqos(sb_axi_awqos),
-		.sb_axi_wvalid(sb_axi_wvalid),
-		.sb_axi_wready(sb_axi_wready),
-		.sb_axi_wdata(sb_axi_wdata),
-		.sb_axi_wstrb(sb_axi_wstrb),
-		.sb_axi_wlast(sb_axi_wlast),
-		.sb_axi_bvalid(sb_axi_bvalid),
-		.sb_axi_bready(sb_axi_bready),
-		.sb_axi_bresp(sb_axi_bresp),
-		.sb_axi_bid(sb_axi_bid),
-		.sb_axi_arvalid(sb_axi_arvalid),
-		.sb_axi_arready(sb_axi_arready),
-		.sb_axi_arid(sb_axi_arid),
-		.sb_axi_araddr(sb_axi_araddr),
-		.sb_axi_arregion(sb_axi_arregion),
-		.sb_axi_arlen(sb_axi_arlen),
-		.sb_axi_arsize(sb_axi_arsize),
-		.sb_axi_arburst(sb_axi_arburst),
-		.sb_axi_arlock(sb_axi_arlock),
-		.sb_axi_arcache(sb_axi_arcache),
-		.sb_axi_arprot(sb_axi_arprot),
-		.sb_axi_arqos(sb_axi_arqos),
-		.sb_axi_rvalid(sb_axi_rvalid),
-		.sb_axi_rready(sb_axi_rready),
-		.sb_axi_rid(sb_axi_rid),
-		.sb_axi_rdata(sb_axi_rdata),
-		.sb_axi_rresp(sb_axi_rresp),
-		.sb_axi_rlast(sb_axi_rlast),
-		.dma_axi_awvalid(dma_axi_awvalid),
-		.dma_axi_awready(dma_axi_awready),
-		.dma_axi_awid(dma_axi_awid),
-		.dma_axi_awaddr(dma_axi_awaddr),
-		.dma_axi_awsize(dma_axi_awsize),
-		.dma_axi_awprot(dma_axi_awprot),
-		.dma_axi_awlen(dma_axi_awlen),
-		.dma_axi_awburst(dma_axi_awburst),
-		.dma_axi_wvalid(dma_axi_wvalid),
-		.dma_axi_wready(dma_axi_wready),
-		.dma_axi_wdata(dma_axi_wdata),
-		.dma_axi_wstrb(dma_axi_wstrb),
-		.dma_axi_wlast(dma_axi_wlast),
-		.dma_axi_bvalid(dma_axi_bvalid),
-		.dma_axi_bready(dma_axi_bready),
-		.dma_axi_bresp(dma_axi_bresp),
-		.dma_axi_bid(dma_axi_bid),
-		.dma_axi_arvalid(dma_axi_arvalid),
-		.dma_axi_arready(dma_axi_arready),
-		.dma_axi_arid(dma_axi_arid),
-		.dma_axi_araddr(dma_axi_araddr),
-		.dma_axi_arsize(dma_axi_arsize),
-		.dma_axi_arprot(dma_axi_arprot),
-		.dma_axi_arlen(dma_axi_arlen),
-		.dma_axi_arburst(dma_axi_arburst),
-		.dma_axi_rvalid(dma_axi_rvalid),
-		.dma_axi_rready(dma_axi_rready),
-		.dma_axi_rid(dma_axi_rid),
-		.dma_axi_rdata(dma_axi_rdata),
-		.dma_axi_rresp(dma_axi_rresp),
-		.dma_axi_rlast(dma_axi_rlast),
-		.haddr(haddr),
-		.hburst(hburst),
-		.hmastlock(hmastlock),
-		.hprot(hprot),
-		.hsize(hsize),
-		.htrans(htrans),
-		.hwrite(hwrite),
-		.hrdata(hrdata),
-		.hready(hready),
-		.hresp(hresp),
-		.lsu_haddr(lsu_haddr),
-		.lsu_hburst(lsu_hburst),
-		.lsu_hmastlock(lsu_hmastlock),
-		.lsu_hprot(lsu_hprot),
-		.lsu_hsize(lsu_hsize),
-		.lsu_htrans(lsu_htrans),
-		.lsu_hwrite(lsu_hwrite),
-		.lsu_hwdata(lsu_hwdata),
-		.lsu_hrdata(lsu_hrdata),
-		.lsu_hready(lsu_hready),
-		.lsu_hresp(lsu_hresp),
-		.sb_haddr(sb_haddr),
-		.sb_hburst(sb_hburst),
-		.sb_hmastlock(sb_hmastlock),
-		.sb_hprot(sb_hprot),
-		.sb_hsize(sb_hsize),
-		.sb_htrans(sb_htrans),
-		.sb_hwrite(sb_hwrite),
-		.sb_hwdata(sb_hwdata),
-		.sb_hrdata(sb_hrdata),
-		.sb_hready(sb_hready),
-		.sb_hresp(sb_hresp),
-		.dma_hsel(dma_hsel),
-		.dma_haddr(dma_haddr),
-		.dma_hburst(dma_hburst),
-		.dma_hmastlock(dma_hmastlock),
-		.dma_hprot(dma_hprot),
-		.dma_hsize(dma_hsize),
-		.dma_htrans(dma_htrans),
-		.dma_hwrite(dma_hwrite),
-		.dma_hwdata(dma_hwdata),
-		.dma_hreadyin(dma_hreadyin),
-		.dma_hrdata(dma_hrdata),
-		.dma_hreadyout(dma_hreadyout),
-		.dma_hresp(dma_hresp),
-		.lsu_bus_clk_en(lsu_bus_clk_en),
-		.ifu_bus_clk_en(ifu_bus_clk_en),
-		.dbg_bus_clk_en(dbg_bus_clk_en),
-		.dma_bus_clk_en(dma_bus_clk_en),
-		.dmi_reg_en(dmi_reg_en),
-		.dmi_reg_addr(dmi_reg_addr),
-		.dmi_reg_wr_en(dmi_reg_wr_en),
-		.dmi_reg_wdata(dmi_reg_wdata),
-		.dmi_reg_rdata(dmi_reg_rdata),
-		.extintsrc_req(extintsrc_req),
-		.timer_int(timer_int),
-		.soft_int(soft_int),
-		.scan_mode(scan_mode)
-	);
-	eb1_mem #(.pt(pt)) mem(
-		.clk(active_l2clk),
-		.rst_l(rst_l),
-		.iccm_rw_addr((core_rst ? iccm_rw_addr : iccm_instr_addr[10:0])),
-		.iccm_wren((core_rst ? iccm_wren : iccm_instr_we)),
-		.iccm_wr_data((core_rst ? iccm_wr_data : {7'h00, iccm_instr_wdata, 7'h00, iccm_instr_wdata})),
-		.iccm_wr_size((core_rst ? iccm_wr_size : 3'b010)),
-		.VPWR(VPWR),
-		.VGND(VGND),
-		.dccm_clk_override(dccm_clk_override),
-		.icm_clk_override(icm_clk_override),
-		.dec_tlu_core_ecc_disable(dec_tlu_core_ecc_disable),
-		.dccm_wren(dccm_wren),
-		.dccm_rden(dccm_rden),
-		.dccm_wr_addr_lo(dccm_wr_addr_lo),
-		.dccm_wr_addr_hi(dccm_wr_addr_hi),
-		.dccm_rd_addr_lo(dccm_rd_addr_lo),
-		.dccm_rd_addr_hi(dccm_rd_addr_hi),
-		.dccm_wr_data_lo(dccm_wr_data_lo),
-		.dccm_wr_data_hi(dccm_wr_data_hi),
-		.dccm_rd_data_lo(dccm_rd_data_lo),
-		.dccm_rd_data_hi(dccm_rd_data_hi),
-		.dccm_ext_in_pkt(dccm_ext_in_pkt),
-		.iccm_ext_in_pkt(iccm_ext_in_pkt),
-		.iccm_buf_correct_ecc(iccm_buf_correct_ecc),
-		.iccm_correction_state(iccm_correction_state),
-		.iccm_rden(iccm_rden),
-		.iccm_rd_data(iccm_rd_data),
-		.iccm_rd_data_ecc(iccm_rd_data_ecc),
-		.ic_rw_addr(ic_rw_addr),
-		.ic_tag_valid(ic_tag_valid),
-		.ic_wr_en(ic_wr_en),
-		.ic_rd_en(ic_rd_en),
-		.ic_premux_data(ic_premux_data),
-		.ic_sel_premux_data(ic_sel_premux_data),
-		.ic_data_ext_in_pkt(ic_data_ext_in_pkt),
-		.ic_tag_ext_in_pkt(ic_tag_ext_in_pkt),
-		.ic_wr_data(ic_wr_data),
-		.ic_debug_wr_data(ic_debug_wr_data),
-		.ic_debug_rd_data(ic_debug_rd_data),
-		.ic_debug_addr(ic_debug_addr),
-		.ic_debug_rd_en(ic_debug_rd_en),
-		.ic_debug_wr_en(ic_debug_wr_en),
-		.ic_debug_tag_array(ic_debug_tag_array),
-		.ic_debug_way(ic_debug_way),
-		.ic_rd_data(ic_rd_data),
-		.ictag_debug_rd_data(ictag_debug_rd_data),
-		.ic_eccerr(ic_eccerr),
-		.ic_parerr(ic_parerr),
-		.ic_rd_hit(ic_rd_hit),
-		.ic_tag_perr(ic_tag_perr),
-		.scan_mode(scan_mode)
-	);
-	eb1_iccm_controller iccm_controller(
-		.clk_i(clk),
-		.rst_ni(rst_l),
-		.rx_dv_i(rx_dv_i),
-		.rx_byte_i(rx_byte_i),
-		.we_o(iccm_instr_we),
-		.addr_o(iccm_instr_addr),
-		.wdata_o(iccm_instr_wdata),
-		.reset_o(core_rst)
-	);
-	eb1_uart_rx_prog uart_rx_m(
-		.i_Clock(clk),
-		.rst_ni(rst_l),
-		.i_Rx_Serial(uart_rx),
-		.CLKS_PER_BIT(CLKS_PER_BIT),
-		.o_Rx_DV(rx_dv_i),
-		.o_Rx_Byte(rx_byte_i)
-	);
-	dmi_wrapper dmi_wrapper(
-		.trst_n(jtag_trst_n),
-		.tck(jtag_tck),
-		.tms(jtag_tms),
-		.tdi(jtag_tdi),
-		.tdo(jtag_tdo),
-		.tdoEnable(),
-		.core_rst_n(dbg_rst_l),
-		.core_clk(clk),
-		.jtag_id(jtag_id),
-		.rd_data(dmi_reg_rdata),
-		.reg_wr_data(dmi_reg_wdata),
-		.reg_wr_addr(dmi_reg_addr),
-		.reg_en(dmi_reg_en),
-		.reg_wr_en(dmi_reg_wr_en),
-		.dmi_hard_reset()
-	);
-endmodule
-module eb1_brqrv (
-	clk,
-	rst_l,
-	dbg_rst_l,
-	rst_vec,
-	nmi_int,
-	nmi_vec,
-	core_rst_l,
-	active_l2clk,
-	free_l2clk,
-	trace_rv_i_insn_ip,
-	trace_rv_i_address_ip,
-	trace_rv_i_valid_ip,
-	trace_rv_i_exception_ip,
-	trace_rv_i_ecause_ip,
-	trace_rv_i_interrupt_ip,
-	trace_rv_i_tval_ip,
-	dccm_clk_override,
-	icm_clk_override,
-	dec_tlu_core_ecc_disable,
-	i_cpu_halt_req,
-	i_cpu_run_req,
-	o_cpu_halt_ack,
-	o_cpu_halt_status,
-	o_cpu_run_ack,
-	o_debug_mode_status,
-	core_id,
-	mpc_debug_halt_req,
-	mpc_debug_run_req,
-	mpc_reset_run_req,
-	mpc_debug_halt_ack,
-	mpc_debug_run_ack,
-	debug_brkpt_status,
-	dec_tlu_perfcnt0,
-	dec_tlu_perfcnt1,
-	dec_tlu_perfcnt2,
-	dec_tlu_perfcnt3,
-	dccm_wren,
-	dccm_rden,
-	dccm_wr_addr_lo,
-	dccm_wr_addr_hi,
-	dccm_rd_addr_lo,
-	dccm_rd_addr_hi,
-	dccm_wr_data_lo,
-	dccm_wr_data_hi,
-	dccm_rd_data_lo,
-	dccm_rd_data_hi,
-	iccm_rw_addr,
-	iccm_wren,
-	iccm_rden,
-	iccm_wr_size,
-	iccm_wr_data,
-	iccm_buf_correct_ecc,
-	iccm_correction_state,
-	iccm_rd_data,
-	iccm_rd_data_ecc,
-	ic_rw_addr,
-	ic_tag_valid,
-	ic_wr_en,
-	ic_rd_en,
-	ic_wr_data,
-	ic_rd_data,
-	ic_debug_rd_data,
-	ictag_debug_rd_data,
-	ic_debug_wr_data,
-	ic_eccerr,
-	ic_parerr,
-	ic_premux_data,
-	ic_sel_premux_data,
-	ic_debug_addr,
-	ic_debug_rd_en,
-	ic_debug_wr_en,
-	ic_debug_tag_array,
-	ic_debug_way,
-	ic_rd_hit,
-	ic_tag_perr,
-	lsu_axi_awvalid,
-	lsu_axi_awready,
-	lsu_axi_awid,
-	lsu_axi_awaddr,
-	lsu_axi_awregion,
-	lsu_axi_awlen,
-	lsu_axi_awsize,
-	lsu_axi_awburst,
-	lsu_axi_awlock,
-	lsu_axi_awcache,
-	lsu_axi_awprot,
-	lsu_axi_awqos,
-	lsu_axi_wvalid,
-	lsu_axi_wready,
-	lsu_axi_wdata,
-	lsu_axi_wstrb,
-	lsu_axi_wlast,
-	lsu_axi_bvalid,
-	lsu_axi_bready,
-	lsu_axi_bresp,
-	lsu_axi_bid,
-	lsu_axi_arvalid,
-	lsu_axi_arready,
-	lsu_axi_arid,
-	lsu_axi_araddr,
-	lsu_axi_arregion,
-	lsu_axi_arlen,
-	lsu_axi_arsize,
-	lsu_axi_arburst,
-	lsu_axi_arlock,
-	lsu_axi_arcache,
-	lsu_axi_arprot,
-	lsu_axi_arqos,
-	lsu_axi_rvalid,
-	lsu_axi_rready,
-	lsu_axi_rid,
-	lsu_axi_rdata,
-	lsu_axi_rresp,
-	lsu_axi_rlast,
-	ifu_axi_awvalid,
-	ifu_axi_awready,
-	ifu_axi_awid,
-	ifu_axi_awaddr,
-	ifu_axi_awregion,
-	ifu_axi_awlen,
-	ifu_axi_awsize,
-	ifu_axi_awburst,
-	ifu_axi_awlock,
-	ifu_axi_awcache,
-	ifu_axi_awprot,
-	ifu_axi_awqos,
-	ifu_axi_wvalid,
-	ifu_axi_wready,
-	ifu_axi_wdata,
-	ifu_axi_wstrb,
-	ifu_axi_wlast,
-	ifu_axi_bvalid,
-	ifu_axi_bready,
-	ifu_axi_bresp,
-	ifu_axi_bid,
-	ifu_axi_arvalid,
-	ifu_axi_arready,
-	ifu_axi_arid,
-	ifu_axi_araddr,
-	ifu_axi_arregion,
-	ifu_axi_arlen,
-	ifu_axi_arsize,
-	ifu_axi_arburst,
-	ifu_axi_arlock,
-	ifu_axi_arcache,
-	ifu_axi_arprot,
-	ifu_axi_arqos,
-	ifu_axi_rvalid,
-	ifu_axi_rready,
-	ifu_axi_rid,
-	ifu_axi_rdata,
-	ifu_axi_rresp,
-	ifu_axi_rlast,
-	sb_axi_awvalid,
-	sb_axi_awready,
-	sb_axi_awid,
-	sb_axi_awaddr,
-	sb_axi_awregion,
-	sb_axi_awlen,
-	sb_axi_awsize,
-	sb_axi_awburst,
-	sb_axi_awlock,
-	sb_axi_awcache,
-	sb_axi_awprot,
-	sb_axi_awqos,
-	sb_axi_wvalid,
-	sb_axi_wready,
-	sb_axi_wdata,
-	sb_axi_wstrb,
-	sb_axi_wlast,
-	sb_axi_bvalid,
-	sb_axi_bready,
-	sb_axi_bresp,
-	sb_axi_bid,
-	sb_axi_arvalid,
-	sb_axi_arready,
-	sb_axi_arid,
-	sb_axi_araddr,
-	sb_axi_arregion,
-	sb_axi_arlen,
-	sb_axi_arsize,
-	sb_axi_arburst,
-	sb_axi_arlock,
-	sb_axi_arcache,
-	sb_axi_arprot,
-	sb_axi_arqos,
-	sb_axi_rvalid,
-	sb_axi_rready,
-	sb_axi_rid,
-	sb_axi_rdata,
-	sb_axi_rresp,
-	sb_axi_rlast,
-	dma_axi_awvalid,
-	dma_axi_awready,
-	dma_axi_awid,
-	dma_axi_awaddr,
-	dma_axi_awsize,
-	dma_axi_awprot,
-	dma_axi_awlen,
-	dma_axi_awburst,
-	dma_axi_wvalid,
-	dma_axi_wready,
-	dma_axi_wdata,
-	dma_axi_wstrb,
-	dma_axi_wlast,
-	dma_axi_bvalid,
-	dma_axi_bready,
-	dma_axi_bresp,
-	dma_axi_bid,
-	dma_axi_arvalid,
-	dma_axi_arready,
-	dma_axi_arid,
-	dma_axi_araddr,
-	dma_axi_arsize,
-	dma_axi_arprot,
-	dma_axi_arlen,
-	dma_axi_arburst,
-	dma_axi_rvalid,
-	dma_axi_rready,
-	dma_axi_rid,
-	dma_axi_rdata,
-	dma_axi_rresp,
-	dma_axi_rlast,
-	haddr,
-	hburst,
-	hmastlock,
-	hprot,
-	hsize,
-	htrans,
-	hwrite,
-	hrdata,
-	hready,
-	hresp,
-	lsu_haddr,
-	lsu_hburst,
-	lsu_hmastlock,
-	lsu_hprot,
-	lsu_hsize,
-	lsu_htrans,
-	lsu_hwrite,
-	lsu_hwdata,
-	lsu_hrdata,
-	lsu_hready,
-	lsu_hresp,
-	sb_haddr,
-	sb_hburst,
-	sb_hmastlock,
-	sb_hprot,
-	sb_hsize,
-	sb_htrans,
-	sb_hwrite,
-	sb_hwdata,
-	sb_hrdata,
-	sb_hready,
-	sb_hresp,
-	dma_hsel,
-	dma_haddr,
-	dma_hburst,
-	dma_hmastlock,
-	dma_hprot,
-	dma_hsize,
-	dma_htrans,
-	dma_hwrite,
-	dma_hwdata,
-	dma_hreadyin,
-	dma_hrdata,
-	dma_hreadyout,
-	dma_hresp,
-	lsu_bus_clk_en,
-	ifu_bus_clk_en,
-	dbg_bus_clk_en,
-	dma_bus_clk_en,
-	dmi_reg_en,
-	dmi_reg_addr,
-	dmi_reg_wr_en,
-	dmi_reg_wdata,
-	dmi_reg_rdata,
-	extintsrc_req,
-	timer_int,
-	soft_int,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire rst_l;
-	input wire dbg_rst_l;
-	input wire [31:1] rst_vec;
-	input wire nmi_int;
-	input wire [31:1] nmi_vec;
-	output wire core_rst_l;
-	output wire active_l2clk;
-	output wire free_l2clk;
-	output wire [31:0] trace_rv_i_insn_ip;
-	output wire [31:0] trace_rv_i_address_ip;
-	output wire trace_rv_i_valid_ip;
-	output wire trace_rv_i_exception_ip;
-	output wire [4:0] trace_rv_i_ecause_ip;
-	output wire trace_rv_i_interrupt_ip;
-	output wire [31:0] trace_rv_i_tval_ip;
-	output wire dccm_clk_override;
-	output wire icm_clk_override;
-	output wire dec_tlu_core_ecc_disable;
-	input wire i_cpu_halt_req;
-	input wire i_cpu_run_req;
-	output wire o_cpu_halt_ack;
-	output wire o_cpu_halt_status;
-	output wire o_cpu_run_ack;
-	output wire o_debug_mode_status;
-	input wire [31:4] core_id;
-	input wire mpc_debug_halt_req;
-	input wire mpc_debug_run_req;
-	input wire mpc_reset_run_req;
-	output wire mpc_debug_halt_ack;
-	output wire mpc_debug_run_ack;
-	output wire debug_brkpt_status;
-	output wire dec_tlu_perfcnt0;
-	output wire dec_tlu_perfcnt1;
-	output wire dec_tlu_perfcnt2;
-	output wire dec_tlu_perfcnt3;
-	output wire dccm_wren;
-	output wire dccm_rden;
-	output wire [pt[1398-:9] - 1:0] dccm_wr_addr_lo;
-	output wire [pt[1398-:9] - 1:0] dccm_wr_addr_hi;
-	output wire [pt[1398-:9] - 1:0] dccm_rd_addr_lo;
-	output wire [pt[1398-:9] - 1:0] dccm_rd_addr_hi;
-	output wire [pt[1360-:10] - 1:0] dccm_wr_data_lo;
-	output wire [pt[1360-:10] - 1:0] dccm_wr_data_hi;
-	input wire [pt[1360-:10] - 1:0] dccm_rd_data_lo;
-	input wire [pt[1360-:10] - 1:0] dccm_rd_data_hi;
-	output wire [pt[936-:9] - 1:1] iccm_rw_addr;
-	output wire iccm_wren;
-	output wire iccm_rden;
-	output wire [2:0] iccm_wr_size;
-	output wire [77:0] iccm_wr_data;
-	output wire iccm_buf_correct_ecc;
-	output wire iccm_correction_state;
-	input wire [63:0] iccm_rd_data;
-	input wire [77:0] iccm_rd_data_ecc;
-	output wire [31:1] ic_rw_addr;
-	output wire [pt[1060-:7] - 1:0] ic_tag_valid;
-	output wire [pt[1060-:7] - 1:0] ic_wr_en;
-	output wire ic_rd_en;
-	output wire [(pt[1189-:7] * 71) - 1:0] ic_wr_data;
-	input wire [63:0] ic_rd_data;
-	input wire [70:0] ic_debug_rd_data;
-	input wire [25:0] ictag_debug_rd_data;
-	output wire [70:0] ic_debug_wr_data;
-	input wire [pt[1189-:7] - 1:0] ic_eccerr;
-	input wire [pt[1189-:7] - 1:0] ic_parerr;
-	output wire [63:0] ic_premux_data;
-	output wire ic_sel_premux_data;
-	output wire [pt[1104-:9]:3] ic_debug_addr;
-	output wire ic_debug_rd_en;
-	output wire ic_debug_wr_en;
-	output wire ic_debug_tag_array;
-	output wire [pt[1060-:7] - 1:0] ic_debug_way;
-	input wire [pt[1060-:7] - 1:0] ic_rd_hit;
-	input wire ic_tag_perr;
-	output wire lsu_axi_awvalid;
-	input wire lsu_axi_awready;
-	output wire [pt[181-:8] - 1:0] lsu_axi_awid;
-	output wire [31:0] lsu_axi_awaddr;
-	output wire [3:0] lsu_axi_awregion;
-	output wire [7:0] lsu_axi_awlen;
-	output wire [2:0] lsu_axi_awsize;
-	output wire [1:0] lsu_axi_awburst;
-	output wire lsu_axi_awlock;
-	output wire [3:0] lsu_axi_awcache;
-	output wire [2:0] lsu_axi_awprot;
-	output wire [3:0] lsu_axi_awqos;
-	output wire lsu_axi_wvalid;
-	input wire lsu_axi_wready;
-	output wire [63:0] lsu_axi_wdata;
-	output wire [7:0] lsu_axi_wstrb;
-	output wire lsu_axi_wlast;
-	input wire lsu_axi_bvalid;
-	output wire lsu_axi_bready;
-	input wire [1:0] lsu_axi_bresp;
-	input wire [pt[181-:8] - 1:0] lsu_axi_bid;
-	output wire lsu_axi_arvalid;
-	input wire lsu_axi_arready;
-	output wire [pt[181-:8] - 1:0] lsu_axi_arid;
-	output wire [31:0] lsu_axi_araddr;
-	output wire [3:0] lsu_axi_arregion;
-	output wire [7:0] lsu_axi_arlen;
-	output wire [2:0] lsu_axi_arsize;
-	output wire [1:0] lsu_axi_arburst;
-	output wire lsu_axi_arlock;
-	output wire [3:0] lsu_axi_arcache;
-	output wire [2:0] lsu_axi_arprot;
-	output wire [3:0] lsu_axi_arqos;
-	input wire lsu_axi_rvalid;
-	output wire lsu_axi_rready;
-	input wire [pt[181-:8] - 1:0] lsu_axi_rid;
-	input wire [63:0] lsu_axi_rdata;
-	input wire [1:0] lsu_axi_rresp;
-	input wire lsu_axi_rlast;
-	output wire ifu_axi_awvalid;
-	input wire ifu_axi_awready;
-	output wire [pt[826-:8] - 1:0] ifu_axi_awid;
-	output wire [31:0] ifu_axi_awaddr;
-	output wire [3:0] ifu_axi_awregion;
-	output wire [7:0] ifu_axi_awlen;
-	output wire [2:0] ifu_axi_awsize;
-	output wire [1:0] ifu_axi_awburst;
-	output wire ifu_axi_awlock;
-	output wire [3:0] ifu_axi_awcache;
-	output wire [2:0] ifu_axi_awprot;
-	output wire [3:0] ifu_axi_awqos;
-	output wire ifu_axi_wvalid;
-	input wire ifu_axi_wready;
-	output wire [63:0] ifu_axi_wdata;
-	output wire [7:0] ifu_axi_wstrb;
-	output wire ifu_axi_wlast;
-	input wire ifu_axi_bvalid;
-	output wire ifu_axi_bready;
-	input wire [1:0] ifu_axi_bresp;
-	input wire [pt[826-:8] - 1:0] ifu_axi_bid;
-	output wire ifu_axi_arvalid;
-	input wire ifu_axi_arready;
-	output wire [pt[826-:8] - 1:0] ifu_axi_arid;
-	output wire [31:0] ifu_axi_araddr;
-	output wire [3:0] ifu_axi_arregion;
-	output wire [7:0] ifu_axi_arlen;
-	output wire [2:0] ifu_axi_arsize;
-	output wire [1:0] ifu_axi_arburst;
-	output wire ifu_axi_arlock;
-	output wire [3:0] ifu_axi_arcache;
-	output wire [2:0] ifu_axi_arprot;
-	output wire [3:0] ifu_axi_arqos;
-	input wire ifu_axi_rvalid;
-	output wire ifu_axi_rready;
-	input wire [pt[826-:8] - 1:0] ifu_axi_rid;
-	input wire [63:0] ifu_axi_rdata;
-	input wire [1:0] ifu_axi_rresp;
-	input wire ifu_axi_rlast;
-	output wire sb_axi_awvalid;
-	input wire sb_axi_awready;
-	output wire [pt[12-:8] - 1:0] sb_axi_awid;
-	output wire [31:0] sb_axi_awaddr;
-	output wire [3:0] sb_axi_awregion;
-	output wire [7:0] sb_axi_awlen;
-	output wire [2:0] sb_axi_awsize;
-	output wire [1:0] sb_axi_awburst;
-	output wire sb_axi_awlock;
-	output wire [3:0] sb_axi_awcache;
-	output wire [2:0] sb_axi_awprot;
-	output wire [3:0] sb_axi_awqos;
-	output wire sb_axi_wvalid;
-	input wire sb_axi_wready;
-	output wire [63:0] sb_axi_wdata;
-	output wire [7:0] sb_axi_wstrb;
-	output wire sb_axi_wlast;
-	input wire sb_axi_bvalid;
-	output wire sb_axi_bready;
-	input wire [1:0] sb_axi_bresp;
-	input wire [pt[12-:8] - 1:0] sb_axi_bid;
-	output wire sb_axi_arvalid;
-	input wire sb_axi_arready;
-	output wire [pt[12-:8] - 1:0] sb_axi_arid;
-	output wire [31:0] sb_axi_araddr;
-	output wire [3:0] sb_axi_arregion;
-	output wire [7:0] sb_axi_arlen;
-	output wire [2:0] sb_axi_arsize;
-	output wire [1:0] sb_axi_arburst;
-	output wire sb_axi_arlock;
-	output wire [3:0] sb_axi_arcache;
-	output wire [2:0] sb_axi_arprot;
-	output wire [3:0] sb_axi_arqos;
-	input wire sb_axi_rvalid;
-	output wire sb_axi_rready;
-	input wire [pt[12-:8] - 1:0] sb_axi_rid;
-	input wire [63:0] sb_axi_rdata;
-	input wire [1:0] sb_axi_rresp;
-	input wire sb_axi_rlast;
-	input wire dma_axi_awvalid;
-	output wire dma_axi_awready;
-	input wire [pt[1235-:8] - 1:0] dma_axi_awid;
-	input wire [31:0] dma_axi_awaddr;
-	input wire [2:0] dma_axi_awsize;
-	input wire [2:0] dma_axi_awprot;
-	input wire [7:0] dma_axi_awlen;
-	input wire [1:0] dma_axi_awburst;
-	input wire dma_axi_wvalid;
-	output wire dma_axi_wready;
-	input wire [63:0] dma_axi_wdata;
-	input wire [7:0] dma_axi_wstrb;
-	input wire dma_axi_wlast;
-	output wire dma_axi_bvalid;
-	input wire dma_axi_bready;
-	output wire [1:0] dma_axi_bresp;
-	output wire [pt[1235-:8] - 1:0] dma_axi_bid;
-	input wire dma_axi_arvalid;
-	output wire dma_axi_arready;
-	input wire [pt[1235-:8] - 1:0] dma_axi_arid;
-	input wire [31:0] dma_axi_araddr;
-	input wire [2:0] dma_axi_arsize;
-	input wire [2:0] dma_axi_arprot;
-	input wire [7:0] dma_axi_arlen;
-	input wire [1:0] dma_axi_arburst;
-	output wire dma_axi_rvalid;
-	input wire dma_axi_rready;
-	output wire [pt[1235-:8] - 1:0] dma_axi_rid;
-	output wire [63:0] dma_axi_rdata;
-	output wire [1:0] dma_axi_rresp;
-	output wire dma_axi_rlast;
-	output wire [31:0] haddr;
-	output wire [2:0] hburst;
-	output wire hmastlock;
-	output wire [3:0] hprot;
-	output wire [2:0] hsize;
-	output wire [1:0] htrans;
-	output wire hwrite;
-	input wire [63:0] hrdata;
-	input wire hready;
-	input wire hresp;
-	output wire [31:0] lsu_haddr;
-	output wire [2:0] lsu_hburst;
-	output wire lsu_hmastlock;
-	output wire [3:0] lsu_hprot;
-	output wire [2:0] lsu_hsize;
-	output wire [1:0] lsu_htrans;
-	output wire lsu_hwrite;
-	output wire [63:0] lsu_hwdata;
-	input wire [63:0] lsu_hrdata;
-	input wire lsu_hready;
-	input wire lsu_hresp;
-	output wire [31:0] sb_haddr;
-	output wire [2:0] sb_hburst;
-	output wire sb_hmastlock;
-	output wire [3:0] sb_hprot;
-	output wire [2:0] sb_hsize;
-	output wire [1:0] sb_htrans;
-	output wire sb_hwrite;
-	output wire [63:0] sb_hwdata;
-	input wire [63:0] sb_hrdata;
-	input wire sb_hready;
-	input wire sb_hresp;
-	input wire dma_hsel;
-	input wire [31:0] dma_haddr;
-	input wire [2:0] dma_hburst;
-	input wire dma_hmastlock;
-	input wire [3:0] dma_hprot;
-	input wire [2:0] dma_hsize;
-	input wire [1:0] dma_htrans;
-	input wire dma_hwrite;
-	input wire [63:0] dma_hwdata;
-	input wire dma_hreadyin;
-	output wire [63:0] dma_hrdata;
-	output wire dma_hreadyout;
-	output wire dma_hresp;
-	input wire lsu_bus_clk_en;
-	input wire ifu_bus_clk_en;
-	input wire dbg_bus_clk_en;
-	input wire dma_bus_clk_en;
-	input wire dmi_reg_en;
-	input wire [6:0] dmi_reg_addr;
-	input wire dmi_reg_wr_en;
-	input wire [31:0] dmi_reg_wdata;
-	output wire [31:0] dmi_reg_rdata;
-	input wire [pt[56-:12]:1] extintsrc_req;
-	input wire timer_int;
-	input wire soft_int;
-	input wire scan_mode;
-	wire [63:0] hwdata_nc;
-	wire ifu_pmu_instr_aligned;
-	wire ifu_ic_error_start;
-	wire ifu_iccm_rd_ecc_single_err;
-	wire lsu_axi_awready_ahb;
-	wire lsu_axi_wready_ahb;
-	wire lsu_axi_bvalid_ahb;
-	wire lsu_axi_bready_ahb;
-	wire [1:0] lsu_axi_bresp_ahb;
-	wire [pt[181-:8] - 1:0] lsu_axi_bid_ahb;
-	wire lsu_axi_arready_ahb;
-	wire lsu_axi_rvalid_ahb;
-	wire [pt[181-:8] - 1:0] lsu_axi_rid_ahb;
-	wire [63:0] lsu_axi_rdata_ahb;
-	wire [1:0] lsu_axi_rresp_ahb;
-	wire lsu_axi_rlast_ahb;
-	wire lsu_axi_awready_int;
-	wire lsu_axi_wready_int;
-	wire lsu_axi_bvalid_int;
-	wire lsu_axi_bready_int;
-	wire [1:0] lsu_axi_bresp_int;
-	wire [pt[181-:8] - 1:0] lsu_axi_bid_int;
-	wire lsu_axi_arready_int;
-	wire lsu_axi_rvalid_int;
-	wire [pt[181-:8] - 1:0] lsu_axi_rid_int;
-	wire [63:0] lsu_axi_rdata_int;
-	wire [1:0] lsu_axi_rresp_int;
-	wire lsu_axi_rlast_int;
-	wire ifu_axi_awready_ahb;
-	wire ifu_axi_wready_ahb;
-	wire ifu_axi_bvalid_ahb;
-	wire ifu_axi_bready_ahb;
-	wire [1:0] ifu_axi_bresp_ahb;
-	wire [pt[826-:8] - 1:0] ifu_axi_bid_ahb;
-	wire ifu_axi_arready_ahb;
-	wire ifu_axi_rvalid_ahb;
-	wire [pt[826-:8] - 1:0] ifu_axi_rid_ahb;
-	wire [63:0] ifu_axi_rdata_ahb;
-	wire [1:0] ifu_axi_rresp_ahb;
-	wire ifu_axi_rlast_ahb;
-	wire ifu_axi_awready_int;
-	wire ifu_axi_wready_int;
-	wire ifu_axi_bvalid_int;
-	wire ifu_axi_bready_int;
-	wire [1:0] ifu_axi_bresp_int;
-	wire [pt[826-:8] - 1:0] ifu_axi_bid_int;
-	wire ifu_axi_arready_int;
-	wire ifu_axi_rvalid_int;
-	wire [pt[826-:8] - 1:0] ifu_axi_rid_int;
-	wire [63:0] ifu_axi_rdata_int;
-	wire [1:0] ifu_axi_rresp_int;
-	wire ifu_axi_rlast_int;
-	wire sb_axi_awready_ahb;
-	wire sb_axi_wready_ahb;
-	wire sb_axi_bvalid_ahb;
-	wire sb_axi_bready_ahb;
-	wire [1:0] sb_axi_bresp_ahb;
-	wire [pt[12-:8] - 1:0] sb_axi_bid_ahb;
-	wire sb_axi_arready_ahb;
-	wire sb_axi_rvalid_ahb;
-	wire [pt[12-:8] - 1:0] sb_axi_rid_ahb;
-	wire [63:0] sb_axi_rdata_ahb;
-	wire [1:0] sb_axi_rresp_ahb;
-	wire sb_axi_rlast_ahb;
-	wire sb_axi_awready_int;
-	wire sb_axi_wready_int;
-	wire sb_axi_bvalid_int;
-	wire sb_axi_bready_int;
-	wire [1:0] sb_axi_bresp_int;
-	wire [pt[12-:8] - 1:0] sb_axi_bid_int;
-	wire sb_axi_arready_int;
-	wire sb_axi_rvalid_int;
-	wire [pt[12-:8] - 1:0] sb_axi_rid_int;
-	wire [63:0] sb_axi_rdata_int;
-	wire [1:0] sb_axi_rresp_int;
-	wire sb_axi_rlast_int;
-	wire dma_axi_awvalid_ahb;
-	wire [pt[1235-:8] - 1:0] dma_axi_awid_ahb;
-	wire [31:0] dma_axi_awaddr_ahb;
-	wire [2:0] dma_axi_awsize_ahb;
-	wire [2:0] dma_axi_awprot_ahb;
-	wire [7:0] dma_axi_awlen_ahb;
-	wire [1:0] dma_axi_awburst_ahb;
-	wire dma_axi_wvalid_ahb;
-	wire [63:0] dma_axi_wdata_ahb;
-	wire [7:0] dma_axi_wstrb_ahb;
-	wire dma_axi_wlast_ahb;
-	wire dma_axi_bready_ahb;
-	wire dma_axi_arvalid_ahb;
-	wire [pt[1235-:8] - 1:0] dma_axi_arid_ahb;
-	wire [31:0] dma_axi_araddr_ahb;
-	wire [2:0] dma_axi_arsize_ahb;
-	wire [2:0] dma_axi_arprot_ahb;
-	wire [7:0] dma_axi_arlen_ahb;
-	wire [1:0] dma_axi_arburst_ahb;
-	wire dma_axi_rready_ahb;
-	wire dma_axi_awvalid_int;
-	wire [pt[1235-:8] - 1:0] dma_axi_awid_int;
-	wire [31:0] dma_axi_awaddr_int;
-	wire [2:0] dma_axi_awsize_int;
-	wire [2:0] dma_axi_awprot_int;
-	wire [7:0] dma_axi_awlen_int;
-	wire [1:0] dma_axi_awburst_int;
-	wire dma_axi_wvalid_int;
-	wire [63:0] dma_axi_wdata_int;
-	wire [7:0] dma_axi_wstrb_int;
-	wire dma_axi_wlast_int;
-	wire dma_axi_bready_int;
-	wire dma_axi_arvalid_int;
-	wire [pt[1235-:8] - 1:0] dma_axi_arid_int;
-	wire [31:0] dma_axi_araddr_int;
-	wire [2:0] dma_axi_arsize_int;
-	wire [2:0] dma_axi_arprot_int;
-	wire [7:0] dma_axi_arlen_int;
-	wire [1:0] dma_axi_arburst_int;
-	wire dma_axi_rready_int;
-	wire [70:0] ifu_ic_debug_rd_data;
-	wire ifu_ic_debug_rd_data_valid;
-	wire [89:0] dec_tlu_ic_diag_pkt;
-	wire dec_i0_rs1_en_d;
-	wire dec_i0_rs2_en_d;
-	wire [31:0] gpr_i0_rs1_d;
-	wire [31:0] gpr_i0_rs2_d;
-	wire [31:0] dec_i0_result_r;
-	wire [31:0] exu_i0_result_x;
-	wire [31:1] exu_i0_pc_x;
-	wire [31:1] exu_npc_r;
-	wire [43:0] i0_ap;
-	wire [151:0] trigger_pkt_any;
-	wire [3:0] lsu_trigger_match_m;
-	wire [31:0] dec_i0_immed_d;
-	wire [12:1] dec_i0_br_immed_d;
-	wire dec_i0_select_pc_d;
-	wire [31:1] dec_i0_pc_d;
-	wire [3:0] dec_i0_rs1_bypass_en_d;
-	wire [3:0] dec_i0_rs2_bypass_en_d;
-	wire dec_i0_alu_decode_d;
-	wire dec_i0_branch_d;
-	wire ifu_miss_state_idle;
-	wire dec_tlu_flush_noredir_r;
-	wire dec_tlu_flush_leak_one_r;
-	wire dec_tlu_flush_err_r;
-	wire ifu_i0_valid;
-	wire [31:0] ifu_i0_instr;
-	wire [31:1] ifu_i0_pc;
-	wire exu_flush_final;
-	wire [31:1] exu_flush_path_final;
-	wire [31:0] exu_lsu_rs1_d;
-	wire [31:0] exu_lsu_rs2_d;
-	wire [13:0] lsu_p;
-	wire dec_qual_lsu_d;
-	wire dec_lsu_valid_raw_d;
-	wire [11:0] dec_lsu_offset_d;
-	wire [31:0] lsu_result_m;
-	wire [31:0] lsu_result_corr_r;
-	wire lsu_single_ecc_error_incr;
-	wire [39:0] lsu_error_pkt_r;
-	wire lsu_imprecise_error_load_any;
-	wire lsu_imprecise_error_store_any;
-	wire [31:0] lsu_imprecise_error_addr_any;
-	wire lsu_load_stall_any;
-	wire lsu_store_stall_any;
-	wire lsu_idle_any;
-	wire lsu_active;
-	wire [31:1] lsu_fir_addr;
-	wire [1:0] lsu_fir_error;
-	wire lsu_nonblock_load_valid_m;
-	wire [pt[164-:7] - 1:0] lsu_nonblock_load_tag_m;
-	wire lsu_nonblock_load_inv_r;
-	wire [pt[164-:7] - 1:0] lsu_nonblock_load_inv_tag_r;
-	wire lsu_nonblock_load_data_valid;
-	wire [pt[164-:7] - 1:0] lsu_nonblock_load_data_tag;
-	wire [31:0] lsu_nonblock_load_data;
-	wire dec_csr_ren_d;
-	wire [31:0] dec_csr_rddata_d;
-	wire [31:0] exu_csr_rs1_x;
-	wire dec_tlu_i0_commit_cmt;
-	wire dec_tlu_flush_lower_r;
-	wire dec_tlu_flush_lower_wb;
-	wire dec_tlu_i0_kill_writeb_r;
-	wire dec_tlu_fence_i_r;
-	wire [31:1] dec_tlu_flush_path_r;
-	wire [31:0] dec_tlu_mrac_ff;
-	wire ifu_i0_pc4;
-	wire [19:0] mul_p;
-	wire [2:0] div_p;
-	wire dec_div_cancel;
-	wire [31:0] exu_div_result;
-	wire exu_div_wren;
-	wire dec_i0_decode_d;
-	wire [31:1] pred_correct_npc_x;
-	wire [6:0] dec_tlu_br0_r_pkt;
-	wire [55:0] exu_mp_pkt;
-	wire [pt[2236-:8] - 1:0] exu_mp_eghr;
-	wire [pt[2236-:8] - 1:0] exu_mp_fghr;
-	wire [pt[2172-:9]:pt[2163-:6]] exu_mp_index;
-	wire [pt[2139-:9] - 1:0] exu_mp_btag;
-	wire [pt[2236-:8] - 1:0] exu_i0_br_fghr_r;
-	wire [1:0] exu_i0_br_hist_r;
-	wire exu_i0_br_error_r;
-	wire exu_i0_br_start_error_r;
-	wire exu_i0_br_valid_r;
-	wire exu_i0_br_mp_r;
-	wire exu_i0_br_middle_r;
-	wire exu_i0_br_way_r;
-	wire [pt[2172-:9]:pt[2163-:6]] exu_i0_br_index_r;
-	wire dma_dccm_req;
-	wire dma_iccm_req;
-	wire [2:0] dma_mem_tag;
-	wire [31:0] dma_mem_addr;
-	wire [2:0] dma_mem_sz;
-	wire dma_mem_write;
-	wire [63:0] dma_mem_wdata;
-	wire dccm_dma_rvalid;
-	wire dccm_dma_ecc_error;
-	wire [2:0] dccm_dma_rtag;
-	wire [63:0] dccm_dma_rdata;
-	wire iccm_dma_rvalid;
-	wire iccm_dma_ecc_error;
-	wire [2:0] iccm_dma_rtag;
-	wire [63:0] iccm_dma_rdata;
-	wire dma_dccm_stall_any;
-	wire dma_iccm_stall_any;
-	wire dccm_ready;
-	wire iccm_ready;
-	wire dma_pmu_dccm_read;
-	wire dma_pmu_dccm_write;
-	wire dma_pmu_any_read;
-	wire dma_pmu_any_write;
-	wire ifu_i0_icaf;
-	wire [1:0] ifu_i0_icaf_type;
-	wire ifu_i0_icaf_second;
-	wire ifu_i0_dbecc;
-	wire iccm_dma_sb_error;
-	wire [50:0] i0_brp;
-	wire [pt[2172-:9]:pt[2163-:6]] ifu_i0_bp_index;
-	wire [pt[2236-:8] - 1:0] ifu_i0_bp_fghr;
-	wire [pt[2139-:9] - 1:0] ifu_i0_bp_btag;
-	wire [$clog2(pt[2061-:14]) - 1:0] ifu_i0_fa_index;
-	wire [$clog2(pt[2061-:14]) - 1:0] dec_fa_error_index;
-	wire [55:0] dec_i0_predict_p_d;
-	wire [pt[2236-:8] - 1:0] i0_predict_fghr_d;
-	wire [pt[2172-:9]:pt[2163-:6]] i0_predict_index_d;
-	wire [pt[2139-:9] - 1:0] i0_predict_btag_d;
-	wire picm_wren;
-	wire picm_rden;
-	wire picm_mken;
-	wire [31:0] picm_rdaddr;
-	wire [31:0] picm_wraddr;
-	wire [31:0] picm_wr_data;
-	wire [31:0] picm_rd_data;
-	wire dec_tlu_external_ldfwd_disable;
-	wire dec_tlu_bpred_disable;
-	wire dec_tlu_wb_coalescing_disable;
-	wire dec_tlu_sideeffect_posted_disable;
-	wire [2:0] dec_tlu_dma_qos_prty;
-	wire dec_tlu_misc_clk_override;
-	wire dec_tlu_ifu_clk_override;
-	wire dec_tlu_lsu_clk_override;
-	wire dec_tlu_bus_clk_override;
-	wire dec_tlu_pic_clk_override;
-	wire dec_tlu_dccm_clk_override;
-	wire dec_tlu_icm_clk_override;
-	wire dec_tlu_picio_clk_override;
-	assign dccm_clk_override = dec_tlu_dccm_clk_override;
-	assign icm_clk_override = dec_tlu_icm_clk_override;
-	wire [31:0] dbg_cmd_addr;
-	wire [31:0] dbg_cmd_wrdata;
-	wire dbg_cmd_valid;
-	wire dbg_cmd_write;
-	wire [1:0] dbg_cmd_type;
-	wire [1:0] dbg_cmd_size;
-	wire dbg_halt_req;
-	wire dbg_resume_req;
-	wire dbg_core_rst_l;
-	wire core_dbg_cmd_done;
-	wire core_dbg_cmd_fail;
-	wire [31:0] core_dbg_rddata;
-	wire dma_dbg_cmd_done;
-	wire dma_dbg_cmd_fail;
-	wire [31:0] dma_dbg_rddata;
-	wire dbg_dma_bubble;
-	wire dma_dbg_ready;
-	wire [31:0] dec_dbg_rddata;
-	wire dec_dbg_cmd_done;
-	wire dec_dbg_cmd_fail;
-	wire dec_tlu_mpc_halted_only;
-	wire dec_tlu_dbg_halted;
-	wire dec_tlu_resume_ack;
-	wire dec_tlu_debug_mode;
-	wire dec_debug_wdata_rs1_d;
-	wire dec_tlu_force_halt;
-	wire [1:0] dec_data_en;
-	wire [1:0] dec_ctl_en;
-	wire exu_pmu_i0_br_misp;
-	wire exu_pmu_i0_br_ataken;
-	wire exu_pmu_i0_pc4;
-	wire lsu_pmu_load_external_m;
-	wire lsu_pmu_store_external_m;
-	wire lsu_pmu_misaligned_m;
-	wire lsu_pmu_bus_trxn;
-	wire lsu_pmu_bus_misaligned;
-	wire lsu_pmu_bus_error;
-	wire lsu_pmu_bus_busy;
-	wire ifu_pmu_fetch_stall;
-	wire ifu_pmu_ic_miss;
-	wire ifu_pmu_ic_hit;
-	wire ifu_pmu_bus_error;
-	wire ifu_pmu_bus_busy;
-	wire ifu_pmu_bus_trxn;
-	wire active_state;
-	wire free_clk;
-	wire active_clk;
-	wire dec_pause_state_cg;
-	wire lsu_nonblock_load_data_error;
-	wire [15:0] ifu_i0_cinst;
-	wire [31:2] dec_tlu_meihap;
-	wire dec_extint_stall;
-	wire [103:0] trace_rv_trace_pkt;
-	wire lsu_fastint_stall_any;
-	wire [7:0] pic_claimid;
-	wire [3:0] pic_pl;
-	wire [3:0] dec_tlu_meicurpl;
-	wire [3:0] dec_tlu_meipt;
-	wire mexintpend;
-	wire mhwakeup;
-	wire dma_active;
-	wire pause_state;
-	wire halt_state;
-	wire dec_tlu_core_empty;
-	assign pause_state = (dec_pause_state_cg & ~(dma_active | lsu_active)) & dec_tlu_core_empty;
-	assign halt_state = o_cpu_halt_status & ~(dma_active | lsu_active);
-	assign active_state = ((~(halt_state | pause_state) | dec_tlu_flush_lower_r) | dec_tlu_flush_lower_wb) | dec_tlu_misc_clk_override;
-	rvoclkhdr free_cg2(
-		.clk(clk),
-		.en(1'b1),
-		.l1clk(free_l2clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr active_cg2(
-		.clk(clk),
-		.en(active_state),
-		.l1clk(active_l2clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr free_cg1(
-		.clk(free_l2clk),
-		.en(1'b1),
-		.l1clk(free_clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr active_cg1(
-		.clk(active_l2clk),
-		.en(1'b1),
-		.l1clk(active_clk),
-		.scan_mode(scan_mode)
-	);
-	assign core_dbg_cmd_done = dma_dbg_cmd_done | dec_dbg_cmd_done;
-	assign core_dbg_cmd_fail = dma_dbg_cmd_fail | dec_dbg_cmd_fail;
-	assign core_dbg_rddata[31:0] = (dma_dbg_cmd_done ? dma_dbg_rddata[31:0] : dec_dbg_rddata[31:0]);
-	eb1_dbg #(.pt(pt)) dbg(
-		.rst_l(core_rst_l),
-		.clk(free_l2clk),
-		.clk_override(dec_tlu_misc_clk_override),
-		.sb_axi_awready(sb_axi_awready_int),
-		.sb_axi_wready(sb_axi_wready_int),
-		.sb_axi_bvalid(sb_axi_bvalid_int),
-		.sb_axi_bresp(sb_axi_bresp_int[1:0]),
-		.sb_axi_arready(sb_axi_arready_int),
-		.sb_axi_rvalid(sb_axi_rvalid_int),
-		.sb_axi_rdata(sb_axi_rdata_int[63:0]),
-		.sb_axi_rresp(sb_axi_rresp_int[1:0]),
-		.dbg_cmd_addr(dbg_cmd_addr),
-		.dbg_cmd_wrdata(dbg_cmd_wrdata),
-		.dbg_cmd_valid(dbg_cmd_valid),
-		.dbg_cmd_write(dbg_cmd_write),
-		.dbg_cmd_type(dbg_cmd_type),
-		.dbg_cmd_size(dbg_cmd_size),
-		.dbg_core_rst_l(dbg_core_rst_l),
-		.core_dbg_rddata(core_dbg_rddata),
-		.core_dbg_cmd_done(core_dbg_cmd_done),
-		.core_dbg_cmd_fail(core_dbg_cmd_fail),
-		.dbg_dma_bubble(dbg_dma_bubble),
-		.dma_dbg_ready(dma_dbg_ready),
-		.dbg_halt_req(dbg_halt_req),
-		.dbg_resume_req(dbg_resume_req),
-		.dec_tlu_debug_mode(dec_tlu_debug_mode),
-		.dec_tlu_dbg_halted(dec_tlu_dbg_halted),
-		.dec_tlu_mpc_halted_only(dec_tlu_mpc_halted_only),
-		.dec_tlu_resume_ack(dec_tlu_resume_ack),
-		.dmi_reg_en(dmi_reg_en),
-		.dmi_reg_addr(dmi_reg_addr),
-		.dmi_reg_wr_en(dmi_reg_wr_en),
-		.dmi_reg_wdata(dmi_reg_wdata),
-		.dmi_reg_rdata(dmi_reg_rdata),
-		.sb_axi_awvalid(sb_axi_awvalid),
-		.sb_axi_awid(sb_axi_awid),
-		.sb_axi_awaddr(sb_axi_awaddr),
-		.sb_axi_awregion(sb_axi_awregion),
-		.sb_axi_awlen(sb_axi_awlen),
-		.sb_axi_awsize(sb_axi_awsize),
-		.sb_axi_awburst(sb_axi_awburst),
-		.sb_axi_awlock(sb_axi_awlock),
-		.sb_axi_awcache(sb_axi_awcache),
-		.sb_axi_awprot(sb_axi_awprot),
-		.sb_axi_awqos(sb_axi_awqos),
-		.sb_axi_wvalid(sb_axi_wvalid),
-		.sb_axi_wdata(sb_axi_wdata),
-		.sb_axi_wstrb(sb_axi_wstrb),
-		.sb_axi_wlast(sb_axi_wlast),
-		.sb_axi_bready(sb_axi_bready),
-		.sb_axi_arvalid(sb_axi_arvalid),
-		.sb_axi_arid(sb_axi_arid),
-		.sb_axi_araddr(sb_axi_araddr),
-		.sb_axi_arregion(sb_axi_arregion),
-		.sb_axi_arlen(sb_axi_arlen),
-		.sb_axi_arsize(sb_axi_arsize),
-		.sb_axi_arburst(sb_axi_arburst),
-		.sb_axi_arlock(sb_axi_arlock),
-		.sb_axi_arcache(sb_axi_arcache),
-		.sb_axi_arprot(sb_axi_arprot),
-		.sb_axi_arqos(sb_axi_arqos),
-		.sb_axi_rready(sb_axi_rready),
-		.dbg_bus_clk_en(dbg_bus_clk_en),
-		.dbg_rst_l(dbg_rst_l),
-		.scan_mode(scan_mode)
-	);
-	assign core_rst_l = rst_l & (dbg_core_rst_l | scan_mode);
-	eb1_ifu #(.pt(pt)) ifu(
-		.clk(active_l2clk),
-		.rst_l(core_rst_l),
-		.dec_tlu_flush_err_wb(dec_tlu_flush_err_r),
-		.dec_tlu_flush_noredir_wb(dec_tlu_flush_noredir_r),
-		.dec_tlu_fence_i_wb(dec_tlu_fence_i_r),
-		.dec_tlu_flush_leak_one_wb(dec_tlu_flush_leak_one_r),
-		.dec_tlu_flush_lower_wb(dec_tlu_flush_lower_r),
-		.ifu_axi_arready(ifu_axi_arready_int),
-		.ifu_axi_rvalid(ifu_axi_rvalid_int),
-		.ifu_axi_rid(ifu_axi_rid_int[pt[826-:8] - 1:0]),
-		.ifu_axi_rdata(ifu_axi_rdata_int[63:0]),
-		.ifu_axi_rresp(ifu_axi_rresp_int[1:0]),
-		.exu_flush_final(exu_flush_final),
-		.free_l2clk(free_l2clk),
-		.active_clk(active_clk),
-		.dec_i0_decode_d(dec_i0_decode_d),
-		.dec_tlu_i0_commit_cmt(dec_tlu_i0_commit_cmt),
-		.exu_flush_path_final(exu_flush_path_final),
-		.dec_tlu_mrac_ff(dec_tlu_mrac_ff),
-		.dec_tlu_bpred_disable(dec_tlu_bpred_disable),
-		.dec_tlu_core_ecc_disable(dec_tlu_core_ecc_disable),
-		.dec_tlu_force_halt(dec_tlu_force_halt),
-		.ifu_axi_awvalid(ifu_axi_awvalid),
-		.ifu_axi_awid(ifu_axi_awid),
-		.ifu_axi_awaddr(ifu_axi_awaddr),
-		.ifu_axi_awregion(ifu_axi_awregion),
-		.ifu_axi_awlen(ifu_axi_awlen),
-		.ifu_axi_awsize(ifu_axi_awsize),
-		.ifu_axi_awburst(ifu_axi_awburst),
-		.ifu_axi_awlock(ifu_axi_awlock),
-		.ifu_axi_awcache(ifu_axi_awcache),
-		.ifu_axi_awprot(ifu_axi_awprot),
-		.ifu_axi_awqos(ifu_axi_awqos),
-		.ifu_axi_wvalid(ifu_axi_wvalid),
-		.ifu_axi_wdata(ifu_axi_wdata),
-		.ifu_axi_wstrb(ifu_axi_wstrb),
-		.ifu_axi_wlast(ifu_axi_wlast),
-		.ifu_axi_bready(ifu_axi_bready),
-		.ifu_axi_arvalid(ifu_axi_arvalid),
-		.ifu_axi_arid(ifu_axi_arid),
-		.ifu_axi_araddr(ifu_axi_araddr),
-		.ifu_axi_arregion(ifu_axi_arregion),
-		.ifu_axi_arlen(ifu_axi_arlen),
-		.ifu_axi_arsize(ifu_axi_arsize),
-		.ifu_axi_arburst(ifu_axi_arburst),
-		.ifu_axi_arlock(ifu_axi_arlock),
-		.ifu_axi_arcache(ifu_axi_arcache),
-		.ifu_axi_arprot(ifu_axi_arprot),
-		.ifu_axi_arqos(ifu_axi_arqos),
-		.ifu_axi_rready(ifu_axi_rready),
-		.ifu_bus_clk_en(ifu_bus_clk_en),
-		.dma_iccm_req(dma_iccm_req),
-		.dma_mem_addr(dma_mem_addr),
-		.dma_mem_sz(dma_mem_sz),
-		.dma_mem_write(dma_mem_write),
-		.dma_mem_wdata(dma_mem_wdata),
-		.dma_mem_tag(dma_mem_tag),
-		.dma_iccm_stall_any(dma_iccm_stall_any),
-		.iccm_dma_ecc_error(iccm_dma_ecc_error),
-		.iccm_dma_rvalid(iccm_dma_rvalid),
-		.iccm_dma_rdata(iccm_dma_rdata),
-		.iccm_dma_rtag(iccm_dma_rtag),
-		.iccm_ready(iccm_ready),
-		.ifu_pmu_instr_aligned(ifu_pmu_instr_aligned),
-		.ifu_pmu_fetch_stall(ifu_pmu_fetch_stall),
-		.ifu_ic_error_start(ifu_ic_error_start),
-		.ic_rw_addr(ic_rw_addr),
-		.ic_wr_en(ic_wr_en),
-		.ic_rd_en(ic_rd_en),
-		.ic_wr_data(ic_wr_data),
-		.ic_rd_data(ic_rd_data),
-		.ic_debug_rd_data(ic_debug_rd_data),
-		.ictag_debug_rd_data(ictag_debug_rd_data),
-		.ic_debug_wr_data(ic_debug_wr_data),
-		.ifu_ic_debug_rd_data(ifu_ic_debug_rd_data),
-		.ic_eccerr(ic_eccerr),
-		.ic_parerr(ic_parerr),
-		.ic_premux_data(ic_premux_data),
-		.ic_sel_premux_data(ic_sel_premux_data),
-		.ic_debug_addr(ic_debug_addr),
-		.ic_debug_rd_en(ic_debug_rd_en),
-		.ic_debug_wr_en(ic_debug_wr_en),
-		.ic_debug_tag_array(ic_debug_tag_array),
-		.ic_debug_way(ic_debug_way),
-		.ic_tag_valid(ic_tag_valid),
-		.ic_rd_hit(ic_rd_hit),
-		.ic_tag_perr(ic_tag_perr),
-		.iccm_rw_addr(iccm_rw_addr),
-		.iccm_wren(iccm_wren),
-		.iccm_rden(iccm_rden),
-		.iccm_wr_data(iccm_wr_data),
-		.iccm_wr_size(iccm_wr_size),
-		.iccm_rd_data(iccm_rd_data),
-		.iccm_rd_data_ecc(iccm_rd_data_ecc),
-		.ifu_iccm_rd_ecc_single_err(ifu_iccm_rd_ecc_single_err),
-		.ifu_pmu_ic_miss(ifu_pmu_ic_miss),
-		.ifu_pmu_ic_hit(ifu_pmu_ic_hit),
-		.ifu_pmu_bus_error(ifu_pmu_bus_error),
-		.ifu_pmu_bus_busy(ifu_pmu_bus_busy),
-		.ifu_pmu_bus_trxn(ifu_pmu_bus_trxn),
-		.ifu_i0_icaf(ifu_i0_icaf),
-		.ifu_i0_icaf_type(ifu_i0_icaf_type),
-		.ifu_i0_valid(ifu_i0_valid),
-		.ifu_i0_icaf_second(ifu_i0_icaf_second),
-		.ifu_i0_dbecc(ifu_i0_dbecc),
-		.iccm_dma_sb_error(iccm_dma_sb_error),
-		.ifu_i0_instr(ifu_i0_instr),
-		.ifu_i0_pc(ifu_i0_pc),
-		.ifu_i0_pc4(ifu_i0_pc4),
-		.ifu_miss_state_idle(ifu_miss_state_idle),
-		.i0_brp(i0_brp),
-		.ifu_i0_bp_index(ifu_i0_bp_index),
-		.ifu_i0_bp_fghr(ifu_i0_bp_fghr),
-		.ifu_i0_bp_btag(ifu_i0_bp_btag),
-		.ifu_i0_fa_index(ifu_i0_fa_index),
-		.exu_mp_pkt(exu_mp_pkt),
-		.exu_mp_eghr(exu_mp_eghr),
-		.exu_mp_fghr(exu_mp_fghr),
-		.exu_mp_index(exu_mp_index),
-		.exu_mp_btag(exu_mp_btag),
-		.dec_tlu_br0_r_pkt(dec_tlu_br0_r_pkt),
-		.exu_i0_br_fghr_r(exu_i0_br_fghr_r),
-		.exu_i0_br_index_r(exu_i0_br_index_r),
-		.dec_fa_error_index(dec_fa_error_index),
-		.ifu_i0_cinst(ifu_i0_cinst),
-		.dec_tlu_ic_diag_pkt(dec_tlu_ic_diag_pkt),
-		.ifu_ic_debug_rd_data_valid(ifu_ic_debug_rd_data_valid),
-		.iccm_buf_correct_ecc(iccm_buf_correct_ecc),
-		.iccm_correction_state(iccm_correction_state),
-		.scan_mode(scan_mode)
-	);
-	eb1_dec #(.pt(pt)) dec(
-		.clk(active_l2clk),
-		.dbg_cmd_wrdata(dbg_cmd_wrdata[1:0]),
-		.rst_l(core_rst_l),
-		.i_cpu_halt_req(i_cpu_halt_req),
-		.i_cpu_run_req(i_cpu_run_req),
-		.active_clk(active_clk),
-		.free_clk(free_clk),
-		.free_l2clk(free_l2clk),
-		.lsu_fastint_stall_any(lsu_fastint_stall_any),
-		.dec_extint_stall(dec_extint_stall),
-		.dec_i0_decode_d(dec_i0_decode_d),
-		.dec_pause_state_cg(dec_pause_state_cg),
-		.dec_tlu_core_empty(dec_tlu_core_empty),
-		.rst_vec(rst_vec),
-		.nmi_int(nmi_int),
-		.nmi_vec(nmi_vec),
-		.o_cpu_halt_status(o_cpu_halt_status),
-		.o_cpu_halt_ack(o_cpu_halt_ack),
-		.o_cpu_run_ack(o_cpu_run_ack),
-		.o_debug_mode_status(o_debug_mode_status),
-		.core_id(core_id),
-		.mpc_debug_halt_req(mpc_debug_halt_req),
-		.mpc_debug_run_req(mpc_debug_run_req),
-		.mpc_reset_run_req(mpc_reset_run_req),
-		.mpc_debug_halt_ack(mpc_debug_halt_ack),
-		.mpc_debug_run_ack(mpc_debug_run_ack),
-		.debug_brkpt_status(debug_brkpt_status),
-		.exu_pmu_i0_br_misp(exu_pmu_i0_br_misp),
-		.exu_pmu_i0_br_ataken(exu_pmu_i0_br_ataken),
-		.exu_pmu_i0_pc4(exu_pmu_i0_pc4),
-		.lsu_nonblock_load_valid_m(lsu_nonblock_load_valid_m),
-		.lsu_nonblock_load_tag_m(lsu_nonblock_load_tag_m),
-		.lsu_nonblock_load_inv_r(lsu_nonblock_load_inv_r),
-		.lsu_nonblock_load_inv_tag_r(lsu_nonblock_load_inv_tag_r),
-		.lsu_nonblock_load_data_valid(lsu_nonblock_load_data_valid),
-		.lsu_nonblock_load_data_error(lsu_nonblock_load_data_error),
-		.lsu_nonblock_load_data_tag(lsu_nonblock_load_data_tag),
-		.lsu_nonblock_load_data(lsu_nonblock_load_data),
-		.lsu_pmu_bus_trxn(lsu_pmu_bus_trxn),
-		.lsu_pmu_bus_misaligned(lsu_pmu_bus_misaligned),
-		.lsu_pmu_bus_error(lsu_pmu_bus_error),
-		.lsu_pmu_bus_busy(lsu_pmu_bus_busy),
-		.lsu_pmu_misaligned_m(lsu_pmu_misaligned_m),
-		.lsu_pmu_load_external_m(lsu_pmu_load_external_m),
-		.lsu_pmu_store_external_m(lsu_pmu_store_external_m),
-		.dma_pmu_dccm_read(dma_pmu_dccm_read),
-		.dma_pmu_dccm_write(dma_pmu_dccm_write),
-		.dma_pmu_any_read(dma_pmu_any_read),
-		.dma_pmu_any_write(dma_pmu_any_write),
-		.lsu_fir_addr(lsu_fir_addr),
-		.lsu_fir_error(lsu_fir_error),
-		.ifu_pmu_instr_aligned(ifu_pmu_instr_aligned),
-		.ifu_pmu_fetch_stall(ifu_pmu_fetch_stall),
-		.ifu_pmu_ic_miss(ifu_pmu_ic_miss),
-		.ifu_pmu_ic_hit(ifu_pmu_ic_hit),
-		.ifu_pmu_bus_error(ifu_pmu_bus_error),
-		.ifu_pmu_bus_busy(ifu_pmu_bus_busy),
-		.ifu_pmu_bus_trxn(ifu_pmu_bus_trxn),
-		.ifu_ic_error_start(ifu_ic_error_start),
-		.ifu_iccm_rd_ecc_single_err(ifu_iccm_rd_ecc_single_err),
-		.lsu_trigger_match_m(lsu_trigger_match_m),
-		.dbg_cmd_valid(dbg_cmd_valid),
-		.dbg_cmd_write(dbg_cmd_write),
-		.dbg_cmd_type(dbg_cmd_type),
-		.dbg_cmd_addr(dbg_cmd_addr),
-		.ifu_i0_icaf(ifu_i0_icaf),
-		.ifu_i0_icaf_type(ifu_i0_icaf_type),
-		.ifu_i0_icaf_second(ifu_i0_icaf_second),
-		.ifu_i0_dbecc(ifu_i0_dbecc),
-		.lsu_idle_any(lsu_idle_any),
-		.i0_brp(i0_brp),
-		.ifu_i0_bp_index(ifu_i0_bp_index),
-		.ifu_i0_bp_fghr(ifu_i0_bp_fghr),
-		.ifu_i0_bp_btag(ifu_i0_bp_btag),
-		.ifu_i0_fa_index(ifu_i0_fa_index),
-		.lsu_error_pkt_r(lsu_error_pkt_r),
-		.lsu_single_ecc_error_incr(lsu_single_ecc_error_incr),
-		.lsu_imprecise_error_load_any(lsu_imprecise_error_load_any),
-		.lsu_imprecise_error_store_any(lsu_imprecise_error_store_any),
-		.lsu_imprecise_error_addr_any(lsu_imprecise_error_addr_any),
-		.exu_div_result(exu_div_result),
-		.exu_div_wren(exu_div_wren),
-		.exu_csr_rs1_x(exu_csr_rs1_x),
-		.lsu_result_m(lsu_result_m),
-		.lsu_result_corr_r(lsu_result_corr_r),
-		.lsu_load_stall_any(lsu_load_stall_any),
-		.lsu_store_stall_any(lsu_store_stall_any),
-		.dma_dccm_stall_any(dma_dccm_stall_any),
-		.dma_iccm_stall_any(dma_iccm_stall_any),
-		.iccm_dma_sb_error(iccm_dma_sb_error),
-		.exu_flush_final(exu_flush_final),
-		.exu_npc_r(exu_npc_r),
-		.exu_i0_result_x(exu_i0_result_x),
-		.ifu_i0_valid(ifu_i0_valid),
-		.ifu_i0_instr(ifu_i0_instr),
-		.ifu_i0_pc(ifu_i0_pc),
-		.ifu_i0_pc4(ifu_i0_pc4),
-		.exu_i0_pc_x(exu_i0_pc_x),
-		.mexintpend(mexintpend),
-		.timer_int(timer_int),
-		.soft_int(soft_int),
-		.pic_claimid(pic_claimid),
-		.pic_pl(pic_pl),
-		.mhwakeup(mhwakeup),
-		.dec_tlu_meicurpl(dec_tlu_meicurpl),
-		.dec_tlu_meipt(dec_tlu_meipt),
-		.ifu_ic_debug_rd_data(ifu_ic_debug_rd_data),
-		.ifu_ic_debug_rd_data_valid(ifu_ic_debug_rd_data_valid),
-		.dec_tlu_ic_diag_pkt(dec_tlu_ic_diag_pkt),
-		.dbg_halt_req(dbg_halt_req),
-		.dbg_resume_req(dbg_resume_req),
-		.ifu_miss_state_idle(ifu_miss_state_idle),
-		.dec_tlu_dbg_halted(dec_tlu_dbg_halted),
-		.dec_tlu_debug_mode(dec_tlu_debug_mode),
-		.dec_tlu_resume_ack(dec_tlu_resume_ack),
-		.dec_tlu_flush_noredir_r(dec_tlu_flush_noredir_r),
-		.dec_tlu_mpc_halted_only(dec_tlu_mpc_halted_only),
-		.dec_tlu_flush_leak_one_r(dec_tlu_flush_leak_one_r),
-		.dec_tlu_flush_err_r(dec_tlu_flush_err_r),
-		.dec_tlu_meihap(dec_tlu_meihap),
-		.dec_debug_wdata_rs1_d(dec_debug_wdata_rs1_d),
-		.dec_dbg_rddata(dec_dbg_rddata),
-		.dec_dbg_cmd_done(dec_dbg_cmd_done),
-		.dec_dbg_cmd_fail(dec_dbg_cmd_fail),
-		.trigger_pkt_any(trigger_pkt_any),
-		.dec_tlu_force_halt(dec_tlu_force_halt),
-		.exu_i0_br_hist_r(exu_i0_br_hist_r),
-		.exu_i0_br_error_r(exu_i0_br_error_r),
-		.exu_i0_br_start_error_r(exu_i0_br_start_error_r),
-		.exu_i0_br_valid_r(exu_i0_br_valid_r),
-		.exu_i0_br_mp_r(exu_i0_br_mp_r),
-		.exu_i0_br_middle_r(exu_i0_br_middle_r),
-		.exu_i0_br_way_r(exu_i0_br_way_r),
-		.dec_i0_rs1_en_d(dec_i0_rs1_en_d),
-		.dec_i0_rs2_en_d(dec_i0_rs2_en_d),
-		.gpr_i0_rs1_d(gpr_i0_rs1_d),
-		.gpr_i0_rs2_d(gpr_i0_rs2_d),
-		.dec_i0_immed_d(dec_i0_immed_d),
-		.dec_i0_br_immed_d(dec_i0_br_immed_d),
-		.i0_ap(i0_ap),
-		.dec_i0_alu_decode_d(dec_i0_alu_decode_d),
-		.dec_i0_branch_d(dec_i0_branch_d),
-		.dec_i0_select_pc_d(dec_i0_select_pc_d),
-		.dec_i0_pc_d(dec_i0_pc_d),
-		.dec_i0_rs1_bypass_en_d(dec_i0_rs1_bypass_en_d),
-		.dec_i0_rs2_bypass_en_d(dec_i0_rs2_bypass_en_d),
-		.dec_i0_result_r(dec_i0_result_r),
-		.lsu_p(lsu_p),
-		.dec_qual_lsu_d(dec_qual_lsu_d),
-		.mul_p(mul_p),
-		.div_p(div_p),
-		.dec_div_cancel(dec_div_cancel),
-		.dec_lsu_offset_d(dec_lsu_offset_d),
-		.dec_csr_ren_d(dec_csr_ren_d),
-		.dec_csr_rddata_d(dec_csr_rddata_d),
-		.dec_tlu_flush_lower_r(dec_tlu_flush_lower_r),
-		.dec_tlu_flush_lower_wb(dec_tlu_flush_lower_wb),
-		.dec_tlu_flush_path_r(dec_tlu_flush_path_r),
-		.dec_tlu_i0_kill_writeb_r(dec_tlu_i0_kill_writeb_r),
-		.dec_tlu_fence_i_r(dec_tlu_fence_i_r),
-		.pred_correct_npc_x(pred_correct_npc_x),
-		.dec_tlu_br0_r_pkt(dec_tlu_br0_r_pkt),
-		.dec_tlu_perfcnt0(dec_tlu_perfcnt0),
-		.dec_tlu_perfcnt1(dec_tlu_perfcnt1),
-		.dec_tlu_perfcnt2(dec_tlu_perfcnt2),
-		.dec_tlu_perfcnt3(dec_tlu_perfcnt3),
-		.dec_i0_predict_p_d(dec_i0_predict_p_d),
-		.i0_predict_fghr_d(i0_predict_fghr_d),
-		.i0_predict_index_d(i0_predict_index_d),
-		.i0_predict_btag_d(i0_predict_btag_d),
-		.dec_fa_error_index(dec_fa_error_index),
-		.dec_lsu_valid_raw_d(dec_lsu_valid_raw_d),
-		.dec_tlu_mrac_ff(dec_tlu_mrac_ff),
-		.dec_data_en(dec_data_en),
-		.dec_ctl_en(dec_ctl_en),
-		.ifu_i0_cinst(ifu_i0_cinst),
-		.trace_rv_trace_pkt(trace_rv_trace_pkt),
-		.dec_tlu_external_ldfwd_disable(dec_tlu_external_ldfwd_disable),
-		.dec_tlu_sideeffect_posted_disable(dec_tlu_sideeffect_posted_disable),
-		.dec_tlu_core_ecc_disable(dec_tlu_core_ecc_disable),
-		.dec_tlu_bpred_disable(dec_tlu_bpred_disable),
-		.dec_tlu_wb_coalescing_disable(dec_tlu_wb_coalescing_disable),
-		.dec_tlu_dma_qos_prty(dec_tlu_dma_qos_prty),
-		.dec_tlu_misc_clk_override(dec_tlu_misc_clk_override),
-		.dec_tlu_ifu_clk_override(dec_tlu_ifu_clk_override),
-		.dec_tlu_lsu_clk_override(dec_tlu_lsu_clk_override),
-		.dec_tlu_bus_clk_override(dec_tlu_bus_clk_override),
-		.dec_tlu_pic_clk_override(dec_tlu_pic_clk_override),
-		.dec_tlu_picio_clk_override(dec_tlu_picio_clk_override),
-		.dec_tlu_dccm_clk_override(dec_tlu_dccm_clk_override),
-		.dec_tlu_icm_clk_override(dec_tlu_icm_clk_override),
-		.dec_tlu_i0_commit_cmt(dec_tlu_i0_commit_cmt),
-		.scan_mode(scan_mode)
-	);
-	eb1_exu #(.pt(pt)) exu(
-		.clk(active_l2clk),
-		.rst_l(core_rst_l),
-		.scan_mode(scan_mode),
-		.dec_data_en(dec_data_en),
-		.dec_ctl_en(dec_ctl_en),
-		.dbg_cmd_wrdata(dbg_cmd_wrdata),
-		.i0_ap(i0_ap),
-		.dec_debug_wdata_rs1_d(dec_debug_wdata_rs1_d),
-		.dec_i0_predict_p_d(dec_i0_predict_p_d),
-		.i0_predict_fghr_d(i0_predict_fghr_d),
-		.i0_predict_index_d(i0_predict_index_d),
-		.i0_predict_btag_d(i0_predict_btag_d),
-		.lsu_result_m(lsu_result_m),
-		.lsu_nonblock_load_data(lsu_nonblock_load_data),
-		.dec_i0_rs1_en_d(dec_i0_rs1_en_d),
-		.dec_i0_rs2_en_d(dec_i0_rs2_en_d),
-		.gpr_i0_rs1_d(gpr_i0_rs1_d),
-		.gpr_i0_rs2_d(gpr_i0_rs2_d),
-		.dec_i0_immed_d(dec_i0_immed_d),
-		.dec_i0_result_r(dec_i0_result_r),
-		.dec_i0_br_immed_d(dec_i0_br_immed_d),
-		.dec_i0_alu_decode_d(dec_i0_alu_decode_d),
-		.dec_i0_branch_d(dec_i0_branch_d),
-		.dec_i0_select_pc_d(dec_i0_select_pc_d),
-		.dec_i0_pc_d(dec_i0_pc_d),
-		.dec_i0_rs1_bypass_en_d(dec_i0_rs1_bypass_en_d),
-		.dec_i0_rs2_bypass_en_d(dec_i0_rs2_bypass_en_d),
-		.dec_csr_ren_d(dec_csr_ren_d),
-		.dec_csr_rddata_d(dec_csr_rddata_d),
-		.dec_qual_lsu_d(dec_qual_lsu_d),
-		.mul_p(mul_p),
-		.div_p(div_p),
-		.dec_div_cancel(dec_div_cancel),
-		.pred_correct_npc_x(pred_correct_npc_x),
-		.dec_tlu_flush_lower_r(dec_tlu_flush_lower_r),
-		.dec_tlu_flush_path_r(dec_tlu_flush_path_r),
-		.dec_extint_stall(dec_extint_stall),
-		.dec_tlu_meihap(dec_tlu_meihap),
-		.exu_lsu_rs1_d(exu_lsu_rs1_d),
-		.exu_lsu_rs2_d(exu_lsu_rs2_d),
-		.exu_flush_final(exu_flush_final),
-		.exu_flush_path_final(exu_flush_path_final),
-		.exu_i0_result_x(exu_i0_result_x),
-		.exu_i0_pc_x(exu_i0_pc_x),
-		.exu_csr_rs1_x(exu_csr_rs1_x),
-		.exu_npc_r(exu_npc_r),
-		.exu_i0_br_hist_r(exu_i0_br_hist_r),
-		.exu_i0_br_error_r(exu_i0_br_error_r),
-		.exu_i0_br_start_error_r(exu_i0_br_start_error_r),
-		.exu_i0_br_index_r(exu_i0_br_index_r),
-		.exu_i0_br_valid_r(exu_i0_br_valid_r),
-		.exu_i0_br_mp_r(exu_i0_br_mp_r),
-		.exu_i0_br_middle_r(exu_i0_br_middle_r),
-		.exu_i0_br_fghr_r(exu_i0_br_fghr_r),
-		.exu_i0_br_way_r(exu_i0_br_way_r),
-		.exu_mp_pkt(exu_mp_pkt),
-		.exu_mp_eghr(exu_mp_eghr),
-		.exu_mp_fghr(exu_mp_fghr),
-		.exu_mp_index(exu_mp_index),
-		.exu_mp_btag(exu_mp_btag),
-		.exu_pmu_i0_br_misp(exu_pmu_i0_br_misp),
-		.exu_pmu_i0_br_ataken(exu_pmu_i0_br_ataken),
-		.exu_pmu_i0_pc4(exu_pmu_i0_pc4),
-		.exu_div_result(exu_div_result),
-		.exu_div_wren(exu_div_wren)
-	);
-	eb1_lsu #(.pt(pt)) lsu(
-		.clk(active_l2clk),
-		.rst_l(core_rst_l),
-		.clk_override(dec_tlu_lsu_clk_override),
-		.dec_tlu_i0_kill_writeb_r(dec_tlu_i0_kill_writeb_r),
-		.lsu_axi_awready(lsu_axi_awready_int),
-		.lsu_axi_wready(lsu_axi_wready_int),
-		.lsu_axi_bvalid(lsu_axi_bvalid_int),
-		.lsu_axi_bid(lsu_axi_bid_int[pt[181-:8] - 1:0]),
-		.lsu_axi_bresp(lsu_axi_bresp_int[1:0]),
-		.lsu_axi_arready(lsu_axi_arready_int),
-		.lsu_axi_rvalid(lsu_axi_rvalid_int),
-		.lsu_axi_rid(lsu_axi_rid_int[pt[181-:8] - 1:0]),
-		.lsu_axi_rdata(lsu_axi_rdata_int[63:0]),
-		.lsu_axi_rresp(lsu_axi_rresp_int[1:0]),
-		.lsu_axi_rlast(lsu_axi_rlast_int),
-		.dec_tlu_flush_lower_r(dec_tlu_flush_lower_r),
-		.dec_tlu_force_halt(dec_tlu_force_halt),
-		.dec_tlu_external_ldfwd_disable(dec_tlu_external_ldfwd_disable),
-		.dec_tlu_wb_coalescing_disable(dec_tlu_wb_coalescing_disable),
-		.dec_tlu_sideeffect_posted_disable(dec_tlu_sideeffect_posted_disable),
-		.dec_tlu_core_ecc_disable(dec_tlu_core_ecc_disable),
-		.exu_lsu_rs1_d(exu_lsu_rs1_d),
-		.exu_lsu_rs2_d(exu_lsu_rs2_d),
-		.dec_lsu_offset_d(dec_lsu_offset_d),
-		.lsu_p(lsu_p),
-		.dec_lsu_valid_raw_d(dec_lsu_valid_raw_d),
-		.dec_tlu_mrac_ff(dec_tlu_mrac_ff),
-		.lsu_result_m(lsu_result_m),
-		.lsu_result_corr_r(lsu_result_corr_r),
-		.lsu_load_stall_any(lsu_load_stall_any),
-		.lsu_store_stall_any(lsu_store_stall_any),
-		.lsu_fastint_stall_any(lsu_fastint_stall_any),
-		.lsu_idle_any(lsu_idle_any),
-		.lsu_active(lsu_active),
-		.lsu_fir_addr(lsu_fir_addr),
-		.lsu_fir_error(lsu_fir_error),
-		.lsu_single_ecc_error_incr(lsu_single_ecc_error_incr),
-		.lsu_error_pkt_r(lsu_error_pkt_r),
-		.lsu_imprecise_error_load_any(lsu_imprecise_error_load_any),
-		.lsu_imprecise_error_store_any(lsu_imprecise_error_store_any),
-		.lsu_imprecise_error_addr_any(lsu_imprecise_error_addr_any),
-		.lsu_nonblock_load_valid_m(lsu_nonblock_load_valid_m),
-		.lsu_nonblock_load_tag_m(lsu_nonblock_load_tag_m),
-		.lsu_nonblock_load_inv_r(lsu_nonblock_load_inv_r),
-		.lsu_nonblock_load_inv_tag_r(lsu_nonblock_load_inv_tag_r),
-		.lsu_nonblock_load_data_valid(lsu_nonblock_load_data_valid),
-		.lsu_nonblock_load_data_error(lsu_nonblock_load_data_error),
-		.lsu_nonblock_load_data_tag(lsu_nonblock_load_data_tag),
-		.lsu_nonblock_load_data(lsu_nonblock_load_data),
-		.lsu_pmu_load_external_m(lsu_pmu_load_external_m),
-		.lsu_pmu_store_external_m(lsu_pmu_store_external_m),
-		.lsu_pmu_misaligned_m(lsu_pmu_misaligned_m),
-		.lsu_pmu_bus_trxn(lsu_pmu_bus_trxn),
-		.lsu_pmu_bus_misaligned(lsu_pmu_bus_misaligned),
-		.lsu_pmu_bus_error(lsu_pmu_bus_error),
-		.lsu_pmu_bus_busy(lsu_pmu_bus_busy),
-		.trigger_pkt_any(trigger_pkt_any),
-		.lsu_trigger_match_m(lsu_trigger_match_m),
-		.dccm_wren(dccm_wren),
-		.dccm_rden(dccm_rden),
-		.dccm_wr_addr_lo(dccm_wr_addr_lo),
-		.dccm_wr_addr_hi(dccm_wr_addr_hi),
-		.dccm_rd_addr_lo(dccm_rd_addr_lo),
-		.dccm_rd_addr_hi(dccm_rd_addr_hi),
-		.dccm_wr_data_lo(dccm_wr_data_lo),
-		.dccm_wr_data_hi(dccm_wr_data_hi),
-		.dccm_rd_data_lo(dccm_rd_data_lo),
-		.dccm_rd_data_hi(dccm_rd_data_hi),
-		.picm_wren(picm_wren),
-		.picm_rden(picm_rden),
-		.picm_mken(picm_mken),
-		.picm_rdaddr(picm_rdaddr),
-		.picm_wraddr(picm_wraddr),
-		.picm_wr_data(picm_wr_data),
-		.picm_rd_data(picm_rd_data),
-		.lsu_axi_awvalid(lsu_axi_awvalid),
-		.lsu_axi_awid(lsu_axi_awid),
-		.lsu_axi_awaddr(lsu_axi_awaddr),
-		.lsu_axi_awregion(lsu_axi_awregion),
-		.lsu_axi_awlen(lsu_axi_awlen),
-		.lsu_axi_awsize(lsu_axi_awsize),
-		.lsu_axi_awburst(lsu_axi_awburst),
-		.lsu_axi_awlock(lsu_axi_awlock),
-		.lsu_axi_awcache(lsu_axi_awcache),
-		.lsu_axi_awprot(lsu_axi_awprot),
-		.lsu_axi_awqos(lsu_axi_awqos),
-		.lsu_axi_wvalid(lsu_axi_wvalid),
-		.lsu_axi_wdata(lsu_axi_wdata),
-		.lsu_axi_wstrb(lsu_axi_wstrb),
-		.lsu_axi_wlast(lsu_axi_wlast),
-		.lsu_axi_bready(lsu_axi_bready),
-		.lsu_axi_arvalid(lsu_axi_arvalid),
-		.lsu_axi_arid(lsu_axi_arid),
-		.lsu_axi_araddr(lsu_axi_araddr),
-		.lsu_axi_arregion(lsu_axi_arregion),
-		.lsu_axi_arlen(lsu_axi_arlen),
-		.lsu_axi_arsize(lsu_axi_arsize),
-		.lsu_axi_arburst(lsu_axi_arburst),
-		.lsu_axi_arlock(lsu_axi_arlock),
-		.lsu_axi_arcache(lsu_axi_arcache),
-		.lsu_axi_arprot(lsu_axi_arprot),
-		.lsu_axi_arqos(lsu_axi_arqos),
-		.lsu_axi_rready(lsu_axi_rready),
-		.lsu_bus_clk_en(lsu_bus_clk_en),
-		.dma_dccm_req(dma_dccm_req),
-		.dma_mem_tag(dma_mem_tag),
-		.dma_mem_addr(dma_mem_addr),
-		.dma_mem_sz(dma_mem_sz),
-		.dma_mem_write(dma_mem_write),
-		.dma_mem_wdata(dma_mem_wdata),
-		.dccm_dma_rvalid(dccm_dma_rvalid),
-		.dccm_dma_ecc_error(dccm_dma_ecc_error),
-		.dccm_dma_rtag(dccm_dma_rtag),
-		.dccm_dma_rdata(dccm_dma_rdata),
-		.dccm_ready(dccm_ready),
-		.scan_mode(scan_mode),
-		.active_clk(active_clk)
-	);
-	eb1_pic_ctrl #(.pt(pt)) pic_ctrl_inst(
-		.clk(free_l2clk),
-		.clk_override(dec_tlu_pic_clk_override),
-		.io_clk_override(dec_tlu_picio_clk_override),
-		.picm_mken(picm_mken),
-		.extintsrc_req({extintsrc_req[pt[56-:12]:1], 1'b0}),
-		.pl(pic_pl[3:0]),
-		.claimid(pic_claimid[7:0]),
-		.meicurpl(dec_tlu_meicurpl[3:0]),
-		.meipt(dec_tlu_meipt[3:0]),
-		.rst_l(core_rst_l),
-		.free_clk(free_clk),
-		.picm_rdaddr(picm_rdaddr),
-		.picm_wraddr(picm_wraddr),
-		.picm_wr_data(picm_wr_data),
-		.picm_wren(picm_wren),
-		.picm_rden(picm_rden),
-		.mexintpend(mexintpend),
-		.picm_rd_data(picm_rd_data),
-		.mhwakeup(mhwakeup),
-		.scan_mode(scan_mode)
-	);
-	eb1_dma_ctrl #(.pt(pt)) dma_ctrl(
-		.clk(free_l2clk),
-		.rst_l(core_rst_l),
-		.clk_override(dec_tlu_misc_clk_override),
-		.dma_axi_awvalid(dma_axi_awvalid_int),
-		.dma_axi_awid(dma_axi_awid_int[pt[1235-:8] - 1:0]),
-		.dma_axi_awaddr(dma_axi_awaddr_int[31:0]),
-		.dma_axi_awsize(dma_axi_awsize_int[2:0]),
-		.dma_axi_wvalid(dma_axi_wvalid_int),
-		.dma_axi_wdata(dma_axi_wdata_int[63:0]),
-		.dma_axi_wstrb(dma_axi_wstrb_int[7:0]),
-		.dma_axi_bready(dma_axi_bready_int),
-		.dma_axi_arvalid(dma_axi_arvalid_int),
-		.dma_axi_arid(dma_axi_arid_int[pt[1235-:8] - 1:0]),
-		.dma_axi_araddr(dma_axi_araddr_int[31:0]),
-		.dma_axi_arsize(dma_axi_arsize_int[2:0]),
-		.dma_axi_rready(dma_axi_rready_int),
-		.free_clk(free_clk),
-		.dma_bus_clk_en(dma_bus_clk_en),
-		.scan_mode(scan_mode),
-		.dbg_cmd_addr(dbg_cmd_addr),
-		.dbg_cmd_wrdata(dbg_cmd_wrdata),
-		.dbg_cmd_valid(dbg_cmd_valid),
-		.dbg_cmd_write(dbg_cmd_write),
-		.dbg_cmd_type(dbg_cmd_type),
-		.dbg_cmd_size(dbg_cmd_size),
-		.dbg_dma_bubble(dbg_dma_bubble),
-		.dma_dbg_ready(dma_dbg_ready),
-		.dma_dbg_cmd_done(dma_dbg_cmd_done),
-		.dma_dbg_cmd_fail(dma_dbg_cmd_fail),
-		.dma_dbg_rddata(dma_dbg_rddata),
-		.dma_dccm_req(dma_dccm_req),
-		.dma_iccm_req(dma_iccm_req),
-		.dma_mem_tag(dma_mem_tag),
-		.dma_mem_addr(dma_mem_addr),
-		.dma_mem_sz(dma_mem_sz),
-		.dma_mem_write(dma_mem_write),
-		.dma_mem_wdata(dma_mem_wdata),
-		.dccm_dma_rvalid(dccm_dma_rvalid),
-		.dccm_dma_ecc_error(dccm_dma_ecc_error),
-		.dccm_dma_rtag(dccm_dma_rtag),
-		.dccm_dma_rdata(dccm_dma_rdata),
-		.iccm_dma_rvalid(iccm_dma_rvalid),
-		.iccm_dma_ecc_error(iccm_dma_ecc_error),
-		.iccm_dma_rtag(iccm_dma_rtag),
-		.iccm_dma_rdata(iccm_dma_rdata),
-		.dma_active(dma_active),
-		.dma_dccm_stall_any(dma_dccm_stall_any),
-		.dma_iccm_stall_any(dma_iccm_stall_any),
-		.dccm_ready(dccm_ready),
-		.iccm_ready(iccm_ready),
-		.dec_tlu_dma_qos_prty(dec_tlu_dma_qos_prty),
-		.dma_pmu_dccm_read(dma_pmu_dccm_read),
-		.dma_pmu_dccm_write(dma_pmu_dccm_write),
-		.dma_pmu_any_read(dma_pmu_any_read),
-		.dma_pmu_any_write(dma_pmu_any_write),
-		.dma_axi_awready(dma_axi_awready),
-		.dma_axi_wready(dma_axi_wready),
-		.dma_axi_bvalid(dma_axi_bvalid),
-		.dma_axi_bresp(dma_axi_bresp),
-		.dma_axi_bid(dma_axi_bid),
-		.dma_axi_arready(dma_axi_arready),
-		.dma_axi_rvalid(dma_axi_rvalid),
-		.dma_axi_rid(dma_axi_rid),
-		.dma_axi_rdata(dma_axi_rdata),
-		.dma_axi_rresp(dma_axi_rresp),
-		.dma_axi_rlast(dma_axi_rlast)
-	);
-	generate
-		if (pt[2038] == 1) begin : Gen_AXI_To_AHB
-			axi4_to_ahb #(
-				.pt(pt),
-				.TAG(pt[181-:8])
-			) lsu_axi4_to_ahb(
-				.clk(free_l2clk),
-				.free_clk(free_clk),
-				.rst_l(core_rst_l),
-				.clk_override(dec_tlu_bus_clk_override),
-				.bus_clk_en(lsu_bus_clk_en),
-				.dec_tlu_force_halt(dec_tlu_force_halt),
-				.axi_awvalid(lsu_axi_awvalid),
-				.axi_awready(lsu_axi_awready_ahb),
-				.axi_awid(lsu_axi_awid[pt[181-:8] - 1:0]),
-				.axi_awaddr(lsu_axi_awaddr[31:0]),
-				.axi_awsize(lsu_axi_awsize[2:0]),
-				.axi_awprot(lsu_axi_awprot[2:0]),
-				.axi_wvalid(lsu_axi_wvalid),
-				.axi_wready(lsu_axi_wready_ahb),
-				.axi_wdata(lsu_axi_wdata[63:0]),
-				.axi_wstrb(lsu_axi_wstrb[7:0]),
-				.axi_wlast(lsu_axi_wlast),
-				.axi_bvalid(lsu_axi_bvalid_ahb),
-				.axi_bready(lsu_axi_bready),
-				.axi_bresp(lsu_axi_bresp_ahb[1:0]),
-				.axi_bid(lsu_axi_bid_ahb[pt[181-:8] - 1:0]),
-				.axi_arvalid(lsu_axi_arvalid),
-				.axi_arready(lsu_axi_arready_ahb),
-				.axi_arid(lsu_axi_arid[pt[181-:8] - 1:0]),
-				.axi_araddr(lsu_axi_araddr[31:0]),
-				.axi_arsize(lsu_axi_arsize[2:0]),
-				.axi_arprot(lsu_axi_arprot[2:0]),
-				.axi_rvalid(lsu_axi_rvalid_ahb),
-				.axi_rready(lsu_axi_rready),
-				.axi_rid(lsu_axi_rid_ahb[pt[181-:8] - 1:0]),
-				.axi_rdata(lsu_axi_rdata_ahb[63:0]),
-				.axi_rresp(lsu_axi_rresp_ahb[1:0]),
-				.axi_rlast(lsu_axi_rlast_ahb),
-				.ahb_haddr(lsu_haddr[31:0]),
-				.ahb_hburst(lsu_hburst),
-				.ahb_hmastlock(lsu_hmastlock),
-				.ahb_hprot(lsu_hprot[3:0]),
-				.ahb_hsize(lsu_hsize[2:0]),
-				.ahb_htrans(lsu_htrans[1:0]),
-				.ahb_hwrite(lsu_hwrite),
-				.ahb_hwdata(lsu_hwdata[63:0]),
-				.ahb_hrdata(lsu_hrdata[63:0]),
-				.ahb_hready(lsu_hready),
-				.ahb_hresp(lsu_hresp),
-				.scan_mode(scan_mode)
-			);
-			axi4_to_ahb #(
-				.pt(pt),
-				.TAG(pt[826-:8])
-			) ifu_axi4_to_ahb(
-				.clk(free_l2clk),
-				.free_clk(free_clk),
-				.rst_l(core_rst_l),
-				.clk_override(dec_tlu_bus_clk_override),
-				.bus_clk_en(ifu_bus_clk_en),
-				.dec_tlu_force_halt(dec_tlu_force_halt),
-				.ahb_haddr(haddr[31:0]),
-				.ahb_hburst(hburst),
-				.ahb_hmastlock(hmastlock),
-				.ahb_hprot(hprot[3:0]),
-				.ahb_hsize(hsize[2:0]),
-				.ahb_htrans(htrans[1:0]),
-				.ahb_hwrite(hwrite),
-				.ahb_hwdata(hwdata_nc[63:0]),
-				.ahb_hrdata(hrdata[63:0]),
-				.ahb_hready(hready),
-				.ahb_hresp(hresp),
-				.axi_awvalid(ifu_axi_awvalid),
-				.axi_awready(ifu_axi_awready_ahb),
-				.axi_awid(ifu_axi_awid[pt[826-:8] - 1:0]),
-				.axi_awaddr(ifu_axi_awaddr[31:0]),
-				.axi_awsize(ifu_axi_awsize[2:0]),
-				.axi_awprot(ifu_axi_awprot[2:0]),
-				.axi_wvalid(ifu_axi_wvalid),
-				.axi_wready(ifu_axi_wready_ahb),
-				.axi_wdata(ifu_axi_wdata[63:0]),
-				.axi_wstrb(ifu_axi_wstrb[7:0]),
-				.axi_wlast(ifu_axi_wlast),
-				.axi_bvalid(ifu_axi_bvalid_ahb),
-				.axi_bready(1'b1),
-				.axi_bresp(ifu_axi_bresp_ahb[1:0]),
-				.axi_bid(ifu_axi_bid_ahb[pt[826-:8] - 1:0]),
-				.axi_arvalid(ifu_axi_arvalid),
-				.axi_arready(ifu_axi_arready_ahb),
-				.axi_arid(ifu_axi_arid[pt[826-:8] - 1:0]),
-				.axi_araddr(ifu_axi_araddr[31:0]),
-				.axi_arsize(ifu_axi_arsize[2:0]),
-				.axi_arprot(ifu_axi_arprot[2:0]),
-				.axi_rvalid(ifu_axi_rvalid_ahb),
-				.axi_rready(ifu_axi_rready),
-				.axi_rid(ifu_axi_rid_ahb[pt[826-:8] - 1:0]),
-				.axi_rdata(ifu_axi_rdata_ahb[63:0]),
-				.axi_rresp(ifu_axi_rresp_ahb[1:0]),
-				.axi_rlast(ifu_axi_rlast_ahb),
-				.scan_mode(scan_mode)
-			);
-			axi4_to_ahb #(
-				.pt(pt),
-				.TAG(pt[12-:8])
-			) sb_axi4_to_ahb(
-				.clk(free_l2clk),
-				.free_clk(free_clk),
-				.rst_l(dbg_rst_l),
-				.clk_override(dec_tlu_bus_clk_override),
-				.bus_clk_en(dbg_bus_clk_en),
-				.dec_tlu_force_halt(1'b0),
-				.axi_awvalid(sb_axi_awvalid),
-				.axi_awready(sb_axi_awready_ahb),
-				.axi_awid(sb_axi_awid[pt[12-:8] - 1:0]),
-				.axi_awaddr(sb_axi_awaddr[31:0]),
-				.axi_awsize(sb_axi_awsize[2:0]),
-				.axi_awprot(sb_axi_awprot[2:0]),
-				.axi_wvalid(sb_axi_wvalid),
-				.axi_wready(sb_axi_wready_ahb),
-				.axi_wdata(sb_axi_wdata[63:0]),
-				.axi_wstrb(sb_axi_wstrb[7:0]),
-				.axi_wlast(sb_axi_wlast),
-				.axi_bvalid(sb_axi_bvalid_ahb),
-				.axi_bready(sb_axi_bready),
-				.axi_bresp(sb_axi_bresp_ahb[1:0]),
-				.axi_bid(sb_axi_bid_ahb[pt[12-:8] - 1:0]),
-				.axi_arvalid(sb_axi_arvalid),
-				.axi_arready(sb_axi_arready_ahb),
-				.axi_arid(sb_axi_arid[pt[12-:8] - 1:0]),
-				.axi_araddr(sb_axi_araddr[31:0]),
-				.axi_arsize(sb_axi_arsize[2:0]),
-				.axi_arprot(sb_axi_arprot[2:0]),
-				.axi_rvalid(sb_axi_rvalid_ahb),
-				.axi_rready(sb_axi_rready),
-				.axi_rid(sb_axi_rid_ahb[pt[12-:8] - 1:0]),
-				.axi_rdata(sb_axi_rdata_ahb[63:0]),
-				.axi_rresp(sb_axi_rresp_ahb[1:0]),
-				.axi_rlast(sb_axi_rlast_ahb),
-				.ahb_haddr(sb_haddr[31:0]),
-				.ahb_hburst(sb_hburst),
-				.ahb_hmastlock(sb_hmastlock),
-				.ahb_hprot(sb_hprot[3:0]),
-				.ahb_hsize(sb_hsize[2:0]),
-				.ahb_htrans(sb_htrans[1:0]),
-				.ahb_hwrite(sb_hwrite),
-				.ahb_hwdata(sb_hwdata[63:0]),
-				.ahb_hrdata(sb_hrdata[63:0]),
-				.ahb_hready(sb_hready),
-				.ahb_hresp(sb_hresp),
-				.scan_mode(scan_mode)
-			);
-			ahb_to_axi4 #(
-				.pt(pt),
-				.TAG(pt[1235-:8])
-			) dma_ahb_to_axi4(
-				.clk(free_l2clk),
-				.rst_l(core_rst_l),
-				.clk_override(dec_tlu_bus_clk_override),
-				.bus_clk_en(dma_bus_clk_en),
-				.axi_awvalid(dma_axi_awvalid_ahb),
-				.axi_awready(dma_axi_awready),
-				.axi_awid(dma_axi_awid_ahb[pt[1235-:8] - 1:0]),
-				.axi_awaddr(dma_axi_awaddr_ahb[31:0]),
-				.axi_awsize(dma_axi_awsize_ahb[2:0]),
-				.axi_awprot(dma_axi_awprot_ahb[2:0]),
-				.axi_awlen(dma_axi_awlen_ahb[7:0]),
-				.axi_awburst(dma_axi_awburst_ahb[1:0]),
-				.axi_wvalid(dma_axi_wvalid_ahb),
-				.axi_wready(dma_axi_wready),
-				.axi_wdata(dma_axi_wdata_ahb[63:0]),
-				.axi_wstrb(dma_axi_wstrb_ahb[7:0]),
-				.axi_wlast(dma_axi_wlast_ahb),
-				.axi_bvalid(dma_axi_bvalid),
-				.axi_bready(dma_axi_bready_ahb),
-				.axi_bresp(dma_axi_bresp[1:0]),
-				.axi_bid(dma_axi_bid[pt[1235-:8] - 1:0]),
-				.axi_arvalid(dma_axi_arvalid_ahb),
-				.axi_arready(dma_axi_arready),
-				.axi_arid(dma_axi_arid_ahb[pt[1235-:8] - 1:0]),
-				.axi_araddr(dma_axi_araddr_ahb[31:0]),
-				.axi_arsize(dma_axi_arsize_ahb[2:0]),
-				.axi_arprot(dma_axi_arprot_ahb[2:0]),
-				.axi_arlen(dma_axi_arlen_ahb[7:0]),
-				.axi_arburst(dma_axi_arburst_ahb[1:0]),
-				.axi_rvalid(dma_axi_rvalid),
-				.axi_rready(dma_axi_rready_ahb),
-				.axi_rid(dma_axi_rid[pt[1235-:8] - 1:0]),
-				.axi_rdata(dma_axi_rdata[63:0]),
-				.axi_rresp(dma_axi_rresp[1:0]),
-				.ahb_haddr(dma_haddr[31:0]),
-				.ahb_hburst(dma_hburst),
-				.ahb_hmastlock(dma_hmastlock),
-				.ahb_hprot(dma_hprot[3:0]),
-				.ahb_hsize(dma_hsize[2:0]),
-				.ahb_htrans(dma_htrans[1:0]),
-				.ahb_hwrite(dma_hwrite),
-				.ahb_hwdata(dma_hwdata[63:0]),
-				.ahb_hrdata(dma_hrdata[63:0]),
-				.ahb_hreadyout(dma_hreadyout),
-				.ahb_hresp(dma_hresp),
-				.ahb_hreadyin(dma_hreadyin),
-				.ahb_hsel(dma_hsel),
-				.scan_mode(scan_mode)
-			);
-		end
-	endgenerate
-	assign lsu_axi_awready_int = (pt[2038] ? lsu_axi_awready_ahb : lsu_axi_awready);
-	assign lsu_axi_wready_int = (pt[2038] ? lsu_axi_wready_ahb : lsu_axi_wready);
-	assign lsu_axi_bvalid_int = (pt[2038] ? lsu_axi_bvalid_ahb : lsu_axi_bvalid);
-	assign lsu_axi_bready_int = (pt[2038] ? lsu_axi_bready_ahb : lsu_axi_bready);
-	assign lsu_axi_bresp_int[1:0] = (pt[2038] ? lsu_axi_bresp_ahb[1:0] : lsu_axi_bresp[1:0]);
-	assign lsu_axi_bid_int[pt[181-:8] - 1:0] = (pt[2038] ? lsu_axi_bid_ahb[pt[181-:8] - 1:0] : lsu_axi_bid[pt[181-:8] - 1:0]);
-	assign lsu_axi_arready_int = (pt[2038] ? lsu_axi_arready_ahb : lsu_axi_arready);
-	assign lsu_axi_rvalid_int = (pt[2038] ? lsu_axi_rvalid_ahb : lsu_axi_rvalid);
-	assign lsu_axi_rid_int[pt[181-:8] - 1:0] = (pt[2038] ? lsu_axi_rid_ahb[pt[181-:8] - 1:0] : lsu_axi_rid[pt[181-:8] - 1:0]);
-	assign lsu_axi_rdata_int[63:0] = (pt[2038] ? lsu_axi_rdata_ahb[63:0] : lsu_axi_rdata[63:0]);
-	assign lsu_axi_rresp_int[1:0] = (pt[2038] ? lsu_axi_rresp_ahb[1:0] : lsu_axi_rresp[1:0]);
-	assign lsu_axi_rlast_int = (pt[2038] ? lsu_axi_rlast_ahb : lsu_axi_rlast);
-	assign ifu_axi_awready_int = (pt[2038] ? ifu_axi_awready_ahb : ifu_axi_awready);
-	assign ifu_axi_wready_int = (pt[2038] ? ifu_axi_wready_ahb : ifu_axi_wready);
-	assign ifu_axi_bvalid_int = (pt[2038] ? ifu_axi_bvalid_ahb : ifu_axi_bvalid);
-	assign ifu_axi_bready_int = (pt[2038] ? ifu_axi_bready_ahb : ifu_axi_bready);
-	assign ifu_axi_bresp_int[1:0] = (pt[2038] ? ifu_axi_bresp_ahb[1:0] : ifu_axi_bresp[1:0]);
-	assign ifu_axi_bid_int[pt[826-:8] - 1:0] = (pt[2038] ? ifu_axi_bid_ahb[pt[826-:8] - 1:0] : ifu_axi_bid[pt[826-:8] - 1:0]);
-	assign ifu_axi_arready_int = (pt[2038] ? ifu_axi_arready_ahb : ifu_axi_arready);
-	assign ifu_axi_rvalid_int = (pt[2038] ? ifu_axi_rvalid_ahb : ifu_axi_rvalid);
-	assign ifu_axi_rid_int[pt[826-:8] - 1:0] = (pt[2038] ? ifu_axi_rid_ahb[pt[826-:8] - 1:0] : ifu_axi_rid[pt[826-:8] - 1:0]);
-	assign ifu_axi_rdata_int[63:0] = (pt[2038] ? ifu_axi_rdata_ahb[63:0] : ifu_axi_rdata[63:0]);
-	assign ifu_axi_rresp_int[1:0] = (pt[2038] ? ifu_axi_rresp_ahb[1:0] : ifu_axi_rresp[1:0]);
-	assign ifu_axi_rlast_int = (pt[2038] ? ifu_axi_rlast_ahb : ifu_axi_rlast);
-	assign sb_axi_awready_int = (pt[2038] ? sb_axi_awready_ahb : sb_axi_awready);
-	assign sb_axi_wready_int = (pt[2038] ? sb_axi_wready_ahb : sb_axi_wready);
-	assign sb_axi_bvalid_int = (pt[2038] ? sb_axi_bvalid_ahb : sb_axi_bvalid);
-	assign sb_axi_bready_int = (pt[2038] ? sb_axi_bready_ahb : sb_axi_bready);
-	assign sb_axi_bresp_int[1:0] = (pt[2038] ? sb_axi_bresp_ahb[1:0] : sb_axi_bresp[1:0]);
-	assign sb_axi_bid_int[pt[12-:8] - 1:0] = (pt[2038] ? sb_axi_bid_ahb[pt[12-:8] - 1:0] : sb_axi_bid[pt[12-:8] - 1:0]);
-	assign sb_axi_arready_int = (pt[2038] ? sb_axi_arready_ahb : sb_axi_arready);
-	assign sb_axi_rvalid_int = (pt[2038] ? sb_axi_rvalid_ahb : sb_axi_rvalid);
-	assign sb_axi_rid_int[pt[12-:8] - 1:0] = (pt[2038] ? sb_axi_rid_ahb[pt[12-:8] - 1:0] : sb_axi_rid[pt[12-:8] - 1:0]);
-	assign sb_axi_rdata_int[63:0] = (pt[2038] ? sb_axi_rdata_ahb[63:0] : sb_axi_rdata[63:0]);
-	assign sb_axi_rresp_int[1:0] = (pt[2038] ? sb_axi_rresp_ahb[1:0] : sb_axi_rresp[1:0]);
-	assign sb_axi_rlast_int = (pt[2038] ? sb_axi_rlast_ahb : sb_axi_rlast);
-	assign dma_axi_awvalid_int = (pt[2038] ? dma_axi_awvalid_ahb : dma_axi_awvalid);
-	assign dma_axi_awid_int[pt[1235-:8] - 1:0] = (pt[2038] ? dma_axi_awid_ahb[pt[1235-:8] - 1:0] : dma_axi_awid[pt[1235-:8] - 1:0]);
-	assign dma_axi_awaddr_int[31:0] = (pt[2038] ? dma_axi_awaddr_ahb[31:0] : dma_axi_awaddr[31:0]);
-	assign dma_axi_awsize_int[2:0] = (pt[2038] ? dma_axi_awsize_ahb[2:0] : dma_axi_awsize[2:0]);
-	assign dma_axi_awprot_int[2:0] = (pt[2038] ? dma_axi_awprot_ahb[2:0] : dma_axi_awprot[2:0]);
-	assign dma_axi_awlen_int[7:0] = (pt[2038] ? dma_axi_awlen_ahb[7:0] : dma_axi_awlen[7:0]);
-	assign dma_axi_awburst_int[1:0] = (pt[2038] ? dma_axi_awburst_ahb[1:0] : dma_axi_awburst[1:0]);
-	assign dma_axi_wvalid_int = (pt[2038] ? dma_axi_wvalid_ahb : dma_axi_wvalid);
-	assign dma_axi_wdata_int[63:0] = (pt[2038] ? dma_axi_wdata_ahb[63:0] : dma_axi_wdata);
-	assign dma_axi_wstrb_int[7:0] = (pt[2038] ? dma_axi_wstrb_ahb[7:0] : dma_axi_wstrb[7:0]);
-	assign dma_axi_wlast_int = (pt[2038] ? dma_axi_wlast_ahb : dma_axi_wlast);
-	assign dma_axi_bready_int = (pt[2038] ? dma_axi_bready_ahb : dma_axi_bready);
-	assign dma_axi_arvalid_int = (pt[2038] ? dma_axi_arvalid_ahb : dma_axi_arvalid);
-	assign dma_axi_arid_int[pt[1235-:8] - 1:0] = (pt[2038] ? dma_axi_arid_ahb[pt[1235-:8] - 1:0] : dma_axi_arid[pt[1235-:8] - 1:0]);
-	assign dma_axi_araddr_int[31:0] = (pt[2038] ? dma_axi_araddr_ahb[31:0] : dma_axi_araddr[31:0]);
-	assign dma_axi_arsize_int[2:0] = (pt[2038] ? dma_axi_arsize_ahb[2:0] : dma_axi_arsize[2:0]);
-	assign dma_axi_arprot_int[2:0] = (pt[2038] ? dma_axi_arprot_ahb[2:0] : dma_axi_arprot[2:0]);
-	assign dma_axi_arlen_int[7:0] = (pt[2038] ? dma_axi_arlen_ahb[7:0] : dma_axi_arlen[7:0]);
-	assign dma_axi_arburst_int[1:0] = (pt[2038] ? dma_axi_arburst_ahb[1:0] : dma_axi_arburst[1:0]);
-	assign dma_axi_rready_int = (pt[2038] ? dma_axi_rready_ahb : dma_axi_rready);
-	assign trace_rv_i_insn_ip[31:0] = trace_rv_trace_pkt[102:71];
-	assign trace_rv_i_address_ip[31:0] = trace_rv_trace_pkt[70:39];
-	assign trace_rv_i_valid_ip = trace_rv_trace_pkt[103];
-	assign trace_rv_i_exception_ip = trace_rv_trace_pkt[38];
-	assign trace_rv_i_ecause_ip[4:0] = trace_rv_trace_pkt[37:33];
-	assign trace_rv_i_interrupt_ip = trace_rv_trace_pkt[32];
-	assign trace_rv_i_tval_ip[31:0] = trace_rv_trace_pkt[31:0];
-endmodule
-module dmi_wrapper (
-	trst_n,
-	tck,
-	tms,
-	tdi,
-	tdo,
-	tdoEnable,
-	core_rst_n,
-	core_clk,
-	jtag_id,
-	rd_data,
-	reg_wr_data,
-	reg_wr_addr,
-	reg_en,
-	reg_wr_en,
-	dmi_hard_reset
-);
-	input trst_n;
-	input tck;
-	input tms;
-	input tdi;
-	output tdo;
-	output tdoEnable;
-	input core_rst_n;
-	input core_clk;
-	input [31:1] jtag_id;
-	input [31:0] rd_data;
-	output [31:0] reg_wr_data;
-	output [6:0] reg_wr_addr;
-	output reg_en;
-	output reg_wr_en;
-	output dmi_hard_reset;
-	wire rd_en;
-	wire wr_en;
-	wire dmireset;
-	rvjtag_tap i_jtag_tap(
-		.trst(trst_n),
-		.tck(tck),
-		.tms(tms),
-		.tdi(tdi),
-		.tdo(tdo),
-		.tdoEnable(tdoEnable),
-		.wr_data(reg_wr_data),
-		.wr_addr(reg_wr_addr),
-		.rd_en(rd_en),
-		.wr_en(wr_en),
-		.rd_data(rd_data),
-		.rd_status(2'b00),
-		.idle(3'h0),
-		.dmi_stat(2'b00),
-		.version(4'h1),
-		.jtag_id(jtag_id),
-		.dmi_hard_reset(dmi_hard_reset),
-		.dmi_reset(dmireset)
-	);
-	dmi_jtag_to_core_sync i_dmi_jtag_to_core_sync(
-		.wr_en(wr_en),
-		.rd_en(rd_en),
-		.rst_n(core_rst_n),
-		.clk(core_clk),
-		.reg_en(reg_en),
-		.reg_wr_en(reg_wr_en)
-	);
-endmodule
-module eb1_uart_rx_prog (
-	i_Clock,
-	rst_ni,
-	i_Rx_Serial,
-	CLKS_PER_BIT,
-	o_Rx_DV,
-	o_Rx_Byte
-);
-	input i_Clock;
-	input rst_ni;
-	input i_Rx_Serial;
-	input [15:0] CLKS_PER_BIT;
-	output o_Rx_DV;
-	output [7:0] o_Rx_Byte;
-	parameter s_IDLE = 3'b000;
-	parameter s_RX_START_BIT = 3'b001;
-	parameter s_RX_DATA_BITS = 3'b010;
-	parameter s_RX_STOP_BIT = 3'b011;
-	parameter s_CLEANUP = 3'b100;
-	reg r_Rx_Data_R;
-	reg r_Rx_Data;
-	reg [15:0] r_Clock_Count;
-	reg [2:0] r_Bit_Index;
-	reg [7:0] r_Rx_Byte;
-	reg r_Rx_DV;
-	reg [2:0] r_SM_Main;
-	always @(posedge i_Clock)
-		if (rst_ni == 1'b0) begin
-			r_Rx_Data_R <= 1'b1;
-			r_Rx_Data <= 1'b1;
-		end
-		else begin
-			r_Rx_Data_R <= i_Rx_Serial;
-			r_Rx_Data <= r_Rx_Data_R;
-		end
-	always @(posedge i_Clock or negedge rst_ni)
-		if (rst_ni == 1'b0) begin
-			r_SM_Main <= s_IDLE;
-			r_Rx_DV <= 1'b0;
-			r_Clock_Count <= 16'h0000;
-			r_Bit_Index <= 3'b000;
-			r_Rx_Byte <= 8'h00;
-		end
-		else
-			case (r_SM_Main)
-				s_IDLE: begin
-					r_Rx_DV <= 1'b0;
-					r_Clock_Count <= 0;
-					r_Bit_Index <= 0;
-					if (r_Rx_Data == 1'b0)
-						r_SM_Main <= s_RX_START_BIT;
-					else
-						r_SM_Main <= s_IDLE;
-				end
-				s_RX_START_BIT:
-					if (r_Clock_Count == ((CLKS_PER_BIT - 1) >> 1)) begin
-						if (r_Rx_Data == 1'b0) begin
-							r_Clock_Count <= 0;
-							r_SM_Main <= s_RX_DATA_BITS;
-						end
-						else
-							r_SM_Main <= s_IDLE;
-					end
-					else begin
-						r_Clock_Count <= r_Clock_Count + 1;
-						r_SM_Main <= s_RX_START_BIT;
-					end
-				s_RX_DATA_BITS:
-					if (r_Clock_Count < (CLKS_PER_BIT - 1)) begin
-						r_Clock_Count <= r_Clock_Count + 1;
-						r_SM_Main <= s_RX_DATA_BITS;
-					end
-					else begin
-						r_Clock_Count <= 0;
-						r_Rx_Byte[r_Bit_Index] <= r_Rx_Data;
-						if (r_Bit_Index < 7) begin
-							r_Bit_Index <= r_Bit_Index + 1;
-							r_SM_Main <= s_RX_DATA_BITS;
-						end
-						else begin
-							r_Bit_Index <= 0;
-							r_SM_Main <= s_RX_STOP_BIT;
-						end
-					end
-				s_RX_STOP_BIT:
-					if (r_Clock_Count < (CLKS_PER_BIT - 1)) begin
-						r_Clock_Count <= r_Clock_Count + 1;
-						r_SM_Main <= s_RX_STOP_BIT;
-					end
-					else begin
-						r_Rx_DV <= 1'b1;
-						r_Clock_Count <= 0;
-						r_SM_Main <= s_CLEANUP;
-					end
-				s_CLEANUP: begin
-					r_SM_Main <= s_IDLE;
-					r_Rx_DV <= 1'b0;
-				end
-				default: r_SM_Main <= s_IDLE;
-			endcase
-	assign o_Rx_DV = r_Rx_DV;
-	assign o_Rx_Byte = r_Rx_Byte;
-endmodule
-module eb1_iccm_controller (
-	clk_i,
-	rst_ni,
-	rx_dv_i,
-	rx_byte_i,
-	we_o,
-	addr_o,
-	wdata_o,
-	reset_o
-);
-	input wire clk_i;
-	input wire rst_ni;
-	input wire rx_dv_i;
-	input wire [7:0] rx_byte_i;
-	output wire we_o;
-	output wire [13:0] addr_o;
-	output wire [31:0] wdata_o;
-	output wire reset_o;
-	reg [1:0] ctrl_fsm_cs;
-	reg [1:0] ctrl_fsm_ns;
-	wire [7:0] rx_byte_d;
-	reg [7:0] rx_byte_q0;
-	reg [7:0] rx_byte_q1;
-	reg [7:0] rx_byte_q2;
-	reg [7:0] rx_byte_q3;
-	reg we_q;
-	reg we_d;
-	reg [13:0] addr_q;
-	reg [13:0] addr_d;
-	reg reset_q;
-	reg reset_d;
-	reg [1:0] byte_count;
-	localparam [1:0] DONE = 3;
-	localparam [1:0] LOAD = 1;
-	localparam [1:0] PROG = 2;
-	localparam [1:0] RESET = 0;
-	always @(*) begin
-		we_d = we_q;
-		addr_d = addr_q;
-		reset_d = reset_q;
-		ctrl_fsm_ns = ctrl_fsm_cs;
-		case (ctrl_fsm_cs)
-			RESET: begin
-				we_d = 1'b0;
-				reset_d = 1'b0;
-				if (rx_dv_i)
-					ctrl_fsm_ns = LOAD;
-				else
-					ctrl_fsm_ns = RESET;
-			end
-			LOAD:
-				if (((byte_count == 2'b11) && (rx_byte_q2 != 8'h0f)) && (rx_byte_d != 8'hff)) begin
-					we_d = 1'b1;
-					ctrl_fsm_ns = PROG;
-				end
-				else
-					ctrl_fsm_ns = DONE;
-			PROG: begin
-				we_d = 1'b0;
-				ctrl_fsm_ns = DONE;
-			end
-			DONE:
-				if (wdata_o == 32'h00000fff) begin
-					ctrl_fsm_ns = DONE;
-					reset_d = 1'b1;
-				end
-				else if (rx_dv_i)
-					ctrl_fsm_ns = LOAD;
-				else
-					ctrl_fsm_ns = DONE;
-			default: ctrl_fsm_ns = RESET;
-		endcase
-	end
-	assign rx_byte_d = rx_byte_i;
-	assign we_o = we_q;
-	assign addr_o = addr_q;
-	assign wdata_o = {rx_byte_q0, rx_byte_q1, rx_byte_q2, rx_byte_q3};
-	assign reset_o = reset_q;
-	always @(posedge clk_i or negedge rst_ni)
-		if (!rst_ni) begin
-			we_q <= 1'b0;
-			addr_q <= 14'b00000000000000;
-			rx_byte_q0 <= 8'b00000000;
-			rx_byte_q1 <= 8'b00000000;
-			rx_byte_q2 <= 8'b00000000;
-			rx_byte_q3 <= 8'b00000000;
-			reset_q <= 1'b0;
-			byte_count <= 2'b00;
-			ctrl_fsm_cs <= RESET;
-		end
-		else begin
-			we_q <= we_d;
-			if (ctrl_fsm_cs == LOAD) begin
-				if (byte_count == 2'b00) begin
-					rx_byte_q0 <= rx_byte_d;
-					byte_count <= 2'b01;
-				end
-				else if (byte_count == 2'b01) begin
-					rx_byte_q1 <= rx_byte_d;
-					byte_count <= 2'b10;
-				end
-				else if (byte_count == 2'b10) begin
-					rx_byte_q2 <= rx_byte_d;
-					byte_count <= 2'b11;
-				end
-				else begin
-					rx_byte_q3 <= rx_byte_d;
-					byte_count <= 2'b00;
-				end
-				addr_q <= addr_d;
-			end
-			if (ctrl_fsm_cs == PROG)
-				addr_q <= addr_d + 2'h2;
-			reset_q <= reset_d;
-			ctrl_fsm_cs <= ctrl_fsm_ns;
-		end
-endmodule
-module eb1_mem (
-	VPWR,
-	VGND,
-	clk,
-	rst_l,
-	dccm_clk_override,
-	icm_clk_override,
-	dec_tlu_core_ecc_disable,
-	dccm_wren,
-	dccm_rden,
-	dccm_wr_addr_lo,
-	dccm_wr_addr_hi,
-	dccm_rd_addr_lo,
-	dccm_rd_addr_hi,
-	dccm_wr_data_lo,
-	dccm_wr_data_hi,
-	dccm_rd_data_lo,
-	dccm_rd_data_hi,
-	dccm_ext_in_pkt,
-	iccm_ext_in_pkt,
-	iccm_rw_addr,
-	iccm_buf_correct_ecc,
-	iccm_correction_state,
-	iccm_wren,
-	iccm_rden,
-	iccm_wr_size,
-	iccm_wr_data,
-	iccm_rd_data,
-	iccm_rd_data_ecc,
-	ic_rw_addr,
-	ic_tag_valid,
-	ic_wr_en,
-	ic_rd_en,
-	ic_premux_data,
-	ic_sel_premux_data,
-	ic_data_ext_in_pkt,
-	ic_tag_ext_in_pkt,
-	ic_wr_data,
-	ic_debug_wr_data,
-	ic_debug_rd_data,
-	ic_debug_addr,
-	ic_debug_rd_en,
-	ic_debug_wr_en,
-	ic_debug_tag_array,
-	ic_debug_way,
-	ic_rd_data,
-	ictag_debug_rd_data,
-	ic_eccerr,
-	ic_parerr,
-	ic_rd_hit,
-	ic_tag_perr,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire VPWR;
-	input wire VGND;
-	input wire clk;
-	input wire rst_l;
-	input wire dccm_clk_override;
-	input wire icm_clk_override;
-	input wire dec_tlu_core_ecc_disable;
-	input wire dccm_wren;
-	input wire dccm_rden;
-	input wire [pt[1398-:9] - 1:0] dccm_wr_addr_lo;
-	input wire [pt[1398-:9] - 1:0] dccm_wr_addr_hi;
-	input wire [pt[1398-:9] - 1:0] dccm_rd_addr_lo;
-	input wire [pt[1398-:9] - 1:0] dccm_rd_addr_hi;
-	input wire [pt[1360-:10] - 1:0] dccm_wr_data_lo;
-	input wire [pt[1360-:10] - 1:0] dccm_wr_data_hi;
-	output wire [pt[1360-:10] - 1:0] dccm_rd_data_lo;
-	output wire [pt[1360-:10] - 1:0] dccm_rd_data_hi;
-	input wire [(pt[1342-:9] * 12) - 1:0] dccm_ext_in_pkt;
-	input wire [(pt[909-:9] * 12) - 1:0] iccm_ext_in_pkt;
-	input wire [pt[936-:9] - 1:1] iccm_rw_addr;
-	input wire iccm_buf_correct_ecc;
-	input wire iccm_correction_state;
-	input wire iccm_wren;
-	input wire iccm_rden;
-	input wire [2:0] iccm_wr_size;
-	input wire [77:0] iccm_wr_data;
-	output wire [63:0] iccm_rd_data;
-	output wire [77:0] iccm_rd_data_ecc;
-	input wire [31:1] ic_rw_addr;
-	input wire [pt[1060-:7] - 1:0] ic_tag_valid;
-	input wire [pt[1060-:7] - 1:0] ic_wr_en;
-	input wire ic_rd_en;
-	input wire [63:0] ic_premux_data;
-	input wire ic_sel_premux_data;
-	input wire [((pt[1060-:7] * pt[1189-:7]) * 12) - 1:0] ic_data_ext_in_pkt;
-	input wire [(pt[1060-:7] * 12) - 1:0] ic_tag_ext_in_pkt;
-	input wire [(pt[1189-:7] * 71) - 1:0] ic_wr_data;
-	input wire [70:0] ic_debug_wr_data;
-	output wire [70:0] ic_debug_rd_data;
-	input wire [pt[1104-:9]:3] ic_debug_addr;
-	input wire ic_debug_rd_en;
-	input wire ic_debug_wr_en;
-	input wire ic_debug_tag_array;
-	input wire [pt[1060-:7] - 1:0] ic_debug_way;
-	output wire [63:0] ic_rd_data;
-	output wire [25:0] ictag_debug_rd_data;
-	output wire [pt[1189-:7] - 1:0] ic_eccerr;
-	output wire [pt[1189-:7] - 1:0] ic_parerr;
-	output wire [pt[1060-:7] - 1:0] ic_rd_hit;
-	output wire ic_tag_perr;
-	input wire scan_mode;
-	wire active_clk;
-	rvoclkhdr active_cg(
-		.en(1'b1),
-		.l1clk(active_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	generate
-		if (pt[1365-:5] == 1) begin : Gen_dccm_enable
-			eb1_lsu_dccm_mem #(.pt(pt)) dccm(
-				.clk_override(dccm_clk_override),
-				.VPWR(VPWR),
-				.VGND(VGND),
-				.clk(clk),
-				.active_clk(active_clk),
-				.rst_l(rst_l),
-				.dccm_wren(dccm_wren),
-				.dccm_rden(dccm_rden),
-				.dccm_wr_addr_lo(dccm_wr_addr_lo),
-				.dccm_wr_addr_hi(dccm_wr_addr_hi),
-				.dccm_rd_addr_lo(dccm_rd_addr_lo),
-				.dccm_rd_addr_hi(dccm_rd_addr_hi),
-				.dccm_wr_data_lo(dccm_wr_data_lo),
-				.dccm_wr_data_hi(dccm_wr_data_hi),
-				.dccm_ext_in_pkt(dccm_ext_in_pkt),
-				.dccm_rd_data_lo(dccm_rd_data_lo),
-				.dccm_rd_data_hi(dccm_rd_data_hi),
-				.scan_mode(scan_mode)
-			);
-		end
-		else begin : Gen_dccm_disable
-			assign dccm_rd_data_lo = {pt[1360-:10] {1'sb0}};
-			assign dccm_rd_data_hi = {pt[1360-:10] {1'sb0}};
-		end
-	endgenerate
-	generate
-		if (pt[1120-:5]) begin : icache
-			eb1_ifu_ic_mem #(.pt(pt)) icm(
-				.clk_override(icm_clk_override),
-				.*
-			);
-		end
-		else begin
-			assign ic_rd_hit[pt[1060-:7] - 1:0] = {pt[1060-:7] {1'sb0}};
-			assign ic_tag_perr = 1'b0;
-			assign ic_rd_data = {64 {1'sb0}};
-			assign ictag_debug_rd_data = {26 {1'sb0}};
-		end
-	endgenerate
-	generate
-		if (pt[927-:5]) begin : iccm
-			eb1_ifu_iccm_mem #(.pt(pt)) iccm(
-				.VPWR(VPWR),
-				.VGND(VGND),
-				.clk(clk),
-				.active_clk(active_clk),
-				.rst_l(rst_l),
-				.iccm_wren(iccm_wren),
-				.iccm_rden(iccm_rden),
-				.iccm_buf_correct_ecc(iccm_buf_correct_ecc),
-				.iccm_correction_state(iccm_correction_state),
-				.iccm_wr_size(iccm_wr_size),
-				.iccm_wr_data(iccm_wr_data),
-				.iccm_ext_in_pkt(iccm_ext_in_pkt),
-				.iccm_rd_data_ecc(iccm_rd_data_ecc),
-				.scan_mode(scan_mode),
-				.clk_override(icm_clk_override),
-				.iccm_rw_addr(iccm_rw_addr[pt[936-:9] - 1:1]),
-				.iccm_rd_data(iccm_rd_data[63:0])
-			);
-		end
-		else begin
-			assign iccm_rd_data = {64 {1'sb0}};
-			assign iccm_rd_data_ecc = {78 {1'sb0}};
-		end
-	endgenerate
-endmodule
-module eb1_pic_ctrl (
-	clk,
-	free_clk,
-	rst_l,
-	clk_override,
-	io_clk_override,
-	extintsrc_req,
-	picm_rdaddr,
-	picm_wraddr,
-	picm_wr_data,
-	picm_wren,
-	picm_rden,
-	picm_mken,
-	meicurpl,
-	meipt,
-	mexintpend,
-	claimid,
-	pl,
-	picm_rd_data,
-	mhwakeup,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire free_clk;
-	input wire rst_l;
-	input wire clk_override;
-	input wire io_clk_override;
-	input wire [pt[44-:13] - 1:0] extintsrc_req;
-	input wire [31:0] picm_rdaddr;
-	input wire [31:0] picm_wraddr;
-	input wire [31:0] picm_wr_data;
-	input wire picm_wren;
-	input wire picm_rden;
-	input wire picm_mken;
-	input wire [3:0] meicurpl;
-	input wire [3:0] meipt;
-	output wire mexintpend;
-	output wire [7:0] claimid;
-	output wire [3:0] pl;
-	output wire [31:0] picm_rd_data;
-	output wire mhwakeup;
-	input wire scan_mode;
-	localparam NUM_LEVELS = $clog2(pt[44-:13]);
-	localparam INTPRIORITY_BASE_ADDR = pt[130-:36];
-	localparam INTPEND_BASE_ADDR = pt[130-:36] + 32'h00001000;
-	localparam INTENABLE_BASE_ADDR = pt[130-:36] + 32'h00002000;
-	localparam EXT_INTR_PIC_CONFIG = pt[130-:36] + 32'h00003000;
-	localparam EXT_INTR_GW_CONFIG = pt[130-:36] + 32'h00004000;
-	localparam EXT_INTR_GW_CLEAR = pt[130-:36] + 32'h00005000;
-	localparam INTPEND_SIZE = (pt[44-:13] < 32 ? 32 : (pt[44-:13] < 64 ? 64 : (pt[44-:13] < 128 ? 128 : (pt[44-:13] < 256 ? 256 : (pt[44-:13] < 512 ? 512 : 1024)))));
-	localparam INT_GRPS = INTPEND_SIZE / 32;
-	localparam INTPRIORITY_BITS = 4;
-	localparam ID_BITS = 8;
-	localparam signed [(pt[44-:13] * 32) - 1:0] GW_CONFIG = {pt[44-:13] {32'sd0}};
-	localparam INT_ENABLE_GRPS = (pt[44-:13] - 1) / 4;
-	wire [pt[44-:13] - 1:0] intenable_clk_enable;
-	wire [INT_ENABLE_GRPS:0] intenable_clk_enable_grp;
-	wire [INT_ENABLE_GRPS:0] gw_clk;
-	wire addr_intpend_base_match;
-	wire raddr_config_pic_match;
-	wire raddr_intenable_base_match;
-	wire raddr_intpriority_base_match;
-	wire raddr_config_gw_base_match;
-	wire waddr_config_pic_match;
-	wire waddr_intpriority_base_match;
-	wire waddr_intenable_base_match;
-	wire waddr_config_gw_base_match;
-	wire addr_clear_gw_base_match;
-	wire mexintpend_in;
-	wire mhwakeup_in;
-	wire intpend_reg_read;
-	wire [31:0] picm_rd_data_in;
-	reg [31:0] intpend_rd_out;
-	reg intenable_rd_out;
-	reg [3:0] intpriority_rd_out;
-	reg [1:0] gw_config_rd_out;
-	wire [(pt[44-:13] * 4) - 1:0] intpriority_reg;
-	wire [(pt[44-:13] * 4) - 1:0] intpriority_reg_inv;
-	wire [pt[44-:13] - 1:0] intpriority_reg_we;
-	wire [pt[44-:13] - 1:0] intpriority_reg_re;
-	wire [(pt[44-:13] * 2) - 1:0] gw_config_reg;
-	wire [pt[44-:13] - 1:0] intenable_reg;
-	wire [pt[44-:13] - 1:0] intenable_reg_we;
-	wire [pt[44-:13] - 1:0] intenable_reg_re;
-	wire [pt[44-:13] - 1:0] gw_config_reg_we;
-	wire [pt[44-:13] - 1:0] gw_config_reg_re;
-	wire [pt[44-:13] - 1:0] gw_clear_reg_we;
-	wire [INTPEND_SIZE - 1:0] intpend_reg_extended;
-	wire [(pt[44-:13] * 4) - 1:0] intpend_w_prior_en;
-	wire [(pt[44-:13] * 8) - 1:0] intpend_id;
-	wire [3:0] maxint;
-	wire [3:0] selected_int_priority;
-	wire [(INT_GRPS * 32) - 1:0] intpend_rd_part_out;
-	wire config_reg;
-	wire intpriord;
-	wire config_reg_we;
-	wire config_reg_re;
-	wire config_reg_in;
-	wire prithresh_reg_write;
-	wire prithresh_reg_read;
-	wire intpriority_reg_read;
-	wire intenable_reg_read;
-	wire gw_config_reg_read;
-	wire picm_wren_ff;
-	wire picm_rden_ff;
-	wire [31:0] picm_raddr_ff;
-	wire [31:0] picm_waddr_ff;
-	wire [31:0] picm_wr_data_ff;
-	reg [3:0] mask;
-	wire picm_mken_ff;
-	wire [7:0] claimid_in;
-	wire [3:0] pl_in;
-	wire [3:0] pl_in_q;
-	wire [pt[44-:13] - 1:0] extintsrc_req_sync;
-	wire [pt[44-:13] - 1:0] extintsrc_req_gw;
-	wire picm_bypass_ff;
-	wire pic_raddr_c1_clken;
-	wire pic_waddr_c1_clken;
-	wire pic_data_c1_clken;
-	wire pic_pri_c1_clken;
-	wire pic_int_c1_clken;
-	wire gw_config_c1_clken;
-	wire pic_raddr_c1_clk;
-	wire pic_data_c1_clk;
-	wire pic_pri_c1_clk;
-	wire pic_int_c1_clk;
-	wire gw_config_c1_clk;
-	assign pic_raddr_c1_clken = (picm_mken | picm_rden) | clk_override;
-	assign pic_data_c1_clken = picm_wren | clk_override;
-	assign pic_pri_c1_clken = ((waddr_intpriority_base_match & picm_wren_ff) | (raddr_intpriority_base_match & picm_rden_ff)) | clk_override;
-	assign pic_int_c1_clken = ((waddr_intenable_base_match & picm_wren_ff) | (raddr_intenable_base_match & picm_rden_ff)) | clk_override;
-	assign gw_config_c1_clken = ((waddr_config_gw_base_match & picm_wren_ff) | (raddr_config_gw_base_match & picm_rden_ff)) | clk_override;
-	rvoclkhdr pic_addr_c1_cgc(
-		.en(pic_raddr_c1_clken),
-		.l1clk(pic_raddr_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr pic_data_c1_cgc(
-		.en(pic_data_c1_clken),
-		.l1clk(pic_data_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr pic_pri_c1_cgc(
-		.en(pic_pri_c1_clken),
-		.l1clk(pic_pri_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr pic_int_c1_cgc(
-		.en(pic_int_c1_clken),
-		.l1clk(pic_int_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr gw_config_c1_cgc(
-		.en(gw_config_c1_clken),
-		.l1clk(gw_config_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	assign raddr_intenable_base_match = picm_raddr_ff[31:NUM_LEVELS + 2] == INTENABLE_BASE_ADDR[31:NUM_LEVELS + 2];
-	assign raddr_intpriority_base_match = picm_raddr_ff[31:NUM_LEVELS + 2] == INTPRIORITY_BASE_ADDR[31:NUM_LEVELS + 2];
-	assign raddr_config_gw_base_match = picm_raddr_ff[31:NUM_LEVELS + 2] == EXT_INTR_GW_CONFIG[31:NUM_LEVELS + 2];
-	assign raddr_config_pic_match = picm_raddr_ff[31:0] == EXT_INTR_PIC_CONFIG[31:0];
-	assign addr_intpend_base_match = picm_raddr_ff[31:6] == INTPEND_BASE_ADDR[31:6];
-	assign waddr_config_pic_match = picm_waddr_ff[31:0] == EXT_INTR_PIC_CONFIG[31:0];
-	assign addr_clear_gw_base_match = picm_waddr_ff[31:NUM_LEVELS + 2] == EXT_INTR_GW_CLEAR[31:NUM_LEVELS + 2];
-	assign waddr_intpriority_base_match = picm_waddr_ff[31:NUM_LEVELS + 2] == INTPRIORITY_BASE_ADDR[31:NUM_LEVELS + 2];
-	assign waddr_intenable_base_match = picm_waddr_ff[31:NUM_LEVELS + 2] == INTENABLE_BASE_ADDR[31:NUM_LEVELS + 2];
-	assign waddr_config_gw_base_match = picm_waddr_ff[31:NUM_LEVELS + 2] == EXT_INTR_GW_CONFIG[31:NUM_LEVELS + 2];
-	assign picm_bypass_ff = (picm_rden_ff & picm_wren_ff) & (picm_raddr_ff[31:0] == picm_waddr_ff[31:0]);
-	rvdff #(.WIDTH(32)) picm_radd_flop(
-		.rst_l(rst_l),
-		.din(picm_rdaddr),
-		.dout(picm_raddr_ff),
-		.clk(pic_raddr_c1_clk)
-	);
-	rvdff #(.WIDTH(32)) picm_wadd_flop(
-		.rst_l(rst_l),
-		.din(picm_wraddr),
-		.dout(picm_waddr_ff),
-		.clk(pic_data_c1_clk)
-	);
-	rvdff #(.WIDTH(1)) picm_wre_flop(
-		.rst_l(rst_l),
-		.din(picm_wren),
-		.dout(picm_wren_ff),
-		.clk(free_clk)
-	);
-	rvdff #(.WIDTH(1)) picm_rde_flop(
-		.rst_l(rst_l),
-		.din(picm_rden),
-		.dout(picm_rden_ff),
-		.clk(free_clk)
-	);
-	rvdff #(.WIDTH(1)) picm_mke_flop(
-		.rst_l(rst_l),
-		.din(picm_mken),
-		.dout(picm_mken_ff),
-		.clk(free_clk)
-	);
-	rvdff #(.WIDTH(32)) picm_dat_flop(
-		.rst_l(rst_l),
-		.din(picm_wr_data[31:0]),
-		.dout(picm_wr_data_ff[31:0]),
-		.clk(pic_data_c1_clk)
-	);
-	genvar p;
-	generate
-		for (p = 0; p <= INT_ENABLE_GRPS; p = p + 1) begin : IO_CLK_GRP
-			if (p == INT_ENABLE_GRPS) begin : LAST_GRP
-				assign intenable_clk_enable_grp[p] = |intenable_clk_enable[pt[44-:13] - 1:p * 4] | io_clk_override;
-				rvoclkhdr intenable_c1_cgc(
-					.en(intenable_clk_enable_grp[p]),
-					.l1clk(gw_clk[p]),
-					.clk(clk),
-					.scan_mode(scan_mode)
-				);
-			end
-			else begin : CLK_GRPS
-				assign intenable_clk_enable_grp[p] = |intenable_clk_enable[(p * 4) + 3:p * 4] | io_clk_override;
-				rvoclkhdr intenable_c1_cgc(
-					.en(intenable_clk_enable_grp[p]),
-					.l1clk(gw_clk[p]),
-					.clk(clk),
-					.scan_mode(scan_mode)
-				);
-			end
-		end
-	endgenerate
-	genvar i;
-	generate
-		for (i = 0; i < pt[44-:13]; i = i + 1) begin : SETREG
-			if (i > 0) begin : NON_ZERO_INT
-				assign intpriority_reg_we[i] = (waddr_intpriority_base_match & (picm_waddr_ff[NUM_LEVELS + 1:2] == i)) & picm_wren_ff;
-				assign intpriority_reg_re[i] = (raddr_intpriority_base_match & (picm_raddr_ff[NUM_LEVELS + 1:2] == i)) & picm_rden_ff;
-				assign intenable_reg_we[i] = (waddr_intenable_base_match & (picm_waddr_ff[NUM_LEVELS + 1:2] == i)) & picm_wren_ff;
-				assign intenable_reg_re[i] = (raddr_intenable_base_match & (picm_raddr_ff[NUM_LEVELS + 1:2] == i)) & picm_rden_ff;
-				assign gw_config_reg_we[i] = (waddr_config_gw_base_match & (picm_waddr_ff[NUM_LEVELS + 1:2] == i)) & picm_wren_ff;
-				assign gw_config_reg_re[i] = (raddr_config_gw_base_match & (picm_raddr_ff[NUM_LEVELS + 1:2] == i)) & picm_rden_ff;
-				assign gw_clear_reg_we[i] = (addr_clear_gw_base_match & (picm_waddr_ff[NUM_LEVELS + 1:2] == i)) & picm_wren_ff;
-				rvdffs #(.WIDTH(INTPRIORITY_BITS)) intpriority_ff(
-					.rst_l(rst_l),
-					.en(intpriority_reg_we[i]),
-					.din(picm_wr_data_ff[3:0]),
-					.dout(intpriority_reg[i * 4+:4]),
-					.clk(pic_pri_c1_clk)
-				);
-				rvdffs #(.WIDTH(1)) intenable_ff(
-					.rst_l(rst_l),
-					.en(intenable_reg_we[i]),
-					.din(picm_wr_data_ff[0]),
-					.dout(intenable_reg[i]),
-					.clk(pic_int_c1_clk)
-				);
-				assign intenable_clk_enable[i] = ((gw_config_reg[(i * 2) + 1] | intenable_reg_we[i]) | intenable_reg[i]) | gw_clear_reg_we[i];
-				rvsyncss_fpga #(.WIDTH(1)) sync_inst(
-					.gw_clk(gw_clk[i / 4]),
-					.rawclk(clk),
-					.clken(intenable_clk_enable_grp[i / 4]),
-					.dout(extintsrc_req_sync[i]),
-					.din(extintsrc_req[i]),
-					.rst_l(rst_l)
-				);
-				rvdffs #(.WIDTH(2)) gw_config_ff(
-					.rst_l(rst_l),
-					.en(gw_config_reg_we[i]),
-					.din(picm_wr_data_ff[1:0]),
-					.dout(gw_config_reg[i * 2+:2]),
-					.clk(gw_config_c1_clk)
-				);
-				eb1_configurable_gw config_gw_inst(
-					.rst_l(rst_l),
-					.gw_clk(gw_clk[i / 4]),
-					.rawclk(clk),
-					.clken(intenable_clk_enable_grp[i / 4]),
-					.extintsrc_req_sync(extintsrc_req_sync[i]),
-					.meigwctrl_polarity(gw_config_reg[i * 2]),
-					.meigwctrl_type(gw_config_reg[(i * 2) + 1]),
-					.meigwclr(gw_clear_reg_we[i]),
-					.extintsrc_req_config(extintsrc_req_gw[i])
-				);
-			end
-			else begin : INT_ZERO
-				assign intpriority_reg_we[i] = 1'b0;
-				assign intpriority_reg_re[i] = 1'b0;
-				assign intenable_reg_we[i] = 1'b0;
-				assign intenable_reg_re[i] = 1'b0;
-				assign gw_config_reg_we[i] = 1'b0;
-				assign gw_config_reg_re[i] = 1'b0;
-				assign gw_clear_reg_we[i] = 1'b0;
-				assign gw_config_reg[i * 2+:2] = {2 {1'sb0}};
-				assign intpriority_reg[i * 4+:4] = {INTPRIORITY_BITS {1'b0}};
-				assign intenable_reg[i] = 1'b0;
-				assign extintsrc_req_gw[i] = 1'b0;
-				assign extintsrc_req_sync[i] = 1'b0;
-				assign intenable_clk_enable[i] = 1'b0;
-			end
-			assign intpriority_reg_inv[i * 4+:4] = (intpriord ? ~intpriority_reg[i * 4+:4] : intpriority_reg[i * 4+:4]);
-			assign intpend_w_prior_en[i * 4+:4] = {INTPRIORITY_BITS {extintsrc_req_gw[i] & intenable_reg[i]}} & intpriority_reg_inv[i * 4+:4];
-			assign intpend_id[i * 8+:8] = i;
-		end
-	endgenerate
-	assign pl_in[3:0] = selected_int_priority[3:0];
-	genvar l;
-	genvar m;
-	genvar j;
-	genvar k;
-	generate
-		if (pt[135-:5] == 1) begin : genblock
-			wire [(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))))) + 1) * 4) + ((((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) * 4) - 1) : (((((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1)))) + 1) * 4) + ((((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) * 4) - 1)):(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) * 4 : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) * 4)] level_intpend_w_prior_en;
-			wire [(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))))) + 1) * 8) + ((((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) * 8) - 1) : (((((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1)))) + 1) * 8) + ((((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) * 8) - 1)):(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) * 8 : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) * 8)] level_intpend_id;
-			wire [((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))))) + 1) * 4) + (((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) * 4) - 1) : ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)))) + 1) * 4) + (((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) * 4) - 1)):((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) * 4 : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) * 4)] levelx_intpend_w_prior_en;
-			wire [((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))))) + 1) * 8) + (((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) * 8) - 1) : ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)))) + 1) * 8) + (((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) * 8) - 1)):((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) * 8 : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) * 8)] levelx_intpend_id;
-			assign level_intpend_w_prior_en[4 * (((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) : (((((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1))) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) - (((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2)) - 1) : ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) : (((((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1))) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - ((((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) : (((((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1))) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) - (((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2)) - 1) : ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) : (((((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1))) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1)))))+:4 * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))] = {12'b000000000000, intpend_w_prior_en[4 * ((pt[44-:13] - 1) - (pt[44-:13] - 1))+:4 * pt[44-:13]]};
-			assign level_intpend_id[8 * (((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) : (((((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1))) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) - (((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2)) - 1) : ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) : (((((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1))) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - ((((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) : (((((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1))) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) - (((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2)) - 1) : ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) : (((((NUM_LEVELS / 2) >= 0 ? 0 : NUM_LEVELS / 2) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1) : (pt[44-:13] + 2) - ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 2 : ((pt[44-:13] + 2) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1))) + ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) - 1)) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1)))))+:8 * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))] = {24'b000000000000000000000000, intpend_id[8 * ((pt[44-:13] - 1) - (pt[44-:13] - 1))+:8 * pt[44-:13]]};
-			wire [((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) * 4) - 1 : ((1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2)))) * 4) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) * 4) - 1)):((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? 0 : (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) * 4)] l2_intpend_w_prior_en_ff;
-			wire [((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) * 8) - 1 : ((1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2)))) * 8) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) * 8) - 1)):((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? 0 : (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) * 8)] l2_intpend_id_ff;
-			assign levelx_intpend_w_prior_en[4 * ((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) : ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) - ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)) - 1) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) : ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - (((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) : ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) - ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)) - 1) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) : ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)))))+:4 * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))] = {{4 {1'b0}}, l2_intpend_w_prior_en_ff[4 * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? pt[44-:13] / (2 ** (NUM_LEVELS / 2)) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2))))) - 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2)))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? pt[44-:13] / (2 ** (NUM_LEVELS / 2)) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2))))) - 1)) : (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? pt[44-:13] / (2 ** (NUM_LEVELS / 2)) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2))))) - 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2)))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? pt[44-:13] / (2 ** (NUM_LEVELS / 2)) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2))))) - 1)))+:4 * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2))))]};
-			assign levelx_intpend_id[8 * ((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) : ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) - ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)) - 1) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) : ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - (((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) : ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) - ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)) - 1) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) : ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - ((NUM_LEVELS / 2) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) - 1)) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)))))+:8 * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))] = {{8 {1'b1}}, l2_intpend_id_ff[8 * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? pt[44-:13] / (2 ** (NUM_LEVELS / 2)) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2))))) - 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2)))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? pt[44-:13] / (2 ** (NUM_LEVELS / 2)) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2))))) - 1)) : (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? pt[44-:13] / (2 ** (NUM_LEVELS / 2)) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2))))) - 1) - (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2)))) - 1) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? pt[44-:13] / (2 ** (NUM_LEVELS / 2)) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2))))) - 1)))+:8 * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1 : 1 - (pt[44-:13] / (2 ** (NUM_LEVELS / 2))))]};
-			for (l = 0; l < (NUM_LEVELS / 2); l = l + 1) begin : TOP_LEVEL
-				for (m = 0; m <= (pt[44-:13] / (2 ** (l + 1))); m = m + 1) begin : COMPARE
-					if (m == (pt[44-:13] / (2 ** (l + 1)))) begin
-						assign level_intpend_w_prior_en[(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? l + 1 : (NUM_LEVELS / 2) - (l + 1)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? m + 1 : (pt[44-:13] + 2) - (m + 1)) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - (((((NUM_LEVELS / 2) >= 0 ? l + 1 : (NUM_LEVELS / 2) - (l + 1)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? m + 1 : (pt[44-:13] + 2) - (m + 1))) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))))) * 4+:4] = {4 {1'sb0}};
-						assign level_intpend_id[(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? l + 1 : (NUM_LEVELS / 2) - (l + 1)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? m + 1 : (pt[44-:13] + 2) - (m + 1)) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - (((((NUM_LEVELS / 2) >= 0 ? l + 1 : (NUM_LEVELS / 2) - (l + 1)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? m + 1 : (pt[44-:13] + 2) - (m + 1))) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))))) * 8+:8] = {8 {1'sb0}};
-					end
-					eb1_cmp_and_mux #(
-						.ID_BITS(ID_BITS),
-						.INTPRIORITY_BITS(INTPRIORITY_BITS)
-					) cmp_l1(
-						.a_id(level_intpend_id[(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? l : (NUM_LEVELS / 2) - l) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? 2 * m : (pt[44-:13] + 2) - (2 * m)) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - (((((NUM_LEVELS / 2) >= 0 ? l : (NUM_LEVELS / 2) - l) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? 2 * m : (pt[44-:13] + 2) - (2 * m))) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))))) * 8+:8]),
-						.a_priority(level_intpend_w_prior_en[(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? l : (NUM_LEVELS / 2) - l) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? 2 * m : (pt[44-:13] + 2) - (2 * m)) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - (((((NUM_LEVELS / 2) >= 0 ? l : (NUM_LEVELS / 2) - l) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? 2 * m : (pt[44-:13] + 2) - (2 * m))) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))))) * 4+:4]),
-						.b_id(level_intpend_id[(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? l : (NUM_LEVELS / 2) - l) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? (2 * m) + 1 : (pt[44-:13] + 2) - ((2 * m) + 1)) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - (((((NUM_LEVELS / 2) >= 0 ? l : (NUM_LEVELS / 2) - l) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? (2 * m) + 1 : (pt[44-:13] + 2) - ((2 * m) + 1))) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))))) * 8+:8]),
-						.b_priority(level_intpend_w_prior_en[(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? l : (NUM_LEVELS / 2) - l) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? (2 * m) + 1 : (pt[44-:13] + 2) - ((2 * m) + 1)) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - (((((NUM_LEVELS / 2) >= 0 ? l : (NUM_LEVELS / 2) - l) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? (2 * m) + 1 : (pt[44-:13] + 2) - ((2 * m) + 1))) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))))) * 4+:4]),
-						.out_id(level_intpend_id[(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? l + 1 : (NUM_LEVELS / 2) - (l + 1)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? m : (pt[44-:13] + 2) - m) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - (((((NUM_LEVELS / 2) >= 0 ? l + 1 : (NUM_LEVELS / 2) - (l + 1)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? m : (pt[44-:13] + 2) - m)) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))))) * 8+:8]),
-						.out_priority(level_intpend_w_prior_en[(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? l + 1 : (NUM_LEVELS / 2) - (l + 1)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? m : (pt[44-:13] + 2) - m) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - (((((NUM_LEVELS / 2) >= 0 ? l + 1 : (NUM_LEVELS / 2) - (l + 1)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? m : (pt[44-:13] + 2) - m)) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))))) * 4+:4])
-					);
-				end
-			end
-			for (i = 0; i <= (pt[44-:13] / (2 ** (NUM_LEVELS / 2))); i = i + 1) begin : MIDDLE_FLOPS
-				rvdff #(.WIDTH(INTPRIORITY_BITS)) leveb1_intpend_prior_reg(
-					.rst_l(rst_l),
-					.din(level_intpend_w_prior_en[(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - (NUM_LEVELS / 2)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? i : (pt[44-:13] + 2) - i) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - (((((NUM_LEVELS / 2) >= 0 ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - (NUM_LEVELS / 2)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? i : (pt[44-:13] + 2) - i)) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))))) * 4+:4]),
-					.dout(l2_intpend_w_prior_en_ff[((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? i : (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) - i) * 4+:4]),
-					.clk(free_clk)
-				);
-				rvdff #(.WIDTH(ID_BITS)) leveb1_intpend_id_reg(
-					.rst_l(rst_l),
-					.din(level_intpend_id[(((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))) >= ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) ? (((NUM_LEVELS / 2) >= 0 ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - (NUM_LEVELS / 2)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? i : (pt[44-:13] + 2) - i) : ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? 0 : pt[44-:13] + 2) : ((pt[44-:13] + 2) >= 0 ? (NUM_LEVELS / 2) * (pt[44-:13] + 3) : (pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2))))) - (((((NUM_LEVELS / 2) >= 0 ? NUM_LEVELS / 2 : (NUM_LEVELS / 2) - (NUM_LEVELS / 2)) * ((pt[44-:13] + 2) >= 0 ? pt[44-:13] + 3 : 1 - (pt[44-:13] + 2))) + ((pt[44-:13] + 2) >= 0 ? i : (pt[44-:13] + 2) - i)) - ((NUM_LEVELS / 2) >= 0 ? ((pt[44-:13] + 2) >= 0 ? (((NUM_LEVELS / 2) + 1) * (pt[44-:13] + 3)) - 1 : (((NUM_LEVELS / 2) + 1) * (1 - (pt[44-:13] + 2))) + (pt[44-:13] + 1)) : ((pt[44-:13] + 2) >= 0 ? ((1 - (NUM_LEVELS / 2)) * (pt[44-:13] + 3)) + (((NUM_LEVELS / 2) * (pt[44-:13] + 3)) - 1) : ((1 - (NUM_LEVELS / 2)) * (1 - (pt[44-:13] + 2))) + (((pt[44-:13] + 2) + ((NUM_LEVELS / 2) * (1 - (pt[44-:13] + 2)))) - 1))))) * 8+:8]),
-					.dout(l2_intpend_id_ff[((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) >= 0 ? i : (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) - i) * 8+:8]),
-					.clk(free_clk)
-				);
-			end
-			for (j = NUM_LEVELS / 2; j < NUM_LEVELS; j = j + 1) begin : BOT_LEVELS
-				for (k = 0; k <= (pt[44-:13] / (2 ** (j + 1))); k = k + 1) begin : COMPARE
-					if (k == (pt[44-:13] / (2 ** (j + 1)))) begin
-						assign levelx_intpend_w_prior_en[((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? j + 1 : (NUM_LEVELS / 2) - ((j + 1) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? k + 1 : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (k + 1)) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? j + 1 : (NUM_LEVELS / 2) - ((j + 1) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? k + 1 : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (k + 1))) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))))) * 4+:4] = {4 {1'sb0}};
-						assign levelx_intpend_id[((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? j + 1 : (NUM_LEVELS / 2) - ((j + 1) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? k + 1 : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (k + 1)) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? j + 1 : (NUM_LEVELS / 2) - ((j + 1) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? k + 1 : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (k + 1))) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))))) * 8+:8] = {8 {1'sb0}};
-					end
-					eb1_cmp_and_mux #(
-						.ID_BITS(ID_BITS),
-						.INTPRIORITY_BITS(INTPRIORITY_BITS)
-					) cmp_l1(
-						.a_id(levelx_intpend_id[((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? j : (NUM_LEVELS / 2) - (j - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? 2 * k : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (2 * k)) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? j : (NUM_LEVELS / 2) - (j - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? 2 * k : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (2 * k))) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))))) * 8+:8]),
-						.a_priority(levelx_intpend_w_prior_en[((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? j : (NUM_LEVELS / 2) - (j - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? 2 * k : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (2 * k)) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? j : (NUM_LEVELS / 2) - (j - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? 2 * k : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - (2 * k))) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))))) * 4+:4]),
-						.b_id(levelx_intpend_id[((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? j : (NUM_LEVELS / 2) - (j - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (2 * k) + 1 : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - ((2 * k) + 1)) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? j : (NUM_LEVELS / 2) - (j - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (2 * k) + 1 : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - ((2 * k) + 1))) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))))) * 8+:8]),
-						.b_priority(levelx_intpend_w_prior_en[((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? j : (NUM_LEVELS / 2) - (j - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (2 * k) + 1 : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - ((2 * k) + 1)) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? j : (NUM_LEVELS / 2) - (j - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (2 * k) + 1 : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - ((2 * k) + 1))) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))))) * 4+:4]),
-						.out_id(levelx_intpend_id[((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? j + 1 : (NUM_LEVELS / 2) - ((j + 1) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? k : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - k) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? j + 1 : (NUM_LEVELS / 2) - ((j + 1) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? k : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - k)) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))))) * 8+:8]),
-						.out_priority(levelx_intpend_w_prior_en[((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? j + 1 : (NUM_LEVELS / 2) - ((j + 1) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? k : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - k) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? j + 1 : (NUM_LEVELS / 2) - ((j + 1) - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? k : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) - k)) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))))) * 4+:4])
-					);
-				end
-			end
-			assign claimid_in[7:0] = levelx_intpend_id[((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS : (NUM_LEVELS / 2) - (NUM_LEVELS - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? 0 : (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS : (NUM_LEVELS / 2) - (NUM_LEVELS - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? 0 : (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))))) * 8+:8];
-			assign selected_int_priority[3:0] = levelx_intpend_w_prior_en[((NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))) >= (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) ? ((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS : (NUM_LEVELS / 2) - (NUM_LEVELS - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? 0 : (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) : (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2) : ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))))) - ((((NUM_LEVELS >= (NUM_LEVELS / 2) ? NUM_LEVELS : (NUM_LEVELS / 2) - (NUM_LEVELS - NUM_LEVELS)) * (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2 : 1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? 0 : (pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)) - (NUM_LEVELS >= (NUM_LEVELS / 2) ? (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + (((NUM_LEVELS / 2) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : (((NUM_LEVELS - (NUM_LEVELS / 2)) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + ((NUM_LEVELS / 2) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1)) : (((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) >= 0 ? ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) + ((NUM_LEVELS * ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 2)) - 1) : ((((NUM_LEVELS / 2) - NUM_LEVELS) + 1) * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1))) + ((((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1) + (NUM_LEVELS * (1 - ((pt[44-:13] / (2 ** (NUM_LEVELS / 2))) + 1)))) - 1))))) * 4+:4];
-		end
-		else begin : genblock
-			wire [((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))))) + 1) * 4) + (((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) * 4) - 1) : ((((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1)))) + 1) * 4) + (((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) * 4) - 1)):((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) * 4 : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) * 4)] level_intpend_w_prior_en;
-			wire [((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))))) + 1) * 8) + (((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) * 8) - 1) : ((((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1)))) + 1) * 8) + (((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) * 8) - 1)):((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) * 8 : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) * 8)] level_intpend_id;
-			assign level_intpend_w_prior_en[4 * ((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) : ((((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1))) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) - (((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1)) - 1) : ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) : ((((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1))) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - (((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) : ((((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1))) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) - (((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1)) - 1) : ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) : ((((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1))) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1)))))+:4 * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))] = {{8 {1'b0}}, intpend_w_prior_en[4 * ((pt[44-:13] - 1) - (pt[44-:13] - 1))+:4 * pt[44-:13]]};
-			assign level_intpend_id[8 * ((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) : ((((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1))) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) - (((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1)) - 1) : ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) : ((((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1))) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - (((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) : ((((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1))) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) - (((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1)) - 1) : ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) : ((((NUM_LEVELS >= 0 ? 0 : NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1) : (pt[44-:13] + 1) - ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 1 : ((pt[44-:13] + 1) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1))) + ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) - 1)) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1)))))+:8 * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))] = {{16 {1'b1}}, intpend_id[8 * ((pt[44-:13] - 1) - (pt[44-:13] - 1))+:8 * pt[44-:13]]};
-			for (l = 0; l < NUM_LEVELS; l = l + 1) begin : LEVEL
-				for (m = 0; m <= (pt[44-:13] / (2 ** (l + 1))); m = m + 1) begin : COMPARE
-					if (m == (pt[44-:13] / (2 ** (l + 1)))) begin
-						assign level_intpend_w_prior_en[((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? l + 1 : NUM_LEVELS - (l + 1)) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? m + 1 : (pt[44-:13] + 1) - (m + 1)) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - ((((NUM_LEVELS >= 0 ? l + 1 : NUM_LEVELS - (l + 1)) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? m + 1 : (pt[44-:13] + 1) - (m + 1))) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))))) * 4+:4] = {4 {1'sb0}};
-						assign level_intpend_id[((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? l + 1 : NUM_LEVELS - (l + 1)) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? m + 1 : (pt[44-:13] + 1) - (m + 1)) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - ((((NUM_LEVELS >= 0 ? l + 1 : NUM_LEVELS - (l + 1)) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? m + 1 : (pt[44-:13] + 1) - (m + 1))) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))))) * 8+:8] = {8 {1'sb0}};
-					end
-					eb1_cmp_and_mux #(
-						.ID_BITS(ID_BITS),
-						.INTPRIORITY_BITS(INTPRIORITY_BITS)
-					) cmp_l1(
-						.a_id(level_intpend_id[((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? l : NUM_LEVELS - l) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? 2 * m : (pt[44-:13] + 1) - (2 * m)) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - ((((NUM_LEVELS >= 0 ? l : NUM_LEVELS - l) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? 2 * m : (pt[44-:13] + 1) - (2 * m))) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))))) * 8+:8]),
-						.a_priority(level_intpend_w_prior_en[((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? l : NUM_LEVELS - l) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? 2 * m : (pt[44-:13] + 1) - (2 * m)) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - ((((NUM_LEVELS >= 0 ? l : NUM_LEVELS - l) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? 2 * m : (pt[44-:13] + 1) - (2 * m))) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))))) * 4+:4]),
-						.b_id(level_intpend_id[((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? l : NUM_LEVELS - l) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? (2 * m) + 1 : (pt[44-:13] + 1) - ((2 * m) + 1)) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - ((((NUM_LEVELS >= 0 ? l : NUM_LEVELS - l) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? (2 * m) + 1 : (pt[44-:13] + 1) - ((2 * m) + 1))) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))))) * 8+:8]),
-						.b_priority(level_intpend_w_prior_en[((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? l : NUM_LEVELS - l) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? (2 * m) + 1 : (pt[44-:13] + 1) - ((2 * m) + 1)) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - ((((NUM_LEVELS >= 0 ? l : NUM_LEVELS - l) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? (2 * m) + 1 : (pt[44-:13] + 1) - ((2 * m) + 1))) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))))) * 4+:4]),
-						.out_id(level_intpend_id[((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? l + 1 : NUM_LEVELS - (l + 1)) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? m : (pt[44-:13] + 1) - m) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - ((((NUM_LEVELS >= 0 ? l + 1 : NUM_LEVELS - (l + 1)) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? m : (pt[44-:13] + 1) - m)) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))))) * 8+:8]),
-						.out_priority(level_intpend_w_prior_en[((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? l + 1 : NUM_LEVELS - (l + 1)) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? m : (pt[44-:13] + 1) - m) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - ((((NUM_LEVELS >= 0 ? l + 1 : NUM_LEVELS - (l + 1)) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? m : (pt[44-:13] + 1) - m)) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))))) * 4+:4])
-					);
-				end
-			end
-			assign claimid_in[7:0] = level_intpend_id[((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? NUM_LEVELS : NUM_LEVELS - NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - ((((NUM_LEVELS >= 0 ? NUM_LEVELS : NUM_LEVELS - NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1)) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))))) * 8+:8];
-			assign selected_int_priority[3:0] = level_intpend_w_prior_en[((NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))) >= (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) ? ((NUM_LEVELS >= 0 ? NUM_LEVELS : NUM_LEVELS - NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1) : ((pt[44-:13] + 1) >= 0 ? NUM_LEVELS * (pt[44-:13] + 2) : (pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1))))) - ((((NUM_LEVELS >= 0 ? NUM_LEVELS : NUM_LEVELS - NUM_LEVELS) * ((pt[44-:13] + 1) >= 0 ? pt[44-:13] + 2 : 1 - (pt[44-:13] + 1))) + ((pt[44-:13] + 1) >= 0 ? 0 : pt[44-:13] + 1)) - (NUM_LEVELS >= 0 ? ((pt[44-:13] + 1) >= 0 ? ((NUM_LEVELS + 1) * (pt[44-:13] + 2)) - 1 : ((NUM_LEVELS + 1) * (1 - (pt[44-:13] + 1))) + pt[44-:13]) : ((pt[44-:13] + 1) >= 0 ? ((1 - NUM_LEVELS) * (pt[44-:13] + 2)) + ((NUM_LEVELS * (pt[44-:13] + 2)) - 1) : ((1 - NUM_LEVELS) * (1 - (pt[44-:13] + 1))) + (((pt[44-:13] + 1) + (NUM_LEVELS * (1 - (pt[44-:13] + 1)))) - 1))))) * 4+:4];
-		end
-	endgenerate
-	assign config_reg_we = waddr_config_pic_match & picm_wren_ff;
-	assign config_reg_re = raddr_config_pic_match & picm_rden_ff;
-	assign config_reg_in = picm_wr_data_ff[0];
-	rvdffs #(.WIDTH(1)) config_reg_ff(
-		.rst_l(rst_l),
-		.clk(free_clk),
-		.en(config_reg_we),
-		.din(config_reg_in),
-		.dout(config_reg)
-	);
-	assign intpriord = config_reg;
-	assign pl_in_q[3:0] = (intpriord ? ~pl_in : pl_in);
-	rvdff #(.WIDTH(ID_BITS)) claimid_ff(
-		.rst_l(rst_l),
-		.din(claimid_in[7:0]),
-		.dout(claimid[7:0]),
-		.clk(free_clk)
-	);
-	rvdff #(.WIDTH(INTPRIORITY_BITS)) pl_ff(
-		.rst_l(rst_l),
-		.din(pl_in_q[3:0]),
-		.dout(pl[3:0]),
-		.clk(free_clk)
-	);
-	wire [3:0] meipt_inv;
-	wire [3:0] meicurpl_inv;
-	assign meipt_inv[3:0] = (intpriord ? ~meipt[3:0] : meipt[3:0]);
-	assign meicurpl_inv[3:0] = (intpriord ? ~meicurpl[3:0] : meicurpl[3:0]);
-	assign mexintpend_in = (selected_int_priority[3:0] > meipt_inv[3:0]) & (selected_int_priority[3:0] > meicurpl_inv[3:0]);
-	rvdff #(.WIDTH(1)) mexintpend_ff(
-		.rst_l(rst_l),
-		.clk(free_clk),
-		.din(mexintpend_in),
-		.dout(mexintpend)
-	);
-	assign maxint[3:0] = (intpriord ? 0 : 15);
-	assign mhwakeup_in = pl_in_q[3:0] == maxint;
-	rvdff #(.WIDTH(1)) wake_up_ff(
-		.rst_l(rst_l),
-		.clk(free_clk),
-		.din(mhwakeup_in),
-		.dout(mhwakeup)
-	);
-	assign intpend_reg_read = addr_intpend_base_match & picm_rden_ff;
-	assign intpriority_reg_read = raddr_intpriority_base_match & picm_rden_ff;
-	assign intenable_reg_read = raddr_intenable_base_match & picm_rden_ff;
-	assign gw_config_reg_read = raddr_config_gw_base_match & picm_rden_ff;
-	assign intpend_reg_extended[INTPEND_SIZE - 1:0] = {{INTPEND_SIZE - pt[44-:13] {1'b0}}, extintsrc_req_gw[pt[44-:13] - 1:0]};
-	generate
-		for (i = 0; i < INT_GRPS; i = i + 1) assign intpend_rd_part_out[i * 32+:32] = {32 {intpend_reg_read & (picm_raddr_ff[5:2] == i)}} & intpend_reg_extended[(32 * i) + 31:32 * i];
-	endgenerate
-	always @(*) begin : INTPEND_RD
-		intpend_rd_out = {32 {1'sb0}};
-		begin : sv2v_autoblock_34
-			reg signed [31:0] i;
-			for (i = 0; i < INT_GRPS; i = i + 1)
-				intpend_rd_out = intpend_rd_out | intpend_rd_part_out[i * 32+:32];
-		end
-	end
-	always @(*) begin : INTEN_RD
-		intenable_rd_out = 1'b0;
-		intpriority_rd_out = {4 {1'sb0}};
-		gw_config_rd_out = {2 {1'sb0}};
-		begin : sv2v_autoblock_35
-			reg signed [31:0] i;
-			for (i = 0; i < pt[44-:13]; i = i + 1)
-				begin
-					if (intenable_reg_re[i])
-						intenable_rd_out = intenable_reg[i];
-					if (intpriority_reg_re[i])
-						intpriority_rd_out = intpriority_reg[i * 4+:4];
-					if (gw_config_reg_re[i])
-						gw_config_rd_out = gw_config_reg[i * 2+:2];
-				end
-		end
-	end
-	assign picm_rd_data_in[31:0] = (((((((({32 {intpend_reg_read}} & intpend_rd_out) | ({32 {intpriority_reg_read}} & {{28 {1'b0}}, intpriority_rd_out})) | ({32 {intenable_reg_read}} & {31'b0000000000000000000000000000000, intenable_rd_out})) | ({32 {gw_config_reg_read}} & {30'b000000000000000000000000000000, gw_config_rd_out})) | ({32 {config_reg_re}} & {31'b0000000000000000000000000000000, config_reg})) | ({32 {picm_mken_ff & mask[3]}} & 32'b00000000000000000000000000000011)) | ({32 {picm_mken_ff & mask[2]}} & 32'b00000000000000000000000000000001)) | ({32 {picm_mken_ff & mask[1]}} & 32'b00000000000000000000000000001111)) | ({32 {picm_mken_ff & mask[0]}} & 32'b00000000000000000000000000000000);
-	assign picm_rd_data[31:0] = (picm_bypass_ff ? picm_wr_data_ff[31:0] : picm_rd_data_in[31:0]);
-	wire [14:0] address;
-	assign address[14:0] = picm_raddr_ff[14:0];
-	always @(*)
-		case (address[14:0])
-			15'b011000000000000: mask[3:0] = 4'b0100;
-			15'b100000000000100: mask[3:0] = 4'b1000;
-			15'b100000000001000: mask[3:0] = 4'b1000;
-			15'b100000000001100: mask[3:0] = 4'b1000;
-			15'b100000000010000: mask[3:0] = 4'b1000;
-			15'b100000000010100: mask[3:0] = 4'b1000;
-			15'b100000000011000: mask[3:0] = 4'b1000;
-			15'b100000000011100: mask[3:0] = 4'b1000;
-			15'b100000000100000: mask[3:0] = 4'b1000;
-			15'b100000000100100: mask[3:0] = 4'b1000;
-			15'b100000000101000: mask[3:0] = 4'b1000;
-			15'b100000000101100: mask[3:0] = 4'b1000;
-			15'b100000000110000: mask[3:0] = 4'b1000;
-			15'b100000000110100: mask[3:0] = 4'b1000;
-			15'b100000000111000: mask[3:0] = 4'b1000;
-			15'b100000000111100: mask[3:0] = 4'b1000;
-			15'b100000001000000: mask[3:0] = 4'b1000;
-			15'b100000001000100: mask[3:0] = 4'b1000;
-			15'b100000001001000: mask[3:0] = 4'b1000;
-			15'b100000001001100: mask[3:0] = 4'b1000;
-			15'b100000001010000: mask[3:0] = 4'b1000;
-			15'b100000001010100: mask[3:0] = 4'b1000;
-			15'b100000001011000: mask[3:0] = 4'b1000;
-			15'b100000001011100: mask[3:0] = 4'b1000;
-			15'b100000001100000: mask[3:0] = 4'b1000;
-			15'b100000001100100: mask[3:0] = 4'b1000;
-			15'b100000001101000: mask[3:0] = 4'b1000;
-			15'b100000001101100: mask[3:0] = 4'b1000;
-			15'b100000001110000: mask[3:0] = 4'b1000;
-			15'b100000001110100: mask[3:0] = 4'b1000;
-			15'b100000001111000: mask[3:0] = 4'b1000;
-			15'b100000001111100: mask[3:0] = 4'b1000;
-			15'b010000000000100: mask[3:0] = 4'b0100;
-			15'b010000000001000: mask[3:0] = 4'b0100;
-			15'b010000000001100: mask[3:0] = 4'b0100;
-			15'b010000000010000: mask[3:0] = 4'b0100;
-			15'b010000000010100: mask[3:0] = 4'b0100;
-			15'b010000000011000: mask[3:0] = 4'b0100;
-			15'b010000000011100: mask[3:0] = 4'b0100;
-			15'b010000000100000: mask[3:0] = 4'b0100;
-			15'b010000000100100: mask[3:0] = 4'b0100;
-			15'b010000000101000: mask[3:0] = 4'b0100;
-			15'b010000000101100: mask[3:0] = 4'b0100;
-			15'b010000000110000: mask[3:0] = 4'b0100;
-			15'b010000000110100: mask[3:0] = 4'b0100;
-			15'b010000000111000: mask[3:0] = 4'b0100;
-			15'b010000000111100: mask[3:0] = 4'b0100;
-			15'b010000001000000: mask[3:0] = 4'b0100;
-			15'b010000001000100: mask[3:0] = 4'b0100;
-			15'b010000001001000: mask[3:0] = 4'b0100;
-			15'b010000001001100: mask[3:0] = 4'b0100;
-			15'b010000001010000: mask[3:0] = 4'b0100;
-			15'b010000001010100: mask[3:0] = 4'b0100;
-			15'b010000001011000: mask[3:0] = 4'b0100;
-			15'b010000001011100: mask[3:0] = 4'b0100;
-			15'b010000001100000: mask[3:0] = 4'b0100;
-			15'b010000001100100: mask[3:0] = 4'b0100;
-			15'b010000001101000: mask[3:0] = 4'b0100;
-			15'b010000001101100: mask[3:0] = 4'b0100;
-			15'b010000001110000: mask[3:0] = 4'b0100;
-			15'b010000001110100: mask[3:0] = 4'b0100;
-			15'b010000001111000: mask[3:0] = 4'b0100;
-			15'b010000001111100: mask[3:0] = 4'b0100;
-			15'b000000000000100: mask[3:0] = 4'b0010;
-			15'b000000000001000: mask[3:0] = 4'b0010;
-			15'b000000000001100: mask[3:0] = 4'b0010;
-			15'b000000000010000: mask[3:0] = 4'b0010;
-			15'b000000000010100: mask[3:0] = 4'b0010;
-			15'b000000000011000: mask[3:0] = 4'b0010;
-			15'b000000000011100: mask[3:0] = 4'b0010;
-			15'b000000000100000: mask[3:0] = 4'b0010;
-			15'b000000000100100: mask[3:0] = 4'b0010;
-			15'b000000000101000: mask[3:0] = 4'b0010;
-			15'b000000000101100: mask[3:0] = 4'b0010;
-			15'b000000000110000: mask[3:0] = 4'b0010;
-			15'b000000000110100: mask[3:0] = 4'b0010;
-			15'b000000000111000: mask[3:0] = 4'b0010;
-			15'b000000000111100: mask[3:0] = 4'b0010;
-			15'b000000001000000: mask[3:0] = 4'b0010;
-			15'b000000001000100: mask[3:0] = 4'b0010;
-			15'b000000001001000: mask[3:0] = 4'b0010;
-			15'b000000001001100: mask[3:0] = 4'b0010;
-			15'b000000001010000: mask[3:0] = 4'b0010;
-			15'b000000001010100: mask[3:0] = 4'b0010;
-			15'b000000001011000: mask[3:0] = 4'b0010;
-			15'b000000001011100: mask[3:0] = 4'b0010;
-			15'b000000001100000: mask[3:0] = 4'b0010;
-			15'b000000001100100: mask[3:0] = 4'b0010;
-			15'b000000001101000: mask[3:0] = 4'b0010;
-			15'b000000001101100: mask[3:0] = 4'b0010;
-			15'b000000001110000: mask[3:0] = 4'b0010;
-			15'b000000001110100: mask[3:0] = 4'b0010;
-			15'b000000001111000: mask[3:0] = 4'b0010;
-			15'b000000001111100: mask[3:0] = 4'b0010;
-			default: mask[3:0] = 4'b0001;
-		endcase
-endmodule
-module eb1_cmp_and_mux (
-	a_id,
-	a_priority,
-	b_id,
-	b_priority,
-	out_id,
-	out_priority
-);
-	parameter ID_BITS = 8;
-	parameter INTPRIORITY_BITS = 4;
-	input wire [ID_BITS - 1:0] a_id;
-	input wire [INTPRIORITY_BITS - 1:0] a_priority;
-	input wire [ID_BITS - 1:0] b_id;
-	input wire [INTPRIORITY_BITS - 1:0] b_priority;
-	output wire [ID_BITS - 1:0] out_id;
-	output wire [INTPRIORITY_BITS - 1:0] out_priority;
-	wire a_is_lt_b;
-	assign a_is_lt_b = a_priority[INTPRIORITY_BITS - 1:0] < b_priority[INTPRIORITY_BITS - 1:0];
-	assign out_id[ID_BITS - 1:0] = (a_is_lt_b ? b_id[ID_BITS - 1:0] : a_id[ID_BITS - 1:0]);
-	assign out_priority[INTPRIORITY_BITS - 1:0] = (a_is_lt_b ? b_priority[INTPRIORITY_BITS - 1:0] : a_priority[INTPRIORITY_BITS - 1:0]);
-endmodule
-module eb1_configurable_gw (
-	gw_clk,
-	rawclk,
-	clken,
-	rst_l,
-	extintsrc_req_sync,
-	meigwctrl_polarity,
-	meigwctrl_type,
-	meigwclr,
-	extintsrc_req_config
-);
-	input wire gw_clk;
-	input wire rawclk;
-	input wire clken;
-	input wire rst_l;
-	input wire extintsrc_req_sync;
-	input wire meigwctrl_polarity;
-	input wire meigwctrl_type;
-	input wire meigwclr;
-	output wire extintsrc_req_config;
-	wire gw_int_pending_in;
-	wire gw_int_pending;
-	assign gw_int_pending_in = (extintsrc_req_sync ^ meigwctrl_polarity) | (gw_int_pending & ~meigwclr);
-	rvdff_fpga #(.WIDTH(1)) int_pend_ff(
-		.rst_l(rst_l),
-		.clk(gw_clk),
-		.rawclk(rawclk),
-		.clken(clken),
-		.din(gw_int_pending_in),
-		.dout(gw_int_pending)
-	);
-	assign extintsrc_req_config = (meigwctrl_type ? (extintsrc_req_sync ^ meigwctrl_polarity) | gw_int_pending : extintsrc_req_sync ^ meigwctrl_polarity);
-endmodule
-module ahb_to_axi4 (
-	clk,
-	rst_l,
-	scan_mode,
-	bus_clk_en,
-	clk_override,
-	axi_awvalid,
-	axi_awready,
-	axi_awid,
-	axi_awaddr,
-	axi_awsize,
-	axi_awprot,
-	axi_awlen,
-	axi_awburst,
-	axi_wvalid,
-	axi_wready,
-	axi_wdata,
-	axi_wstrb,
-	axi_wlast,
-	axi_bvalid,
-	axi_bready,
-	axi_bresp,
-	axi_bid,
-	axi_arvalid,
-	axi_arready,
-	axi_arid,
-	axi_araddr,
-	axi_arsize,
-	axi_arprot,
-	axi_arlen,
-	axi_arburst,
-	axi_rvalid,
-	axi_rready,
-	axi_rid,
-	axi_rdata,
-	axi_rresp,
-	ahb_haddr,
-	ahb_hburst,
-	ahb_hmastlock,
-	ahb_hprot,
-	ahb_hsize,
-	ahb_htrans,
-	ahb_hwrite,
-	ahb_hwdata,
-	ahb_hsel,
-	ahb_hreadyin,
-	ahb_hrdata,
-	ahb_hreadyout,
-	ahb_hresp
-);
-	parameter TAG = 1;
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input clk;
-	input rst_l;
-	input scan_mode;
-	input bus_clk_en;
-	input clk_override;
-	output wire axi_awvalid;
-	input wire axi_awready;
-	output wire [TAG - 1:0] axi_awid;
-	output wire [31:0] axi_awaddr;
-	output wire [2:0] axi_awsize;
-	output wire [2:0] axi_awprot;
-	output wire [7:0] axi_awlen;
-	output wire [1:0] axi_awburst;
-	output wire axi_wvalid;
-	input wire axi_wready;
-	output wire [63:0] axi_wdata;
-	output wire [7:0] axi_wstrb;
-	output wire axi_wlast;
-	input wire axi_bvalid;
-	output wire axi_bready;
-	input wire [1:0] axi_bresp;
-	input wire [TAG - 1:0] axi_bid;
-	output wire axi_arvalid;
-	input wire axi_arready;
-	output wire [TAG - 1:0] axi_arid;
-	output wire [31:0] axi_araddr;
-	output wire [2:0] axi_arsize;
-	output wire [2:0] axi_arprot;
-	output wire [7:0] axi_arlen;
-	output wire [1:0] axi_arburst;
-	input wire axi_rvalid;
-	output wire axi_rready;
-	input wire [TAG - 1:0] axi_rid;
-	input wire [63:0] axi_rdata;
-	input wire [1:0] axi_rresp;
-	input wire [31:0] ahb_haddr;
-	input wire [2:0] ahb_hburst;
-	input wire ahb_hmastlock;
-	input wire [3:0] ahb_hprot;
-	input wire [2:0] ahb_hsize;
-	input wire [1:0] ahb_htrans;
-	input wire ahb_hwrite;
-	input wire [63:0] ahb_hwdata;
-	input wire ahb_hsel;
-	input wire ahb_hreadyin;
-	output wire [63:0] ahb_hrdata;
-	output wire ahb_hreadyout;
-	output wire ahb_hresp;
-	wire [7:0] master_wstrb;
-	wire [1:0] buf_state;
-	reg [1:0] buf_nxtstate;
-	reg buf_state_en;
-	reg buf_read_error_in;
-	wire buf_read_error;
-	wire [63:0] buf_rdata;
-	wire ahb_hready;
-	wire ahb_hready_q;
-	wire [1:0] ahb_htrans_in;
-	wire [1:0] ahb_htrans_q;
-	wire [2:0] ahb_hsize_q;
-	wire ahb_hwrite_q;
-	wire [31:0] ahb_haddr_q;
-	wire [63:0] ahb_hwdata_q;
-	wire ahb_hresp_q;
-	wire ahb_addr_in_dccm;
-	wire ahb_addr_in_iccm;
-	wire ahb_addr_in_pic;
-	wire ahb_addr_in_dccm_region_nc;
-	wire ahb_addr_in_iccm_region_nc;
-	wire ahb_addr_in_pic_region_nc;
-	reg buf_rdata_en;
-	wire ahb_addr_clk_en;
-	wire buf_rdata_clk_en;
-	wire bus_clk;
-	wire ahb_addr_clk;
-	wire buf_rdata_clk;
-	reg cmdbuf_wr_en;
-	wire cmdbuf_rst;
-	wire cmdbuf_full;
-	wire cmdbuf_vld;
-	wire cmdbuf_write;
-	wire [1:0] cmdbuf_size;
-	wire [7:0] cmdbuf_wstrb;
-	wire [31:0] cmdbuf_addr;
-	wire [63:0] cmdbuf_wdata;
-	localparam [1:0] IDLE = 2'b00;
-	localparam [1:0] PEND = 2'b11;
-	localparam [1:0] RD = 2'b10;
-	localparam [1:0] WR = 2'b01;
-	always @(*) begin
-		buf_nxtstate = IDLE;
-		buf_state_en = 1'b0;
-		buf_rdata_en = 1'b0;
-		buf_read_error_in = 1'b0;
-		cmdbuf_wr_en = 1'b0;
-		case (buf_state)
-			IDLE: begin
-				buf_nxtstate = (ahb_hwrite ? WR : RD);
-				buf_state_en = (ahb_hready & ahb_htrans[1]) & ahb_hsel;
-			end
-			WR: begin
-				buf_nxtstate = ((ahb_hresp | (ahb_htrans[1:0] == 2'b00)) | ~ahb_hsel ? IDLE : (ahb_hwrite ? WR : RD));
-				buf_state_en = ~cmdbuf_full | ahb_hresp;
-				cmdbuf_wr_en = ~cmdbuf_full & ~(ahb_hresp | ((ahb_htrans[1:0] == 2'b01) & ahb_hsel));
-			end
-			RD: begin
-				buf_nxtstate = (ahb_hresp ? IDLE : PEND);
-				buf_state_en = ~cmdbuf_full | ahb_hresp;
-				cmdbuf_wr_en = ~ahb_hresp & ~cmdbuf_full;
-			end
-			PEND: begin
-				buf_nxtstate = IDLE;
-				buf_state_en = axi_rvalid & ~cmdbuf_write;
-				buf_rdata_en = buf_state_en;
-				buf_read_error_in = buf_state_en & |axi_rresp[1:0];
-			end
-		endcase
-	end
-	rvdffs_fpga #(.WIDTH(2)) state_reg(
-		.rst_l(rst_l),
-		.din(buf_nxtstate),
-		.dout({buf_state}),
-		.en(buf_state_en),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk)
-	);
-	assign master_wstrb[7:0] = ((({8 {ahb_hsize_q[2:0] == 3'b000}} & (8'b00000001 << ahb_haddr_q[2:0])) | ({8 {ahb_hsize_q[2:0] == 3'b001}} & (8'b00000011 << ahb_haddr_q[2:0]))) | ({8 {ahb_hsize_q[2:0] == 3'b010}} & (8'b00001111 << ahb_haddr_q[2:0]))) | ({8 {ahb_hsize_q[2:0] == 3'b011}} & 8'b11111111);
-	assign ahb_hreadyout = (ahb_hresp ? ahb_hresp_q & ~ahb_hready_q : ((~cmdbuf_full | (buf_state == IDLE)) & ~((buf_state == RD) | (buf_state == PEND))) & ~buf_read_error);
-	assign ahb_hready = ahb_hreadyout & ahb_hreadyin;
-	assign ahb_htrans_in[1:0] = {2 {ahb_hsel}} & ahb_htrans[1:0];
-	assign ahb_hrdata[63:0] = buf_rdata[63:0];
-	assign ahb_hresp = ((((ahb_htrans_q[1:0] != 2'b00) & (buf_state != IDLE)) & ((((~(ahb_addr_in_dccm | ahb_addr_in_iccm) | ((ahb_addr_in_iccm | (ahb_addr_in_dccm & ahb_hwrite_q)) & ~((ahb_hsize_q[1:0] == 2'b10) | (ahb_hsize_q[1:0] == 2'b11)))) | ((ahb_hsize_q[2:0] == 3'h1) & ahb_haddr_q[0])) | ((ahb_hsize_q[2:0] == 3'h2) & |ahb_haddr_q[1:0])) | ((ahb_hsize_q[2:0] == 3'h3) & |ahb_haddr_q[2:0]))) | buf_read_error) | (ahb_hresp_q & ~ahb_hready_q);
-	rvdff_fpga #(.WIDTH(64)) buf_rdata_ff(
-		.din(axi_rdata[63:0]),
-		.dout(buf_rdata[63:0]),
-		.clk(buf_rdata_clk),
-		.clken(buf_rdata_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) buf_read_error_ff(
-		.din(buf_read_error_in),
-		.dout(buf_read_error),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) hresp_ff(
-		.din(ahb_hresp),
-		.dout(ahb_hresp_q),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) hready_ff(
-		.din(ahb_hready),
-		.dout(ahb_hready_q),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(2)) htrans_ff(
-		.din(ahb_htrans_in[1:0]),
-		.dout(ahb_htrans_q[1:0]),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(3)) hsize_ff(
-		.din(ahb_hsize[2:0]),
-		.dout(ahb_hsize_q[2:0]),
-		.clk(ahb_addr_clk),
-		.clken(ahb_addr_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) hwrite_ff(
-		.din(ahb_hwrite),
-		.dout(ahb_hwrite_q),
-		.clk(ahb_addr_clk),
-		.clken(ahb_addr_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(32)) haddr_ff(
-		.din(ahb_haddr[31:0]),
-		.dout(ahb_haddr_q[31:0]),
-		.clk(ahb_addr_clk),
-		.clken(ahb_addr_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvrangecheck #(
-		.CCM_SADR(pt[1325-:36]),
-		.CCM_SIZE(pt[1289-:14])
-	) addr_dccm_rangecheck(
-		.addr(ahb_haddr_q[31:0]),
-		.in_range(ahb_addr_in_dccm),
-		.in_region(ahb_addr_in_dccm_region_nc)
-	);
-	generate
-		if (pt[927-:5] == 1) begin : GenICCM
-			rvrangecheck #(
-				.CCM_SADR(pt[887-:36]),
-				.CCM_SIZE(pt[851-:14])
-			) addr_iccm_rangecheck(
-				.addr(ahb_haddr_q[31:0]),
-				.in_range(ahb_addr_in_iccm),
-				.in_region(ahb_addr_in_iccm_region_nc)
-			);
-		end
-		else begin : GenNoICCM
-			assign ahb_addr_in_iccm = 1'b0;
-			assign ahb_addr_in_iccm_region_nc = 1'b0;
-		end
-	endgenerate
-	rvrangecheck #(
-		.CCM_SADR(pt[130-:36]),
-		.CCM_SIZE(pt[69-:13])
-	) addr_pic_rangecheck(
-		.addr(ahb_haddr_q[31:0]),
-		.in_range(ahb_addr_in_pic),
-		.in_region(ahb_addr_in_pic_region_nc)
-	);
-	assign cmdbuf_rst = (((axi_awvalid & axi_awready) | (axi_arvalid & axi_arready)) & ~cmdbuf_wr_en) | (ahb_hresp & ~cmdbuf_write);
-	assign cmdbuf_full = cmdbuf_vld & ~((axi_awvalid & axi_awready) | (axi_arvalid & axi_arready));
-	rvdffsc_fpga #(.WIDTH(1)) cmdbuf_vldff(
-		.din(1'b1),
-		.dout(cmdbuf_vld),
-		.en(cmdbuf_wr_en),
-		.clear(cmdbuf_rst),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(1)) cmdbuf_writeff(
-		.din(ahb_hwrite_q),
-		.dout(cmdbuf_write),
-		.en(cmdbuf_wr_en),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(2)) cmdbuf_sizeff(
-		.din(ahb_hsize_q[1:0]),
-		.dout(cmdbuf_size[1:0]),
-		.en(cmdbuf_wr_en),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(8)) cmdbuf_wstrbff(
-		.din(master_wstrb[7:0]),
-		.dout(cmdbuf_wstrb[7:0]),
-		.en(cmdbuf_wr_en),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(32)) cmdbuf_addrff(
-		.din(ahb_haddr_q[31:0]),
-		.dout(cmdbuf_addr[31:0]),
-		.en(cmdbuf_wr_en & bus_clk_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdffe #(.WIDTH(64)) cmdbuf_wdataff(
-		.din(ahb_hwdata[63:0]),
-		.dout(cmdbuf_wdata[63:0]),
-		.en(cmdbuf_wr_en & bus_clk_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	assign axi_awvalid = cmdbuf_vld & cmdbuf_write;
-	assign axi_awid[TAG - 1:0] = {TAG {1'sb0}};
-	assign axi_awaddr[31:0] = cmdbuf_addr[31:0];
-	assign axi_awsize[2:0] = {1'b0, cmdbuf_size[1:0]};
-	assign axi_awprot[2:0] = 3'b000;
-	assign axi_awlen[7:0] = {8 {1'sb0}};
-	assign axi_awburst[1:0] = 2'b01;
-	assign axi_wvalid = cmdbuf_vld & cmdbuf_write;
-	assign axi_wdata[63:0] = cmdbuf_wdata[63:0];
-	assign axi_wstrb[7:0] = cmdbuf_wstrb[7:0];
-	assign axi_wlast = 1'b1;
-	assign axi_bready = 1'b1;
-	assign axi_arvalid = cmdbuf_vld & ~cmdbuf_write;
-	assign axi_arid[TAG - 1:0] = {TAG {1'sb0}};
-	assign axi_araddr[31:0] = cmdbuf_addr[31:0];
-	assign axi_arsize[2:0] = {1'b0, cmdbuf_size[1:0]};
-	assign axi_arprot = 3'b000;
-	assign axi_arlen[7:0] = {8 {1'sb0}};
-	assign axi_arburst[1:0] = 2'b01;
-	assign axi_rready = 1'b1;
-	assign ahb_addr_clk_en = bus_clk_en & (ahb_hready & ahb_htrans[1]);
-	assign buf_rdata_clk_en = bus_clk_en & buf_rdata_en;
-	rvclkhdr bus_cgc(
-		.en(bus_clk_en),
-		.l1clk(bus_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvclkhdr ahb_addr_cgc(
-		.en(ahb_addr_clk_en),
-		.l1clk(ahb_addr_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvclkhdr buf_rdata_cgc(
-		.en(buf_rdata_clk_en),
-		.l1clk(buf_rdata_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-endmodule
-module dmi_jtag_to_core_sync (
-	rd_en,
-	wr_en,
-	rst_n,
-	clk,
-	reg_en,
-	reg_wr_en
-);
-	input rd_en;
-	input wr_en;
-	input rst_n;
-	input clk;
-	output reg_en;
-	output reg_wr_en;
-	wire c_rd_en;
-	wire c_wr_en;
-	reg [2:0] rden;
-	reg [2:0] wren;
-	assign reg_en = c_wr_en | c_rd_en;
-	assign reg_wr_en = c_wr_en;
-	always @(posedge clk or negedge rst_n)
-		if (!rst_n) begin
-			rden <= {3 {1'sb0}};
-			wren <= {3 {1'sb0}};
-		end
-		else begin
-			rden <= {rden[1:0], rd_en};
-			wren <= {wren[1:0], wr_en};
-		end
-	assign c_rd_en = rden[1] & ~rden[2];
-	assign c_wr_en = wren[1] & ~wren[2];
-endmodule
-module axi4_to_ahb (
-	clk,
-	free_clk,
-	rst_l,
-	scan_mode,
-	bus_clk_en,
-	clk_override,
-	dec_tlu_force_halt,
-	axi_awvalid,
-	axi_awready,
-	axi_awid,
-	axi_awaddr,
-	axi_awsize,
-	axi_awprot,
-	axi_wvalid,
-	axi_wready,
-	axi_wdata,
-	axi_wstrb,
-	axi_wlast,
-	axi_bvalid,
-	axi_bready,
-	axi_bresp,
-	axi_bid,
-	axi_arvalid,
-	axi_arready,
-	axi_arid,
-	axi_araddr,
-	axi_arsize,
-	axi_arprot,
-	axi_rvalid,
-	axi_rready,
-	axi_rid,
-	axi_rdata,
-	axi_rresp,
-	axi_rlast,
-	ahb_haddr,
-	ahb_hburst,
-	ahb_hmastlock,
-	ahb_hprot,
-	ahb_hsize,
-	ahb_htrans,
-	ahb_hwrite,
-	ahb_hwdata,
-	ahb_hrdata,
-	ahb_hready,
-	ahb_hresp
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	parameter TAG = 1;
-	input clk;
-	input free_clk;
-	input rst_l;
-	input scan_mode;
-	input bus_clk_en;
-	input clk_override;
-	input dec_tlu_force_halt;
-	input wire axi_awvalid;
-	output wire axi_awready;
-	input wire [TAG - 1:0] axi_awid;
-	input wire [31:0] axi_awaddr;
-	input wire [2:0] axi_awsize;
-	input wire [2:0] axi_awprot;
-	input wire axi_wvalid;
-	output wire axi_wready;
-	input wire [63:0] axi_wdata;
-	input wire [7:0] axi_wstrb;
-	input wire axi_wlast;
-	output wire axi_bvalid;
-	input wire axi_bready;
-	output wire [1:0] axi_bresp;
-	output wire [TAG - 1:0] axi_bid;
-	input wire axi_arvalid;
-	output wire axi_arready;
-	input wire [TAG - 1:0] axi_arid;
-	input wire [31:0] axi_araddr;
-	input wire [2:0] axi_arsize;
-	input wire [2:0] axi_arprot;
-	output wire axi_rvalid;
-	input wire axi_rready;
-	output wire [TAG - 1:0] axi_rid;
-	output wire [63:0] axi_rdata;
-	output wire [1:0] axi_rresp;
-	output wire axi_rlast;
-	output wire [31:0] ahb_haddr;
-	output wire [2:0] ahb_hburst;
-	output wire ahb_hmastlock;
-	output wire [3:0] ahb_hprot;
-	output wire [2:0] ahb_hsize;
-	output reg [1:0] ahb_htrans;
-	output wire ahb_hwrite;
-	output wire [63:0] ahb_hwdata;
-	input wire [63:0] ahb_hrdata;
-	input wire ahb_hready;
-	input wire ahb_hresp;
-	localparam ID = 1;
-	localparam PRTY = 1;
-	wire [2:0] buf_state;
-	reg [2:0] buf_nxtstate;
-	wire slave_valid;
-	wire slave_ready;
-	wire [TAG - 1:0] slave_tag;
-	wire [63:0] slave_rdata;
-	wire [3:0] slave_opc;
-	wire wrbuf_en;
-	wire wrbuf_data_en;
-	wire wrbuf_cmd_sent;
-	wire wrbuf_rst;
-	wire wrbuf_vld;
-	wire wrbuf_data_vld;
-	wire [TAG - 1:0] wrbuf_tag;
-	wire [2:0] wrbuf_size;
-	wire [31:0] wrbuf_addr;
-	wire [63:0] wrbuf_data;
-	wire [7:0] wrbuf_byteen;
-	wire master_valid;
-	reg master_ready;
-	wire [TAG - 1:0] master_tag;
-	wire [31:0] master_addr;
-	wire [63:0] master_wdata;
-	wire [2:0] master_size;
-	wire [2:0] master_opc;
-	wire [7:0] master_byteen;
-	wire [31:0] buf_addr;
-	wire [1:0] buf_size;
-	wire buf_write;
-	wire [7:0] buf_byteen;
-	wire buf_aligned;
-	wire [63:0] buf_data;
-	wire [TAG - 1:0] buf_tag;
-	wire buf_rst;
-	wire [TAG - 1:0] buf_tag_in;
-	wire [31:0] buf_addr_in;
-	wire [7:0] buf_byteen_in;
-	wire [63:0] buf_data_in;
-	reg buf_write_in;
-	wire buf_aligned_in;
-	wire [2:0] buf_size_in;
-	reg buf_state_en;
-	reg buf_wr_en;
-	reg buf_data_wr_en;
-	reg slvbuf_error_en;
-	wire wr_cmd_vld;
-	wire cmd_done_rst;
-	reg cmd_done;
-	wire cmd_doneQ;
-	reg trxn_done;
-	reg [2:0] buf_cmd_byte_ptr;
-	wire [2:0] buf_cmd_byte_ptrQ;
-	wire [2:0] buf_cmd_nxtbyte_ptr;
-	reg buf_cmd_byte_ptr_en;
-	wire found;
-	reg slave_valid_pre;
-	wire ahb_hready_q;
-	wire ahb_hresp_q;
-	wire [1:0] ahb_htrans_q;
-	wire ahb_hwrite_q;
-	wire [63:0] ahb_hrdata_q;
-	wire slvbuf_write;
-	wire slvbuf_error;
-	wire [TAG - 1:0] slvbuf_tag;
-	reg slvbuf_error_in;
-	reg slvbuf_wr_en;
-	reg bypass_en;
-	reg rd_bypass_idle;
-	wire last_addr_en;
-	wire [31:0] last_bus_addr;
-	wire buf_clken;
-	wire ahbm_data_clken;
-	wire buf_clk;
-	wire bus_clk;
-	wire ahbm_data_clk;
-	wire dec_tlu_force_halt_bus;
-	wire dec_tlu_force_halt_bus_ns;
-	wire dec_tlu_force_halt_bus_q;
-	function automatic [1:0] get_write_size;
-		input reg [7:0] byteen;
-		reg [1:0] size;
-		begin
-			size[1:0] = ((2'b11 & {2 {byteen[7:0] == 8'hff}}) | (2'b10 & {2 {(byteen[7:0] == 8'hf0) | (byteen[7:0] == 8'h0f)}})) | (2'b01 & {2 {(((byteen[7:0] == 8'hc0) | (byteen[7:0] == 8'h30)) | (byteen[7:0] == 8'h0c)) | (byteen[7:0] == 8'h03)}});
-			get_write_size = size[1:0];
-		end
-	endfunction
-	function automatic [2:0] get_write_addr;
-		input reg [7:0] byteen;
-		reg [2:0] addr;
-		begin
-			addr[2:0] = (((3'h0 & {3 {((byteen[7:0] == 8'hff) | (byteen[7:0] == 8'h0f)) | (byteen[7:0] == 8'h03)}}) | (3'h2 & {3 {byteen[7:0] == 8'h0c}})) | (3'h4 & {3 {(byteen[7:0] == 8'hf0) | (byteen[7:0] == 8'h03)}})) | (3'h6 & {3 {byteen[7:0] == 8'hc0}});
-			get_write_addr = addr[2:0];
-		end
-	endfunction
-	function automatic signed [2:0] sv2v_cast_3_signed;
-		input reg signed [2:0] inp;
-		sv2v_cast_3_signed = inp;
-	endfunction
-	function automatic [2:0] get_nxtbyte_ptr;
-		input reg [2:0] current_byte_ptr;
-		input reg [7:0] byteen;
-		input reg get_next;
-		reg [2:0] start_ptr;
-		reg found;
-		begin
-			found = 1'b0;
-			start_ptr[2:0] = (get_next ? current_byte_ptr[2:0] + 3'b001 : current_byte_ptr[2:0]);
-			begin : sv2v_autoblock_36
-				reg signed [31:0] j;
-				for (j = 0; j < 8; j = j + 1)
-					if (~found) begin
-						get_nxtbyte_ptr[2:0] = sv2v_cast_3_signed(j);
-						found = found | (byteen[j] & (sv2v_cast_3_signed(j) >= start_ptr[2:0]));
-					end
-			end
-		end
-	endfunction
-	assign dec_tlu_force_halt_bus = dec_tlu_force_halt | dec_tlu_force_halt_bus_q;
-	assign dec_tlu_force_halt_bus_ns = ~bus_clk_en & dec_tlu_force_halt_bus;
-	rvdff #(.WIDTH(1)) force_halt_busff(
-		.din(dec_tlu_force_halt_bus_ns),
-		.dout(dec_tlu_force_halt_bus_q),
-		.clk(free_clk),
-		.rst_l(rst_l)
-	);
-	assign wrbuf_en = (axi_awvalid & axi_awready) & master_ready;
-	assign wrbuf_data_en = (axi_wvalid & axi_wready) & master_ready;
-	assign wrbuf_cmd_sent = (master_valid & master_ready) & (master_opc[2:1] == 2'b01);
-	assign wrbuf_rst = (wrbuf_cmd_sent & ~wrbuf_en) | dec_tlu_force_halt_bus;
-	assign axi_awready = ~(wrbuf_vld & ~wrbuf_cmd_sent) & master_ready;
-	assign axi_wready = ~(wrbuf_data_vld & ~wrbuf_cmd_sent) & master_ready;
-	assign axi_arready = ~(wrbuf_vld & wrbuf_data_vld) & master_ready;
-	assign axi_rlast = 1'b1;
-	assign wr_cmd_vld = wrbuf_vld & wrbuf_data_vld;
-	assign master_valid = wr_cmd_vld | axi_arvalid;
-	assign master_tag[TAG - 1:0] = (wr_cmd_vld ? wrbuf_tag[TAG - 1:0] : axi_arid[TAG - 1:0]);
-	assign master_opc[2:0] = (wr_cmd_vld ? 3'b011 : 3'b000);
-	assign master_addr[31:0] = (wr_cmd_vld ? wrbuf_addr[31:0] : axi_araddr[31:0]);
-	assign master_size[2:0] = (wr_cmd_vld ? wrbuf_size[2:0] : axi_arsize[2:0]);
-	assign master_byteen[7:0] = wrbuf_byteen[7:0];
-	assign master_wdata[63:0] = wrbuf_data[63:0];
-	assign axi_bvalid = (slave_valid & slave_ready) & slave_opc[3];
-	assign axi_bresp[1:0] = (slave_opc[0] ? 2'b10 : (slave_opc[1] ? 2'b11 : 2'b00));
-	assign axi_bid[TAG - 1:0] = slave_tag[TAG - 1:0];
-	assign axi_rvalid = (slave_valid & slave_ready) & (slave_opc[3:2] == 2'b00);
-	assign axi_rresp[1:0] = (slave_opc[0] ? 2'b10 : (slave_opc[1] ? 2'b11 : 2'b00));
-	assign axi_rid[TAG - 1:0] = slave_tag[TAG - 1:0];
-	assign axi_rdata[63:0] = slave_rdata[63:0];
-	assign slave_ready = axi_bready & axi_rready;
-	localparam [2:0] CMD_RD = 3'b001;
-	localparam [2:0] CMD_WR = 3'b010;
-	localparam [2:0] DATA_RD = 3'b011;
-	localparam [2:0] DATA_WR = 3'b100;
-	localparam [2:0] DONE = 3'b101;
-	localparam [2:0] IDLE = 3'b000;
-	localparam [2:0] STREAM_ERR_RD = 3'b111;
-	localparam [2:0] STREAM_RD = 3'b110;
-	always @(*) begin
-		buf_nxtstate = IDLE;
-		buf_state_en = 1'b0;
-		buf_wr_en = 1'b0;
-		buf_data_wr_en = 1'b0;
-		slvbuf_error_in = 1'b0;
-		slvbuf_error_en = 1'b0;
-		buf_write_in = 1'b0;
-		cmd_done = 1'b0;
-		trxn_done = 1'b0;
-		buf_cmd_byte_ptr_en = 1'b0;
-		buf_cmd_byte_ptr[2:0] = {3 {1'sb0}};
-		slave_valid_pre = 1'b0;
-		master_ready = 1'b0;
-		ahb_htrans[1:0] = 2'b00;
-		slvbuf_wr_en = 1'b0;
-		bypass_en = 1'b0;
-		rd_bypass_idle = 1'b0;
-		case (buf_state)
-			IDLE: begin
-				master_ready = 1'b1;
-				buf_write_in = master_opc[2:1] == 2'b01;
-				buf_nxtstate = (buf_write_in ? CMD_WR : CMD_RD);
-				buf_state_en = master_valid & master_ready;
-				buf_wr_en = buf_state_en;
-				buf_data_wr_en = buf_state_en & (buf_nxtstate == CMD_WR);
-				buf_cmd_byte_ptr_en = buf_state_en;
-				buf_cmd_byte_ptr[2:0] = (buf_write_in ? get_nxtbyte_ptr(3'b000, buf_byteen_in[7:0], 1'b0) : master_addr[2:0]);
-				bypass_en = buf_state_en;
-				rd_bypass_idle = bypass_en & (buf_nxtstate == CMD_RD);
-				ahb_htrans[1:0] = {2 {bypass_en}} & 2'b10;
-			end
-			CMD_RD: begin
-				buf_nxtstate = (master_valid & (master_opc[2:0] == 3'b000) ? STREAM_RD : DATA_RD);
-				buf_state_en = (ahb_hready_q & (ahb_htrans_q[1:0] != 2'b00)) & ~ahb_hwrite_q;
-				cmd_done = buf_state_en & ~master_valid;
-				slvbuf_wr_en = buf_state_en;
-				master_ready = buf_state_en & (buf_nxtstate == STREAM_RD);
-				buf_wr_en = master_ready;
-				bypass_en = master_ready & master_valid;
-				buf_cmd_byte_ptr[2:0] = (bypass_en ? master_addr[2:0] : buf_addr[2:0]);
-				ahb_htrans[1:0] = 2'b10 & {2 {~buf_state_en | bypass_en}};
-			end
-			STREAM_RD: begin
-				master_ready = (ahb_hready_q & ~ahb_hresp_q) & ~(master_valid & (master_opc[2:1] == 2'b01));
-				buf_wr_en = (master_valid & master_ready) & (master_opc[2:0] == 3'b000);
-				buf_nxtstate = (ahb_hresp_q ? STREAM_ERR_RD : (buf_wr_en ? STREAM_RD : DATA_RD));
-				buf_state_en = ahb_hready_q | ahb_hresp_q;
-				buf_data_wr_en = buf_state_en;
-				slvbuf_error_in = ahb_hresp_q;
-				slvbuf_error_en = buf_state_en;
-				slave_valid_pre = buf_state_en & ~ahb_hresp_q;
-				cmd_done = buf_state_en & ~master_valid;
-				bypass_en = ((master_ready & master_valid) & (buf_nxtstate == STREAM_RD)) & buf_state_en;
-				buf_cmd_byte_ptr[2:0] = (bypass_en ? master_addr[2:0] : buf_addr[2:0]);
-				ahb_htrans[1:0] = 2'b10 & {2 {~((buf_nxtstate != STREAM_RD) & buf_state_en)}};
-				slvbuf_wr_en = buf_wr_en;
-			end
-			STREAM_ERR_RD: begin
-				buf_nxtstate = DATA_RD;
-				buf_state_en = (ahb_hready_q & (ahb_htrans_q[1:0] != 2'b00)) & ~ahb_hwrite_q;
-				slave_valid_pre = buf_state_en;
-				slvbuf_wr_en = buf_state_en;
-				buf_cmd_byte_ptr[2:0] = buf_addr[2:0];
-				ahb_htrans[1:0] = 2'b10 & {2 {~buf_state_en}};
-			end
-			DATA_RD: begin
-				buf_nxtstate = DONE;
-				buf_state_en = ahb_hready_q | ahb_hresp_q;
-				buf_data_wr_en = buf_state_en;
-				slvbuf_error_in = ahb_hresp_q;
-				slvbuf_error_en = buf_state_en;
-				slvbuf_wr_en = buf_state_en;
-			end
-			CMD_WR: begin
-				buf_nxtstate = DATA_WR;
-				trxn_done = (ahb_hready_q & ahb_hwrite_q) & (ahb_htrans_q[1:0] != 2'b00);
-				buf_state_en = trxn_done;
-				buf_cmd_byte_ptr_en = buf_state_en;
-				slvbuf_wr_en = buf_state_en;
-				buf_cmd_byte_ptr = (trxn_done ? get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0], buf_byteen[7:0], 1'b1) : buf_cmd_byte_ptrQ);
-				cmd_done = trxn_done & ((buf_aligned | (buf_cmd_byte_ptrQ == 3'b111)) | (buf_byteen[get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0], buf_byteen[7:0], 1'b1)] == 1'b0));
-				ahb_htrans[1:0] = {2 {~(cmd_done | cmd_doneQ)}} & 2'b10;
-			end
-			DATA_WR: begin
-				buf_state_en = (cmd_doneQ & ahb_hready_q) | ahb_hresp_q;
-				master_ready = (buf_state_en & ~ahb_hresp_q) & slave_ready;
-				buf_nxtstate = (ahb_hresp_q | ~slave_ready ? DONE : (master_valid & master_ready ? (master_opc[2:1] == 2'b01 ? CMD_WR : CMD_RD) : IDLE));
-				slvbuf_error_in = ahb_hresp_q;
-				slvbuf_error_en = buf_state_en;
-				buf_write_in = master_opc[2:1] == 2'b01;
-				buf_wr_en = buf_state_en & ((buf_nxtstate == CMD_WR) | (buf_nxtstate == CMD_RD));
-				buf_data_wr_en = buf_wr_en;
-				cmd_done = ahb_hresp_q | ((ahb_hready_q & (ahb_htrans_q[1:0] != 2'b00)) & ((buf_cmd_byte_ptrQ == 3'b111) | (buf_byteen[get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0], buf_byteen[7:0], 1'b1)] == 1'b0)));
-				bypass_en = (buf_state_en & buf_write_in) & (buf_nxtstate == CMD_WR);
-				ahb_htrans[1:0] = {2 {~(cmd_done | cmd_doneQ) | bypass_en}} & 2'b10;
-				slave_valid_pre = buf_state_en & (buf_nxtstate != DONE);
-				trxn_done = (ahb_hready_q & ahb_hwrite_q) & (ahb_htrans_q[1:0] != 2'b00);
-				buf_cmd_byte_ptr_en = trxn_done | bypass_en;
-				buf_cmd_byte_ptr = (bypass_en ? get_nxtbyte_ptr(3'b000, buf_byteen_in[7:0], 1'b0) : (trxn_done ? get_nxtbyte_ptr(buf_cmd_byte_ptrQ[2:0], buf_byteen[7:0], 1'b1) : buf_cmd_byte_ptrQ));
-			end
-			DONE: begin
-				buf_nxtstate = IDLE;
-				buf_state_en = slave_ready;
-				slvbuf_error_en = 1'b1;
-				slave_valid_pre = 1'b1;
-			end
-		endcase
-	end
-	assign buf_rst = dec_tlu_force_halt_bus;
-	assign cmd_done_rst = slave_valid_pre;
-	assign buf_addr_in[31:3] = master_addr[31:3];
-	assign buf_addr_in[2:0] = (buf_aligned_in & (master_opc[2:1] == 2'b01) ? get_write_addr(master_byteen[7:0]) : master_addr[2:0]);
-	assign buf_tag_in[TAG - 1:0] = master_tag[TAG - 1:0];
-	assign buf_byteen_in[7:0] = wrbuf_byteen[7:0];
-	assign buf_data_in[63:0] = (buf_state == DATA_RD ? ahb_hrdata_q[63:0] : master_wdata[63:0]);
-	assign buf_size_in[1:0] = ((buf_aligned_in & (master_size[1:0] == 2'b11)) & (master_opc[2:1] == 2'b01) ? get_write_size(master_byteen[7:0]) : master_size[1:0]);
-	assign buf_aligned_in = ((((master_opc[2:0] == 3'b000) | (master_size[1:0] == 2'b00)) | (master_size[1:0] == 2'b01)) | (master_size[1:0] == 2'b10)) | ((master_size[1:0] == 2'b11) & (((((((master_byteen[7:0] == 8'h03) | (master_byteen[7:0] == 8'h0c)) | (master_byteen[7:0] == 8'h30)) | (master_byteen[7:0] == 8'hc0)) | (master_byteen[7:0] == 8'h0f)) | (master_byteen[7:0] == 8'hf0)) | (master_byteen[7:0] == 8'hff)));
-	assign ahb_haddr[31:3] = (bypass_en ? master_addr[31:3] : buf_addr[31:3]);
-	assign ahb_haddr[2:0] = {3 {ahb_htrans == 2'b10}} & buf_cmd_byte_ptr[2:0];
-	assign ahb_hsize[2:0] = (bypass_en ? {1'b0, {2 {buf_aligned_in}} & buf_size_in[1:0]} : {1'b0, {2 {buf_aligned}} & buf_size[1:0]});
-	assign ahb_hburst[2:0] = 3'b000;
-	assign ahb_hmastlock = 1'b0;
-	assign ahb_hprot[3:0] = {3'b001, ~axi_arprot[2]};
-	assign ahb_hwrite = (bypass_en ? master_opc[2:1] == 2'b01 : buf_write);
-	assign ahb_hwdata[63:0] = buf_data[63:0];
-	assign slave_valid = slave_valid_pre;
-	assign slave_opc[3:2] = (slvbuf_write ? 2'b11 : 2'b00);
-	assign slave_opc[1:0] = {2 {slvbuf_error}} & 2'b10;
-	assign slave_rdata[63:0] = (slvbuf_error ? {2 {last_bus_addr[31:0]}} : (buf_state == DONE ? buf_data[63:0] : ahb_hrdata_q[63:0]));
-	assign slave_tag[TAG - 1:0] = slvbuf_tag[TAG - 1:0];
-	assign last_addr_en = ((ahb_htrans[1:0] != 2'b00) & ahb_hready) & ahb_hwrite;
-	rvdffsc_fpga #(.WIDTH(1)) wrbuf_vldff(
-		.din(1'b1),
-		.dout(wrbuf_vld),
-		.en(wrbuf_en),
-		.clear(wrbuf_rst),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffsc_fpga #(.WIDTH(1)) wrbuf_data_vldff(
-		.din(1'b1),
-		.dout(wrbuf_data_vld),
-		.en(wrbuf_data_en),
-		.clear(wrbuf_rst),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(TAG)) wrbuf_tagff(
-		.din(axi_awid[TAG - 1:0]),
-		.dout(wrbuf_tag[TAG - 1:0]),
-		.en(wrbuf_en),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(3)) wrbuf_sizeff(
-		.din(axi_awsize[2:0]),
-		.dout(wrbuf_size[2:0]),
-		.en(wrbuf_en),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(32)) wrbuf_addrff(
-		.din(axi_awaddr[31:0]),
-		.dout(wrbuf_addr[31:0]),
-		.en(wrbuf_en & bus_clk_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdffe #(.WIDTH(64)) wrbuf_dataff(
-		.din(axi_wdata[63:0]),
-		.dout(wrbuf_data[63:0]),
-		.en(wrbuf_data_en & bus_clk_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdffs_fpga #(.WIDTH(8)) wrbuf_byteenff(
-		.din(axi_wstrb[7:0]),
-		.dout(wrbuf_byteen[7:0]),
-		.en(wrbuf_data_en),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(32)) last_bus_addrff(
-		.din(ahb_haddr[31:0]),
-		.dout(last_bus_addr[31:0]),
-		.en(last_addr_en),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffsc_fpga #(.WIDTH(3)) buf_state_ff(
-		.din(buf_nxtstate),
-		.dout({buf_state}),
-		.en(buf_state_en),
-		.clear(buf_rst),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(1)) buf_writeff(
-		.din(buf_write_in),
-		.dout(buf_write),
-		.en(buf_wr_en),
-		.clk(buf_clk),
-		.clken(buf_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(TAG)) buf_tagff(
-		.din(buf_tag_in[TAG - 1:0]),
-		.dout(buf_tag[TAG - 1:0]),
-		.en(buf_wr_en),
-		.clk(buf_clk),
-		.clken(buf_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(32)) buf_addrff(
-		.din(buf_addr_in[31:0]),
-		.dout(buf_addr[31:0]),
-		.en(buf_wr_en & bus_clk_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdffs_fpga #(.WIDTH(2)) buf_sizeff(
-		.din(buf_size_in[1:0]),
-		.dout(buf_size[1:0]),
-		.en(buf_wr_en),
-		.clk(buf_clk),
-		.clken(buf_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(1)) buf_alignedff(
-		.din(buf_aligned_in),
-		.dout(buf_aligned),
-		.en(buf_wr_en),
-		.clk(buf_clk),
-		.clken(buf_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(8)) buf_byteenff(
-		.din(buf_byteen_in[7:0]),
-		.dout(buf_byteen[7:0]),
-		.en(buf_wr_en),
-		.clk(buf_clk),
-		.clken(buf_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(64)) buf_dataff(
-		.din(buf_data_in[63:0]),
-		.dout(buf_data[63:0]),
-		.en(buf_data_wr_en & bus_clk_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdffs_fpga #(.WIDTH(1)) slvbuf_writeff(
-		.din(buf_write),
-		.dout(slvbuf_write),
-		.en(slvbuf_wr_en),
-		.clk(buf_clk),
-		.clken(buf_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(TAG)) slvbuf_tagff(
-		.din(buf_tag[TAG - 1:0]),
-		.dout(slvbuf_tag[TAG - 1:0]),
-		.en(slvbuf_wr_en),
-		.clk(buf_clk),
-		.clken(buf_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(1)) slvbuf_errorff(
-		.din(slvbuf_error_in),
-		.dout(slvbuf_error),
-		.en(slvbuf_error_en),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffsc_fpga #(.WIDTH(1)) buf_cmd_doneff(
-		.din(1'b1),
-		.dout(cmd_doneQ),
-		.en(cmd_done),
-		.clear(cmd_done_rst),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(3)) buf_cmd_byte_ptrff(
-		.din(buf_cmd_byte_ptr[2:0]),
-		.dout(buf_cmd_byte_ptrQ[2:0]),
-		.en(buf_cmd_byte_ptr_en),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) hready_ff(
-		.din(ahb_hready),
-		.dout(ahb_hready_q),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(2)) htrans_ff(
-		.din(ahb_htrans[1:0]),
-		.dout(ahb_htrans_q[1:0]),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) hwrite_ff(
-		.din(ahb_hwrite),
-		.dout(ahb_hwrite_q),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) hresp_ff(
-		.din(ahb_hresp),
-		.dout(ahb_hresp_q),
-		.clk(bus_clk),
-		.clken(bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(64)) hrdata_ff(
-		.din(ahb_hrdata[63:0]),
-		.dout(ahb_hrdata_q[63:0]),
-		.clk(ahbm_data_clk),
-		.clken(ahbm_data_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	assign buf_clken = bus_clk_en & ((buf_wr_en | slvbuf_wr_en) | clk_override);
-	assign ahbm_data_clken = bus_clk_en & ((buf_state != IDLE) | clk_override);
-	rvclkhdr bus_cgc(
-		.en(bus_clk_en),
-		.l1clk(bus_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvclkhdr buf_cgc(
-		.en(buf_clken),
-		.l1clk(buf_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvclkhdr ahbm_data_cgc(
-		.en(ahbm_data_clken),
-		.l1clk(ahbm_data_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-endmodule
-module eb1_dbg (
-	dbg_cmd_addr,
-	dbg_cmd_wrdata,
-	dbg_cmd_valid,
-	dbg_cmd_write,
-	dbg_cmd_type,
-	dbg_cmd_size,
-	dbg_core_rst_l,
-	core_dbg_rddata,
-	core_dbg_cmd_done,
-	core_dbg_cmd_fail,
-	dbg_dma_bubble,
-	dma_dbg_ready,
-	dbg_halt_req,
-	dbg_resume_req,
-	dec_tlu_debug_mode,
-	dec_tlu_dbg_halted,
-	dec_tlu_mpc_halted_only,
-	dec_tlu_resume_ack,
-	dmi_reg_en,
-	dmi_reg_addr,
-	dmi_reg_wr_en,
-	dmi_reg_wdata,
-	dmi_reg_rdata,
-	sb_axi_awvalid,
-	sb_axi_awready,
-	sb_axi_awid,
-	sb_axi_awaddr,
-	sb_axi_awregion,
-	sb_axi_awlen,
-	sb_axi_awsize,
-	sb_axi_awburst,
-	sb_axi_awlock,
-	sb_axi_awcache,
-	sb_axi_awprot,
-	sb_axi_awqos,
-	sb_axi_wvalid,
-	sb_axi_wready,
-	sb_axi_wdata,
-	sb_axi_wstrb,
-	sb_axi_wlast,
-	sb_axi_bvalid,
-	sb_axi_bready,
-	sb_axi_bresp,
-	sb_axi_arvalid,
-	sb_axi_arready,
-	sb_axi_arid,
-	sb_axi_araddr,
-	sb_axi_arregion,
-	sb_axi_arlen,
-	sb_axi_arsize,
-	sb_axi_arburst,
-	sb_axi_arlock,
-	sb_axi_arcache,
-	sb_axi_arprot,
-	sb_axi_arqos,
-	sb_axi_rvalid,
-	sb_axi_rready,
-	sb_axi_rdata,
-	sb_axi_rresp,
-	dbg_bus_clk_en,
-	clk,
-	rst_l,
-	dbg_rst_l,
-	clk_override,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	output wire [31:0] dbg_cmd_addr;
-	output wire [31:0] dbg_cmd_wrdata;
-	output wire dbg_cmd_valid;
-	output wire dbg_cmd_write;
-	output wire [1:0] dbg_cmd_type;
-	output wire [1:0] dbg_cmd_size;
-	output wire dbg_core_rst_l;
-	input wire [31:0] core_dbg_rddata;
-	input wire core_dbg_cmd_done;
-	input wire core_dbg_cmd_fail;
-	output wire dbg_dma_bubble;
-	input wire dma_dbg_ready;
-	output reg dbg_halt_req;
-	output reg dbg_resume_req;
-	input wire dec_tlu_debug_mode;
-	input wire dec_tlu_dbg_halted;
-	input wire dec_tlu_mpc_halted_only;
-	input wire dec_tlu_resume_ack;
-	input wire dmi_reg_en;
-	input wire [6:0] dmi_reg_addr;
-	input wire dmi_reg_wr_en;
-	input wire [31:0] dmi_reg_wdata;
-	output wire [31:0] dmi_reg_rdata;
-	output wire sb_axi_awvalid;
-	input wire sb_axi_awready;
-	output wire [pt[12-:8] - 1:0] sb_axi_awid;
-	output wire [31:0] sb_axi_awaddr;
-	output wire [3:0] sb_axi_awregion;
-	output wire [7:0] sb_axi_awlen;
-	output wire [2:0] sb_axi_awsize;
-	output wire [1:0] sb_axi_awburst;
-	output wire sb_axi_awlock;
-	output wire [3:0] sb_axi_awcache;
-	output wire [2:0] sb_axi_awprot;
-	output wire [3:0] sb_axi_awqos;
-	output wire sb_axi_wvalid;
-	input wire sb_axi_wready;
-	output wire [63:0] sb_axi_wdata;
-	output wire [7:0] sb_axi_wstrb;
-	output wire sb_axi_wlast;
-	input wire sb_axi_bvalid;
-	output wire sb_axi_bready;
-	input wire [1:0] sb_axi_bresp;
-	output wire sb_axi_arvalid;
-	input wire sb_axi_arready;
-	output wire [pt[12-:8] - 1:0] sb_axi_arid;
-	output wire [31:0] sb_axi_araddr;
-	output wire [3:0] sb_axi_arregion;
-	output wire [7:0] sb_axi_arlen;
-	output wire [2:0] sb_axi_arsize;
-	output wire [1:0] sb_axi_arburst;
-	output wire sb_axi_arlock;
-	output wire [3:0] sb_axi_arcache;
-	output wire [2:0] sb_axi_arprot;
-	output wire [3:0] sb_axi_arqos;
-	input wire sb_axi_rvalid;
-	output wire sb_axi_rready;
-	input wire [63:0] sb_axi_rdata;
-	input wire [1:0] sb_axi_rresp;
-	input wire dbg_bus_clk_en;
-	input wire clk;
-	input wire rst_l;
-	input wire dbg_rst_l;
-	input wire clk_override;
-	input wire scan_mode;
-	wire [3:0] dbg_state;
-	reg [3:0] dbg_nxtstate;
-	reg dbg_state_en;
-	wire [31:0] dmstatus_reg;
-	wire [31:0] dmcontrol_reg;
-	wire [31:0] command_reg;
-	wire [31:0] abstractcs_reg;
-	wire [31:0] haltsum0_reg;
-	wire [31:0] data0_reg;
-	wire [31:0] data1_reg;
-	wire [31:0] data0_din;
-	wire data0_reg_wren;
-	wire data0_reg_wren0;
-	wire data0_reg_wren1;
-	reg data0_reg_wren2;
-	wire [31:0] data1_din;
-	wire data1_reg_wren;
-	wire data1_reg_wren0;
-	wire data1_reg_wren1;
-	reg abstractcs_busy_wren;
-	reg abstractcs_busy_din;
-	wire [2:0] abstractcs_error_din;
-	wire abstractcs_error_sel0;
-	wire abstractcs_error_sel1;
-	wire abstractcs_error_seb1;
-	wire abstractcs_error_sel3;
-	wire abstractcs_error_sel4;
-	wire abstractcs_error_sel5;
-	wire abstractcs_error_sel6;
-	reg dbg_sb_bus_error;
-	wire abstractauto_reg_wren;
-	wire [1:0] abstractauto_reg;
-	wire dmstatus_resumeack_wren;
-	wire dmstatus_resumeack_din;
-	wire dmstatus_haveresetn_wren;
-	wire dmstatus_resumeack;
-	wire dmstatus_unavail;
-	wire dmstatus_running;
-	wire dmstatus_halted;
-	wire dmstatus_havereset;
-	wire dmstatus_haveresetn;
-	wire resumereq;
-	wire dmcontrol_wren;
-	wire dmcontrol_wren_Q;
-	wire execute_command_ns;
-	wire execute_command;
-	wire command_wren;
-	wire command_regno_wren;
-	wire command_transfer_din;
-	wire command_postexec_din;
-	wire [31:0] command_din;
-	wire [3:0] dbg_cmd_addr_incr;
-	wire [31:0] dbg_cmd_curr_addr;
-	wire [31:0] dbg_cmd_next_addr;
-	wire [31:0] dmi_reg_rdata_din;
-	wire [3:0] sb_state;
-	reg [3:0] sb_nxtstate;
-	reg sb_state_en;
-	wire sbcs_wren;
-	reg sbcs_sbbusy_wren;
-	reg sbcs_sbbusy_din;
-	wire sbcs_sbbusyerror_wren;
-	wire sbcs_sbbusyerror_din;
-	reg sbcs_sberror_wren;
-	reg [2:0] sbcs_sberror_din;
-	wire sbcs_unaligned;
-	wire sbcs_illegal_size;
-	wire [19:15] sbcs_reg_int;
-	wire sbdata0_reg_wren0;
-	wire sbdata0_reg_wren1;
-	wire sbdata0_reg_wren;
-	wire [31:0] sbdata0_din;
-	wire sbdata1_reg_wren0;
-	wire sbdata1_reg_wren1;
-	wire sbdata1_reg_wren;
-	wire [31:0] sbdata1_din;
-	wire sbaddress0_reg_wren0;
-	reg sbaddress0_reg_wren1;
-	wire sbaddress0_reg_wren;
-	wire [31:0] sbaddress0_reg_din;
-	wire [3:0] sbaddress0_incr;
-	wire sbreadonaddr_access;
-	wire sbreadondata_access;
-	wire sbdata0wr_access;
-	reg sb_abmem_cmd_done_in;
-	reg sb_abmem_data_done_in;
-	reg sb_abmem_cmd_done_en;
-	reg sb_abmem_data_done_en;
-	wire sb_abmem_cmd_done;
-	wire sb_abmem_data_done;
-	wire [31:0] abmem_addr;
-	wire abmem_addr_in_dccm_region;
-	wire abmem_addr_in_iccm_region;
-	wire abmem_addr_in_pic_region;
-	wire abmem_addr_core_local;
-	wire abmem_addr_external;
-	wire sb_cmd_pending;
-	wire sb_abmem_cmd_pending;
-	wire sb_abmem_cmd_write;
-	wire [2:0] sb_abmem_cmd_size;
-	wire [31:0] sb_abmem_cmd_addr;
-	wire [31:0] sb_abmem_cmd_wdata;
-	wire [2:0] sb_cmd_size;
-	wire [31:0] sb_cmd_addr;
-	wire [63:0] sb_cmd_wdata;
-	wire sb_bus_cmd_read;
-	wire sb_bus_cmd_write_addr;
-	wire sb_bus_cmd_write_data;
-	wire sb_bus_rsp_read;
-	wire sb_bus_rsp_write;
-	wire sb_bus_rsp_error;
-	wire [63:0] sb_bus_rdata;
-	wire [31:0] sbcs_reg;
-	wire [31:0] sbaddress0_reg;
-	wire [31:0] sbdata0_reg;
-	wire [31:0] sbdata1_reg;
-	wire sb_abmem_cmd_arvalid;
-	wire sb_abmem_cmd_awvalid;
-	wire sb_abmem_cmd_wvalid;
-	wire sb_abmem_read_pend;
-	wire sb_cmd_awvalid;
-	wire sb_cmd_wvalid;
-	wire sb_cmd_arvalid;
-	wire sb_read_pend;
-	wire [31:0] sb_axi_addr;
-	wire [63:0] sb_axi_wrdata;
-	wire [2:0] sb_axi_size;
-	wire dbg_dm_rst_l;
-	wire dbg_free_clken;
-	wire dbg_free_clk;
-	wire sb_free_clken;
-	wire sb_free_clk;
-	localparam [3:0] IDLE = 4'h0;
-	assign dbg_free_clken = (((((((dmi_reg_en | execute_command) | (dbg_state != IDLE)) | dbg_state_en) | dec_tlu_dbg_halted) | dec_tlu_mpc_halted_only) | dec_tlu_debug_mode) | dbg_halt_req) | clk_override;
-	localparam [3:0] SBIDLE = 4'h0;
-	assign sb_free_clken = (((dmi_reg_en | execute_command) | sb_state_en) | (sb_state != SBIDLE)) | clk_override;
-	rvoclkhdr dbg_free_cgc(
-		.en(dbg_free_clken),
-		.l1clk(dbg_free_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr sb_free_cgc(
-		.en(sb_free_clken),
-		.l1clk(sb_free_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	assign dbg_dm_rst_l = dbg_rst_l & (dmcontrol_reg[0] | scan_mode);
-	assign dbg_core_rst_l = ~dmcontrol_reg[1] | scan_mode;
-	assign sbcs_reg[31:29] = 3'b001;
-	assign sbcs_reg[28:23] = {6 {1'sb0}};
-	assign sbcs_reg[19:15] = {sbcs_reg_int[19], ~sbcs_reg_int[18], sbcs_reg_int[17:15]};
-	assign sbcs_reg[11:5] = 7'h20;
-	assign sbcs_reg[4:0] = 5'b01111;
-	assign sbcs_wren = (((dmi_reg_addr == 7'h38) & dmi_reg_en) & dmi_reg_wr_en) & (sb_state == SBIDLE);
-	assign sbcs_sbbusyerror_wren = (sbcs_wren & dmi_reg_wdata[22]) | ((sbcs_reg[21] & dmi_reg_en) & (((dmi_reg_wr_en & (dmi_reg_addr == 7'h39)) | (dmi_reg_addr == 7'h3c)) | (dmi_reg_addr == 7'h3d)));
-	assign sbcs_sbbusyerror_din = ~(sbcs_wren & dmi_reg_wdata[22]);
-	rvdffs #(.WIDTH(1)) sbcs_sbbusyerror_reg(
-		.din(sbcs_sbbusyerror_din),
-		.dout(sbcs_reg[22]),
-		.en(sbcs_sbbusyerror_wren),
-		.rst_l(dbg_dm_rst_l),
-		.clk(sb_free_clk)
-	);
-	rvdffs #(.WIDTH(1)) sbcs_sbbusy_reg(
-		.din(sbcs_sbbusy_din),
-		.dout(sbcs_reg[21]),
-		.en(sbcs_sbbusy_wren),
-		.rst_l(dbg_dm_rst_l),
-		.clk(sb_free_clk)
-	);
-	rvdffs #(.WIDTH(1)) sbcs_sbreadonaddr_reg(
-		.din(dmi_reg_wdata[20]),
-		.dout(sbcs_reg[20]),
-		.en(sbcs_wren),
-		.rst_l(dbg_dm_rst_l),
-		.clk(sb_free_clk)
-	);
-	rvdffs #(.WIDTH(5)) sbcs_misc_reg(
-		.din({dmi_reg_wdata[19], ~dmi_reg_wdata[18], dmi_reg_wdata[17:15]}),
-		.dout(sbcs_reg_int[19:15]),
-		.en(sbcs_wren),
-		.rst_l(dbg_dm_rst_l),
-		.clk(sb_free_clk)
-	);
-	rvdffs #(.WIDTH(3)) sbcs_error_reg(
-		.din(sbcs_sberror_din[2:0]),
-		.dout(sbcs_reg[14:12]),
-		.en(sbcs_sberror_wren),
-		.rst_l(dbg_dm_rst_l),
-		.clk(sb_free_clk)
-	);
-	assign sbcs_unaligned = (((sbcs_reg[19:17] == 3'b001) & sbaddress0_reg[0]) | ((sbcs_reg[19:17] == 3'b010) & |sbaddress0_reg[1:0])) | ((sbcs_reg[19:17] == 3'b011) & |sbaddress0_reg[2:0]);
-	assign sbcs_illegal_size = sbcs_reg[19];
-	assign sbaddress0_incr[3:0] = ((({4 {sbcs_reg[19:17] == 3'h0}} & 4'b0001) | ({4 {sbcs_reg[19:17] == 3'h1}} & 4'b0010)) | ({4 {sbcs_reg[19:17] == 3'h2}} & 4'b0100)) | ({4 {sbcs_reg[19:17] == 3'h3}} & 4'b1000);
-	assign sbdata0_reg_wren0 = (dmi_reg_en & dmi_reg_wr_en) & (dmi_reg_addr == 7'h3c);
-	localparam [3:0] RSP_RD = 4'h7;
-	assign sbdata0_reg_wren1 = ((sb_state == RSP_RD) & sb_state_en) & ~sbcs_sberror_wren;
-	assign sbdata0_reg_wren = sbdata0_reg_wren0 | sbdata0_reg_wren1;
-	assign sbdata1_reg_wren0 = (dmi_reg_en & dmi_reg_wr_en) & (dmi_reg_addr == 7'h3d);
-	assign sbdata1_reg_wren1 = ((sb_state == RSP_RD) & sb_state_en) & ~sbcs_sberror_wren;
-	assign sbdata1_reg_wren = sbdata1_reg_wren0 | sbdata1_reg_wren1;
-	assign sbdata0_din[31:0] = ({32 {sbdata0_reg_wren0}} & dmi_reg_wdata[31:0]) | ({32 {sbdata0_reg_wren1}} & sb_bus_rdata[31:0]);
-	assign sbdata1_din[31:0] = ({32 {sbdata1_reg_wren0}} & dmi_reg_wdata[31:0]) | ({32 {sbdata1_reg_wren1}} & sb_bus_rdata[63:32]);
-	rvdffe #(.WIDTH(32)) dbg_sbdata0_reg(
-		.clk(clk),
-		.scan_mode(scan_mode),
-		.din(sbdata0_din[31:0]),
-		.dout(sbdata0_reg[31:0]),
-		.en(sbdata0_reg_wren),
-		.rst_l(dbg_dm_rst_l)
-	);
-	rvdffe #(.WIDTH(32)) dbg_sbdata1_reg(
-		.clk(clk),
-		.scan_mode(scan_mode),
-		.din(sbdata1_din[31:0]),
-		.dout(sbdata1_reg[31:0]),
-		.en(sbdata1_reg_wren),
-		.rst_l(dbg_dm_rst_l)
-	);
-	assign sbaddress0_reg_wren0 = (dmi_reg_en & dmi_reg_wr_en) & (dmi_reg_addr == 7'h39);
-	assign sbaddress0_reg_wren = sbaddress0_reg_wren0 | sbaddress0_reg_wren1;
-	assign sbaddress0_reg_din[31:0] = ({32 {sbaddress0_reg_wren0}} & dmi_reg_wdata[31:0]) | ({32 {sbaddress0_reg_wren1}} & (sbaddress0_reg[31:0] + {28'b0000000000000000000000000000, sbaddress0_incr[3:0]}));
-	rvdffe #(.WIDTH(32)) dbg_sbaddress0_reg(
-		.clk(clk),
-		.scan_mode(scan_mode),
-		.din(sbaddress0_reg_din[31:0]),
-		.dout(sbaddress0_reg[31:0]),
-		.en(sbaddress0_reg_wren),
-		.rst_l(dbg_dm_rst_l)
-	);
-	assign sbreadonaddr_access = ((dmi_reg_en & dmi_reg_wr_en) & (dmi_reg_addr == 7'h39)) & sbcs_reg[20];
-	assign sbreadondata_access = ((dmi_reg_en & ~dmi_reg_wr_en) & (dmi_reg_addr == 7'h3c)) & sbcs_reg[15];
-	assign sbdata0wr_access = (dmi_reg_en & dmi_reg_wr_en) & (dmi_reg_addr == 7'h3c);
-	assign dmcontrol_wren = ((dmi_reg_addr == 7'h10) & dmi_reg_en) & dmi_reg_wr_en;
-	assign dmcontrol_reg[29] = 1'b0;
-	assign dmcontrol_reg[27:2] = {26 {1'sb0}};
-	assign resumereq = (dmcontrol_reg[30] & ~dmcontrol_reg[31]) & dmcontrol_wren_Q;
-	rvdffs #(.WIDTH(4)) dmcontrolff(
-		.din({dmi_reg_wdata[31:30], dmi_reg_wdata[28], dmi_reg_wdata[1]}),
-		.dout({dmcontrol_reg[31:30], dmcontrol_reg[28], dmcontrol_reg[1]}),
-		.en(dmcontrol_wren),
-		.rst_l(dbg_dm_rst_l),
-		.clk(dbg_free_clk)
-	);
-	rvdffs #(.WIDTH(1)) dmcontrol_dmactive_ff(
-		.din(dmi_reg_wdata[0]),
-		.dout(dmcontrol_reg[0]),
-		.en(dmcontrol_wren),
-		.rst_l(dbg_rst_l),
-		.clk(dbg_free_clk)
-	);
-	rvdff #(.WIDTH(1)) dmcontrol_wrenff(
-		.din(dmcontrol_wren),
-		.dout(dmcontrol_wren_Q),
-		.rst_l(dbg_dm_rst_l),
-		.clk(dbg_free_clk)
-	);
-	assign dmstatus_reg[31:20] = {12 {1'sb0}};
-	assign dmstatus_reg[19:18] = {2 {dmstatus_havereset}};
-	assign dmstatus_reg[15:14] = {2 {1'sb0}};
-	assign dmstatus_reg[7] = 1'b1;
-	assign dmstatus_reg[6:4] = {3 {1'sb0}};
-	assign dmstatus_reg[17:16] = {2 {dmstatus_resumeack}};
-	assign dmstatus_reg[13:12] = {2 {dmstatus_unavail}};
-	assign dmstatus_reg[11:10] = {2 {dmstatus_running}};
-	assign dmstatus_reg[9:8] = {2 {dmstatus_halted}};
-	assign dmstatus_reg[3:0] = 4'h2;
-	localparam [3:0] RESUMING = 4'h9;
-	assign dmstatus_resumeack_wren = ((dbg_state == RESUMING) & dec_tlu_resume_ack) | ((dmstatus_resumeack & resumereq) & dmstatus_halted);
-	assign dmstatus_resumeack_din = (dbg_state == RESUMING) & dec_tlu_resume_ack;
-	assign dmstatus_haveresetn_wren = ((((dmi_reg_addr == 7'h10) & dmi_reg_wdata[28]) & dmi_reg_en) & dmi_reg_wr_en) & dmcontrol_reg[0];
-	assign dmstatus_havereset = ~dmstatus_haveresetn;
-	assign dmstatus_unavail = dmcontrol_reg[1] | ~rst_l;
-	assign dmstatus_running = ~(dmstatus_unavail | dmstatus_halted);
-	rvdffs #(.WIDTH(1)) dmstatus_resumeack_reg(
-		.din(dmstatus_resumeack_din),
-		.dout(dmstatus_resumeack),
-		.en(dmstatus_resumeack_wren),
-		.rst_l(dbg_dm_rst_l),
-		.clk(dbg_free_clk)
-	);
-	rvdff #(.WIDTH(1)) dmstatus_halted_reg(
-		.din(dec_tlu_dbg_halted & ~dec_tlu_mpc_halted_only),
-		.dout(dmstatus_halted),
-		.rst_l(dbg_dm_rst_l),
-		.clk(dbg_free_clk)
-	);
-	rvdffs #(.WIDTH(1)) dmstatus_haveresetn_reg(
-		.din(1'b1),
-		.dout(dmstatus_haveresetn),
-		.en(dmstatus_haveresetn_wren),
-		.rst_l(rst_l),
-		.clk(dbg_free_clk)
-	);
-	assign haltsum0_reg[31:1] = {31 {1'sb0}};
-	assign haltsum0_reg[0] = dmstatus_halted;
-	assign abstractcs_reg[31:13] = {19 {1'sb0}};
-	assign abstractcs_reg[11] = 1'b0;
-	assign abstractcs_reg[7:4] = {4 {1'sb0}};
-	assign abstractcs_reg[3:0] = 4'h2;
-	assign abstractcs_error_sel0 = ((abstractcs_reg[12] & ~(|abstractcs_reg[10:8])) & dmi_reg_en) & ((((dmi_reg_wr_en & ((dmi_reg_addr == 7'h16) | (dmi_reg_addr == 7'h17))) | (dmi_reg_addr == 7'h18)) | (dmi_reg_addr == 7'h04)) | (dmi_reg_addr == 7'h05));
-	assign abstractcs_error_sel1 = (execute_command & ~(|abstractcs_reg[10:8])) & (((~((command_reg[31:24] == 8'b00000000) | (command_reg[31:24] == 8'h02)) | (((command_reg[22:20] == 3'b011) | command_reg[22]) & (command_reg[31:24] == 8'h02))) | ((command_reg[22:20] != 3'b010) & ((command_reg[31:24] == 8'h00) & command_reg[17]))) | ((command_reg[31:24] == 8'h00) & command_reg[18]));
-	assign abstractcs_error_seb1 = ((core_dbg_cmd_done & core_dbg_cmd_fail) | ((execute_command & (command_reg[31:24] == 8'h00)) & (((command_reg[15:12] == 4'h1) & (command_reg[11:5] != 0)) | (command_reg[15:13] != 0)))) & ~(|abstractcs_reg[10:8]);
-	localparam [3:0] HALTED = 4'h2;
-	assign abstractcs_error_sel3 = (execute_command & (dbg_state != HALTED)) & ~(|abstractcs_reg[10:8]);
-	assign abstractcs_error_sel4 = (dbg_sb_bus_error & dbg_bus_clk_en) & ~(|abstractcs_reg[10:8]);
-	assign abstractcs_error_sel5 = ((execute_command & (command_reg[31:24] == 8'h02)) & ~(|abstractcs_reg[10:8])) & (((command_reg[22:20] == 3'b001) & data1_reg[0]) | ((command_reg[22:20] == 3'b010) & |data1_reg[1:0]));
-	assign abstractcs_error_sel6 = ((dmi_reg_addr == 7'h16) & dmi_reg_en) & dmi_reg_wr_en;
-	assign abstractcs_error_din[2:0] = (abstractcs_error_sel0 ? 3'b001 : (abstractcs_error_sel1 ? 3'b010 : (abstractcs_error_seb1 ? 3'b011 : (abstractcs_error_sel3 ? 3'b100 : (abstractcs_error_sel4 ? 3'b101 : (abstractcs_error_sel5 ? 3'b111 : (abstractcs_error_sel6 ? ~dmi_reg_wdata[10:8] & abstractcs_reg[10:8] : abstractcs_reg[10:8])))))));
-	rvdffs #(.WIDTH(1)) dmabstractcs_busy_reg(
-		.din(abstractcs_busy_din),
-		.dout(abstractcs_reg[12]),
-		.en(abstractcs_busy_wren),
-		.rst_l(dbg_dm_rst_l),
-		.clk(dbg_free_clk)
-	);
-	rvdff #(.WIDTH(3)) dmabstractcs_error_reg(
-		.din(abstractcs_error_din[2:0]),
-		.dout(abstractcs_reg[10:8]),
-		.rst_l(dbg_dm_rst_l),
-		.clk(dbg_free_clk)
-	);
-	assign abstractauto_reg_wren = ((dmi_reg_en & dmi_reg_wr_en) & (dmi_reg_addr == 7'h18)) & ~abstractcs_reg[12];
-	rvdffs #(.WIDTH(2)) dbg_abstractauto_reg(
-		.din(dmi_reg_wdata[1:0]),
-		.dout(abstractauto_reg[1:0]),
-		.en(abstractauto_reg_wren),
-		.rst_l(dbg_dm_rst_l),
-		.clk(dbg_free_clk)
-	);
-	assign execute_command_ns = command_wren | ((dmi_reg_en & ~abstractcs_reg[12]) & (((dmi_reg_addr == 7'h04) & abstractauto_reg[0]) | ((dmi_reg_addr == 7'h05) & abstractauto_reg[1])));
-	assign command_wren = ((dmi_reg_addr == 7'h17) & dmi_reg_en) & dmi_reg_wr_en;
-	localparam [3:0] CMD_DONE = 4'h8;
-	assign command_regno_wren = command_wren | ((((command_reg[31:24] == 8'h00) & command_reg[19]) & (dbg_state == CMD_DONE)) & ~(|abstractcs_reg[10:8]));
-	assign command_postexec_din = (dmi_reg_wdata[31:24] == 8'h00) & dmi_reg_wdata[18];
-	assign command_transfer_din = (dmi_reg_wdata[31:24] == 8'h00) & dmi_reg_wdata[17];
-	assign command_din[31:16] = {dmi_reg_wdata[31:24], 1'b0, dmi_reg_wdata[22:19], command_postexec_din, command_transfer_din, dmi_reg_wdata[16]};
-	assign command_din[15:0] = (command_wren ? dmi_reg_wdata[15:0] : dbg_cmd_next_addr[15:0]);
-	rvdff #(.WIDTH(1)) execute_commandff(
-		.din(execute_command_ns),
-		.dout(execute_command),
-		.clk(dbg_free_clk),
-		.rst_l(dbg_dm_rst_l)
-	);
-	rvdffe #(.WIDTH(16)) dmcommand_reg(
-		.clk(clk),
-		.scan_mode(scan_mode),
-		.din(command_din[31:16]),
-		.dout(command_reg[31:16]),
-		.en(command_wren),
-		.rst_l(dbg_dm_rst_l)
-	);
-	rvdffe #(.WIDTH(16)) dmcommand_regno_reg(
-		.clk(clk),
-		.scan_mode(scan_mode),
-		.din(command_din[15:0]),
-		.dout(command_reg[15:0]),
-		.en(command_regno_wren),
-		.rst_l(dbg_dm_rst_l)
-	);
-	assign data0_reg_wren0 = (((dmi_reg_en & dmi_reg_wr_en) & (dmi_reg_addr == 7'h04)) & (dbg_state == HALTED)) & ~abstractcs_reg[12];
-	localparam [3:0] CORE_CMD_WAIT = 4'h4;
-	assign data0_reg_wren1 = (core_dbg_cmd_done & (dbg_state == CORE_CMD_WAIT)) & ~command_reg[16];
-	assign data0_reg_wren = (data0_reg_wren0 | data0_reg_wren1) | data0_reg_wren2;
-	assign data0_din[31:0] = (({32 {data0_reg_wren0}} & dmi_reg_wdata[31:0]) | ({32 {data0_reg_wren1}} & core_dbg_rddata[31:0])) | ({32 {data0_reg_wren2}} & sb_bus_rdata[31:0]);
-	rvdffe #(.WIDTH(32)) dbg_data0_reg(
-		.clk(clk),
-		.scan_mode(scan_mode),
-		.din(data0_din[31:0]),
-		.dout(data0_reg[31:0]),
-		.en(data0_reg_wren),
-		.rst_l(dbg_dm_rst_l)
-	);
-	assign data1_reg_wren0 = (((dmi_reg_en & dmi_reg_wr_en) & (dmi_reg_addr == 7'h05)) & (dbg_state == HALTED)) & ~abstractcs_reg[12];
-	assign data1_reg_wren1 = (((dbg_state == CMD_DONE) & (command_reg[31:24] == 8'h02)) & command_reg[19]) & ~(|abstractcs_reg[10:8]);
-	assign data1_reg_wren = data1_reg_wren0 | data1_reg_wren1;
-	assign data1_din[31:0] = ({32 {data1_reg_wren0}} & dmi_reg_wdata[31:0]) | ({32 {data1_reg_wren1}} & dbg_cmd_next_addr[31:0]);
-	rvdffe #(.WIDTH(32)) dbg_data1_reg(
-		.clk(clk),
-		.scan_mode(scan_mode),
-		.din(data1_din[31:0]),
-		.dout(data1_reg[31:0]),
-		.en(data1_reg_wren),
-		.rst_l(dbg_dm_rst_l)
-	);
-	rvdffs #(.WIDTH(1)) sb_abmem_cmd_doneff(
-		.din(sb_abmem_cmd_done_in),
-		.dout(sb_abmem_cmd_done),
-		.en(sb_abmem_cmd_done_en),
-		.clk(dbg_free_clk),
-		.rst_l(dbg_dm_rst_l)
-	);
-	rvdffs #(.WIDTH(1)) sb_abmem_data_doneff(
-		.din(sb_abmem_data_done_in),
-		.dout(sb_abmem_data_done),
-		.en(sb_abmem_data_done_en),
-		.clk(dbg_free_clk),
-		.rst_l(dbg_dm_rst_l)
-	);
-	localparam [3:0] CORE_CMD_START = 4'h3;
-	localparam [3:0] HALTING = 4'h1;
-	localparam [3:0] SB_CMD_RESP = 4'h7;
-	localparam [3:0] SB_CMD_SEND = 4'h6;
-	localparam [3:0] SB_CMD_START = 4'h5;
-	always @(*) begin
-		dbg_nxtstate = IDLE;
-		dbg_state_en = 1'b0;
-		abstractcs_busy_wren = 1'b0;
-		abstractcs_busy_din = 1'b0;
-		dbg_halt_req = dmcontrol_wren_Q & dmcontrol_reg[31];
-		dbg_resume_req = 1'b0;
-		dbg_sb_bus_error = 1'b0;
-		data0_reg_wren2 = 1'b0;
-		sb_abmem_cmd_done_in = 1'b0;
-		sb_abmem_data_done_in = 1'b0;
-		sb_abmem_cmd_done_en = 1'b0;
-		sb_abmem_data_done_en = 1'b0;
-		case (dbg_state)
-			IDLE: begin
-				dbg_nxtstate = (dmstatus_reg[9] | dec_tlu_mpc_halted_only ? HALTED : HALTING);
-				dbg_state_en = (dmcontrol_reg[31] | dmstatus_reg[9]) | dec_tlu_mpc_halted_only;
-				dbg_halt_req = dmcontrol_reg[31];
-			end
-			HALTING: begin
-				dbg_nxtstate = HALTED;
-				dbg_state_en = dmstatus_reg[9] | dec_tlu_mpc_halted_only;
-			end
-			HALTED: begin
-				dbg_nxtstate = (dmstatus_reg[9] ? (resumereq ? RESUMING : ((command_reg[31:24] == 8'h02) & abmem_addr_external ? SB_CMD_START : CORE_CMD_START)) : (dmcontrol_reg[31] ? HALTING : IDLE));
-				dbg_state_en = ((dmstatus_reg[9] & resumereq) | execute_command) | ~(dmstatus_reg[9] | dec_tlu_mpc_halted_only);
-				abstractcs_busy_wren = dbg_state_en & ((dbg_nxtstate == CORE_CMD_START) | (dbg_nxtstate == SB_CMD_START));
-				abstractcs_busy_din = 1'b1;
-				dbg_resume_req = dbg_state_en & (dbg_nxtstate == RESUMING);
-			end
-			CORE_CMD_START: begin
-				dbg_nxtstate = (|abstractcs_reg[10:8] | ((command_reg[31:24] == 8'h00) & ~command_reg[17]) ? CMD_DONE : CORE_CMD_WAIT);
-				dbg_state_en = (dbg_cmd_valid | |abstractcs_reg[10:8]) | ((command_reg[31:24] == 8'h00) & ~command_reg[17]);
-			end
-			CORE_CMD_WAIT: begin
-				dbg_nxtstate = CMD_DONE;
-				dbg_state_en = core_dbg_cmd_done;
-			end
-			SB_CMD_START: begin
-				dbg_nxtstate = (|abstractcs_reg[10:8] ? CMD_DONE : SB_CMD_SEND);
-				dbg_state_en = (dbg_bus_clk_en & ~sb_cmd_pending) | |abstractcs_reg[10:8];
-			end
-			SB_CMD_SEND: begin
-				sb_abmem_cmd_done_in = 1'b1;
-				sb_abmem_data_done_in = 1'b1;
-				sb_abmem_cmd_done_en = (sb_bus_cmd_read | sb_bus_cmd_write_addr) & dbg_bus_clk_en;
-				sb_abmem_data_done_en = (sb_bus_cmd_read | sb_bus_cmd_write_data) & dbg_bus_clk_en;
-				dbg_nxtstate = SB_CMD_RESP;
-				dbg_state_en = ((sb_abmem_cmd_done | sb_abmem_cmd_done_en) & (sb_abmem_data_done | sb_abmem_data_done_en)) & dbg_bus_clk_en;
-			end
-			SB_CMD_RESP: begin
-				dbg_nxtstate = CMD_DONE;
-				dbg_state_en = (sb_bus_rsp_read | sb_bus_rsp_write) & dbg_bus_clk_en;
-				dbg_sb_bus_error = ((sb_bus_rsp_read | sb_bus_rsp_write) & sb_bus_rsp_error) & dbg_bus_clk_en;
-				data0_reg_wren2 = (dbg_state_en & ~sb_abmem_cmd_write) & ~dbg_sb_bus_error;
-			end
-			CMD_DONE: begin
-				dbg_nxtstate = HALTED;
-				dbg_state_en = 1'b1;
-				abstractcs_busy_wren = dbg_state_en;
-				abstractcs_busy_din = 1'b0;
-				sb_abmem_cmd_done_in = 1'b0;
-				sb_abmem_data_done_in = 1'b0;
-				sb_abmem_cmd_done_en = 1'b1;
-				sb_abmem_data_done_en = 1'b1;
-			end
-			RESUMING: begin
-				dbg_nxtstate = IDLE;
-				dbg_state_en = dmstatus_reg[17];
-			end
-			default: begin
-				dbg_nxtstate = IDLE;
-				dbg_state_en = 1'b0;
-				abstractcs_busy_wren = 1'b0;
-				abstractcs_busy_din = 1'b0;
-				dbg_halt_req = 1'b0;
-				dbg_resume_req = 1'b0;
-				dbg_sb_bus_error = 1'b0;
-				data0_reg_wren2 = 1'b0;
-				sb_abmem_cmd_done_in = 1'b0;
-				sb_abmem_data_done_in = 1'b0;
-				sb_abmem_cmd_done_en = 1'b0;
-				sb_abmem_data_done_en = 1'b0;
-			end
-		endcase
-	end
-	assign dmi_reg_rdata_din[31:0] = ((((((((((({32 {dmi_reg_addr == 7'h04}} & data0_reg[31:0]) | ({32 {dmi_reg_addr == 7'h05}} & data1_reg[31:0])) | ({32 {dmi_reg_addr == 7'h10}} & {2'b00, dmcontrol_reg[29], 1'b0, dmcontrol_reg[27:0]})) | ({32 {dmi_reg_addr == 7'h11}} & dmstatus_reg[31:0])) | ({32 {dmi_reg_addr == 7'h16}} & abstractcs_reg[31:0])) | ({32 {dmi_reg_addr == 7'h17}} & command_reg[31:0])) | ({32 {dmi_reg_addr == 7'h18}} & {30'h00000000, abstractauto_reg[1:0]})) | ({32 {dmi_reg_addr == 7'h40}} & haltsum0_reg[31:0])) | ({32 {dmi_reg_addr == 7'h38}} & sbcs_reg[31:0])) | ({32 {dmi_reg_addr == 7'h39}} & sbaddress0_reg[31:0])) | ({32 {dmi_reg_addr == 7'h3c}} & sbdata0_reg[31:0])) | ({32 {dmi_reg_addr == 7'h3d}} & sbdata1_reg[31:0]);
-	rvdffs #(.WIDTH(4)) dbg_state_reg(
-		.din(dbg_nxtstate),
-		.dout({dbg_state}),
-		.en(dbg_state_en),
-		.rst_l(dbg_dm_rst_l & rst_l),
-		.clk(dbg_free_clk)
-	);
-	rvdffe #(.WIDTH(32)) dmi_rddata_reg(
-		.din(dmi_reg_rdata_din[31:0]),
-		.dout(dmi_reg_rdata[31:0]),
-		.en(dmi_reg_en),
-		.rst_l(dbg_dm_rst_l),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	assign abmem_addr[31:0] = data1_reg[31:0];
-	assign abmem_addr_core_local = (abmem_addr_in_dccm_region | abmem_addr_in_iccm_region) | abmem_addr_in_pic_region;
-	assign abmem_addr_external = ~abmem_addr_core_local;
-	assign abmem_addr_in_dccm_region = (abmem_addr[31:28] == pt[1333-:8]) & pt[1365-:5];
-	assign abmem_addr_in_iccm_region = (abmem_addr[31:28] == pt[895-:8]) & pt[927-:5];
-	assign abmem_addr_in_pic_region = abmem_addr[31:28] == pt[77-:8];
-	assign dbg_cmd_addr[31:0] = (command_reg[31:24] == 8'h02 ? data1_reg[31:0] : {20'b00000000000000000000, command_reg[11:0]});
-	assign dbg_cmd_wrdata[31:0] = data0_reg[31:0];
-	assign dbg_cmd_valid = ((dbg_state == CORE_CMD_START) & ~((|abstractcs_reg[10:8] | ((command_reg[31:24] == 8'h00) & ~command_reg[17])) | ((command_reg[31:24] == 8'h02) & abmem_addr_external))) & dma_dbg_ready;
-	assign dbg_cmd_write = command_reg[16];
-	assign dbg_cmd_type[1:0] = (command_reg[31:24] == 8'h02 ? 2'b10 : {1'b0, command_reg[15:12] == 4'b0000});
-	assign dbg_cmd_size[1:0] = command_reg[21:20];
-	assign dbg_cmd_addr_incr[3:0] = (command_reg[31:24] == 8'h02 ? 4'h1 << sb_abmem_cmd_size[1:0] : 4'h1);
-	assign dbg_cmd_curr_addr[31:0] = (command_reg[31:24] == 8'h02 ? data1_reg[31:0] : {16'b0000000000000000, command_reg[15:0]});
-	assign dbg_cmd_next_addr[31:0] = dbg_cmd_curr_addr[31:0] + {28'h0000000, dbg_cmd_addr_incr[3:0]};
-	assign dbg_dma_bubble = ((dbg_state == CORE_CMD_START) & ~(|abstractcs_reg[10:8])) | (dbg_state == CORE_CMD_WAIT);
-	localparam [3:0] CMD_RD = 4'h3;
-	localparam [3:0] CMD_WR = 4'h4;
-	localparam [3:0] CMD_WR_ADDR = 4'h5;
-	localparam [3:0] CMD_WR_DATA = 4'h6;
-	localparam [3:0] RSP_WR = 4'h8;
-	assign sb_cmd_pending = (((((sb_state == CMD_RD) | (sb_state == CMD_WR)) | (sb_state == CMD_WR_ADDR)) | (sb_state == CMD_WR_DATA)) | (sb_state == RSP_RD)) | (sb_state == RSP_WR);
-	assign sb_abmem_cmd_pending = ((dbg_state == SB_CMD_START) | (dbg_state == SB_CMD_SEND)) | (dbg_state == SB_CMD_RESP);
-	localparam [3:0] DONE = 4'h9;
-	localparam [3:0] WAIT_RD = 4'h1;
-	localparam [3:0] WAIT_WR = 4'h2;
-	always @(*) begin
-		sb_nxtstate = SBIDLE;
-		sb_state_en = 1'b0;
-		sbcs_sbbusy_wren = 1'b0;
-		sbcs_sbbusy_din = 1'b0;
-		sbcs_sberror_wren = 1'b0;
-		sbcs_sberror_din[2:0] = 3'b000;
-		sbaddress0_reg_wren1 = 1'b0;
-		case (sb_state)
-			SBIDLE: begin
-				sb_nxtstate = (sbdata0wr_access ? WAIT_WR : WAIT_RD);
-				sb_state_en = (((sbdata0wr_access | sbreadondata_access) | sbreadonaddr_access) & ~(|sbcs_reg[14:12])) & ~sbcs_reg[22];
-				sbcs_sbbusy_wren = sb_state_en;
-				sbcs_sbbusy_din = 1'b1;
-				sbcs_sberror_wren = sbcs_wren & |dmi_reg_wdata[14:12];
-				sbcs_sberror_din[2:0] = ~dmi_reg_wdata[14:12] & sbcs_reg[14:12];
-			end
-			WAIT_RD: begin
-				sb_nxtstate = (sbcs_unaligned | sbcs_illegal_size ? DONE : CMD_RD);
-				sb_state_en = ((dbg_bus_clk_en & ~sb_abmem_cmd_pending) | sbcs_unaligned) | sbcs_illegal_size;
-				sbcs_sberror_wren = sbcs_unaligned | sbcs_illegal_size;
-				sbcs_sberror_din[2:0] = (sbcs_unaligned ? 3'b011 : 3'b100);
-			end
-			WAIT_WR: begin
-				sb_nxtstate = (sbcs_unaligned | sbcs_illegal_size ? DONE : CMD_WR);
-				sb_state_en = ((dbg_bus_clk_en & ~sb_abmem_cmd_pending) | sbcs_unaligned) | sbcs_illegal_size;
-				sbcs_sberror_wren = sbcs_unaligned | sbcs_illegal_size;
-				sbcs_sberror_din[2:0] = (sbcs_unaligned ? 3'b011 : 3'b100);
-			end
-			CMD_RD: begin
-				sb_nxtstate = RSP_RD;
-				sb_state_en = sb_bus_cmd_read & dbg_bus_clk_en;
-			end
-			CMD_WR: begin
-				sb_nxtstate = (sb_bus_cmd_write_addr & sb_bus_cmd_write_data ? RSP_WR : (sb_bus_cmd_write_data ? CMD_WR_ADDR : CMD_WR_DATA));
-				sb_state_en = (sb_bus_cmd_write_addr | sb_bus_cmd_write_data) & dbg_bus_clk_en;
-			end
-			CMD_WR_ADDR: begin
-				sb_nxtstate = RSP_WR;
-				sb_state_en = sb_bus_cmd_write_addr & dbg_bus_clk_en;
-			end
-			CMD_WR_DATA: begin
-				sb_nxtstate = RSP_WR;
-				sb_state_en = sb_bus_cmd_write_data & dbg_bus_clk_en;
-			end
-			RSP_RD: begin
-				sb_nxtstate = DONE;
-				sb_state_en = sb_bus_rsp_read & dbg_bus_clk_en;
-				sbcs_sberror_wren = sb_state_en & sb_bus_rsp_error;
-				sbcs_sberror_din[2:0] = 3'b010;
-			end
-			RSP_WR: begin
-				sb_nxtstate = DONE;
-				sb_state_en = sb_bus_rsp_write & dbg_bus_clk_en;
-				sbcs_sberror_wren = sb_state_en & sb_bus_rsp_error;
-				sbcs_sberror_din[2:0] = 3'b010;
-			end
-			DONE: begin
-				sb_nxtstate = SBIDLE;
-				sb_state_en = 1'b1;
-				sbcs_sbbusy_wren = 1'b1;
-				sbcs_sbbusy_din = 1'b0;
-				sbaddress0_reg_wren1 = sbcs_reg[16] & (sbcs_reg[14:12] == 3'b000);
-			end
-			default: begin
-				sb_nxtstate = SBIDLE;
-				sb_state_en = 1'b0;
-				sbcs_sbbusy_wren = 1'b0;
-				sbcs_sbbusy_din = 1'b0;
-				sbcs_sberror_wren = 1'b0;
-				sbcs_sberror_din[2:0] = 3'b000;
-				sbaddress0_reg_wren1 = 1'b0;
-			end
-		endcase
-	end
-	rvdffs #(.WIDTH(4)) sb_state_reg(
-		.din(sb_nxtstate),
-		.dout({sb_state}),
-		.en(sb_state_en),
-		.rst_l(dbg_dm_rst_l),
-		.clk(sb_free_clk)
-	);
-	assign sb_abmem_cmd_write = command_reg[16];
-	assign sb_abmem_cmd_size[2:0] = {1'b0, command_reg[21:20]};
-	assign sb_abmem_cmd_addr[31:0] = abmem_addr[31:0];
-	assign sb_abmem_cmd_wdata[31:0] = data0_reg[31:0];
-	assign sb_cmd_size[2:0] = sbcs_reg[19:17];
-	assign sb_cmd_wdata[63:0] = {sbdata1_reg[31:0], sbdata0_reg[31:0]};
-	assign sb_cmd_addr[31:0] = sbaddress0_reg[31:0];
-	assign sb_abmem_cmd_awvalid = ((dbg_state == SB_CMD_SEND) & sb_abmem_cmd_write) & ~sb_abmem_cmd_done;
-	assign sb_abmem_cmd_wvalid = ((dbg_state == SB_CMD_SEND) & sb_abmem_cmd_write) & ~sb_abmem_data_done;
-	assign sb_abmem_cmd_arvalid = (((dbg_state == SB_CMD_SEND) & ~sb_abmem_cmd_write) & ~sb_abmem_cmd_done) & ~sb_abmem_data_done;
-	assign sb_abmem_read_pend = (dbg_state == SB_CMD_RESP) & ~sb_abmem_cmd_write;
-	assign sb_cmd_awvalid = (sb_state == CMD_WR) | (sb_state == CMD_WR_ADDR);
-	assign sb_cmd_wvalid = (sb_state == CMD_WR) | (sb_state == CMD_WR_DATA);
-	assign sb_cmd_arvalid = sb_state == CMD_RD;
-	assign sb_read_pend = sb_state == RSP_RD;
-	assign sb_axi_size[2:0] = (((sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid) | sb_abmem_cmd_arvalid) | sb_abmem_read_pend ? sb_abmem_cmd_size[2:0] : sb_cmd_size[2:0]);
-	assign sb_axi_addr[31:0] = (((sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid) | sb_abmem_cmd_arvalid) | sb_abmem_read_pend ? sb_abmem_cmd_addr[31:0] : sb_cmd_addr[31:0]);
-	assign sb_axi_wrdata[63:0] = (sb_abmem_cmd_awvalid | sb_abmem_cmd_wvalid ? {2 {sb_abmem_cmd_wdata[31:0]}} : sb_cmd_wdata[63:0]);
-	assign sb_bus_cmd_read = sb_axi_arvalid & sb_axi_arready;
-	assign sb_bus_cmd_write_addr = sb_axi_awvalid & sb_axi_awready;
-	assign sb_bus_cmd_write_data = sb_axi_wvalid & sb_axi_wready;
-	assign sb_bus_rsp_read = sb_axi_rvalid & sb_axi_rready;
-	assign sb_bus_rsp_write = sb_axi_bvalid & sb_axi_bready;
-	assign sb_bus_rsp_error = (sb_bus_rsp_read & |sb_axi_rresp[1:0]) | (sb_bus_rsp_write & |sb_axi_bresp[1:0]);
-	assign sb_axi_awvalid = sb_abmem_cmd_awvalid | sb_cmd_awvalid;
-	assign sb_axi_awaddr[31:0] = sb_axi_addr[31:0];
-	assign sb_axi_awid[pt[12-:8] - 1:0] = {pt[12-:8] {1'sb0}};
-	assign sb_axi_awsize[2:0] = sb_axi_size[2:0];
-	assign sb_axi_awprot[2:0] = 3'b001;
-	assign sb_axi_awcache[3:0] = 4'b1111;
-	assign sb_axi_awregion[3:0] = sb_axi_addr[31:28];
-	assign sb_axi_awlen[7:0] = {8 {1'sb0}};
-	assign sb_axi_awburst[1:0] = 2'b01;
-	assign sb_axi_awqos[3:0] = {4 {1'sb0}};
-	assign sb_axi_awlock = 1'b0;
-	assign sb_axi_wvalid = sb_abmem_cmd_wvalid | sb_cmd_wvalid;
-	assign sb_axi_wdata[63:0] = ((({64 {sb_axi_size[2:0] == 3'h0}} & {8 {sb_axi_wrdata[7:0]}}) | ({64 {sb_axi_size[2:0] == 3'h1}} & {4 {sb_axi_wrdata[15:0]}})) | ({64 {sb_axi_size[2:0] == 3'h2}} & {2 {sb_axi_wrdata[31:0]}})) | ({64 {sb_axi_size[2:0] == 3'h3}} & {sb_axi_wrdata[63:0]});
-	assign sb_axi_wstrb[7:0] = ((({8 {sb_axi_size[2:0] == 3'h0}} & (8'h01 << sb_axi_addr[2:0])) | ({8 {sb_axi_size[2:0] == 3'h1}} & (8'h03 << {sb_axi_addr[2:1], 1'b0}))) | ({8 {sb_axi_size[2:0] == 3'h2}} & (8'h0f << {sb_axi_addr[2], 2'b00}))) | ({8 {sb_axi_size[2:0] == 3'h3}} & 8'hff);
-	assign sb_axi_wlast = 1'b1;
-	assign sb_axi_arvalid = sb_abmem_cmd_arvalid | sb_cmd_arvalid;
-	assign sb_axi_araddr[31:0] = sb_axi_addr[31:0];
-	assign sb_axi_arid[pt[12-:8] - 1:0] = {pt[12-:8] {1'sb0}};
-	assign sb_axi_arsize[2:0] = sb_axi_size[2:0];
-	assign sb_axi_arprot[2:0] = 3'b001;
-	assign sb_axi_arcache[3:0] = 4'b0000;
-	assign sb_axi_arregion[3:0] = sb_axi_addr[31:28];
-	assign sb_axi_arlen[7:0] = {8 {1'sb0}};
-	assign sb_axi_arburst[1:0] = 2'b01;
-	assign sb_axi_arqos[3:0] = {4 {1'sb0}};
-	assign sb_axi_arlock = 1'b0;
-	assign sb_axi_bready = 1'b1;
-	assign sb_axi_rready = 1'b1;
-	assign sb_bus_rdata[63:0] = ((({64 {sb_axi_size == 3'h0}} & ((sb_axi_rdata[63:0] >> (8 * sb_axi_addr[2:0])) & 64'h00000000000000ff)) | ({64 {sb_axi_size == 3'h1}} & ((sb_axi_rdata[63:0] >> (16 * sb_axi_addr[2:1])) & 64'h000000000000ffff))) | ({64 {sb_axi_size == 3'h2}} & ((sb_axi_rdata[63:0] >> (32 * sb_axi_addr[2])) & 64'h00000000ffffffff))) | ({64 {sb_axi_size == 3'h3}} & sb_axi_rdata[63:0]);
-endmodule
-module eb1_dec (
-	clk,
-	active_clk,
-	free_clk,
-	free_l2clk,
-	lsu_fastint_stall_any,
-	dec_extint_stall,
-	dec_i0_decode_d,
-	dec_pause_state_cg,
-	dec_tlu_core_empty,
-	rst_l,
-	rst_vec,
-	nmi_int,
-	nmi_vec,
-	i_cpu_halt_req,
-	i_cpu_run_req,
-	o_cpu_halt_status,
-	o_cpu_halt_ack,
-	o_cpu_run_ack,
-	o_debug_mode_status,
-	core_id,
-	mpc_debug_halt_req,
-	mpc_debug_run_req,
-	mpc_reset_run_req,
-	mpc_debug_halt_ack,
-	mpc_debug_run_ack,
-	debug_brkpt_status,
-	exu_pmu_i0_br_misp,
-	exu_pmu_i0_br_ataken,
-	exu_pmu_i0_pc4,
-	lsu_nonblock_load_valid_m,
-	lsu_nonblock_load_tag_m,
-	lsu_nonblock_load_inv_r,
-	lsu_nonblock_load_inv_tag_r,
-	lsu_nonblock_load_data_valid,
-	lsu_nonblock_load_data_error,
-	lsu_nonblock_load_data_tag,
-	lsu_nonblock_load_data,
-	lsu_pmu_bus_trxn,
-	lsu_pmu_bus_misaligned,
-	lsu_pmu_bus_error,
-	lsu_pmu_bus_busy,
-	lsu_pmu_misaligned_m,
-	lsu_pmu_load_external_m,
-	lsu_pmu_store_external_m,
-	dma_pmu_dccm_read,
-	dma_pmu_dccm_write,
-	dma_pmu_any_read,
-	dma_pmu_any_write,
-	lsu_fir_addr,
-	lsu_fir_error,
-	ifu_pmu_instr_aligned,
-	ifu_pmu_fetch_stall,
-	ifu_pmu_ic_miss,
-	ifu_pmu_ic_hit,
-	ifu_pmu_bus_error,
-	ifu_pmu_bus_busy,
-	ifu_pmu_bus_trxn,
-	ifu_ic_error_start,
-	ifu_iccm_rd_ecc_single_err,
-	lsu_trigger_match_m,
-	dbg_cmd_valid,
-	dbg_cmd_write,
-	dbg_cmd_type,
-	dbg_cmd_addr,
-	dbg_cmd_wrdata,
-	ifu_i0_icaf,
-	ifu_i0_icaf_type,
-	ifu_i0_icaf_second,
-	ifu_i0_dbecc,
-	lsu_idle_any,
-	i0_brp,
-	ifu_i0_bp_index,
-	ifu_i0_bp_fghr,
-	ifu_i0_bp_btag,
-	ifu_i0_fa_index,
-	lsu_error_pkt_r,
-	lsu_single_ecc_error_incr,
-	lsu_imprecise_error_load_any,
-	lsu_imprecise_error_store_any,
-	lsu_imprecise_error_addr_any,
-	exu_div_result,
-	exu_div_wren,
-	exu_csr_rs1_x,
-	lsu_result_m,
-	lsu_result_corr_r,
-	lsu_load_stall_any,
-	lsu_store_stall_any,
-	dma_dccm_stall_any,
-	dma_iccm_stall_any,
-	iccm_dma_sb_error,
-	exu_flush_final,
-	exu_npc_r,
-	exu_i0_result_x,
-	ifu_i0_valid,
-	ifu_i0_instr,
-	ifu_i0_pc,
-	ifu_i0_pc4,
-	exu_i0_pc_x,
-	mexintpend,
-	timer_int,
-	soft_int,
-	pic_claimid,
-	pic_pl,
-	mhwakeup,
-	dec_tlu_meicurpl,
-	dec_tlu_meipt,
-	ifu_ic_debug_rd_data,
-	ifu_ic_debug_rd_data_valid,
-	dec_tlu_ic_diag_pkt,
-	dbg_halt_req,
-	dbg_resume_req,
-	ifu_miss_state_idle,
-	dec_tlu_dbg_halted,
-	dec_tlu_debug_mode,
-	dec_tlu_resume_ack,
-	dec_tlu_flush_noredir_r,
-	dec_tlu_mpc_halted_only,
-	dec_tlu_flush_leak_one_r,
-	dec_tlu_flush_err_r,
-	dec_tlu_meihap,
-	dec_debug_wdata_rs1_d,
-	dec_dbg_rddata,
-	dec_dbg_cmd_done,
-	dec_dbg_cmd_fail,
-	trigger_pkt_any,
-	dec_tlu_force_halt,
-	exu_i0_br_hist_r,
-	exu_i0_br_error_r,
-	exu_i0_br_start_error_r,
-	exu_i0_br_valid_r,
-	exu_i0_br_mp_r,
-	exu_i0_br_middle_r,
-	exu_i0_br_way_r,
-	dec_i0_rs1_en_d,
-	dec_i0_rs2_en_d,
-	gpr_i0_rs1_d,
-	gpr_i0_rs2_d,
-	dec_i0_immed_d,
-	dec_i0_br_immed_d,
-	i0_ap,
-	dec_i0_alu_decode_d,
-	dec_i0_branch_d,
-	dec_i0_select_pc_d,
-	dec_i0_pc_d,
-	dec_i0_rs1_bypass_en_d,
-	dec_i0_rs2_bypass_en_d,
-	dec_i0_result_r,
-	lsu_p,
-	dec_qual_lsu_d,
-	mul_p,
-	div_p,
-	dec_div_cancel,
-	dec_lsu_offset_d,
-	dec_csr_ren_d,
-	dec_csr_rddata_d,
-	dec_tlu_flush_lower_r,
-	dec_tlu_flush_lower_wb,
-	dec_tlu_flush_path_r,
-	dec_tlu_i0_kill_writeb_r,
-	dec_tlu_fence_i_r,
-	pred_correct_npc_x,
-	dec_tlu_br0_r_pkt,
-	dec_tlu_perfcnt0,
-	dec_tlu_perfcnt1,
-	dec_tlu_perfcnt2,
-	dec_tlu_perfcnt3,
-	dec_i0_predict_p_d,
-	i0_predict_fghr_d,
-	i0_predict_index_d,
-	i0_predict_btag_d,
-	dec_fa_error_index,
-	dec_lsu_valid_raw_d,
-	dec_tlu_mrac_ff,
-	dec_data_en,
-	dec_ctl_en,
-	ifu_i0_cinst,
-	trace_rv_trace_pkt,
-	dec_tlu_external_ldfwd_disable,
-	dec_tlu_sideeffect_posted_disable,
-	dec_tlu_core_ecc_disable,
-	dec_tlu_bpred_disable,
-	dec_tlu_wb_coalescing_disable,
-	dec_tlu_dma_qos_prty,
-	dec_tlu_misc_clk_override,
-	dec_tlu_ifu_clk_override,
-	dec_tlu_lsu_clk_override,
-	dec_tlu_bus_clk_override,
-	dec_tlu_pic_clk_override,
-	dec_tlu_picio_clk_override,
-	dec_tlu_dccm_clk_override,
-	dec_tlu_icm_clk_override,
-	dec_tlu_i0_commit_cmt,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire active_clk;
-	input wire free_clk;
-	input wire free_l2clk;
-	input wire lsu_fastint_stall_any;
-	output wire dec_extint_stall;
-	output wire dec_i0_decode_d;
-	output wire dec_pause_state_cg;
-	output wire dec_tlu_core_empty;
-	input wire rst_l;
-	input wire [31:1] rst_vec;
-	input wire nmi_int;
-	input wire [31:1] nmi_vec;
-	input wire i_cpu_halt_req;
-	input wire i_cpu_run_req;
-	output wire o_cpu_halt_status;
-	output wire o_cpu_halt_ack;
-	output wire o_cpu_run_ack;
-	output wire o_debug_mode_status;
-	input wire [31:4] core_id;
-	input wire mpc_debug_halt_req;
-	input wire mpc_debug_run_req;
-	input wire mpc_reset_run_req;
-	output wire mpc_debug_halt_ack;
-	output wire mpc_debug_run_ack;
-	output wire debug_brkpt_status;
-	input wire exu_pmu_i0_br_misp;
-	input wire exu_pmu_i0_br_ataken;
-	input wire exu_pmu_i0_pc4;
-	input wire lsu_nonblock_load_valid_m;
-	input wire [pt[164-:7] - 1:0] lsu_nonblock_load_tag_m;
-	input wire lsu_nonblock_load_inv_r;
-	input wire [pt[164-:7] - 1:0] lsu_nonblock_load_inv_tag_r;
-	input wire lsu_nonblock_load_data_valid;
-	input wire lsu_nonblock_load_data_error;
-	input wire [pt[164-:7] - 1:0] lsu_nonblock_load_data_tag;
-	input wire [31:0] lsu_nonblock_load_data;
-	input wire lsu_pmu_bus_trxn;
-	input wire lsu_pmu_bus_misaligned;
-	input wire lsu_pmu_bus_error;
-	input wire lsu_pmu_bus_busy;
-	input wire lsu_pmu_misaligned_m;
-	input wire lsu_pmu_load_external_m;
-	input wire lsu_pmu_store_external_m;
-	input wire dma_pmu_dccm_read;
-	input wire dma_pmu_dccm_write;
-	input wire dma_pmu_any_read;
-	input wire dma_pmu_any_write;
-	input wire [31:1] lsu_fir_addr;
-	input wire [1:0] lsu_fir_error;
-	input wire ifu_pmu_instr_aligned;
-	input wire ifu_pmu_fetch_stall;
-	input wire ifu_pmu_ic_miss;
-	input wire ifu_pmu_ic_hit;
-	input wire ifu_pmu_bus_error;
-	input wire ifu_pmu_bus_busy;
-	input wire ifu_pmu_bus_trxn;
-	input wire ifu_ic_error_start;
-	input wire ifu_iccm_rd_ecc_single_err;
-	input wire [3:0] lsu_trigger_match_m;
-	input wire dbg_cmd_valid;
-	input wire dbg_cmd_write;
-	input wire [1:0] dbg_cmd_type;
-	input wire [31:0] dbg_cmd_addr;
-	input wire [1:0] dbg_cmd_wrdata;
-	input wire ifu_i0_icaf;
-	input wire [1:0] ifu_i0_icaf_type;
-	input wire ifu_i0_icaf_second;
-	input wire ifu_i0_dbecc;
-	input wire lsu_idle_any;
-	input wire [50:0] i0_brp;
-	input wire [pt[2172-:9]:pt[2163-:6]] ifu_i0_bp_index;
-	input wire [pt[2236-:8] - 1:0] ifu_i0_bp_fghr;
-	input wire [pt[2139-:9] - 1:0] ifu_i0_bp_btag;
-	input wire [$clog2(pt[2061-:14]) - 1:0] ifu_i0_fa_index;
-	input wire [39:0] lsu_error_pkt_r;
-	input wire lsu_single_ecc_error_incr;
-	input wire lsu_imprecise_error_load_any;
-	input wire lsu_imprecise_error_store_any;
-	input wire [31:0] lsu_imprecise_error_addr_any;
-	input wire [31:0] exu_div_result;
-	input wire exu_div_wren;
-	input wire [31:0] exu_csr_rs1_x;
-	input wire [31:0] lsu_result_m;
-	input wire [31:0] lsu_result_corr_r;
-	input wire lsu_load_stall_any;
-	input wire lsu_store_stall_any;
-	input wire dma_dccm_stall_any;
-	input wire dma_iccm_stall_any;
-	input wire iccm_dma_sb_error;
-	input wire exu_flush_final;
-	input wire [31:1] exu_npc_r;
-	input wire [31:0] exu_i0_result_x;
-	input wire ifu_i0_valid;
-	input wire [31:0] ifu_i0_instr;
-	input wire [31:1] ifu_i0_pc;
-	input wire ifu_i0_pc4;
-	input wire [31:1] exu_i0_pc_x;
-	input wire mexintpend;
-	input wire timer_int;
-	input wire soft_int;
-	input wire [7:0] pic_claimid;
-	input wire [3:0] pic_pl;
-	input wire mhwakeup;
-	output wire [3:0] dec_tlu_meicurpl;
-	output wire [3:0] dec_tlu_meipt;
-	input wire [70:0] ifu_ic_debug_rd_data;
-	input wire ifu_ic_debug_rd_data_valid;
-	output wire [89:0] dec_tlu_ic_diag_pkt;
-	input wire dbg_halt_req;
-	input wire dbg_resume_req;
-	input wire ifu_miss_state_idle;
-	output wire dec_tlu_dbg_halted;
-	output wire dec_tlu_debug_mode;
-	output wire dec_tlu_resume_ack;
-	output wire dec_tlu_flush_noredir_r;
-	output wire dec_tlu_mpc_halted_only;
-	output wire dec_tlu_flush_leak_one_r;
-	output wire dec_tlu_flush_err_r;
-	output wire [31:2] dec_tlu_meihap;
-	output wire dec_debug_wdata_rs1_d;
-	output wire [31:0] dec_dbg_rddata;
-	output wire dec_dbg_cmd_done;
-	output wire dec_dbg_cmd_fail;
-	output wire [151:0] trigger_pkt_any;
-	output wire dec_tlu_force_halt;
-	input wire [1:0] exu_i0_br_hist_r;
-	input wire exu_i0_br_error_r;
-	input wire exu_i0_br_start_error_r;
-	input wire exu_i0_br_valid_r;
-	input wire exu_i0_br_mp_r;
-	input wire exu_i0_br_middle_r;
-	input wire exu_i0_br_way_r;
-	output wire dec_i0_rs1_en_d;
-	output wire dec_i0_rs2_en_d;
-	output wire [31:0] gpr_i0_rs1_d;
-	output wire [31:0] gpr_i0_rs2_d;
-	output wire [31:0] dec_i0_immed_d;
-	output wire [12:1] dec_i0_br_immed_d;
-	output wire [43:0] i0_ap;
-	output wire dec_i0_alu_decode_d;
-	output wire dec_i0_branch_d;
-	output wire dec_i0_select_pc_d;
-	output wire [31:1] dec_i0_pc_d;
-	output wire [3:0] dec_i0_rs1_bypass_en_d;
-	output wire [3:0] dec_i0_rs2_bypass_en_d;
-	output wire [31:0] dec_i0_result_r;
-	output wire [13:0] lsu_p;
-	output wire dec_qual_lsu_d;
-	output wire [19:0] mul_p;
-	output wire [2:0] div_p;
-	output wire dec_div_cancel;
-	output wire [11:0] dec_lsu_offset_d;
-	output wire dec_csr_ren_d;
-	output wire [31:0] dec_csr_rddata_d;
-	output wire dec_tlu_flush_lower_r;
-	output wire dec_tlu_flush_lower_wb;
-	output wire [31:1] dec_tlu_flush_path_r;
-	output wire dec_tlu_i0_kill_writeb_r;
-	output wire dec_tlu_fence_i_r;
-	output wire [31:1] pred_correct_npc_x;
-	output wire [6:0] dec_tlu_br0_r_pkt;
-	output wire dec_tlu_perfcnt0;
-	output wire dec_tlu_perfcnt1;
-	output wire dec_tlu_perfcnt2;
-	output wire dec_tlu_perfcnt3;
-	output wire [55:0] dec_i0_predict_p_d;
-	output wire [pt[2236-:8] - 1:0] i0_predict_fghr_d;
-	output wire [pt[2172-:9]:pt[2163-:6]] i0_predict_index_d;
-	output wire [pt[2139-:9] - 1:0] i0_predict_btag_d;
-	output wire [$clog2(pt[2061-:14]) - 1:0] dec_fa_error_index;
-	output wire dec_lsu_valid_raw_d;
-	output wire [31:0] dec_tlu_mrac_ff;
-	output wire [1:0] dec_data_en;
-	output wire [1:0] dec_ctl_en;
-	input wire [15:0] ifu_i0_cinst;
-	output wire [103:0] trace_rv_trace_pkt;
-	output wire dec_tlu_external_ldfwd_disable;
-	output wire dec_tlu_sideeffect_posted_disable;
-	output wire dec_tlu_core_ecc_disable;
-	output wire dec_tlu_bpred_disable;
-	output wire dec_tlu_wb_coalescing_disable;
-	output wire [2:0] dec_tlu_dma_qos_prty;
-	output wire dec_tlu_misc_clk_override;
-	output wire dec_tlu_ifu_clk_override;
-	output wire dec_tlu_lsu_clk_override;
-	output wire dec_tlu_bus_clk_override;
-	output wire dec_tlu_pic_clk_override;
-	output wire dec_tlu_picio_clk_override;
-	output wire dec_tlu_dccm_clk_override;
-	output wire dec_tlu_icm_clk_override;
-	output wire dec_tlu_i0_commit_cmt;
-	input wire scan_mode;
-	wire dec_tlu_dec_clk_override;
-	wire clk_override;
-	wire dec_ib0_valid_d;
-	wire dec_pmu_instr_decoded;
-	wire dec_pmu_decode_stall;
-	wire dec_pmu_presync_stall;
-	wire dec_pmu_postsync_stall;
-	wire dec_tlu_wr_pause_r;
-	wire [4:0] dec_i0_rs1_d;
-	wire [4:0] dec_i0_rs2_d;
-	wire [31:0] dec_i0_instr_d;
-	wire dec_tlu_trace_disable;
-	wire dec_tlu_pipelining_disable;
-	wire [4:0] dec_i0_waddr_r;
-	wire dec_i0_wen_r;
-	wire [31:0] dec_i0_wdata_r;
-	wire dec_csr_wen_r;
-	wire [11:0] dec_csr_wraddr_r;
-	wire [31:0] dec_csr_wrdata_r;
-	wire [11:0] dec_csr_rdaddr_d;
-	wire dec_csr_legal_d;
-	wire dec_csr_wen_unq_d;
-	wire dec_csr_any_unq_d;
-	wire dec_csr_stall_int_ff;
-	wire [16:0] dec_tlu_packet_r;
-	wire dec_i0_pc4_d;
-	wire dec_tlu_presync_d;
-	wire dec_tlu_postsync_d;
-	wire dec_tlu_debug_stall;
-	wire [31:0] dec_illegal_inst;
-	wire dec_i0_icaf_d;
-	wire dec_i0_dbecc_d;
-	wire dec_i0_icaf_second_d;
-	wire [3:0] dec_i0_trigger_match_d;
-	wire dec_debug_fence_d;
-	wire dec_nonblock_load_wen;
-	wire [4:0] dec_nonblock_load_waddr;
-	wire dec_tlu_flush_pause_r;
-	wire [50:0] dec_i0_brp;
-	wire [pt[2172-:9]:pt[2163-:6]] dec_i0_bp_index;
-	wire [pt[2236-:8] - 1:0] dec_i0_bp_fghr;
-	wire [pt[2139-:9] - 1:0] dec_i0_bp_btag;
-	wire [$clog2(pt[2061-:14]) - 1:0] dec_i0_bp_fa_index;
-	wire [31:1] dec_tlu_i0_pc_r;
-	wire dec_tlu_i0_kill_writeb_wb;
-	wire dec_tlu_i0_valid_r;
-	wire dec_pause_state;
-	wire [1:0] dec_i0_icaf_type_d;
-	wire dec_tlu_flush_extint;
-	wire [31:0] dec_i0_inst_wb;
-	wire [31:1] dec_i0_pc_wb;
-	wire dec_tlu_i0_valid_wb1;
-	wire dec_tlu_int_valid_wb1;
-	wire [4:0] dec_tlu_exc_cause_wb1;
-	wire [31:0] dec_tlu_mtval_wb1;
-	wire dec_tlu_i0_exc_valid_wb1;
-	wire [4:0] div_waddr_wb;
-	wire dec_div_active;
-	wire dec_debug_valid_d;
-	assign clk_override = dec_tlu_dec_clk_override;
-	assign dec_dbg_rddata[31:0] = dec_i0_wdata_r[31:0];
-	eb1_dec_ib_ctl #(.pt(pt)) instbuff(
-		.dbg_cmd_valid(dbg_cmd_valid),
-		.dbg_cmd_write(dbg_cmd_write),
-		.dbg_cmd_type(dbg_cmd_type),
-		.dbg_cmd_addr(dbg_cmd_addr),
-		.i0_brp(i0_brp),
-		.ifu_i0_bp_index(ifu_i0_bp_index),
-		.ifu_i0_bp_fghr(ifu_i0_bp_fghr),
-		.ifu_i0_bp_btag(ifu_i0_bp_btag),
-		.ifu_i0_fa_index(ifu_i0_fa_index),
-		.ifu_i0_pc4(ifu_i0_pc4),
-		.ifu_i0_valid(ifu_i0_valid),
-		.ifu_i0_icaf(ifu_i0_icaf),
-		.ifu_i0_icaf_type(ifu_i0_icaf_type),
-		.ifu_i0_icaf_second(ifu_i0_icaf_second),
-		.ifu_i0_dbecc(ifu_i0_dbecc),
-		.ifu_i0_instr(ifu_i0_instr),
-		.ifu_i0_pc(ifu_i0_pc),
-		.dec_ib0_valid_d(dec_ib0_valid_d),
-		.dec_debug_valid_d(dec_debug_valid_d),
-		.dec_i0_instr_d(dec_i0_instr_d),
-		.dec_i0_pc_d(dec_i0_pc_d),
-		.dec_i0_pc4_d(dec_i0_pc4_d),
-		.dec_i0_brp(dec_i0_brp),
-		.dec_i0_bp_index(dec_i0_bp_index),
-		.dec_i0_bp_fghr(dec_i0_bp_fghr),
-		.dec_i0_bp_btag(dec_i0_bp_btag),
-		.dec_i0_bp_fa_index(dec_i0_bp_fa_index),
-		.dec_i0_icaf_d(dec_i0_icaf_d),
-		.dec_i0_icaf_second_d(dec_i0_icaf_second_d),
-		.dec_i0_icaf_type_d(dec_i0_icaf_type_d),
-		.dec_i0_dbecc_d(dec_i0_dbecc_d),
-		.dec_debug_wdata_rs1_d(dec_debug_wdata_rs1_d),
-		.dec_debug_fence_d(dec_debug_fence_d)
-	);
-	eb1_dec_decode_ctl #(.pt(pt)) decode(
-		.dec_tlu_trace_disable(dec_tlu_trace_disable),
-		.dec_debug_valid_d(dec_debug_valid_d),
-		.dec_tlu_flush_extint(dec_tlu_flush_extint),
-		.dec_tlu_force_halt(dec_tlu_force_halt),
-		.dec_extint_stall(dec_extint_stall),
-		.ifu_i0_cinst(ifu_i0_cinst),
-		.dec_i0_inst_wb(dec_i0_inst_wb),
-		.dec_i0_pc_wb(dec_i0_pc_wb),
-		.lsu_nonblock_load_valid_m(lsu_nonblock_load_valid_m),
-		.lsu_nonblock_load_tag_m(lsu_nonblock_load_tag_m),
-		.lsu_nonblock_load_inv_r(lsu_nonblock_load_inv_r),
-		.lsu_nonblock_load_inv_tag_r(lsu_nonblock_load_inv_tag_r),
-		.lsu_nonblock_load_data_valid(lsu_nonblock_load_data_valid),
-		.lsu_nonblock_load_data_error(lsu_nonblock_load_data_error),
-		.lsu_nonblock_load_data_tag(lsu_nonblock_load_data_tag),
-		.dec_i0_trigger_match_d(dec_i0_trigger_match_d),
-		.dec_tlu_wr_pause_r(dec_tlu_wr_pause_r),
-		.dec_tlu_pipelining_disable(dec_tlu_pipelining_disable),
-		.lsu_trigger_match_m(lsu_trigger_match_m),
-		.lsu_pmu_misaligned_m(lsu_pmu_misaligned_m),
-		.dec_tlu_debug_stall(dec_tlu_debug_stall),
-		.dec_tlu_flush_leak_one_r(dec_tlu_flush_leak_one_r),
-		.dec_debug_fence_d(dec_debug_fence_d),
-		.dbg_cmd_wrdata(dbg_cmd_wrdata),
-		.dec_i0_icaf_d(dec_i0_icaf_d),
-		.dec_i0_icaf_second_d(dec_i0_icaf_second_d),
-		.dec_i0_icaf_type_d(dec_i0_icaf_type_d),
-		.dec_i0_dbecc_d(dec_i0_dbecc_d),
-		.dec_i0_brp(dec_i0_brp),
-		.dec_i0_bp_index(dec_i0_bp_index),
-		.dec_i0_bp_fghr(dec_i0_bp_fghr),
-		.dec_i0_bp_btag(dec_i0_bp_btag),
-		.dec_i0_bp_fa_index(dec_i0_bp_fa_index),
-		.lsu_idle_any(lsu_idle_any),
-		.lsu_load_stall_any(lsu_load_stall_any),
-		.lsu_store_stall_any(lsu_store_stall_any),
-		.dma_dccm_stall_any(dma_dccm_stall_any),
-		.exu_div_wren(exu_div_wren),
-		.dec_tlu_i0_kill_writeb_wb(dec_tlu_i0_kill_writeb_wb),
-		.dec_tlu_flush_lower_wb(dec_tlu_flush_lower_wb),
-		.dec_tlu_i0_kill_writeb_r(dec_tlu_i0_kill_writeb_r),
-		.dec_tlu_flush_lower_r(dec_tlu_flush_lower_r),
-		.dec_tlu_flush_pause_r(dec_tlu_flush_pause_r),
-		.dec_tlu_presync_d(dec_tlu_presync_d),
-		.dec_tlu_postsync_d(dec_tlu_postsync_d),
-		.dec_i0_pc4_d(dec_i0_pc4_d),
-		.dec_csr_rddata_d(dec_csr_rddata_d),
-		.dec_csr_legal_d(dec_csr_legal_d),
-		.exu_csr_rs1_x(exu_csr_rs1_x),
-		.lsu_result_m(lsu_result_m),
-		.lsu_result_corr_r(lsu_result_corr_r),
-		.exu_flush_final(exu_flush_final),
-		.exu_i0_pc_x(exu_i0_pc_x),
-		.dec_i0_instr_d(dec_i0_instr_d),
-		.dec_ib0_valid_d(dec_ib0_valid_d),
-		.exu_i0_result_x(exu_i0_result_x),
-		.clk(clk),
-		.active_clk(active_clk),
-		.free_l2clk(free_l2clk),
-		.clk_override(clk_override),
-		.rst_l(rst_l),
-		.dec_i0_rs1_en_d(dec_i0_rs1_en_d),
-		.dec_i0_rs2_en_d(dec_i0_rs2_en_d),
-		.dec_i0_rs1_d(dec_i0_rs1_d),
-		.dec_i0_rs2_d(dec_i0_rs2_d),
-		.dec_i0_immed_d(dec_i0_immed_d),
-		.dec_i0_br_immed_d(dec_i0_br_immed_d),
-		.i0_ap(i0_ap),
-		.dec_i0_decode_d(dec_i0_decode_d),
-		.dec_i0_alu_decode_d(dec_i0_alu_decode_d),
-		.dec_i0_branch_d(dec_i0_branch_d),
-		.dec_i0_waddr_r(dec_i0_waddr_r),
-		.dec_i0_wen_r(dec_i0_wen_r),
-		.dec_i0_wdata_r(dec_i0_wdata_r),
-		.dec_i0_select_pc_d(dec_i0_select_pc_d),
-		.dec_i0_rs1_bypass_en_d(dec_i0_rs1_bypass_en_d),
-		.dec_i0_rs2_bypass_en_d(dec_i0_rs2_bypass_en_d),
-		.dec_i0_result_r(dec_i0_result_r),
-		.lsu_p(lsu_p),
-		.dec_qual_lsu_d(dec_qual_lsu_d),
-		.mul_p(mul_p),
-		.div_p(div_p),
-		.div_waddr_wb(div_waddr_wb),
-		.dec_div_cancel(dec_div_cancel),
-		.dec_lsu_valid_raw_d(dec_lsu_valid_raw_d),
-		.dec_lsu_offset_d(dec_lsu_offset_d),
-		.dec_csr_ren_d(dec_csr_ren_d),
-		.dec_csr_wen_unq_d(dec_csr_wen_unq_d),
-		.dec_csr_any_unq_d(dec_csr_any_unq_d),
-		.dec_csr_rdaddr_d(dec_csr_rdaddr_d),
-		.dec_csr_wen_r(dec_csr_wen_r),
-		.dec_csr_wraddr_r(dec_csr_wraddr_r),
-		.dec_csr_wrdata_r(dec_csr_wrdata_r),
-		.dec_csr_stall_int_ff(dec_csr_stall_int_ff),
-		.dec_tlu_i0_valid_r(dec_tlu_i0_valid_r),
-		.dec_tlu_packet_r(dec_tlu_packet_r),
-		.dec_tlu_i0_pc_r(dec_tlu_i0_pc_r),
-		.dec_illegal_inst(dec_illegal_inst),
-		.pred_correct_npc_x(pred_correct_npc_x),
-		.dec_i0_predict_p_d(dec_i0_predict_p_d),
-		.i0_predict_fghr_d(i0_predict_fghr_d),
-		.i0_predict_index_d(i0_predict_index_d),
-		.i0_predict_btag_d(i0_predict_btag_d),
-		.dec_fa_error_index(dec_fa_error_index),
-		.dec_data_en(dec_data_en),
-		.dec_ctl_en(dec_ctl_en),
-		.dec_pmu_instr_decoded(dec_pmu_instr_decoded),
-		.dec_pmu_decode_stall(dec_pmu_decode_stall),
-		.dec_pmu_presync_stall(dec_pmu_presync_stall),
-		.dec_pmu_postsync_stall(dec_pmu_postsync_stall),
-		.dec_nonblock_load_wen(dec_nonblock_load_wen),
-		.dec_nonblock_load_waddr(dec_nonblock_load_waddr),
-		.dec_pause_state(dec_pause_state),
-		.dec_pause_state_cg(dec_pause_state_cg),
-		.dec_div_active(dec_div_active),
-		.scan_mode(scan_mode)
-	);
-	eb1_dec_tlu_ctl #(.pt(pt)) tlu(
-		.clk(clk),
-		.free_clk(free_clk),
-		.free_l2clk(free_l2clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.rst_vec(rst_vec),
-		.nmi_int(nmi_int),
-		.nmi_vec(nmi_vec),
-		.i_cpu_halt_req(i_cpu_halt_req),
-		.i_cpu_run_req(i_cpu_run_req),
-		.lsu_fastint_stall_any(lsu_fastint_stall_any),
-		.ifu_pmu_instr_aligned(ifu_pmu_instr_aligned),
-		.ifu_pmu_fetch_stall(ifu_pmu_fetch_stall),
-		.ifu_pmu_ic_miss(ifu_pmu_ic_miss),
-		.ifu_pmu_ic_hit(ifu_pmu_ic_hit),
-		.ifu_pmu_bus_error(ifu_pmu_bus_error),
-		.ifu_pmu_bus_busy(ifu_pmu_bus_busy),
-		.ifu_pmu_bus_trxn(ifu_pmu_bus_trxn),
-		.dec_pmu_instr_decoded(dec_pmu_instr_decoded),
-		.dec_pmu_decode_stall(dec_pmu_decode_stall),
-		.dec_pmu_presync_stall(dec_pmu_presync_stall),
-		.dec_pmu_postsync_stall(dec_pmu_postsync_stall),
-		.lsu_store_stall_any(lsu_store_stall_any),
-		.dma_dccm_stall_any(dma_dccm_stall_any),
-		.dma_iccm_stall_any(dma_iccm_stall_any),
-		.exu_pmu_i0_br_misp(exu_pmu_i0_br_misp),
-		.exu_pmu_i0_br_ataken(exu_pmu_i0_br_ataken),
-		.exu_pmu_i0_pc4(exu_pmu_i0_pc4),
-		.lsu_pmu_bus_trxn(lsu_pmu_bus_trxn),
-		.lsu_pmu_bus_misaligned(lsu_pmu_bus_misaligned),
-		.lsu_pmu_bus_error(lsu_pmu_bus_error),
-		.lsu_pmu_bus_busy(lsu_pmu_bus_busy),
-		.lsu_pmu_load_external_m(lsu_pmu_load_external_m),
-		.lsu_pmu_store_external_m(lsu_pmu_store_external_m),
-		.dma_pmu_dccm_read(dma_pmu_dccm_read),
-		.dma_pmu_dccm_write(dma_pmu_dccm_write),
-		.dma_pmu_any_read(dma_pmu_any_read),
-		.dma_pmu_any_write(dma_pmu_any_write),
-		.lsu_fir_addr(lsu_fir_addr),
-		.lsu_fir_error(lsu_fir_error),
-		.iccm_dma_sb_error(iccm_dma_sb_error),
-		.lsu_error_pkt_r(lsu_error_pkt_r),
-		.lsu_single_ecc_error_incr(lsu_single_ecc_error_incr),
-		.dec_pause_state(dec_pause_state),
-		.lsu_imprecise_error_store_any(lsu_imprecise_error_store_any),
-		.lsu_imprecise_error_load_any(lsu_imprecise_error_load_any),
-		.lsu_imprecise_error_addr_any(lsu_imprecise_error_addr_any),
-		.dec_csr_wen_unq_d(dec_csr_wen_unq_d),
-		.dec_csr_any_unq_d(dec_csr_any_unq_d),
-		.dec_csr_rdaddr_d(dec_csr_rdaddr_d),
-		.dec_csr_wen_r(dec_csr_wen_r),
-		.dec_csr_wraddr_r(dec_csr_wraddr_r),
-		.dec_csr_wrdata_r(dec_csr_wrdata_r),
-		.dec_csr_stall_int_ff(dec_csr_stall_int_ff),
-		.dec_tlu_i0_valid_r(dec_tlu_i0_valid_r),
-		.exu_npc_r(exu_npc_r),
-		.dec_tlu_i0_pc_r(dec_tlu_i0_pc_r),
-		.dec_tlu_packet_r(dec_tlu_packet_r),
-		.dec_illegal_inst(dec_illegal_inst),
-		.dec_i0_decode_d(dec_i0_decode_d),
-		.exu_i0_br_hist_r(exu_i0_br_hist_r),
-		.exu_i0_br_error_r(exu_i0_br_error_r),
-		.exu_i0_br_start_error_r(exu_i0_br_start_error_r),
-		.exu_i0_br_valid_r(exu_i0_br_valid_r),
-		.exu_i0_br_mp_r(exu_i0_br_mp_r),
-		.exu_i0_br_middle_r(exu_i0_br_middle_r),
-		.exu_i0_br_way_r(exu_i0_br_way_r),
-		.dec_tlu_core_empty(dec_tlu_core_empty),
-		.dec_dbg_cmd_done(dec_dbg_cmd_done),
-		.dec_dbg_cmd_fail(dec_dbg_cmd_fail),
-		.dec_tlu_dbg_halted(dec_tlu_dbg_halted),
-		.dec_tlu_debug_mode(dec_tlu_debug_mode),
-		.dec_tlu_resume_ack(dec_tlu_resume_ack),
-		.dec_tlu_debug_stall(dec_tlu_debug_stall),
-		.dec_tlu_flush_noredir_r(dec_tlu_flush_noredir_r),
-		.dec_tlu_mpc_halted_only(dec_tlu_mpc_halted_only),
-		.dec_tlu_flush_leak_one_r(dec_tlu_flush_leak_one_r),
-		.dec_tlu_flush_err_r(dec_tlu_flush_err_r),
-		.dec_tlu_flush_extint(dec_tlu_flush_extint),
-		.dec_tlu_meihap(dec_tlu_meihap),
-		.dbg_halt_req(dbg_halt_req),
-		.dbg_resume_req(dbg_resume_req),
-		.ifu_miss_state_idle(ifu_miss_state_idle),
-		.lsu_idle_any(lsu_idle_any),
-		.dec_div_active(dec_div_active),
-		.trigger_pkt_any(trigger_pkt_any),
-		.ifu_ic_error_start(ifu_ic_error_start),
-		.ifu_iccm_rd_ecc_single_err(ifu_iccm_rd_ecc_single_err),
-		.ifu_ic_debug_rd_data(ifu_ic_debug_rd_data),
-		.ifu_ic_debug_rd_data_valid(ifu_ic_debug_rd_data_valid),
-		.dec_tlu_ic_diag_pkt(dec_tlu_ic_diag_pkt),
-		.pic_claimid(pic_claimid),
-		.pic_pl(pic_pl),
-		.mhwakeup(mhwakeup),
-		.mexintpend(mexintpend),
-		.timer_int(timer_int),
-		.soft_int(soft_int),
-		.o_cpu_halt_status(o_cpu_halt_status),
-		.o_cpu_halt_ack(o_cpu_halt_ack),
-		.o_cpu_run_ack(o_cpu_run_ack),
-		.o_debug_mode_status(o_debug_mode_status),
-		.core_id(core_id),
-		.mpc_debug_halt_req(mpc_debug_halt_req),
-		.mpc_debug_run_req(mpc_debug_run_req),
-		.mpc_reset_run_req(mpc_reset_run_req),
-		.mpc_debug_halt_ack(mpc_debug_halt_ack),
-		.mpc_debug_run_ack(mpc_debug_run_ack),
-		.debug_brkpt_status(debug_brkpt_status),
-		.dec_tlu_meicurpl(dec_tlu_meicurpl),
-		.dec_tlu_meipt(dec_tlu_meipt),
-		.dec_csr_rddata_d(dec_csr_rddata_d),
-		.dec_csr_legal_d(dec_csr_legal_d),
-		.dec_tlu_br0_r_pkt(dec_tlu_br0_r_pkt),
-		.dec_tlu_i0_kill_writeb_wb(dec_tlu_i0_kill_writeb_wb),
-		.dec_tlu_flush_lower_wb(dec_tlu_flush_lower_wb),
-		.dec_tlu_i0_commit_cmt(dec_tlu_i0_commit_cmt),
-		.dec_tlu_i0_kill_writeb_r(dec_tlu_i0_kill_writeb_r),
-		.dec_tlu_flush_lower_r(dec_tlu_flush_lower_r),
-		.dec_tlu_flush_path_r(dec_tlu_flush_path_r),
-		.dec_tlu_fence_i_r(dec_tlu_fence_i_r),
-		.dec_tlu_wr_pause_r(dec_tlu_wr_pause_r),
-		.dec_tlu_flush_pause_r(dec_tlu_flush_pause_r),
-		.dec_tlu_presync_d(dec_tlu_presync_d),
-		.dec_tlu_postsync_d(dec_tlu_postsync_d),
-		.dec_tlu_mrac_ff(dec_tlu_mrac_ff),
-		.dec_tlu_force_halt(dec_tlu_force_halt),
-		.dec_tlu_perfcnt0(dec_tlu_perfcnt0),
-		.dec_tlu_perfcnt1(dec_tlu_perfcnt1),
-		.dec_tlu_perfcnt2(dec_tlu_perfcnt2),
-		.dec_tlu_perfcnt3(dec_tlu_perfcnt3),
-		.dec_tlu_i0_exc_valid_wb1(dec_tlu_i0_exc_valid_wb1),
-		.dec_tlu_i0_valid_wb1(dec_tlu_i0_valid_wb1),
-		.dec_tlu_int_valid_wb1(dec_tlu_int_valid_wb1),
-		.dec_tlu_exc_cause_wb1(dec_tlu_exc_cause_wb1),
-		.dec_tlu_mtval_wb1(dec_tlu_mtval_wb1),
-		.dec_tlu_external_ldfwd_disable(dec_tlu_external_ldfwd_disable),
-		.dec_tlu_sideeffect_posted_disable(dec_tlu_sideeffect_posted_disable),
-		.dec_tlu_core_ecc_disable(dec_tlu_core_ecc_disable),
-		.dec_tlu_bpred_disable(dec_tlu_bpred_disable),
-		.dec_tlu_wb_coalescing_disable(dec_tlu_wb_coalescing_disable),
-		.dec_tlu_pipelining_disable(dec_tlu_pipelining_disable),
-		.dec_tlu_trace_disable(dec_tlu_trace_disable),
-		.dec_tlu_dma_qos_prty(dec_tlu_dma_qos_prty),
-		.dec_tlu_misc_clk_override(dec_tlu_misc_clk_override),
-		.dec_tlu_dec_clk_override(dec_tlu_dec_clk_override),
-		.dec_tlu_ifu_clk_override(dec_tlu_ifu_clk_override),
-		.dec_tlu_lsu_clk_override(dec_tlu_lsu_clk_override),
-		.dec_tlu_bus_clk_override(dec_tlu_bus_clk_override),
-		.dec_tlu_pic_clk_override(dec_tlu_pic_clk_override),
-		.dec_tlu_picio_clk_override(dec_tlu_picio_clk_override),
-		.dec_tlu_dccm_clk_override(dec_tlu_dccm_clk_override),
-		.dec_tlu_icm_clk_override(dec_tlu_icm_clk_override)
-	);
-	eb1_dec_gpr_ctl #(.pt(pt)) arf(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.raddr0(dec_i0_rs1_d[4:0]),
-		.raddr1(dec_i0_rs2_d[4:0]),
-		.wen0(dec_i0_wen_r),
-		.waddr0(dec_i0_waddr_r[4:0]),
-		.wd0(dec_i0_wdata_r[31:0]),
-		.wen1(dec_nonblock_load_wen),
-		.waddr1(dec_nonblock_load_waddr[4:0]),
-		.wd1(lsu_nonblock_load_data[31:0]),
-		.wen2(exu_div_wren),
-		.waddr2(div_waddr_wb),
-		.wd2(exu_div_result[31:0]),
-		.rd0(gpr_i0_rs1_d[31:0]),
-		.rd1(gpr_i0_rs2_d[31:0])
-	);
-	eb1_dec_trigger #(.pt(pt)) dec_trigger(
-		.trigger_pkt_any(trigger_pkt_any),
-		.dec_i0_pc_d(dec_i0_pc_d),
-		.dec_i0_trigger_match_d(dec_i0_trigger_match_d)
-	);
-	assign trace_rv_trace_pkt[102-:32] = dec_i0_inst_wb[31:0];
-	assign trace_rv_trace_pkt[70-:32] = {dec_i0_pc_wb[31:1], 1'b0};
-	assign trace_rv_trace_pkt[103] = (dec_tlu_int_valid_wb1 | dec_tlu_i0_valid_wb1) | dec_tlu_i0_exc_valid_wb1;
-	assign trace_rv_trace_pkt[38] = dec_tlu_int_valid_wb1 | dec_tlu_i0_exc_valid_wb1;
-	assign trace_rv_trace_pkt[37-:5] = dec_tlu_exc_cause_wb1[4:0];
-	assign trace_rv_trace_pkt[32] = dec_tlu_int_valid_wb1;
-	assign trace_rv_trace_pkt[31-:32] = dec_tlu_mtval_wb1[31:0];
-endmodule
-module eb1_dec_decode_ctl (
-	dec_tlu_trace_disable,
-	dec_debug_valid_d,
-	dec_tlu_flush_extint,
-	dec_tlu_force_halt,
-	dec_extint_stall,
-	ifu_i0_cinst,
-	dec_i0_inst_wb,
-	dec_i0_pc_wb,
-	lsu_nonblock_load_valid_m,
-	lsu_nonblock_load_tag_m,
-	lsu_nonblock_load_inv_r,
-	lsu_nonblock_load_inv_tag_r,
-	lsu_nonblock_load_data_valid,
-	lsu_nonblock_load_data_error,
-	lsu_nonblock_load_data_tag,
-	dec_i0_trigger_match_d,
-	dec_tlu_wr_pause_r,
-	dec_tlu_pipelining_disable,
-	lsu_trigger_match_m,
-	lsu_pmu_misaligned_m,
-	dec_tlu_debug_stall,
-	dec_tlu_flush_leak_one_r,
-	dec_debug_fence_d,
-	dbg_cmd_wrdata,
-	dec_i0_icaf_d,
-	dec_i0_icaf_second_d,
-	dec_i0_icaf_type_d,
-	dec_i0_dbecc_d,
-	dec_i0_brp,
-	dec_i0_bp_index,
-	dec_i0_bp_fghr,
-	dec_i0_bp_btag,
-	dec_i0_bp_fa_index,
-	lsu_idle_any,
-	lsu_load_stall_any,
-	lsu_store_stall_any,
-	dma_dccm_stall_any,
-	exu_div_wren,
-	dec_tlu_i0_kill_writeb_wb,
-	dec_tlu_flush_lower_wb,
-	dec_tlu_i0_kill_writeb_r,
-	dec_tlu_flush_lower_r,
-	dec_tlu_flush_pause_r,
-	dec_tlu_presync_d,
-	dec_tlu_postsync_d,
-	dec_i0_pc4_d,
-	dec_csr_rddata_d,
-	dec_csr_legal_d,
-	exu_csr_rs1_x,
-	lsu_result_m,
-	lsu_result_corr_r,
-	exu_flush_final,
-	exu_i0_pc_x,
-	dec_i0_instr_d,
-	dec_ib0_valid_d,
-	exu_i0_result_x,
-	clk,
-	active_clk,
-	free_l2clk,
-	clk_override,
-	rst_l,
-	dec_i0_rs1_en_d,
-	dec_i0_rs2_en_d,
-	dec_i0_rs1_d,
-	dec_i0_rs2_d,
-	dec_i0_immed_d,
-	dec_i0_br_immed_d,
-	i0_ap,
-	dec_i0_decode_d,
-	dec_i0_alu_decode_d,
-	dec_i0_branch_d,
-	dec_i0_waddr_r,
-	dec_i0_wen_r,
-	dec_i0_wdata_r,
-	dec_i0_select_pc_d,
-	dec_i0_rs1_bypass_en_d,
-	dec_i0_rs2_bypass_en_d,
-	dec_i0_result_r,
-	lsu_p,
-	dec_qual_lsu_d,
-	mul_p,
-	div_p,
-	div_waddr_wb,
-	dec_div_cancel,
-	dec_lsu_valid_raw_d,
-	dec_lsu_offset_d,
-	dec_csr_ren_d,
-	dec_csr_wen_unq_d,
-	dec_csr_any_unq_d,
-	dec_csr_rdaddr_d,
-	dec_csr_wen_r,
-	dec_csr_wraddr_r,
-	dec_csr_wrdata_r,
-	dec_csr_stall_int_ff,
-	dec_tlu_i0_valid_r,
-	dec_tlu_packet_r,
-	dec_tlu_i0_pc_r,
-	dec_illegal_inst,
-	pred_correct_npc_x,
-	dec_i0_predict_p_d,
-	i0_predict_fghr_d,
-	i0_predict_index_d,
-	i0_predict_btag_d,
-	dec_fa_error_index,
-	dec_data_en,
-	dec_ctl_en,
-	dec_pmu_instr_decoded,
-	dec_pmu_decode_stall,
-	dec_pmu_presync_stall,
-	dec_pmu_postsync_stall,
-	dec_nonblock_load_wen,
-	dec_nonblock_load_waddr,
-	dec_pause_state,
-	dec_pause_state_cg,
-	dec_div_active,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire dec_tlu_trace_disable;
-	input wire dec_debug_valid_d;
-	input wire dec_tlu_flush_extint;
-	input wire dec_tlu_force_halt;
-	output wire dec_extint_stall;
-	input wire [15:0] ifu_i0_cinst;
-	output wire [31:0] dec_i0_inst_wb;
-	output wire [31:1] dec_i0_pc_wb;
-	input wire lsu_nonblock_load_valid_m;
-	input wire [pt[164-:7] - 1:0] lsu_nonblock_load_tag_m;
-	input wire lsu_nonblock_load_inv_r;
-	input wire [pt[164-:7] - 1:0] lsu_nonblock_load_inv_tag_r;
-	input wire lsu_nonblock_load_data_valid;
-	input wire lsu_nonblock_load_data_error;
-	input wire [pt[164-:7] - 1:0] lsu_nonblock_load_data_tag;
-	input wire [3:0] dec_i0_trigger_match_d;
-	input wire dec_tlu_wr_pause_r;
-	input wire dec_tlu_pipelining_disable;
-	input wire [3:0] lsu_trigger_match_m;
-	input wire lsu_pmu_misaligned_m;
-	input wire dec_tlu_debug_stall;
-	input wire dec_tlu_flush_leak_one_r;
-	input wire dec_debug_fence_d;
-	input wire [1:0] dbg_cmd_wrdata;
-	input wire dec_i0_icaf_d;
-	input wire dec_i0_icaf_second_d;
-	input wire [1:0] dec_i0_icaf_type_d;
-	input wire dec_i0_dbecc_d;
-	input wire [50:0] dec_i0_brp;
-	input wire [pt[2172-:9]:pt[2163-:6]] dec_i0_bp_index;
-	input wire [pt[2236-:8] - 1:0] dec_i0_bp_fghr;
-	input wire [pt[2139-:9] - 1:0] dec_i0_bp_btag;
-	input wire [$clog2(pt[2061-:14]) - 1:0] dec_i0_bp_fa_index;
-	input wire lsu_idle_any;
-	input wire lsu_load_stall_any;
-	input wire lsu_store_stall_any;
-	input wire dma_dccm_stall_any;
-	input wire exu_div_wren;
-	input wire dec_tlu_i0_kill_writeb_wb;
-	input wire dec_tlu_flush_lower_wb;
-	input wire dec_tlu_i0_kill_writeb_r;
-	input wire dec_tlu_flush_lower_r;
-	input wire dec_tlu_flush_pause_r;
-	input wire dec_tlu_presync_d;
-	input wire dec_tlu_postsync_d;
-	input wire dec_i0_pc4_d;
-	input wire [31:0] dec_csr_rddata_d;
-	input wire dec_csr_legal_d;
-	input wire [31:0] exu_csr_rs1_x;
-	input wire [31:0] lsu_result_m;
-	input wire [31:0] lsu_result_corr_r;
-	input wire exu_flush_final;
-	input wire [31:1] exu_i0_pc_x;
-	input wire [31:0] dec_i0_instr_d;
-	input wire dec_ib0_valid_d;
-	input wire [31:0] exu_i0_result_x;
-	input wire clk;
-	input wire active_clk;
-	input wire free_l2clk;
-	input wire clk_override;
-	input wire rst_l;
-	output wire dec_i0_rs1_en_d;
-	output wire dec_i0_rs2_en_d;
-	output wire [4:0] dec_i0_rs1_d;
-	output wire [4:0] dec_i0_rs2_d;
-	output wire [31:0] dec_i0_immed_d;
-	output wire [12:1] dec_i0_br_immed_d;
-	output wire [43:0] i0_ap;
-	output wire dec_i0_decode_d;
-	output wire dec_i0_alu_decode_d;
-	output wire dec_i0_branch_d;
-	output wire [4:0] dec_i0_waddr_r;
-	output wire dec_i0_wen_r;
-	output wire [31:0] dec_i0_wdata_r;
-	output wire dec_i0_select_pc_d;
-	output wire [3:0] dec_i0_rs1_bypass_en_d;
-	output wire [3:0] dec_i0_rs2_bypass_en_d;
-	output wire [31:0] dec_i0_result_r;
-	output reg [13:0] lsu_p;
-	output wire dec_qual_lsu_d;
-	output wire [19:0] mul_p;
-	output wire [2:0] div_p;
-	output wire [4:0] div_waddr_wb;
-	output wire dec_div_cancel;
-	output wire dec_lsu_valid_raw_d;
-	output wire [11:0] dec_lsu_offset_d;
-	output wire dec_csr_ren_d;
-	output wire dec_csr_wen_unq_d;
-	output wire dec_csr_any_unq_d;
-	output wire [11:0] dec_csr_rdaddr_d;
-	output wire dec_csr_wen_r;
-	output wire [11:0] dec_csr_wraddr_r;
-	output wire [31:0] dec_csr_wrdata_r;
-	output wire dec_csr_stall_int_ff;
-	output dec_tlu_i0_valid_r;
-	output reg [16:0] dec_tlu_packet_r;
-	output wire [31:1] dec_tlu_i0_pc_r;
-	output wire [31:0] dec_illegal_inst;
-	output wire [31:1] pred_correct_npc_x;
-	output reg [55:0] dec_i0_predict_p_d;
-	output wire [pt[2236-:8] - 1:0] i0_predict_fghr_d;
-	output wire [pt[2172-:9]:pt[2163-:6]] i0_predict_index_d;
-	output wire [pt[2139-:9] - 1:0] i0_predict_btag_d;
-	output wire [$clog2(pt[2061-:14]) - 1:0] dec_fa_error_index;
-	output wire [1:0] dec_data_en;
-	output wire [1:0] dec_ctl_en;
-	output wire dec_pmu_instr_decoded;
-	output wire dec_pmu_decode_stall;
-	output wire dec_pmu_presync_stall;
-	output wire dec_pmu_postsync_stall;
-	output wire dec_nonblock_load_wen;
-	output reg [4:0] dec_nonblock_load_waddr;
-	output wire dec_pause_state;
-	output wire dec_pause_state_cg;
-	output wire dec_div_active;
-	input wire scan_mode;
-	wire [94:0] i0_dp_raw;
-	reg [94:0] i0_dp;
-	wire [31:0] i0;
-	wire i0_valid_d;
-	wire [31:0] i0_result_r;
-	wire [2:0] i0_rs1bypass;
-	wire [2:0] i0_rs2bypass;
-	wire i0_jalimm20;
-	wire i0_uiimm20;
-	wire lsu_decode_d;
-	wire [31:0] i0_immed_d;
-	wire i0_presync;
-	wire i0_postsync;
-	wire postsync_stall;
-	wire ps_stall;
-	wire prior_inflight;
-	wire prior_inflight_wb;
-	wire csr_clr_d;
-	wire csr_set_d;
-	wire csr_write_d;
-	wire csr_clr_x;
-	wire csr_set_x;
-	wire csr_write_x;
-	wire csr_imm_x;
-	wire [31:0] csr_mask_x;
-	wire [31:0] write_csr_data_x;
-	wire [31:0] write_csr_data_in;
-	wire [31:0] write_csr_data;
-	wire csr_data_wen;
-	wire [4:0] csrimm_x;
-	wire [31:0] csr_rddata_x;
-	wire mul_decode_d;
-	wire div_decode_d;
-	wire div_e1_to_r;
-	wire div_flush;
-	wire div_active_in;
-	wire div_active;
-	wire i0_nonblock_div_stall;
-	wire i0_div_prior_div_stall;
-	wire nonblock_div_cancel;
-	wire i0_legal;
-	wire shift_illegal;
-	wire illegal_inst_en;
-	wire illegal_lockout_in;
-	wire illegal_lockout;
-	wire i0_legal_decode_d;
-	wire i0_exulegal_decode_d;
-	wire i0_exudecode_d;
-	wire i0_exublock_d;
-	wire [12:1] last_br_immed_d;
-	wire i0_rs1_depend_i0_x;
-	wire i0_rs1_depend_i0_r;
-	wire i0_rs2_depend_i0_x;
-	wire i0_rs2_depend_i0_r;
-	wire i0_div_decode_d;
-	wire i0_load_block_d;
-	wire [1:0] i0_rs1_depth_d;
-	wire [1:0] i0_rs2_depth_d;
-	wire i0_load_stall_d;
-	wire i0_store_stall_d;
-	wire i0_predict_nt;
-	wire i0_predict_t;
-	wire i0_notbr_error;
-	wire i0_br_toffset_error;
-	wire i0_ret_error;
-	wire i0_br_error;
-	wire i0_br_error_all;
-	wire [11:0] i0_br_offset;
-	wire [20:1] i0_pcall_imm;
-	wire i0_pcall_12b_offset;
-	wire i0_pcall_raw;
-	wire i0_pcall_case;
-	wire i0_pcall;
-	wire i0_pja_raw;
-	wire i0_pja_case;
-	wire i0_pja;
-	wire i0_pret_case;
-	wire i0_pret_raw;
-	wire i0_pret;
-	wire i0_jal;
-	wire i0_predict_br;
-	wire store_data_bypass_d;
-	wire store_data_bypass_m;
-	wire [2:0] i0_rs1_class_d;
-	wire [2:0] i0_rs2_class_d;
-	wire [2:0] i0_d_c;
-	wire [2:0] i0_x_c;
-	wire [2:0] i0_r_c;
-	wire i0_ap_pc2;
-	wire i0_ap_pc4;
-	wire i0_rd_en_d;
-	wire load_ldst_bypass_d;
-	wire leak1_i0_stall_in;
-	wire leak1_i0_stall;
-	wire leak1_i1_stall_in;
-	wire leak1_i1_stall;
-	wire leak1_mode;
-	wire i0_csr_write_only_d;
-	wire prior_inflight_x;
-	wire prior_inflight_eff;
-	wire any_csr_d;
-	wire prior_csr_write;
-	wire [3:0] i0_pipe_en;
-	wire i0_r_ctl_en;
-	wire i0_x_ctl_en;
-	wire i0_wb_ctl_en;
-	wire i0_x_data_en;
-	wire i0_r_data_en;
-	wire i0_wb_data_en;
-	wire debug_fence_i;
-	wire debug_fence;
-	wire i0_csr_write;
-	wire presync_stall;
-	wire i0_instr_error;
-	wire i0_icaf_d;
-	wire clear_pause;
-	wire pause_state_in;
-	wire pause_state;
-	wire pause_stall;
-	wire i0_brp_valid;
-	wire nonblock_load_cancel;
-	wire lsu_idle;
-	wire lsu_pmu_misaligned_r;
-	wire csr_ren_qual_d;
-	wire csr_read_x;
-	wire i0_block_d;
-	wire i0_block_raw_d;
-	wire ps_stall_in;
-	wire [31:0] i0_result_x;
-	wire [23:0] d_d;
-	wire [23:0] x_d;
-	wire [23:0] r_d;
-	wire [23:0] wbd;
-	reg [23:0] x_d_in;
-	reg [23:0] r_d_in;
-	wire [16:0] d_t;
-	wire [16:0] x_t;
-	reg [16:0] x_t_in;
-	reg [16:0] r_t_in;
-	wire [16:0] r_t;
-	wire [3:0] lsu_trigger_match_r;
-	wire [31:1] dec_i0_pc_r;
-	wire csr_read;
-	wire csr_write;
-	wire i0_br_unpred;
-	wire nonblock_load_valid_m_delay;
-	wire i0_wen_r;
-	wire tlu_wr_pause_r1;
-	wire tlu_wr_pause_r2;
-	wire flush_final_r;
-	wire bitmanip_zbb_legal;
-	wire bitmanip_zbs_legal;
-	wire bitmanip_zbe_legal;
-	wire bitmanip_zbc_legal;
-	wire bitmanip_zbp_legal;
-	wire bitmanip_zbr_legal;
-	wire bitmanip_zbf_legal;
-	wire bitmanip_zba_legal;
-	wire bitmanip_zbb_zbp_legal;
-	wire bitmanip_legal;
-	wire data_gate_en;
-	wire data_gate_clk;
-	localparam NBLOAD_SIZE = pt[173-:9];
-	function automatic signed [31:0] sv2v_cast_32_signed;
-		input reg signed [31:0] inp;
-		sv2v_cast_32_signed = inp;
-	endfunction
-	localparam NBLOAD_SIZE_MSB = sv2v_cast_32_signed(pt[173-:9]) - 1;
-	localparam NBLOAD_TAG_MSB = pt[164-:7] - 1;
-	wire cam_write;
-	wire cam_inv_reset;
-	wire cam_data_reset;
-	wire [NBLOAD_TAG_MSB:0] cam_write_tag;
-	wire [NBLOAD_TAG_MSB:0] cam_inv_reset_tag;
-	wire [NBLOAD_TAG_MSB:0] cam_data_reset_tag;
-	reg [NBLOAD_SIZE_MSB:0] cam_wen;
-	wire [NBLOAD_TAG_MSB:0] load_data_tag;
-	wire [NBLOAD_SIZE_MSB:0] nonblock_load_write;
-	reg [(NBLOAD_SIZE_MSB >= 0 ? ((NBLOAD_SIZE_MSB + 1) * 10) - 1 : ((1 - NBLOAD_SIZE_MSB) * 10) + ((NBLOAD_SIZE_MSB * 10) - 1)):(NBLOAD_SIZE_MSB >= 0 ? 0 : NBLOAD_SIZE_MSB * 10)] cam;
-	reg [(NBLOAD_SIZE_MSB >= 0 ? ((NBLOAD_SIZE_MSB + 1) * 10) - 1 : ((1 - NBLOAD_SIZE_MSB) * 10) + ((NBLOAD_SIZE_MSB * 10) - 1)):(NBLOAD_SIZE_MSB >= 0 ? 0 : NBLOAD_SIZE_MSB * 10)] cam_in;
-	wire [(NBLOAD_SIZE_MSB >= 0 ? ((NBLOAD_SIZE_MSB + 1) * 10) - 1 : ((1 - NBLOAD_SIZE_MSB) * 10) + ((NBLOAD_SIZE_MSB * 10) - 1)):(NBLOAD_SIZE_MSB >= 0 ? 0 : NBLOAD_SIZE_MSB * 10)] cam_raw;
-	wire [4:0] nonblock_load_rd;
-	reg i0_nonblock_load_stall;
-	wire i0_nonblock_boundary_stall;
-	wire i0_rs1_nonblock_load_bypass_en_d;
-	wire i0_rs2_nonblock_load_bypass_en_d;
-	wire i0_load_kill_wen_r;
-	reg found;
-	wire [NBLOAD_SIZE_MSB:0] cam_inv_reset_val;
-	wire [NBLOAD_SIZE_MSB:0] cam_data_reset_val;
-	wire debug_fence_raw;
-	wire [31:0] i0_result_r_raw;
-	wire [31:0] i0_result_corr_r;
-	wire [12:1] last_br_immed_x;
-	wire [31:0] i0_inst_d;
-	wire [31:0] i0_inst_x;
-	wire [31:0] i0_inst_r;
-	wire [31:0] i0_inst_wb_in;
-	wire [31:0] i0_inst_wb;
-	wire [31:1] i0_pc_wb;
-	wire i0_wb_en;
-	wire trace_enable;
-	wire debug_valid_x;
-	reg [3:0] i0_itype;
-	wire [14:0] i0r;
-	rvdffie #(.WIDTH(8)) misc1ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.din({leak1_i1_stall_in, leak1_i0_stall_in, dec_tlu_flush_extint, pause_state_in, dec_tlu_wr_pause_r, tlu_wr_pause_r1, illegal_lockout_in, ps_stall_in}),
-		.dout({leak1_i1_stall, leak1_i0_stall, dec_extint_stall, pause_state, tlu_wr_pause_r1, tlu_wr_pause_r2, illegal_lockout, ps_stall})
-	);
-	rvdffie #(.WIDTH(8)) misc2ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.din({lsu_trigger_match_m[3:0], lsu_pmu_misaligned_m, div_active_in, exu_flush_final, dec_debug_valid_d}),
-		.dout({lsu_trigger_match_r[3:0], lsu_pmu_misaligned_r, div_active, flush_final_r, debug_valid_x})
-	);
-	generate
-		if (pt[2130-:5] == 1) begin
-			assign i0_brp_valid = (dec_i0_brp[50] & ~leak1_mode) & ~i0_icaf_d;
-			wire [1:1] sv2v_tmp_123E1;
-			assign sv2v_tmp_123E1 = 1'b0;
-			always @(*) dec_i0_predict_p_d[55] = sv2v_tmp_123E1;
-			wire [1:1] sv2v_tmp_D766F;
-			assign sv2v_tmp_D766F = 1'b0;
-			always @(*) dec_i0_predict_p_d[54] = sv2v_tmp_D766F;
-			wire [1:1] sv2v_tmp_EE665;
-			assign sv2v_tmp_EE665 = 1'b0;
-			always @(*) dec_i0_predict_p_d[53] = sv2v_tmp_EE665;
-			wire [1:1] sv2v_tmp_4A5D3;
-			assign sv2v_tmp_4A5D3 = i0_pcall;
-			always @(*) dec_i0_predict_p_d[34] = sv2v_tmp_4A5D3;
-			wire [1:1] sv2v_tmp_C4472;
-			assign sv2v_tmp_C4472 = i0_pja;
-			always @(*) dec_i0_predict_p_d[33] = sv2v_tmp_C4472;
-			wire [1:1] sv2v_tmp_BC36C;
-			assign sv2v_tmp_BC36C = i0_pret;
-			always @(*) dec_i0_predict_p_d[31] = sv2v_tmp_BC36C;
-			wire [31:1] sv2v_tmp_16255;
-			assign sv2v_tmp_16255 = dec_i0_brp[32:2];
-			always @(*) dec_i0_predict_p_d[30:0] = sv2v_tmp_16255;
-			wire [1:1] sv2v_tmp_CF546;
-			assign sv2v_tmp_CF546 = dec_i0_pc4_d;
-			always @(*) dec_i0_predict_p_d[52] = sv2v_tmp_CF546;
-			wire [2:1] sv2v_tmp_1B1F0;
-			assign sv2v_tmp_1B1F0 = dec_i0_brp[37:36];
-			always @(*) dec_i0_predict_p_d[51:50] = sv2v_tmp_1B1F0;
-			wire [1:1] sv2v_tmp_3FDDA;
-			assign sv2v_tmp_3FDDA = i0_brp_valid & i0_legal_decode_d;
-			always @(*) dec_i0_predict_p_d[37] = sv2v_tmp_3FDDA;
-			assign i0_notbr_error = i0_brp_valid & ~(((i0_dp_raw[28] | i0_pcall_raw) | i0_pja_raw) | i0_pret_raw);
-			assign i0_br_toffset_error = ((i0_brp_valid & dec_i0_brp[37]) & (dec_i0_brp[49:38] != i0_br_offset[11:0])) & ~i0_pret_raw;
-			assign i0_ret_error = i0_brp_valid & (dec_i0_brp[0] ^ i0_pret_raw);
-			assign i0_br_error = ((dec_i0_brp[35] | i0_notbr_error) | i0_br_toffset_error) | i0_ret_error;
-			wire [1:1] sv2v_tmp_75A7E;
-			assign sv2v_tmp_75A7E = (i0_br_error & i0_legal_decode_d) & ~leak1_mode;
-			always @(*) dec_i0_predict_p_d[36] = sv2v_tmp_75A7E;
-			wire [1:1] sv2v_tmp_6E7A2;
-			assign sv2v_tmp_6E7A2 = (dec_i0_brp[34] & i0_legal_decode_d) & ~leak1_mode;
-			always @(*) dec_i0_predict_p_d[35] = sv2v_tmp_6E7A2;
-			assign i0_predict_index_d[pt[2172-:9]:pt[2163-:6]] = dec_i0_bp_index;
-			assign i0_predict_btag_d[pt[2139-:9] - 1:0] = dec_i0_bp_btag[pt[2139-:9] - 1:0];
-			assign i0_br_error_all = (i0_br_error | dec_i0_brp[34]) & ~leak1_mode;
-			wire [12:1] sv2v_tmp_AC6BD;
-			assign sv2v_tmp_AC6BD = i0_br_offset[11:0];
-			always @(*) dec_i0_predict_p_d[49:38] = sv2v_tmp_AC6BD;
-			assign i0_predict_fghr_d[pt[2236-:8] - 1:0] = dec_i0_bp_fghr[pt[2236-:8] - 1:0];
-			wire [1:1] sv2v_tmp_11732;
-			assign sv2v_tmp_11732 = dec_i0_brp[1];
-			always @(*) dec_i0_predict_p_d[32] = sv2v_tmp_11732;
-			if (pt[2120-:5]) begin
-				wire btb_error_found;
-				wire btb_error_found_f;
-				wire [$clog2(pt[2061-:14]) - 1:0] fa_error_index_ns;
-				assign btb_error_found = (i0_br_error_all | btb_error_found_f) & ~dec_tlu_flush_lower_r;
-				assign fa_error_index_ns = (i0_br_error_all & ~btb_error_found_f ? dec_i0_bp_fa_index : dec_fa_error_index);
-				rvdff #(.WIDTH($clog2(pt[2061-:14]) + 1)) btberrorfa_f(
-					.rst_l(rst_l),
-					.clk(active_clk),
-					.din({btb_error_found, fa_error_index_ns}),
-					.dout({btb_error_found_f, dec_fa_error_index})
-				);
-			end
-			else assign dec_fa_error_index = 'b0;
-		end
-		else begin
-			always @(*) begin
-				dec_i0_predict_p_d = {56 {1'sb0}};
-				dec_i0_predict_p_d[34] = i0_pcall;
-				dec_i0_predict_p_d[33] = i0_pja;
-				dec_i0_predict_p_d[31] = i0_pret;
-				dec_i0_predict_p_d[52] = dec_i0_pc4_d;
-			end
-			assign i0_br_error_all = 1'b0;
-			assign i0_predict_index_d = {(pt[2172-:9] >= pt[2163-:6] ? (pt[2172-:9] - pt[2163-:6]) + 1 : (pt[2163-:6] - pt[2172-:9]) + 1) {1'sb0}};
-			assign i0_predict_btag_d = {pt[2139-:9] {1'sb0}};
-			assign i0_predict_fghr_d = {pt[2236-:8] {1'sb0}};
-			assign i0_brp_valid = 1'b0;
-		end
-	endgenerate
-	assign i0_icaf_d = dec_i0_icaf_d | dec_i0_dbecc_d;
-	assign i0_instr_error = i0_icaf_d;
-	always @(*) begin
-		i0_dp = i0_dp_raw;
-		if (i0_br_error_all | i0_instr_error) begin
-			i0_dp = {95 {1'sb0}};
-			i0_dp[49] = 1'b1;
-			i0_dp[48] = 1'b1;
-			i0_dp[47] = 1'b1;
-			i0_dp[35] = 1'b1;
-			i0_dp[0] = 1'b1;
-			i0_dp[13] = 1'b1;
-		end
-	end
-	assign i0[31:0] = dec_i0_instr_d[31:0];
-	assign dec_i0_select_pc_d = i0_dp[42];
-	assign i0_predict_br = ((i0_dp[28] | i0_pcall) | i0_pja) | i0_pret;
-	assign i0_predict_nt = ~(dec_i0_brp[37] & i0_brp_valid) & i0_predict_br;
-	assign i0_predict_t = (dec_i0_brp[37] & i0_brp_valid) & i0_predict_br;
-	assign i0_ap[8] = i0_dp[38];
-	assign i0_ap[7] = i0_dp[37];
-	assign i0_ap[18] = i0_dp[36];
-	assign i0_ap[17] = i0_dp[35];
-	assign i0_ap[16] = i0_dp[34];
-	assign i0_ap[15] = i0_dp[33];
-	assign i0_ap[14] = i0_dp[31];
-	assign i0_ap[13] = i0_dp[32];
-	assign i0_ap[6] = i0_dp[30];
-	assign i0_ap[5] = i0_dp[29];
-	assign i0_ap[12] = i0_dp[27];
-	assign i0_ap[11] = i0_dp[26];
-	assign i0_ap[10] = i0_dp[24];
-	assign i0_ap[9] = i0_dp[25];
-	assign i0_ap[43] = i0_dp[94];
-	assign i0_ap[42] = i0_dp[93];
-	assign i0_ap[41] = i0_dp[92];
-	assign i0_ap[40] = i0_dp[91];
-	assign i0_ap[39] = i0_dp[90];
-	assign i0_ap[22] = i0_dp[53];
-	assign i0_ap[21] = i0_dp[52];
-	assign i0_ap[20] = i0_dp[51];
-	assign i0_ap[19] = i0_dp[50];
-	assign i0_ap[38] = i0_dp[89];
-	assign i0_ap[37] = i0_dp[88];
-	assign i0_ap[36] = i0_dp[87];
-	assign i0_ap[35] = i0_dp[86];
-	assign i0_ap[34] = i0_dp[85];
-	assign i0_ap[33] = i0_dp[84];
-	assign i0_ap[32] = i0_dp[83];
-	assign i0_ap[31] = i0_dp[82];
-	assign i0_ap[30] = i0_dp[81];
-	assign i0_ap[29] = i0_dp[80];
-	assign i0_ap[28] = i0_dp[79];
-	assign i0_ap[27] = i0_dp[78];
-	assign i0_ap[26] = i0_dp[77];
-	assign i0_ap[25] = i0_dp[76];
-	assign i0_ap[24] = i0_dp[75];
-	assign i0_ap[23] = i0_dp[74];
-	assign i0_ap[1] = i0_csr_write_only_d;
-	assign i0_ap[0] = i0_dp[15];
-	assign i0_ap[4] = i0_jal;
-	assign i0_ap_pc2 = ~dec_i0_pc4_d;
-	assign i0_ap_pc4 = dec_i0_pc4_d;
-	assign i0_ap[2] = i0_predict_nt;
-	assign i0_ap[3] = i0_predict_t;
-	always @(*) begin
-		found = 0;
-		cam_wen[NBLOAD_SIZE_MSB:0] = {(NBLOAD_SIZE_MSB >= 0 ? NBLOAD_SIZE_MSB + 1 : 1 - NBLOAD_SIZE_MSB) {1'sb0}};
-		begin : sv2v_autoblock_37
-			reg signed [31:0] i;
-			for (i = 0; i < NBLOAD_SIZE; i = i + 1)
-				if (~found) begin
-					if (~cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9]) begin
-						cam_wen[i] = cam_write;
-						found = 1'b1;
-					end
-					else
-						cam_wen[i] = 0;
-				end
-				else
-					cam_wen[i] = 0;
-		end
-	end
-	assign cam_write = lsu_nonblock_load_valid_m;
-	assign cam_write_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_tag_m[NBLOAD_TAG_MSB:0];
-	assign cam_inv_reset = lsu_nonblock_load_inv_r;
-	assign cam_inv_reset_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_inv_tag_r[NBLOAD_TAG_MSB:0];
-	assign cam_data_reset = lsu_nonblock_load_data_valid | lsu_nonblock_load_data_error;
-	assign cam_data_reset_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_data_tag[NBLOAD_TAG_MSB:0];
-	assign nonblock_load_rd[4:0] = (x_d[3] ? x_d[8:4] : 5'b00000);
-	generate
-		genvar i;
-		for (i = 0; i < NBLOAD_SIZE; i = i + 1) begin : cam_array
-			assign cam_inv_reset_val[i] = (cam_inv_reset & (cam_inv_reset_tag[NBLOAD_TAG_MSB:0] == cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + ((5 + NBLOAD_TAG_MSB) >= 5 ? 5 + NBLOAD_TAG_MSB : ((5 + NBLOAD_TAG_MSB) + ((5 + NBLOAD_TAG_MSB) >= 5 ? (5 + NBLOAD_TAG_MSB) - 4 : 6 - (5 + NBLOAD_TAG_MSB))) - 1)-:((5 + NBLOAD_TAG_MSB) >= 5 ? (5 + NBLOAD_TAG_MSB) - 4 : 6 - (5 + NBLOAD_TAG_MSB))])) & cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9];
-			assign cam_data_reset_val[i] = (cam_data_reset & (cam_data_reset_tag[NBLOAD_TAG_MSB:0] == cam_raw[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + ((5 + NBLOAD_TAG_MSB) >= 5 ? 5 + NBLOAD_TAG_MSB : ((5 + NBLOAD_TAG_MSB) + ((5 + NBLOAD_TAG_MSB) >= 5 ? (5 + NBLOAD_TAG_MSB) - 4 : 6 - (5 + NBLOAD_TAG_MSB))) - 1)-:((5 + NBLOAD_TAG_MSB) >= 5 ? (5 + NBLOAD_TAG_MSB) - 4 : 6 - (5 + NBLOAD_TAG_MSB))])) & cam_raw[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9];
-			always @(*) begin
-				cam[(NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10+:10] = cam_raw[(NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10+:10];
-				if (cam_data_reset_val[i])
-					cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9] = 1'b0;
-				cam_in[(NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10+:10] = {10 {1'sb0}};
-				if (cam_wen[i]) begin
-					cam_in[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9] = 1'b1;
-					cam_in[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 8] = 1'b0;
-					cam_in[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + ((5 + NBLOAD_TAG_MSB) >= 5 ? 5 + NBLOAD_TAG_MSB : ((5 + NBLOAD_TAG_MSB) + ((5 + NBLOAD_TAG_MSB) >= 5 ? (5 + NBLOAD_TAG_MSB) - 4 : 6 - (5 + NBLOAD_TAG_MSB))) - 1)-:((5 + NBLOAD_TAG_MSB) >= 5 ? (5 + NBLOAD_TAG_MSB) - 4 : 6 - (5 + NBLOAD_TAG_MSB))] = cam_write_tag[NBLOAD_TAG_MSB:0];
-					cam_in[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 4-:5] = nonblock_load_rd[4:0];
-				end
-				else if (cam_inv_reset_val[i] | ((i0_wen_r & (r_d_in[8:4] == cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 4-:5])) & cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 8]))
-					cam_in[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9] = 1'b0;
-				else
-					cam_in[(NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10+:10] = cam[(NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10+:10];
-				if ((nonblock_load_valid_m_delay & (lsu_nonblock_load_inv_tag_r[NBLOAD_TAG_MSB:0] == cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + ((5 + NBLOAD_TAG_MSB) >= 5 ? 5 + NBLOAD_TAG_MSB : ((5 + NBLOAD_TAG_MSB) + ((5 + NBLOAD_TAG_MSB) >= 5 ? (5 + NBLOAD_TAG_MSB) - 4 : 6 - (5 + NBLOAD_TAG_MSB))) - 1)-:((5 + NBLOAD_TAG_MSB) >= 5 ? (5 + NBLOAD_TAG_MSB) - 4 : 6 - (5 + NBLOAD_TAG_MSB))])) & cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9])
-					cam_in[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 8] = 1'b1;
-				if (dec_tlu_force_halt)
-					cam_in[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9] = 1'b0;
-			end
-			rvdffie #(.WIDTH(10)) cam_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din(cam_in[(NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10+:10]),
-				.dout(cam_raw[(NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10+:10])
-			);
-			assign nonblock_load_write[i] = (load_data_tag[NBLOAD_TAG_MSB:0] == cam_raw[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + ((5 + NBLOAD_TAG_MSB) >= 5 ? 5 + NBLOAD_TAG_MSB : ((5 + NBLOAD_TAG_MSB) + ((5 + NBLOAD_TAG_MSB) >= 5 ? (5 + NBLOAD_TAG_MSB) - 4 : 6 - (5 + NBLOAD_TAG_MSB))) - 1)-:((5 + NBLOAD_TAG_MSB) >= 5 ? (5 + NBLOAD_TAG_MSB) - 4 : 6 - (5 + NBLOAD_TAG_MSB))]) & cam_raw[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9];
-		end
-	endgenerate
-	assign load_data_tag[NBLOAD_TAG_MSB:0] = lsu_nonblock_load_data_tag[NBLOAD_TAG_MSB:0];
-	assign nonblock_load_cancel = (r_d_in[8:4] == dec_nonblock_load_waddr[4:0]) & i0_wen_r;
-	assign dec_nonblock_load_wen = (lsu_nonblock_load_data_valid & |nonblock_load_write[NBLOAD_SIZE_MSB:0]) & ~nonblock_load_cancel;
-	always @(*) begin
-		dec_nonblock_load_waddr[4:0] = {5 {1'sb0}};
-		i0_nonblock_load_stall = i0_nonblock_boundary_stall;
-		begin : sv2v_autoblock_38
-			reg signed [31:0] i;
-			for (i = 0; i < NBLOAD_SIZE; i = i + 1)
-				begin
-					dec_nonblock_load_waddr[4:0] = dec_nonblock_load_waddr[4:0] | ({5 {nonblock_load_write[i]}} & cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 4-:5]);
-					i0_nonblock_load_stall = i0_nonblock_load_stall | ((dec_i0_rs1_en_d & cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9]) & (cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 4-:5] == i0r[14:10]));
-					i0_nonblock_load_stall = i0_nonblock_load_stall | ((dec_i0_rs2_en_d & cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 9]) & (cam[((NBLOAD_SIZE_MSB >= 0 ? i : NBLOAD_SIZE_MSB - i) * 10) + 4-:5] == i0r[9:5]));
-				end
-		end
-	end
-	assign i0_nonblock_boundary_stall = (((nonblock_load_rd[4:0] == i0r[14:10]) & lsu_nonblock_load_valid_m) & dec_i0_rs1_en_d) | (((nonblock_load_rd[4:0] == i0r[9:5]) & lsu_nonblock_load_valid_m) & dec_i0_rs2_en_d);
-	rvdffs #(.WIDTH(1)) wbnbloaddelayff(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.en(i0_r_ctl_en),
-		.din(lsu_nonblock_load_valid_m),
-		.dout(nonblock_load_valid_m_delay)
-	);
-	assign i0_load_kill_wen_r = nonblock_load_valid_m_delay & r_d[3];
-	assign csr_read = csr_ren_qual_d;
-	assign csr_write = dec_csr_wen_unq_d;
-	assign i0_br_unpred = i0_dp[23] & ~i0_predict_br;
-	localparam [3:0] eb1_pkg_ALU = 4'b0100;
-	localparam [3:0] eb1_pkg_BITMANIPU = 4'b1111;
-	localparam [3:0] eb1_pkg_CONDBR = 4'b1101;
-	localparam [3:0] eb1_pkg_CSRREAD = 4'b0101;
-	localparam [3:0] eb1_pkg_CSRRW = 4'b0111;
-	localparam [3:0] eb1_pkg_CSRWRITE = 4'b0110;
-	localparam [3:0] eb1_pkg_EBREAK = 4'b1000;
-	localparam [3:0] eb1_pkg_ECALL = 4'b1001;
-	localparam [3:0] eb1_pkg_FENCE = 4'b1010;
-	localparam [3:0] eb1_pkg_FENCEI = 4'b1011;
-	localparam [3:0] eb1_pkg_JAL = 4'b1110;
-	localparam [3:0] eb1_pkg_LOAD = 4'b0010;
-	localparam [3:0] eb1_pkg_MRET = 4'b1100;
-	localparam [3:0] eb1_pkg_MUL = 4'b0001;
-	localparam [3:0] eb1_pkg_NULL = 4'b0000;
-	localparam [3:0] eb1_pkg_STORE = 4'b0011;
-	always @(*) begin
-		i0_itype = eb1_pkg_NULL;
-		if (i0_legal_decode_d) begin
-			if (i0_dp[9])
-				i0_itype = eb1_pkg_MUL;
-			if (i0_dp[41])
-				i0_itype = eb1_pkg_LOAD;
-			if (i0_dp[40])
-				i0_itype = eb1_pkg_STORE;
-			if (i0_dp[1])
-				i0_itype = eb1_pkg_ALU;
-			if (((((((i0_dp[78] | i0_dp[73]) | i0_dp[70]) | i0_dp[66]) | i0_dp[63]) | i0_dp[56]) | i0_dp[54]) | i0_dp[50])
-				i0_itype = eb1_pkg_BITMANIPU;
-			if (csr_read & ~csr_write)
-				i0_itype = eb1_pkg_CSRREAD;
-			if (~csr_read & csr_write)
-				i0_itype = eb1_pkg_CSRWRITE;
-			if (csr_read & csr_write)
-				i0_itype = eb1_pkg_CSRRW;
-			if (i0_dp[12])
-				i0_itype = eb1_pkg_EBREAK;
-			if (i0_dp[11])
-				i0_itype = eb1_pkg_ECALL;
-			if (i0_dp[3])
-				i0_itype = eb1_pkg_FENCE;
-			if (i0_dp[2])
-				i0_itype = eb1_pkg_FENCEI;
-			if (i0_dp[10])
-				i0_itype = eb1_pkg_MRET;
-			if (i0_dp[28])
-				i0_itype = eb1_pkg_CONDBR;
-			if (i0_dp[23])
-				i0_itype = eb1_pkg_JAL;
-		end
-	end
-	eb1_dec_dec_ctl i0_dec(
-		.inst(i0[31:0]),
-		.out(i0_dp_raw)
-	);
-	rvdff #(.WIDTH(1)) lsu_idle_ff(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.din(lsu_idle_any),
-		.dout(lsu_idle)
-	);
-	assign leak1_i1_stall_in = dec_tlu_flush_leak_one_r | (leak1_i1_stall & ~dec_tlu_flush_lower_r);
-	assign leak1_mode = leak1_i1_stall;
-	assign leak1_i0_stall_in = (dec_i0_decode_d & leak1_i1_stall) | (leak1_i0_stall & ~dec_tlu_flush_lower_r);
-	assign i0_pcall_imm[20:1] = {i0[31], i0[19:12], i0[20], i0[30:21]};
-	assign i0_pcall_12b_offset = (i0_pcall_imm[12] ? i0_pcall_imm[20:13] == 8'hff : i0_pcall_imm[20:13] == 8'h00);
-	assign i0_pcall_case = (i0_pcall_12b_offset & i0_dp_raw[43]) & ((i0r[4:0] == 5'd1) | (i0r[4:0] == 5'd5));
-	assign i0_pja_case = (i0_pcall_12b_offset & i0_dp_raw[43]) & ~((i0r[4:0] == 5'd1) | (i0r[4:0] == 5'd5));
-	assign i0_pcall_raw = i0_dp_raw[23] & i0_pcall_case;
-	assign i0_pcall = i0_dp[23] & i0_pcall_case;
-	assign i0_pja_raw = i0_dp_raw[23] & i0_pja_case;
-	assign i0_pja = i0_dp[23] & i0_pja_case;
-	assign i0_br_offset[11:0] = (i0_pcall_raw | i0_pja_raw ? i0_pcall_imm[12:1] : {i0[31], i0[7], i0[30:25], i0[11:8]});
-	assign i0_pret_case = ((i0_dp_raw[23] & i0_dp_raw[46]) & (i0r[4:0] == 5'b00000)) & ((i0r[14:10] == 5'd1) | (i0r[14:10] == 5'd5));
-	assign i0_pret_raw = i0_dp_raw[23] & i0_pret_case;
-	assign i0_pret = i0_dp[23] & i0_pret_case;
-	assign i0_jal = ((i0_dp[23] & ~i0_pcall_case) & ~i0_pja_case) & ~i0_pret_case;
-	assign dec_lsu_offset_d[11:0] = ({12 {(~dec_extint_stall & i0_dp[39]) & i0_dp[41]}} & i0[31:20]) | ({12 {(~dec_extint_stall & i0_dp[39]) & i0_dp[40]}} & {i0[31:25], i0[11:7]});
-	assign div_p[2] = div_decode_d;
-	assign div_p[1] = i0_dp[29];
-	assign div_p[0] = i0_dp[4];
-	assign mul_p[19] = mul_decode_d;
-	assign mul_p[18] = i0_dp[8];
-	assign mul_p[17] = i0_dp[7];
-	assign mul_p[16] = i0_dp[6];
-	assign mul_p[15] = i0_dp[72];
-	assign mul_p[14] = i0_dp[71];
-	assign mul_p[13] = i0_dp[69];
-	assign mul_p[12] = i0_dp[68];
-	assign mul_p[11] = i0_dp[67];
-	assign mul_p[10] = i0_dp[80];
-	assign mul_p[9] = i0_dp[79];
-	assign mul_p[8] = i0_dp[65];
-	assign mul_p[7] = i0_dp[64];
-	assign mul_p[6] = i0_dp[62];
-	assign mul_p[5] = i0_dp[61];
-	assign mul_p[4] = i0_dp[60];
-	assign mul_p[3] = i0_dp[59];
-	assign mul_p[2] = i0_dp[58];
-	assign mul_p[1] = i0_dp[57];
-	assign mul_p[0] = i0_dp[55];
-	always @(*) begin
-		lsu_p = {14 {1'sb0}};
-		if (dec_extint_stall) begin
-			lsu_p[7] = 1'b1;
-			lsu_p[9] = 1'b1;
-			lsu_p[13] = 1'b1;
-			lsu_p[0] = 1'b1;
-		end
-		else begin
-			lsu_p[0] = lsu_decode_d;
-			lsu_p[7] = i0_dp[41];
-			lsu_p[6] = i0_dp[40];
-			lsu_p[11] = i0_dp[22];
-			lsu_p[10] = i0_dp[21];
-			lsu_p[9] = i0_dp[20];
-			lsu_p[12] = i0r[14:10] == 5'd2;
-			lsu_p[2] = load_ldst_bypass_d;
-			lsu_p[3] = store_data_bypass_d;
-			lsu_p[1] = store_data_bypass_m;
-			lsu_p[5] = i0_dp[29];
-		end
-	end
-	assign dec_lsu_valid_raw_d = (((i0_valid_d & (i0_dp_raw[41] | i0_dp_raw[40])) & ~dma_dccm_stall_any) & ~i0_block_raw_d) | dec_extint_stall;
-	assign i0r[14:10] = i0[19:15];
-	assign i0r[9:5] = i0[24:20];
-	assign i0r[4:0] = i0[11:7];
-	assign dec_i0_rs1_en_d = i0_dp[48] & (i0r[14:10] != 5'd0);
-	assign dec_i0_rs2_en_d = i0_dp[47] & (i0r[9:5] != 5'd0);
-	assign i0_rd_en_d = i0_dp[45] & (i0r[4:0] != 5'd0);
-	assign dec_i0_rs1_d[4:0] = i0r[14:10];
-	assign dec_i0_rs2_d[4:0] = i0r[9:5];
-	assign i0_jalimm20 = i0_dp[23] & i0_dp[43];
-	assign i0_uiimm20 = ~i0_dp[23] & i0_dp[43];
-	assign dec_csr_ren_d = i0_dp[19] & i0_valid_d;
-	assign csr_ren_qual_d = i0_dp[19] & i0_legal_decode_d;
-	assign csr_clr_d = i0_dp[18] & i0_legal_decode_d;
-	assign csr_set_d = i0_dp[17] & i0_legal_decode_d;
-	assign csr_write_d = i0_csr_write & i0_legal_decode_d;
-	assign i0_csr_write_only_d = i0_csr_write & ~i0_dp[19];
-	assign dec_csr_wen_unq_d = ((i0_dp[18] | i0_dp[17]) | i0_csr_write) & i0_valid_d;
-	assign dec_csr_any_unq_d = any_csr_d & i0_valid_d;
-	assign dec_csr_rdaddr_d[11:0] = {12 {dec_csr_any_unq_d}} & i0[31:20];
-	assign dec_csr_wraddr_r[11:0] = {12 {r_d[22] & r_d[0]}} & r_d[20:9];
-	assign dec_csr_wen_r = (r_d[22] & r_d[0]) & ~dec_tlu_i0_kill_writeb_r;
-	assign dec_csr_stall_int_ff = ((((r_d[20:9] == 12'h300) | (r_d[20:9] == 12'h304)) & r_d[22]) & r_d[0]) & ~dec_tlu_i0_kill_writeb_wb;
-	rvdff #(.WIDTH(5)) csrmiscff(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.din({csr_ren_qual_d, csr_clr_d, csr_set_d, csr_write_d, i0_dp[15]}),
-		.dout({csr_read_x, csr_clr_x, csr_set_x, csr_write_x, csr_imm_x})
-	);
-	rvdffe #(.WIDTH(37)) csr_rddata_x_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_x_data_en & any_csr_d),
-		.din({i0[19:15], dec_csr_rddata_d[31:0]}),
-		.dout({csrimm_x[4:0], csr_rddata_x[31:0]})
-	);
-	assign csr_mask_x[31:0] = ({32 {csr_imm_x}} & {27'b000000000000000000000000000, csrimm_x[4:0]}) | ({32 {~csr_imm_x}} & exu_csr_rs1_x[31:0]);
-	assign write_csr_data_x[31:0] = (({32 {csr_clr_x}} & (csr_rddata_x[31:0] & ~csr_mask_x[31:0])) | ({32 {csr_set_x}} & (csr_rddata_x[31:0] | csr_mask_x[31:0]))) | ({32 {csr_write_x}} & csr_mask_x[31:0]);
-	assign clear_pause = (dec_tlu_flush_lower_r & ~dec_tlu_flush_pause_r) | (pause_state & (write_csr_data[31:1] == 31'b0000000000000000000000000000000));
-	assign pause_state_in = (dec_tlu_wr_pause_r | pause_state) & ~clear_pause;
-	assign dec_pause_state = pause_state;
-	assign dec_pause_state_cg = (pause_state & ~tlu_wr_pause_r1) & ~tlu_wr_pause_r2;
-	assign csr_data_wen = ((((csr_clr_x | csr_set_x) | csr_write_x) & csr_read_x) | dec_tlu_wr_pause_r) | pause_state;
-	assign write_csr_data_in[31:0] = (pause_state ? write_csr_data[31:0] - 32'b00000000000000000000000000000001 : (dec_tlu_wr_pause_r ? dec_csr_wrdata_r[31:0] : write_csr_data_x[31:0]));
-	rvdffe #(.WIDTH(32)) write_csr_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(csr_data_wen),
-		.din(write_csr_data_in[31:0]),
-		.dout(write_csr_data[31:0])
-	);
-	assign pause_stall = pause_state;
-	assign dec_csr_wrdata_r[31:0] = (r_d[21] & r_d[0] ? i0_result_corr_r[31:0] : write_csr_data[31:0]);
-	assign dec_i0_immed_d[31:0] = i0_immed_d[31:0];
-	assign i0_immed_d[31:0] = (((({32 {i0_dp[46]}} & {{20 {i0[31]}}, i0[31:20]}) | ({32 {i0_dp[44]}} & {27'b000000000000000000000000000, i0[24:20]})) | ({32 {i0_jalimm20}} & {{12 {i0[31]}}, i0[19:12], i0[20], i0[30:21], 1'b0})) | ({32 {i0_uiimm20}} & {i0[31:12], 12'b000000000000})) | ({32 {i0_csr_write_only_d & i0_dp[15]}} & {27'b000000000000000000000000000, i0[19:15]});
-	assign dec_i0_br_immed_d[12:1] = (i0_ap[2] & ~i0_dp[23] ? i0_br_offset[11:0] : {10'b0000000000, i0_ap_pc4, i0_ap_pc2});
-	assign last_br_immed_d[12:1] = (i0_ap[2] ? {10'b0000000000, i0_ap_pc4, i0_ap_pc2} : i0_br_offset[11:0]);
-	assign i0_valid_d = dec_ib0_valid_d;
-	assign i0_load_stall_d = i0_dp[41] & (lsu_load_stall_any | dma_dccm_stall_any);
-	assign i0_store_stall_d = i0_dp[40] & (lsu_store_stall_any | dma_dccm_stall_any);
-	assign i0_presync = (((i0_dp[14] | dec_tlu_presync_d) | debug_fence_i) | debug_fence_raw) | dec_tlu_pipelining_disable;
-	assign i0_postsync = ((i0_dp[13] | dec_tlu_postsync_d) | debug_fence_i) | (i0_csr_write_only_d & (i0[31:20] == 12'h7c2));
-	assign debug_fence_i = dec_debug_fence_d & dbg_cmd_wrdata[0];
-	assign debug_fence_raw = dec_debug_fence_d & dbg_cmd_wrdata[1];
-	assign debug_fence = debug_fence_raw | debug_fence_i;
-	assign i0_csr_write = i0_dp[16] & ~dec_debug_fence_d;
-	assign presync_stall = i0_presync & prior_inflight_eff;
-	assign prior_inflight_eff = (i0_dp[5] ? prior_inflight_x : prior_inflight);
-	assign i0_div_prior_div_stall = i0_dp[5] & div_active;
-	assign i0_block_raw_d = (((((((((((i0_dp[19] & prior_csr_write) | dec_extint_stall) | pause_stall) | leak1_i0_stall) | dec_tlu_debug_stall) | postsync_stall) | presync_stall) | ((i0_dp[3] | debug_fence) & ~lsu_idle)) | i0_nonblock_load_stall) | i0_load_block_d) | i0_nonblock_div_stall) | i0_div_prior_div_stall;
-	assign i0_block_d = (i0_block_raw_d | i0_store_stall_d) | i0_load_stall_d;
-	assign i0_exublock_d = i0_block_raw_d;
-	assign prior_csr_write = (x_d[21] | r_d[21]) | wbd[21];
-	generate
-		if (pt[2207-:5] == 1) begin
-			assign bitmanip_zbb_legal = 1'b1;
-		end
-		else assign bitmanip_zbb_legal = ~(i0_dp[78] & ~i0_dp[63]);
-	endgenerate
-	generate
-		if (pt[2177-:5] == 1) begin
-			assign bitmanip_zbs_legal = 1'b1;
-		end
-		else assign bitmanip_zbs_legal = ~i0_dp[73];
-	endgenerate
-	generate
-		if (pt[2197-:5] == 1) begin
-			assign bitmanip_zbe_legal = 1'b1;
-		end
-		else assign bitmanip_zbe_legal = ~i0_dp[70];
-	endgenerate
-	generate
-		if (pt[2202-:5] == 1) begin
-			assign bitmanip_zbc_legal = 1'b1;
-		end
-		else assign bitmanip_zbc_legal = ~i0_dp[66];
-	endgenerate
-	generate
-		if (pt[2187-:5] == 1) begin
-			assign bitmanip_zbp_legal = 1'b1;
-		end
-		else assign bitmanip_zbp_legal = ~(i0_dp[63] & ~i0_dp[78]);
-	endgenerate
-	generate
-		if (pt[2182-:5] == 1) begin
-			assign bitmanip_zbr_legal = 1'b1;
-		end
-		else assign bitmanip_zbr_legal = ~i0_dp[56];
-	endgenerate
-	generate
-		if (pt[2192-:5] == 1) begin
-			assign bitmanip_zbf_legal = 1'b1;
-		end
-		else assign bitmanip_zbf_legal = ~i0_dp[54];
-	endgenerate
-	generate
-		if (pt[2212-:5] == 1) begin
-			assign bitmanip_zba_legal = 1'b1;
-		end
-		else assign bitmanip_zba_legal = ~i0_dp[50];
-	endgenerate
-	generate
-		if ((pt[2207-:5] == 1) | (pt[2187-:5] == 1)) begin
-			assign bitmanip_zbb_zbp_legal = 1'b1;
-		end
-		else assign bitmanip_zbb_zbp_legal = ~(i0_dp[78] & i0_dp[63]);
-	endgenerate
-	assign any_csr_d = i0_dp[19] | i0_csr_write;
-	assign bitmanip_legal = (((((((bitmanip_zbb_legal & bitmanip_zbs_legal) & bitmanip_zbe_legal) & bitmanip_zbc_legal) & bitmanip_zbp_legal) & bitmanip_zbr_legal) & bitmanip_zbf_legal) & bitmanip_zba_legal) & bitmanip_zbb_zbp_legal;
-	assign i0_legal = (i0_dp[0] & (~any_csr_d | dec_csr_legal_d)) & bitmanip_legal;
-	assign shift_illegal = dec_i0_decode_d & ~i0_legal;
-	assign illegal_inst_en = shift_illegal & ~illegal_lockout;
-	rvdffe #(.WIDTH(32)) illegal_any_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(illegal_inst_en),
-		.din(i0_inst_d[31:0]),
-		.dout(dec_illegal_inst[31:0])
-	);
-	assign illegal_lockout_in = (shift_illegal | illegal_lockout) & ~flush_final_r;
-	assign dec_i0_decode_d = ((i0_valid_d & ~i0_block_d) & ~dec_tlu_flush_lower_r) & ~flush_final_r;
-	assign i0_exudecode_d = ((i0_valid_d & ~i0_exublock_d) & ~dec_tlu_flush_lower_r) & ~flush_final_r;
-	assign i0_legal_decode_d = dec_i0_decode_d & i0_legal;
-	assign i0_exulegal_decode_d = i0_exudecode_d & i0_legal;
-	assign dec_pmu_instr_decoded = dec_i0_decode_d;
-	assign dec_pmu_decode_stall = i0_valid_d & ~dec_i0_decode_d;
-	assign dec_pmu_postsync_stall = postsync_stall & i0_valid_d;
-	assign dec_pmu_presync_stall = presync_stall & i0_valid_d;
-	assign ps_stall_in = (dec_i0_decode_d & (i0_postsync | ~i0_legal)) | (ps_stall & prior_inflight_x);
-	assign postsync_stall = ps_stall;
-	assign prior_inflight_x = x_d[0];
-	assign prior_inflight_wb = r_d[0];
-	assign prior_inflight = prior_inflight_x | prior_inflight_wb;
-	assign dec_i0_alu_decode_d = i0_exulegal_decode_d & i0_dp[49];
-	assign dec_i0_branch_d = (i0_dp[28] | i0_dp[23]) | i0_br_error_all;
-	assign lsu_decode_d = i0_legal_decode_d & i0_dp[39];
-	assign mul_decode_d = i0_exulegal_decode_d & i0_dp[9];
-	assign div_decode_d = i0_exulegal_decode_d & i0_dp[5];
-	assign dec_qual_lsu_d = i0_dp[39];
-	assign i0_rs1_depend_i0_x = (dec_i0_rs1_en_d & x_d[1]) & (x_d[8:4] == i0r[14:10]);
-	assign i0_rs1_depend_i0_r = (dec_i0_rs1_en_d & r_d[1]) & (r_d[8:4] == i0r[14:10]);
-	assign i0_rs2_depend_i0_x = (dec_i0_rs2_en_d & x_d[1]) & (x_d[8:4] == i0r[9:5]);
-	assign i0_rs2_depend_i0_r = (dec_i0_rs2_en_d & r_d[1]) & (r_d[8:4] == i0r[9:5]);
-	assign {i0_rs1_class_d, i0_rs1_depth_d[1:0]} = (i0_rs1_depend_i0_x ? {i0_x_c, 2'd1} : (i0_rs1_depend_i0_r ? {i0_r_c, 2'd2} : {5 {1'sb0}}));
-	assign {i0_rs2_class_d, i0_rs2_depth_d[1:0]} = (i0_rs2_depend_i0_x ? {i0_x_c, 2'd1} : (i0_rs2_depend_i0_r ? {i0_r_c, 2'd2} : {5 {1'sb0}}));
-	generate
-		if (pt[202-:5] == 1) begin : genblock
-			assign i0_load_block_d = (i0_rs1_class_d[1] & i0_rs1_depth_d[0]) | ((i0_rs2_class_d[1] & i0_rs2_depth_d[0]) & ~i0_dp[40]);
-			assign load_ldst_bypass_d = ((i0_dp[41] | i0_dp[40]) & i0_rs1_depth_d[1]) & i0_rs1_class_d[1];
-			assign store_data_bypass_d = (i0_dp[40] & i0_rs2_depth_d[1]) & i0_rs2_class_d[1];
-			assign store_data_bypass_m = (i0_dp[40] & i0_rs2_depth_d[0]) & i0_rs2_class_d[1];
-		end
-		else begin : genblock
-			assign i0_load_block_d = 1'b0;
-			assign load_ldst_bypass_d = ((i0_dp[41] | i0_dp[40]) & i0_rs1_depth_d[0]) & i0_rs1_class_d[1];
-			assign store_data_bypass_d = (i0_dp[40] & i0_rs2_depth_d[0]) & i0_rs2_class_d[1];
-			assign store_data_bypass_m = 1'b0;
-		end
-	endgenerate
-	assign dec_tlu_i0_valid_r = r_d[0] & ~dec_tlu_flush_lower_wb;
-	assign d_t[5] = i0_legal_decode_d;
-	assign d_t[16] = i0_icaf_d & i0_legal_decode_d;
-	assign d_t[15] = dec_i0_icaf_second_d & i0_legal_decode_d;
-	assign d_t[14:13] = dec_i0_icaf_type_d[1:0];
-	assign d_t[12] = (i0_dp[2] | debug_fence_i) & i0_legal_decode_d;
-	assign d_t[3-:4] = i0_itype;
-	assign d_t[7] = i0_br_unpred;
-	assign d_t[6] = 1'b0;
-	assign d_t[4] = 1'b0;
-	assign d_t[11:8] = dec_i0_trigger_match_d[3:0] & {4 {dec_i0_decode_d}};
-	rvdfflie #(
-		.WIDTH(17),
-		.LEFT(9)
-	) trap_xff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_x_ctl_en),
-		.din(d_t),
-		.dout(x_t)
-	);
-	always @(*) begin
-		x_t_in = x_t;
-		x_t_in[11:8] = x_t[11-:4] & ~{4 {dec_tlu_flush_lower_wb}};
-	end
-	rvdfflie #(
-		.WIDTH(17),
-		.LEFT(9)
-	) trap_r_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_x_ctl_en),
-		.din(x_t_in),
-		.dout(r_t)
-	);
-	always @(*) begin
-		r_t_in = r_t;
-		r_t_in[11:8] = ({4 {r_d[3] | r_d[2]}} & lsu_trigger_match_r[3:0]) | r_t[11:8];
-		r_t_in[4] = lsu_pmu_misaligned_r;
-		if (dec_tlu_flush_lower_wb)
-			r_t_in = {17 {1'sb0}};
-	end
-	always @(*) begin
-		dec_tlu_packet_r = r_t_in;
-		dec_tlu_packet_r[6] = r_d[23] & r_d[0];
-	end
-	assign i0_d_c[2] = i0_dp[9] & i0_legal_decode_d;
-	assign i0_d_c[1] = i0_dp[41] & i0_legal_decode_d;
-	assign i0_d_c[0] = i0_dp[49] & i0_legal_decode_d;
-	rvdffs #(.WIDTH(3)) i0_x_c_ff(
-		.rst_l(rst_l),
-		.en(i0_x_ctl_en),
-		.clk(active_clk),
-		.din(i0_d_c),
-		.dout(i0_x_c)
-	);
-	rvdffs #(.WIDTH(3)) i0_r_c_ff(
-		.rst_l(rst_l),
-		.en(i0_r_ctl_en),
-		.clk(active_clk),
-		.din(i0_x_c),
-		.dout(i0_r_c)
-	);
-	assign d_d[8:4] = i0r[4:0];
-	assign d_d[1] = i0_rd_en_d & i0_legal_decode_d;
-	assign d_d[0] = dec_i0_decode_d;
-	assign d_d[3] = i0_dp[41] & i0_legal_decode_d;
-	assign d_d[2] = i0_dp[40] & i0_legal_decode_d;
-	assign d_d[23] = i0_dp[5] & i0_legal_decode_d;
-	assign d_d[22] = dec_csr_wen_unq_d & i0_legal_decode_d;
-	assign d_d[21] = i0_csr_write_only_d & dec_i0_decode_d;
-	assign d_d[20:9] = (d_d[22] ? i0[31:20] : {12 {1'sb0}});
-	rvdff #(.WIDTH(3)) i0cgff(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.din(i0_pipe_en[3:1]),
-		.dout(i0_pipe_en[2:0])
-	);
-	assign i0_pipe_en[3] = dec_i0_decode_d;
-	assign i0_x_ctl_en = |i0_pipe_en[3:2] | clk_override;
-	assign i0_r_ctl_en = |i0_pipe_en[2:1] | clk_override;
-	assign i0_wb_ctl_en = |i0_pipe_en[1:0] | clk_override;
-	assign i0_x_data_en = i0_pipe_en[3] | clk_override;
-	assign i0_r_data_en = i0_pipe_en[2] | clk_override;
-	assign i0_wb_data_en = i0_pipe_en[1] | clk_override;
-	assign dec_data_en[1:0] = {i0_x_data_en, i0_r_data_en};
-	assign dec_ctl_en[1:0] = {i0_x_ctl_en, i0_r_ctl_en};
-	rvdfflie #(
-		.WIDTH(24),
-		.LEFT(15)
-	) e1ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_x_ctl_en),
-		.din(d_d),
-		.dout(x_d)
-	);
-	always @(*) begin
-		x_d_in = x_d;
-		x_d_in[1] = (x_d[1] & ~dec_tlu_flush_lower_wb) & ~dec_tlu_flush_lower_r;
-		x_d_in[0] = (x_d[0] & ~dec_tlu_flush_lower_wb) & ~dec_tlu_flush_lower_r;
-	end
-	rvdfflie #(
-		.WIDTH(24),
-		.LEFT(15)
-	) r_d_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_r_ctl_en),
-		.din(x_d_in),
-		.dout(r_d)
-	);
-	always @(*) begin
-		r_d_in = r_d;
-		r_d_in[8:4] = r_d[8:4];
-		r_d_in[1] = r_d[1] & ~dec_tlu_flush_lower_wb;
-		r_d_in[0] = r_d[0] & ~dec_tlu_flush_lower_wb;
-		r_d_in[3] = r_d[3] & ~dec_tlu_flush_lower_wb;
-		r_d_in[2] = r_d[2] & ~dec_tlu_flush_lower_wb;
-	end
-	rvdfflie #(
-		.WIDTH(24),
-		.LEFT(15)
-	) wbff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_wb_ctl_en),
-		.din(r_d_in),
-		.dout(wbd)
-	);
-	assign dec_i0_waddr_r[4:0] = r_d_in[8:4];
-	assign i0_wen_r = r_d_in[1] & ~dec_tlu_i0_kill_writeb_r;
-	assign dec_i0_wen_r = (i0_wen_r & ~r_d_in[23]) & ~i0_load_kill_wen_r;
-	assign dec_i0_wdata_r[31:0] = i0_result_corr_r[31:0];
-	assign div_e1_to_r = (x_d[23] & x_d[0]) | (r_d[23] & r_d[0]);
-	assign div_active_in = i0_div_decode_d | ((div_active & ~exu_div_wren) & ~nonblock_div_cancel);
-	assign dec_div_active = div_active;
-	assign i0_nonblock_div_stall = ((dec_i0_rs1_en_d & div_active) & (div_waddr_wb[4:0] == i0r[14:10])) | ((dec_i0_rs2_en_d & div_active) & (div_waddr_wb[4:0] == i0r[9:5]));
-	assign div_flush = (((x_d[23] & x_d[0]) & (x_d[8:4] == 5'b00000)) | ((x_d[23] & x_d[0]) & dec_tlu_flush_lower_r)) | (((r_d[23] & r_d[0]) & dec_tlu_flush_lower_r) & dec_tlu_i0_kill_writeb_r);
-	assign nonblock_div_cancel = (div_active & div_flush) | (((div_active & ~div_e1_to_r) & (r_d[8:4] == div_waddr_wb[4:0])) & i0_wen_r);
-	assign dec_div_cancel = nonblock_div_cancel;
-	assign i0_div_decode_d = i0_legal_decode_d & i0_dp[5];
-	generate
-		if (pt[202-:5] == 1) begin : genblock1
-			assign i0_result_x[31:0] = exu_i0_result_x[31:0];
-			assign i0_result_r[31:0] = (r_d[1] & r_d[3] ? lsu_result_m[31:0] : i0_result_r_raw[31:0]);
-		end
-		else begin : genblock1
-			assign i0_result_x[31:0] = (x_d[1] & x_d[3] ? lsu_result_m[31:0] : exu_i0_result_x[31:0]);
-			assign i0_result_r[31:0] = i0_result_r_raw[31:0];
-		end
-	endgenerate
-	rvdffe #(.WIDTH(32)) i0_result_r_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_r_data_en & ((x_d[1] | x_d[22]) | debug_valid_x)),
-		.din(i0_result_x[31:0]),
-		.dout(i0_result_r_raw[31:0])
-	);
-	assign i0_result_corr_r[31:0] = (r_d[1] & r_d[3] ? lsu_result_corr_r[31:0] : i0_result_r_raw[31:0]);
-	rvdffe #(.WIDTH(12)) e1brpcff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_x_data_en),
-		.din(last_br_immed_d[12:1]),
-		.dout(last_br_immed_x[12:1])
-	);
-	assign i0_wb_en = i0_wb_data_en;
-	assign i0_inst_wb_in[31:0] = i0_inst_r[31:0];
-	assign i0_inst_d[31:0] = (dec_i0_pc4_d ? i0[31:0] : {16'b0000000000000000, ifu_i0_cinst[15:0]});
-	assign trace_enable = ~dec_tlu_trace_disable;
-	rvdffe #(
-		.WIDTH(5),
-		.OVERRIDE(1)
-	) i0rdff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_div_decode_d),
-		.din(i0r[4:0]),
-		.dout(div_waddr_wb[4:0])
-	);
-	rvdffe #(.WIDTH(32)) i0xinstff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_x_data_en & trace_enable),
-		.din(i0_inst_d[31:0]),
-		.dout(i0_inst_x[31:0])
-	);
-	rvdffe #(.WIDTH(32)) i0cinstff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_r_data_en & trace_enable),
-		.din(i0_inst_x[31:0]),
-		.dout(i0_inst_r[31:0])
-	);
-	rvdffe #(.WIDTH(32)) i0wbinstff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_wb_en & trace_enable),
-		.din(i0_inst_wb_in[31:0]),
-		.dout(i0_inst_wb[31:0])
-	);
-	rvdffe #(.WIDTH(31)) i0wbpcff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_wb_en & trace_enable),
-		.din(dec_tlu_i0_pc_r[31:1]),
-		.dout(i0_pc_wb[31:1])
-	);
-	assign dec_i0_inst_wb[31:0] = i0_inst_wb[31:0];
-	assign dec_i0_pc_wb[31:1] = i0_pc_wb[31:1];
-	rvdffpcie #(.WIDTH(31)) i0_pc_r_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(i0_r_data_en),
-		.din(exu_i0_pc_x[31:1]),
-		.dout(dec_i0_pc_r[31:1])
-	);
-	assign dec_tlu_i0_pc_r[31:1] = dec_i0_pc_r[31:1];
-	rvbradder ibradder_correct(
-		.pc(exu_i0_pc_x[31:1]),
-		.offset(last_br_immed_x[12:1]),
-		.dout(pred_correct_npc_x[31:1])
-	);
-	assign i0_rs1_nonblock_load_bypass_en_d = (dec_i0_rs1_en_d & dec_nonblock_load_wen) & (dec_nonblock_load_waddr[4:0] == i0r[14:10]);
-	assign i0_rs2_nonblock_load_bypass_en_d = (dec_i0_rs2_en_d & dec_nonblock_load_wen) & (dec_nonblock_load_waddr[4:0] == i0r[9:5]);
-	assign i0_rs1bypass[2] = i0_rs1_depth_d[0] & (i0_rs1_class_d[0] | i0_rs1_class_d[2]);
-	assign i0_rs1bypass[1] = i0_rs1_depth_d[0] & i0_rs1_class_d[1];
-	assign i0_rs1bypass[0] = i0_rs1_depth_d[1] & ((i0_rs1_class_d[0] | i0_rs1_class_d[2]) | i0_rs1_class_d[1]);
-	assign i0_rs2bypass[2] = i0_rs2_depth_d[0] & (i0_rs2_class_d[0] | i0_rs2_class_d[2]);
-	assign i0_rs2bypass[1] = i0_rs2_depth_d[0] & i0_rs2_class_d[1];
-	assign i0_rs2bypass[0] = i0_rs2_depth_d[1] & ((i0_rs2_class_d[0] | i0_rs2_class_d[2]) | i0_rs2_class_d[1]);
-	assign dec_i0_rs1_bypass_en_d[3] = ((i0_rs1_nonblock_load_bypass_en_d & ~i0_rs1bypass[0]) & ~i0_rs1bypass[1]) & ~i0_rs1bypass[2];
-	assign dec_i0_rs1_bypass_en_d[2] = i0_rs1bypass[2];
-	assign dec_i0_rs1_bypass_en_d[1] = i0_rs1bypass[1];
-	assign dec_i0_rs1_bypass_en_d[0] = i0_rs1bypass[0];
-	assign dec_i0_rs2_bypass_en_d[3] = ((i0_rs2_nonblock_load_bypass_en_d & ~i0_rs2bypass[0]) & ~i0_rs2bypass[1]) & ~i0_rs2bypass[2];
-	assign dec_i0_rs2_bypass_en_d[2] = i0_rs2bypass[2];
-	assign dec_i0_rs2_bypass_en_d[1] = i0_rs2bypass[1];
-	assign dec_i0_rs2_bypass_en_d[0] = i0_rs2bypass[0];
-	assign dec_i0_result_r[31:0] = i0_result_r[31:0];
-endmodule
-module eb1_dec_dec_ctl (
-	inst,
-	out
-);
-	input wire [31:0] inst;
-	output wire [94:0] out;
-	wire [31:0] i;
-	assign i[31:0] = inst[31:0];
-	assign out[49] = (((((((((((((((((((((((i[30] & i[24]) & i[23]) & !i[22]) & !i[21]) & !i[20]) & i[14]) & !i[5]) & i[4]) | (((i[29] & !i[27]) & !i[24]) & i[4])) | (((!i[25] & !i[13]) & !i[12]) & i[4])) | (((!i[30] & !i[25]) & i[13]) & i[12])) | (((i[27] & i[25]) & i[14]) & i[4])) | (((i[29] & i[27]) & !i[14]) & i[4])) | (((i[29] & !i[14]) & i[5]) & i[4])) | (((!i[27] & !i[25]) & i[14]) & i[4])) | (((i[30] & !i[29]) & !i[13]) & i[4])) | (((!i[30] & !i[27]) & !i[25]) & i[4])) | ((i[13] & !i[5]) & i[4])) | ((!i[12] & !i[5]) & i[4])) | i[2]) | i[6]) | (((((((i[30] & i[24]) & i[23]) & i[22]) & i[21]) & i[20]) & !i[5]) & i[4])) | ((((((((!i[30] & i[29]) & !i[24]) & !i[23]) & i[22]) & i[21]) & i[20]) & !i[5]) & i[4])) | (((((((!i[30] & i[24]) & !i[23]) & !i[22]) & !i[21]) & !i[20]) & !i[5]) & i[4]);
-	assign out[48] = (((((((((((((!i[14] & !i[13]) & !i[2]) | ((!i[13] & i[11]) & !i[2])) | ((i[19] & i[13]) & !i[2])) | ((!i[13] & i[10]) & !i[2])) | ((i[18] & i[13]) & !i[2])) | ((!i[13] & i[9]) & !i[2])) | ((i[17] & i[13]) & !i[2])) | ((!i[13] & i[8]) & !i[2])) | ((i[16] & i[13]) & !i[2])) | ((!i[13] & i[7]) & !i[2])) | ((i[15] & i[13]) & !i[2])) | (!i[4] & !i[3])) | (!i[6] & !i[2]);
-	assign out[47] = ((i[5] & !i[4]) & !i[2]) | ((!i[6] & i[5]) & !i[2]);
-	assign out[46] = ((((!i[4] & !i[3]) & i[2]) | (((i[13] & !i[5]) & i[4]) & !i[2])) | (((!i[13] & !i[12]) & i[6]) & i[4])) | (((!i[12] & !i[5]) & i[4]) & !i[2]);
-	assign out[45] = ((!i[5] & !i[2]) | (i[5] & i[2])) | i[4];
-	assign out[44] = ((((((i[27] & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2]) | (((((!i[30] & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | (((((i[14] & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2]);
-	assign out[43] = (i[5] & i[3]) | (i[4] & i[2]);
-	assign out[42] = ((!i[5] & !i[3]) & i[2]) | (i[5] & i[3]);
-	assign out[41] = (!i[5] & !i[4]) & !i[2];
-	assign out[40] = (!i[6] & i[5]) & !i[4];
-	assign out[39] = (!i[6] & !i[4]) & !i[2];
-	assign out[38] = (((((!i[14] & !i[13]) & !i[12]) & !i[5]) & i[4]) | ((!i[5] & !i[3]) & i[2])) | (((((((!i[30] & !i[25]) & !i[14]) & !i[13]) & !i[12]) & !i[6]) & i[4]) & !i[2]);
-	assign out[37] = (((((((((i[30] & !i[14]) & !i[12]) & !i[6]) & i[5]) & i[4]) & !i[2]) | ((((((!i[29] & !i[25]) & !i[14]) & i[13]) & !i[6]) & i[4]) & !i[2])) | (((((i[27] & i[25]) & i[14]) & !i[6]) & i[5]) & !i[2])) | ((((!i[14] & i[13]) & !i[5]) & i[4]) & !i[2])) | ((i[6] & !i[4]) & !i[2]);
-	assign out[36] = ((((((!i[27] & !i[25]) & i[14]) & i[13]) & i[12]) & !i[6]) & !i[2]) | ((((i[14] & i[13]) & i[12]) & !i[5]) & !i[2]);
-	assign out[35] = ((((!i[6] & i[3]) | (((((((!i[29] & !i[27]) & !i[25]) & i[14]) & i[13]) & !i[12]) & !i[6]) & !i[2])) | ((i[5] & i[4]) & i[2])) | (((!i[13] & !i[12]) & i[6]) & i[4])) | ((((i[14] & i[13]) & !i[12]) & !i[5]) & !i[2]);
-	assign out[34] = (((((((!i[29] & !i[27]) & !i[25]) & i[14]) & !i[13]) & !i[12]) & i[4]) & !i[2]) | (((((i[14] & !i[13]) & !i[12]) & !i[5]) & i[4]) & !i[2]);
-	assign out[33] = (((((((!i[29] & !i[27]) & !i[25]) & !i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[32] = ((((((i[30] & !i[29]) & !i[27]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[31] = ((((((((!i[30] & !i[29]) & !i[27]) & !i[25]) & i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[30] = ((((((!i[29] & !i[25]) & !i[14]) & i[13]) & !i[6]) & i[4]) & !i[2]) | ((((!i[14] & i[13]) & !i[5]) & i[4]) & !i[2]);
-	assign out[29] = ((((((((((!i[27] & i[25]) & i[14]) & i[12]) & !i[6]) & i[5]) & !i[2]) | ((((!i[14] & i[13]) & i[12]) & !i[5]) & !i[2])) | (((i[13] & i[6]) & !i[4]) & !i[2])) | ((i[14] & !i[5]) & !i[4])) | (((((!i[25] & !i[14]) & i[13]) & i[12]) & !i[6]) & !i[2])) | ((((((i[27] & i[25]) & i[14]) & i[13]) & !i[6]) & i[5]) & !i[2]);
-	assign out[28] = (i[6] & !i[4]) & !i[2];
-	assign out[27] = (((!i[14] & !i[12]) & i[6]) & !i[4]) & !i[2];
-	assign out[26] = (((!i[14] & i[12]) & i[6]) & !i[4]) & !i[2];
-	assign out[25] = (((i[14] & i[12]) & i[5]) & !i[4]) & !i[2];
-	assign out[24] = (((i[14] & !i[12]) & i[5]) & !i[4]) & !i[2];
-	assign out[23] = i[6] & i[2];
-	assign out[22] = (((!i[13] & !i[12]) & !i[6]) & !i[4]) & !i[2];
-	assign out[21] = ((i[12] & !i[6]) & !i[4]) & !i[2];
-	assign out[20] = (i[13] & !i[6]) & !i[4];
-	assign out[19] = ((((((i[13] & i[6]) & i[4]) | ((i[7] & i[6]) & i[4])) | ((i[8] & i[6]) & i[4])) | ((i[9] & i[6]) & i[4])) | ((i[10] & i[6]) & i[4])) | ((i[11] & i[6]) & i[4]);
-	assign out[18] = (((((((i[15] & i[13]) & i[12]) & i[6]) & i[4]) | ((((i[16] & i[13]) & i[12]) & i[6]) & i[4])) | ((((i[17] & i[13]) & i[12]) & i[6]) & i[4])) | ((((i[18] & i[13]) & i[12]) & i[6]) & i[4])) | ((((i[19] & i[13]) & i[12]) & i[6]) & i[4]);
-	assign out[17] = ((((((i[15] & !i[12]) & i[6]) & i[4]) | (((i[16] & !i[12]) & i[6]) & i[4])) | (((i[17] & !i[12]) & i[6]) & i[4])) | (((i[18] & !i[12]) & i[6]) & i[4])) | (((i[19] & !i[12]) & i[6]) & i[4]);
-	assign out[16] = ((!i[13] & i[12]) & i[6]) & i[4];
-	assign out[15] = (((((((i[14] & !i[13]) & i[6]) & i[4]) | (((i[15] & i[14]) & i[6]) & i[4])) | (((i[16] & i[14]) & i[6]) & i[4])) | (((i[17] & i[14]) & i[6]) & i[4])) | (((i[18] & i[14]) & i[6]) & i[4])) | (((i[19] & i[14]) & i[6]) & i[4]);
-	assign out[14] = ((((((((((!i[5] & i[3]) | (((!i[13] & i[7]) & i[6]) & i[4])) | (((!i[13] & i[8]) & i[6]) & i[4])) | (((!i[13] & i[9]) & i[6]) & i[4])) | (((!i[13] & i[10]) & i[6]) & i[4])) | (((!i[13] & i[11]) & i[6]) & i[4])) | (((i[15] & i[13]) & i[6]) & i[4])) | (((i[16] & i[13]) & i[6]) & i[4])) | (((i[17] & i[13]) & i[6]) & i[4])) | (((i[18] & i[13]) & i[6]) & i[4])) | (((i[19] & i[13]) & i[6]) & i[4]);
-	assign out[13] = ((((((((((((i[12] & !i[5]) & i[3]) | ((((!i[22] & !i[13]) & !i[12]) & i[6]) & i[4])) | (((!i[13] & i[7]) & i[6]) & i[4])) | (((!i[13] & i[8]) & i[6]) & i[4])) | (((!i[13] & i[9]) & i[6]) & i[4])) | (((!i[13] & i[10]) & i[6]) & i[4])) | (((!i[13] & i[11]) & i[6]) & i[4])) | (((i[15] & i[13]) & i[6]) & i[4])) | (((i[16] & i[13]) & i[6]) & i[4])) | (((i[17] & i[13]) & i[6]) & i[4])) | (((i[18] & i[13]) & i[6]) & i[4])) | (((i[19] & i[13]) & i[6]) & i[4]);
-	assign out[12] = ((((!i[22] & i[20]) & !i[13]) & !i[12]) & i[6]) & i[4];
-	assign out[11] = ((((!i[21] & !i[20]) & !i[13]) & !i[12]) & i[6]) & i[4];
-	assign out[10] = (((i[29] & !i[13]) & !i[12]) & i[6]) & i[4];
-	assign out[9] = (((((((((((((((((((((!i[30] & i[27]) & i[24]) & i[20]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2]) | (((((((((i[29] & i[27]) & !i[24]) & i[23]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | (((((((((i[29] & i[27]) & !i[24]) & !i[20]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | (((((((i[27] & !i[25]) & i[13]) & !i[12]) & !i[6]) & i[5]) & i[4]) & !i[2])) | ((((((i[30] & i[27]) & i[13]) & !i[6]) & i[5]) & i[4]) & !i[2])) | (((((((((i[29] & i[27]) & i[22]) & !i[20]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | (((((((((i[29] & i[27]) & !i[21]) & i[20]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | (((((((((i[29] & i[27]) & !i[22]) & i[21]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | (((((((((i[30] & i[29]) & i[27]) & !i[23]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | ((((((((!i[30] & i[27]) & i[23]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | ((((((((!i[30] & !i[29]) & i[27]) & !i[25]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2])) | (((((i[25] & !i[14]) & !i[6]) & i[5]) & i[4]) & !i[2])) | ((((((((i[30] & !i[27]) & i[24]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | (((((i[29] & i[27]) & i[14]) & !i[6]) & i[5]) & !i[2]);
-	assign out[8] = ((((((((!i[27] & i[25]) & !i[14]) & i[13]) & !i[12]) & !i[6]) & i[5]) & i[4]) & !i[2]) | (((((((!i[27] & i[25]) & !i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2]);
-	assign out[7] = ((((((!i[27] & i[25]) & !i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[6] = (((((i[25] & !i[14]) & !i[13]) & !i[12]) & i[5]) & i[4]) & !i[2];
-	assign out[5] = ((((!i[27] & i[25]) & i[14]) & !i[6]) & i[5]) & !i[2];
-	assign out[4] = (((((!i[27] & i[25]) & i[14]) & i[13]) & !i[6]) & i[5]) & !i[2];
-	assign out[3] = !i[5] & i[3];
-	assign out[2] = (i[12] & !i[5]) & i[3];
-	assign out[94] = ((((((((((i[30] & !i[27]) & !i[24]) & !i[22]) & !i[21]) & !i[20]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[93] = (((((((((i[30] & !i[27]) & !i[24]) & !i[22]) & i[20]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[92] = ((((((((i[30] & !i[27]) & !i[24]) & i[21]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[91] = ((((((((i[30] & !i[27]) & i[22]) & !i[20]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[90] = ((((((((i[30] & !i[27]) & i[22]) & i[20]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[89] = (((((((!i[30] & i[29]) & !i[27]) & !i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[88] = (((((((!i[30] & i[29]) & !i[27]) & i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[87] = (((((i[27] & i[25]) & i[14]) & !i[12]) & !i[6]) & i[5]) & !i[2];
-	assign out[86] = (((((i[27] & i[25]) & i[14]) & i[12]) & !i[6]) & i[5]) & !i[2];
-	assign out[85] = ((((((!i[30] & i[27]) & !i[25]) & !i[13]) & !i[12]) & i[5]) & i[4]) & !i[2];
-	assign out[84] = (((((i[30] & i[27]) & !i[13]) & !i[12]) & i[5]) & i[4]) & !i[2];
-	assign out[83] = ((((((!i[30] & i[27]) & !i[25]) & i[13]) & i[12]) & !i[6]) & i[5]) & !i[2];
-	assign out[82] = ((((((i[30] & !i[27]) & !i[14]) & i[12]) & !i[6]) & i[5]) & i[4]) & !i[2];
-	assign out[81] = (((((((i[30] & i[29]) & !i[27]) & i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[78] = ((((((((((((((((((i[30] & !i[27]) & !i[24]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2]) | (((((((!i[30] & i[27]) & i[14]) & i[13]) & i[12]) & !i[6]) & i[5]) & !i[2])) | ((((((((i[30] & i[29]) & !i[27]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | (((((i[27] & !i[13]) & !i[12]) & i[5]) & i[4]) & !i[2])) | ((((((i[30] & i[14]) & !i[13]) & !i[12]) & !i[6]) & i[5]) & !i[2])) | ((((((i[30] & !i[27]) & i[13]) & !i[6]) & i[5]) & i[4]) & !i[2])) | ((((((i[30] & i[29]) & !i[27]) & !i[6]) & i[5]) & i[4]) & !i[2])) | ((((((((((((i[30] & i[29]) & i[24]) & i[23]) & i[22]) & i[21]) & i[20]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | (((((((((((((!i[30] & i[29]) & i[27]) & !i[24]) & !i[23]) & i[22]) & i[21]) & i[20]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | ((((((((((((!i[30] & i[27]) & i[24]) & !i[23]) & !i[22]) & !i[21]) & !i[20]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | ((((((((((((i[30] & i[29]) & i[24]) & i[23]) & !i[22]) & !i[21]) & !i[20]) & i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | (((((i[27] & i[25]) & i[14]) & !i[6]) & i[5]) & !i[2]);
-	assign out[77] = (((((((!i[30] & i[29]) & i[27]) & !i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[76] = ((((((i[30] & !i[29]) & !i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[75] = (((((((i[30] & i[29]) & i[27]) & !i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[74] = (((((((i[30] & !i[29]) & i[27]) & i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[73] = (((((((i[29] & i[27]) & !i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2]) | (((((((i[30] & !i[29]) & i[27]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2]);
-	assign out[72] = (((((((!i[30] & i[27]) & !i[25]) & i[13]) & !i[12]) & !i[6]) & i[5]) & i[4]) & !i[2];
-	assign out[71] = ((((((i[30] & i[27]) & i[13]) & !i[12]) & !i[6]) & i[5]) & i[4]) & !i[2];
-	assign out[70] = ((((((i[27] & !i[25]) & i[13]) & !i[12]) & !i[6]) & i[5]) & i[4]) & !i[2];
-	assign out[69] = ((((((i[27] & i[25]) & !i[14]) & !i[13]) & !i[6]) & i[5]) & i[4]) & !i[2];
-	assign out[68] = (((((i[27] & !i[14]) & i[13]) & i[12]) & !i[6]) & i[5]) & !i[2];
-	assign out[67] = (((((i[27] & !i[14]) & !i[12]) & !i[6]) & i[5]) & i[4]) & !i[2];
-	assign out[66] = (((((i[27] & i[25]) & !i[14]) & !i[6]) & i[5]) & i[4]) & !i[2];
-	assign out[80] = (((((((i[30] & i[29]) & i[27]) & i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[79] = (((((((!i[30] & i[29]) & i[27]) & i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[65] = ((((((((!i[30] & !i[29]) & i[27]) & !i[25]) & !i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[64] = ((((((((!i[30] & !i[29]) & i[27]) & !i[25]) & i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2];
-	assign out[63] = (((((((((((((!i[30] & i[29]) & !i[27]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2]) | (((((((!i[30] & !i[29]) & i[27]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2])) | ((((((i[30] & !i[27]) & i[13]) & !i[6]) & i[5]) & i[4]) & !i[2])) | ((((((i[27] & !i[25]) & !i[13]) & !i[12]) & i[5]) & i[4]) & !i[2])) | ((((((i[30] & i[14]) & !i[13]) & !i[12]) & i[5]) & i[4]) & !i[2])) | ((((((i[29] & !i[27]) & i[12]) & !i[6]) & i[5]) & i[4]) & !i[2])) | ((((((((!i[30] & !i[29]) & i[27]) & !i[25]) & i[12]) & !i[6]) & i[5]) & i[4]) & !i[2])) | ((((((i[29] & i[14]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[2]);
-	assign out[62] = ((((((((((i[30] & !i[27]) & i[24]) & !i[23]) & !i[21]) & !i[20]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[61] = (((((((((i[30] & !i[27]) & i[24]) & !i[23]) & i[20]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[60] = (((((((((i[30] & !i[27]) & i[24]) & !i[23]) & i[21]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[59] = (((((((((i[30] & !i[27]) & i[23]) & !i[21]) & !i[20]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[58] = ((((((((i[30] & !i[27]) & i[23]) & i[20]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[57] = ((((((((i[30] & !i[27]) & i[23]) & i[21]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[56] = (((((((i[30] & !i[27]) & i[24]) & !i[14]) & !i[13]) & i[12]) & !i[5]) & i[4]) & !i[2];
-	assign out[55] = (((((i[30] & i[27]) & i[13]) & i[12]) & !i[6]) & i[5]) & !i[2];
-	assign out[54] = (((((i[30] & i[27]) & i[13]) & i[12]) & !i[6]) & i[5]) & !i[2];
-	assign out[53] = (((((i[29] & !i[14]) & !i[12]) & !i[6]) & i[5]) & i[4]) & !i[2];
-	assign out[52] = (((((i[29] & i[14]) & !i[13]) & !i[12]) & i[5]) & i[4]) & !i[2];
-	assign out[51] = ((((i[29] & i[14]) & i[13]) & !i[6]) & i[5]) & !i[2];
-	assign out[50] = ((((i[29] & !i[12]) & !i[6]) & i[5]) & i[4]) & !i[2];
-	assign out[1] = (((((((((i[28] & i[22]) & !i[13]) & !i[12]) & i[4]) | (((((!i[30] & !i[29]) & !i[27]) & !i[25]) & !i[6]) & i[4])) | ((((((!i[29] & !i[27]) & !i[25]) & !i[13]) & i[12]) & !i[6]) & i[4])) | (((((!i[29] & !i[27]) & !i[25]) & !i[14]) & !i[6]) & i[4])) | ((i[13] & !i[5]) & i[4])) | (i[4] & i[2])) | ((!i[12] & !i[5]) & i[4]);
-	assign out[0] = (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((!i[31] & !i[30]) & !i[29]) & i[28]) & !i[27]) & !i[26]) & !i[25]) & !i[24]) & !i[23]) & i[22]) & !i[21]) & i[20]) & !i[19]) & !i[18]) & !i[17]) & !i[16]) & !i[15]) & !i[14]) & !i[11]) & !i[10]) & !i[9]) & !i[8]) & !i[7]) & i[6]) & i[5]) & i[4]) & !i[3]) & !i[2]) & i[1]) & i[0]) | (((((((((((((((((((((((((((((!i[31] & !i[30]) & i[29]) & i[28]) & !i[27]) & !i[26]) & !i[25]) & !i[24]) & !i[23]) & !i[22]) & i[21]) & !i[20]) & !i[19]) & !i[18]) & !i[17]) & !i[16]) & !i[15]) & !i[14]) & !i[11]) & !i[10]) & !i[9]) & !i[8]) & !i[7]) & i[6]) & i[5]) & i[4]) & !i[3]) & !i[2]) & i[1]) & i[0])) | (((((((((((((((((((((((((((!i[31] & !i[30]) & !i[29]) & !i[28]) & !i[27]) & !i[26]) & !i[25]) & !i[24]) & !i[23]) & !i[22]) & !i[21]) & !i[19]) & !i[18]) & !i[17]) & !i[16]) & !i[15]) & !i[14]) & !i[11]) & !i[10]) & !i[9]) & !i[8]) & !i[7]) & i[5]) & i[4]) & !i[3]) & !i[2]) & i[1]) & i[0])) | (((((((((((((!i[31] & i[29]) & !i[28]) & !i[26]) & !i[25]) & i[24]) & !i[22]) & !i[20]) & !i[6]) & !i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((((((((((!i[31] & i[29]) & !i[28]) & !i[26]) & !i[25]) & i[24]) & !i[22]) & !i[21]) & !i[6]) & !i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((((((((((!i[31] & i[29]) & !i[28]) & !i[26]) & !i[25]) & !i[23]) & !i[22]) & !i[20]) & !i[6]) & !i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((((((((((!i[31] & i[29]) & !i[28]) & !i[26]) & !i[25]) & !i[24]) & !i[23]) & !i[21]) & !i[6]) & !i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((((((((!i[31] & !i[30]) & !i[29]) & !i[28]) & !i[26]) & i[25]) & i[13]) & !i[6]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((((((((!i[31] & !i[30]) & !i[28]) & !i[26]) & !i[25]) & !i[24]) & !i[6]) & !i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | ((((((((((((!i[31] & !i[30]) & !i[28]) & !i[27]) & !i[26]) & !i[25]) & i[14]) & !i[12]) & !i[6]) & i[4]) & !i[3]) & i[1]) & i[0])) | ((((((((((((!i[31] & !i[30]) & !i[28]) & !i[27]) & !i[26]) & !i[25]) & i[13]) & !i[12]) & !i[6]) & i[4]) & !i[3]) & i[1]) & i[0])) | ((((((((((((!i[31] & !i[29]) & !i[28]) & !i[27]) & !i[26]) & !i[25]) & !i[13]) & !i[12]) & !i[6]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((((((((!i[31] & !i[28]) & !i[27]) & !i[26]) & !i[25]) & i[14]) & !i[6]) & !i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | ((((((((((((!i[31] & !i[30]) & !i[29]) & !i[28]) & !i[26]) & !i[13]) & i[12]) & i[5]) & i[4]) & !i[3]) & !i[2]) & i[1]) & i[0])) | (((((((((((!i[31] & !i[30]) & !i[29]) & !i[28]) & !i[26]) & i[14]) & !i[6]) & i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | ((((((((((((!i[31] & i[30]) & !i[28]) & i[27]) & !i[26]) & !i[25]) & !i[13]) & i[12]) & !i[6]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((((((((!i[31] & i[29]) & !i[28]) & i[27]) & !i[26]) & !i[25]) & !i[6]) & !i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((((((((!i[31] & !i[30]) & !i[28]) & !i[27]) & !i[26]) & !i[25]) & !i[6]) & !i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((((((((!i[31] & !i[30]) & !i[29]) & !i[28]) & !i[27]) & !i[26]) & !i[6]) & i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | ((((((((!i[14] & !i[13]) & !i[12]) & i[6]) & i[5]) & !i[4]) & !i[3]) & i[1]) & i[0])) | (((((((((((!i[31] & !i[29]) & !i[28]) & !i[26]) & !i[25]) & i[14]) & !i[6]) & i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | ((((((((((((!i[31] & i[29]) & !i[28]) & !i[26]) & !i[25]) & !i[13]) & i[12]) & i[5]) & i[4]) & !i[3]) & !i[2]) & i[1]) & i[0])) | (((((((i[14] & i[6]) & i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1]) & i[0])) | (((((((!i[14] & !i[13]) & i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1]) & i[0])) | ((((((!i[12] & !i[6]) & !i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((((!i[13] & i[12]) & i[6]) & i[5]) & !i[3]) & !i[2]) & i[1]) & i[0])) | ((((((((((((((((((((((((((((((!i[31] & !i[30]) & !i[29]) & !i[28]) & !i[27]) & !i[26]) & !i[25]) & !i[24]) & !i[23]) & !i[22]) & !i[21]) & !i[20]) & !i[19]) & !i[18]) & !i[17]) & !i[16]) & !i[15]) & !i[14]) & !i[13]) & !i[11]) & !i[10]) & !i[9]) & !i[8]) & !i[7]) & !i[6]) & !i[5]) & !i[4]) & i[3]) & i[2]) & i[1]) & i[0])) | (((((((((((((((((((((((!i[31] & !i[30]) & !i[29]) & !i[28]) & !i[19]) & !i[18]) & !i[17]) & !i[16]) & !i[15]) & !i[14]) & !i[13]) & !i[12]) & !i[11]) & !i[10]) & !i[9]) & !i[8]) & !i[7]) & !i[6]) & !i[5]) & !i[4]) & i[3]) & i[2]) & i[1]) & i[0])) | (((((((i[13] & i[6]) & i[5]) & i[4]) & !i[3]) & !i[2]) & i[1]) & i[0])) | ((((((i[6] & i[5]) & !i[4]) & i[3]) & i[2]) & i[1]) & i[0])) | (((((((!i[14] & !i[12]) & !i[6]) & !i[4]) & !i[3]) & !i[2]) & i[1]) & i[0])) | (((((((!i[13] & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1]) & i[0])) | ((((((i[13] & !i[6]) & !i[5]) & i[4]) & !i[3]) & i[1]) & i[0])) | (((((!i[6] & i[4]) & !i[3]) & i[2]) & i[1]) & i[0]);
-endmodule
-module eb1_dec_gpr_ctl (
-	raddr0,
-	raddr1,
-	wen0,
-	waddr0,
-	wd0,
-	wen1,
-	waddr1,
-	wd1,
-	wen2,
-	waddr2,
-	wd2,
-	clk,
-	rst_l,
-	rd0,
-	rd1,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire [4:0] raddr0;
-	input wire [4:0] raddr1;
-	input wire wen0;
-	input wire [4:0] waddr0;
-	input wire [31:0] wd0;
-	input wire wen1;
-	input wire [4:0] waddr1;
-	input wire [31:0] wd1;
-	input wire wen2;
-	input wire [4:0] waddr2;
-	input wire [31:0] wd2;
-	input wire clk;
-	input wire rst_l;
-	output reg [31:0] rd0;
-	output reg [31:0] rd1;
-	input wire scan_mode;
-	wire [1023:32] gpr_out;
-	reg [1023:32] gpr_in;
-	reg [31:1] w0v;
-	reg [31:1] w1v;
-	reg [31:1] w2v;
-	wire [31:1] gpr_wr_en;
-	assign gpr_wr_en[31:1] = (w0v[31:1] | w1v[31:1]) | w2v[31:1];
-	generate
-		genvar j;
-		for (j = 1; j < 32; j = j + 1) begin : gpr
-			rvdffe #(.WIDTH(32)) gprff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.en(gpr_wr_en[j]),
-				.din(gpr_in[(j * 32) + 31-:32]),
-				.dout(gpr_out[(j * 32) + 31-:32])
-			);
-		end
-	endgenerate
-	function automatic signed [4:0] sv2v_cast_5_signed;
-		input reg signed [4:0] inp;
-		sv2v_cast_5_signed = inp;
-	endfunction
-	always @(*) begin
-		rd0[31:0] = 32'b00000000000000000000000000000000;
-		rd1[31:0] = 32'b00000000000000000000000000000000;
-		w0v[31:1] = 31'b0000000000000000000000000000000;
-		w1v[31:1] = 31'b0000000000000000000000000000000;
-		w2v[31:1] = 31'b0000000000000000000000000000000;
-		gpr_in[32+:992] = {992 {1'sb0}};
-		begin : sv2v_autoblock_39
-			reg signed [31:0] j;
-			for (j = 1; j < 32; j = j + 1)
-				begin
-					rd0[31:0] = rd0[31:0] | ({32 {raddr0[4:0] == sv2v_cast_5_signed(j)}} & gpr_out[(j * 32) + 31-:32]);
-					rd1[31:0] = rd1[31:0] | ({32 {raddr1[4:0] == sv2v_cast_5_signed(j)}} & gpr_out[(j * 32) + 31-:32]);
-				end
-		end
-		begin : sv2v_autoblock_40
-			reg signed [31:0] j;
-			for (j = 1; j < 32; j = j + 1)
-				begin
-					w0v[j] = wen0 & (waddr0[4:0] == sv2v_cast_5_signed(j));
-					w1v[j] = wen1 & (waddr1[4:0] == sv2v_cast_5_signed(j));
-					w2v[j] = wen2 & (waddr2[4:0] == sv2v_cast_5_signed(j));
-					gpr_in[j * 32+:32] = (({32 {w0v[j]}} & wd0[31:0]) | ({32 {w1v[j]}} & wd1[31:0])) | ({32 {w2v[j]}} & wd2[31:0]);
-				end
-		end
-	end
-endmodule
-module eb1_dec_ib_ctl (
-	dbg_cmd_valid,
-	dbg_cmd_write,
-	dbg_cmd_type,
-	dbg_cmd_addr,
-	i0_brp,
-	ifu_i0_bp_index,
-	ifu_i0_bp_fghr,
-	ifu_i0_bp_btag,
-	ifu_i0_fa_index,
-	ifu_i0_pc4,
-	ifu_i0_valid,
-	ifu_i0_icaf,
-	ifu_i0_icaf_type,
-	ifu_i0_icaf_second,
-	ifu_i0_dbecc,
-	ifu_i0_instr,
-	ifu_i0_pc,
-	dec_ib0_valid_d,
-	dec_debug_valid_d,
-	dec_i0_instr_d,
-	dec_i0_pc_d,
-	dec_i0_pc4_d,
-	dec_i0_brp,
-	dec_i0_bp_index,
-	dec_i0_bp_fghr,
-	dec_i0_bp_btag,
-	dec_i0_bp_fa_index,
-	dec_i0_icaf_d,
-	dec_i0_icaf_second_d,
-	dec_i0_icaf_type_d,
-	dec_i0_dbecc_d,
-	dec_debug_wdata_rs1_d,
-	dec_debug_fence_d
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire dbg_cmd_valid;
-	input wire dbg_cmd_write;
-	input wire [1:0] dbg_cmd_type;
-	input wire [31:0] dbg_cmd_addr;
-	input wire [50:0] i0_brp;
-	input wire [pt[2172-:9]:pt[2163-:6]] ifu_i0_bp_index;
-	input wire [pt[2236-:8] - 1:0] ifu_i0_bp_fghr;
-	input wire [pt[2139-:9] - 1:0] ifu_i0_bp_btag;
-	input wire [$clog2(pt[2061-:14]) - 1:0] ifu_i0_fa_index;
-	input wire ifu_i0_pc4;
-	input wire ifu_i0_valid;
-	input wire ifu_i0_icaf;
-	input wire [1:0] ifu_i0_icaf_type;
-	input wire ifu_i0_icaf_second;
-	input wire ifu_i0_dbecc;
-	input wire [31:0] ifu_i0_instr;
-	input wire [31:1] ifu_i0_pc;
-	output wire dec_ib0_valid_d;
-	output wire dec_debug_valid_d;
-	output wire [31:0] dec_i0_instr_d;
-	output wire [31:1] dec_i0_pc_d;
-	output wire dec_i0_pc4_d;
-	output wire [50:0] dec_i0_brp;
-	output wire [pt[2172-:9]:pt[2163-:6]] dec_i0_bp_index;
-	output wire [pt[2236-:8] - 1:0] dec_i0_bp_fghr;
-	output wire [pt[2139-:9] - 1:0] dec_i0_bp_btag;
-	output wire [$clog2(pt[2061-:14]) - 1:0] dec_i0_bp_fa_index;
-	output wire dec_i0_icaf_d;
-	output wire dec_i0_icaf_second_d;
-	output wire [1:0] dec_i0_icaf_type_d;
-	output wire dec_i0_dbecc_d;
-	output wire dec_debug_wdata_rs1_d;
-	output wire dec_debug_fence_d;
-	wire debug_valid;
-	wire [4:0] dreg;
-	wire [11:0] dcsr;
-	wire [31:0] ib0;
-	wire [31:0] ib0_debug_in;
-	wire debug_read;
-	wire debug_write;
-	wire debug_read_gpr;
-	wire debug_write_gpr;
-	wire debug_read_csr;
-	wire debug_write_csr;
-	wire [34:0] ifu_i0_pcdata;
-	wire [34:0] pc0;
-	assign ifu_i0_pcdata[34:0] = {ifu_i0_icaf_second, ifu_i0_dbecc, ifu_i0_icaf, ifu_i0_pc[31:1], ifu_i0_pc4};
-	assign pc0[34:0] = ifu_i0_pcdata[34:0];
-	assign dec_i0_icaf_second_d = pc0[34];
-	assign dec_i0_dbecc_d = pc0[33];
-	assign dec_i0_icaf_d = pc0[32];
-	assign dec_i0_pc_d[31:1] = pc0[31:1];
-	assign dec_i0_pc4_d = pc0[0];
-	assign dec_i0_icaf_type_d[1:0] = ifu_i0_icaf_type[1:0];
-	assign debug_valid = dbg_cmd_valid & (dbg_cmd_type[1:0] != 2'h2);
-	assign debug_read = debug_valid & ~dbg_cmd_write;
-	assign debug_write = debug_valid & dbg_cmd_write;
-	assign debug_read_gpr = debug_read & (dbg_cmd_type[1:0] == 2'h0);
-	assign debug_write_gpr = debug_write & (dbg_cmd_type[1:0] == 2'h0);
-	assign debug_read_csr = debug_read & (dbg_cmd_type[1:0] == 2'h1);
-	assign debug_write_csr = debug_write & (dbg_cmd_type[1:0] == 2'h1);
-	assign dreg[4:0] = dbg_cmd_addr[4:0];
-	assign dcsr[11:0] = dbg_cmd_addr[11:0];
-	assign ib0_debug_in[31:0] = ((({32 {debug_read_gpr}} & {12'b000000000000, dreg[4:0], 15'b110000000110011}) | ({32 {debug_write_gpr}} & {20'b00000000000000000110, dreg[4:0], 7'b0110011})) | ({32 {debug_read_csr}} & {dcsr[11:0], 20'b00000010000001110011})) | ({32 {debug_write_csr}} & {dcsr[11:0], 20'b00000001000001110011});
-	assign dec_debug_wdata_rs1_d = debug_write_gpr | debug_write_csr;
-	assign dec_debug_fence_d = debug_write_csr & (dcsr[11:0] == 12'h7c4);
-	assign ib0[31:0] = (debug_valid ? ib0_debug_in[31:0] : ifu_i0_instr[31:0]);
-	assign dec_ib0_valid_d = ifu_i0_valid | debug_valid;
-	assign dec_debug_valid_d = debug_valid;
-	assign dec_i0_instr_d[31:0] = ib0[31:0];
-	assign dec_i0_brp = i0_brp;
-	assign dec_i0_bp_index = ifu_i0_bp_index;
-	assign dec_i0_bp_fghr = ifu_i0_bp_fghr;
-	assign dec_i0_bp_btag = ifu_i0_bp_btag;
-	assign dec_i0_bp_fa_index = ifu_i0_fa_index;
-endmodule
-module eb1_dec_tlu_ctl (
-	clk,
-	free_clk,
-	free_l2clk,
-	rst_l,
-	scan_mode,
-	rst_vec,
-	nmi_int,
-	nmi_vec,
-	i_cpu_halt_req,
-	i_cpu_run_req,
-	lsu_fastint_stall_any,
-	ifu_pmu_instr_aligned,
-	ifu_pmu_fetch_stall,
-	ifu_pmu_ic_miss,
-	ifu_pmu_ic_hit,
-	ifu_pmu_bus_error,
-	ifu_pmu_bus_busy,
-	ifu_pmu_bus_trxn,
-	dec_pmu_instr_decoded,
-	dec_pmu_decode_stall,
-	dec_pmu_presync_stall,
-	dec_pmu_postsync_stall,
-	lsu_store_stall_any,
-	dma_dccm_stall_any,
-	dma_iccm_stall_any,
-	exu_pmu_i0_br_misp,
-	exu_pmu_i0_br_ataken,
-	exu_pmu_i0_pc4,
-	lsu_pmu_bus_trxn,
-	lsu_pmu_bus_misaligned,
-	lsu_pmu_bus_error,
-	lsu_pmu_bus_busy,
-	lsu_pmu_load_external_m,
-	lsu_pmu_store_external_m,
-	dma_pmu_dccm_read,
-	dma_pmu_dccm_write,
-	dma_pmu_any_read,
-	dma_pmu_any_write,
-	lsu_fir_addr,
-	lsu_fir_error,
-	iccm_dma_sb_error,
-	lsu_error_pkt_r,
-	lsu_single_ecc_error_incr,
-	dec_pause_state,
-	lsu_imprecise_error_store_any,
-	lsu_imprecise_error_load_any,
-	lsu_imprecise_error_addr_any,
-	dec_csr_wen_unq_d,
-	dec_csr_any_unq_d,
-	dec_csr_rdaddr_d,
-	dec_csr_wen_r,
-	dec_csr_wraddr_r,
-	dec_csr_wrdata_r,
-	dec_csr_stall_int_ff,
-	dec_tlu_i0_valid_r,
-	exu_npc_r,
-	dec_tlu_i0_pc_r,
-	dec_tlu_packet_r,
-	dec_illegal_inst,
-	dec_i0_decode_d,
-	exu_i0_br_hist_r,
-	exu_i0_br_error_r,
-	exu_i0_br_start_error_r,
-	exu_i0_br_valid_r,
-	exu_i0_br_mp_r,
-	exu_i0_br_middle_r,
-	exu_i0_br_way_r,
-	dec_tlu_core_empty,
-	dec_dbg_cmd_done,
-	dec_dbg_cmd_fail,
-	dec_tlu_dbg_halted,
-	dec_tlu_debug_mode,
-	dec_tlu_resume_ack,
-	dec_tlu_debug_stall,
-	dec_tlu_flush_noredir_r,
-	dec_tlu_mpc_halted_only,
-	dec_tlu_flush_leak_one_r,
-	dec_tlu_flush_err_r,
-	dec_tlu_flush_extint,
-	dec_tlu_meihap,
-	dbg_halt_req,
-	dbg_resume_req,
-	ifu_miss_state_idle,
-	lsu_idle_any,
-	dec_div_active,
-	trigger_pkt_any,
-	ifu_ic_error_start,
-	ifu_iccm_rd_ecc_single_err,
-	ifu_ic_debug_rd_data,
-	ifu_ic_debug_rd_data_valid,
-	dec_tlu_ic_diag_pkt,
-	pic_claimid,
-	pic_pl,
-	mhwakeup,
-	mexintpend,
-	timer_int,
-	soft_int,
-	o_cpu_halt_status,
-	o_cpu_halt_ack,
-	o_cpu_run_ack,
-	o_debug_mode_status,
-	core_id,
-	mpc_debug_halt_req,
-	mpc_debug_run_req,
-	mpc_reset_run_req,
-	mpc_debug_halt_ack,
-	mpc_debug_run_ack,
-	debug_brkpt_status,
-	dec_tlu_meicurpl,
-	dec_tlu_meipt,
-	dec_csr_rddata_d,
-	dec_csr_legal_d,
-	dec_tlu_br0_r_pkt,
-	dec_tlu_i0_kill_writeb_wb,
-	dec_tlu_flush_lower_wb,
-	dec_tlu_i0_commit_cmt,
-	dec_tlu_i0_kill_writeb_r,
-	dec_tlu_flush_lower_r,
-	dec_tlu_flush_path_r,
-	dec_tlu_fence_i_r,
-	dec_tlu_wr_pause_r,
-	dec_tlu_flush_pause_r,
-	dec_tlu_presync_d,
-	dec_tlu_postsync_d,
-	dec_tlu_mrac_ff,
-	dec_tlu_force_halt,
-	dec_tlu_perfcnt0,
-	dec_tlu_perfcnt1,
-	dec_tlu_perfcnt2,
-	dec_tlu_perfcnt3,
-	dec_tlu_i0_exc_valid_wb1,
-	dec_tlu_i0_valid_wb1,
-	dec_tlu_int_valid_wb1,
-	dec_tlu_exc_cause_wb1,
-	dec_tlu_mtval_wb1,
-	dec_tlu_external_ldfwd_disable,
-	dec_tlu_sideeffect_posted_disable,
-	dec_tlu_core_ecc_disable,
-	dec_tlu_bpred_disable,
-	dec_tlu_wb_coalescing_disable,
-	dec_tlu_pipelining_disable,
-	dec_tlu_trace_disable,
-	dec_tlu_dma_qos_prty,
-	dec_tlu_misc_clk_override,
-	dec_tlu_dec_clk_override,
-	dec_tlu_ifu_clk_override,
-	dec_tlu_lsu_clk_override,
-	dec_tlu_bus_clk_override,
-	dec_tlu_pic_clk_override,
-	dec_tlu_picio_clk_override,
-	dec_tlu_dccm_clk_override,
-	dec_tlu_icm_clk_override
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire free_clk;
-	input wire free_l2clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire [31:1] rst_vec;
-	input wire nmi_int;
-	input wire [31:1] nmi_vec;
-	input wire i_cpu_halt_req;
-	input wire i_cpu_run_req;
-	input wire lsu_fastint_stall_any;
-	input wire ifu_pmu_instr_aligned;
-	input wire ifu_pmu_fetch_stall;
-	input wire ifu_pmu_ic_miss;
-	input wire ifu_pmu_ic_hit;
-	input wire ifu_pmu_bus_error;
-	input wire ifu_pmu_bus_busy;
-	input wire ifu_pmu_bus_trxn;
-	input wire dec_pmu_instr_decoded;
-	input wire dec_pmu_decode_stall;
-	input wire dec_pmu_presync_stall;
-	input wire dec_pmu_postsync_stall;
-	input wire lsu_store_stall_any;
-	input wire dma_dccm_stall_any;
-	input wire dma_iccm_stall_any;
-	input wire exu_pmu_i0_br_misp;
-	input wire exu_pmu_i0_br_ataken;
-	input wire exu_pmu_i0_pc4;
-	input wire lsu_pmu_bus_trxn;
-	input wire lsu_pmu_bus_misaligned;
-	input wire lsu_pmu_bus_error;
-	input wire lsu_pmu_bus_busy;
-	input wire lsu_pmu_load_external_m;
-	input wire lsu_pmu_store_external_m;
-	input wire dma_pmu_dccm_read;
-	input wire dma_pmu_dccm_write;
-	input wire dma_pmu_any_read;
-	input wire dma_pmu_any_write;
-	input wire [31:1] lsu_fir_addr;
-	input wire [1:0] lsu_fir_error;
-	input wire iccm_dma_sb_error;
-	input wire [39:0] lsu_error_pkt_r;
-	input wire lsu_single_ecc_error_incr;
-	input wire dec_pause_state;
-	input wire lsu_imprecise_error_store_any;
-	input wire lsu_imprecise_error_load_any;
-	input wire [31:0] lsu_imprecise_error_addr_any;
-	input wire dec_csr_wen_unq_d;
-	input wire dec_csr_any_unq_d;
-	input wire [11:0] dec_csr_rdaddr_d;
-	input wire dec_csr_wen_r;
-	input wire [11:0] dec_csr_wraddr_r;
-	input wire [31:0] dec_csr_wrdata_r;
-	input wire dec_csr_stall_int_ff;
-	input wire dec_tlu_i0_valid_r;
-	input wire [31:1] exu_npc_r;
-	input wire [31:1] dec_tlu_i0_pc_r;
-	input wire [16:0] dec_tlu_packet_r;
-	input wire [31:0] dec_illegal_inst;
-	input wire dec_i0_decode_d;
-	input wire [1:0] exu_i0_br_hist_r;
-	input wire exu_i0_br_error_r;
-	input wire exu_i0_br_start_error_r;
-	input wire exu_i0_br_valid_r;
-	input wire exu_i0_br_mp_r;
-	input wire exu_i0_br_middle_r;
-	input wire exu_i0_br_way_r;
-	output wire dec_tlu_core_empty;
-	output wire dec_dbg_cmd_done;
-	output wire dec_dbg_cmd_fail;
-	output wire dec_tlu_dbg_halted;
-	output wire dec_tlu_debug_mode;
-	output wire dec_tlu_resume_ack;
-	output wire dec_tlu_debug_stall;
-	output wire dec_tlu_flush_noredir_r;
-	output wire dec_tlu_mpc_halted_only;
-	output wire dec_tlu_flush_leak_one_r;
-	output wire dec_tlu_flush_err_r;
-	output wire dec_tlu_flush_extint;
-	output wire [31:2] dec_tlu_meihap;
-	input wire dbg_halt_req;
-	input wire dbg_resume_req;
-	input wire ifu_miss_state_idle;
-	input wire lsu_idle_any;
-	input wire dec_div_active;
-	output wire [151:0] trigger_pkt_any;
-	input wire ifu_ic_error_start;
-	input wire ifu_iccm_rd_ecc_single_err;
-	input wire [70:0] ifu_ic_debug_rd_data;
-	input wire ifu_ic_debug_rd_data_valid;
-	output wire [89:0] dec_tlu_ic_diag_pkt;
-	input wire [7:0] pic_claimid;
-	input wire [3:0] pic_pl;
-	input wire mhwakeup;
-	input wire mexintpend;
-	input wire timer_int;
-	input wire soft_int;
-	output wire o_cpu_halt_status;
-	output wire o_cpu_halt_ack;
-	output wire o_cpu_run_ack;
-	output wire o_debug_mode_status;
-	input wire [31:4] core_id;
-	input wire mpc_debug_halt_req;
-	input wire mpc_debug_run_req;
-	input wire mpc_reset_run_req;
-	output wire mpc_debug_halt_ack;
-	output wire mpc_debug_run_ack;
-	output wire debug_brkpt_status;
-	output wire [3:0] dec_tlu_meicurpl;
-	output wire [3:0] dec_tlu_meipt;
-	output wire [31:0] dec_csr_rddata_d;
-	output wire dec_csr_legal_d;
-	output wire [6:0] dec_tlu_br0_r_pkt;
-	output wire dec_tlu_i0_kill_writeb_wb;
-	output wire dec_tlu_flush_lower_wb;
-	output wire dec_tlu_i0_commit_cmt;
-	output wire dec_tlu_i0_kill_writeb_r;
-	output wire dec_tlu_flush_lower_r;
-	output wire [31:1] dec_tlu_flush_path_r;
-	output wire dec_tlu_fence_i_r;
-	output wire dec_tlu_wr_pause_r;
-	output wire dec_tlu_flush_pause_r;
-	output wire dec_tlu_presync_d;
-	output wire dec_tlu_postsync_d;
-	output wire [31:0] dec_tlu_mrac_ff;
-	output wire dec_tlu_force_halt;
-	output wire dec_tlu_perfcnt0;
-	output wire dec_tlu_perfcnt1;
-	output wire dec_tlu_perfcnt2;
-	output wire dec_tlu_perfcnt3;
-	output wire dec_tlu_i0_exc_valid_wb1;
-	output wire dec_tlu_i0_valid_wb1;
-	output wire dec_tlu_int_valid_wb1;
-	output wire [4:0] dec_tlu_exc_cause_wb1;
-	output wire [31:0] dec_tlu_mtval_wb1;
-	output wire dec_tlu_external_ldfwd_disable;
-	output wire dec_tlu_sideeffect_posted_disable;
-	output wire dec_tlu_core_ecc_disable;
-	output wire dec_tlu_bpred_disable;
-	output wire dec_tlu_wb_coalescing_disable;
-	output wire dec_tlu_pipelining_disable;
-	output wire dec_tlu_trace_disable;
-	output wire [2:0] dec_tlu_dma_qos_prty;
-	output wire dec_tlu_misc_clk_override;
-	output wire dec_tlu_dec_clk_override;
-	output wire dec_tlu_ifu_clk_override;
-	output wire dec_tlu_lsu_clk_override;
-	output wire dec_tlu_bus_clk_override;
-	output wire dec_tlu_pic_clk_override;
-	output wire dec_tlu_picio_clk_override;
-	output wire dec_tlu_dccm_clk_override;
-	output wire dec_tlu_icm_clk_override;
-	wire clk_override;
-	wire e4e5_int_clk;
-	wire nmi_fir_type;
-	wire nmi_lsu_load_type;
-	wire nmi_lsu_store_type;
-	wire nmi_int_detected_f;
-	wire nmi_lsu_load_type_f;
-	wire nmi_lsu_store_type_f;
-	wire allow_dbg_halt_csr_write;
-	wire dbg_cmd_done_ns;
-	wire i_cpu_run_req_d1_raw;
-	wire debug_mode_status;
-	wire lsu_single_ecc_error_r_d1;
-	wire sel_npc_r;
-	wire sel_npc_resume;
-	wire ce_int;
-	wire nmi_in_debug_mode;
-	wire dpc_capture_npc;
-	wire dpc_capture_pc;
-	wire tdata_load;
-	wire tdata_opcode;
-	wire tdata_action;
-	wire perfcnt_halted;
-	wire tdata_chain;
-	wire tdata_kill_write;
-	wire reset_delayed;
-	wire reset_detect;
-	wire reset_detected;
-	wire wr_mstatus_r;
-	wire wr_mtvec_r;
-	wire wr_mcyclel_r;
-	wire wr_mcycleh_r;
-	wire wr_minstretl_r;
-	wire wr_minstreth_r;
-	wire wr_mscratch_r;
-	wire wr_mepc_r;
-	wire wr_mcause_r;
-	wire wr_mscause_r;
-	wire wr_mtval_r;
-	wire wr_mrac_r;
-	wire wr_meihap_r;
-	wire wr_meicurpl_r;
-	wire wr_meipt_r;
-	wire wr_dcsr_r;
-	wire wr_dpc_r;
-	wire wr_meicidpl_r;
-	wire wr_meivt_r;
-	wire wr_meicpct_r;
-	wire wr_micect_r;
-	wire wr_miccmect_r;
-	wire wr_mfdht_r;
-	wire wr_mfdhs_r;
-	wire wr_mdccmect_r;
-	wire wr_mhpme3_r;
-	wire wr_mhpme4_r;
-	wire wr_mhpme5_r;
-	wire wr_mhpme6_r;
-	wire wr_mpmc_r;
-	wire [1:1] mpmc_b_ns;
-	wire [1:1] mpmc;
-	wire [1:1] mpmc_b;
-	wire set_mie_pmu_fw_halt;
-	wire fw_halted_ns;
-	wire fw_halted;
-	wire wr_mcountinhibit_r;
-	wire [6:0] mcountinhibit;
-	wire wr_mtsel_r;
-	wire wr_mtdata1_t0_r;
-	wire wr_mtdata1_t1_r;
-	wire wr_mtdata1_t2_r;
-	wire wr_mtdata1_t3_r;
-	wire wr_mtdata2_t0_r;
-	wire wr_mtdata2_t1_r;
-	wire wr_mtdata2_t2_r;
-	wire wr_mtdata2_t3_r;
-	wire [31:0] mtdata2_t0;
-	wire [31:0] mtdata2_t1;
-	wire [31:0] mtdata2_t2;
-	wire [31:0] mtdata2_t3;
-	wire [31:0] mtdata2_tsel_out;
-	wire [31:0] mtdata1_tsel_out;
-	wire [9:0] mtdata1_t0_ns;
-	wire [9:0] mtdata1_t0;
-	wire [9:0] mtdata1_t1_ns;
-	wire [9:0] mtdata1_t1;
-	wire [9:0] mtdata1_t2_ns;
-	wire [9:0] mtdata1_t2;
-	wire [9:0] mtdata1_t3_ns;
-	wire [9:0] mtdata1_t3;
-	wire [9:0] tdata_wrdata_r;
-	wire [1:0] mtsel_ns;
-	wire [1:0] mtsel;
-	wire tlu_i0_kill_writeb_r;
-	wire [1:0] mstatus_ns;
-	wire [1:0] mstatus;
-	wire [1:0] mfdhs_ns;
-	wire [1:0] mfdhs;
-	wire [31:0] force_halt_ctr;
-	wire [31:0] force_halt_ctr_f;
-	wire force_halt;
-	wire [5:0] mfdht;
-	wire [5:0] mfdht_ns;
-	wire mstatus_mie_ns;
-	wire [30:0] mtvec_ns;
-	wire [30:0] mtvec;
-	wire [15:2] dcsr_ns;
-	wire [15:2] dcsr;
-	wire [5:0] mip_ns;
-	wire [5:0] mip;
-	wire [5:0] mie_ns;
-	wire [5:0] mie;
-	wire [31:0] mcyclel_ns;
-	wire [31:0] mcyclel;
-	wire [31:0] mcycleh_ns;
-	wire [31:0] mcycleh;
-	wire [31:0] minstretl_ns;
-	wire [31:0] minstretl;
-	wire [31:0] minstreth_ns;
-	wire [31:0] minstreth;
-	wire [31:0] micect_ns;
-	wire [31:0] micect;
-	wire [31:0] miccmect_ns;
-	wire [31:0] miccmect;
-	wire [31:0] mdccmect_ns;
-	wire [31:0] mdccmect;
-	wire [26:0] micect_inc;
-	wire [26:0] miccmect_inc;
-	wire [26:0] mdccmect_inc;
-	wire [31:0] mscratch;
-	wire [31:0] mhpmc3;
-	wire [31:0] mhpmc3_ns;
-	wire [31:0] mhpmc4;
-	wire [31:0] mhpmc4_ns;
-	wire [31:0] mhpmc5;
-	wire [31:0] mhpmc5_ns;
-	wire [31:0] mhpmc6;
-	wire [31:0] mhpmc6_ns;
-	wire [31:0] mhpmc3h;
-	wire [31:0] mhpmc3h_ns;
-	wire [31:0] mhpmc4h;
-	wire [31:0] mhpmc4h_ns;
-	wire [31:0] mhpmc5h;
-	wire [31:0] mhpmc5h_ns;
-	wire [31:0] mhpmc6h;
-	wire [31:0] mhpmc6h_ns;
-	wire [9:0] mhpme3;
-	wire [9:0] mhpme4;
-	wire [9:0] mhpme5;
-	wire [9:0] mhpme6;
-	wire [31:0] mrac;
-	wire [9:2] meihap;
-	wire [31:10] meivt;
-	wire [3:0] meicurpl_ns;
-	wire [3:0] meicurpl;
-	wire [3:0] meicidpl_ns;
-	wire [3:0] meicidpl;
-	wire [3:0] meipt_ns;
-	wire [3:0] meipt;
-	wire [31:0] mdseac;
-	wire mdseac_locked_ns;
-	wire mdseac_locked_f;
-	wire mdseac_en;
-	wire nmi_lsu_detected;
-	wire [31:1] mepc_ns;
-	wire [31:1] mepc;
-	wire [31:1] dpc_ns;
-	wire [31:1] dpc;
-	wire [31:0] mcause_ns;
-	wire [31:0] mcause;
-	wire [3:0] mscause_ns;
-	wire [3:0] mscause;
-	wire [3:0] mscause_type;
-	wire [31:0] mtval_ns;
-	wire [31:0] mtval;
-	wire dec_pause_state_f;
-	wire dec_tlu_wr_pause_r_d1;
-	wire pause_expired_r;
-	wire pause_expired_wb;
-	wire tlu_flush_lower_r;
-	wire tlu_flush_lower_r_d1;
-	wire [31:1] tlu_flush_path_r;
-	wire [31:1] tlu_flush_path_r_d1;
-	wire i0_valid_wb;
-	wire tlu_i0_commit_cmt;
-	wire [31:1] vectored_path;
-	wire [31:1] interrupt_path;
-	wire [16:0] dicawics_ns;
-	wire [16:0] dicawics;
-	wire wr_dicawics_r;
-	wire wr_dicad0_r;
-	wire wr_dicad1_r;
-	wire wr_dicad0h_r;
-	wire [31:0] dicad0_ns;
-	wire [31:0] dicad0;
-	wire [31:0] dicad0h_ns;
-	wire [31:0] dicad0h;
-	wire [6:0] dicad1_ns;
-	wire [6:0] dicad1_raw;
-	wire [31:0] dicad1;
-	wire ebreak_r;
-	wire ebreak_to_debug_mode_r;
-	wire ecall_r;
-	wire illegal_r;
-	wire mret_r;
-	wire inst_acc_r;
-	wire fence_i_r;
-	wire ic_perr_r;
-	wire iccm_sbecc_r;
-	wire ebreak_to_debug_mode_r_d1;
-	wire kill_ebreak_count_r;
-	wire inst_acc_second_r;
-	wire ce_int_ready;
-	wire ext_int_ready;
-	wire timer_int_ready;
-	wire soft_int_ready;
-	wire int_timer0_int_ready;
-	wire int_timer1_int_ready;
-	wire mhwakeup_ready;
-	wire take_ext_int;
-	wire take_ce_int;
-	wire take_timer_int;
-	wire take_soft_int;
-	wire take_int_timer0_int;
-	wire take_int_timer1_int;
-	wire take_nmi;
-	wire take_nmi_r_d1;
-	wire int_timer0_int_possible;
-	wire int_timer1_int_possible;
-	wire i0_exception_valid_r;
-	wire interrupt_valid_r;
-	wire i0_exception_valid_r_d1;
-	wire interrupt_valid_r_d1;
-	wire exc_or_int_valid_r;
-	wire exc_or_int_valid_r_d1;
-	wire mdccme_ce_req;
-	wire miccme_ce_req;
-	wire mice_ce_req;
-	wire synchronous_flush_r;
-	wire [4:0] exc_cause_r;
-	wire [4:0] exc_cause_wb;
-	wire mcyclel_cout;
-	wire mcyclel_cout_f;
-	wire mcyclela_cout;
-	wire [31:0] mcyclel_inc;
-	wire [31:0] mcycleh_inc;
-	wire minstretl_cout;
-	wire minstretl_cout_f;
-	wire minstret_enable;
-	wire minstretl_cout_ns;
-	wire minstretl_couta;
-	wire [31:0] minstretl_inc;
-	wire [31:0] minstretl_read;
-	wire [31:0] minstreth_inc;
-	wire [31:0] minstreth_read;
-	wire [31:1] pc_r;
-	wire [31:1] pc_r_d1;
-	wire [31:1] npc_r;
-	wire [31:1] npc_r_d1;
-	wire valid_csr;
-	wire rfpc_i0_r;
-	wire lsu_i0_rfnpc_r;
-	wire dec_tlu_br0_error_r;
-	wire dec_tlu_br0_start_error_r;
-	wire dec_tlu_br0_v_r;
-	wire lsu_i0_exc_r;
-	wire lsu_i0_exc_r_raw;
-	wire lsu_exc_ma_r;
-	wire lsu_exc_acc_r;
-	wire lsu_exc_st_r;
-	wire lsu_exc_valid_r;
-	wire lsu_exc_valid_r_raw;
-	wire lsu_exc_valid_r_d1;
-	wire lsu_i0_exc_r_d1;
-	wire block_interrupts;
-	wire i0_trigger_eval_r;
-	wire request_debug_mode_r;
-	wire request_debug_mode_r_d1;
-	wire request_debug_mode_done;
-	wire request_debug_mode_done_f;
-	wire take_halt;
-	wire halt_taken;
-	wire halt_taken_f;
-	wire internal_dbg_halt_mode;
-	wire dbg_tlu_halted_f;
-	wire take_reset;
-	wire dbg_tlu_halted;
-	wire core_empty;
-	wire lsu_idle_any_f;
-	wire ifu_miss_state_idle_f;
-	wire resume_ack_ns;
-	wire debug_halt_req_f;
-	wire debug_resume_req_f_raw;
-	wire debug_resume_req_f;
-	wire enter_debug_halt_req;
-	wire dcsr_single_step_done;
-	wire dcsr_single_step_done_f;
-	wire debug_halt_req_d1;
-	wire debug_halt_req_ns;
-	wire dcsr_single_step_running;
-	wire dcsr_single_step_running_f;
-	wire internal_dbg_halt_timers;
-	wire [3:0] i0_trigger_r;
-	wire [3:0] trigger_action;
-	wire [3:0] trigger_enabled;
-	wire [3:0] i0_trigger_chain_masked_r;
-	wire i0_trigger_hit_r;
-	wire i0_trigger_hit_raw_r;
-	wire i0_trigger_action_r;
-	wire trigger_hit_r_d1;
-	wire mepc_trigger_hit_sel_pc_r;
-	wire [3:0] update_hit_bit_r;
-	wire [3:0] i0_iside_trigger_has_pri_r;
-	wire [3:0] i0trigger_qual_r;
-	wire [3:0] i0_lsu_trigger_has_pri_r;
-	wire cpu_halt_status;
-	wire cpu_halt_ack;
-	wire cpu_run_ack;
-	wire ext_halt_pulse;
-	wire i_cpu_halt_req_d1;
-	wire i_cpu_run_req_d1;
-	wire inst_acc_r_raw;
-	wire trigger_hit_dmode_r;
-	wire trigger_hit_dmode_r_d1;
-	wire [9:0] mcgc;
-	wire [9:0] mcgc_ns;
-	wire [9:0] mcgc_int;
-	wire [18:0] mfdc;
-	wire i_cpu_halt_req_sync_qual;
-	wire i_cpu_run_req_sync_qual;
-	wire pmu_fw_halt_req_ns;
-	wire pmu_fw_halt_req_f;
-	wire int_timer_stalled;
-	wire fw_halt_req;
-	wire enter_pmu_fw_halt_req;
-	wire pmu_fw_tlu_halted;
-	wire pmu_fw_tlu_halted_f;
-	wire internal_pmu_fw_halt_mode;
-	wire internal_pmu_fw_halt_mode_f;
-	wire int_timer0_int_hold;
-	wire int_timer1_int_hold;
-	wire int_timer0_int_hold_f;
-	wire int_timer1_int_hold_f;
-	wire nmi_int_delayed;
-	wire nmi_int_detected;
-	wire [3:0] trigger_execute;
-	wire [3:0] trigger_data;
-	wire [3:0] trigger_store;
-	wire dec_tlu_pmu_fw_halted;
-	wire mpc_run_state_ns;
-	wire debug_brkpt_status_ns;
-	wire mpc_debug_halt_ack_ns;
-	wire mpc_debug_run_ack_ns;
-	wire dbg_halt_state_ns;
-	wire dbg_run_state_ns;
-	wire dbg_halt_state_f;
-	wire mpc_debug_halt_req_sync_f;
-	wire mpc_debug_run_req_sync_f;
-	wire mpc_halt_state_f;
-	wire mpc_halt_state_ns;
-	wire mpc_run_state_f;
-	wire debug_brkpt_status_f;
-	wire mpc_debug_halt_ack_f;
-	wire mpc_debug_run_ack_f;
-	wire dbg_run_state_f;
-	wire mpc_debug_halt_req_sync_pulse;
-	wire mpc_debug_run_req_sync_pulse;
-	wire debug_brkpt_valid;
-	wire debug_halt_req;
-	wire debug_resume_req;
-	wire dec_tlu_mpc_halted_only_ns;
-	wire take_ext_int_start;
-	wire ext_int_freeze;
-	wire take_ext_int_start_d1;
-	wire take_ext_int_start_d2;
-	wire take_ext_int_start_d3;
-	wire ext_int_freeze_d1;
-	wire csr_meicpct;
-	wire ignore_ext_int_due_to_lsu_stall;
-	wire mcause_sel_nmi_store;
-	wire mcause_sel_nmi_load;
-	wire mcause_sel_nmi_ext;
-	wire fast_int_meicpct;
-	wire [1:0] mcause_fir_error_type;
-	wire dbg_halt_req_held_ns;
-	wire dbg_halt_req_held;
-	wire dbg_halt_req_final;
-	wire iccm_repair_state_ns;
-	wire iccm_repair_state_d1;
-	wire iccm_repair_state_rfnpc;
-	wire [31:0] dec_timer_rddata_d;
-	wire dec_timer_read_d;
-	wire dec_timer_t0_pulse;
-	wire dec_timer_t1_pulse;
-	wire csr_mitctl0;
-	wire csr_mitctl1;
-	wire csr_mitb0;
-	wire csr_mitb1;
-	wire csr_mitcnt0;
-	wire csr_mitcnt1;
-	wire nmi_int_sync;
-	wire timer_int_sync;
-	wire soft_int_sync;
-	wire i_cpu_halt_req_sync;
-	wire i_cpu_run_req_sync;
-	wire mpc_debug_halt_req_sync;
-	wire mpc_debug_run_req_sync;
-	wire mpc_debug_halt_req_sync_raw;
-	wire csr_wr_clk;
-	wire e4e5_clk;
-	wire e4_valid;
-	wire e5_valid;
-	wire e4e5_valid;
-	wire internal_dbg_halt_mode_f;
-	wire internal_dbg_halt_mode_f2;
-	wire lsu_pmu_load_external_r;
-	wire lsu_pmu_store_external_r;
-	wire dec_tlu_flush_noredir_r_d1;
-	wire dec_tlu_flush_pause_r_d1;
-	wire lsu_single_ecc_error_r;
-	wire [31:0] lsu_error_pkt_addr_r;
-	wire mcyclel_cout_in;
-	wire i0_valid_no_ebreak_ecall_r;
-	wire minstret_enable_f;
-	wire sel_exu_npc_r;
-	wire sel_flush_npc_r;
-	wire sel_hold_npc_r;
-	wire pc0_valid_r;
-	wire [15:0] mfdc_int;
-	wire [15:0] mfdc_ns;
-	wire [31:0] mrac_in;
-	wire [31:27] csr_sat;
-	wire [8:6] dcsr_cause;
-	wire enter_debug_halt_req_le;
-	wire dcsr_cause_upgradeable;
-	wire icache_rd_valid;
-	wire icache_wr_valid;
-	wire icache_rd_valid_f;
-	wire icache_wr_valid_f;
-	wire [3:0] mhpmc_inc_r;
-	wire [3:0] mhpmc_inc_r_d1;
-	wire [39:0] mhpme_vec;
-	wire mhpmc3_wr_en0;
-	wire mhpmc3_wr_en1;
-	wire mhpmc3_wr_en;
-	wire mhpmc4_wr_en0;
-	wire mhpmc4_wr_en1;
-	wire mhpmc4_wr_en;
-	wire mhpmc5_wr_en0;
-	wire mhpmc5_wr_en1;
-	wire mhpmc5_wr_en;
-	wire mhpmc6_wr_en0;
-	wire mhpmc6_wr_en1;
-	wire mhpmc6_wr_en;
-	wire mhpmc3h_wr_en0;
-	wire mhpmc3h_wr_en;
-	wire mhpmc4h_wr_en0;
-	wire mhpmc4h_wr_en;
-	wire mhpmc5h_wr_en0;
-	wire mhpmc5h_wr_en;
-	wire mhpmc6h_wr_en0;
-	wire mhpmc6h_wr_en;
-	wire [63:0] mhpmc3_incr;
-	wire [63:0] mhpmc4_incr;
-	wire [63:0] mhpmc5_incr;
-	wire [63:0] mhpmc6_incr;
-	wire perfcnt_halted_d1;
-	wire zero_event_r;
-	wire [3:0] perfcnt_during_sleep;
-	wire [9:0] event_r;
-	wire [3:0] pmu_i0_itype_qual;
-	wire csr_mfdht;
-	wire csr_mfdhs;
-	wire csr_misa;
-	wire csr_mvendorid;
-	wire csr_marchid;
-	wire csr_mimpid;
-	wire csr_mhartid;
-	wire csr_mstatus;
-	wire csr_mtvec;
-	wire csr_mip;
-	wire csr_mie;
-	wire csr_mcyclel;
-	wire csr_mcycleh;
-	wire csr_minstretl;
-	wire csr_minstreth;
-	wire csr_mscratch;
-	wire csr_mepc;
-	wire csr_mcause;
-	wire csr_mscause;
-	wire csr_mtval;
-	wire csr_mrac;
-	wire csr_dmst;
-	wire csr_mdseac;
-	wire csr_meihap;
-	wire csr_meivt;
-	wire csr_meipt;
-	wire csr_meicurpl;
-	wire csr_meicidpl;
-	wire csr_dcsr;
-	wire csr_mcgc;
-	wire csr_mfdc;
-	wire csr_dpc;
-	wire csr_mtsel;
-	wire csr_mtdata1;
-	wire csr_mtdata2;
-	wire csr_mhpmc3;
-	wire csr_mhpmc4;
-	wire csr_mhpmc5;
-	wire csr_mhpmc6;
-	wire csr_mhpmc3h;
-	wire csr_mhpmc4h;
-	wire csr_mhpmc5h;
-	wire csr_mhpmc6h;
-	wire csr_mhpme3;
-	wire csr_mhpme4;
-	wire csr_mhpme5;
-	wire csr_mhpme6;
-	wire csr_mcountinhibit;
-	wire csr_mpmc;
-	wire csr_micect;
-	wire csr_miccmect;
-	wire csr_mdccmect;
-	wire csr_dicawics;
-	wire csr_dicad0h;
-	wire csr_dicad0;
-	wire csr_dicad1;
-	wire csr_dicago;
-	wire presync;
-	wire postsync;
-	wire legal;
-	wire dec_csr_wen_r_mod;
-	wire flush_clkvalid;
-	wire sel_fir_addr;
-	wire wr_mie_r;
-	wire mtval_capture_pc_r;
-	wire mtval_capture_pc_plus2_r;
-	wire mtval_capture_inst_r;
-	wire mtval_capture_lsu_r;
-	wire mtval_clear_r;
-	wire wr_mcgc_r;
-	wire wr_mfdc_r;
-	wire wr_mdeau_r;
-	wire trigger_hit_for_dscr_cause_r_d1;
-	wire conditionally_illegal;
-	wire [3:0] ifu_mscause;
-	wire ifu_ic_error_start_f;
-	wire ifu_iccm_rd_ecc_single_err_f;
-	eb1_dec_timer_ctl #(.pt(pt)) int_timers(
-		.clk(clk),
-		.free_l2clk(free_l2clk),
-		.csr_wr_clk(csr_wr_clk),
-		.rst_l(rst_l),
-		.dec_csr_wen_r_mod(dec_csr_wen_r_mod),
-		.dec_csr_wraddr_r(dec_csr_wraddr_r),
-		.dec_csr_wrdata_r(dec_csr_wrdata_r),
-		.csr_mitctl0(csr_mitctl0),
-		.csr_mitctl1(csr_mitctl1),
-		.csr_mitb0(csr_mitb0),
-		.csr_mitb1(csr_mitb1),
-		.csr_mitcnt0(csr_mitcnt0),
-		.csr_mitcnt1(csr_mitcnt1),
-		.dec_pause_state(dec_pause_state),
-		.dec_tlu_pmu_fw_halted(dec_tlu_pmu_fw_halted),
-		.internal_dbg_halt_timers(internal_dbg_halt_timers),
-		.dec_timer_rddata_d(dec_timer_rddata_d),
-		.dec_timer_read_d(dec_timer_read_d),
-		.dec_timer_t0_pulse(dec_timer_t0_pulse),
-		.dec_timer_t1_pulse(dec_timer_t1_pulse),
-		.scan_mode(scan_mode)
-	);
-	assign clk_override = dec_tlu_dec_clk_override;
-	rvsyncss #(.WIDTH(7)) syncro_ff(
-		.rst_l(rst_l),
-		.clk(free_clk),
-		.din({nmi_int, timer_int, soft_int, i_cpu_halt_req, i_cpu_run_req, mpc_debug_halt_req, mpc_debug_run_req}),
-		.dout({nmi_int_sync, timer_int_sync, soft_int_sync, i_cpu_halt_req_sync, i_cpu_run_req_sync, mpc_debug_halt_req_sync_raw, mpc_debug_run_req_sync})
-	);
-	rvoclkhdr csrwr_r_cgc(
-		.en(dec_csr_wen_r_mod | clk_override),
-		.l1clk(csr_wr_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	assign e4_valid = dec_tlu_i0_valid_r;
-	assign e4e5_valid = e4_valid | e5_valid;
-	assign flush_clkvalid = ((((((((internal_dbg_halt_mode_f | i_cpu_run_req_d1) | interrupt_valid_r) | interrupt_valid_r_d1) | reset_delayed) | pause_expired_r) | pause_expired_wb) | ic_perr_r) | iccm_sbecc_r) | clk_override;
-	rvoclkhdr e4e5_cgc(
-		.en(e4e5_valid | clk_override),
-		.l1clk(e4e5_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr e4e5_int_cgc(
-		.en(e4e5_valid | flush_clkvalid),
-		.l1clk(e4e5_int_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvdffie #(.WIDTH(11)) freeff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.din({ifu_ic_error_start, ifu_iccm_rd_ecc_single_err, iccm_repair_state_ns, e4_valid, internal_dbg_halt_mode, lsu_pmu_load_external_m, lsu_pmu_store_external_m, tlu_flush_lower_r, tlu_i0_kill_writeb_r, internal_dbg_halt_mode_f, force_halt}),
-		.dout({ifu_ic_error_start_f, ifu_iccm_rd_ecc_single_err_f, iccm_repair_state_d1, e5_valid, internal_dbg_halt_mode_f, lsu_pmu_load_external_r, lsu_pmu_store_external_r, tlu_flush_lower_r_d1, dec_tlu_i0_kill_writeb_wb, internal_dbg_halt_mode_f2, dec_tlu_force_halt})
-	);
-	assign dec_tlu_i0_kill_writeb_r = tlu_i0_kill_writeb_r;
-	assign nmi_int_detected = (((nmi_int_sync & ~nmi_int_delayed) | nmi_lsu_detected) | (nmi_int_detected_f & ~take_nmi_r_d1)) | nmi_fir_type;
-	assign nmi_lsu_load_type = ((nmi_lsu_detected & lsu_imprecise_error_load_any) & ~(nmi_int_detected_f & ~take_nmi_r_d1)) | (nmi_lsu_load_type_f & ~take_nmi_r_d1);
-	assign nmi_lsu_store_type = ((nmi_lsu_detected & lsu_imprecise_error_store_any) & ~(nmi_int_detected_f & ~take_nmi_r_d1)) | (nmi_lsu_store_type_f & ~take_nmi_r_d1);
-	assign nmi_fir_type = (~nmi_int_detected_f & take_ext_int_start_d3) & |lsu_fir_error[1:0];
-	assign nmi_lsu_detected = (~mdseac_locked_f & (lsu_imprecise_error_load_any | lsu_imprecise_error_store_any)) & ~nmi_fir_type;
-	localparam MSTATUS_MIE = 0;
-	localparam MIP_MCEIP = 5;
-	localparam MIP_MITIP0 = 4;
-	localparam MIP_MITIP1 = 3;
-	localparam MIP_MEIP = 2;
-	localparam MIP_MTIP = 1;
-	localparam MIP_MSIP = 0;
-	localparam MIE_MCEIE = 5;
-	localparam MIE_MITIE0 = 4;
-	localparam MIE_MITIE1 = 3;
-	localparam MIE_MEIE = 2;
-	localparam MIE_MTIE = 1;
-	localparam MIE_MSIE = 0;
-	localparam DCSR_EBREAKM = 15;
-	localparam DCSR_STEPIE = 11;
-	localparam DCSR_STOPC = 10;
-	localparam DCSR_STEP = 2;
-	assign reset_delayed = reset_detect ^ reset_detected;
-	assign mpc_debug_halt_req_sync = mpc_debug_halt_req_sync_raw & ~ext_int_freeze_d1;
-	rvdffie #(.WIDTH(16)) mpvhalt_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.din({1'b1, reset_detect, nmi_int_sync, nmi_int_detected, nmi_lsu_load_type, nmi_lsu_store_type, mpc_debug_halt_req_sync, mpc_debug_run_req_sync, mpc_halt_state_ns, mpc_run_state_ns, debug_brkpt_status_ns, mpc_debug_halt_ack_ns, mpc_debug_run_ack_ns, dbg_halt_state_ns, dbg_run_state_ns, dec_tlu_mpc_halted_only_ns}),
-		.dout({reset_detect, reset_detected, nmi_int_delayed, nmi_int_detected_f, nmi_lsu_load_type_f, nmi_lsu_store_type_f, mpc_debug_halt_req_sync_f, mpc_debug_run_req_sync_f, mpc_halt_state_f, mpc_run_state_f, debug_brkpt_status_f, mpc_debug_halt_ack_f, mpc_debug_run_ack_f, dbg_halt_state_f, dbg_run_state_f, dec_tlu_mpc_halted_only})
-	);
-	assign mpc_debug_halt_req_sync_pulse = mpc_debug_halt_req_sync & ~mpc_debug_halt_req_sync_f;
-	assign mpc_debug_run_req_sync_pulse = mpc_debug_run_req_sync & ~mpc_debug_run_req_sync_f;
-	assign mpc_halt_state_ns = ((mpc_halt_state_f | mpc_debug_halt_req_sync_pulse) | (reset_delayed & ~mpc_reset_run_req)) & ~mpc_debug_run_req_sync;
-	assign mpc_run_state_ns = (mpc_run_state_f | (mpc_debug_run_req_sync_pulse & ~mpc_debug_run_ack_f)) & (internal_dbg_halt_mode_f & ~dcsr_single_step_running_f);
-	assign dbg_halt_state_ns = (dbg_halt_state_f | (((dbg_halt_req_final | dcsr_single_step_done_f) | trigger_hit_dmode_r_d1) | ebreak_to_debug_mode_r_d1)) & ~dbg_resume_req;
-	assign dbg_run_state_ns = (dbg_run_state_f | dbg_resume_req) & (internal_dbg_halt_mode_f & ~dcsr_single_step_running_f);
-	assign dec_tlu_mpc_halted_only_ns = ~dbg_halt_state_f & mpc_halt_state_f;
-	assign debug_brkpt_valid = ebreak_to_debug_mode_r_d1 | trigger_hit_dmode_r_d1;
-	assign debug_brkpt_status_ns = (debug_brkpt_valid | debug_brkpt_status_f) & (internal_dbg_halt_mode & ~dcsr_single_step_running_f);
-	assign mpc_debug_halt_ack_ns = ((mpc_halt_state_f & internal_dbg_halt_mode_f) & mpc_debug_halt_req_sync) & core_empty;
-	assign mpc_debug_run_ack_ns = ((mpc_debug_run_req_sync & ~dbg_halt_state_ns) & ~mpc_debug_halt_req_sync) | (mpc_debug_run_ack_f & mpc_debug_run_req_sync);
-	assign mpc_debug_halt_ack = mpc_debug_halt_ack_f;
-	assign mpc_debug_run_ack = mpc_debug_run_ack_f;
-	assign debug_brkpt_status = debug_brkpt_status_f;
-	assign dbg_halt_req_held_ns = (dbg_halt_req | dbg_halt_req_held) & ext_int_freeze_d1;
-	assign dbg_halt_req_final = (dbg_halt_req | dbg_halt_req_held) & ~ext_int_freeze_d1;
-	assign debug_halt_req = (((dbg_halt_req_final | mpc_debug_halt_req_sync) | (reset_delayed & ~mpc_reset_run_req)) & ~internal_dbg_halt_mode_f) & ~ext_int_freeze_d1;
-	assign debug_resume_req = ~debug_resume_req_f & ((mpc_run_state_ns & ~dbg_halt_state_ns) | (dbg_run_state_ns & ~mpc_halt_state_ns));
-	assign take_halt = (((((debug_halt_req_f | pmu_fw_halt_req_f) & ~synchronous_flush_r) & ~mret_r) & ~halt_taken_f) & ~dec_tlu_flush_noredir_r_d1) & ~take_reset;
-	assign halt_taken = ((dec_tlu_flush_noredir_r_d1 & ~dec_tlu_flush_pause_r_d1) & ~take_ext_int_start_d1) | (((halt_taken_f & ~dbg_tlu_halted_f) & ~pmu_fw_tlu_halted_f) & ~interrupt_valid_r_d1);
-	assign core_empty = force_halt | ((((((lsu_idle_any & lsu_idle_any_f) & ifu_miss_state_idle) & ifu_miss_state_idle_f) & ~debug_halt_req) & ~debug_halt_req_d1) & ~dec_div_active);
-	assign dec_tlu_core_empty = core_empty;
-	assign enter_debug_halt_req = (((~internal_dbg_halt_mode_f & debug_halt_req) | dcsr_single_step_done_f) | trigger_hit_dmode_r_d1) | ebreak_to_debug_mode_r_d1;
-	assign internal_dbg_halt_mode = debug_halt_req_ns | (internal_dbg_halt_mode_f & ~(debug_resume_req_f & ~dcsr[DCSR_STEP]));
-	assign allow_dbg_halt_csr_write = internal_dbg_halt_mode_f & ~dcsr_single_step_running_f;
-	assign debug_halt_req_ns = enter_debug_halt_req | (debug_halt_req_f & ~dbg_tlu_halted);
-	assign dbg_tlu_halted = ((debug_halt_req_f & core_empty) & halt_taken) | (dbg_tlu_halted_f & ~debug_resume_req_f);
-	assign resume_ack_ns = (debug_resume_req_f & dbg_tlu_halted_f) & dbg_run_state_ns;
-	assign dcsr_single_step_done = ((dec_tlu_i0_valid_r & ~dec_tlu_dbg_halted) & dcsr[DCSR_STEP]) & ~rfpc_i0_r;
-	assign dcsr_single_step_running = (debug_resume_req_f & dcsr[DCSR_STEP]) | (dcsr_single_step_running_f & ~dcsr_single_step_done_f);
-	assign dbg_cmd_done_ns = dec_tlu_i0_valid_r & dec_tlu_dbg_halted;
-	assign request_debug_mode_r = (trigger_hit_dmode_r | ebreak_to_debug_mode_r) | (request_debug_mode_r_d1 & ~dec_tlu_flush_lower_wb);
-	assign request_debug_mode_done = (request_debug_mode_r_d1 | request_debug_mode_done_f) & ~dbg_tlu_halted_f;
-	rvdffie #(.WIDTH(18)) halt_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.din({dec_tlu_flush_noredir_r, halt_taken, lsu_idle_any, ifu_miss_state_idle, dbg_tlu_halted, resume_ack_ns, debug_halt_req_ns, debug_resume_req, trigger_hit_dmode_r, dcsr_single_step_done, debug_halt_req, dec_tlu_wr_pause_r, dec_pause_state, request_debug_mode_r, request_debug_mode_done, dcsr_single_step_running, dec_tlu_flush_pause_r, dbg_halt_req_held_ns}),
-		.dout({dec_tlu_flush_noredir_r_d1, halt_taken_f, lsu_idle_any_f, ifu_miss_state_idle_f, dbg_tlu_halted_f, dec_tlu_resume_ack, debug_halt_req_f, debug_resume_req_f_raw, trigger_hit_dmode_r_d1, dcsr_single_step_done_f, debug_halt_req_d1, dec_tlu_wr_pause_r_d1, dec_pause_state_f, request_debug_mode_r_d1, request_debug_mode_done_f, dcsr_single_step_running_f, dec_tlu_flush_pause_r_d1, dbg_halt_req_held})
-	);
-	assign debug_resume_req_f = debug_resume_req_f_raw & ~dbg_halt_req;
-	assign dec_tlu_debug_stall = debug_halt_req_f;
-	assign dec_tlu_dbg_halted = dbg_tlu_halted_f;
-	assign dec_tlu_debug_mode = internal_dbg_halt_mode_f;
-	assign dec_tlu_pmu_fw_halted = pmu_fw_tlu_halted_f;
-	assign dec_tlu_flush_noredir_r = (((take_halt | (fence_i_r & internal_dbg_halt_mode)) | dec_tlu_flush_pause_r) | (i0_trigger_hit_r & trigger_hit_dmode_r)) | take_ext_int_start;
-	assign dec_tlu_flush_extint = take_ext_int_start;
-	assign dec_tlu_flush_pause_r = (dec_tlu_wr_pause_r_d1 & ~interrupt_valid_r) & ~take_ext_int_start;
-	assign pause_expired_r = (((((~dec_pause_state & dec_pause_state_f) & ~(((((((ext_int_ready | ce_int_ready) | timer_int_ready) | soft_int_ready) | int_timer0_int_hold_f) | int_timer1_int_hold_f) | nmi_int_detected) | ext_int_freeze_d1)) & ~interrupt_valid_r_d1) & ~debug_halt_req_f) & ~pmu_fw_halt_req_f) & ~halt_taken_f;
-	assign dec_tlu_flush_leak_one_r = ((dec_tlu_flush_lower_r & dcsr[DCSR_STEP]) & (dec_tlu_resume_ack | dcsr_single_step_running)) & ~dec_tlu_flush_noredir_r;
-	assign dec_tlu_flush_err_r = dec_tlu_flush_lower_r & (ic_perr_r | iccm_sbecc_r);
-	assign dec_dbg_cmd_done = dbg_cmd_done_ns;
-	assign dec_dbg_cmd_fail = illegal_r & dec_dbg_cmd_done;
-	localparam MTDATA1_DMODE = 9;
-	localparam MTDATA1_SEL = 7;
-	localparam MTDATA1_ACTION = 6;
-	localparam MTDATA1_CHAIN = 5;
-	localparam MTDATA1_MATCH = 4;
-	localparam MTDATA1_M_ENABLED = 3;
-	localparam MTDATA1_EXE = 2;
-	localparam MTDATA1_ST = 1;
-	localparam MTDATA1_LD = 0;
-	assign trigger_execute[3:0] = {mtdata1_t3[MTDATA1_EXE], mtdata1_t2[MTDATA1_EXE], mtdata1_t1[MTDATA1_EXE], mtdata1_t0[MTDATA1_EXE]};
-	assign trigger_data[3:0] = {mtdata1_t3[MTDATA1_SEL], mtdata1_t2[MTDATA1_SEL], mtdata1_t1[MTDATA1_SEL], mtdata1_t0[MTDATA1_SEL]};
-	assign trigger_store[3:0] = {mtdata1_t3[MTDATA1_ST], mtdata1_t2[MTDATA1_ST], mtdata1_t1[MTDATA1_ST], mtdata1_t0[MTDATA1_ST]};
-	assign trigger_enabled[3:0] = {(mtdata1_t3[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t3[MTDATA1_M_ENABLED], (mtdata1_t2[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t2[MTDATA1_M_ENABLED], (mtdata1_t1[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t1[MTDATA1_M_ENABLED], (mtdata1_t0[MTDATA1_ACTION] | mstatus[MSTATUS_MIE]) & mtdata1_t0[MTDATA1_M_ENABLED]};
-	assign i0_iside_trigger_has_pri_r[3:0] = ~(((trigger_execute[3:0] & trigger_data[3:0]) & {4 {inst_acc_r_raw}}) | {4 {exu_i0_br_error_r | exu_i0_br_start_error_r}});
-	assign i0_lsu_trigger_has_pri_r[3:0] = ~((trigger_store[3:0] & trigger_data[3:0]) & {4 {lsu_i0_exc_r_raw}});
-	assign i0_trigger_eval_r = dec_tlu_i0_valid_r;
-	assign i0trigger_qual_r[3:0] = ((({4 {i0_trigger_eval_r}} & dec_tlu_packet_r[11:8]) & i0_iside_trigger_has_pri_r[3:0]) & i0_lsu_trigger_has_pri_r[3:0]) & trigger_enabled[3:0];
-	assign i0_trigger_r[3:0] = ~{4 {dec_tlu_flush_lower_wb | dec_tlu_dbg_halted}} & i0trigger_qual_r[3:0];
-	assign i0_trigger_chain_masked_r[3:0] = {i0_trigger_r[3] & (~mtdata1_t2[MTDATA1_CHAIN] | i0_trigger_r[2]), i0_trigger_r[2] & (~mtdata1_t2[MTDATA1_CHAIN] | i0_trigger_r[3]), i0_trigger_r[1] & (~mtdata1_t0[MTDATA1_CHAIN] | i0_trigger_r[0]), i0_trigger_r[0] & (~mtdata1_t0[MTDATA1_CHAIN] | i0_trigger_r[1])};
-	assign i0_trigger_hit_raw_r = |i0_trigger_chain_masked_r[3:0];
-	assign i0_trigger_hit_r = i0_trigger_hit_raw_r;
-	assign trigger_action[3:0] = {mtdata1_t3[MTDATA1_ACTION] & mtdata1_t3[MTDATA1_DMODE], (mtdata1_t2[MTDATA1_ACTION] & mtdata1_t2[MTDATA1_DMODE]) & ~mtdata1_t2[MTDATA1_CHAIN], mtdata1_t1[MTDATA1_ACTION] & mtdata1_t1[MTDATA1_DMODE], (mtdata1_t0[MTDATA1_ACTION] & mtdata1_t0[MTDATA1_DMODE]) & ~mtdata1_t0[MTDATA1_CHAIN]};
-	assign update_hit_bit_r[3:0] = {4 {|i0_trigger_r[3:0] & ~rfpc_i0_r}} & {i0_trigger_chain_masked_r[3], i0_trigger_r[2], i0_trigger_chain_masked_r[1], i0_trigger_r[0]};
-	assign i0_trigger_action_r = |(i0_trigger_chain_masked_r[3:0] & trigger_action[3:0]);
-	assign trigger_hit_dmode_r = i0_trigger_hit_r & i0_trigger_action_r;
-	assign mepc_trigger_hit_sel_pc_r = i0_trigger_hit_r & ~trigger_hit_dmode_r;
-	assign i_cpu_halt_req_sync_qual = (i_cpu_halt_req_sync & ~dec_tlu_debug_mode) & ~ext_int_freeze_d1;
-	assign i_cpu_run_req_sync_qual = ((i_cpu_run_req_sync & ~dec_tlu_debug_mode) & pmu_fw_tlu_halted_f) & ~ext_int_freeze_d1;
-	rvdffie #(.WIDTH(10)) exthaltff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.din({i_cpu_halt_req_sync_qual, i_cpu_run_req_sync_qual, cpu_halt_status, cpu_halt_ack, cpu_run_ack, internal_pmu_fw_halt_mode, pmu_fw_halt_req_ns, pmu_fw_tlu_halted, int_timer0_int_hold, int_timer1_int_hold}),
-		.dout({i_cpu_halt_req_d1, i_cpu_run_req_d1_raw, o_cpu_halt_status, o_cpu_halt_ack, o_cpu_run_ack, internal_pmu_fw_halt_mode_f, pmu_fw_halt_req_f, pmu_fw_tlu_halted_f, int_timer0_int_hold_f, int_timer1_int_hold_f})
-	);
-	assign ext_halt_pulse = i_cpu_halt_req_sync_qual & ~i_cpu_halt_req_d1;
-	assign enter_pmu_fw_halt_req = ext_halt_pulse | fw_halt_req;
-	assign pmu_fw_halt_req_ns = (enter_pmu_fw_halt_req | (pmu_fw_halt_req_f & ~pmu_fw_tlu_halted)) & ~debug_halt_req_f;
-	assign internal_pmu_fw_halt_mode = pmu_fw_halt_req_ns | ((internal_pmu_fw_halt_mode_f & ~i_cpu_run_req_d1) & ~debug_halt_req_f);
-	assign pmu_fw_tlu_halted = ((((pmu_fw_halt_req_f & core_empty) & halt_taken) & ~enter_debug_halt_req) | (pmu_fw_tlu_halted_f & ~i_cpu_run_req_d1)) & ~debug_halt_req_f;
-	assign cpu_halt_ack = (i_cpu_halt_req_d1 & pmu_fw_tlu_halted_f) | (o_cpu_halt_ack & i_cpu_halt_req_sync);
-	assign cpu_halt_status = (pmu_fw_tlu_halted_f & ~i_cpu_run_req_d1) | ((o_cpu_halt_status & ~i_cpu_run_req_d1) & ~internal_dbg_halt_mode_f);
-	assign cpu_run_ack = ((~pmu_fw_tlu_halted_f & i_cpu_run_req_sync) | (o_cpu_halt_status & i_cpu_run_req_d1_raw)) | (o_cpu_run_ack & i_cpu_run_req_sync);
-	assign debug_mode_status = internal_dbg_halt_mode_f;
-	assign o_debug_mode_status = debug_mode_status;
-	assign i_cpu_run_req_d1 = i_cpu_run_req_d1_raw | (((((((nmi_int_detected | timer_int_ready) | soft_int_ready) | int_timer0_int_hold_f) | int_timer1_int_hold_f) | (mhwakeup & mhwakeup_ready)) & o_cpu_halt_status) & ~i_cpu_halt_req_d1);
-	assign lsu_single_ecc_error_r = lsu_single_ecc_error_incr;
-	assign lsu_error_pkt_addr_r[31:0] = lsu_error_pkt_r[33:2];
-	assign lsu_exc_valid_r_raw = lsu_error_pkt_r[0] & ~dec_tlu_flush_lower_wb;
-	assign lsu_i0_exc_r_raw = lsu_error_pkt_r[0];
-	assign lsu_i0_exc_r = ((lsu_i0_exc_r_raw & lsu_exc_valid_r_raw) & ~i0_trigger_hit_r) & ~rfpc_i0_r;
-	assign lsu_exc_valid_r = lsu_i0_exc_r;
-	assign lsu_exc_ma_r = lsu_i0_exc_r & ~lsu_error_pkt_r[38];
-	assign lsu_exc_acc_r = lsu_i0_exc_r & lsu_error_pkt_r[38];
-	assign lsu_exc_st_r = lsu_i0_exc_r & lsu_error_pkt_r[39];
-	assign lsu_i0_rfnpc_r = (dec_tlu_i0_valid_r & ~i0_trigger_hit_r) & (~lsu_error_pkt_r[39] & lsu_error_pkt_r[1]);
-	assign tlu_i0_commit_cmt = (((((dec_tlu_i0_valid_r & ~rfpc_i0_r) & ~lsu_i0_exc_r) & ~inst_acc_r) & ~dec_tlu_dbg_halted) & ~request_debug_mode_r_d1) & ~i0_trigger_hit_r;
-	assign tlu_i0_kill_writeb_r = (((rfpc_i0_r | lsu_i0_exc_r) | inst_acc_r) | (illegal_r & dec_tlu_dbg_halted)) | i0_trigger_hit_r;
-	assign dec_tlu_i0_commit_cmt = tlu_i0_commit_cmt;
-	assign rfpc_i0_r = ((((dec_tlu_i0_valid_r & ~tlu_flush_lower_r_d1) & (exu_i0_br_error_r | exu_i0_br_start_error_r)) | ((ic_perr_r | iccm_sbecc_r) & ~ext_int_freeze_d1)) & ~i0_trigger_hit_r) & ~lsu_i0_rfnpc_r;
-	assign iccm_repair_state_ns = iccm_sbecc_r | (iccm_repair_state_d1 & ~dec_tlu_flush_lower_r);
-	localparam MCPC = 12'h7c2;
-	assign iccm_repair_state_rfnpc = (tlu_i0_commit_cmt & iccm_repair_state_d1) & ~(((((ebreak_r | ecall_r) | mret_r) | take_reset) | illegal_r) | (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCPC)));
-	generate
-		if (pt[2130-:5] == 1) begin
-			assign dec_tlu_br0_error_r = (exu_i0_br_error_r & dec_tlu_i0_valid_r) & ~tlu_flush_lower_r_d1;
-			assign dec_tlu_br0_start_error_r = (exu_i0_br_start_error_r & dec_tlu_i0_valid_r) & ~tlu_flush_lower_r_d1;
-			assign dec_tlu_br0_v_r = ((exu_i0_br_valid_r & dec_tlu_i0_valid_r) & ~tlu_flush_lower_r_d1) & (~exu_i0_br_mp_r | ~exu_pmu_i0_br_ataken);
-			assign dec_tlu_br0_r_pkt[5:4] = exu_i0_br_hist_r[1:0];
-			assign dec_tlu_br0_r_pkt[3] = dec_tlu_br0_error_r;
-			assign dec_tlu_br0_r_pkt[2] = dec_tlu_br0_start_error_r;
-			assign dec_tlu_br0_r_pkt[6] = dec_tlu_br0_v_r;
-			assign dec_tlu_br0_r_pkt[1] = exu_i0_br_way_r;
-			assign dec_tlu_br0_r_pkt[0] = exu_i0_br_middle_r;
-		end
-		else begin
-			assign dec_tlu_br0_error_r = 1'b0;
-			assign dec_tlu_br0_start_error_r = 1'b0;
-			assign dec_tlu_br0_v_r = 1'b0;
-			assign dec_tlu_br0_r_pkt = {7 {1'sb0}};
-		end
-	endgenerate
-	localparam [3:0] eb1_pkg_EBREAK = 4'b1000;
-	assign ebreak_r = ((((dec_tlu_packet_r[3-:4] == eb1_pkg_EBREAK) & dec_tlu_i0_valid_r) & ~i0_trigger_hit_r) & ~dcsr[DCSR_EBREAKM]) & ~rfpc_i0_r;
-	localparam [3:0] eb1_pkg_ECALL = 4'b1001;
-	assign ecall_r = (((dec_tlu_packet_r[3-:4] == eb1_pkg_ECALL) & dec_tlu_i0_valid_r) & ~i0_trigger_hit_r) & ~rfpc_i0_r;
-	assign illegal_r = ((~dec_tlu_packet_r[5] & dec_tlu_i0_valid_r) & ~i0_trigger_hit_r) & ~rfpc_i0_r;
-	localparam [3:0] eb1_pkg_MRET = 4'b1100;
-	assign mret_r = (((dec_tlu_packet_r[3-:4] == eb1_pkg_MRET) & dec_tlu_i0_valid_r) & ~i0_trigger_hit_r) & ~rfpc_i0_r;
-	assign fence_i_r = ((dec_tlu_packet_r[12] & dec_tlu_i0_valid_r) & ~i0_trigger_hit_r) & ~rfpc_i0_r;
-	assign ic_perr_r = ((ifu_ic_error_start_f & ~ext_int_freeze_d1) & (~internal_dbg_halt_mode_f | dcsr_single_step_running)) & ~internal_pmu_fw_halt_mode_f;
-	assign iccm_sbecc_r = ((ifu_iccm_rd_ecc_single_err_f & ~ext_int_freeze_d1) & (~internal_dbg_halt_mode_f | dcsr_single_step_running)) & ~internal_pmu_fw_halt_mode_f;
-	assign inst_acc_r_raw = dec_tlu_packet_r[16] & dec_tlu_i0_valid_r;
-	assign inst_acc_r = (inst_acc_r_raw & ~rfpc_i0_r) & ~i0_trigger_hit_r;
-	assign inst_acc_second_r = dec_tlu_packet_r[15];
-	assign ebreak_to_debug_mode_r = ((((dec_tlu_packet_r[3-:4] == eb1_pkg_EBREAK) & dec_tlu_i0_valid_r) & ~i0_trigger_hit_r) & dcsr[DCSR_EBREAKM]) & ~rfpc_i0_r;
-	rvdff #(.WIDTH(1)) exctype_wb_ff(
-		.rst_l(rst_l),
-		.clk(e4e5_clk),
-		.din(ebreak_to_debug_mode_r),
-		.dout(ebreak_to_debug_mode_r_d1)
-	);
-	assign dec_tlu_fence_i_r = fence_i_r;
-	assign i0_exception_valid_r = ((((ebreak_r | ecall_r) | illegal_r) | inst_acc_r) & ~rfpc_i0_r) & ~dec_tlu_dbg_halted;
-	assign exc_cause_r[4:0] = (((((((((((((({5 {take_ext_int}} & 5'h0b) | ({5 {take_timer_int}} & 5'h07)) | ({5 {take_soft_int}} & 5'h03)) | ({5 {take_int_timer0_int}} & 5'h1d)) | ({5 {take_int_timer1_int}} & 5'h1c)) | ({5 {take_ce_int}} & 5'h1e)) | ({5 {illegal_r}} & 5'h02)) | ({5 {ecall_r}} & 5'h0b)) | ({5 {inst_acc_r}} & 5'h01)) | ({5 {ebreak_r | i0_trigger_hit_r}} & 5'h03)) | ({5 {lsu_exc_ma_r & ~lsu_exc_st_r}} & 5'h04)) | ({5 {lsu_exc_acc_r & ~lsu_exc_st_r}} & 5'h05)) | ({5 {lsu_exc_ma_r & lsu_exc_st_r}} & 5'h06)) | ({5 {lsu_exc_acc_r & lsu_exc_st_r}} & 5'h07)) & ~{5 {take_nmi}};
-	assign mhwakeup_ready = ((~dec_csr_stall_int_ff & mstatus_mie_ns) & mip[MIP_MEIP]) & mie_ns[MIE_MEIE];
-	assign ext_int_ready = (((~dec_csr_stall_int_ff & mstatus_mie_ns) & mip[MIP_MEIP]) & mie_ns[MIE_MEIE]) & ~ignore_ext_int_due_to_lsu_stall;
-	assign ce_int_ready = ((~dec_csr_stall_int_ff & mstatus_mie_ns) & mip[MIP_MCEIP]) & mie_ns[MIE_MCEIE];
-	assign soft_int_ready = ((~dec_csr_stall_int_ff & mstatus_mie_ns) & mip[MIP_MSIP]) & mie_ns[MIE_MSIE];
-	assign timer_int_ready = ((~dec_csr_stall_int_ff & mstatus_mie_ns) & mip[MIP_MTIP]) & mie_ns[MIE_MTIE];
-	assign int_timer0_int_possible = mstatus_mie_ns & mie_ns[MIE_MITIE0];
-	assign int_timer0_int_ready = mip[MIP_MITIP0] & int_timer0_int_possible;
-	assign int_timer1_int_possible = mstatus_mie_ns & mie_ns[MIE_MITIE1];
-	assign int_timer1_int_ready = mip[MIP_MITIP1] & int_timer1_int_possible;
-	assign int_timer_stalled = ((dec_csr_stall_int_ff | synchronous_flush_r) | exc_or_int_valid_r_d1) | mret_r;
-	assign int_timer0_int_hold = (int_timer0_int_ready & (pmu_fw_tlu_halted_f | int_timer_stalled)) | ((((int_timer0_int_possible & int_timer0_int_hold_f) & ~interrupt_valid_r) & ~take_ext_int_start) & ~internal_dbg_halt_mode_f);
-	assign int_timer1_int_hold = (int_timer1_int_ready & (pmu_fw_tlu_halted_f | int_timer_stalled)) | ((((int_timer1_int_possible & int_timer1_int_hold_f) & ~interrupt_valid_r) & ~take_ext_int_start) & ~internal_dbg_halt_mode_f);
-	assign internal_dbg_halt_timers = internal_dbg_halt_mode_f & ~dcsr_single_step_running;
-	assign block_interrupts = ((((((((internal_dbg_halt_mode & (~dcsr_single_step_running | dec_tlu_i0_valid_r)) | internal_pmu_fw_halt_mode) | i_cpu_halt_req_d1) | take_nmi) | ebreak_to_debug_mode_r) | synchronous_flush_r) | exc_or_int_valid_r_d1) | mret_r) | ext_int_freeze_d1;
-	generate
-		if (pt[1227-:5]) begin
-			assign take_ext_int_start = ext_int_ready & ~block_interrupts;
-			assign ext_int_freeze = ((take_ext_int_start | take_ext_int_start_d1) | take_ext_int_start_d2) | take_ext_int_start_d3;
-			assign take_ext_int = take_ext_int_start_d3 & ~|lsu_fir_error[1:0];
-			assign fast_int_meicpct = csr_meicpct & dec_csr_any_unq_d;
-			assign ignore_ext_int_due_to_lsu_stall = lsu_fastint_stall_any;
-		end
-		else begin
-			assign take_ext_int_start = 1'b0;
-			assign ext_int_freeze = 1'b0;
-			assign ext_int_freeze_d1 = 1'b0;
-			assign take_ext_int_start_d1 = 1'b0;
-			assign take_ext_int_start_d2 = 1'b0;
-			assign take_ext_int_start_d3 = 1'b0;
-			assign fast_int_meicpct = 1'b0;
-			assign ignore_ext_int_due_to_lsu_stall = 1'b0;
-			assign take_ext_int = ext_int_ready & ~block_interrupts;
-		end
-	endgenerate
-	assign take_ce_int = (ce_int_ready & ~ext_int_ready) & ~block_interrupts;
-	assign take_soft_int = ((soft_int_ready & ~ext_int_ready) & ~ce_int_ready) & ~block_interrupts;
-	assign take_timer_int = (((timer_int_ready & ~soft_int_ready) & ~ext_int_ready) & ~ce_int_ready) & ~block_interrupts;
-	assign take_int_timer0_int = (((((((int_timer0_int_ready | int_timer0_int_hold_f) & int_timer0_int_possible) & ~dec_csr_stall_int_ff) & ~timer_int_ready) & ~soft_int_ready) & ~ext_int_ready) & ~ce_int_ready) & ~block_interrupts;
-	assign take_int_timer1_int = ((((((((int_timer1_int_ready | int_timer1_int_hold_f) & int_timer1_int_possible) & ~dec_csr_stall_int_ff) & ~(int_timer0_int_ready | int_timer0_int_hold_f)) & ~timer_int_ready) & ~soft_int_ready) & ~ext_int_ready) & ~ce_int_ready) & ~block_interrupts;
-	assign take_reset = reset_delayed & mpc_reset_run_req;
-	assign take_nmi = ((((((nmi_int_detected & ~internal_pmu_fw_halt_mode) & (~internal_dbg_halt_mode | (((dcsr_single_step_running_f & dcsr[DCSR_STEPIE]) & ~dec_tlu_i0_valid_r) & ~dcsr_single_step_done_f))) & ~synchronous_flush_r) & ~mret_r) & ~take_reset) & ~ebreak_to_debug_mode_r) & (~ext_int_freeze_d1 | (take_ext_int_start_d3 & |lsu_fir_error[1:0]));
-	assign interrupt_valid_r = (((((take_ext_int | take_timer_int) | take_soft_int) | take_nmi) | take_ce_int) | take_int_timer0_int) | take_int_timer1_int;
-	assign vectored_path[31:1] = {mtvec[30:1], 1'b0} + {25'b0000000000000000000000000, exc_cause_r[4:0], 1'b0};
-	assign interrupt_path[31:1] = (take_nmi ? nmi_vec[31:1] : (mtvec[0] == 1'b1 ? vectored_path[31:1] : {mtvec[30:1], 1'b0}));
-	assign sel_npc_r = (((lsu_i0_rfnpc_r | fence_i_r) | iccm_repair_state_rfnpc) | (i_cpu_run_req_d1 & ~interrupt_valid_r)) | (rfpc_i0_r & ~dec_tlu_i0_valid_r);
-	assign sel_npc_resume = (i_cpu_run_req_d1 & pmu_fw_tlu_halted_f) | pause_expired_r;
-	assign sel_fir_addr = take_ext_int_start_d3 & ~|lsu_fir_error[1:0];
-	assign synchronous_flush_r = ((((((((i0_exception_valid_r | rfpc_i0_r) | lsu_exc_valid_r) | fence_i_r) | lsu_i0_rfnpc_r) | iccm_repair_state_rfnpc) | debug_resume_req_f) | sel_npc_resume) | dec_tlu_wr_pause_r_d1) | i0_trigger_hit_r;
-	assign tlu_flush_lower_r = ((((interrupt_valid_r | mret_r) | synchronous_flush_r) | take_halt) | take_reset) | take_ext_int_start;
-	assign tlu_flush_path_r[31:1] = (take_reset ? rst_vec[31:1] : ((((((({31 {sel_fir_addr}} & lsu_fir_addr[31:1]) | ({31 {~take_nmi & sel_npc_r}} & npc_r[31:1])) | ({31 {((~take_nmi & rfpc_i0_r) & dec_tlu_i0_valid_r) & ~sel_npc_r}} & dec_tlu_i0_pc_r[31:1])) | ({31 {interrupt_valid_r & ~sel_fir_addr}} & interrupt_path[31:1])) | ({31 {(((i0_exception_valid_r | lsu_exc_valid_r) | (i0_trigger_hit_r & ~trigger_hit_dmode_r)) & ~interrupt_valid_r) & ~sel_fir_addr}} & {mtvec[30:1], 1'b0})) | ({31 {~take_nmi & mret_r}} & mepc[31:1])) | ({31 {~take_nmi & debug_resume_req_f}} & dpc[31:1])) | ({31 {~take_nmi & sel_npc_resume}} & npc_r_d1[31:1]));
-	rvdffpcie #(.WIDTH(31)) flush_lower_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(tlu_flush_lower_r),
-		.din({tlu_flush_path_r[31:1]}),
-		.dout({tlu_flush_path_r_d1[31:1]})
-	);
-	assign dec_tlu_flush_lower_wb = tlu_flush_lower_r_d1;
-	assign dec_tlu_flush_lower_r = tlu_flush_lower_r;
-	assign dec_tlu_flush_path_r[31:1] = tlu_flush_path_r[31:1];
-	assign exc_or_int_valid_r = ((lsu_exc_valid_r | i0_exception_valid_r) | interrupt_valid_r) | (i0_trigger_hit_r & ~trigger_hit_dmode_r);
-	rvdffie #(.WIDTH(12)) excinfo_wb_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.din({interrupt_valid_r, i0_exception_valid_r, exc_or_int_valid_r, exc_cause_r[4:0], tlu_i0_commit_cmt & ~illegal_r, i0_trigger_hit_r, take_nmi, pause_expired_r}),
-		.dout({interrupt_valid_r_d1, i0_exception_valid_r_d1, exc_or_int_valid_r_d1, exc_cause_wb[4:0], i0_valid_wb, trigger_hit_r_d1, take_nmi_r_d1, pause_expired_wb})
-	);
-	localparam MISA = 12'h301;
-	localparam MVENDORID = 12'hf11;
-	localparam MARCHID = 12'hf12;
-	localparam MIMPID = 12'hf13;
-	localparam MHARTID = 12'hf14;
-	localparam MSTATUS = 12'h300;
-	assign dec_csr_wen_r_mod = (dec_csr_wen_r & ~i0_trigger_hit_r) & ~rfpc_i0_r;
-	assign wr_mstatus_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSTATUS);
-	assign set_mie_pmu_fw_halt = ~mpmc_b_ns[1] & fw_halt_req;
-	assign mstatus_ns[1:0] = ((((({2 {~wr_mstatus_r & exc_or_int_valid_r}} & {mstatus[MSTATUS_MIE], 1'b0}) | ({2 {wr_mstatus_r & exc_or_int_valid_r}} & {dec_csr_wrdata_r[3], 1'b0})) | ({2 {mret_r & ~exc_or_int_valid_r}} & {1'b1, mstatus[1]})) | ({2 {set_mie_pmu_fw_halt}} & {mstatus[1], 1'b1})) | ({2 {wr_mstatus_r & ~exc_or_int_valid_r}} & {dec_csr_wrdata_r[7], dec_csr_wrdata_r[3]})) | ({2 {((~wr_mstatus_r & ~exc_or_int_valid_r) & ~mret_r) & ~set_mie_pmu_fw_halt}} & mstatus[1:0]);
-	assign mstatus_mie_ns = mstatus[MSTATUS_MIE] & (~dcsr_single_step_running_f | dcsr[DCSR_STEPIE]);
-	localparam MTVEC = 12'h305;
-	assign wr_mtvec_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTVEC);
-	assign mtvec_ns[30:0] = {dec_csr_wrdata_r[31:2], dec_csr_wrdata_r[0]};
-	rvdffe #(.WIDTH(31)) mtvec_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mtvec_r),
-		.din(mtvec_ns[30:0]),
-		.dout(mtvec[30:0])
-	);
-	localparam MIP = 12'h344;
-	assign ce_int = (mdccme_ce_req | miccme_ce_req) | mice_ce_req;
-	assign mip_ns[5:0] = {ce_int, dec_timer_t0_pulse, dec_timer_t1_pulse, mexintpend, timer_int_sync, soft_int_sync};
-	localparam MIE = 12'h304;
-	assign wr_mie_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MIE);
-	assign mie_ns[5:0] = (wr_mie_r ? {dec_csr_wrdata_r[30:28], dec_csr_wrdata_r[11], dec_csr_wrdata_r[7], dec_csr_wrdata_r[3]} : mie[5:0]);
-	rvdff #(.WIDTH(6)) mie_ff(
-		.rst_l(rst_l),
-		.clk(csr_wr_clk),
-		.din(mie_ns[5:0]),
-		.dout(mie[5:0])
-	);
-	localparam MCYCLEL = 12'hb00;
-	assign kill_ebreak_count_r = ebreak_to_debug_mode_r & dcsr[DCSR_STOPC];
-	assign wr_mcyclel_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCYCLEL);
-	assign mcyclel_cout_in = ~(((kill_ebreak_count_r | (dec_tlu_dbg_halted & dcsr[DCSR_STOPC])) | dec_tlu_pmu_fw_halted) | mcountinhibit[0]);
-	assign {mcyclela_cout, mcyclel_inc[7:0]} = mcyclel[7:0] + 8'b00000001;
-	assign {mcyclel_cout, mcyclel_inc[31:8]} = mcyclel[31:8] + {23'b00000000000000000000000, mcyclela_cout};
-	assign mcyclel_ns[31:0] = (wr_mcyclel_r ? dec_csr_wrdata_r[31:0] : mcyclel_inc[31:0]);
-	rvdffe #(.WIDTH(24)) mcyclel_bff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(wr_mcyclel_r | (mcyclela_cout & mcyclel_cout_in)),
-		.din(mcyclel_ns[31:8]),
-		.dout(mcyclel[31:8])
-	);
-	rvdffe #(.WIDTH(8)) mcyclel_aff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(wr_mcyclel_r | mcyclel_cout_in),
-		.din(mcyclel_ns[7:0]),
-		.dout(mcyclel[7:0])
-	);
-	localparam MCYCLEH = 12'hb80;
-	assign wr_mcycleh_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCYCLEH);
-	assign mcycleh_inc[31:0] = mcycleh[31:0] + {31'b0000000000000000000000000000000, mcyclel_cout_f};
-	assign mcycleh_ns[31:0] = (wr_mcycleh_r ? dec_csr_wrdata_r[31:0] : mcycleh_inc[31:0]);
-	rvdffe #(.WIDTH(32)) mcycleh_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(wr_mcycleh_r | mcyclel_cout_f),
-		.din(mcycleh_ns[31:0]),
-		.dout(mcycleh[31:0])
-	);
-	localparam MINSTRETL = 12'hb02;
-	assign i0_valid_no_ebreak_ecall_r = dec_tlu_i0_valid_r & ~((((ebreak_r | ecall_r) | ebreak_to_debug_mode_r) | illegal_r) | mcountinhibit[2]);
-	assign wr_minstretl_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MINSTRETL);
-	assign {minstretl_couta, minstretl_inc[7:0]} = minstretl[7:0] + 8'b00000001;
-	assign {minstretl_cout, minstretl_inc[31:8]} = minstretl[31:8] + {23'b00000000000000000000000, minstretl_couta};
-	assign minstret_enable = (i0_valid_no_ebreak_ecall_r & tlu_i0_commit_cmt) | wr_minstretl_r;
-	assign minstretl_cout_ns = ((minstretl_cout & ~wr_minstreth_r) & i0_valid_no_ebreak_ecall_r) & ~dec_tlu_dbg_halted;
-	assign minstretl_ns[31:0] = (wr_minstretl_r ? dec_csr_wrdata_r[31:0] : minstretl_inc[31:0]);
-	rvdffe #(.WIDTH(24)) minstretl_bff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_minstretl_r | (minstretl_couta & minstret_enable)),
-		.din(minstretl_ns[31:8]),
-		.dout(minstretl[31:8])
-	);
-	rvdffe #(.WIDTH(8)) minstretl_aff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(minstret_enable),
-		.din(minstretl_ns[7:0]),
-		.dout(minstretl[7:0])
-	);
-	assign minstretl_read[31:0] = minstretl[31:0];
-	localparam MINSTRETH = 12'hb82;
-	assign wr_minstreth_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MINSTRETH);
-	assign minstreth_inc[31:0] = minstreth[31:0] + {31'b0000000000000000000000000000000, minstretl_cout_f};
-	assign minstreth_ns[31:0] = (wr_minstreth_r ? dec_csr_wrdata_r[31:0] : minstreth_inc[31:0]);
-	rvdffe #(.WIDTH(32)) minstreth_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en((minstret_enable_f & minstretl_cout_f) | wr_minstreth_r),
-		.din(minstreth_ns[31:0]),
-		.dout(minstreth[31:0])
-	);
-	assign minstreth_read[31:0] = minstreth_inc[31:0];
-	localparam MSCRATCH = 12'h340;
-	assign wr_mscratch_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSCRATCH);
-	rvdffe #(.WIDTH(32)) mscratch_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mscratch_r),
-		.din(dec_csr_wrdata_r[31:0]),
-		.dout(mscratch[31:0])
-	);
-	localparam MEPC = 12'h341;
-	assign sel_exu_npc_r = (~dec_tlu_dbg_halted & ~tlu_flush_lower_r_d1) & dec_tlu_i0_valid_r;
-	assign sel_flush_npc_r = (~dec_tlu_dbg_halted & tlu_flush_lower_r_d1) & ~dec_tlu_flush_noredir_r_d1;
-	assign sel_hold_npc_r = ~sel_exu_npc_r & ~sel_flush_npc_r;
-	assign npc_r[31:1] = ((({31 {sel_exu_npc_r}} & exu_npc_r[31:1]) | ({31 {~mpc_reset_run_req & reset_delayed}} & rst_vec[31:1])) | ({31 {sel_flush_npc_r}} & tlu_flush_path_r_d1[31:1])) | ({31 {sel_hold_npc_r}} & npc_r_d1[31:1]);
-	rvdffpcie #(.WIDTH(31)) npwbc_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en((sel_exu_npc_r | sel_flush_npc_r) | reset_delayed),
-		.din(npc_r[31:1]),
-		.dout(npc_r_d1[31:1])
-	);
-	assign pc0_valid_r = ~dec_tlu_dbg_halted & dec_tlu_i0_valid_r;
-	assign pc_r[31:1] = ({31 {pc0_valid_r}} & dec_tlu_i0_pc_r[31:1]) | ({31 {~pc0_valid_r}} & pc_r_d1[31:1]);
-	rvdffpcie #(.WIDTH(31)) pwbc_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(pc0_valid_r),
-		.din(pc_r[31:1]),
-		.dout(pc_r_d1[31:1])
-	);
-	assign wr_mepc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEPC);
-	assign mepc_ns[31:1] = ((({31 {(i0_exception_valid_r | lsu_exc_valid_r) | mepc_trigger_hit_sel_pc_r}} & pc_r[31:1]) | ({31 {interrupt_valid_r}} & npc_r[31:1])) | ({31 {wr_mepc_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[31:1])) | ({31 {~wr_mepc_r & ~exc_or_int_valid_r}} & mepc[31:1]);
-	rvdffe #(.WIDTH(31)) mepc_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en((((i0_exception_valid_r | lsu_exc_valid_r) | mepc_trigger_hit_sel_pc_r) | interrupt_valid_r) | wr_mepc_r),
-		.din(mepc_ns[31:1]),
-		.dout(mepc[31:1])
-	);
-	localparam MCAUSE = 12'h342;
-	assign wr_mcause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCAUSE);
-	assign mcause_sel_nmi_store = (exc_or_int_valid_r & take_nmi) & nmi_lsu_store_type;
-	assign mcause_sel_nmi_load = (exc_or_int_valid_r & take_nmi) & nmi_lsu_load_type;
-	assign mcause_sel_nmi_ext = (((exc_or_int_valid_r & take_nmi) & take_ext_int_start_d3) & |lsu_fir_error[1:0]) & ~nmi_int_detected_f;
-	assign mcause_fir_error_type[1:0] = {&lsu_fir_error[1:0], lsu_fir_error[1] & ~lsu_fir_error[0]};
-	assign mcause_ns[31:0] = ((((({32 {mcause_sel_nmi_store}} & 32'hf0000000) | ({32 {mcause_sel_nmi_load}} & 32'hf0000001)) | ({32 {mcause_sel_nmi_ext}} & {30'b111100000000000000010000000000, mcause_fir_error_type[1:0]})) | ({32 {exc_or_int_valid_r & ~take_nmi}} & {interrupt_valid_r, 26'b00000000000000000000000000, exc_cause_r[4:0]})) | ({32 {wr_mcause_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[31:0])) | ({32 {~wr_mcause_r & ~exc_or_int_valid_r}} & mcause[31:0]);
-	rvdffe #(.WIDTH(32)) mcause_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(exc_or_int_valid_r | wr_mcause_r),
-		.din(mcause_ns[31:0]),
-		.dout(mcause[31:0])
-	);
-	localparam MSCAUSE = 12'h7ff;
-	assign wr_mscause_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MSCAUSE);
-	assign ifu_mscause[3:0] = (dec_tlu_packet_r[14:13] == 2'b00 ? 4'b1001 : {2'b00, dec_tlu_packet_r[14:13]});
-	assign mscause_type[3:0] = ((({4 {lsu_i0_exc_r}} & lsu_error_pkt_r[37:34]) | ({4 {i0_trigger_hit_r}} & 4'b0001)) | ({4 {ebreak_r}} & 4'b0010)) | ({4 {inst_acc_r}} & ifu_mscause[3:0]);
-	assign mscause_ns[3:0] = (({4 {exc_or_int_valid_r}} & mscause_type[3:0]) | ({4 {wr_mscause_r & ~exc_or_int_valid_r}} & dec_csr_wrdata_r[3:0])) | ({4 {~wr_mscause_r & ~exc_or_int_valid_r}} & mscause[3:0]);
-	rvdff #(.WIDTH(4)) mscause_ff(
-		.rst_l(rst_l),
-		.clk(e4e5_int_clk),
-		.din(mscause_ns[3:0]),
-		.dout(mscause[3:0])
-	);
-	localparam MTVAL = 12'h343;
-	assign wr_mtval_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTVAL);
-	assign mtval_capture_pc_r = (exc_or_int_valid_r & ((ebreak_r | (inst_acc_r & ~inst_acc_second_r)) | mepc_trigger_hit_sel_pc_r)) & ~take_nmi;
-	assign mtval_capture_pc_plus2_r = (exc_or_int_valid_r & (inst_acc_r & inst_acc_second_r)) & ~take_nmi;
-	assign mtval_capture_inst_r = (exc_or_int_valid_r & illegal_r) & ~take_nmi;
-	assign mtval_capture_lsu_r = (exc_or_int_valid_r & lsu_exc_valid_r) & ~take_nmi;
-	assign mtval_clear_r = (((exc_or_int_valid_r & ~mtval_capture_pc_r) & ~mtval_capture_inst_r) & ~mtval_capture_lsu_r) & ~mepc_trigger_hit_sel_pc_r;
-	assign mtval_ns[31:0] = ((((({32 {mtval_capture_pc_r}} & {pc_r[31:1], 1'b0}) | ({32 {mtval_capture_pc_plus2_r}} & {pc_r[31:1] + 31'b0000000000000000000000000000001, 1'b0})) | ({32 {mtval_capture_inst_r}} & dec_illegal_inst[31:0])) | ({32 {mtval_capture_lsu_r}} & lsu_error_pkt_addr_r[31:0])) | ({32 {wr_mtval_r & ~interrupt_valid_r}} & dec_csr_wrdata_r[31:0])) | ({32 {((((~take_nmi & ~wr_mtval_r) & ~mtval_capture_pc_r) & ~mtval_capture_inst_r) & ~mtval_clear_r) & ~mtval_capture_lsu_r}} & mtval[31:0]);
-	rvdffe #(.WIDTH(32)) mtval_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(tlu_flush_lower_r | wr_mtval_r),
-		.din(mtval_ns[31:0]),
-		.dout(mtval[31:0])
-	);
-	localparam MCGC = 12'h7f8;
-	assign wr_mcgc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCGC);
-	assign mcgc_ns[9:0] = (wr_mcgc_r ? {~dec_csr_wrdata_r[9], dec_csr_wrdata_r[8:0]} : mcgc_int[9:0]);
-	rvdffe #(.WIDTH(10)) mcgc_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mcgc_r),
-		.din(mcgc_ns[9:0]),
-		.dout(mcgc_int[9:0])
-	);
-	assign mcgc[9:0] = {~mcgc_int[9], mcgc_int[8:0]};
-	assign dec_tlu_picio_clk_override = mcgc[9];
-	assign dec_tlu_misc_clk_override = mcgc[8];
-	assign dec_tlu_dec_clk_override = mcgc[7];
-	assign dec_tlu_ifu_clk_override = mcgc[5];
-	assign dec_tlu_lsu_clk_override = mcgc[4];
-	assign dec_tlu_bus_clk_override = mcgc[3];
-	assign dec_tlu_pic_clk_override = mcgc[2];
-	assign dec_tlu_dccm_clk_override = mcgc[1];
-	assign dec_tlu_icm_clk_override = mcgc[0];
-	localparam MFDC = 12'h7f9;
-	assign wr_mfdc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDC);
-	rvdffe #(.WIDTH(16)) mfdc_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mfdc_r),
-		.din({mfdc_ns[15:0]}),
-		.dout(mfdc_int[15:0])
-	);
-	generate
-		if (pt[2037-:5] == 1) begin : axi4
-			assign mfdc_ns[15:0] = {~dec_csr_wrdata_r[18:16], dec_csr_wrdata_r[12], dec_csr_wrdata_r[11:7], ~dec_csr_wrdata_r[6], dec_csr_wrdata_r[5:0]};
-			assign mfdc[18:0] = {~mfdc_int[15:13], 3'b000, mfdc_int[12], mfdc_int[11:7], ~mfdc_int[6], mfdc_int[5:0]};
-		end
-		else begin
-			assign mfdc_ns[15:0] = {~dec_csr_wrdata_r[18:16], dec_csr_wrdata_r[12:0]};
-			assign mfdc[18:0] = {~mfdc_int[15:13], 3'b000, mfdc_int[12:0]};
-		end
-	endgenerate
-	assign dec_tlu_dma_qos_prty[2:0] = mfdc[18:16];
-	assign dec_tlu_trace_disable = mfdc[12];
-	assign dec_tlu_external_ldfwd_disable = mfdc[11];
-	assign dec_tlu_core_ecc_disable = 1'b1;
-	assign dec_tlu_sideeffect_posted_disable = mfdc[6];
-	assign dec_tlu_bpred_disable = mfdc[3];
-	assign dec_tlu_wb_coalescing_disable = mfdc[2];
-	assign dec_tlu_pipelining_disable = mfdc[0];
-	assign dec_tlu_wr_pause_r = ((dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCPC)) & ~interrupt_valid_r) & ~take_ext_int_start;
-	localparam MRAC = 12'h7c0;
-	assign wr_mrac_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MRAC);
-	assign mrac_in[31:0] = {dec_csr_wrdata_r[31], dec_csr_wrdata_r[30] & ~dec_csr_wrdata_r[31], dec_csr_wrdata_r[29], dec_csr_wrdata_r[28] & ~dec_csr_wrdata_r[29], dec_csr_wrdata_r[27], dec_csr_wrdata_r[26] & ~dec_csr_wrdata_r[27], dec_csr_wrdata_r[25], dec_csr_wrdata_r[24] & ~dec_csr_wrdata_r[25], dec_csr_wrdata_r[23], dec_csr_wrdata_r[22] & ~dec_csr_wrdata_r[23], dec_csr_wrdata_r[21], dec_csr_wrdata_r[20] & ~dec_csr_wrdata_r[21], dec_csr_wrdata_r[19], dec_csr_wrdata_r[18] & ~dec_csr_wrdata_r[19], dec_csr_wrdata_r[17], dec_csr_wrdata_r[16] & ~dec_csr_wrdata_r[17], dec_csr_wrdata_r[15], dec_csr_wrdata_r[14] & ~dec_csr_wrdata_r[15], dec_csr_wrdata_r[13], dec_csr_wrdata_r[12] & ~dec_csr_wrdata_r[13], dec_csr_wrdata_r[11], dec_csr_wrdata_r[10] & ~dec_csr_wrdata_r[11], dec_csr_wrdata_r[9], dec_csr_wrdata_r[8] & ~dec_csr_wrdata_r[9], dec_csr_wrdata_r[7], dec_csr_wrdata_r[6] & ~dec_csr_wrdata_r[7], dec_csr_wrdata_r[5], dec_csr_wrdata_r[4] & ~dec_csr_wrdata_r[5], dec_csr_wrdata_r[3], dec_csr_wrdata_r[2] & ~dec_csr_wrdata_r[3], dec_csr_wrdata_r[1], dec_csr_wrdata_r[0] & ~dec_csr_wrdata_r[1]};
-	rvdffe #(.WIDTH(32)) mrac_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mrac_r),
-		.din(mrac_in[31:0]),
-		.dout(mrac[31:0])
-	);
-	assign dec_tlu_mrac_ff[31:0] = mrac[31:0];
-	localparam MDEAU = 12'hbc0;
-	assign wr_mdeau_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MDEAU);
-	localparam MDSEAC = 12'hfc0;
-	assign mdseac_locked_ns = mdseac_en | (mdseac_locked_f & ~wr_mdeau_r);
-	assign mdseac_en = ((lsu_imprecise_error_store_any | lsu_imprecise_error_load_any) & ~nmi_int_detected_f) & ~mdseac_locked_f;
-	rvdffe #(.WIDTH(32)) mdseac_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(mdseac_en),
-		.din(lsu_imprecise_error_addr_any[31:0]),
-		.dout(mdseac[31:0])
-	);
-	localparam MPMC = 12'h7c6;
-	assign wr_mpmc_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MPMC);
-	assign fw_halt_req = ((wr_mpmc_r & dec_csr_wrdata_r[0]) & ~internal_dbg_halt_mode_f2) & ~ext_int_freeze_d1;
-	assign fw_halted_ns = (fw_halt_req | fw_halted) & ~set_mie_pmu_fw_halt;
-	assign mpmc_b_ns[1] = (wr_mpmc_r ? ~dec_csr_wrdata_r[1] : ~mpmc[1]);
-	rvdff #(.WIDTH(1)) mpmc_ff(
-		.rst_l(rst_l),
-		.clk(csr_wr_clk),
-		.din(mpmc_b_ns[1]),
-		.dout(mpmc_b[1])
-	);
-	assign mpmc[1] = ~mpmc_b[1];
-	localparam MICECT = 12'h7f0;
-	assign csr_sat[31:27] = (dec_csr_wrdata_r[31:27] > 5'd26 ? 5'd26 : dec_csr_wrdata_r[31:27]);
-	assign wr_micect_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MICECT);
-	assign micect_inc[26:0] = micect[26:0] + {26'b00000000000000000000000000, ic_perr_r};
-	assign micect_ns = (wr_micect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {micect[31:27], micect_inc[26:0]});
-	rvdffe #(.WIDTH(32)) micect_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_micect_r | ic_perr_r),
-		.din(micect_ns[31:0]),
-		.dout(micect[31:0])
-	);
-	assign mice_ce_req = |({32'hffffffff << micect[31:27]} & {5'b00000, micect[26:0]});
-	localparam MICCMECT = 12'h7f1;
-	assign wr_miccmect_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MICCMECT);
-	assign miccmect_inc[26:0] = miccmect[26:0] + {26'b00000000000000000000000000, iccm_sbecc_r | iccm_dma_sb_error};
-	assign miccmect_ns = (wr_miccmect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {miccmect[31:27], miccmect_inc[26:0]});
-	rvdffe #(.WIDTH(32)) miccmect_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en((wr_miccmect_r | iccm_sbecc_r) | iccm_dma_sb_error),
-		.din(miccmect_ns[31:0]),
-		.dout(miccmect[31:0])
-	);
-	assign miccme_ce_req = |({32'hffffffff << miccmect[31:27]} & {5'b00000, miccmect[26:0]});
-	localparam MDCCMECT = 12'h7f2;
-	assign wr_mdccmect_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MDCCMECT);
-	assign mdccmect_inc[26:0] = mdccmect[26:0] + {26'b00000000000000000000000000, lsu_single_ecc_error_r_d1};
-	assign mdccmect_ns = (wr_mdccmect_r ? {csr_sat[31:27], dec_csr_wrdata_r[26:0]} : {mdccmect[31:27], mdccmect_inc[26:0]});
-	rvdffe #(.WIDTH(32)) mdccmect_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(wr_mdccmect_r | lsu_single_ecc_error_r_d1),
-		.din(mdccmect_ns[31:0]),
-		.dout(mdccmect[31:0])
-	);
-	assign mdccme_ce_req = |({32'hffffffff << mdccmect[31:27]} & {5'b00000, mdccmect[26:0]});
-	localparam MFDHT = 12'h7ce;
-	assign wr_mfdht_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDHT);
-	assign mfdht_ns[5:0] = (wr_mfdht_r ? dec_csr_wrdata_r[5:0] : mfdht[5:0]);
-	rvdffs #(.WIDTH(6)) mfdht_ff(
-		.rst_l(rst_l),
-		.clk(csr_wr_clk),
-		.en(wr_mfdht_r),
-		.din(mfdht_ns[5:0]),
-		.dout(mfdht[5:0])
-	);
-	localparam MFDHS = 12'h7cf;
-	assign wr_mfdhs_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MFDHS);
-	assign mfdhs_ns[1:0] = (wr_mfdhs_r ? dec_csr_wrdata_r[1:0] : (dbg_tlu_halted & ~dbg_tlu_halted_f ? {~lsu_idle_any_f, ~ifu_miss_state_idle_f} : mfdhs[1:0]));
-	rvdffs #(.WIDTH(2)) mfdhs_ff(
-		.rst_l(rst_l),
-		.clk(free_clk),
-		.en(wr_mfdhs_r | dbg_tlu_halted),
-		.din(mfdhs_ns[1:0]),
-		.dout(mfdhs[1:0])
-	);
-	assign force_halt_ctr[31:0] = (debug_halt_req_f ? force_halt_ctr_f[31:0] + 32'b00000000000000000000000000000001 : (dbg_tlu_halted_f ? 32'b00000000000000000000000000000000 : force_halt_ctr_f[31:0]));
-	rvdffe #(.WIDTH(32)) forcehaltctr_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(mfdht[0]),
-		.din(force_halt_ctr[31:0]),
-		.dout(force_halt_ctr_f[31:0])
-	);
-	assign force_halt = mfdht[0] & |(force_halt_ctr_f[31:0] & (32'hffffffff << mfdht[5:1]));
-	localparam MEIVT = 12'hbc8;
-	assign wr_meivt_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEIVT);
-	rvdffe #(.WIDTH(22)) meivt_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_meivt_r),
-		.din(dec_csr_wrdata_r[31:10]),
-		.dout(meivt[31:10])
-	);
-	localparam MEIHAP = 12'hfc8;
-	assign wr_meihap_r = wr_meicpct_r;
-	rvdffe #(.WIDTH(8)) meihap_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_meihap_r),
-		.din(pic_claimid[7:0]),
-		.dout(meihap[9:2])
-	);
-	assign dec_tlu_meihap[31:2] = {meivt[31:10], meihap[9:2]};
-	localparam MEICURPL = 12'hbcc;
-	assign wr_meicurpl_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICURPL);
-	assign meicurpl_ns[3:0] = (wr_meicurpl_r ? dec_csr_wrdata_r[3:0] : meicurpl[3:0]);
-	rvdff #(.WIDTH(4)) meicurpl_ff(
-		.rst_l(rst_l),
-		.clk(csr_wr_clk),
-		.din(meicurpl_ns[3:0]),
-		.dout(meicurpl[3:0])
-	);
-	assign dec_tlu_meicurpl[3:0] = meicurpl[3:0];
-	localparam MEICIDPL = 12'hbcb;
-	assign wr_meicidpl_r = (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICIDPL)) | take_ext_int_start;
-	assign meicidpl_ns[3:0] = (wr_meicpct_r ? pic_pl[3:0] : (wr_meicidpl_r ? dec_csr_wrdata_r[3:0] : meicidpl[3:0]));
-	localparam MEICPCT = 12'hbca;
-	assign wr_meicpct_r = (dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEICPCT)) | take_ext_int_start;
-	localparam MEIPT = 12'hbc9;
-	assign wr_meipt_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MEIPT);
-	assign meipt_ns[3:0] = (wr_meipt_r ? dec_csr_wrdata_r[3:0] : meipt[3:0]);
-	rvdff #(.WIDTH(4)) meipt_ff(
-		.rst_l(rst_l),
-		.clk(csr_wr_clk),
-		.din(meipt_ns[3:0]),
-		.dout(meipt[3:0])
-	);
-	assign dec_tlu_meipt[3:0] = meipt[3:0];
-	localparam DCSR = 12'h7b0;
-	assign trigger_hit_for_dscr_cause_r_d1 = trigger_hit_dmode_r_d1 | (trigger_hit_r_d1 & dcsr_single_step_done_f);
-	assign dcsr_cause[8:6] = ((({3 {((dcsr_single_step_done_f & ~ebreak_to_debug_mode_r_d1) & ~trigger_hit_for_dscr_cause_r_d1) & ~debug_halt_req}} & 3'b100) | ({3 {(debug_halt_req & ~ebreak_to_debug_mode_r_d1) & ~trigger_hit_for_dscr_cause_r_d1}} & 3'b011)) | ({3 {ebreak_to_debug_mode_r_d1 & ~trigger_hit_for_dscr_cause_r_d1}} & 3'b001)) | ({3 {trigger_hit_for_dscr_cause_r_d1}} & 3'b010);
-	assign wr_dcsr_r = (allow_dbg_halt_csr_write & dec_csr_wen_r_mod) & (dec_csr_wraddr_r[11:0] == DCSR);
-	assign dcsr_cause_upgradeable = internal_dbg_halt_mode_f & (dcsr[8:6] == 3'b011);
-	assign enter_debug_halt_req_le = enter_debug_halt_req & (~dbg_tlu_halted | dcsr_cause_upgradeable);
-	assign nmi_in_debug_mode = nmi_int_detected_f & internal_dbg_halt_mode_f;
-	assign dcsr_ns[15:2] = (enter_debug_halt_req_le ? {dcsr[15:9], dcsr_cause[8:6], dcsr[5:2]} : (wr_dcsr_r ? {dec_csr_wrdata_r[15], 3'b000, dec_csr_wrdata_r[11:10], 1'b0, dcsr[8:6], 2'b00, nmi_in_debug_mode | dcsr[3], dec_csr_wrdata_r[2]} : {dcsr[15:4], nmi_in_debug_mode, dcsr[2]}));
-	rvdffe #(.WIDTH(14)) dcsr_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(((enter_debug_halt_req_le | wr_dcsr_r) | internal_dbg_halt_mode) | take_nmi),
-		.din(dcsr_ns[15:2]),
-		.dout(dcsr[15:2])
-	);
-	localparam DPC = 12'h7b1;
-	assign wr_dpc_r = (allow_dbg_halt_csr_write & dec_csr_wen_r_mod) & (dec_csr_wraddr_r[11:0] == DPC);
-	assign dpc_capture_npc = (dbg_tlu_halted & ~dbg_tlu_halted_f) & ~request_debug_mode_done;
-	assign dpc_capture_pc = request_debug_mode_r;
-	assign dpc_ns[31:1] = (({31 {(~dpc_capture_pc & ~dpc_capture_npc) & wr_dpc_r}} & dec_csr_wrdata_r[31:1]) | ({31 {dpc_capture_pc}} & pc_r[31:1])) | ({31 {~dpc_capture_pc & dpc_capture_npc}} & npc_r[31:1]);
-	rvdffe #(.WIDTH(31)) dpc_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en((wr_dpc_r | dpc_capture_pc) | dpc_capture_npc),
-		.din(dpc_ns[31:1]),
-		.dout(dpc[31:1])
-	);
-	localparam DICAWICS = 12'h7c8;
-	assign dicawics_ns[16:0] = {dec_csr_wrdata_r[24], dec_csr_wrdata_r[21:20], dec_csr_wrdata_r[16:3]};
-	assign wr_dicawics_r = (allow_dbg_halt_csr_write & dec_csr_wen_r_mod) & (dec_csr_wraddr_r[11:0] == DICAWICS);
-	rvdffe #(.WIDTH(17)) dicawics_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_dicawics_r),
-		.din(dicawics_ns[16:0]),
-		.dout(dicawics[16:0])
-	);
-	localparam DICAD0 = 12'h7c9;
-	assign dicad0_ns[31:0] = (wr_dicad0_r ? dec_csr_wrdata_r[31:0] : ifu_ic_debug_rd_data[31:0]);
-	assign wr_dicad0_r = (allow_dbg_halt_csr_write & dec_csr_wen_r_mod) & (dec_csr_wraddr_r[11:0] == DICAD0);
-	rvdffe #(.WIDTH(32)) dicad0_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_dicad0_r | ifu_ic_debug_rd_data_valid),
-		.din(dicad0_ns[31:0]),
-		.dout(dicad0[31:0])
-	);
-	localparam DICAD0H = 12'h7cc;
-	assign dicad0h_ns[31:0] = (wr_dicad0h_r ? dec_csr_wrdata_r[31:0] : ifu_ic_debug_rd_data[63:32]);
-	assign wr_dicad0h_r = (allow_dbg_halt_csr_write & dec_csr_wen_r_mod) & (dec_csr_wraddr_r[11:0] == DICAD0H);
-	rvdffe #(.WIDTH(32)) dicad0h_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_dicad0h_r | ifu_ic_debug_rd_data_valid),
-		.din(dicad0h_ns[31:0]),
-		.dout(dicad0h[31:0])
-	);
-	generate
-		if (pt[1125-:5] == 1) begin
-			localparam DICAD1 = 12'h7ca;
-			assign dicad1_ns[6:0] = (wr_dicad1_r ? dec_csr_wrdata_r[6:0] : ifu_ic_debug_rd_data[70:64]);
-			assign wr_dicad1_r = (allow_dbg_halt_csr_write & dec_csr_wen_r_mod) & (dec_csr_wraddr_r[11:0] == DICAD1);
-			rvdffe #(
-				.WIDTH(7),
-				.OVERRIDE(1)
-			) dicad1_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.en(wr_dicad1_r | ifu_ic_debug_rd_data_valid),
-				.din(dicad1_ns[6:0]),
-				.dout(dicad1_raw[6:0])
-			);
-			assign dicad1[31:0] = {25'b0000000000000000000000000, dicad1_raw[6:0]};
-		end
-		else begin
-			localparam DICAD1 = 12'h7ca;
-			assign dicad1_ns[3:0] = (wr_dicad1_r ? dec_csr_wrdata_r[3:0] : ifu_ic_debug_rd_data[67:64]);
-			assign wr_dicad1_r = (allow_dbg_halt_csr_write & dec_csr_wen_r_mod) & (dec_csr_wraddr_r[11:0] == DICAD1);
-			rvdffs #(.WIDTH(4)) dicad1_ff(
-				.rst_l(rst_l),
-				.clk(free_clk),
-				.en(wr_dicad1_r | ifu_ic_debug_rd_data_valid),
-				.din(dicad1_ns[3:0]),
-				.dout(dicad1_raw[3:0])
-			);
-			assign dicad1[31:0] = {28'b0000000000000000000000000000, dicad1_raw[3:0]};
-		end
-	endgenerate
-	localparam DICAGO = 12'h7cb;
-	generate
-		if (pt[1125-:5] == 1) begin
-			assign dec_tlu_ic_diag_pkt[89:19] = {dicad1[6:0], dicad0h[31:0], dicad0[31:0]};
-		end
-		else assign dec_tlu_ic_diag_pkt[89:19] = {3'b000, dicad1[3:0], dicad0h[31:0], dicad0[31:0]};
-	endgenerate
-	assign dec_tlu_ic_diag_pkt[18:2] = dicawics[16:0];
-	assign icache_rd_valid = (((allow_dbg_halt_csr_write & dec_csr_any_unq_d) & dec_i0_decode_d) & ~dec_csr_wen_unq_d) & (dec_csr_rdaddr_d[11:0] == DICAGO);
-	assign icache_wr_valid = (allow_dbg_halt_csr_write & dec_csr_wen_r_mod) & (dec_csr_wraddr_r[11:0] == DICAGO);
-	assign dec_tlu_ic_diag_pkt[1] = icache_rd_valid_f;
-	assign dec_tlu_ic_diag_pkt[0] = icache_wr_valid_f;
-	localparam MTSEL = 12'h7a0;
-	assign wr_mtsel_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTSEL);
-	assign mtsel_ns[1:0] = (wr_mtsel_r ? {dec_csr_wrdata_r[1:0]} : mtsel[1:0]);
-	rvdff #(.WIDTH(2)) mtsel_ff(
-		.rst_l(rst_l),
-		.clk(csr_wr_clk),
-		.din(mtsel_ns[1:0]),
-		.dout(mtsel[1:0])
-	);
-	localparam MTDATA1 = 12'h7a1;
-	assign tdata_load = dec_csr_wrdata_r[0] & ~dec_csr_wrdata_r[19];
-	assign tdata_opcode = dec_csr_wrdata_r[2] & ~dec_csr_wrdata_r[19];
-	assign tdata_action = (dec_csr_wrdata_r[27] & dbg_tlu_halted_f) & dec_csr_wrdata_r[12];
-	assign tdata_chain = (mtsel[0] ? 1'b0 : (mtsel[1] ? dec_csr_wrdata_r[11] & ~(mtdata1_t3[MTDATA1_DMODE] & ~dec_csr_wrdata_r[27]) : dec_csr_wrdata_r[11] & ~(mtdata1_t1[MTDATA1_DMODE] & ~dec_csr_wrdata_r[27])));
-	assign tdata_kill_write = (mtsel[1] ? dec_csr_wrdata_r[27] & (~mtdata1_t2[MTDATA1_DMODE] & mtdata1_t2[MTDATA1_CHAIN]) : dec_csr_wrdata_r[27] & (~mtdata1_t0[MTDATA1_DMODE] & mtdata1_t0[MTDATA1_CHAIN]));
-	assign tdata_wrdata_r[9:0] = {dec_csr_wrdata_r[27] & dbg_tlu_halted_f, dec_csr_wrdata_r[20:19], tdata_action, tdata_chain, dec_csr_wrdata_r[7:6], tdata_opcode, dec_csr_wrdata_r[1], tdata_load};
-	assign wr_mtdata1_t0_r = ((dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1)) & (mtsel[1:0] == 2'b00)) & (~mtdata1_t0[MTDATA1_DMODE] | dbg_tlu_halted_f);
-	assign mtdata1_t0_ns[9:0] = (wr_mtdata1_t0_r ? tdata_wrdata_r[9:0] : {mtdata1_t0[9], update_hit_bit_r[0] | mtdata1_t0[8], mtdata1_t0[7:0]});
-	assign wr_mtdata1_t1_r = (((dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1)) & (mtsel[1:0] == 2'b01)) & (~mtdata1_t1[MTDATA1_DMODE] | dbg_tlu_halted_f)) & ~tdata_kill_write;
-	assign mtdata1_t1_ns[9:0] = (wr_mtdata1_t1_r ? tdata_wrdata_r[9:0] : {mtdata1_t1[9], update_hit_bit_r[1] | mtdata1_t1[8], mtdata1_t1[7:0]});
-	assign wr_mtdata1_t2_r = ((dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1)) & (mtsel[1:0] == 2'b10)) & (~mtdata1_t2[MTDATA1_DMODE] | dbg_tlu_halted_f);
-	assign mtdata1_t2_ns[9:0] = (wr_mtdata1_t2_r ? tdata_wrdata_r[9:0] : {mtdata1_t2[9], update_hit_bit_r[2] | mtdata1_t2[8], mtdata1_t2[7:0]});
-	assign wr_mtdata1_t3_r = (((dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA1)) & (mtsel[1:0] == 2'b11)) & (~mtdata1_t3[MTDATA1_DMODE] | dbg_tlu_halted_f)) & ~tdata_kill_write;
-	assign mtdata1_t3_ns[9:0] = (wr_mtdata1_t3_r ? tdata_wrdata_r[9:0] : {mtdata1_t3[9], update_hit_bit_r[3] | mtdata1_t3[8], mtdata1_t3[7:0]});
-	rvdffe #(.WIDTH(10)) mtdata1_t0_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(trigger_enabled[0] | wr_mtdata1_t0_r),
-		.din(mtdata1_t0_ns[9:0]),
-		.dout(mtdata1_t0[9:0])
-	);
-	rvdffe #(.WIDTH(10)) mtdata1_t1_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(trigger_enabled[1] | wr_mtdata1_t1_r),
-		.din(mtdata1_t1_ns[9:0]),
-		.dout(mtdata1_t1[9:0])
-	);
-	rvdffe #(.WIDTH(10)) mtdata1_t2_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(trigger_enabled[2] | wr_mtdata1_t2_r),
-		.din(mtdata1_t2_ns[9:0]),
-		.dout(mtdata1_t2[9:0])
-	);
-	rvdffe #(.WIDTH(10)) mtdata1_t3_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(trigger_enabled[3] | wr_mtdata1_t3_r),
-		.din(mtdata1_t3_ns[9:0]),
-		.dout(mtdata1_t3[9:0])
-	);
-	assign mtdata1_tsel_out[31:0] = ((({32 {mtsel[1:0] == 2'b00}} & {4'h2, mtdata1_t0[9], 6'b011111, mtdata1_t0[8:7], 6'b000000, mtdata1_t0[6:5], 3'b000, mtdata1_t0[4:3], 3'b000, mtdata1_t0[2:0]}) | ({32 {mtsel[1:0] == 2'b01}} & {4'h2, mtdata1_t1[9], 6'b011111, mtdata1_t1[8:7], 6'b000000, mtdata1_t1[6:5], 3'b000, mtdata1_t1[4:3], 3'b000, mtdata1_t1[2:0]})) | ({32 {mtsel[1:0] == 2'b10}} & {4'h2, mtdata1_t2[9], 6'b011111, mtdata1_t2[8:7], 6'b000000, mtdata1_t2[6:5], 3'b000, mtdata1_t2[4:3], 3'b000, mtdata1_t2[2:0]})) | ({32 {mtsel[1:0] == 2'b11}} & {4'h2, mtdata1_t3[9], 6'b011111, mtdata1_t3[8:7], 6'b000000, mtdata1_t3[6:5], 3'b000, mtdata1_t3[4:3], 3'b000, mtdata1_t3[2:0]});
-	assign trigger_pkt_any[37] = mtdata1_t0[MTDATA1_SEL];
-	assign trigger_pkt_any[36] = mtdata1_t0[MTDATA1_MATCH];
-	assign trigger_pkt_any[35] = mtdata1_t0[MTDATA1_ST];
-	assign trigger_pkt_any[34] = mtdata1_t0[MTDATA1_LD];
-	assign trigger_pkt_any[33] = mtdata1_t0[MTDATA1_EXE];
-	assign trigger_pkt_any[32] = mtdata1_t0[MTDATA1_M_ENABLED];
-	assign trigger_pkt_any[75] = mtdata1_t1[MTDATA1_SEL];
-	assign trigger_pkt_any[74] = mtdata1_t1[MTDATA1_MATCH];
-	assign trigger_pkt_any[73] = mtdata1_t1[MTDATA1_ST];
-	assign trigger_pkt_any[72] = mtdata1_t1[MTDATA1_LD];
-	assign trigger_pkt_any[71] = mtdata1_t1[MTDATA1_EXE];
-	assign trigger_pkt_any[70] = mtdata1_t1[MTDATA1_M_ENABLED];
-	assign trigger_pkt_any[113] = mtdata1_t2[MTDATA1_SEL];
-	assign trigger_pkt_any[112] = mtdata1_t2[MTDATA1_MATCH];
-	assign trigger_pkt_any[111] = mtdata1_t2[MTDATA1_ST];
-	assign trigger_pkt_any[110] = mtdata1_t2[MTDATA1_LD];
-	assign trigger_pkt_any[109] = mtdata1_t2[MTDATA1_EXE];
-	assign trigger_pkt_any[108] = mtdata1_t2[MTDATA1_M_ENABLED];
-	assign trigger_pkt_any[151] = mtdata1_t3[MTDATA1_SEL];
-	assign trigger_pkt_any[150] = mtdata1_t3[MTDATA1_MATCH];
-	assign trigger_pkt_any[149] = mtdata1_t3[MTDATA1_ST];
-	assign trigger_pkt_any[148] = mtdata1_t3[MTDATA1_LD];
-	assign trigger_pkt_any[147] = mtdata1_t3[MTDATA1_EXE];
-	assign trigger_pkt_any[146] = mtdata1_t3[MTDATA1_M_ENABLED];
-	localparam MTDATA2 = 12'h7a2;
-	assign wr_mtdata2_t0_r = ((dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2)) & (mtsel[1:0] == 2'b00)) & (~mtdata1_t0[MTDATA1_DMODE] | dbg_tlu_halted_f);
-	assign wr_mtdata2_t1_r = ((dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2)) & (mtsel[1:0] == 2'b01)) & (~mtdata1_t1[MTDATA1_DMODE] | dbg_tlu_halted_f);
-	assign wr_mtdata2_t2_r = ((dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2)) & (mtsel[1:0] == 2'b10)) & (~mtdata1_t2[MTDATA1_DMODE] | dbg_tlu_halted_f);
-	assign wr_mtdata2_t3_r = ((dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MTDATA2)) & (mtsel[1:0] == 2'b11)) & (~mtdata1_t3[MTDATA1_DMODE] | dbg_tlu_halted_f);
-	rvdffe #(.WIDTH(32)) mtdata2_t0_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mtdata2_t0_r),
-		.din(dec_csr_wrdata_r[31:0]),
-		.dout(mtdata2_t0[31:0])
-	);
-	rvdffe #(.WIDTH(32)) mtdata2_t1_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mtdata2_t1_r),
-		.din(dec_csr_wrdata_r[31:0]),
-		.dout(mtdata2_t1[31:0])
-	);
-	rvdffe #(.WIDTH(32)) mtdata2_t2_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mtdata2_t2_r),
-		.din(dec_csr_wrdata_r[31:0]),
-		.dout(mtdata2_t2[31:0])
-	);
-	rvdffe #(.WIDTH(32)) mtdata2_t3_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mtdata2_t3_r),
-		.din(dec_csr_wrdata_r[31:0]),
-		.dout(mtdata2_t3[31:0])
-	);
-	assign mtdata2_tsel_out[31:0] = ((({32 {mtsel[1:0] == 2'b00}} & mtdata2_t0[31:0]) | ({32 {mtsel[1:0] == 2'b01}} & mtdata2_t1[31:0])) | ({32 {mtsel[1:0] == 2'b10}} & mtdata2_t2[31:0])) | ({32 {mtsel[1:0] == 2'b11}} & mtdata2_t3[31:0]);
-	assign trigger_pkt_any[31-:32] = mtdata2_t0[31:0];
-	assign trigger_pkt_any[69-:32] = mtdata2_t1[31:0];
-	assign trigger_pkt_any[107-:32] = mtdata2_t2[31:0];
-	assign trigger_pkt_any[145-:32] = mtdata2_t3[31:0];
-	localparam MHPME_NOEVENT = 10'd0;
-	localparam MHPME_CLK_ACTIVE = 10'd1;
-	localparam MHPME_ICACHE_HIT = 10'd2;
-	localparam MHPME_ICACHE_MISS = 10'd3;
-	localparam MHPME_INST_COMMIT = 10'd4;
-	localparam MHPME_INST_COMMIT_16B = 10'd5;
-	localparam MHPME_INST_COMMIT_32B = 10'd6;
-	localparam MHPME_INST_ALIGNED = 10'd7;
-	localparam MHPME_INST_DECODED = 10'd8;
-	localparam MHPME_INST_MUL = 10'd9;
-	localparam MHPME_INST_DIV = 10'd10;
-	localparam MHPME_INST_LOAD = 10'd11;
-	localparam MHPME_INST_STORE = 10'd12;
-	localparam MHPME_INST_MALOAD = 10'd13;
-	localparam MHPME_INST_MASTORE = 10'd14;
-	localparam MHPME_INST_ALU = 10'd15;
-	localparam MHPME_INST_CSRREAD = 10'd16;
-	localparam MHPME_INST_CSRRW = 10'd17;
-	localparam MHPME_INST_CSRWRITE = 10'd18;
-	localparam MHPME_INST_EBREAK = 10'd19;
-	localparam MHPME_INST_ECALL = 10'd20;
-	localparam MHPME_INST_FENCE = 10'd21;
-	localparam MHPME_INST_FENCEI = 10'd22;
-	localparam MHPME_INST_MRET = 10'd23;
-	localparam MHPME_INST_BRANCH = 10'd24;
-	localparam MHPME_BRANCH_MP = 10'd25;
-	localparam MHPME_BRANCH_TAKEN = 10'd26;
-	localparam MHPME_BRANCH_NOTP = 10'd27;
-	localparam MHPME_FETCH_STALL = 10'd28;
-	localparam MHPME_DECODE_STALL = 10'd30;
-	localparam MHPME_POSTSYNC_STALL = 10'd31;
-	localparam MHPME_PRESYNC_STALL = 10'd32;
-	localparam MHPME_LSU_SB_WB_STALL = 10'd34;
-	localparam MHPME_DMA_DCCM_STALL = 10'd35;
-	localparam MHPME_DMA_ICCM_STALL = 10'd36;
-	localparam MHPME_EXC_TAKEN = 10'd37;
-	localparam MHPME_TIMER_INT_TAKEN = 10'd38;
-	localparam MHPME_EXT_INT_TAKEN = 10'd39;
-	localparam MHPME_FLUSH_LOWER = 10'd40;
-	localparam MHPME_BR_ERROR = 10'd41;
-	localparam MHPME_IBUS_TRANS = 10'd42;
-	localparam MHPME_DBUS_TRANS = 10'd43;
-	localparam MHPME_DBUS_MA_TRANS = 10'd44;
-	localparam MHPME_IBUS_ERROR = 10'd45;
-	localparam MHPME_DBUS_ERROR = 10'd46;
-	localparam MHPME_IBUS_STALL = 10'd47;
-	localparam MHPME_DBUS_STALL = 10'd48;
-	localparam MHPME_INT_DISABLED = 10'd49;
-	localparam MHPME_INT_STALLED = 10'd50;
-	localparam MHPME_INST_BITMANIP = 10'd54;
-	localparam MHPME_DBUS_LOAD = 10'd55;
-	localparam MHPME_DBUS_STORE = 10'd56;
-	localparam MHPME_SLEEP_CYC = 10'd512;
-	localparam MHPME_DMA_READ_ALL = 10'd513;
-	localparam MHPME_DMA_WRITE_ALL = 10'd514;
-	localparam MHPME_DMA_READ_DCCM = 10'd515;
-	localparam MHPME_DMA_WRITE_DCCM = 10'd516;
-	assign mhpme_vec[9-:10] = mhpme3[9:0];
-	assign mhpme_vec[19-:10] = mhpme4[9:0];
-	assign mhpme_vec[29-:10] = mhpme5[9:0];
-	assign mhpme_vec[39-:10] = mhpme6[9:0];
-	assign pmu_i0_itype_qual[3:0] = dec_tlu_packet_r[3:0] & {4 {tlu_i0_commit_cmt}};
-	localparam [3:0] eb1_pkg_ALU = 4'b0100;
-	localparam [3:0] eb1_pkg_BITMANIPU = 4'b1111;
-	localparam [3:0] eb1_pkg_CONDBR = 4'b1101;
-	localparam [3:0] eb1_pkg_CSRREAD = 4'b0101;
-	localparam [3:0] eb1_pkg_CSRRW = 4'b0111;
-	localparam [3:0] eb1_pkg_CSRWRITE = 4'b0110;
-	localparam [3:0] eb1_pkg_FENCE = 4'b1010;
-	localparam [3:0] eb1_pkg_FENCEI = 4'b1011;
-	localparam [3:0] eb1_pkg_JAL = 4'b1110;
-	localparam [3:0] eb1_pkg_LOAD = 4'b0010;
-	localparam [3:0] eb1_pkg_MUL = 4'b0001;
-	localparam [3:0] eb1_pkg_STORE = 4'b0011;
-	generate
-		genvar i;
-		for (i = 0; i < 4; i = i + 1) assign mhpmc_inc_r[i] = {~mcountinhibit[i + 3]} & ((((((((((((((((((((((((((((((((((((((((((((((((((((((((({mhpme_vec[(i * 10) + 9-:10] == MHPME_CLK_ACTIVE} & 1'b1) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_ICACHE_HIT} & {ifu_pmu_ic_hit})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_ICACHE_MISS} & {ifu_pmu_ic_miss})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_COMMIT} & {tlu_i0_commit_cmt & ~illegal_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_COMMIT_16B} & {(tlu_i0_commit_cmt & ~exu_pmu_i0_pc4) & ~illegal_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_COMMIT_32B} & {(tlu_i0_commit_cmt & exu_pmu_i0_pc4) & ~illegal_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_ALIGNED} & ifu_pmu_instr_aligned)) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_DECODED} & dec_pmu_instr_decoded)) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DECODE_STALL} & {dec_pmu_decode_stall})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_MUL} & {pmu_i0_itype_qual == eb1_pkg_MUL})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_DIV} & {(dec_tlu_packet_r[6] & tlu_i0_commit_cmt) & ~illegal_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_LOAD} & {pmu_i0_itype_qual == eb1_pkg_LOAD})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_STORE} & {pmu_i0_itype_qual == eb1_pkg_STORE})) | (({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_MALOAD} & {pmu_i0_itype_qual == eb1_pkg_LOAD}) & {dec_tlu_packet_r[4]})) | (({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_MASTORE} & {pmu_i0_itype_qual == eb1_pkg_STORE}) & {dec_tlu_packet_r[4]})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_ALU} & {pmu_i0_itype_qual == eb1_pkg_ALU})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_CSRREAD} & {pmu_i0_itype_qual == eb1_pkg_CSRREAD})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_CSRWRITE} & {pmu_i0_itype_qual == eb1_pkg_CSRWRITE})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_CSRRW} & {pmu_i0_itype_qual == eb1_pkg_CSRRW})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_EBREAK} & {pmu_i0_itype_qual == eb1_pkg_EBREAK})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_ECALL} & {pmu_i0_itype_qual == eb1_pkg_ECALL})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_FENCE} & {pmu_i0_itype_qual == eb1_pkg_FENCE})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_FENCEI} & {pmu_i0_itype_qual == eb1_pkg_FENCEI})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_MRET} & {pmu_i0_itype_qual == eb1_pkg_MRET})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_BRANCH} & {(pmu_i0_itype_qual == eb1_pkg_CONDBR) | (pmu_i0_itype_qual == eb1_pkg_JAL)})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_BRANCH_MP} & {(exu_pmu_i0_br_misp & tlu_i0_commit_cmt) & ~illegal_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_BRANCH_TAKEN} & {(exu_pmu_i0_br_ataken & tlu_i0_commit_cmt) & ~illegal_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_BRANCH_NOTP} & {(dec_tlu_packet_r[7] & tlu_i0_commit_cmt) & ~illegal_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_FETCH_STALL} & {ifu_pmu_fetch_stall})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DECODE_STALL} & {dec_pmu_decode_stall})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_POSTSYNC_STALL} & {dec_pmu_postsync_stall})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_PRESYNC_STALL} & {dec_pmu_presync_stall})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_LSU_SB_WB_STALL} & {lsu_store_stall_any})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DMA_DCCM_STALL} & {dma_dccm_stall_any})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DMA_ICCM_STALL} & {dma_iccm_stall_any})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_EXC_TAKEN} & {(i0_exception_valid_r | i0_trigger_hit_r) | lsu_exc_valid_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_TIMER_INT_TAKEN} & {(take_timer_int | take_int_timer0_int) | take_int_timer1_int})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_EXT_INT_TAKEN} & {take_ext_int})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_FLUSH_LOWER} & {tlu_flush_lower_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_BR_ERROR} & {(dec_tlu_br0_error_r | dec_tlu_br0_start_error_r) & rfpc_i0_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_IBUS_TRANS} & {ifu_pmu_bus_trxn})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DBUS_TRANS} & {lsu_pmu_bus_trxn})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DBUS_MA_TRANS} & {lsu_pmu_bus_misaligned})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_IBUS_ERROR} & {ifu_pmu_bus_error})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DBUS_ERROR} & {lsu_pmu_bus_error})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_IBUS_STALL} & {ifu_pmu_bus_busy})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DBUS_STALL} & {lsu_pmu_bus_busy})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INT_DISABLED} & {~mstatus[MSTATUS_MIE]})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INT_STALLED} & {~mstatus[MSTATUS_MIE] & |(mip[5:0] & mie[5:0])})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_INST_BITMANIP} & {pmu_i0_itype_qual == eb1_pkg_BITMANIPU})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DBUS_LOAD} & {(tlu_i0_commit_cmt & lsu_pmu_load_external_r) & ~illegal_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DBUS_STORE} & {(tlu_i0_commit_cmt & lsu_pmu_store_external_r) & ~illegal_r})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_SLEEP_CYC} & {dec_tlu_pmu_fw_halted})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DMA_READ_ALL} & {dma_pmu_any_read})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DMA_WRITE_ALL} & {dma_pmu_any_write})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DMA_READ_DCCM} & {dma_pmu_dccm_read})) | ({mhpme_vec[(i * 10) + 9-:10] == MHPME_DMA_WRITE_DCCM} & {dma_pmu_dccm_write}));
-	endgenerate
-	generate
-		if (pt[1227-:5]) begin
-			rvdffie #(.WIDTH(31)) mstatus_ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(free_l2clk),
-				.din({mdseac_locked_ns, lsu_single_ecc_error_r, lsu_exc_valid_r, lsu_i0_exc_r, take_ext_int_start, take_ext_int_start_d1, take_ext_int_start_d2, ext_int_freeze, mip_ns[5:0], (mcyclel_cout & ~wr_mcycleh_r) & mcyclel_cout_in, minstret_enable, minstretl_cout_ns, fw_halted_ns, meicidpl_ns[3:0], icache_rd_valid, icache_wr_valid, mhpmc_inc_r[3:0], perfcnt_halted, mstatus_ns[1:0]}),
-				.dout({mdseac_locked_f, lsu_single_ecc_error_r_d1, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1, take_ext_int_start_d1, take_ext_int_start_d2, take_ext_int_start_d3, ext_int_freeze_d1, mip[5:0], mcyclel_cout_f, minstret_enable_f, minstretl_cout_f, fw_halted, meicidpl[3:0], icache_rd_valid_f, icache_wr_valid_f, mhpmc_inc_r_d1[3:0], perfcnt_halted_d1, mstatus[1:0]})
-			);
-		end
-		else rvdffie #(.WIDTH(27)) mstatus_ff(
-			.rst_l(rst_l),
-			.scan_mode(scan_mode),
-			.clk(free_l2clk),
-			.din({mdseac_locked_ns, lsu_single_ecc_error_r, lsu_exc_valid_r, lsu_i0_exc_r, mip_ns[5:0], (mcyclel_cout & ~wr_mcycleh_r) & mcyclel_cout_in, minstret_enable, minstretl_cout_ns, fw_halted_ns, meicidpl_ns[3:0], icache_rd_valid, icache_wr_valid, mhpmc_inc_r[3:0], perfcnt_halted, mstatus_ns[1:0]}),
-			.dout({mdseac_locked_f, lsu_single_ecc_error_r_d1, lsu_exc_valid_r_d1, lsu_i0_exc_r_d1, mip[5:0], mcyclel_cout_f, minstret_enable_f, minstretl_cout_f, fw_halted, meicidpl[3:0], icache_rd_valid_f, icache_wr_valid_f, mhpmc_inc_r_d1[3:0], perfcnt_halted_d1, mstatus[1:0]})
-		);
-	endgenerate
-	assign perfcnt_halted = (dec_tlu_dbg_halted & dcsr[DCSR_STOPC]) | dec_tlu_pmu_fw_halted;
-	assign perfcnt_during_sleep[3:0] = {4 {~(dec_tlu_dbg_halted & dcsr[DCSR_STOPC])}} & {mhpme_vec[39], mhpme_vec[29], mhpme_vec[19], mhpme_vec[9]};
-	assign dec_tlu_perfcnt0 = mhpmc_inc_r_d1[0] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[0]);
-	assign dec_tlu_perfcnt1 = mhpmc_inc_r_d1[1] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[1]);
-	assign dec_tlu_perfcnt2 = mhpmc_inc_r_d1[2] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[2]);
-	assign dec_tlu_perfcnt3 = mhpmc_inc_r_d1[3] & ~(perfcnt_halted_d1 & ~perfcnt_during_sleep[3]);
-	localparam MHPMC3 = 12'hb03;
-	localparam MHPMC3H = 12'hb83;
-	assign mhpmc3_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC3);
-	assign mhpmc3_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[0]) & |mhpmc_inc_r[0];
-	assign mhpmc3_wr_en = mhpmc3_wr_en0 | mhpmc3_wr_en1;
-	assign mhpmc3_incr[63:0] = {mhpmc3h[31:0], mhpmc3[31:0]} + 64'b0000000000000000000000000000000000000000000000000000000000000001;
-	assign mhpmc3_ns[31:0] = (mhpmc3_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc3_incr[31:0]);
-	rvdffe #(.WIDTH(32)) mhpmc3_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(mhpmc3_wr_en),
-		.din(mhpmc3_ns[31:0]),
-		.dout(mhpmc3[31:0])
-	);
-	assign mhpmc3h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC3H);
-	assign mhpmc3h_wr_en = mhpmc3h_wr_en0 | mhpmc3_wr_en1;
-	assign mhpmc3h_ns[31:0] = (mhpmc3h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc3_incr[63:32]);
-	rvdffe #(.WIDTH(32)) mhpmc3h_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(mhpmc3h_wr_en),
-		.din(mhpmc3h_ns[31:0]),
-		.dout(mhpmc3h[31:0])
-	);
-	localparam MHPMC4 = 12'hb04;
-	localparam MHPMC4H = 12'hb84;
-	assign mhpmc4_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC4);
-	assign mhpmc4_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[1]) & |mhpmc_inc_r[1];
-	assign mhpmc4_wr_en = mhpmc4_wr_en0 | mhpmc4_wr_en1;
-	assign mhpmc4_incr[63:0] = {mhpmc4h[31:0], mhpmc4[31:0]} + 64'b0000000000000000000000000000000000000000000000000000000000000001;
-	assign mhpmc4_ns[31:0] = (mhpmc4_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc4_incr[31:0]);
-	rvdffe #(.WIDTH(32)) mhpmc4_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(mhpmc4_wr_en),
-		.din(mhpmc4_ns[31:0]),
-		.dout(mhpmc4[31:0])
-	);
-	assign mhpmc4h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC4H);
-	assign mhpmc4h_wr_en = mhpmc4h_wr_en0 | mhpmc4_wr_en1;
-	assign mhpmc4h_ns[31:0] = (mhpmc4h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc4_incr[63:32]);
-	rvdffe #(.WIDTH(32)) mhpmc4h_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(mhpmc4h_wr_en),
-		.din(mhpmc4h_ns[31:0]),
-		.dout(mhpmc4h[31:0])
-	);
-	localparam MHPMC5 = 12'hb05;
-	localparam MHPMC5H = 12'hb85;
-	assign mhpmc5_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC5);
-	assign mhpmc5_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[2]) & |mhpmc_inc_r[2];
-	assign mhpmc5_wr_en = mhpmc5_wr_en0 | mhpmc5_wr_en1;
-	assign mhpmc5_incr[63:0] = {mhpmc5h[31:0], mhpmc5[31:0]} + 64'b0000000000000000000000000000000000000000000000000000000000000001;
-	assign mhpmc5_ns[31:0] = (mhpmc5_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc5_incr[31:0]);
-	rvdffe #(.WIDTH(32)) mhpmc5_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(mhpmc5_wr_en),
-		.din(mhpmc5_ns[31:0]),
-		.dout(mhpmc5[31:0])
-	);
-	assign mhpmc5h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC5H);
-	assign mhpmc5h_wr_en = mhpmc5h_wr_en0 | mhpmc5_wr_en1;
-	assign mhpmc5h_ns[31:0] = (mhpmc5h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc5_incr[63:32]);
-	rvdffe #(.WIDTH(32)) mhpmc5h_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(mhpmc5h_wr_en),
-		.din(mhpmc5h_ns[31:0]),
-		.dout(mhpmc5h[31:0])
-	);
-	localparam MHPMC6 = 12'hb06;
-	localparam MHPMC6H = 12'hb86;
-	assign mhpmc6_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC6);
-	assign mhpmc6_wr_en1 = (~perfcnt_halted | perfcnt_during_sleep[3]) & |mhpmc_inc_r[3];
-	assign mhpmc6_wr_en = mhpmc6_wr_en0 | mhpmc6_wr_en1;
-	assign mhpmc6_incr[63:0] = {mhpmc6h[31:0], mhpmc6[31:0]} + 64'b0000000000000000000000000000000000000000000000000000000000000001;
-	assign mhpmc6_ns[31:0] = (mhpmc6_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc6_incr[31:0]);
-	rvdffe #(.WIDTH(32)) mhpmc6_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(mhpmc6_wr_en),
-		.din(mhpmc6_ns[31:0]),
-		.dout(mhpmc6[31:0])
-	);
-	assign mhpmc6h_wr_en0 = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPMC6H);
-	assign mhpmc6h_wr_en = mhpmc6h_wr_en0 | mhpmc6_wr_en1;
-	assign mhpmc6h_ns[31:0] = (mhpmc6h_wr_en0 ? dec_csr_wrdata_r[31:0] : mhpmc6_incr[63:32]);
-	rvdffe #(.WIDTH(32)) mhpmc6h_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en(mhpmc6h_wr_en),
-		.din(mhpmc6h_ns[31:0]),
-		.dout(mhpmc6h[31:0])
-	);
-	localparam MHPME3 = 12'h323;
-	assign zero_event_r = (((((dec_csr_wrdata_r[9:0] > 10'd516) | |dec_csr_wrdata_r[31:10]) | ((dec_csr_wrdata_r[9:0] < 10'd512) & (dec_csr_wrdata_r[9:0] > 10'd56))) | ((dec_csr_wrdata_r[9:0] < 10'd54) & (dec_csr_wrdata_r[9:0] > 10'd50))) | (dec_csr_wrdata_r[9:0] == 10'd29)) | (dec_csr_wrdata_r[9:0] == 10'd33);
-	assign event_r[9:0] = (zero_event_r ? {10 {1'sb0}} : dec_csr_wrdata_r[9:0]);
-	assign wr_mhpme3_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME3);
-	rvdffe #(.WIDTH(10)) mhpme3_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mhpme3_r),
-		.din(event_r[9:0]),
-		.dout(mhpme3[9:0])
-	);
-	localparam MHPME4 = 12'h324;
-	assign wr_mhpme4_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME4);
-	rvdffe #(.WIDTH(10)) mhpme4_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mhpme4_r),
-		.din(event_r[9:0]),
-		.dout(mhpme4[9:0])
-	);
-	localparam MHPME5 = 12'h325;
-	assign wr_mhpme5_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME5);
-	rvdffe #(.WIDTH(10)) mhpme5_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mhpme5_r),
-		.din(event_r[9:0]),
-		.dout(mhpme5[9:0])
-	);
-	localparam MHPME6 = 12'h326;
-	assign wr_mhpme6_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MHPME6);
-	rvdffe #(.WIDTH(10)) mhpme6_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mhpme6_r),
-		.din(event_r[9:0]),
-		.dout(mhpme6[9:0])
-	);
-	localparam MCOUNTINHIBIT = 12'h320;
-	assign wr_mcountinhibit_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MCOUNTINHIBIT);
-	rvdffs #(.WIDTH(6)) mcountinhibit_ff(
-		.rst_l(rst_l),
-		.clk(csr_wr_clk),
-		.en(wr_mcountinhibit_r),
-		.din({dec_csr_wrdata_r[6:2], dec_csr_wrdata_r[0]}),
-		.dout({mcountinhibit[6:2], mcountinhibit[0]})
-	);
-	assign mcountinhibit[1] = 1'b0;
-	wire [4:0] dec_tlu_exc_cause_wb1_raw;
-	wire [4:0] dec_tlu_exc_cause_wb2;
-	wire dec_tlu_int_valid_wb1_raw;
-	wire dec_tlu_int_valid_wb2;
-	assign {dec_tlu_i0_valid_wb1, dec_tlu_i0_exc_valid_wb1, dec_tlu_exc_cause_wb1_raw[4:0], dec_tlu_int_valid_wb1_raw} = {8 {~dec_tlu_trace_disable}} & {i0_valid_wb, (i0_exception_valid_r_d1 | lsu_i0_exc_r_d1) | (trigger_hit_r_d1 & ~trigger_hit_dmode_r_d1), exc_cause_wb[4:0], interrupt_valid_r_d1};
-	rvdffie #(
-		.WIDTH(6),
-		.OVERRIDE(1)
-	) traceskidff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.din({dec_tlu_exc_cause_wb1_raw[4:0], dec_tlu_int_valid_wb1_raw}),
-		.dout({dec_tlu_exc_cause_wb2[4:0], dec_tlu_int_valid_wb2})
-	);
-	assign dec_tlu_exc_cause_wb1[4:0] = (dec_tlu_int_valid_wb2 ? dec_tlu_exc_cause_wb2[4:0] : dec_tlu_exc_cause_wb1_raw[4:0]);
-	assign dec_tlu_int_valid_wb1 = dec_tlu_int_valid_wb2;
-	assign dec_tlu_mtval_wb1 = mtval[31:0];
-	assign csr_misa = (((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[0];
-	assign csr_mvendorid = ((dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_marchid = ((dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mimpid = ((dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_mhartid = (dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[2];
-	assign csr_mstatus = (((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[0];
-	assign csr_mtvec = (((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[0];
-	assign csr_mip = (!dec_csr_rdaddr_d[7] & dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[2];
-	assign csr_mie = (((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[0];
-	assign csr_mcyclel = ((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1];
-	assign csr_mcycleh = (((((dec_csr_rdaddr_d[7] & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1];
-	assign csr_minstretl = (((((!dec_csr_rdaddr_d[7] & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_minstreth = (((((!dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mscratch = (((!dec_csr_rdaddr_d[7] & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mepc = ((!dec_csr_rdaddr_d[7] & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_mcause = ((!dec_csr_rdaddr_d[7] & dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mscause = (dec_csr_rdaddr_d[6] & dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[2];
-	assign csr_mtval = ((!dec_csr_rdaddr_d[7] & dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_mrac = ((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1];
-	assign csr_dmst = (((dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1];
-	assign csr_mdseac = ((dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3];
-	assign csr_meihap = (dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[3];
-	assign csr_meivt = ((((!dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_meipt = ((dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_meicurpl = (dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[2];
-	assign csr_meicidpl = ((dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_dcsr = (((dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[0];
-	assign csr_mcgc = ((dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[0];
-	assign csr_mfdc = (((dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_dpc = (((dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[0];
-	assign csr_mtsel = (((dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mtdata1 = ((dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[0];
-	assign csr_mtdata2 = ((dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[1];
-	assign csr_mhpmc3 = ((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[0];
-	assign csr_mhpmc4 = (((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mhpmc5 = ((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_mhpmc6 = (((((!dec_csr_rdaddr_d[7] & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mhpmc3h = ((((dec_csr_rdaddr_d[7] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_mhpmc4h = (((((dec_csr_rdaddr_d[7] & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mhpmc5h = ((((dec_csr_rdaddr_d[7] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_mhpmc6h = (((((dec_csr_rdaddr_d[7] & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mhpme3 = ((((!dec_csr_rdaddr_d[7] & dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[0];
-	assign csr_mhpme4 = ((((dec_csr_rdaddr_d[5] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mhpme5 = ((((dec_csr_rdaddr_d[5] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_mhpme6 = ((((dec_csr_rdaddr_d[5] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mcountinhibit = ((((!dec_csr_rdaddr_d[7] & dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[0];
-	assign csr_mitctl0 = (((dec_csr_rdaddr_d[6] & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mitctl1 = (((dec_csr_rdaddr_d[6] & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_mitb0 = (((dec_csr_rdaddr_d[6] & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[0];
-	assign csr_mitb1 = (((dec_csr_rdaddr_d[6] & dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mitcnt0 = (((dec_csr_rdaddr_d[6] & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[0];
-	assign csr_mitcnt1 = ((dec_csr_rdaddr_d[6] & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_mpmc = (((dec_csr_rdaddr_d[6] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1];
-	assign csr_meicpct = ((dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_micect = (((dec_csr_rdaddr_d[6] & dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_miccmect = ((dec_csr_rdaddr_d[6] & dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[0];
-	assign csr_mdccmect = ((dec_csr_rdaddr_d[6] & dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mfdht = (((dec_csr_rdaddr_d[6] & dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_mfdhs = ((dec_csr_rdaddr_d[6] & !dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[0];
-	assign csr_dicawics = ((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_dicad0h = ((dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1];
-	assign csr_dicad0 = (((dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign csr_dicad1 = (((dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0];
-	assign csr_dicago = (((dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0];
-	assign presync = ((((((((dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0]) | (((((!dec_csr_rdaddr_d[7] & dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[0])) | (((((!dec_csr_rdaddr_d[6] & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1])) | ((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1])) | ((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0])) | (((((dec_csr_rdaddr_d[7] & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]);
-	assign postsync = (((((((((dec_csr_rdaddr_d[10] & dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0]) | ((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[0])) | (((!dec_csr_rdaddr_d[7] & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0])) | (((dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[0])) | ((((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[0])) | (((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[1])) | ((((dec_csr_rdaddr_d[10] & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]);
-	assign legal = (((((((((((((((((((((((((((((((((((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0]) | (((((((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[1])) | ((((((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0])) | (((((((((dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0])) | ((((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[0])) | (((((((((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0])) | (((((((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1])) | (((((((((dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[0])) | (((((((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1])) | (((((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[2])) | ((((((((((dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0])) | (((((((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[1])) | (((((((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[2])) | (((((((((dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & dec_csr_rdaddr_d[1])) | ((((((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[1]) & dec_csr_rdaddr_d[0])) | ((((((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2])) | (((((((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0])) | ((((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[2])) | (((((((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & dec_csr_rdaddr_d[1])) | ((((((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[0])) | (((((((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2])) | ((((((((((!dec_csr_rdaddr_d[11] & dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2]) & !dec_csr_rdaddr_d[0])) | ((((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[1])) | (((((((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[2])) | (((((((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[5]) & !dec_csr_rdaddr_d[4]) & !dec_csr_rdaddr_d[3]) & !dec_csr_rdaddr_d[1]) & !dec_csr_rdaddr_d[0])) | (((((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[3])) | ((((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[3])) | (((((((!dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[7]) & !dec_csr_rdaddr_d[6]) & dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4])) | ((((((dec_csr_rdaddr_d[11] & !dec_csr_rdaddr_d[10]) & dec_csr_rdaddr_d[9]) & dec_csr_rdaddr_d[8]) & !dec_csr_rdaddr_d[6]) & !dec_csr_rdaddr_d[5]) & dec_csr_rdaddr_d[4]);
-	assign dec_tlu_presync_d = (presync & dec_csr_any_unq_d) & ~dec_csr_wen_unq_d;
-	assign dec_tlu_postsync_d = postsync & dec_csr_any_unq_d;
-	assign conditionally_illegal = (((((csr_mitcnt0 | csr_mitcnt1) | csr_mitb0) | csr_mitb1) | csr_mitctl0) | csr_mitctl1) & !pt[4-:5];
-	assign valid_csr = ((legal & (~(((((((csr_dcsr | csr_dpc) | csr_dmst) | csr_dicawics) | csr_dicad0) | csr_dicad0h) | csr_dicad1) | csr_dicago) | dbg_tlu_halted_f)) & ~fast_int_meicpct) & ~conditionally_illegal;
-	assign dec_csr_legal_d = (dec_csr_any_unq_d & valid_csr) & ~(dec_csr_wen_unq_d & (((((csr_mvendorid | csr_marchid) | csr_mimpid) | csr_mhartid) | csr_mdseac) | csr_meihap));
-	assign dec_csr_rddata_d[31:0] = ((((((((((((((((((((((((((((((((((((((((((((((((((((((({32 {csr_misa}} & 32'h40201104) | ({32 {csr_mvendorid}} & 32'h00000045)) | ({32 {csr_marchid}} & 32'h00000010)) | ({32 {csr_mimpid}} & 32'h00000003)) | ({32 {csr_mhartid}} & {core_id[31:4], 4'b0000})) | ({32 {csr_mstatus}} & {{15 {1'b0}}, 2'b01, 2'b00, 2'b11, 3'b000, mstatus[1], 3'b000, mstatus[0], 3'b000})) | ({32 {csr_mtvec}} & {mtvec[30:1], 1'b0, mtvec[0]})) | ({32 {csr_mip}} & {1'b0, mip[5:3], 16'b0000000000000000, mip[2], 3'b000, mip[1], 3'b000, mip[0], 3'b000})) | ({32 {csr_mie}} & {1'b0, mie[5:3], 16'b0000000000000000, mie[2], 3'b000, mie[1], 3'b000, mie[0], 3'b000})) | ({32 {csr_mcyclel}} & mcyclel[31:0])) | ({32 {csr_mcycleh}} & mcycleh_inc[31:0])) | ({32 {csr_minstretl}} & minstretl_read[31:0])) | ({32 {csr_minstreth}} & minstreth_read[31:0])) | ({32 {csr_mscratch}} & mscratch[31:0])) | ({32 {csr_mepc}} & {mepc[31:1], 1'b0})) | ({32 {csr_mcause}} & mcause[31:0])) | ({32 {csr_mscause}} & {28'b0000000000000000000000000000, mscause[3:0]})) | ({32 {csr_mtval}} & mtval[31:0])) | ({32 {csr_mrac}} & mrac[31:0])) | ({32 {csr_mdseac}} & mdseac[31:0])) | ({32 {csr_meivt}} & {meivt[31:10], 10'b0000000000})) | ({32 {csr_meihap}} & {meivt[31:10], meihap[9:2], 2'b00})) | ({32 {csr_meicurpl}} & {28'b0000000000000000000000000000, meicurpl[3:0]})) | ({32 {csr_meicidpl}} & {28'b0000000000000000000000000000, meicidpl[3:0]})) | ({32 {csr_meipt}} & {28'b0000000000000000000000000000, meipt[3:0]})) | ({32 {csr_mcgc}} & {22'b0000000000000000000000, mcgc[9:0]})) | ({32 {csr_mfdc}} & {13'b0000000000000, mfdc[18:0]})) | ({32 {csr_dcsr}} & {16'h4000, dcsr[15:2], 2'b11})) | ({32 {csr_dpc}} & {dpc[31:1], 1'b0})) | ({32 {csr_dicad0}} & dicad0[31:0])) | ({32 {csr_dicad0h}} & dicad0h[31:0])) | ({32 {csr_dicad1}} & dicad1[31:0])) | ({32 {csr_dicawics}} & {7'b0000000, dicawics[16], 2'b00, dicawics[15:14], 3'b000, dicawics[13:0], 3'b000})) | ({32 {csr_mtsel}} & {30'b000000000000000000000000000000, mtsel[1:0]})) | ({32 {csr_mtdata1}} & {mtdata1_tsel_out[31:0]})) | ({32 {csr_mtdata2}} & {mtdata2_tsel_out[31:0]})) | ({32 {csr_micect}} & {micect[31:0]})) | ({32 {csr_miccmect}} & {miccmect[31:0]})) | ({32 {csr_mdccmect}} & {mdccmect[31:0]})) | ({32 {csr_mhpmc3}} & mhpmc3[31:0])) | ({32 {csr_mhpmc4}} & mhpmc4[31:0])) | ({32 {csr_mhpmc5}} & mhpmc5[31:0])) | ({32 {csr_mhpmc6}} & mhpmc6[31:0])) | ({32 {csr_mhpmc3h}} & mhpmc3h[31:0])) | ({32 {csr_mhpmc4h}} & mhpmc4h[31:0])) | ({32 {csr_mhpmc5h}} & mhpmc5h[31:0])) | ({32 {csr_mhpmc6h}} & mhpmc6h[31:0])) | ({32 {csr_mfdht}} & {26'b00000000000000000000000000, mfdht[5:0]})) | ({32 {csr_mfdhs}} & {30'b000000000000000000000000000000, mfdhs[1:0]})) | ({32 {csr_mhpme3}} & {22'b0000000000000000000000, mhpme3[9:0]})) | ({32 {csr_mhpme4}} & {22'b0000000000000000000000, mhpme4[9:0]})) | ({32 {csr_mhpme5}} & {22'b0000000000000000000000, mhpme5[9:0]})) | ({32 {csr_mhpme6}} & {22'b0000000000000000000000, mhpme6[9:0]})) | ({32 {csr_mcountinhibit}} & {25'b0000000000000000000000000, mcountinhibit[6:0]})) | ({32 {csr_mpmc}} & {30'b000000000000000000000000000000, mpmc[1], 1'b0})) | ({32 {dec_timer_read_d}} & dec_timer_rddata_d[31:0]);
-endmodule
-module eb1_dec_timer_ctl (
-	clk,
-	free_l2clk,
-	csr_wr_clk,
-	rst_l,
-	dec_csr_wen_r_mod,
-	dec_csr_wraddr_r,
-	dec_csr_wrdata_r,
-	csr_mitctl0,
-	csr_mitctl1,
-	csr_mitb0,
-	csr_mitb1,
-	csr_mitcnt0,
-	csr_mitcnt1,
-	dec_pause_state,
-	dec_tlu_pmu_fw_halted,
-	internal_dbg_halt_timers,
-	dec_timer_rddata_d,
-	dec_timer_read_d,
-	dec_timer_t0_pulse,
-	dec_timer_t1_pulse,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire free_l2clk;
-	input wire csr_wr_clk;
-	input wire rst_l;
-	input wire dec_csr_wen_r_mod;
-	input wire [11:0] dec_csr_wraddr_r;
-	input wire [31:0] dec_csr_wrdata_r;
-	input wire csr_mitctl0;
-	input wire csr_mitctl1;
-	input wire csr_mitb0;
-	input wire csr_mitb1;
-	input wire csr_mitcnt0;
-	input wire csr_mitcnt1;
-	input wire dec_pause_state;
-	input wire dec_tlu_pmu_fw_halted;
-	input wire internal_dbg_halt_timers;
-	output wire [31:0] dec_timer_rddata_d;
-	output wire dec_timer_read_d;
-	output wire dec_timer_t0_pulse;
-	output wire dec_timer_t1_pulse;
-	input wire scan_mode;
-	localparam MITCTL_ENABLE = 0;
-	localparam MITCTL_ENABLE_HALTED = 1;
-	localparam MITCTL_ENABLE_PAUSED = 2;
-	wire [31:0] mitcnt0_ns;
-	wire [31:0] mitcnt0;
-	wire [31:0] mitcnt1_ns;
-	wire [31:0] mitcnt1;
-	wire [31:0] mitb0;
-	wire [31:0] mitb1;
-	wire [31:0] mitb0_b;
-	wire [31:0] mitb1_b;
-	wire [31:0] mitcnt0_inc;
-	wire [31:0] mitcnt1_inc;
-	wire [2:0] mitctl0_ns;
-	wire [2:0] mitctl0;
-	wire [3:0] mitctl1_ns;
-	wire [3:0] mitctl1;
-	wire wr_mitcnt0_r;
-	wire wr_mitcnt1_r;
-	wire wr_mitb0_r;
-	wire wr_mitb1_r;
-	wire wr_mitctl0_r;
-	wire wr_mitctl1_r;
-	wire mitcnt0_inc_ok;
-	wire mitcnt1_inc_ok;
-	wire mitcnt0_inc_cout;
-	wire mitcnt1_inc_cout;
-	wire mit0_match_ns;
-	wire mit1_match_ns;
-	wire mitctl0_0_b_ns;
-	wire mitctl0_0_b;
-	wire mitctl1_0_b_ns;
-	wire mitctl1_0_b;
-	assign mit0_match_ns = mitcnt0[31:0] >= mitb0[31:0];
-	assign mit1_match_ns = mitcnt1[31:0] >= mitb1[31:0];
-	assign dec_timer_t0_pulse = mit0_match_ns;
-	assign dec_timer_t1_pulse = mit1_match_ns;
-	localparam MITCNT0 = 12'h7d2;
-	assign wr_mitcnt0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCNT0);
-	assign mitcnt0_inc_ok = ((mitctl0[MITCTL_ENABLE] & (~dec_pause_state | mitctl0[MITCTL_ENABLE_PAUSED])) & (~dec_tlu_pmu_fw_halted | mitctl0[MITCTL_ENABLE_HALTED])) & ~internal_dbg_halt_timers;
-	assign {mitcnt0_inc_cout, mitcnt0_inc[7:0]} = mitcnt0[7:0] + 8'b00000001;
-	assign mitcnt0_inc[31:8] = mitcnt0[31:8] + {23'b00000000000000000000000, mitcnt0_inc_cout};
-	assign mitcnt0_ns[31:0] = (wr_mitcnt0_r ? dec_csr_wrdata_r[31:0] : (mit0_match_ns ? 'b0 : mitcnt0_inc[31:0]));
-	rvdffe #(.WIDTH(24)) mitcnt0_ffb(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en((wr_mitcnt0_r | (mitcnt0_inc_ok & mitcnt0_inc_cout)) | mit0_match_ns),
-		.din(mitcnt0_ns[31:8]),
-		.dout(mitcnt0[31:8])
-	);
-	rvdffe #(.WIDTH(8)) mitcnt0_ffa(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en((wr_mitcnt0_r | mitcnt0_inc_ok) | mit0_match_ns),
-		.din(mitcnt0_ns[7:0]),
-		.dout(mitcnt0[7:0])
-	);
-	localparam MITCNT1 = 12'h7d5;
-	assign wr_mitcnt1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCNT1);
-	assign mitcnt1_inc_ok = (((mitctl1[MITCTL_ENABLE] & (~dec_pause_state | mitctl1[MITCTL_ENABLE_PAUSED])) & (~dec_tlu_pmu_fw_halted | mitctl1[MITCTL_ENABLE_HALTED])) & ~internal_dbg_halt_timers) & (~mitctl1[3] | mit0_match_ns);
-	assign {mitcnt1_inc_cout, mitcnt1_inc[7:0]} = mitcnt1[7:0] + 8'b00000001;
-	assign mitcnt1_inc[31:8] = mitcnt1[31:8] + {23'b00000000000000000000000, mitcnt1_inc_cout};
-	assign mitcnt1_ns[31:0] = (wr_mitcnt1_r ? dec_csr_wrdata_r[31:0] : (mit1_match_ns ? 'b0 : mitcnt1_inc[31:0]));
-	rvdffe #(.WIDTH(24)) mitcnt1_ffb(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en((wr_mitcnt1_r | (mitcnt1_inc_ok & mitcnt1_inc_cout)) | mit1_match_ns),
-		.din(mitcnt1_ns[31:8]),
-		.dout(mitcnt1[31:8])
-	);
-	rvdffe #(.WIDTH(8)) mitcnt1_ffa(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.en((wr_mitcnt1_r | mitcnt1_inc_ok) | mit1_match_ns),
-		.din(mitcnt1_ns[7:0]),
-		.dout(mitcnt1[7:0])
-	);
-	localparam MITB0 = 12'h7d3;
-	assign wr_mitb0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITB0);
-	rvdffe #(.WIDTH(32)) mitb0_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mitb0_r),
-		.din(~dec_csr_wrdata_r[31:0]),
-		.dout(mitb0_b[31:0])
-	);
-	assign mitb0[31:0] = ~mitb0_b[31:0];
-	localparam MITB1 = 12'h7d6;
-	assign wr_mitb1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITB1);
-	rvdffe #(.WIDTH(32)) mitb1_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(wr_mitb1_r),
-		.din(~dec_csr_wrdata_r[31:0]),
-		.dout(mitb1_b[31:0])
-	);
-	assign mitb1[31:0] = ~mitb1_b[31:0];
-	localparam MITCTL0 = 12'h7d4;
-	assign wr_mitctl0_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCTL0);
-	assign mitctl0_ns[2:0] = (wr_mitctl0_r ? {dec_csr_wrdata_r[2:0]} : {mitctl0[2:0]});
-	assign mitctl0_0_b_ns = ~mitctl0_ns[0];
-	rvdffs #(.WIDTH(3)) mitctl0_ff(
-		.rst_l(rst_l),
-		.clk(csr_wr_clk),
-		.en(wr_mitctl0_r),
-		.din({mitctl0_ns[2:1], mitctl0_0_b_ns}),
-		.dout({mitctl0[2:1], mitctl0_0_b})
-	);
-	assign mitctl0[0] = ~mitctl0_0_b;
-	localparam MITCTL1 = 12'h7d7;
-	assign wr_mitctl1_r = dec_csr_wen_r_mod & (dec_csr_wraddr_r[11:0] == MITCTL1);
-	assign mitctl1_ns[3:0] = (wr_mitctl1_r ? {dec_csr_wrdata_r[3:0]} : {mitctl1[3:0]});
-	assign mitctl1_0_b_ns = ~mitctl1_ns[0];
-	rvdffs #(.WIDTH(4)) mitctl1_ff(
-		.rst_l(rst_l),
-		.clk(csr_wr_clk),
-		.en(wr_mitctl1_r),
-		.din({mitctl1_ns[3:1], mitctl1_0_b_ns}),
-		.dout({mitctl1[3:1], mitctl1_0_b})
-	);
-	assign mitctl1[0] = ~mitctl1_0_b;
-	assign dec_timer_read_d = ((((csr_mitcnt1 | csr_mitcnt0) | csr_mitb1) | csr_mitb0) | csr_mitctl0) | csr_mitctl1;
-	assign dec_timer_rddata_d[31:0] = ((((({32 {csr_mitcnt0}} & mitcnt0[31:0]) | ({32 {csr_mitcnt1}} & mitcnt1[31:0])) | ({32 {csr_mitb0}} & mitb0[31:0])) | ({32 {csr_mitb1}} & mitb1[31:0])) | ({32 {csr_mitctl0}} & {29'b00000000000000000000000000000, mitctl0[2:0]})) | ({32 {csr_mitctl1}} & {28'b0000000000000000000000000000, mitctl1[3:0]});
-endmodule
-module eb1_dec_trigger (
-	trigger_pkt_any,
-	dec_i0_pc_d,
-	dec_i0_trigger_match_d
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire [151:0] trigger_pkt_any;
-	input wire [31:1] dec_i0_pc_d;
-	output wire [3:0] dec_i0_trigger_match_d;
-	wire [127:0] dec_i0_match_data;
-	wire [3:0] dec_i0_trigger_data_match;
-	generate
-		genvar i;
-		for (i = 0; i < 4; i = i + 1) begin
-			assign dec_i0_match_data[(i * 32) + 31-:32] = {32 {~trigger_pkt_any[(i * 38) + 37] & trigger_pkt_any[(i * 38) + 33]}} & {dec_i0_pc_d[31:1], trigger_pkt_any[i * 38]};
-			rvmaskandmatch trigger_i0_match(
-				.mask(trigger_pkt_any[(i * 38) + 31-:32]),
-				.data(dec_i0_match_data[(i * 32) + 31-:32]),
-				.masken(trigger_pkt_any[(i * 38) + 36]),
-				.match(dec_i0_trigger_data_match[i])
-			);
-			assign dec_i0_trigger_match_d[i] = (trigger_pkt_any[(i * 38) + 33] & trigger_pkt_any[(i * 38) + 32]) & dec_i0_trigger_data_match[i];
-		end
-	endgenerate
-endmodule
-module eb1_exu (
-	clk,
-	rst_l,
-	scan_mode,
-	dec_data_en,
-	dec_ctl_en,
-	dbg_cmd_wrdata,
-	i0_ap,
-	dec_debug_wdata_rs1_d,
-	dec_i0_predict_p_d,
-	i0_predict_fghr_d,
-	i0_predict_index_d,
-	i0_predict_btag_d,
-	lsu_result_m,
-	lsu_nonblock_load_data,
-	dec_i0_rs1_en_d,
-	dec_i0_rs2_en_d,
-	gpr_i0_rs1_d,
-	gpr_i0_rs2_d,
-	dec_i0_immed_d,
-	dec_i0_result_r,
-	dec_i0_br_immed_d,
-	dec_i0_alu_decode_d,
-	dec_i0_branch_d,
-	dec_i0_select_pc_d,
-	dec_i0_pc_d,
-	dec_i0_rs1_bypass_en_d,
-	dec_i0_rs2_bypass_en_d,
-	dec_csr_ren_d,
-	dec_csr_rddata_d,
-	dec_qual_lsu_d,
-	mul_p,
-	div_p,
-	dec_div_cancel,
-	pred_correct_npc_x,
-	dec_tlu_flush_lower_r,
-	dec_tlu_flush_path_r,
-	dec_extint_stall,
-	dec_tlu_meihap,
-	exu_lsu_rs1_d,
-	exu_lsu_rs2_d,
-	exu_flush_final,
-	exu_flush_path_final,
-	exu_i0_result_x,
-	exu_i0_pc_x,
-	exu_csr_rs1_x,
-	exu_npc_r,
-	exu_i0_br_hist_r,
-	exu_i0_br_error_r,
-	exu_i0_br_start_error_r,
-	exu_i0_br_index_r,
-	exu_i0_br_valid_r,
-	exu_i0_br_mp_r,
-	exu_i0_br_middle_r,
-	exu_i0_br_fghr_r,
-	exu_i0_br_way_r,
-	exu_mp_pkt,
-	exu_mp_eghr,
-	exu_mp_fghr,
-	exu_mp_index,
-	exu_mp_btag,
-	exu_pmu_i0_br_misp,
-	exu_pmu_i0_br_ataken,
-	exu_pmu_i0_pc4,
-	exu_div_result,
-	exu_div_wren
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire [1:0] dec_data_en;
-	input wire [1:0] dec_ctl_en;
-	input wire [31:0] dbg_cmd_wrdata;
-	input wire [43:0] i0_ap;
-	input wire dec_debug_wdata_rs1_d;
-	input wire [55:0] dec_i0_predict_p_d;
-	input wire [pt[2236-:8] - 1:0] i0_predict_fghr_d;
-	input wire [pt[2172-:9]:pt[2163-:6]] i0_predict_index_d;
-	input wire [pt[2139-:9] - 1:0] i0_predict_btag_d;
-	input wire [31:0] lsu_result_m;
-	input wire [31:0] lsu_nonblock_load_data;
-	input wire dec_i0_rs1_en_d;
-	input wire dec_i0_rs2_en_d;
-	input wire [31:0] gpr_i0_rs1_d;
-	input wire [31:0] gpr_i0_rs2_d;
-	input wire [31:0] dec_i0_immed_d;
-	input wire [31:0] dec_i0_result_r;
-	input wire [12:1] dec_i0_br_immed_d;
-	input wire dec_i0_alu_decode_d;
-	input wire dec_i0_branch_d;
-	input wire dec_i0_select_pc_d;
-	input wire [31:1] dec_i0_pc_d;
-	input wire [3:0] dec_i0_rs1_bypass_en_d;
-	input wire [3:0] dec_i0_rs2_bypass_en_d;
-	input wire dec_csr_ren_d;
-	input wire [31:0] dec_csr_rddata_d;
-	input wire dec_qual_lsu_d;
-	input wire [19:0] mul_p;
-	input wire [2:0] div_p;
-	input wire dec_div_cancel;
-	input wire [31:1] pred_correct_npc_x;
-	input wire dec_tlu_flush_lower_r;
-	input wire [31:1] dec_tlu_flush_path_r;
-	input wire dec_extint_stall;
-	input wire [31:2] dec_tlu_meihap;
-	output wire [31:0] exu_lsu_rs1_d;
-	output wire [31:0] exu_lsu_rs2_d;
-	output wire exu_flush_final;
-	output wire [31:1] exu_flush_path_final;
-	output wire [31:0] exu_i0_result_x;
-	output wire [31:1] exu_i0_pc_x;
-	output wire [31:0] exu_csr_rs1_x;
-	output wire [31:1] exu_npc_r;
-	output wire [1:0] exu_i0_br_hist_r;
-	output wire exu_i0_br_error_r;
-	output wire exu_i0_br_start_error_r;
-	output wire [pt[2172-:9]:pt[2163-:6]] exu_i0_br_index_r;
-	output wire exu_i0_br_valid_r;
-	output wire exu_i0_br_mp_r;
-	output wire exu_i0_br_middle_r;
-	output wire [pt[2236-:8] - 1:0] exu_i0_br_fghr_r;
-	output wire exu_i0_br_way_r;
-	output wire [55:0] exu_mp_pkt;
-	output wire [pt[2236-:8] - 1:0] exu_mp_eghr;
-	output wire [pt[2236-:8] - 1:0] exu_mp_fghr;
-	output wire [pt[2172-:9]:pt[2163-:6]] exu_mp_index;
-	output wire [pt[2139-:9] - 1:0] exu_mp_btag;
-	output wire exu_pmu_i0_br_misp;
-	output wire exu_pmu_i0_br_ataken;
-	output wire exu_pmu_i0_pc4;
-	output wire [31:0] exu_div_result;
-	output wire exu_div_wren;
-	wire [31:0] i0_rs1_bypass_data_d;
-	wire [31:0] i0_rs2_bypass_data_d;
-	wire i0_rs1_bypass_en_d;
-	wire i0_rs2_bypass_en_d;
-	wire [31:0] i0_rs1_d;
-	wire [31:0] i0_rs2_d;
-	wire [31:0] muldiv_rs1_d;
-	wire [31:1] pred_correct_npc_r;
-	wire i0_pred_correct_upper_r;
-	wire [31:1] i0_flush_path_upper_r;
-	wire x_data_en;
-	wire x_data_en_q1;
-	wire x_data_en_q2;
-	wire r_data_en;
-	wire r_data_en_q2;
-	wire x_ctl_en;
-	wire r_ctl_en;
-	wire [pt[2236-:8] - 1:0] ghr_d_ns;
-	wire [pt[2236-:8] - 1:0] ghr_d;
-	wire [pt[2236-:8] - 1:0] ghr_x_ns;
-	wire [pt[2236-:8] - 1:0] ghr_x;
-	wire i0_taken_d;
-	wire i0_taken_x;
-	wire i0_valid_d;
-	wire i0_valid_x;
-	wire [pt[2236-:8] - 1:0] after_flush_eghr;
-	wire [55:0] final_predict_mp;
-	reg [55:0] i0_predict_newp_d;
-	wire flush_in_d;
-	wire [31:0] alu_result_x;
-	wire mul_valid_x;
-	wire [31:0] mul_result_x;
-	wire [55:0] i0_pp_r;
-	wire i0_flush_upper_d;
-	wire [31:1] i0_flush_path_d;
-	wire [55:0] i0_predict_p_d;
-	wire i0_pred_correct_upper_d;
-	wire i0_flush_upper_x;
-	wire [31:1] i0_flush_path_x;
-	wire [55:0] i0_predict_p_x;
-	wire i0_pred_correct_upper_x;
-	wire i0_branch_x;
-	localparam PREDPIPESIZE = (((pt[2172-:9] - pt[2163-:6]) + 1) + pt[2236-:8]) + pt[2139-:9];
-	wire [PREDPIPESIZE - 1:0] predpipe_d;
-	wire [PREDPIPESIZE - 1:0] predpipe_x;
-	wire [PREDPIPESIZE - 1:0] predpipe_r;
-	wire [PREDPIPESIZE - 1:0] final_predpipe_mp;
-	rvdffpcie #(.WIDTH(31)) i_flush_path_x_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(x_data_en),
-		.din(i0_flush_path_d[31:1]),
-		.dout(i0_flush_path_x[31:1])
-	);
-	rvdffe #(.WIDTH(32)) i_csr_rs1_x_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(x_data_en_q1),
-		.din(i0_rs1_d[31:0]),
-		.dout(exu_csr_rs1_x[31:0])
-	);
-	rvdffppe #(.WIDTH(56)) i_predictpacket_x_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(x_data_en),
-		.din(i0_predict_p_d),
-		.dout(i0_predict_p_x)
-	);
-	rvdffe #(.WIDTH(PREDPIPESIZE)) i_predpipe_x_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(x_data_en_q2),
-		.din(predpipe_d),
-		.dout(predpipe_x)
-	);
-	rvdffe #(.WIDTH(PREDPIPESIZE)) i_predpipe_r_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(r_data_en_q2),
-		.din(predpipe_x),
-		.dout(predpipe_r)
-	);
-	rvdffe #(.WIDTH(4 + pt[2236-:8])) i_x_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(x_ctl_en),
-		.din({i0_valid_d, i0_taken_d, i0_flush_upper_d, i0_pred_correct_upper_d, ghr_x_ns[pt[2236-:8] - 1:0]}),
-		.dout({i0_valid_x, i0_taken_x, i0_flush_upper_x, i0_pred_correct_upper_x, ghr_x[pt[2236-:8] - 1:0]})
-	);
-	rvdffppe #(.WIDTH(57)) i_r_ff0(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(r_ctl_en),
-		.din({i0_pred_correct_upper_x, i0_predict_p_x}),
-		.dout({i0_pred_correct_upper_r, i0_pp_r})
-	);
-	rvdffpcie #(.WIDTH(31)) i_flush_r_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(r_data_en),
-		.din(i0_flush_path_x[31:1]),
-		.dout(i0_flush_path_upper_r[31:1])
-	);
-	rvdffpcie #(.WIDTH(31)) i_npc_r_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(r_data_en),
-		.din(pred_correct_npc_x[31:1]),
-		.dout(pred_correct_npc_r[31:1])
-	);
-	rvdffie #(
-		.WIDTH(pt[2236-:8] + 2),
-		.OVERRIDE(1)
-	) i_misc_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.din({ghr_d_ns[pt[2236-:8] - 1:0], mul_p[19], dec_i0_branch_d}),
-		.dout({ghr_d[pt[2236-:8] - 1:0], mul_valid_x, i0_branch_x})
-	);
-	assign predpipe_d[PREDPIPESIZE - 1:0] = {i0_predict_fghr_d, i0_predict_index_d, i0_predict_btag_d};
-	assign i0_rs1_bypass_en_d = ((dec_i0_rs1_bypass_en_d[0] | dec_i0_rs1_bypass_en_d[1]) | dec_i0_rs1_bypass_en_d[2]) | dec_i0_rs1_bypass_en_d[3];
-	assign i0_rs2_bypass_en_d = ((dec_i0_rs2_bypass_en_d[0] | dec_i0_rs2_bypass_en_d[1]) | dec_i0_rs2_bypass_en_d[2]) | dec_i0_rs2_bypass_en_d[3];
-	assign i0_rs1_bypass_data_d[31:0] = ((({32 {dec_i0_rs1_bypass_en_d[0]}} & dec_i0_result_r[31:0]) | ({32 {dec_i0_rs1_bypass_en_d[1]}} & lsu_result_m[31:0])) | ({32 {dec_i0_rs1_bypass_en_d[2]}} & exu_i0_result_x[31:0])) | ({32 {dec_i0_rs1_bypass_en_d[3]}} & lsu_nonblock_load_data[31:0]);
-	assign i0_rs2_bypass_data_d[31:0] = ((({32 {dec_i0_rs2_bypass_en_d[0]}} & dec_i0_result_r[31:0]) | ({32 {dec_i0_rs2_bypass_en_d[1]}} & lsu_result_m[31:0])) | ({32 {dec_i0_rs2_bypass_en_d[2]}} & exu_i0_result_x[31:0])) | ({32 {dec_i0_rs2_bypass_en_d[3]}} & lsu_nonblock_load_data[31:0]);
-	assign i0_rs1_d[31:0] = ((({32 {i0_rs1_bypass_en_d}} & i0_rs1_bypass_data_d[31:0]) | ({32 {~i0_rs1_bypass_en_d & dec_i0_select_pc_d}} & {dec_i0_pc_d[31:1], 1'b0})) | ({32 {~i0_rs1_bypass_en_d & dec_debug_wdata_rs1_d}} & dbg_cmd_wrdata[31:0])) | ({32 {(~i0_rs1_bypass_en_d & ~dec_debug_wdata_rs1_d) & dec_i0_rs1_en_d}} & gpr_i0_rs1_d[31:0]);
-	assign i0_rs2_d[31:0] = (({32 {~i0_rs2_bypass_en_d & dec_i0_rs2_en_d}} & gpr_i0_rs2_d[31:0]) | ({32 {~i0_rs2_bypass_en_d}} & dec_i0_immed_d[31:0])) | ({32 {i0_rs2_bypass_en_d}} & i0_rs2_bypass_data_d[31:0]);
-	assign exu_lsu_rs1_d[31:0] = (({32 {((~i0_rs1_bypass_en_d & ~dec_extint_stall) & dec_i0_rs1_en_d) & dec_qual_lsu_d}} & gpr_i0_rs1_d[31:0]) | ({32 {(i0_rs1_bypass_en_d & ~dec_extint_stall) & dec_qual_lsu_d}} & i0_rs1_bypass_data_d[31:0])) | ({32 {dec_extint_stall & dec_qual_lsu_d}} & {dec_tlu_meihap[31:2], 2'b00});
-	assign exu_lsu_rs2_d[31:0] = ({32 {((~i0_rs2_bypass_en_d & ~dec_extint_stall) & dec_i0_rs2_en_d) & dec_qual_lsu_d}} & gpr_i0_rs2_d[31:0]) | ({32 {(i0_rs2_bypass_en_d & ~dec_extint_stall) & dec_qual_lsu_d}} & i0_rs2_bypass_data_d[31:0]);
-	assign muldiv_rs1_d[31:0] = ({32 {~i0_rs1_bypass_en_d & dec_i0_rs1_en_d}} & gpr_i0_rs1_d[31:0]) | ({32 {i0_rs1_bypass_en_d}} & i0_rs1_bypass_data_d[31:0]);
-	assign x_data_en = dec_data_en[1];
-	assign x_data_en_q1 = dec_data_en[1] & dec_csr_ren_d;
-	assign x_data_en_q2 = dec_data_en[1] & dec_i0_branch_d;
-	assign r_data_en = dec_data_en[0];
-	assign r_data_en_q2 = dec_data_en[0] & i0_branch_x;
-	assign x_ctl_en = dec_ctl_en[1];
-	assign r_ctl_en = dec_ctl_en[0];
-	eb1_exu_alu_ctl #(.pt(pt)) i_alu(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.enable(x_data_en),
-		.pp_in(i0_predict_newp_d),
-		.valid_in(dec_i0_alu_decode_d),
-		.flush_upper_x(i0_flush_upper_x),
-		.flush_lower_r(dec_tlu_flush_lower_r),
-		.a_in(i0_rs1_d[31:0]),
-		.b_in(i0_rs2_d[31:0]),
-		.pc_in(dec_i0_pc_d[31:1]),
-		.brimm_in(dec_i0_br_immed_d[12:1]),
-		.ap(i0_ap),
-		.csr_ren_in(dec_csr_ren_d),
-		.csr_rddata_in(dec_csr_rddata_d[31:0]),
-		.result_ff(alu_result_x[31:0]),
-		.flush_upper_out(i0_flush_upper_d),
-		.flush_final_out(exu_flush_final),
-		.flush_path_out(i0_flush_path_d[31:1]),
-		.predict_p_out(i0_predict_p_d),
-		.pred_correct_out(i0_pred_correct_upper_d),
-		.pc_ff(exu_i0_pc_x[31:1])
-	);
-	eb1_exu_mul_ctl #(.pt(pt)) i_mul(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.mul_p(mul_p & {20 {mul_p[19]}}),
-		.rs1_in(muldiv_rs1_d[31:0] & {32 {mul_p[19]}}),
-		.rs2_in(i0_rs2_d[31:0] & {32 {mul_p[19]}}),
-		.result_x(mul_result_x[31:0])
-	);
-	eb1_exu_div_ctl #(.pt(pt)) i_div(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.cancel(dec_div_cancel),
-		.dp(div_p),
-		.dividend(muldiv_rs1_d[31:0]),
-		.divisor(i0_rs2_d[31:0]),
-		.finish_dly(exu_div_wren),
-		.out(exu_div_result[31:0])
-	);
-	assign exu_i0_result_x[31:0] = (mul_valid_x ? mul_result_x[31:0] : alu_result_x[31:0]);
-	always @(*) begin
-		i0_predict_newp_d = dec_i0_predict_p_d;
-		i0_predict_newp_d[53] = dec_i0_pc_d[1];
-	end
-	assign exu_pmu_i0_br_misp = i0_pp_r[55];
-	assign exu_pmu_i0_br_ataken = i0_pp_r[54];
-	assign exu_pmu_i0_pc4 = i0_pp_r[52];
-	assign i0_valid_d = (i0_predict_p_d[37] & dec_i0_alu_decode_d) & ~dec_tlu_flush_lower_r;
-	assign i0_taken_d = i0_predict_p_d[54] & dec_i0_alu_decode_d;
-	generate
-		if (pt[2130-:5] == 1) begin
-			assign ghr_d_ns[pt[2236-:8] - 1:0] = (({pt[2236-:8] {~dec_tlu_flush_lower_r & i0_valid_d}} & {ghr_d[pt[2236-:8] - 2:0], i0_taken_d}) | ({pt[2236-:8] {~dec_tlu_flush_lower_r & ~i0_valid_d}} & ghr_d[pt[2236-:8] - 1:0])) | ({pt[2236-:8] {dec_tlu_flush_lower_r}} & ghr_x[pt[2236-:8] - 1:0]);
-			assign ghr_x_ns[pt[2236-:8] - 1:0] = ({pt[2236-:8] {i0_valid_x}} & {ghr_x[pt[2236-:8] - 2:0], i0_taken_x}) | ({pt[2236-:8] {~i0_valid_x}} & ghr_x[pt[2236-:8] - 1:0]);
-			assign exu_i0_br_valid_r = i0_pp_r[37];
-			assign exu_i0_br_mp_r = i0_pp_r[55];
-			assign exu_i0_br_way_r = i0_pp_r[32];
-			assign exu_i0_br_hist_r[1:0] = {2 {i0_pp_r[37]}} & i0_pp_r[51:50];
-			assign exu_i0_br_error_r = i0_pp_r[36];
-			assign exu_i0_br_middle_r = i0_pp_r[52] ^ i0_pp_r[53];
-			assign exu_i0_br_start_error_r = i0_pp_r[35];
-			assign {exu_i0_br_fghr_r[pt[2236-:8] - 1:0], exu_i0_br_index_r[pt[2172-:9]:pt[2163-:6]]} = predpipe_r[PREDPIPESIZE - 1:pt[2139-:9]];
-			assign final_predict_mp = (i0_flush_upper_x ? i0_predict_p_x : {56 {1'sb0}});
-			assign final_predpipe_mp[PREDPIPESIZE - 1:0] = (i0_flush_upper_x ? predpipe_x : {PREDPIPESIZE {1'sb0}});
-			assign after_flush_eghr[pt[2236-:8] - 1:0] = (i0_flush_upper_x & ~dec_tlu_flush_lower_r ? ghr_d[pt[2236-:8] - 1:0] : ghr_x[pt[2236-:8] - 1:0]);
-			assign exu_mp_pkt[37] = final_predict_mp[37];
-			assign exu_mp_pkt[32] = final_predict_mp[32];
-			assign exu_mp_pkt[55] = final_predict_mp[55];
-			assign exu_mp_pkt[34] = final_predict_mp[34];
-			assign exu_mp_pkt[33] = final_predict_mp[33];
-			assign exu_mp_pkt[31] = final_predict_mp[31];
-			assign exu_mp_pkt[54] = final_predict_mp[54];
-			assign exu_mp_pkt[53] = final_predict_mp[53];
-			assign exu_mp_pkt[52] = final_predict_mp[52];
-			assign exu_mp_pkt[51:50] = final_predict_mp[51:50];
-			assign exu_mp_pkt[49:38] = final_predict_mp[49:38];
-			assign exu_mp_fghr[pt[2236-:8] - 1:0] = after_flush_eghr[pt[2236-:8] - 1:0];
-			assign {exu_mp_index[pt[2172-:9]:pt[2163-:6]], exu_mp_btag[pt[2139-:9] - 1:0]} = final_predpipe_mp[(PREDPIPESIZE - pt[2236-:8]) - 1:0];
-			assign exu_mp_eghr[pt[2236-:8] - 1:0] = final_predpipe_mp[PREDPIPESIZE - 1:((pt[2172-:9] - pt[2163-:6]) + pt[2139-:9]) + 1];
-		end
-		else begin
-			assign ghr_d_ns = {pt[2236-:8] {1'sb0}};
-			assign ghr_x_ns = {pt[2236-:8] {1'sb0}};
-			assign exu_mp_pkt = {56 {1'sb0}};
-			assign exu_mp_eghr = {pt[2236-:8] {1'sb0}};
-			assign exu_mp_fghr = {pt[2236-:8] {1'sb0}};
-			assign exu_mp_index = {(pt[2172-:9] >= pt[2163-:6] ? (pt[2172-:9] - pt[2163-:6]) + 1 : (pt[2163-:6] - pt[2172-:9]) + 1) {1'sb0}};
-			assign exu_mp_btag = {pt[2139-:9] {1'sb0}};
-			assign exu_i0_br_hist_r = {2 {1'sb0}};
-			assign exu_i0_br_error_r = 1'b0;
-			assign exu_i0_br_start_error_r = 1'b0;
-			assign exu_i0_br_index_r = {(pt[2172-:9] >= pt[2163-:6] ? (pt[2172-:9] - pt[2163-:6]) + 1 : (pt[2163-:6] - pt[2172-:9]) + 1) {1'sb0}};
-			assign exu_i0_br_valid_r = 1'b0;
-			assign exu_i0_br_mp_r = 1'b0;
-			assign exu_i0_br_middle_r = 1'b0;
-			assign exu_i0_br_fghr_r = {pt[2236-:8] {1'sb0}};
-			assign exu_i0_br_way_r = 1'b0;
-		end
-	endgenerate
-	assign exu_flush_path_final[31:1] = ({31 {dec_tlu_flush_lower_r}} & dec_tlu_flush_path_r[31:1]) | ({31 {~dec_tlu_flush_lower_r & i0_flush_upper_d}} & i0_flush_path_d[31:1]);
-	assign exu_npc_r[31:1] = (i0_pred_correct_upper_r ? pred_correct_npc_r[31:1] : i0_flush_path_upper_r[31:1]);
-endmodule
-module eb1_dma_ctrl (
-	clk,
-	free_clk,
-	rst_l,
-	dma_bus_clk_en,
-	clk_override,
-	scan_mode,
-	dbg_cmd_addr,
-	dbg_cmd_wrdata,
-	dbg_cmd_valid,
-	dbg_cmd_write,
-	dbg_cmd_type,
-	dbg_cmd_size,
-	dbg_dma_bubble,
-	dma_dbg_ready,
-	dma_dbg_cmd_done,
-	dma_dbg_cmd_fail,
-	dma_dbg_rddata,
-	dma_dccm_req,
-	dma_iccm_req,
-	dma_mem_tag,
-	dma_mem_addr,
-	dma_mem_sz,
-	dma_mem_write,
-	dma_mem_wdata,
-	dccm_dma_rvalid,
-	dccm_dma_ecc_error,
-	dccm_dma_rtag,
-	dccm_dma_rdata,
-	iccm_dma_rvalid,
-	iccm_dma_ecc_error,
-	iccm_dma_rtag,
-	iccm_dma_rdata,
-	dma_active,
-	dma_dccm_stall_any,
-	dma_iccm_stall_any,
-	dccm_ready,
-	iccm_ready,
-	dec_tlu_dma_qos_prty,
-	dma_pmu_dccm_read,
-	dma_pmu_dccm_write,
-	dma_pmu_any_read,
-	dma_pmu_any_write,
-	dma_axi_awvalid,
-	dma_axi_awready,
-	dma_axi_awid,
-	dma_axi_awaddr,
-	dma_axi_awsize,
-	dma_axi_wvalid,
-	dma_axi_wready,
-	dma_axi_wdata,
-	dma_axi_wstrb,
-	dma_axi_bvalid,
-	dma_axi_bready,
-	dma_axi_bresp,
-	dma_axi_bid,
-	dma_axi_arvalid,
-	dma_axi_arready,
-	dma_axi_arid,
-	dma_axi_araddr,
-	dma_axi_arsize,
-	dma_axi_rvalid,
-	dma_axi_rready,
-	dma_axi_rid,
-	dma_axi_rdata,
-	dma_axi_rresp,
-	dma_axi_rlast
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire free_clk;
-	input wire rst_l;
-	input wire dma_bus_clk_en;
-	input wire clk_override;
-	input wire scan_mode;
-	input wire [31:0] dbg_cmd_addr;
-	input wire [31:0] dbg_cmd_wrdata;
-	input wire dbg_cmd_valid;
-	input wire dbg_cmd_write;
-	input wire [1:0] dbg_cmd_type;
-	input wire [1:0] dbg_cmd_size;
-	input wire dbg_dma_bubble;
-	output wire dma_dbg_ready;
-	output wire dma_dbg_cmd_done;
-	output wire dma_dbg_cmd_fail;
-	output wire [31:0] dma_dbg_rddata;
-	output wire dma_dccm_req;
-	output wire dma_iccm_req;
-	output wire [2:0] dma_mem_tag;
-	output wire [31:0] dma_mem_addr;
-	output wire [2:0] dma_mem_sz;
-	output wire dma_mem_write;
-	output wire [63:0] dma_mem_wdata;
-	input wire dccm_dma_rvalid;
-	input wire dccm_dma_ecc_error;
-	input wire [2:0] dccm_dma_rtag;
-	input wire [63:0] dccm_dma_rdata;
-	input wire iccm_dma_rvalid;
-	input wire iccm_dma_ecc_error;
-	input wire [2:0] iccm_dma_rtag;
-	input wire [63:0] iccm_dma_rdata;
-	output wire dma_active;
-	output wire dma_dccm_stall_any;
-	output wire dma_iccm_stall_any;
-	input wire dccm_ready;
-	input wire iccm_ready;
-	input wire [2:0] dec_tlu_dma_qos_prty;
-	output wire dma_pmu_dccm_read;
-	output wire dma_pmu_dccm_write;
-	output wire dma_pmu_any_read;
-	output wire dma_pmu_any_write;
-	input wire dma_axi_awvalid;
-	output wire dma_axi_awready;
-	input wire [pt[1235-:8] - 1:0] dma_axi_awid;
-	input wire [31:0] dma_axi_awaddr;
-	input wire [2:0] dma_axi_awsize;
-	input wire dma_axi_wvalid;
-	output wire dma_axi_wready;
-	input wire [63:0] dma_axi_wdata;
-	input wire [7:0] dma_axi_wstrb;
-	output wire dma_axi_bvalid;
-	input wire dma_axi_bready;
-	output wire [1:0] dma_axi_bresp;
-	output wire [pt[1235-:8] - 1:0] dma_axi_bid;
-	input wire dma_axi_arvalid;
-	output wire dma_axi_arready;
-	input wire [pt[1235-:8] - 1:0] dma_axi_arid;
-	input wire [31:0] dma_axi_araddr;
-	input wire [2:0] dma_axi_arsize;
-	output wire dma_axi_rvalid;
-	input wire dma_axi_rready;
-	output wire [pt[1235-:8] - 1:0] dma_axi_rid;
-	output wire [63:0] dma_axi_rdata;
-	output wire [1:0] dma_axi_rresp;
-	output wire dma_axi_rlast;
-	localparam DEPTH = pt[1257-:7];
-	localparam DEPTH_PTR = $clog2(DEPTH);
-	localparam NACK_COUNT = 7;
-	wire [DEPTH - 1:0] fifo_valid;
-	wire [(DEPTH * 2) - 1:0] fifo_error;
-	wire [DEPTH - 1:0] fifo_error_bus;
-	wire [DEPTH - 1:0] fifo_rpend;
-	wire [DEPTH - 1:0] fifo_done;
-	wire [DEPTH - 1:0] fifo_done_bus;
-	wire [(DEPTH * 32) - 1:0] fifo_addr;
-	wire [(DEPTH * 3) - 1:0] fifo_sz;
-	wire [(DEPTH * 8) - 1:0] fifo_byteen;
-	wire [DEPTH - 1:0] fifo_write;
-	wire [DEPTH - 1:0] fifo_posted_write;
-	wire [DEPTH - 1:0] fifo_dbg;
-	wire [(DEPTH * 64) - 1:0] fifo_data;
-	wire [(DEPTH * pt[1235-:8]) - 1:0] fifo_tag;
-	wire [(DEPTH * pt[1250-:9]) - 1:0] fifo_mid;
-	wire [(DEPTH * pt[1241-:6]) - 1:0] fifo_prty;
-	wire [DEPTH - 1:0] fifo_cmd_en;
-	wire [DEPTH - 1:0] fifo_data_en;
-	wire [DEPTH - 1:0] fifo_pend_en;
-	wire [DEPTH - 1:0] fifo_done_en;
-	wire [DEPTH - 1:0] fifo_done_bus_en;
-	wire [DEPTH - 1:0] fifo_error_en;
-	wire [DEPTH - 1:0] fifo_error_bus_en;
-	wire [DEPTH - 1:0] fifo_reset;
-	wire [(DEPTH * 2) - 1:0] fifo_error_in;
-	wire [(DEPTH * 64) - 1:0] fifo_data_in;
-	wire fifo_write_in;
-	wire fifo_posted_write_in;
-	wire fifo_dbg_in;
-	wire [31:0] fifo_addr_in;
-	wire [2:0] fifo_sz_in;
-	wire [7:0] fifo_byteen_in;
-	wire [DEPTH_PTR - 1:0] RspPtr;
-	wire [DEPTH_PTR - 1:0] NxtRspPtr;
-	wire [DEPTH_PTR - 1:0] WrPtr;
-	wire [DEPTH_PTR - 1:0] NxtWrPtr;
-	wire [DEPTH_PTR - 1:0] RdPtr;
-	wire [DEPTH_PTR - 1:0] NxtRdPtr;
-	wire WrPtrEn;
-	wire RdPtrEn;
-	wire RspPtrEn;
-	wire [1:0] dma_dbg_sz;
-	wire [1:0] dma_dbg_addr;
-	wire [31:0] dma_dbg_mem_rddata;
-	wire [31:0] dma_dbg_mem_wrdata;
-	wire dma_dbg_cmd_error;
-	wire dma_dbg_cmd_done_q;
-	wire fifo_full;
-	wire fifo_full_spec;
-	wire fifo_empty;
-	wire dma_address_error;
-	wire dma_alignment_error;
-	reg [3:0] num_fifo_vld;
-	wire dma_mem_req;
-	wire [31:0] dma_mem_addr_int;
-	wire [2:0] dma_mem_sz_int;
-	wire [7:0] dma_mem_byteen;
-	wire dma_mem_addr_in_dccm;
-	wire dma_mem_addr_in_iccm;
-	wire dma_mem_addr_in_pic;
-	wire dma_mem_addr_in_pic_region_nc;
-	wire dma_mem_addr_in_dccm_region_nc;
-	wire dma_mem_addr_in_iccm_region_nc;
-	wire [2:0] dma_nack_count;
-	wire [2:0] dma_nack_count_d;
-	wire [2:0] dma_nack_count_csr;
-	wire dma_buffer_c1_clken;
-	wire dma_free_clken;
-	wire dma_buffer_c1_clk;
-	wire dma_free_clk;
-	wire dma_bus_clk;
-	wire bus_rsp_valid;
-	wire bus_rsp_sent;
-	wire bus_cmd_valid;
-	wire bus_cmd_sent;
-	wire bus_cmd_write;
-	wire bus_cmd_posted_write;
-	wire [7:0] bus_cmd_byteen;
-	wire [2:0] bus_cmd_sz;
-	wire [31:0] bus_cmd_addr;
-	wire [63:0] bus_cmd_wdata;
-	wire [pt[1235-:8] - 1:0] bus_cmd_tag;
-	wire [pt[1250-:9] - 1:0] bus_cmd_mid;
-	wire [pt[1241-:6] - 1:0] bus_cmd_prty;
-	wire bus_posted_write_done;
-	wire fifo_full_spec_bus;
-	wire dbg_dma_bubble_bus;
-	wire stall_dma_in;
-	wire dma_fifo_ready;
-	wire wrbuf_en;
-	wire wrbuf_data_en;
-	wire wrbuf_cmd_sent;
-	wire wrbuf_rst;
-	wire wrbuf_data_rst;
-	wire wrbuf_vld;
-	wire wrbuf_data_vld;
-	wire [pt[1235-:8] - 1:0] wrbuf_tag;
-	wire [2:0] wrbuf_sz;
-	wire [31:0] wrbuf_addr;
-	wire [63:0] wrbuf_data;
-	wire [7:0] wrbuf_byteen;
-	wire rdbuf_en;
-	wire rdbuf_cmd_sent;
-	wire rdbuf_rst;
-	wire rdbuf_vld;
-	wire [pt[1235-:8] - 1:0] rdbuf_tag;
-	wire [2:0] rdbuf_sz;
-	wire [31:0] rdbuf_addr;
-	wire axi_mstr_prty_in;
-	wire axi_mstr_prty_en;
-	wire axi_mstr_priority;
-	wire axi_mstr_sel;
-	wire axi_rsp_valid;
-	wire axi_rsp_sent;
-	wire axi_rsp_write;
-	wire [pt[1235-:8] - 1:0] axi_rsp_tag;
-	wire [1:0] axi_rsp_error;
-	wire [63:0] axi_rsp_rdata;
-	assign fifo_addr_in[31:0] = (dbg_cmd_valid ? dbg_cmd_addr[31:0] : bus_cmd_addr[31:0]);
-	assign fifo_byteen_in[7:0] = {8 {~dbg_cmd_valid}} & bus_cmd_byteen[7:0];
-	assign fifo_sz_in[2:0] = (dbg_cmd_valid ? {1'b0, dbg_cmd_size[1:0]} : bus_cmd_sz[2:0]);
-	assign fifo_write_in = (dbg_cmd_valid ? dbg_cmd_write : bus_cmd_write);
-	assign fifo_posted_write_in = ~dbg_cmd_valid & bus_cmd_posted_write;
-	assign fifo_dbg_in = dbg_cmd_valid;
-	generate
-		genvar i;
-		for (i = 0; i < DEPTH; i = i + 1) begin : GenFifo
-			assign fifo_cmd_en[i] = ((bus_cmd_sent & dma_bus_clk_en) | (dbg_cmd_valid & dbg_cmd_type[1])) & (i == WrPtr[DEPTH_PTR - 1:0]);
-			function automatic [DEPTH_PTR - 1:0] sv2v_cast_87E0F;
-				input reg [DEPTH_PTR - 1:0] inp;
-				sv2v_cast_87E0F = inp;
-			endfunction
-			assign fifo_data_en[i] = ((((((bus_cmd_sent & fifo_write_in) & dma_bus_clk_en) | ((dbg_cmd_valid & dbg_cmd_type[1]) & dbg_cmd_write)) & (i == WrPtr[DEPTH_PTR - 1:0])) | ((dma_address_error | dma_alignment_error) & (i == RdPtr[DEPTH_PTR - 1:0]))) | (dccm_dma_rvalid & (i == sv2v_cast_87E0F(dccm_dma_rtag[2:0])))) | (iccm_dma_rvalid & (i == sv2v_cast_87E0F(iccm_dma_rtag[2:0])));
-			assign fifo_pend_en[i] = ((dma_dccm_req | dma_iccm_req) & ~dma_mem_write) & (i == RdPtr[DEPTH_PTR - 1:0]);
-			assign fifo_error_en[i] = ((((dma_address_error | dma_alignment_error) | dma_dbg_cmd_error) & (i == RdPtr[DEPTH_PTR - 1:0])) | ((dccm_dma_rvalid & dccm_dma_ecc_error) & (i == sv2v_cast_87E0F(dccm_dma_rtag[2:0])))) | ((iccm_dma_rvalid & iccm_dma_ecc_error) & (i == sv2v_cast_87E0F(iccm_dma_rtag[2:0])));
-			assign fifo_error_bus_en[i] = ((|fifo_error_in[(i * 2) + 1-:2] & fifo_error_en[i]) | |fifo_error[i * 2+:2]) & dma_bus_clk_en;
-			assign fifo_done_en[i] = ((((|fifo_error[i * 2+:2] | fifo_error_en[i]) | ((dma_dccm_req | dma_iccm_req) & dma_mem_write)) & (i == RdPtr[DEPTH_PTR - 1:0])) | (dccm_dma_rvalid & (i == sv2v_cast_87E0F(dccm_dma_rtag[2:0])))) | (iccm_dma_rvalid & (i == sv2v_cast_87E0F(iccm_dma_rtag[2:0])));
-			assign fifo_done_bus_en[i] = (fifo_done_en[i] | fifo_done[i]) & dma_bus_clk_en;
-			assign fifo_reset[i] = (((bus_rsp_sent | bus_posted_write_done) & dma_bus_clk_en) | dma_dbg_cmd_done) & (i == RspPtr[DEPTH_PTR - 1:0]);
-			assign fifo_error_in[i * 2+:2] = (dccm_dma_rvalid & (i == sv2v_cast_87E0F(dccm_dma_rtag[2:0])) ? {1'b0, dccm_dma_ecc_error} : (iccm_dma_rvalid & (i == sv2v_cast_87E0F(iccm_dma_rtag[2:0])) ? {1'b0, iccm_dma_ecc_error} : {(dma_address_error | dma_alignment_error) | dma_dbg_cmd_error, dma_alignment_error}));
-			assign fifo_data_in[i * 64+:64] = (fifo_error_en[i] & |fifo_error_in[i * 2+:2] ? {32'b00000000000000000000000000000000, fifo_addr[i * 32+:32]} : (dccm_dma_rvalid & (i == sv2v_cast_87E0F(dccm_dma_rtag[2:0])) ? dccm_dma_rdata[63:0] : (iccm_dma_rvalid & (i == sv2v_cast_87E0F(iccm_dma_rtag[2:0])) ? iccm_dma_rdata[63:0] : (dbg_cmd_valid ? {2 {dma_dbg_mem_wrdata[31:0]}} : bus_cmd_wdata[63:0]))));
-			rvdffsc #(.WIDTH(1)) fifo_valid_dff(
-				.din(1'b1),
-				.dout(fifo_valid[i]),
-				.en(fifo_cmd_en[i]),
-				.clear(fifo_reset[i]),
-				.clk(dma_free_clk),
-				.rst_l(rst_l)
-			);
-			rvdffsc #(.WIDTH(2)) fifo_error_dff(
-				.din(fifo_error_in[i * 2+:2]),
-				.dout(fifo_error[i * 2+:2]),
-				.en(fifo_error_en[i]),
-				.clear(fifo_reset[i]),
-				.clk(dma_free_clk),
-				.rst_l(rst_l)
-			);
-			rvdffsc #(.WIDTH(1)) fifo_error_bus_dff(
-				.din(1'b1),
-				.dout(fifo_error_bus[i]),
-				.en(fifo_error_bus_en[i]),
-				.clear(fifo_reset[i]),
-				.clk(dma_free_clk),
-				.rst_l(rst_l)
-			);
-			rvdffsc #(.WIDTH(1)) fifo_rpend_dff(
-				.din(1'b1),
-				.dout(fifo_rpend[i]),
-				.en(fifo_pend_en[i]),
-				.clear(fifo_reset[i]),
-				.clk(dma_free_clk),
-				.rst_l(rst_l)
-			);
-			rvdffsc #(.WIDTH(1)) fifo_done_dff(
-				.din(1'b1),
-				.dout(fifo_done[i]),
-				.en(fifo_done_en[i]),
-				.clear(fifo_reset[i]),
-				.clk(dma_free_clk),
-				.rst_l(rst_l)
-			);
-			rvdffsc #(.WIDTH(1)) fifo_done_bus_dff(
-				.din(1'b1),
-				.dout(fifo_done_bus[i]),
-				.en(fifo_done_bus_en[i]),
-				.clear(fifo_reset[i]),
-				.clk(dma_free_clk),
-				.rst_l(rst_l)
-			);
-			rvdffe #(.WIDTH(32)) fifo_addr_dff(
-				.din(fifo_addr_in[31:0]),
-				.dout(fifo_addr[i * 32+:32]),
-				.en(fifo_cmd_en[i]),
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode)
-			);
-			rvdffs #(.WIDTH(3)) fifo_sz_dff(
-				.din(fifo_sz_in[2:0]),
-				.dout(fifo_sz[i * 3+:3]),
-				.en(fifo_cmd_en[i]),
-				.clk(dma_buffer_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(8)) fifo_byteen_dff(
-				.din(fifo_byteen_in[7:0]),
-				.dout(fifo_byteen[i * 8+:8]),
-				.en(fifo_cmd_en[i]),
-				.clk(dma_buffer_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) fifo_write_dff(
-				.din(fifo_write_in),
-				.dout(fifo_write[i]),
-				.en(fifo_cmd_en[i]),
-				.clk(dma_buffer_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) fifo_posted_write_dff(
-				.din(fifo_posted_write_in),
-				.dout(fifo_posted_write[i]),
-				.en(fifo_cmd_en[i]),
-				.clk(dma_buffer_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) fifo_dbg_dff(
-				.din(fifo_dbg_in),
-				.dout(fifo_dbg[i]),
-				.en(fifo_cmd_en[i]),
-				.clk(dma_buffer_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffe #(.WIDTH(64)) fifo_data_dff(
-				.din(fifo_data_in[i * 64+:64]),
-				.dout(fifo_data[i * 64+:64]),
-				.en(fifo_data_en[i]),
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode)
-			);
-			rvdffs #(.WIDTH(pt[1235-:8])) fifo_tag_dff(
-				.din(bus_cmd_tag[pt[1235-:8] - 1:0]),
-				.dout(fifo_tag[(i * pt[1235-:8]) + (pt[1235-:8] - 1)-:pt[1235-:8]]),
-				.en(fifo_cmd_en[i]),
-				.clk(dma_buffer_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(pt[1250-:9])) fifo_mid_dff(
-				.din(bus_cmd_mid[pt[1250-:9] - 1:0]),
-				.dout(fifo_mid[(i * pt[1250-:9]) + (pt[1250-:9] - 1)-:pt[1250-:9]]),
-				.en(fifo_cmd_en[i]),
-				.clk(dma_buffer_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(pt[1241-:6])) fifo_prty_dff(
-				.din(bus_cmd_prty[pt[1241-:6] - 1:0]),
-				.dout(fifo_prty[(i * pt[1241-:6]) + (pt[1241-:6] - 1)-:pt[1241-:6]]),
-				.en(fifo_cmd_en[i]),
-				.clk(dma_buffer_c1_clk),
-				.rst_l(rst_l)
-			);
-		end
-	endgenerate
-	assign NxtWrPtr[DEPTH_PTR - 1:0] = (WrPtr[DEPTH_PTR - 1:0] == (DEPTH - 1) ? {DEPTH_PTR {1'sb0}} : WrPtr[DEPTH_PTR - 1:0] + 1'b1);
-	assign NxtRdPtr[DEPTH_PTR - 1:0] = (RdPtr[DEPTH_PTR - 1:0] == (DEPTH - 1) ? {DEPTH_PTR {1'sb0}} : RdPtr[DEPTH_PTR - 1:0] + 1'b1);
-	assign NxtRspPtr[DEPTH_PTR - 1:0] = (RspPtr[DEPTH_PTR - 1:0] == (DEPTH - 1) ? {DEPTH_PTR {1'sb0}} : RspPtr[DEPTH_PTR - 1:0] + 1'b1);
-	assign WrPtrEn = |fifo_cmd_en[DEPTH - 1:0];
-	assign RdPtrEn = (dma_dccm_req | dma_iccm_req) | ((dma_address_error | dma_alignment_error) | dma_dbg_cmd_error);
-	assign RspPtrEn = dma_dbg_cmd_done | ((bus_rsp_sent | bus_posted_write_done) & dma_bus_clk_en);
-	rvdffs #(.WIDTH(DEPTH_PTR)) WrPtr_dff(
-		.din(NxtWrPtr[DEPTH_PTR - 1:0]),
-		.dout(WrPtr[DEPTH_PTR - 1:0]),
-		.en(WrPtrEn),
-		.clk(dma_free_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(DEPTH_PTR)) RdPtr_dff(
-		.din(NxtRdPtr[DEPTH_PTR - 1:0]),
-		.dout(RdPtr[DEPTH_PTR - 1:0]),
-		.en(RdPtrEn),
-		.clk(dma_free_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(DEPTH_PTR)) RspPtr_dff(
-		.din(NxtRspPtr[DEPTH_PTR - 1:0]),
-		.dout(RspPtr[DEPTH_PTR - 1:0]),
-		.en(RspPtrEn),
-		.clk(dma_free_clk),
-		.rst_l(rst_l)
-	);
-	assign fifo_full = fifo_full_spec_bus;
-	always @(*) begin
-		num_fifo_vld[3:0] = {3'b000, bus_cmd_sent} - {3'b000, bus_rsp_sent};
-		begin : sv2v_autoblock_41
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				num_fifo_vld[3:0] = num_fifo_vld[3:0] + {3'b000, fifo_valid[i]};
-		end
-	end
-	assign fifo_full_spec = num_fifo_vld[3:0] >= DEPTH;
-	assign dma_fifo_ready = ~(fifo_full | dbg_dma_bubble_bus);
-	assign dma_address_error = ((fifo_valid[RdPtr] & ~fifo_done[RdPtr]) & ~fifo_dbg[RdPtr]) & ~(dma_mem_addr_in_dccm | dma_mem_addr_in_iccm);
-	assign dma_alignment_error = (((fifo_valid[RdPtr] & ~fifo_done[RdPtr]) & ~fifo_dbg[RdPtr]) & ~dma_address_error) & ((((((((dma_mem_sz_int[2:0] == 3'h1) & dma_mem_addr_int[0]) | ((dma_mem_sz_int[2:0] == 3'h2) & |dma_mem_addr_int[1:0])) | ((dma_mem_sz_int[2:0] == 3'h3) & |dma_mem_addr_int[2:0])) | (dma_mem_addr_in_iccm & ~((dma_mem_sz_int[1:0] == 2'b10) | (dma_mem_sz_int[1:0] == 2'b11)))) | ((dma_mem_addr_in_dccm & dma_mem_write) & ~((dma_mem_sz_int[1:0] == 2'b10) | (dma_mem_sz_int[1:0] == 2'b11)))) | ((dma_mem_write & (dma_mem_sz_int[2:0] == 3'h2)) & (dma_mem_byteen[dma_mem_addr_int[2:0]+:4] != 4'hf))) | ((dma_mem_write & (dma_mem_sz_int[2:0] == 3'h3)) & ~(((dma_mem_byteen[7:0] == 8'h0f) | (dma_mem_byteen[7:0] == 8'hf0)) | (dma_mem_byteen[7:0] == 8'hff))));
-	assign dma_dbg_ready = fifo_empty & dbg_dma_bubble;
-	assign dma_dbg_cmd_done = (fifo_valid[RspPtr] & fifo_dbg[RspPtr]) & fifo_done[RspPtr];
-	assign dma_dbg_cmd_fail = |fifo_error[RspPtr * 2+:2];
-	assign dma_dbg_sz[1:0] = fifo_sz[(RspPtr * 3) + 1-:2];
-	assign dma_dbg_addr[1:0] = fifo_addr[(RspPtr * 32) + 1-:2];
-	assign dma_dbg_mem_rddata[31:0] = (fifo_addr[(RspPtr * 32) + 2] ? fifo_data[(RspPtr * 64) + 63-:32] : fifo_data[(RspPtr * 64) + 31-:32]);
-	assign dma_dbg_rddata[31:0] = (({32 {dma_dbg_sz[1:0] == 2'h0}} & ((dma_dbg_mem_rddata[31:0] >> (8 * dma_dbg_addr[1:0])) & 32'h000000ff)) | ({32 {dma_dbg_sz[1:0] == 2'h1}} & ((dma_dbg_mem_rddata[31:0] >> (16 * dma_dbg_addr[1])) & 32'h0000ffff))) | ({32 {dma_dbg_sz[1:0] == 2'h2}} & dma_dbg_mem_rddata[31:0]);
-	assign dma_dbg_cmd_error = ((fifo_valid[RdPtr] & ~fifo_done[RdPtr]) & fifo_dbg[RdPtr]) & (~((dma_mem_addr_in_dccm | dma_mem_addr_in_iccm) | dma_mem_addr_in_pic) | ((dma_mem_addr_in_iccm | dma_mem_addr_in_pic) & (dma_mem_sz_int[1:0] != 2'b10)));
-	assign dma_dbg_mem_wrdata[31:0] = (({32 {dbg_cmd_size[1:0] == 2'h0}} & {4 {dbg_cmd_wrdata[7:0]}}) | ({32 {dbg_cmd_size[1:0] == 2'h1}} & {2 {dbg_cmd_wrdata[15:0]}})) | ({32 {dbg_cmd_size[1:0] == 2'h2}} & dbg_cmd_wrdata[31:0]);
-	assign dma_dccm_stall_any = (dma_mem_req & (dma_mem_addr_in_dccm | dma_mem_addr_in_pic)) & (dma_nack_count >= dma_nack_count_csr);
-	assign dma_iccm_stall_any = (dma_mem_req & dma_mem_addr_in_iccm) & (dma_nack_count >= dma_nack_count_csr);
-	assign fifo_empty = ~(|fifo_valid[DEPTH - 1:0] | bus_cmd_sent);
-	assign dma_nack_count_csr[2:0] = dec_tlu_dma_qos_prty[2:0];
-	assign dma_nack_count_d[2:0] = (dma_nack_count[2:0] >= dma_nack_count_csr[2:0] ? {3 {~(dma_dccm_req | dma_iccm_req)}} & dma_nack_count[2:0] : (dma_mem_req & ~(dma_dccm_req | dma_iccm_req) ? dma_nack_count[2:0] + 1'b1 : 3'b000));
-	rvdffs #(.WIDTH(3)) nack_count_dff(
-		.din(dma_nack_count_d[2:0]),
-		.dout(dma_nack_count[2:0]),
-		.en(dma_mem_req),
-		.clk(dma_free_clk),
-		.rst_l(rst_l)
-	);
-	assign dma_mem_req = ((fifo_valid[RdPtr] & ~fifo_rpend[RdPtr]) & ~fifo_done[RdPtr]) & ~((dma_address_error | dma_alignment_error) | dma_dbg_cmd_error);
-	assign dma_dccm_req = (dma_mem_req & (dma_mem_addr_in_dccm | dma_mem_addr_in_pic)) & dccm_ready;
-	assign dma_iccm_req = (dma_mem_req & dma_mem_addr_in_iccm) & iccm_ready;
-	function automatic [2:0] sv2v_cast_3;
-		input reg [2:0] inp;
-		sv2v_cast_3 = inp;
-	endfunction
-	assign dma_mem_tag[2:0] = sv2v_cast_3(RdPtr);
-	assign dma_mem_addr_int[31:0] = fifo_addr[RdPtr * 32+:32];
-	assign dma_mem_sz_int[2:0] = fifo_sz[RdPtr * 3+:3];
-	assign dma_mem_addr[31:0] = ((dma_mem_write & ~fifo_dbg[RdPtr]) & (dma_mem_byteen[7:0] == 8'hf0) ? {dma_mem_addr_int[31:3], 1'b1, dma_mem_addr_int[1:0]} : dma_mem_addr_int[31:0]);
-	assign dma_mem_sz[2:0] = ((dma_mem_write & ~fifo_dbg[RdPtr]) & ((dma_mem_byteen[7:0] == 8'h0f) | (dma_mem_byteen[7:0] == 8'hf0)) ? 3'h2 : dma_mem_sz_int[2:0]);
-	assign dma_mem_byteen[7:0] = fifo_byteen[RdPtr * 8+:8];
-	assign dma_mem_write = fifo_write[RdPtr];
-	assign dma_mem_wdata[63:0] = fifo_data[RdPtr * 64+:64];
-	assign dma_pmu_dccm_read = dma_dccm_req & ~dma_mem_write;
-	assign dma_pmu_dccm_write = dma_dccm_req & dma_mem_write;
-	assign dma_pmu_any_read = (dma_dccm_req | dma_iccm_req) & ~dma_mem_write;
-	assign dma_pmu_any_write = (dma_dccm_req | dma_iccm_req) & dma_mem_write;
-	generate
-		if (pt[1365-:5]) begin : Gen_dccm_enable
-			rvrangecheck #(
-				.CCM_SADR(pt[1325-:36]),
-				.CCM_SIZE(pt[1289-:14])
-			) addr_dccm_rangecheck(
-				.addr(dma_mem_addr_int[31:0]),
-				.in_range(dma_mem_addr_in_dccm),
-				.in_region(dma_mem_addr_in_dccm_region_nc)
-			);
-		end
-		else begin : Gen_dccm_disable
-			assign dma_mem_addr_in_dccm = 1'b0;
-			assign dma_mem_addr_in_dccm_region_nc = 1'b0;
-		end
-	endgenerate
-	generate
-		if (pt[927-:5]) begin : Gen_iccm_enable
-			rvrangecheck #(
-				.CCM_SADR(pt[887-:36]),
-				.CCM_SIZE(pt[851-:14])
-			) addr_iccm_rangecheck(
-				.addr(dma_mem_addr_int[31:0]),
-				.in_range(dma_mem_addr_in_iccm),
-				.in_region(dma_mem_addr_in_iccm_region_nc)
-			);
-		end
-		else begin : Gen_iccm_disable
-			assign dma_mem_addr_in_iccm = 1'b0;
-			assign dma_mem_addr_in_iccm_region_nc = 1'b0;
-		end
-	endgenerate
-	rvrangecheck #(
-		.CCM_SADR(pt[130-:36]),
-		.CCM_SIZE(pt[69-:13])
-	) addr_pic_rangecheck(
-		.addr(dma_mem_addr_int[31:0]),
-		.in_range(dma_mem_addr_in_pic),
-		.in_region(dma_mem_addr_in_pic_region_nc)
-	);
-	rvdff_fpga #(.WIDTH(1)) fifo_full_bus_ff(
-		.din(fifo_full_spec),
-		.dout(fifo_full_spec_bus),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) dbg_dma_bubble_ff(
-		.din(dbg_dma_bubble),
-		.dout(dbg_dma_bubble_bus),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) dma_dbg_cmd_doneff(
-		.din(dma_dbg_cmd_done),
-		.dout(dma_dbg_cmd_done_q),
-		.clk(free_clk),
-		.rst_l(rst_l)
-	);
-	assign dma_buffer_c1_clken = ((bus_cmd_valid & dma_bus_clk_en) | dbg_cmd_valid) | clk_override;
-	assign dma_free_clken = (((((bus_cmd_valid | bus_rsp_valid) | dbg_cmd_valid) | dma_dbg_cmd_done) | dma_dbg_cmd_done_q) | |fifo_valid[DEPTH - 1:0]) | clk_override;
-	rvoclkhdr dma_buffer_c1cgc(
-		.en(dma_buffer_c1_clken),
-		.l1clk(dma_buffer_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr dma_free_cgc(
-		.en(dma_free_clken),
-		.l1clk(dma_free_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvclkhdr dma_bus_cgc(
-		.en(dma_bus_clk_en),
-		.l1clk(dma_bus_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	assign wrbuf_en = dma_axi_awvalid & dma_axi_awready;
-	assign wrbuf_data_en = dma_axi_wvalid & dma_axi_wready;
-	assign wrbuf_cmd_sent = bus_cmd_sent & bus_cmd_write;
-	assign wrbuf_rst = wrbuf_cmd_sent & ~wrbuf_en;
-	assign wrbuf_data_rst = wrbuf_cmd_sent & ~wrbuf_data_en;
-	rvdffsc_fpga #(.WIDTH(1)) wrbuf_vldff(
-		.din(1'b1),
-		.dout(wrbuf_vld),
-		.en(wrbuf_en),
-		.clear(wrbuf_rst),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffsc_fpga #(.WIDTH(1)) wrbuf_data_vldff(
-		.din(1'b1),
-		.dout(wrbuf_data_vld),
-		.en(wrbuf_data_en),
-		.clear(wrbuf_data_rst),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(pt[1235-:8])) wrbuf_tagff(
-		.din(dma_axi_awid[pt[1235-:8] - 1:0]),
-		.dout(wrbuf_tag[pt[1235-:8] - 1:0]),
-		.en(wrbuf_en),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(3)) wrbuf_szff(
-		.din(dma_axi_awsize[2:0]),
-		.dout(wrbuf_sz[2:0]),
-		.en(wrbuf_en),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(32)) wrbuf_addrff(
-		.din(dma_axi_awaddr[31:0]),
-		.dout(wrbuf_addr[31:0]),
-		.en(wrbuf_en & dma_bus_clk_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdffe #(.WIDTH(64)) wrbuf_dataff(
-		.din(dma_axi_wdata[63:0]),
-		.dout(wrbuf_data[63:0]),
-		.en(wrbuf_data_en & dma_bus_clk_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdffs_fpga #(.WIDTH(8)) wrbuf_byteenff(
-		.din(dma_axi_wstrb[7:0]),
-		.dout(wrbuf_byteen[7:0]),
-		.en(wrbuf_data_en),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	assign rdbuf_en = dma_axi_arvalid & dma_axi_arready;
-	assign rdbuf_cmd_sent = bus_cmd_sent & ~bus_cmd_write;
-	assign rdbuf_rst = rdbuf_cmd_sent & ~rdbuf_en;
-	rvdffsc_fpga #(.WIDTH(1)) rdbuf_vldff(
-		.din(1'b1),
-		.dout(rdbuf_vld),
-		.en(rdbuf_en),
-		.clear(rdbuf_rst),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(pt[1235-:8])) rdbuf_tagff(
-		.din(dma_axi_arid[pt[1235-:8] - 1:0]),
-		.dout(rdbuf_tag[pt[1235-:8] - 1:0]),
-		.en(rdbuf_en),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(3)) rdbuf_szff(
-		.din(dma_axi_arsize[2:0]),
-		.dout(rdbuf_sz[2:0]),
-		.en(rdbuf_en),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(32)) rdbuf_addrff(
-		.din(dma_axi_araddr[31:0]),
-		.dout(rdbuf_addr[31:0]),
-		.en(rdbuf_en & dma_bus_clk_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	assign dma_axi_awready = ~(wrbuf_vld & ~wrbuf_cmd_sent);
-	assign dma_axi_wready = ~(wrbuf_data_vld & ~wrbuf_cmd_sent);
-	assign dma_axi_arready = ~(rdbuf_vld & ~rdbuf_cmd_sent);
-	assign bus_cmd_valid = (wrbuf_vld & wrbuf_data_vld) | rdbuf_vld;
-	assign bus_cmd_sent = bus_cmd_valid & dma_fifo_ready;
-	assign bus_cmd_write = axi_mstr_sel;
-	assign bus_cmd_posted_write = 1'b0;
-	assign bus_cmd_addr[31:0] = (axi_mstr_sel ? wrbuf_addr[31:0] : rdbuf_addr[31:0]);
-	assign bus_cmd_sz[2:0] = (axi_mstr_sel ? wrbuf_sz[2:0] : rdbuf_sz[2:0]);
-	assign bus_cmd_wdata[63:0] = wrbuf_data[63:0];
-	assign bus_cmd_byteen[7:0] = wrbuf_byteen[7:0];
-	assign bus_cmd_tag[pt[1235-:8] - 1:0] = (axi_mstr_sel ? wrbuf_tag[pt[1235-:8] - 1:0] : rdbuf_tag[pt[1235-:8] - 1:0]);
-	assign bus_cmd_mid[pt[1250-:9] - 1:0] = {pt[1250-:9] {1'sb0}};
-	assign bus_cmd_prty[pt[1241-:6] - 1:0] = {pt[1241-:6] {1'sb0}};
-	assign axi_mstr_sel = ((wrbuf_vld & wrbuf_data_vld) & rdbuf_vld ? axi_mstr_priority : wrbuf_vld & wrbuf_data_vld);
-	assign axi_mstr_prty_in = ~axi_mstr_priority;
-	assign axi_mstr_prty_en = bus_cmd_sent;
-	rvdffs_fpga #(.WIDTH(1)) mstr_prtyff(
-		.din(axi_mstr_prty_in),
-		.dout(axi_mstr_priority),
-		.en(axi_mstr_prty_en),
-		.clk(dma_bus_clk),
-		.clken(dma_bus_clk_en),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	assign axi_rsp_valid = (fifo_valid[RspPtr] & ~fifo_dbg[RspPtr]) & fifo_done_bus[RspPtr];
-	assign axi_rsp_rdata[63:0] = fifo_data[RspPtr * 64+:64];
-	assign axi_rsp_write = fifo_write[RspPtr];
-	assign axi_rsp_error[1:0] = (fifo_error[RspPtr * 2] ? 2'b10 : (fifo_error[(RspPtr * 2) + 1] ? 2'b11 : 2'b00));
-	assign axi_rsp_tag[pt[1235-:8] - 1:0] = fifo_tag[RspPtr * pt[1235-:8]+:pt[1235-:8]];
-	assign dma_axi_bvalid = axi_rsp_valid & axi_rsp_write;
-	assign dma_axi_bresp[1:0] = axi_rsp_error[1:0];
-	assign dma_axi_bid[pt[1235-:8] - 1:0] = axi_rsp_tag[pt[1235-:8] - 1:0];
-	assign dma_axi_rvalid = axi_rsp_valid & ~axi_rsp_write;
-	assign dma_axi_rresp[1:0] = axi_rsp_error;
-	assign dma_axi_rdata[63:0] = axi_rsp_rdata[63:0];
-	assign dma_axi_rlast = 1'b1;
-	assign dma_axi_rid[pt[1235-:8] - 1:0] = axi_rsp_tag[pt[1235-:8] - 1:0];
-	assign bus_posted_write_done = 1'b0;
-	assign bus_rsp_valid = dma_axi_bvalid | dma_axi_rvalid;
-	assign bus_rsp_sent = (dma_axi_bvalid & dma_axi_bready) | (dma_axi_rvalid & dma_axi_rready);
-	assign dma_active = (wrbuf_vld | rdbuf_vld) | |fifo_valid[DEPTH - 1:0];
-endmodule
-module eb1_exu_alu_ctl (
-	clk,
-	rst_l,
-	scan_mode,
-	flush_upper_x,
-	flush_lower_r,
-	enable,
-	valid_in,
-	ap,
-	csr_ren_in,
-	csr_rddata_in,
-	a_in,
-	b_in,
-	pc_in,
-	pp_in,
-	brimm_in,
-	result_ff,
-	flush_upper_out,
-	flush_final_out,
-	flush_path_out,
-	pc_ff,
-	pred_correct_out,
-	predict_p_out
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire flush_upper_x;
-	input wire flush_lower_r;
-	input wire enable;
-	input wire valid_in;
-	input wire [43:0] ap;
-	input wire csr_ren_in;
-	input wire [31:0] csr_rddata_in;
-	input wire signed [31:0] a_in;
-	input wire [31:0] b_in;
-	input wire [31:1] pc_in;
-	input wire [55:0] pp_in;
-	input wire [12:1] brimm_in;
-	output wire [31:0] result_ff;
-	output wire flush_upper_out;
-	output wire flush_final_out;
-	output wire [31:1] flush_path_out;
-	output wire [31:1] pc_ff;
-	output wire pred_correct_out;
-	output reg [55:0] predict_p_out;
-	wire [31:0] zba_a_in;
-	wire [31:0] aout;
-	wire cout;
-	wire ov;
-	wire neg;
-	wire [31:0] lout;
-	wire [31:0] sout;
-	wire sel_shift;
-	wire sel_adder;
-	wire slt_one;
-	wire actual_taken;
-	wire [31:1] pcout;
-	wire cond_mispredict;
-	wire target_mispredict;
-	wire eq;
-	wire ne;
-	wire lt;
-	wire ge;
-	wire any_jal;
-	wire [1:0] newhist;
-	wire sel_pc;
-	wire [31:0] csr_write_data;
-	wire [31:0] result;
-	wire ap_clz;
-	wire ap_ctz;
-	wire ap_pcnt;
-	wire ap_sext_b;
-	wire ap_sext_h;
-	wire ap_min;
-	wire ap_max;
-	wire ap_pack;
-	wire ap_packu;
-	wire ap_packh;
-	wire ap_rol;
-	wire ap_ror;
-	wire ap_rev;
-	wire ap_rev8;
-	wire ap_orc_b;
-	wire ap_orc16;
-	wire ap_zbb;
-	wire ap_sbset;
-	wire ap_sbclr;
-	wire ap_sbinv;
-	wire ap_sbext;
-	wire ap_slo;
-	wire ap_sro;
-	wire ap_sh1add;
-	wire ap_sh2add;
-	wire ap_sh3add;
-	wire ap_zba;
-	generate
-		if (pt[2207-:5] == 1) begin
-			assign ap_clz = ap[43];
-			assign ap_ctz = ap[42];
-			assign ap_pcnt = ap[41];
-			assign ap_sext_b = ap[40];
-			assign ap_sext_h = ap[39];
-			assign ap_min = ap[36];
-			assign ap_max = ap[35];
-		end
-		else begin
-			assign ap_clz = 1'b0;
-			assign ap_ctz = 1'b0;
-			assign ap_pcnt = 1'b0;
-			assign ap_sext_b = 1'b0;
-			assign ap_sext_h = 1'b0;
-			assign ap_min = 1'b0;
-			assign ap_max = 1'b0;
-		end
-	endgenerate
-	generate
-		if ((pt[2207-:5] == 1) | (pt[2187-:5] == 1)) begin
-			assign ap_pack = ap[34];
-			assign ap_packu = ap[33];
-			assign ap_packh = ap[32];
-			assign ap_rol = ap[31];
-			assign ap_ror = ap[30];
-			assign ap_rev = ap[29] & (b_in[4:0] == 5'b11111);
-			assign ap_rev8 = ap[29] & (b_in[4:0] == 5'b11000);
-			assign ap_orc_b = ap[28] & (b_in[4:0] == 5'b00111);
-			assign ap_orc16 = ap[28] & (b_in[4:0] == 5'b10000);
-			assign ap_zbb = ap[27];
-		end
-		else begin
-			assign ap_pack = 1'b0;
-			assign ap_packu = 1'b0;
-			assign ap_packh = 1'b0;
-			assign ap_rol = 1'b0;
-			assign ap_ror = 1'b0;
-			assign ap_rev = 1'b0;
-			assign ap_rev8 = 1'b0;
-			assign ap_orc_b = 1'b0;
-			assign ap_orc16 = 1'b0;
-			assign ap_zbb = 1'b0;
-		end
-	endgenerate
-	generate
-		if (pt[2177-:5] == 1) begin
-			assign ap_sbset = ap[26];
-			assign ap_sbclr = ap[25];
-			assign ap_sbinv = ap[24];
-			assign ap_sbext = ap[23];
-		end
-		else begin
-			assign ap_sbset = 1'b0;
-			assign ap_sbclr = 1'b0;
-			assign ap_sbinv = 1'b0;
-			assign ap_sbext = 1'b0;
-		end
-	endgenerate
-	generate
-		if (pt[2187-:5] == 1) begin
-			assign ap_slo = ap[38];
-			assign ap_sro = ap[37];
-		end
-		else begin
-			assign ap_slo = 1'b0;
-			assign ap_sro = 1'b0;
-		end
-	endgenerate
-	generate
-		if (pt[2212-:5] == 1) begin
-			assign ap_sh1add = ap[22];
-			assign ap_sh2add = ap[21];
-			assign ap_sh3add = ap[20];
-			assign ap_zba = ap[19];
-		end
-		else begin
-			assign ap_sh1add = 1'b0;
-			assign ap_sh2add = 1'b0;
-			assign ap_sh3add = 1'b0;
-			assign ap_zba = 1'b0;
-		end
-	endgenerate
-	rvdffpcie #(.WIDTH(31)) i_pc_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(enable),
-		.din(pc_in[31:1]),
-		.dout(pc_ff[31:1])
-	);
-	rvdffe #(.WIDTH(32)) i_result_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(enable & valid_in),
-		.din(result[31:0]),
-		.dout(result_ff[31:0])
-	);
-	assign zba_a_in[31:0] = ((({32 {ap_sh1add}} & {a_in[30:0], 1'b0}) | ({32 {ap_sh2add}} & {a_in[29:0], 2'b00})) | ({32 {ap_sh3add}} & {a_in[28:0], 3'b000})) | ({32 {~ap_zba}} & a_in[31:0]);
-	wire [31:0] bm;
-	assign bm[31:0] = (ap[7] ? ~b_in[31:0] : b_in[31:0]);
-	assign {cout, aout[31:0]} = ({1'b0, zba_a_in[31:0]} + {1'b0, bm[31:0]}) + {32'b00000000000000000000000000000000, ap[7]};
-	assign ov = ((~a_in[31] & ~bm[31]) & aout[31]) | ((a_in[31] & bm[31]) & ~aout[31]);
-	assign lt = (~ap[5] & (neg ^ ov)) | (ap[5] & ~cout);
-	assign eq = a_in[31:0] == b_in[31:0];
-	assign ne = ~eq;
-	assign neg = aout[31];
-	assign ge = ~lt;
-	assign lout[31:0] = (((((({32 {csr_ren_in}} & csr_rddata_in[31:0]) | (({32 {ap[18] & ~ap_zbb}} & a_in[31:0]) & b_in[31:0])) | ({32 {ap[17] & ~ap_zbb}} & (a_in[31:0] | b_in[31:0]))) | ({32 {ap[16] & ~ap_zbb}} & (a_in[31:0] ^ b_in[31:0]))) | (({32 {ap[18] & ap_zbb}} & a_in[31:0]) & ~b_in[31:0])) | ({32 {ap[17] & ap_zbb}} & (a_in[31:0] | ~b_in[31:0]))) | ({32 {ap[16] & ap_zbb}} & (a_in[31:0] ^ ~b_in[31:0]));
-	wire [5:0] shift_amount;
-	wire [31:0] shift_mask;
-	wire [62:0] shift_extend;
-	wire [62:0] shift_long;
-	assign shift_amount[5:0] = ((((((({6 {ap[15]}} & (6'd32 - {1'b0, b_in[4:0]})) | ({6 {ap[14]}} & {1'b0, b_in[4:0]})) | ({6 {ap[13]}} & {1'b0, b_in[4:0]})) | ({6 {ap_rol}} & (6'd32 - {1'b0, b_in[4:0]}))) | ({6 {ap_ror}} & {1'b0, b_in[4:0]})) | ({6 {ap_slo}} & (6'd32 - {1'b0, b_in[4:0]}))) | ({6 {ap_sro}} & {1'b0, b_in[4:0]})) | ({6 {ap_sbext}} & {1'b0, b_in[4:0]});
-	assign shift_mask[31:0] = 32'hffffffff << ({5 {ap[15] | ap_slo}} & b_in[4:0]);
-	assign shift_extend[31:0] = a_in[31:0];
-	assign shift_extend[62:32] = ((((({31 {ap[13]}} & {31 {a_in[31]}}) | ({31 {ap[15]}} & a_in[30:0])) | ({31 {ap_rol}} & a_in[30:0])) | ({31 {ap_ror}} & a_in[30:0])) | ({31 {ap_slo}} & a_in[30:0])) | ({31 {ap_sro}} & {31 {1'b1}});
-	assign shift_long[62:0] = shift_extend[62:0] >> shift_amount[4:0];
-	assign sout[31:0] = (shift_long[31:0] & shift_mask[31:0]) | ({32 {ap_slo}} & ~shift_mask[31:0]);
-	wire bitmanip_clz_ctz_sel;
-	wire [31:0] bitmanip_a_reverse_ff;
-	wire [31:0] bitmanip_lzd_in;
-	reg [5:0] bitmanip_dw_lzd_enc;
-	wire [5:0] bitmanip_clz_ctz_result;
-	assign bitmanip_clz_ctz_sel = ap_clz | ap_ctz;
-	assign bitmanip_a_reverse_ff[31:0] = {a_in[0], a_in[1], a_in[2], a_in[3], a_in[4], a_in[5], a_in[6], a_in[7], a_in[8], a_in[9], a_in[10], a_in[11], a_in[12], a_in[13], a_in[14], a_in[15], a_in[16], a_in[17], a_in[18], a_in[19], a_in[20], a_in[21], a_in[22], a_in[23], a_in[24], a_in[25], a_in[26], a_in[27], a_in[28], a_in[29], a_in[30], a_in[31]};
-	assign bitmanip_lzd_in[31:0] = ({32 {ap_clz}} & a_in[31:0]) | ({32 {ap_ctz}} & bitmanip_a_reverse_ff[31:0]);
-	reg [31:0] bitmanip_lzd_os;
-	integer i;
-	reg found;
-	always @(*) begin
-		bitmanip_lzd_os[31:0] = bitmanip_lzd_in[31:0];
-		bitmanip_dw_lzd_enc[5:0] = 6'b000000;
-		found = 1'b0;
-		begin : sv2v_autoblock_42
-			reg signed [31:0] i;
-			for (i = 0; (i < 32) && (found == 0); i = i + 1)
-				if (bitmanip_lzd_os[31] == 1'b0) begin
-					bitmanip_dw_lzd_enc[5:0] = bitmanip_dw_lzd_enc[5:0] + 6'b000001;
-					bitmanip_lzd_os[31:0] = bitmanip_lzd_os[31:0] << 1;
-				end
-				else
-					found = 1'b1;
-		end
-	end
-	assign bitmanip_clz_ctz_result[5:0] = {6 {bitmanip_clz_ctz_sel}} & {bitmanip_dw_lzd_enc[5], {5 {~bitmanip_dw_lzd_enc[5]}} & bitmanip_dw_lzd_enc[4:0]};
-	reg [5:0] bitmanip_pcnt;
-	wire [5:0] bitmanip_pcnt_result;
-	integer bitmanip_pcnt_i;
-	always @(*) begin
-		bitmanip_pcnt[5:0] = 6'b000000;
-		for (bitmanip_pcnt_i = 0; bitmanip_pcnt_i < 32; bitmanip_pcnt_i = bitmanip_pcnt_i + 1)
-			bitmanip_pcnt[5:0] = bitmanip_pcnt[5:0] + {5'b00000, a_in[bitmanip_pcnt_i]};
-	end
-	assign bitmanip_pcnt_result[5:0] = {6 {ap_pcnt}} & bitmanip_pcnt[5:0];
-	wire [31:0] bitmanip_sext_result;
-	assign bitmanip_sext_result[31:0] = ({32 {ap_sext_b}} & {{24 {a_in[7]}}, a_in[7:0]}) | ({32 {ap_sext_h}} & {{16 {a_in[15]}}, a_in[15:0]});
-	wire bitmanip_minmax_sel;
-	wire [31:0] bitmanip_minmax_result;
-	assign bitmanip_minmax_sel = ap_min | ap_max;
-	wire bitmanip_minmax_sel_a;
-	assign bitmanip_minmax_sel_a = ge ^ ap_min;
-	assign bitmanip_minmax_result[31:0] = ({32 {bitmanip_minmax_sel & bitmanip_minmax_sel_a}} & a_in[31:0]) | ({32 {bitmanip_minmax_sel & ~bitmanip_minmax_sel_a}} & b_in[31:0]);
-	wire [31:0] bitmanip_pack_result;
-	wire [31:0] bitmanip_packu_result;
-	wire [31:0] bitmanip_packh_result;
-	assign bitmanip_pack_result[31:0] = {32 {ap_pack}} & {b_in[15:0], a_in[15:0]};
-	assign bitmanip_packu_result[31:0] = {32 {ap_packu}} & {b_in[31:16], a_in[31:16]};
-	assign bitmanip_packh_result[31:0] = {32 {ap_packh}} & {16'b0000000000000000, b_in[7:0], a_in[7:0]};
-	wire [31:0] bitmanip_rev_result;
-	wire [31:0] bitmanip_rev8_result;
-	wire [31:0] bitmanip_orc_b_result;
-	wire [31:0] bitmanip_orc16_result;
-	assign bitmanip_rev_result[31:0] = {32 {ap_rev}} & {a_in[0], a_in[1], a_in[2], a_in[3], a_in[4], a_in[5], a_in[6], a_in[7], a_in[8], a_in[9], a_in[10], a_in[11], a_in[12], a_in[13], a_in[14], a_in[15], a_in[16], a_in[17], a_in[18], a_in[19], a_in[20], a_in[21], a_in[22], a_in[23], a_in[24], a_in[25], a_in[26], a_in[27], a_in[28], a_in[29], a_in[30], a_in[31]};
-	assign bitmanip_rev8_result[31:0] = {32 {ap_rev8}} & {a_in[7:0], a_in[15:8], a_in[23:16], a_in[31:24]};
-	assign bitmanip_orc_b_result[31:0] = {32 {ap_orc_b}} & {{8 {|a_in[31:24]}}, {8 {|a_in[23:16]}}, {8 {|a_in[15:8]}}, {8 {|a_in[7:0]}}};
-	assign bitmanip_orc16_result[31:0] = {32 {ap_orc16}} & {{a_in[31:16] | a_in[15:0]}, {a_in[31:16] | a_in[15:0]}};
-	wire [31:0] bitmanip_sb_1hot;
-	wire [31:0] bitmanip_sb_data;
-	assign bitmanip_sb_1hot[31:0] = 32'h00000001 << b_in[4:0];
-	assign bitmanip_sb_data[31:0] = (({32 {ap_sbset}} & (a_in[31:0] | bitmanip_sb_1hot[31:0])) | ({32 {ap_sbclr}} & (a_in[31:0] & ~bitmanip_sb_1hot[31:0]))) | ({32 {ap_sbinv}} & (a_in[31:0] ^ bitmanip_sb_1hot[31:0]));
-	assign sel_shift = (((((ap[15] | ap[14]) | ap[13]) | ap_slo) | ap_sro) | ap_rol) | ap_ror;
-	assign sel_adder = ((((ap[8] | ap[7]) | ap_zba) & ~ap[6]) & ~ap_min) & ~ap_max;
-	assign sel_pc = ((ap[4] | pp_in[34]) | pp_in[33]) | pp_in[31];
-	assign csr_write_data[31:0] = (ap[0] ? b_in[31:0] : a_in[31:0]);
-	assign slt_one = ap[6] & lt;
-	assign result[31:0] = (((((((((((((((((lout[31:0] | ({32 {sel_shift}} & sout[31:0])) | ({32 {sel_adder}} & aout[31:0])) | ({32 {sel_pc}} & {pcout[31:1], 1'b0})) | ({32 {ap[1]}} & csr_write_data[31:0])) | {31'b0000000000000000000000000000000, slt_one}) | ({32 {ap_sbext}} & {31'b0000000000000000000000000000000, sout[0]})) | {26'b00000000000000000000000000, bitmanip_clz_ctz_result[5:0]}) | {26'b00000000000000000000000000, bitmanip_pcnt_result[5:0]}) | bitmanip_sext_result[31:0]) | bitmanip_minmax_result[31:0]) | bitmanip_pack_result[31:0]) | bitmanip_packu_result[31:0]) | bitmanip_packh_result[31:0]) | bitmanip_rev_result[31:0]) | bitmanip_rev8_result[31:0]) | bitmanip_orc_b_result[31:0]) | bitmanip_orc16_result[31:0]) | bitmanip_sb_data[31:0];
-	assign any_jal = ((ap[4] | pp_in[34]) | pp_in[33]) | pp_in[31];
-	assign actual_taken = ((((ap[12] & eq) | (ap[11] & ne)) | (ap[10] & lt)) | (ap[9] & ge)) | any_jal;
-	rvbradder ibradder(
-		.pc(pc_in[31:1]),
-		.offset(brimm_in[12:1]),
-		.dout(pcout[31:1])
-	);
-	assign pred_correct_out = (((valid_in & ap[2]) & ~actual_taken) & ~any_jal) | (((valid_in & ap[3]) & actual_taken) & ~any_jal);
-	assign flush_path_out[31:1] = (any_jal ? aout[31:1] : pcout[31:1]);
-	assign cond_mispredict = (ap[3] & ~actual_taken) | (ap[2] & actual_taken);
-	assign target_mispredict = pp_in[31] & (pp_in[30:0] != aout[31:1]);
-	assign flush_upper_out = ((((ap[4] | cond_mispredict) | target_mispredict) & valid_in) & ~flush_upper_x) & ~flush_lower_r;
-	assign flush_final_out = ((((ap[4] | cond_mispredict) | target_mispredict) & valid_in) & ~flush_upper_x) | flush_lower_r;
-	assign newhist[1] = (pp_in[51] & pp_in[50]) | (~pp_in[50] & actual_taken);
-	assign newhist[0] = (~pp_in[51] & ~actual_taken) | (pp_in[51] & actual_taken);
-	always @(*) begin
-		predict_p_out = pp_in;
-		predict_p_out[55] = (~flush_upper_x & ~flush_lower_r) & (cond_mispredict | target_mispredict);
-		predict_p_out[54] = actual_taken;
-		predict_p_out[51] = newhist[1];
-		predict_p_out[50] = newhist[0];
-	end
-endmodule
-module eb1_exu_div_ctl (
-	clk,
-	rst_l,
-	scan_mode,
-	dp,
-	dividend,
-	divisor,
-	cancel,
-	finish_dly,
-	out
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire [2:0] dp;
-	input wire [31:0] dividend;
-	input wire [31:0] divisor;
-	input wire cancel;
-	output wire finish_dly;
-	output wire [31:0] out;
-	wire [31:0] out_raw;
-	assign out[31:0] = {32 {finish_dly}} & out_raw[31:0];
-	generate
-		if (pt[1262-:5] == 0) eb1_exu_div_existing_1bit_cheapshortq i_existing_1bit_div_cheapshortq(
-			.clk(clk),
-			.rst_l(rst_l),
-			.scan_mode(scan_mode),
-			.cancel(cancel),
-			.valid_in(dp[2]),
-			.signed_in(~dp[1]),
-			.rem_in(dp[0]),
-			.dividend_in(dividend[31:0]),
-			.divisor_in(divisor[31:0]),
-			.valid_out(finish_dly),
-			.data_out(out_raw[31:0])
-		);
-	endgenerate
-	generate
-		if ((pt[1262-:5] == 1) & (pt[1269-:7] == 1)) eb1_exu_div_new_1bit_fullshortq i_new_1bit_div_fullshortq(
-			.clk(clk),
-			.rst_l(rst_l),
-			.scan_mode(scan_mode),
-			.cancel(cancel),
-			.valid_in(dp[2]),
-			.signed_in(~dp[1]),
-			.rem_in(dp[0]),
-			.dividend_in(dividend[31:0]),
-			.divisor_in(divisor[31:0]),
-			.valid_out(finish_dly),
-			.data_out(out_raw[31:0])
-		);
-	endgenerate
-	generate
-		if ((pt[1262-:5] == 1) & (pt[1269-:7] == 2)) eb1_exu_div_new_2bit_fullshortq i_new_2bit_div_fullshortq(
-			.clk(clk),
-			.rst_l(rst_l),
-			.scan_mode(scan_mode),
-			.cancel(cancel),
-			.valid_in(dp[2]),
-			.signed_in(~dp[1]),
-			.rem_in(dp[0]),
-			.dividend_in(dividend[31:0]),
-			.divisor_in(divisor[31:0]),
-			.valid_out(finish_dly),
-			.data_out(out_raw[31:0])
-		);
-	endgenerate
-	generate
-		if ((pt[1262-:5] == 1) & (pt[1269-:7] == 3)) eb1_exu_div_new_3bit_fullshortq i_new_3bit_div_fullshortq(
-			.clk(clk),
-			.rst_l(rst_l),
-			.scan_mode(scan_mode),
-			.cancel(cancel),
-			.valid_in(dp[2]),
-			.signed_in(~dp[1]),
-			.rem_in(dp[0]),
-			.dividend_in(dividend[31:0]),
-			.divisor_in(divisor[31:0]),
-			.valid_out(finish_dly),
-			.data_out(out_raw[31:0])
-		);
-	endgenerate
-	generate
-		if ((pt[1262-:5] == 1) & (pt[1269-:7] == 4)) eb1_exu_div_new_4bit_fullshortq i_new_4bit_div_fullshortq(
-			.clk(clk),
-			.rst_l(rst_l),
-			.scan_mode(scan_mode),
-			.cancel(cancel),
-			.valid_in(dp[2]),
-			.signed_in(~dp[1]),
-			.rem_in(dp[0]),
-			.dividend_in(dividend[31:0]),
-			.divisor_in(divisor[31:0]),
-			.valid_out(finish_dly),
-			.data_out(out_raw[31:0])
-		);
-	endgenerate
-endmodule
-module eb1_exu_div_existing_1bit_cheapshortq (
-	clk,
-	rst_l,
-	scan_mode,
-	cancel,
-	valid_in,
-	signed_in,
-	rem_in,
-	dividend_in,
-	divisor_in,
-	valid_out,
-	data_out
-);
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire cancel;
-	input wire valid_in;
-	input wire signed_in;
-	input wire rem_in;
-	input wire [31:0] dividend_in;
-	input wire [31:0] divisor_in;
-	output wire valid_out;
-	output wire [31:0] data_out;
-	wire div_clken;
-	wire run_in;
-	wire run_state;
-	wire [5:0] count_in;
-	wire [5:0] count;
-	wire [32:0] m_ff;
-	wire qff_enable;
-	wire aff_enable;
-	wire [32:0] q_in;
-	wire [32:0] q_ff;
-	wire [32:0] a_in;
-	wire [32:0] a_ff;
-	wire [32:0] m_eff;
-	wire [32:0] a_shift;
-	wire dividend_neg_ff;
-	wire divisor_neg_ff;
-	wire [31:0] dividend_comp;
-	wire [31:0] dividend_eff;
-	wire [31:0] q_ff_comp;
-	wire [31:0] q_ff_eff;
-	wire [31:0] a_ff_comp;
-	wire [31:0] a_ff_eff;
-	wire sign_ff;
-	wire sign_eff;
-	wire rem_ff;
-	wire add;
-	wire [32:0] a_eff;
-	wire [64:0] a_eff_shift;
-	wire rem_correct;
-	wire valid_ff_x;
-	wire valid_x;
-	wire finish;
-	wire finish_ff;
-	wire smallnum_case;
-	wire smallnum_case_ff;
-	wire [3:0] smallnum;
-	wire [3:0] smallnum_ff;
-	wire m_already_comp;
-	wire [4:0] a_cls;
-	wire [4:0] b_cls;
-	wire [5:0] shortq_shift;
-	wire [5:0] shortq_shift_ff;
-	wire [5:0] shortq;
-	wire shortq_enable;
-	wire shortq_enable_ff;
-	wire [32:0] short_dividend;
-	wire [3:0] shortq_raw;
-	wire [3:0] shortq_shift_xx;
-	rvdffe #(.WIDTH(23)) i_misc_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(div_clken),
-		.din({valid_in & ~cancel, finish & ~cancel, run_in, count_in[5:0], (valid_in & dividend_in[31]) | (~valid_in & dividend_neg_ff), (valid_in & divisor_in[31]) | (~valid_in & divisor_neg_ff), (valid_in & sign_eff) | (~valid_in & sign_ff), (valid_in & rem_in) | (~valid_in & rem_ff), smallnum_case, smallnum[3:0], shortq_enable, shortq_shift[3:0]}),
-		.dout({valid_ff_x, finish_ff, run_state, count[5:0], dividend_neg_ff, divisor_neg_ff, sign_ff, rem_ff, smallnum_case_ff, smallnum_ff[3:0], shortq_enable_ff, shortq_shift_xx[3:0]})
-	);
-	rvdffe #(.WIDTH(33)) mff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(valid_in),
-		.din({signed_in & divisor_in[31], divisor_in[31:0]}),
-		.dout(m_ff[32:0])
-	);
-	rvdffe #(.WIDTH(33)) qff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(qff_enable),
-		.din(q_in[32:0]),
-		.dout(q_ff[32:0])
-	);
-	rvdffe #(.WIDTH(33)) aff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(aff_enable),
-		.din(a_in[32:0]),
-		.dout(a_ff[32:0])
-	);
-	rvtwoscomp #(.WIDTH(32)) i_dividend_comp(
-		.din(q_ff[31:0]),
-		.dout(dividend_comp[31:0])
-	);
-	rvtwoscomp #(.WIDTH(32)) i_q_ff_comp(
-		.din(q_ff[31:0]),
-		.dout(q_ff_comp[31:0])
-	);
-	rvtwoscomp #(.WIDTH(32)) i_a_ff_comp(
-		.din(a_ff[31:0]),
-		.dout(a_ff_comp[31:0])
-	);
-	assign valid_x = valid_ff_x & ~cancel;
-	assign smallnum_case = (((((q_ff[31:4] == 28'b0000000000000000000000000000) & (m_ff[31:4] == 28'b0000000000000000000000000000)) & (m_ff[31:0] != 32'b00000000000000000000000000000000)) & ~rem_ff) & valid_x) | ((((q_ff[31:0] == 32'b00000000000000000000000000000000) & (m_ff[31:0] != 32'b00000000000000000000000000000000)) & ~rem_ff) & valid_x);
-	assign smallnum[3] = ((q_ff[3] & ~m_ff[3]) & ~m_ff[2]) & ~m_ff[1];
-	assign smallnum[2] = ((((q_ff[3] & ~m_ff[3]) & ~m_ff[2]) & ~m_ff[0]) | (((q_ff[2] & ~m_ff[3]) & ~m_ff[2]) & ~m_ff[1])) | (((q_ff[3] & q_ff[2]) & ~m_ff[3]) & ~m_ff[2]);
-	assign smallnum[1] = ((((((((((q_ff[2] & ~m_ff[3]) & ~m_ff[2]) & ~m_ff[0]) | (((q_ff[1] & ~m_ff[3]) & ~m_ff[2]) & ~m_ff[1])) | (((q_ff[3] & ~m_ff[3]) & ~m_ff[1]) & ~m_ff[0])) | (((((q_ff[3] & ~q_ff[2]) & ~m_ff[3]) & ~m_ff[2]) & m_ff[1]) & m_ff[0])) | ((((~q_ff[3] & q_ff[2]) & q_ff[1]) & ~m_ff[3]) & ~m_ff[2])) | (((q_ff[3] & q_ff[2]) & ~m_ff[3]) & ~m_ff[0])) | ((((q_ff[3] & q_ff[2]) & ~m_ff[3]) & m_ff[2]) & ~m_ff[1])) | (((q_ff[3] & q_ff[1]) & ~m_ff[3]) & ~m_ff[1])) | ((((q_ff[3] & q_ff[2]) & q_ff[1]) & ~m_ff[3]) & m_ff[2]);
-	assign smallnum[0] = ((((((((((((((((((((((((((((q_ff[2] & q_ff[1]) & q_ff[0]) & ~m_ff[3]) & ~m_ff[1]) | (((((q_ff[3] & ~q_ff[2]) & q_ff[0]) & ~m_ff[3]) & m_ff[1]) & m_ff[0])) | (((q_ff[2] & ~m_ff[3]) & ~m_ff[1]) & ~m_ff[0])) | (((q_ff[1] & ~m_ff[3]) & ~m_ff[2]) & ~m_ff[0])) | (((q_ff[0] & ~m_ff[3]) & ~m_ff[2]) & ~m_ff[1])) | ((((((~q_ff[3] & q_ff[2]) & ~q_ff[1]) & ~m_ff[3]) & ~m_ff[2]) & m_ff[1]) & m_ff[0])) | ((((~q_ff[3] & q_ff[2]) & q_ff[1]) & ~m_ff[3]) & ~m_ff[0])) | (((q_ff[3] & ~m_ff[2]) & ~m_ff[1]) & ~m_ff[0])) | ((((q_ff[3] & ~q_ff[2]) & ~m_ff[3]) & m_ff[2]) & m_ff[1])) | (((((~q_ff[3] & q_ff[2]) & q_ff[1]) & ~m_ff[3]) & m_ff[2]) & ~m_ff[1])) | ((((~q_ff[3] & q_ff[2]) & q_ff[0]) & ~m_ff[3]) & ~m_ff[1])) | (((((q_ff[3] & ~q_ff[2]) & ~q_ff[1]) & ~m_ff[3]) & m_ff[2]) & m_ff[0])) | ((((~q_ff[2] & q_ff[1]) & q_ff[0]) & ~m_ff[3]) & ~m_ff[2])) | (((q_ff[3] & q_ff[2]) & ~m_ff[1]) & ~m_ff[0])) | (((q_ff[3] & q_ff[1]) & ~m_ff[2]) & ~m_ff[0])) | (((((~q_ff[3] & q_ff[2]) & q_ff[1]) & q_ff[0]) & ~m_ff[3]) & m_ff[2])) | (((q_ff[3] & q_ff[2]) & m_ff[3]) & ~m_ff[2])) | ((((q_ff[3] & q_ff[1]) & m_ff[3]) & ~m_ff[2]) & ~m_ff[1])) | (((q_ff[3] & q_ff[0]) & ~m_ff[2]) & ~m_ff[1])) | (((((q_ff[3] & ~q_ff[1]) & ~m_ff[3]) & m_ff[2]) & m_ff[1]) & m_ff[0])) | ((((q_ff[3] & q_ff[2]) & q_ff[1]) & m_ff[3]) & ~m_ff[0])) | ((((q_ff[3] & q_ff[2]) & q_ff[1]) & m_ff[3]) & ~m_ff[1])) | ((((q_ff[3] & q_ff[2]) & q_ff[0]) & m_ff[3]) & ~m_ff[1])) | ((((q_ff[3] & ~q_ff[2]) & q_ff[1]) & ~m_ff[3]) & m_ff[1])) | (((q_ff[3] & q_ff[1]) & q_ff[0]) & ~m_ff[2])) | ((((q_ff[3] & q_ff[2]) & q_ff[1]) & q_ff[0]) & m_ff[3]);
-	assign short_dividend[31:0] = q_ff[31:0];
-	assign short_dividend[32] = sign_ff & q_ff[31];
-	assign a_cls[4:3] = 2'b00;
-	assign a_cls[2] = (~short_dividend[32] & (short_dividend[31:24] != {8 {1'b0}})) | (short_dividend[32] & (short_dividend[31:23] != {9 {1'b1}}));
-	assign a_cls[1] = (~short_dividend[32] & (short_dividend[23:16] != {8 {1'b0}})) | (short_dividend[32] & (short_dividend[22:15] != {8 {1'b1}}));
-	assign a_cls[0] = (~short_dividend[32] & (short_dividend[15:8] != {8 {1'b0}})) | (short_dividend[32] & (short_dividend[14:7] != {8 {1'b1}}));
-	assign b_cls[4:3] = 2'b00;
-	assign b_cls[2] = (~m_ff[32] & (m_ff[31:24] != {8 {1'b0}})) | (m_ff[32] & (m_ff[31:24] != {8 {1'b1}}));
-	assign b_cls[1] = (~m_ff[32] & (m_ff[23:16] != {8 {1'b0}})) | (m_ff[32] & (m_ff[23:16] != {8 {1'b1}}));
-	assign b_cls[0] = (~m_ff[32] & (m_ff[15:8] != {8 {1'b0}})) | (m_ff[32] & (m_ff[15:8] != {8 {1'b1}}));
-	assign shortq_raw[3] = ((((((a_cls[2:1] == 2'b01) & (b_cls[2] == 1'b1)) | ((a_cls[2:0] == 3'b001) & (b_cls[2] == 1'b1))) | ((a_cls[2:0] == 3'b000) & (b_cls[2] == 1'b1))) | ((a_cls[2:0] == 3'b001) & (b_cls[2:1] == 2'b01))) | ((a_cls[2:0] == 3'b000) & (b_cls[2:1] == 2'b01))) | ((a_cls[2:0] == 3'b000) & (b_cls[2:0] == 3'b001));
-	assign shortq_raw[2] = ((((a_cls[2] == 1'b1) & (b_cls[2] == 1'b1)) | ((a_cls[2:1] == 2'b01) & (b_cls[2:1] == 2'b01))) | ((a_cls[2:0] == 3'b001) & (b_cls[2:0] == 3'b001))) | ((a_cls[2:0] == 3'b000) & (b_cls[2:0] == 3'b000));
-	assign shortq_raw[1] = (((a_cls[2] == 1'b1) & (b_cls[2:1] == 2'b01)) | ((a_cls[2:1] == 2'b01) & (b_cls[2:0] == 3'b001))) | ((a_cls[2:0] == 3'b001) & (b_cls[2:0] == 3'b000));
-	assign shortq_raw[0] = ((a_cls[2] == 1'b1) & (b_cls[2:0] == 3'b001)) | ((a_cls[2:1] == 2'b01) & (b_cls[2:0] == 3'b000));
-	assign shortq_enable = (valid_ff_x & (m_ff[31:0] != 32'b00000000000000000000000000000000)) & (shortq_raw[3:0] != 4'b0000);
-	assign shortq_shift[3:0] = {4 {shortq_enable}} & shortq_raw[3:0];
-	assign shortq[5:0] = 6'b000000;
-	assign shortq_shift[5:4] = 2'b00;
-	assign shortq_shift_ff[5] = 1'b0;
-	assign shortq_shift_ff[4:0] = ((({5 {shortq_shift_xx[3]}} & 5'b11111) | ({5 {shortq_shift_xx[2]}} & 5'b11000)) | ({5 {shortq_shift_xx[1]}} & 5'b10000)) | ({5 {shortq_shift_xx[0]}} & 5'b01000);
-	assign div_clken = ((valid_in | run_state) | finish) | finish_ff;
-	assign run_in = ((valid_in | run_state) & ~finish) & ~cancel;
-	assign count_in[5:0] = {6 {((run_state & ~finish) & ~cancel) & ~shortq_enable}} & ((count[5:0] + {1'b0, shortq_shift_ff[4:0]}) + 6'd1);
-	assign finish = smallnum_case | (~rem_ff ? count[5:0] == 6'd32 : count[5:0] == 6'd33);
-	assign valid_out = finish_ff & ~cancel;
-	assign sign_eff = signed_in & (divisor_in[31:0] != 32'b00000000000000000000000000000000);
-	assign q_in[32:0] = (({33 {~run_state}} & {1'b0, dividend_in[31:0]}) | ({33 {run_state & (valid_ff_x | shortq_enable_ff)}} & ({dividend_eff[31:0], ~a_in[32]} << shortq_shift_ff[4:0]))) | ({33 {run_state & ~(valid_ff_x | shortq_enable_ff)}} & {q_ff[31:0], ~a_in[32]});
-	assign qff_enable = valid_in | (run_state & ~shortq_enable);
-	assign dividend_eff[31:0] = (sign_ff & dividend_neg_ff ? dividend_comp[31:0] : q_ff[31:0]);
-	assign m_eff[32:0] = (add ? m_ff[32:0] : ~m_ff[32:0]);
-	assign a_eff_shift[64:0] = {33'b000000000000000000000000000000000, dividend_eff[31:0]} << shortq_shift_ff[4:0];
-	assign a_eff[32:0] = (({33 {rem_correct}} & a_ff[32:0]) | ({33 {~rem_correct & ~shortq_enable_ff}} & {a_ff[31:0], q_ff[32]})) | ({33 {~rem_correct & shortq_enable_ff}} & a_eff_shift[64:32]);
-	assign a_shift[32:0] = {33 {run_state}} & a_eff[32:0];
-	assign a_in[32:0] = {33 {run_state}} & ((a_shift[32:0] + m_eff[32:0]) + {32'b00000000000000000000000000000000, ~add});
-	assign aff_enable = (valid_in | ((run_state & ~shortq_enable) & (count[5:0] != 6'd33))) | rem_correct;
-	assign m_already_comp = divisor_neg_ff & sign_ff;
-	assign add = (a_ff[32] | rem_correct) ^ m_already_comp;
-	assign rem_correct = ((count[5:0] == 6'd33) & rem_ff) & a_ff[32];
-	assign q_ff_eff[31:0] = (sign_ff & (dividend_neg_ff ^ divisor_neg_ff) ? q_ff_comp[31:0] : q_ff[31:0]);
-	assign a_ff_eff[31:0] = (sign_ff & dividend_neg_ff ? a_ff_comp[31:0] : a_ff[31:0]);
-	assign data_out[31:0] = (({32 {smallnum_case_ff}} & {28'b0000000000000000000000000000, smallnum_ff[3:0]}) | ({32 {rem_ff}} & a_ff_eff[31:0])) | ({32 {~smallnum_case_ff & ~rem_ff}} & q_ff_eff[31:0]);
-endmodule
-module eb1_exu_div_new_1bit_fullshortq (
-	clk,
-	rst_l,
-	scan_mode,
-	cancel,
-	valid_in,
-	signed_in,
-	rem_in,
-	dividend_in,
-	divisor_in,
-	valid_out,
-	data_out
-);
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire cancel;
-	input wire valid_in;
-	input wire signed_in;
-	input wire rem_in;
-	input wire [31:0] dividend_in;
-	input wire [31:0] divisor_in;
-	output wire valid_out;
-	output wire [31:0] data_out;
-	wire valid_ff_in;
-	wire valid_ff;
-	wire finish_raw;
-	wire finish;
-	wire finish_ff;
-	wire running_state;
-	wire misc_enable;
-	wire [2:0] control_in;
-	wire [2:0] control_ff;
-	wire dividend_sign_ff;
-	wire divisor_sign_ff;
-	wire rem_ff;
-	wire count_enable;
-	wire [6:0] count_in;
-	wire [6:0] count_ff;
-	wire smallnum_case;
-	wire [3:0] smallnum;
-	wire a_enable;
-	wire a_shift;
-	wire [31:0] a_in;
-	wire [31:0] a_ff;
-	wire b_enable;
-	wire b_twos_comp;
-	wire [32:0] b_in;
-	wire [32:0] b_ff;
-	wire [31:0] q_in;
-	wire [31:0] q_ff;
-	wire rq_enable;
-	wire r_sign_sel;
-	wire r_restore_sel;
-	wire r_adder_sel;
-	wire [31:0] r_in;
-	wire [31:0] r_ff;
-	wire twos_comp_q_sel;
-	wire twos_comp_b_sel;
-	wire [31:0] twos_comp_in;
-	wire [31:0] twos_comp_out;
-	wire quotient_set;
-	wire [32:0] adder_out;
-	wire [63:0] ar_shifted;
-	wire [5:0] shortq;
-	wire [4:0] shortq_shift;
-	wire [4:0] shortq_shift_ff;
-	wire shortq_enable;
-	wire shortq_enable_ff;
-	wire [32:0] shortq_dividend;
-	wire by_zero_case;
-	wire by_zero_case_ff;
-	rvdffe #(.WIDTH(19)) i_misc_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(misc_enable),
-		.din({valid_ff_in, control_in[2:0], by_zero_case, shortq_enable, shortq_shift[4:0], finish, count_in[6:0]}),
-		.dout({valid_ff, control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]})
-	);
-	rvdffe #(.WIDTH(32)) i_a_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(a_enable),
-		.din(a_in[31:0]),
-		.dout(a_ff[31:0])
-	);
-	rvdffe #(.WIDTH(33)) i_b_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(b_enable),
-		.din(b_in[32:0]),
-		.dout(b_ff[32:0])
-	);
-	rvdffe #(.WIDTH(32)) i_r_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(rq_enable),
-		.din(r_in[31:0]),
-		.dout(r_ff[31:0])
-	);
-	rvdffe #(.WIDTH(32)) i_q_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(rq_enable),
-		.din(q_in[31:0]),
-		.dout(q_ff[31:0])
-	);
-	assign valid_ff_in = valid_in & ~cancel;
-	assign control_in[2] = (~valid_in & control_ff[2]) | ((valid_in & signed_in) & dividend_in[31]);
-	assign control_in[1] = (~valid_in & control_ff[1]) | ((valid_in & signed_in) & divisor_in[31]);
-	assign control_in[0] = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-	assign dividend_sign_ff = control_ff[2];
-	assign divisor_sign_ff = control_ff[1];
-	assign rem_ff = control_ff[0];
-	assign by_zero_case = valid_ff & (b_ff[31:0] == 32'b00000000000000000000000000000000);
-	assign misc_enable = (((valid_in | valid_ff) | cancel) | running_state) | finish_ff;
-	assign running_state = |count_ff[6:0] | shortq_enable_ff;
-	assign finish_raw = (smallnum_case | by_zero_case) | (count_ff[6:0] == 7'd32);
-	assign finish = finish_raw & ~cancel;
-	assign count_enable = ((((valid_ff | running_state) & ~finish) & ~finish_ff) & ~cancel) & ~shortq_enable;
-	assign count_in[6:0] = {7 {count_enable}} & ((count_ff[6:0] + 7'b0000001) + {2'b00, shortq_shift_ff[4:0]});
-	assign a_enable = valid_in | running_state;
-	assign a_shift = running_state & ~shortq_enable_ff;
-	assign ar_shifted[63:0] = {{32 {dividend_sign_ff}}, a_ff[31:0]} << shortq_shift_ff[4:0];
-	assign a_in[31:0] = (({32 {~a_shift & ~shortq_enable_ff}} & dividend_in[31:0]) | ({32 {a_shift}} & {a_ff[30:0], 1'b0})) | ({32 {shortq_enable_ff}} & ar_shifted[31:0]);
-	assign b_enable = valid_in | b_twos_comp;
-	assign b_twos_comp = valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-	assign b_in[32:0] = ({33 {~b_twos_comp}} & {signed_in & divisor_in[31], divisor_in[31:0]}) | ({33 {b_twos_comp}} & {~divisor_sign_ff, twos_comp_out[31:0]});
-	assign rq_enable = (valid_in | valid_ff) | running_state;
-	assign r_sign_sel = (valid_ff & dividend_sign_ff) & ~by_zero_case;
-	assign r_restore_sel = (running_state & ~quotient_set) & ~shortq_enable_ff;
-	assign r_adder_sel = (running_state & quotient_set) & ~shortq_enable_ff;
-	assign r_in[31:0] = (((({32 {r_sign_sel}} & 32'hffffffff) | ({32 {r_restore_sel}} & {r_ff[30:0], a_ff[31]})) | ({32 {r_adder_sel}} & adder_out[31:0])) | ({32 {shortq_enable_ff}} & ar_shifted[63:32])) | ({32 {by_zero_case}} & a_ff[31:0]);
-	assign q_in[31:0] = (({32 {~valid_ff}} & {q_ff[30:0], quotient_set}) | ({32 {smallnum_case}} & {28'b0000000000000000000000000000, smallnum[3:0]})) | ({32 {by_zero_case}} & {32 {1'b1}});
-	assign adder_out[32:0] = {r_ff[31:0], a_ff[31]} + {b_ff[32:0]};
-	assign quotient_set = (~adder_out[32] ^ dividend_sign_ff) | ((a_ff[30:0] == 31'b0000000000000000000000000000000) & (adder_out[32:0] == 33'b000000000000000000000000000000000));
-	assign twos_comp_b_sel = valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-	assign twos_comp_q_sel = ((~valid_ff & ~rem_ff) & (dividend_sign_ff ^ divisor_sign_ff)) & ~by_zero_case_ff;
-	assign twos_comp_in[31:0] = ({32 {twos_comp_q_sel}} & q_ff[31:0]) | ({32 {twos_comp_b_sel}} & b_ff[31:0]);
-	rvtwoscomp #(.WIDTH(32)) i_twos_comp(
-		.din(twos_comp_in[31:0]),
-		.dout(twos_comp_out[31:0])
-	);
-	assign valid_out = finish_ff & ~cancel;
-	assign data_out[31:0] = (({32 {~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]) | ({32 {rem_ff}} & r_ff[31:0])) | ({32 {twos_comp_q_sel}} & twos_comp_out[31:0]);
-	assign smallnum_case = ((((((a_ff[31:4] == 28'b0000000000000000000000000000) & (b_ff[31:4] == 28'b0000000000000000000000000000)) & ~by_zero_case) & ~rem_ff) & valid_ff) & ~cancel) | (((((a_ff[31:0] == 32'b00000000000000000000000000000000) & ~by_zero_case) & ~rem_ff) & valid_ff) & ~cancel);
-	assign smallnum[3] = ((a_ff[3] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1];
-	assign smallnum[2] = ((((a_ff[3] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0]) | (((a_ff[2] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[2]) & ~b_ff[3]) & ~b_ff[2]);
-	assign smallnum[1] = ((((((((((a_ff[2] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0]) | (((a_ff[1] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & ~b_ff[3]) & ~b_ff[1]) & ~b_ff[0])) | (((((a_ff[3] & ~a_ff[2]) & ~b_ff[3]) & ~b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & ~b_ff[2])) | (((a_ff[3] & a_ff[2]) & ~b_ff[3]) & ~b_ff[0])) | ((((a_ff[3] & a_ff[2]) & ~b_ff[3]) & b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[1]) & ~b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[2]);
-	assign smallnum[0] = ((((((((((((((((((((((((((((a_ff[2] & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[1]) | (((((a_ff[3] & ~a_ff[2]) & a_ff[0]) & ~b_ff[3]) & b_ff[1]) & b_ff[0])) | (((a_ff[2] & ~b_ff[3]) & ~b_ff[1]) & ~b_ff[0])) | (((a_ff[1] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0])) | (((a_ff[0] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | ((((((~a_ff[3] & a_ff[2]) & ~a_ff[1]) & ~b_ff[3]) & ~b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & ~b_ff[0])) | (((a_ff[3] & ~b_ff[2]) & ~b_ff[1]) & ~b_ff[0])) | ((((a_ff[3] & ~a_ff[2]) & ~b_ff[3]) & b_ff[2]) & b_ff[1])) | (((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[2]) & ~b_ff[1])) | ((((~a_ff[3] & a_ff[2]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[1])) | (((((a_ff[3] & ~a_ff[2]) & ~a_ff[1]) & ~b_ff[3]) & b_ff[2]) & b_ff[0])) | ((((~a_ff[2] & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[2])) | (((a_ff[3] & a_ff[2]) & ~b_ff[1]) & ~b_ff[0])) | (((a_ff[3] & a_ff[1]) & ~b_ff[2]) & ~b_ff[0])) | (((((~a_ff[3] & a_ff[2]) & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & b_ff[2])) | (((a_ff[3] & a_ff[2]) & b_ff[3]) & ~b_ff[2])) | ((((a_ff[3] & a_ff[1]) & b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[0]) & ~b_ff[2]) & ~b_ff[1])) | (((((a_ff[3] & ~a_ff[1]) & ~b_ff[3]) & b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & b_ff[3]) & ~b_ff[0])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & a_ff[2]) & a_ff[0]) & b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & ~a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[1])) | (((a_ff[3] & a_ff[1]) & a_ff[0]) & ~b_ff[2])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & a_ff[0]) & b_ff[3]);
-	assign shortq_dividend[32:0] = {dividend_sign_ff, a_ff[31:0]};
-	wire [5:0] dw_a_enc;
-	wire [5:0] dw_b_enc;
-	wire [6:0] dw_shortq_raw;
-	eb1_exu_div_cls i_a_cls(
-		.operand(shortq_dividend[32:0]),
-		.cls(dw_a_enc[4:0])
-	);
-	eb1_exu_div_cls i_b_cls(
-		.operand(b_ff[32:0]),
-		.cls(dw_b_enc[4:0])
-	);
-	assign dw_a_enc[5] = 1'b0;
-	assign dw_b_enc[5] = 1'b0;
-	assign dw_shortq_raw[6:0] = ({1'b0, dw_b_enc[5:0]} - {1'b0, dw_a_enc[5:0]}) + 7'd1;
-	assign shortq[5:0] = (dw_shortq_raw[6] ? 6'd0 : dw_shortq_raw[5:0]);
-	assign shortq_enable = ((valid_ff & ~shortq[5]) & ~(shortq[4:1] == 4'b1111)) & ~cancel;
-	assign shortq_shift[4:0] = (~shortq_enable ? 5'd0 : 5'b11111 - shortq[4:0]);
-endmodule
-module eb1_exu_div_new_2bit_fullshortq (
-	clk,
-	rst_l,
-	scan_mode,
-	cancel,
-	valid_in,
-	signed_in,
-	rem_in,
-	dividend_in,
-	divisor_in,
-	valid_out,
-	data_out
-);
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire cancel;
-	input wire valid_in;
-	input wire signed_in;
-	input wire rem_in;
-	input wire [31:0] dividend_in;
-	input wire [31:0] divisor_in;
-	output wire valid_out;
-	output wire [31:0] data_out;
-	wire valid_ff_in;
-	wire valid_ff;
-	wire finish_raw;
-	wire finish;
-	wire finish_ff;
-	wire running_state;
-	wire misc_enable;
-	wire [2:0] control_in;
-	wire [2:0] control_ff;
-	wire dividend_sign_ff;
-	wire divisor_sign_ff;
-	wire rem_ff;
-	wire count_enable;
-	wire [6:0] count_in;
-	wire [6:0] count_ff;
-	wire smallnum_case;
-	wire [3:0] smallnum;
-	wire a_enable;
-	wire a_shift;
-	wire [31:0] a_in;
-	wire [31:0] a_ff;
-	wire b_enable;
-	wire b_twos_comp;
-	wire [32:0] b_in;
-	wire [34:0] b_ff;
-	wire [31:0] q_in;
-	wire [31:0] q_ff;
-	wire rq_enable;
-	wire r_sign_sel;
-	wire r_restore_sel;
-	wire r_adder1_sel;
-	wire r_adder2_sel;
-	wire r_adder3_sel;
-	wire [31:0] r_in;
-	wire [31:0] r_ff;
-	wire twos_comp_q_sel;
-	wire twos_comp_b_sel;
-	wire [31:0] twos_comp_in;
-	wire [31:0] twos_comp_out;
-	wire [3:1] quotient_raw;
-	wire [1:0] quotient_new;
-	wire [32:0] adder1_out;
-	wire [33:0] adder2_out;
-	wire [34:0] adder3_out;
-	wire [63:0] ar_shifted;
-	wire [5:0] shortq;
-	wire [4:0] shortq_shift;
-	wire [4:1] shortq_shift_ff;
-	wire shortq_enable;
-	wire shortq_enable_ff;
-	wire [32:0] shortq_dividend;
-	wire by_zero_case;
-	wire by_zero_case_ff;
-	rvdffe #(.WIDTH(18)) i_misc_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(misc_enable),
-		.din({valid_ff_in, control_in[2:0], by_zero_case, shortq_enable, shortq_shift[4:1], finish, count_in[6:0]}),
-		.dout({valid_ff, control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:1], finish_ff, count_ff[6:0]})
-	);
-	rvdffe #(.WIDTH(32)) i_a_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(a_enable),
-		.din(a_in[31:0]),
-		.dout(a_ff[31:0])
-	);
-	rvdffe #(.WIDTH(33)) i_b_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(b_enable),
-		.din(b_in[32:0]),
-		.dout(b_ff[32:0])
-	);
-	rvdffe #(.WIDTH(32)) i_r_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(rq_enable),
-		.din(r_in[31:0]),
-		.dout(r_ff[31:0])
-	);
-	rvdffe #(.WIDTH(32)) i_q_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(rq_enable),
-		.din(q_in[31:0]),
-		.dout(q_ff[31:0])
-	);
-	assign valid_ff_in = valid_in & ~cancel;
-	assign control_in[2] = (~valid_in & control_ff[2]) | ((valid_in & signed_in) & dividend_in[31]);
-	assign control_in[1] = (~valid_in & control_ff[1]) | ((valid_in & signed_in) & divisor_in[31]);
-	assign control_in[0] = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-	assign dividend_sign_ff = control_ff[2];
-	assign divisor_sign_ff = control_ff[1];
-	assign rem_ff = control_ff[0];
-	assign by_zero_case = valid_ff & (b_ff[31:0] == 32'b00000000000000000000000000000000);
-	assign misc_enable = (((valid_in | valid_ff) | cancel) | running_state) | finish_ff;
-	assign running_state = |count_ff[6:0] | shortq_enable_ff;
-	assign finish_raw = (smallnum_case | by_zero_case) | (count_ff[6:0] == 7'd32);
-	assign finish = finish_raw & ~cancel;
-	assign count_enable = ((((valid_ff | running_state) & ~finish) & ~finish_ff) & ~cancel) & ~shortq_enable;
-	assign count_in[6:0] = {7 {count_enable}} & ((count_ff[6:0] + 7'b0000010) + {2'b00, shortq_shift_ff[4:1], 1'b0});
-	assign a_enable = valid_in | running_state;
-	assign a_shift = running_state & ~shortq_enable_ff;
-	assign ar_shifted[63:0] = {{32 {dividend_sign_ff}}, a_ff[31:0]} << {shortq_shift_ff[4:1], 1'b0};
-	assign a_in[31:0] = (({32 {~a_shift & ~shortq_enable_ff}} & dividend_in[31:0]) | ({32 {a_shift}} & {a_ff[29:0], 2'b00})) | ({32 {shortq_enable_ff}} & ar_shifted[31:0]);
-	assign b_enable = valid_in | b_twos_comp;
-	assign b_twos_comp = valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-	assign b_in[32:0] = ({33 {~b_twos_comp}} & {signed_in & divisor_in[31], divisor_in[31:0]}) | ({33 {b_twos_comp}} & {~divisor_sign_ff, twos_comp_out[31:0]});
-	assign rq_enable = (valid_in | valid_ff) | running_state;
-	assign r_sign_sel = (valid_ff & dividend_sign_ff) & ~by_zero_case;
-	assign r_restore_sel = (running_state & (quotient_new[1:0] == 2'b00)) & ~shortq_enable_ff;
-	assign r_adder1_sel = (running_state & (quotient_new[1:0] == 2'b01)) & ~shortq_enable_ff;
-	assign r_adder2_sel = (running_state & (quotient_new[1:0] == 2'b10)) & ~shortq_enable_ff;
-	assign r_adder3_sel = (running_state & (quotient_new[1:0] == 2'b11)) & ~shortq_enable_ff;
-	assign r_in[31:0] = (((((({32 {r_sign_sel}} & 32'hffffffff) | ({32 {r_restore_sel}} & {r_ff[29:0], a_ff[31:30]})) | ({32 {r_adder1_sel}} & adder1_out[31:0])) | ({32 {r_adder2_sel}} & adder2_out[31:0])) | ({32 {r_adder3_sel}} & adder3_out[31:0])) | ({32 {shortq_enable_ff}} & ar_shifted[63:32])) | ({32 {by_zero_case}} & a_ff[31:0]);
-	assign q_in[31:0] = (({32 {~valid_ff}} & {q_ff[29:0], quotient_new[1:0]}) | ({32 {smallnum_case}} & {28'b0000000000000000000000000000, smallnum[3:0]})) | ({32 {by_zero_case}} & {32 {1'b1}});
-	assign b_ff[34:33] = {b_ff[32], b_ff[32]};
-	assign adder1_out[32:0] = {r_ff[30:0], a_ff[31:30]} + b_ff[32:0];
-	assign adder2_out[33:0] = {r_ff[31:0], a_ff[31:30]} + {b_ff[32:0], 1'b0};
-	assign adder3_out[34:0] = ({r_ff[31], r_ff[31:0], a_ff[31:30]} + {b_ff[33:0], 1'b0}) + b_ff[34:0];
-	assign quotient_raw[1] = (~adder1_out[32] ^ dividend_sign_ff) | ((a_ff[29:0] == 30'b000000000000000000000000000000) & (adder1_out[32:0] == 33'b000000000000000000000000000000000));
-	assign quotient_raw[2] = (~adder2_out[33] ^ dividend_sign_ff) | ((a_ff[29:0] == 30'b000000000000000000000000000000) & (adder2_out[33:0] == 34'b0000000000000000000000000000000000));
-	assign quotient_raw[3] = (~adder3_out[34] ^ dividend_sign_ff) | ((a_ff[29:0] == 30'b000000000000000000000000000000) & (adder3_out[34:0] == 35'b00000000000000000000000000000000000));
-	assign quotient_new[1] = quotient_raw[3] | quotient_raw[2];
-	assign quotient_new[0] = quotient_raw[3] | (~quotient_raw[2] & quotient_raw[1]);
-	assign twos_comp_b_sel = valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-	assign twos_comp_q_sel = ((~valid_ff & ~rem_ff) & (dividend_sign_ff ^ divisor_sign_ff)) & ~by_zero_case_ff;
-	assign twos_comp_in[31:0] = ({32 {twos_comp_q_sel}} & q_ff[31:0]) | ({32 {twos_comp_b_sel}} & b_ff[31:0]);
-	rvtwoscomp #(.WIDTH(32)) i_twos_comp(
-		.din(twos_comp_in[31:0]),
-		.dout(twos_comp_out[31:0])
-	);
-	assign valid_out = finish_ff & ~cancel;
-	assign data_out[31:0] = (({32 {~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]) | ({32 {rem_ff}} & r_ff[31:0])) | ({32 {twos_comp_q_sel}} & twos_comp_out[31:0]);
-	assign smallnum_case = ((((((a_ff[31:4] == 28'b0000000000000000000000000000) & (b_ff[31:4] == 28'b0000000000000000000000000000)) & ~by_zero_case) & ~rem_ff) & valid_ff) & ~cancel) | (((((a_ff[31:0] == 32'b00000000000000000000000000000000) & ~by_zero_case) & ~rem_ff) & valid_ff) & ~cancel);
-	assign smallnum[3] = ((a_ff[3] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1];
-	assign smallnum[2] = ((((a_ff[3] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0]) | (((a_ff[2] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[2]) & ~b_ff[3]) & ~b_ff[2]);
-	assign smallnum[1] = ((((((((((a_ff[2] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0]) | (((a_ff[1] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & ~b_ff[3]) & ~b_ff[1]) & ~b_ff[0])) | (((((a_ff[3] & ~a_ff[2]) & ~b_ff[3]) & ~b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & ~b_ff[2])) | (((a_ff[3] & a_ff[2]) & ~b_ff[3]) & ~b_ff[0])) | ((((a_ff[3] & a_ff[2]) & ~b_ff[3]) & b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[1]) & ~b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[2]);
-	assign smallnum[0] = ((((((((((((((((((((((((((((a_ff[2] & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[1]) | (((((a_ff[3] & ~a_ff[2]) & a_ff[0]) & ~b_ff[3]) & b_ff[1]) & b_ff[0])) | (((a_ff[2] & ~b_ff[3]) & ~b_ff[1]) & ~b_ff[0])) | (((a_ff[1] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0])) | (((a_ff[0] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | ((((((~a_ff[3] & a_ff[2]) & ~a_ff[1]) & ~b_ff[3]) & ~b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & ~b_ff[0])) | (((a_ff[3] & ~b_ff[2]) & ~b_ff[1]) & ~b_ff[0])) | ((((a_ff[3] & ~a_ff[2]) & ~b_ff[3]) & b_ff[2]) & b_ff[1])) | (((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[2]) & ~b_ff[1])) | ((((~a_ff[3] & a_ff[2]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[1])) | (((((a_ff[3] & ~a_ff[2]) & ~a_ff[1]) & ~b_ff[3]) & b_ff[2]) & b_ff[0])) | ((((~a_ff[2] & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[2])) | (((a_ff[3] & a_ff[2]) & ~b_ff[1]) & ~b_ff[0])) | (((a_ff[3] & a_ff[1]) & ~b_ff[2]) & ~b_ff[0])) | (((((~a_ff[3] & a_ff[2]) & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & b_ff[2])) | (((a_ff[3] & a_ff[2]) & b_ff[3]) & ~b_ff[2])) | ((((a_ff[3] & a_ff[1]) & b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[0]) & ~b_ff[2]) & ~b_ff[1])) | (((((a_ff[3] & ~a_ff[1]) & ~b_ff[3]) & b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & b_ff[3]) & ~b_ff[0])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & a_ff[2]) & a_ff[0]) & b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & ~a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[1])) | (((a_ff[3] & a_ff[1]) & a_ff[0]) & ~b_ff[2])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & a_ff[0]) & b_ff[3]);
-	assign shortq_dividend[32:0] = {dividend_sign_ff, a_ff[31:0]};
-	wire [5:0] dw_a_enc;
-	wire [5:0] dw_b_enc;
-	wire [6:0] dw_shortq_raw;
-	eb1_exu_div_cls i_a_cls(
-		.operand(shortq_dividend[32:0]),
-		.cls(dw_a_enc[4:0])
-	);
-	eb1_exu_div_cls i_b_cls(
-		.operand(b_ff[32:0]),
-		.cls(dw_b_enc[4:0])
-	);
-	assign dw_a_enc[5] = 1'b0;
-	assign dw_b_enc[5] = 1'b0;
-	assign dw_shortq_raw[6:0] = ({1'b0, dw_b_enc[5:0]} - {1'b0, dw_a_enc[5:0]}) + 7'd1;
-	assign shortq[5:0] = (dw_shortq_raw[6] ? 6'd0 : dw_shortq_raw[5:0]);
-	assign shortq_enable = ((valid_ff & ~shortq[5]) & ~(shortq[4:1] == 4'b1111)) & ~cancel;
-	assign shortq_shift[4:0] = (~shortq_enable ? 5'd0 : 5'b11111 - shortq[4:0]);
-endmodule
-module eb1_exu_div_new_3bit_fullshortq (
-	clk,
-	rst_l,
-	scan_mode,
-	cancel,
-	valid_in,
-	signed_in,
-	rem_in,
-	dividend_in,
-	divisor_in,
-	valid_out,
-	data_out
-);
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire cancel;
-	input wire valid_in;
-	input wire signed_in;
-	input wire rem_in;
-	input wire [31:0] dividend_in;
-	input wire [31:0] divisor_in;
-	output wire valid_out;
-	output wire [31:0] data_out;
-	wire valid_ff_in;
-	wire valid_ff;
-	wire finish_raw;
-	wire finish;
-	wire finish_ff;
-	wire running_state;
-	wire misc_enable;
-	wire [2:0] control_in;
-	wire [2:0] control_ff;
-	wire dividend_sign_ff;
-	wire divisor_sign_ff;
-	wire rem_ff;
-	wire count_enable;
-	wire [6:0] count_in;
-	wire [6:0] count_ff;
-	wire smallnum_case;
-	wire [3:0] smallnum;
-	wire a_enable;
-	wire a_shift;
-	wire [32:0] a_in;
-	wire [32:0] a_ff;
-	wire b_enable;
-	wire b_twos_comp;
-	wire [32:0] b_in;
-	wire [36:0] b_ff;
-	wire [31:0] q_in;
-	wire [31:0] q_ff;
-	wire rq_enable;
-	wire r_sign_sel;
-	wire r_restore_sel;
-	wire r_adder1_sel;
-	wire r_adder2_sel;
-	wire r_adder3_sel;
-	wire r_adder4_sel;
-	wire r_adder5_sel;
-	wire r_adder6_sel;
-	wire r_adder7_sel;
-	wire [32:0] r_in;
-	wire [32:0] r_ff;
-	wire twos_comp_q_sel;
-	wire twos_comp_b_sel;
-	wire [31:0] twos_comp_in;
-	wire [31:0] twos_comp_out;
-	wire [7:1] quotient_raw;
-	wire [2:0] quotient_new;
-	wire [33:0] adder1_out;
-	wire [34:0] adder2_out;
-	wire [35:0] adder3_out;
-	wire [36:0] adder4_out;
-	wire [36:0] adder5_out;
-	wire [36:0] adder6_out;
-	wire [36:0] adder7_out;
-	wire [65:0] ar_shifted;
-	wire [5:0] shortq;
-	wire [4:0] shortq_shift;
-	wire [4:0] shortq_decode;
-	wire [4:0] shortq_shift_ff;
-	wire shortq_enable;
-	wire shortq_enable_ff;
-	wire [32:0] shortq_dividend;
-	wire by_zero_case;
-	wire by_zero_case_ff;
-	rvdffe #(.WIDTH(19)) i_misc_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(misc_enable),
-		.din({valid_ff_in, control_in[2:0], by_zero_case, shortq_enable, shortq_shift[4:0], finish, count_in[6:0]}),
-		.dout({valid_ff, control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]})
-	);
-	rvdffe #(.WIDTH(33)) i_a_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(a_enable),
-		.din(a_in[32:0]),
-		.dout(a_ff[32:0])
-	);
-	rvdffe #(.WIDTH(33)) i_b_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(b_enable),
-		.din(b_in[32:0]),
-		.dout(b_ff[32:0])
-	);
-	rvdffe #(.WIDTH(33)) i_r_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(rq_enable),
-		.din(r_in[32:0]),
-		.dout(r_ff[32:0])
-	);
-	rvdffe #(.WIDTH(32)) i_q_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(rq_enable),
-		.din(q_in[31:0]),
-		.dout(q_ff[31:0])
-	);
-	assign valid_ff_in = valid_in & ~cancel;
-	assign control_in[2] = (~valid_in & control_ff[2]) | ((valid_in & signed_in) & dividend_in[31]);
-	assign control_in[1] = (~valid_in & control_ff[1]) | ((valid_in & signed_in) & divisor_in[31]);
-	assign control_in[0] = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-	assign dividend_sign_ff = control_ff[2];
-	assign divisor_sign_ff = control_ff[1];
-	assign rem_ff = control_ff[0];
-	assign by_zero_case = valid_ff & (b_ff[31:0] == 32'b00000000000000000000000000000000);
-	assign misc_enable = (((valid_in | valid_ff) | cancel) | running_state) | finish_ff;
-	assign running_state = |count_ff[6:0] | shortq_enable_ff;
-	assign finish_raw = (smallnum_case | by_zero_case) | (count_ff[6:0] == 7'd33);
-	assign finish = finish_raw & ~cancel;
-	assign count_enable = ((((valid_ff | running_state) & ~finish) & ~finish_ff) & ~cancel) & ~shortq_enable;
-	assign count_in[6:0] = {7 {count_enable}} & ((count_ff[6:0] + 7'b0000011) + {2'b00, shortq_shift_ff[4:0]});
-	assign a_enable = valid_in | running_state;
-	assign a_shift = running_state & ~shortq_enable_ff;
-	assign ar_shifted[65:0] = {{33 {dividend_sign_ff}}, a_ff[32:0]} << {shortq_shift_ff[4:0]};
-	assign a_in[32:0] = (({33 {~a_shift & ~shortq_enable_ff}} & {signed_in & dividend_in[31], dividend_in[31:0]}) | ({33 {a_shift}} & {a_ff[29:0], 3'b000})) | ({33 {shortq_enable_ff}} & ar_shifted[32:0]);
-	assign b_enable = valid_in | b_twos_comp;
-	assign b_twos_comp = valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-	assign b_in[32:0] = ({33 {~b_twos_comp}} & {signed_in & divisor_in[31], divisor_in[31:0]}) | ({33 {b_twos_comp}} & {~divisor_sign_ff, twos_comp_out[31:0]});
-	assign rq_enable = (valid_in | valid_ff) | running_state;
-	assign r_sign_sel = (valid_ff & dividend_sign_ff) & ~by_zero_case;
-	assign r_restore_sel = (running_state & (quotient_new[2:0] == 3'b000)) & ~shortq_enable_ff;
-	assign r_adder1_sel = (running_state & (quotient_new[2:0] == 3'b001)) & ~shortq_enable_ff;
-	assign r_adder2_sel = (running_state & (quotient_new[2:0] == 3'b010)) & ~shortq_enable_ff;
-	assign r_adder3_sel = (running_state & (quotient_new[2:0] == 3'b011)) & ~shortq_enable_ff;
-	assign r_adder4_sel = (running_state & (quotient_new[2:0] == 3'b100)) & ~shortq_enable_ff;
-	assign r_adder5_sel = (running_state & (quotient_new[2:0] == 3'b101)) & ~shortq_enable_ff;
-	assign r_adder6_sel = (running_state & (quotient_new[2:0] == 3'b110)) & ~shortq_enable_ff;
-	assign r_adder7_sel = (running_state & (quotient_new[2:0] == 3'b111)) & ~shortq_enable_ff;
-	assign r_in[32:0] = (((((((((({33 {r_sign_sel}} & {33 {1'b1}}) | ({33 {r_restore_sel}} & {r_ff[29:0], a_ff[32:30]})) | ({33 {r_adder1_sel}} & adder1_out[32:0])) | ({33 {r_adder2_sel}} & adder2_out[32:0])) | ({33 {r_adder3_sel}} & adder3_out[32:0])) | ({33 {r_adder4_sel}} & adder4_out[32:0])) | ({33 {r_adder5_sel}} & adder5_out[32:0])) | ({33 {r_adder6_sel}} & adder6_out[32:0])) | ({33 {r_adder7_sel}} & adder7_out[32:0])) | ({33 {shortq_enable_ff}} & ar_shifted[65:33])) | ({33 {by_zero_case}} & {1'b0, a_ff[31:0]});
-	assign q_in[31:0] = (({32 {~valid_ff}} & {q_ff[28:0], quotient_new[2:0]}) | ({32 {smallnum_case}} & {28'b0000000000000000000000000000, smallnum[3:0]})) | ({32 {by_zero_case}} & {32 {1'b1}});
-	assign b_ff[36:33] = {b_ff[32], b_ff[32], b_ff[32], b_ff[32]};
-	assign adder1_out[33:0] = {r_ff[30:0], a_ff[32:30]} + b_ff[33:0];
-	assign adder2_out[34:0] = {r_ff[31:0], a_ff[32:30]} + {b_ff[33:0], 1'b0};
-	assign adder3_out[35:0] = ({r_ff[32:0], a_ff[32:30]} + {b_ff[34:0], 1'b0}) + b_ff[35:0];
-	assign adder4_out[36:0] = {r_ff[32], r_ff[32:0], a_ff[32:30]} + {b_ff[34:0], 2'b00};
-	assign adder5_out[36:0] = ({r_ff[32], r_ff[32:0], a_ff[32:30]} + {b_ff[34:0], 2'b00}) + b_ff[36:0];
-	assign adder6_out[36:0] = ({r_ff[32], r_ff[32:0], a_ff[32:30]} + {b_ff[34:0], 2'b00}) + {b_ff[35:0], 1'b0};
-	assign adder7_out[36:0] = (({r_ff[32], r_ff[32:0], a_ff[32:30]} + {b_ff[34:0], 2'b00}) + {b_ff[35:0], 1'b0}) + b_ff[36:0];
-	assign quotient_raw[1] = (~adder1_out[33] ^ dividend_sign_ff) | ((a_ff[29:0] == 30'b000000000000000000000000000000) & (adder1_out[33:0] == 34'b0000000000000000000000000000000000));
-	assign quotient_raw[2] = (~adder2_out[34] ^ dividend_sign_ff) | ((a_ff[29:0] == 30'b000000000000000000000000000000) & (adder2_out[34:0] == 35'b00000000000000000000000000000000000));
-	assign quotient_raw[3] = (~adder3_out[35] ^ dividend_sign_ff) | ((a_ff[29:0] == 30'b000000000000000000000000000000) & (adder3_out[35:0] == 36'b000000000000000000000000000000000000));
-	assign quotient_raw[4] = (~adder4_out[36] ^ dividend_sign_ff) | ((a_ff[29:0] == 30'b000000000000000000000000000000) & (adder4_out[36:0] == 37'b0000000000000000000000000000000000000));
-	assign quotient_raw[5] = (~adder5_out[36] ^ dividend_sign_ff) | ((a_ff[29:0] == 30'b000000000000000000000000000000) & (adder5_out[36:0] == 37'b0000000000000000000000000000000000000));
-	assign quotient_raw[6] = (~adder6_out[36] ^ dividend_sign_ff) | ((a_ff[29:0] == 30'b000000000000000000000000000000) & (adder6_out[36:0] == 37'b0000000000000000000000000000000000000));
-	assign quotient_raw[7] = (~adder7_out[36] ^ dividend_sign_ff) | ((a_ff[29:0] == 30'b000000000000000000000000000000) & (adder7_out[36:0] == 37'b0000000000000000000000000000000000000));
-	assign quotient_new[2] = ((quotient_raw[7] | quotient_raw[6]) | quotient_raw[5]) | quotient_raw[4];
-	assign quotient_new[1] = ((quotient_raw[7] | quotient_raw[6]) | (~quotient_raw[4] & quotient_raw[3])) | (~quotient_raw[3] & quotient_raw[2]);
-	assign quotient_new[0] = ((quotient_raw[7] | (~quotient_raw[6] & quotient_raw[5])) | (~quotient_raw[4] & quotient_raw[3])) | (~quotient_raw[2] & quotient_raw[1]);
-	assign twos_comp_b_sel = valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-	assign twos_comp_q_sel = ((~valid_ff & ~rem_ff) & (dividend_sign_ff ^ divisor_sign_ff)) & ~by_zero_case_ff;
-	assign twos_comp_in[31:0] = ({32 {twos_comp_q_sel}} & q_ff[31:0]) | ({32 {twos_comp_b_sel}} & b_ff[31:0]);
-	rvtwoscomp #(.WIDTH(32)) i_twos_comp(
-		.din(twos_comp_in[31:0]),
-		.dout(twos_comp_out[31:0])
-	);
-	assign valid_out = finish_ff & ~cancel;
-	assign data_out[31:0] = (({32 {~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]) | ({32 {rem_ff}} & r_ff[31:0])) | ({32 {twos_comp_q_sel}} & twos_comp_out[31:0]);
-	assign smallnum_case = ((((((a_ff[31:4] == 28'b0000000000000000000000000000) & (b_ff[31:4] == 28'b0000000000000000000000000000)) & ~by_zero_case) & ~rem_ff) & valid_ff) & ~cancel) | (((((a_ff[31:0] == 32'b00000000000000000000000000000000) & ~by_zero_case) & ~rem_ff) & valid_ff) & ~cancel);
-	assign smallnum[3] = ((a_ff[3] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1];
-	assign smallnum[2] = ((((a_ff[3] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0]) | (((a_ff[2] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[2]) & ~b_ff[3]) & ~b_ff[2]);
-	assign smallnum[1] = ((((((((((a_ff[2] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0]) | (((a_ff[1] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & ~b_ff[3]) & ~b_ff[1]) & ~b_ff[0])) | (((((a_ff[3] & ~a_ff[2]) & ~b_ff[3]) & ~b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & ~b_ff[2])) | (((a_ff[3] & a_ff[2]) & ~b_ff[3]) & ~b_ff[0])) | ((((a_ff[3] & a_ff[2]) & ~b_ff[3]) & b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[1]) & ~b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[2]);
-	assign smallnum[0] = ((((((((((((((((((((((((((((a_ff[2] & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[1]) | (((((a_ff[3] & ~a_ff[2]) & a_ff[0]) & ~b_ff[3]) & b_ff[1]) & b_ff[0])) | (((a_ff[2] & ~b_ff[3]) & ~b_ff[1]) & ~b_ff[0])) | (((a_ff[1] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0])) | (((a_ff[0] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | ((((((~a_ff[3] & a_ff[2]) & ~a_ff[1]) & ~b_ff[3]) & ~b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & ~b_ff[0])) | (((a_ff[3] & ~b_ff[2]) & ~b_ff[1]) & ~b_ff[0])) | ((((a_ff[3] & ~a_ff[2]) & ~b_ff[3]) & b_ff[2]) & b_ff[1])) | (((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[2]) & ~b_ff[1])) | ((((~a_ff[3] & a_ff[2]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[1])) | (((((a_ff[3] & ~a_ff[2]) & ~a_ff[1]) & ~b_ff[3]) & b_ff[2]) & b_ff[0])) | ((((~a_ff[2] & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[2])) | (((a_ff[3] & a_ff[2]) & ~b_ff[1]) & ~b_ff[0])) | (((a_ff[3] & a_ff[1]) & ~b_ff[2]) & ~b_ff[0])) | (((((~a_ff[3] & a_ff[2]) & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & b_ff[2])) | (((a_ff[3] & a_ff[2]) & b_ff[3]) & ~b_ff[2])) | ((((a_ff[3] & a_ff[1]) & b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[0]) & ~b_ff[2]) & ~b_ff[1])) | (((((a_ff[3] & ~a_ff[1]) & ~b_ff[3]) & b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & b_ff[3]) & ~b_ff[0])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & a_ff[2]) & a_ff[0]) & b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & ~a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[1])) | (((a_ff[3] & a_ff[1]) & a_ff[0]) & ~b_ff[2])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & a_ff[0]) & b_ff[3]);
-	assign shortq_dividend[32:0] = {dividend_sign_ff, a_ff[31:0]};
-	wire [5:0] dw_a_enc;
-	wire [5:0] dw_b_enc;
-	wire [6:0] dw_shortq_raw;
-	eb1_exu_div_cls i_a_cls(
-		.operand(shortq_dividend[32:0]),
-		.cls(dw_a_enc[4:0])
-	);
-	eb1_exu_div_cls i_b_cls(
-		.operand(b_ff[32:0]),
-		.cls(dw_b_enc[4:0])
-	);
-	assign dw_a_enc[5] = 1'b0;
-	assign dw_b_enc[5] = 1'b0;
-	assign dw_shortq_raw[6:0] = ({1'b0, dw_b_enc[5:0]} - {1'b0, dw_a_enc[5:0]}) + 7'd1;
-	assign shortq[5:0] = (dw_shortq_raw[6] ? 6'd0 : dw_shortq_raw[5:0]);
-	assign shortq_enable = ((valid_ff & ~shortq[5]) & ~(shortq[4:2] == 3'b111)) & ~cancel;
-	assign shortq_decode[4:0] = ((((((((((((((((((((((((((((((({5 {shortq[4:0] == 5'd31}} & 5'd0) | ({5 {shortq[4:0] == 5'd30}} & 5'd0)) | ({5 {shortq[4:0] == 5'd29}} & 5'd0)) | ({5 {shortq[4:0] == 5'd28}} & 5'd0)) | ({5 {shortq[4:0] == 5'd27}} & 5'd3)) | ({5 {shortq[4:0] == 5'd26}} & 5'd6)) | ({5 {shortq[4:0] == 5'd25}} & 5'd6)) | ({5 {shortq[4:0] == 5'd24}} & 5'd6)) | ({5 {shortq[4:0] == 5'd23}} & 5'd9)) | ({5 {shortq[4:0] == 5'd22}} & 5'd9)) | ({5 {shortq[4:0] == 5'd21}} & 5'd9)) | ({5 {shortq[4:0] == 5'd20}} & 5'd12)) | ({5 {shortq[4:0] == 5'd19}} & 5'd12)) | ({5 {shortq[4:0] == 5'd18}} & 5'd12)) | ({5 {shortq[4:0] == 5'd17}} & 5'd15)) | ({5 {shortq[4:0] == 5'd16}} & 5'd15)) | ({5 {shortq[4:0] == 5'd15}} & 5'd15)) | ({5 {shortq[4:0] == 5'd14}} & 5'd18)) | ({5 {shortq[4:0] == 5'd13}} & 5'd18)) | ({5 {shortq[4:0] == 5'd12}} & 5'd18)) | ({5 {shortq[4:0] == 5'd11}} & 5'd21)) | ({5 {shortq[4:0] == 5'd10}} & 5'd21)) | ({5 {shortq[4:0] == 5'd9}} & 5'd21)) | ({5 {shortq[4:0] == 5'd8}} & 5'd24)) | ({5 {shortq[4:0] == 5'd7}} & 5'd24)) | ({5 {shortq[4:0] == 5'd6}} & 5'd24)) | ({5 {shortq[4:0] == 5'd5}} & 5'd27)) | ({5 {shortq[4:0] == 5'd4}} & 5'd27)) | ({5 {shortq[4:0] == 5'd3}} & 5'd27)) | ({5 {shortq[4:0] == 5'd2}} & 5'd27)) | ({5 {shortq[4:0] == 5'd1}} & 5'd27)) | ({5 {shortq[4:0] == 5'd0}} & 5'd27);
-	assign shortq_shift[4:0] = (~shortq_enable ? 5'd0 : shortq_decode[4:0]);
-endmodule
-module eb1_exu_div_new_4bit_fullshortq (
-	clk,
-	rst_l,
-	scan_mode,
-	cancel,
-	valid_in,
-	signed_in,
-	rem_in,
-	dividend_in,
-	divisor_in,
-	valid_out,
-	data_out
-);
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire cancel;
-	input wire valid_in;
-	input wire signed_in;
-	input wire rem_in;
-	input wire [31:0] dividend_in;
-	input wire [31:0] divisor_in;
-	output wire valid_out;
-	output wire [31:0] data_out;
-	wire valid_ff_in;
-	wire valid_ff;
-	wire finish_raw;
-	wire finish;
-	wire finish_ff;
-	wire running_state;
-	wire misc_enable;
-	wire [2:0] control_in;
-	wire [2:0] control_ff;
-	wire dividend_sign_ff;
-	wire divisor_sign_ff;
-	wire rem_ff;
-	wire count_enable;
-	wire [6:0] count_in;
-	wire [6:0] count_ff;
-	wire smallnum_case;
-	wire [3:0] smallnum;
-	wire a_enable;
-	wire a_shift;
-	wire [31:0] a_in;
-	wire [31:0] a_ff;
-	wire b_enable;
-	wire b_twos_comp;
-	wire [32:0] b_in;
-	wire [37:0] b_ff;
-	wire [31:0] q_in;
-	wire [31:0] q_ff;
-	wire rq_enable;
-	wire r_sign_sel;
-	wire r_restore_sel;
-	wire r_adder01_sel;
-	wire r_adder02_sel;
-	wire r_adder03_sel;
-	wire r_adder04_sel;
-	wire r_adder05_sel;
-	wire r_adder06_sel;
-	wire r_adder07_sel;
-	wire r_adder08_sel;
-	wire r_adder09_sel;
-	wire r_adder10_sel;
-	wire r_adder11_sel;
-	wire r_adder12_sel;
-	wire r_adder13_sel;
-	wire r_adder14_sel;
-	wire r_adder15_sel;
-	wire [32:0] r_in;
-	wire [32:0] r_ff;
-	wire twos_comp_q_sel;
-	wire twos_comp_b_sel;
-	wire [31:0] twos_comp_in;
-	wire [31:0] twos_comp_out;
-	wire [15:1] quotient_raw;
-	wire [3:0] quotient_new;
-	wire [34:0] adder01_out;
-	wire [35:0] adder02_out;
-	wire [36:0] adder03_out;
-	wire [37:0] adder04_out;
-	wire [37:0] adder05_out;
-	wire [37:0] adder06_out;
-	wire [37:0] adder07_out;
-	wire [37:0] adder08_out;
-	wire [37:0] adder09_out;
-	wire [37:0] adder10_out;
-	wire [37:0] adder11_out;
-	wire [37:0] adder12_out;
-	wire [37:0] adder13_out;
-	wire [37:0] adder14_out;
-	wire [37:0] adder15_out;
-	wire [64:0] ar_shifted;
-	wire [5:0] shortq;
-	wire [4:0] shortq_shift;
-	wire [4:0] shortq_decode;
-	wire [4:0] shortq_shift_ff;
-	wire shortq_enable;
-	wire shortq_enable_ff;
-	wire [32:0] shortq_dividend;
-	wire by_zero_case;
-	wire by_zero_case_ff;
-	rvdffe #(.WIDTH(19)) i_misc_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(misc_enable),
-		.din({valid_ff_in, control_in[2:0], by_zero_case, shortq_enable, shortq_shift[4:0], finish, count_in[6:0]}),
-		.dout({valid_ff, control_ff[2:0], by_zero_case_ff, shortq_enable_ff, shortq_shift_ff[4:0], finish_ff, count_ff[6:0]})
-	);
-	rvdffe #(.WIDTH(32)) i_a_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(a_enable),
-		.din(a_in[31:0]),
-		.dout(a_ff[31:0])
-	);
-	rvdffe #(.WIDTH(33)) i_b_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(b_enable),
-		.din(b_in[32:0]),
-		.dout(b_ff[32:0])
-	);
-	rvdffe #(.WIDTH(33)) i_r_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(rq_enable),
-		.din(r_in[32:0]),
-		.dout(r_ff[32:0])
-	);
-	rvdffe #(.WIDTH(32)) i_q_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(rq_enable),
-		.din(q_in[31:0]),
-		.dout(q_ff[31:0])
-	);
-	assign valid_ff_in = valid_in & ~cancel;
-	assign control_in[2] = (~valid_in & control_ff[2]) | ((valid_in & signed_in) & dividend_in[31]);
-	assign control_in[1] = (~valid_in & control_ff[1]) | ((valid_in & signed_in) & divisor_in[31]);
-	assign control_in[0] = (~valid_in & control_ff[0]) | (valid_in & rem_in);
-	assign dividend_sign_ff = control_ff[2];
-	assign divisor_sign_ff = control_ff[1];
-	assign rem_ff = control_ff[0];
-	assign by_zero_case = valid_ff & (b_ff[31:0] == 32'b00000000000000000000000000000000);
-	assign misc_enable = (((valid_in | valid_ff) | cancel) | running_state) | finish_ff;
-	assign running_state = |count_ff[6:0] | shortq_enable_ff;
-	assign finish_raw = (smallnum_case | by_zero_case) | (count_ff[6:0] == 7'd32);
-	assign finish = finish_raw & ~cancel;
-	assign count_enable = ((((valid_ff | running_state) & ~finish) & ~finish_ff) & ~cancel) & ~shortq_enable;
-	assign count_in[6:0] = {7 {count_enable}} & ((count_ff[6:0] + 7'd4) + {2'b00, shortq_shift_ff[4:0]});
-	assign a_enable = valid_in | running_state;
-	assign a_shift = running_state & ~shortq_enable_ff;
-	assign ar_shifted[64:0] = {{33 {dividend_sign_ff}}, a_ff[31:0]} << {shortq_shift_ff[4:0]};
-	assign a_in[31:0] = (({32 {~a_shift & ~shortq_enable_ff}} & dividend_in[31:0]) | ({32 {a_shift}} & {a_ff[27:0], 4'b0000})) | ({32 {shortq_enable_ff}} & ar_shifted[31:0]);
-	assign b_enable = valid_in | b_twos_comp;
-	assign b_twos_comp = valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-	assign b_in[32:0] = ({33 {~b_twos_comp}} & {signed_in & divisor_in[31], divisor_in[31:0]}) | ({33 {b_twos_comp}} & {~divisor_sign_ff, twos_comp_out[31:0]});
-	assign rq_enable = (valid_in | valid_ff) | running_state;
-	assign r_sign_sel = (valid_ff & dividend_sign_ff) & ~by_zero_case;
-	assign r_restore_sel = (running_state & (quotient_new[3:0] == 4'd0)) & ~shortq_enable_ff;
-	assign r_adder01_sel = (running_state & (quotient_new[3:0] == 4'd1)) & ~shortq_enable_ff;
-	assign r_adder02_sel = (running_state & (quotient_new[3:0] == 4'd2)) & ~shortq_enable_ff;
-	assign r_adder03_sel = (running_state & (quotient_new[3:0] == 4'd3)) & ~shortq_enable_ff;
-	assign r_adder04_sel = (running_state & (quotient_new[3:0] == 4'd4)) & ~shortq_enable_ff;
-	assign r_adder05_sel = (running_state & (quotient_new[3:0] == 4'd5)) & ~shortq_enable_ff;
-	assign r_adder06_sel = (running_state & (quotient_new[3:0] == 4'd6)) & ~shortq_enable_ff;
-	assign r_adder07_sel = (running_state & (quotient_new[3:0] == 4'd7)) & ~shortq_enable_ff;
-	assign r_adder08_sel = (running_state & (quotient_new[3:0] == 4'd8)) & ~shortq_enable_ff;
-	assign r_adder09_sel = (running_state & (quotient_new[3:0] == 4'd9)) & ~shortq_enable_ff;
-	assign r_adder10_sel = (running_state & (quotient_new[3:0] == 4'd10)) & ~shortq_enable_ff;
-	assign r_adder11_sel = (running_state & (quotient_new[3:0] == 4'd11)) & ~shortq_enable_ff;
-	assign r_adder12_sel = (running_state & (quotient_new[3:0] == 4'd12)) & ~shortq_enable_ff;
-	assign r_adder13_sel = (running_state & (quotient_new[3:0] == 4'd13)) & ~shortq_enable_ff;
-	assign r_adder14_sel = (running_state & (quotient_new[3:0] == 4'd14)) & ~shortq_enable_ff;
-	assign r_adder15_sel = (running_state & (quotient_new[3:0] == 4'd15)) & ~shortq_enable_ff;
-	assign r_in[32:0] = (((((((((((((((((({33 {r_sign_sel}} & {33 {1'b1}}) | ({33 {r_restore_sel}} & {r_ff[28:0], a_ff[31:28]})) | ({33 {r_adder01_sel}} & adder01_out[32:0])) | ({33 {r_adder02_sel}} & adder02_out[32:0])) | ({33 {r_adder03_sel}} & adder03_out[32:0])) | ({33 {r_adder04_sel}} & adder04_out[32:0])) | ({33 {r_adder05_sel}} & adder05_out[32:0])) | ({33 {r_adder06_sel}} & adder06_out[32:0])) | ({33 {r_adder07_sel}} & adder07_out[32:0])) | ({33 {r_adder08_sel}} & adder08_out[32:0])) | ({33 {r_adder09_sel}} & adder09_out[32:0])) | ({33 {r_adder10_sel}} & adder10_out[32:0])) | ({33 {r_adder11_sel}} & adder11_out[32:0])) | ({33 {r_adder12_sel}} & adder12_out[32:0])) | ({33 {r_adder13_sel}} & adder13_out[32:0])) | ({33 {r_adder14_sel}} & adder14_out[32:0])) | ({33 {r_adder15_sel}} & adder15_out[32:0])) | ({33 {shortq_enable_ff}} & ar_shifted[64:32])) | ({33 {by_zero_case}} & {1'b0, a_ff[31:0]});
-	assign q_in[31:0] = (({32 {~valid_ff}} & {q_ff[27:0], quotient_new[3:0]}) | ({32 {smallnum_case}} & {28'b0000000000000000000000000000, smallnum[3:0]})) | ({32 {by_zero_case}} & {32 {1'b1}});
-	assign b_ff[37:33] = {b_ff[32], b_ff[32], b_ff[32], b_ff[32], b_ff[32]};
-	assign adder01_out[34:0] = {r_ff[30:0], a_ff[31:28]} + b_ff[34:0];
-	assign adder02_out[35:0] = {r_ff[31:0], a_ff[31:28]} + {b_ff[34:0], 1'b0};
-	assign adder03_out[36:0] = ({r_ff[32:0], a_ff[31:28]} + {b_ff[35:0], 1'b0}) + b_ff[36:0];
-	assign adder04_out[37:0] = {r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[35:0], 2'b00};
-	assign adder05_out[37:0] = ({r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[35:0], 2'b00}) + b_ff[37:0];
-	assign adder06_out[37:0] = ({r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[35:0], 2'b00}) + {b_ff[36:0], 1'b0};
-	assign adder07_out[37:0] = (({r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[35:0], 2'b00}) + {b_ff[36:0], 1'b0}) + b_ff[37:0];
-	assign adder08_out[37:0] = {r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[34:0], 3'b000};
-	assign adder09_out[37:0] = ({r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[34:0], 3'b000}) + b_ff[37:0];
-	assign adder10_out[37:0] = ({r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[34:0], 3'b000}) + {b_ff[36:0], 1'b0};
-	assign adder11_out[37:0] = (({r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[34:0], 3'b000}) + {b_ff[36:0], 1'b0}) + b_ff[37:0];
-	assign adder12_out[37:0] = ({r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[34:0], 3'b000}) + {b_ff[35:0], 2'b00};
-	assign adder13_out[37:0] = (({r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[34:0], 3'b000}) + {b_ff[35:0], 2'b00}) + b_ff[37:0];
-	assign adder14_out[37:0] = (({r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[34:0], 3'b000}) + {b_ff[35:0], 2'b00}) + {b_ff[36:0], 1'b0};
-	assign adder15_out[37:0] = ((({r_ff[32], r_ff[32:0], a_ff[31:28]} + {b_ff[34:0], 3'b000}) + {b_ff[35:0], 2'b00}) + {b_ff[36:0], 1'b0}) + b_ff[37:0];
-	assign quotient_raw[1] = (~adder01_out[34] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder01_out[34:0] == 35'b00000000000000000000000000000000000));
-	assign quotient_raw[2] = (~adder02_out[35] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder02_out[35:0] == 36'b000000000000000000000000000000000000));
-	assign quotient_raw[3] = (~adder03_out[36] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder03_out[36:0] == 37'b0000000000000000000000000000000000000));
-	assign quotient_raw[4] = (~adder04_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder04_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[5] = (~adder05_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder05_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[6] = (~adder06_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder06_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[7] = (~adder07_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder07_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[8] = (~adder08_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder08_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[9] = (~adder09_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder09_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[10] = (~adder10_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder10_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[11] = (~adder11_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder11_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[12] = (~adder12_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder12_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[13] = (~adder13_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder13_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[14] = (~adder14_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder14_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_raw[15] = (~adder15_out[37] ^ dividend_sign_ff) | ((a_ff[27:0] == 28'b0000000000000000000000000000) & (adder15_out[37:0] == 38'b00000000000000000000000000000000000000));
-	assign quotient_new[0] = (((((((quotient_raw[15:1] == 15'b000000000000001) | (quotient_raw[15:3] == 13'b0000000000001)) | (quotient_raw[15:5] == 11'b00000000001)) | (quotient_raw[15:7] == 9'b000000001)) | (quotient_raw[15:9] == 7'b0000001)) | (quotient_raw[15:11] == 5'b00001)) | (quotient_raw[15:13] == 3'b001)) | (quotient_raw[15] == 1'b1);
-	assign quotient_new[1] = (((((((quotient_raw[15:2] == 14'b00000000000001) | (quotient_raw[15:3] == 13'b0000000000001)) | (quotient_raw[15:6] == 10'b0000000001)) | (quotient_raw[15:7] == 9'b000000001)) | (quotient_raw[15:10] == 6'b000001)) | (quotient_raw[15:11] == 5'b00001)) | (quotient_raw[15:14] == 2'b01)) | (quotient_raw[15] == 1'b1);
-	assign quotient_new[2] = (((((((quotient_raw[15:4] == 12'b000000000001) | (quotient_raw[15:5] == 11'b00000000001)) | (quotient_raw[15:6] == 10'b0000000001)) | (quotient_raw[15:7] == 9'b000000001)) | (quotient_raw[15:12] == 4'b0001)) | (quotient_raw[15:13] == 3'b001)) | (quotient_raw[15:14] == 2'b01)) | (quotient_raw[15] == 1'b1);
-	assign quotient_new[3] = (((((((quotient_raw[15:8] == 8'b00000001) | (quotient_raw[15:9] == 7'b0000001)) | (quotient_raw[15:10] == 6'b000001)) | (quotient_raw[15:11] == 5'b00001)) | (quotient_raw[15:12] == 4'b0001)) | (quotient_raw[15:13] == 3'b001)) | (quotient_raw[15:14] == 2'b01)) | (quotient_raw[15] == 1'b1);
-	assign twos_comp_b_sel = valid_ff & ~(dividend_sign_ff ^ divisor_sign_ff);
-	assign twos_comp_q_sel = ((~valid_ff & ~rem_ff) & (dividend_sign_ff ^ divisor_sign_ff)) & ~by_zero_case_ff;
-	assign twos_comp_in[31:0] = ({32 {twos_comp_q_sel}} & q_ff[31:0]) | ({32 {twos_comp_b_sel}} & b_ff[31:0]);
-	rvtwoscomp #(.WIDTH(32)) i_twos_comp(
-		.din(twos_comp_in[31:0]),
-		.dout(twos_comp_out[31:0])
-	);
-	assign valid_out = finish_ff & ~cancel;
-	assign data_out[31:0] = (({32 {~rem_ff & ~twos_comp_q_sel}} & q_ff[31:0]) | ({32 {rem_ff}} & r_ff[31:0])) | ({32 {twos_comp_q_sel}} & twos_comp_out[31:0]);
-	assign smallnum_case = ((((((a_ff[31:4] == 28'b0000000000000000000000000000) & (b_ff[31:4] == 28'b0000000000000000000000000000)) & ~by_zero_case) & ~rem_ff) & valid_ff) & ~cancel) | (((((a_ff[31:0] == 32'b00000000000000000000000000000000) & ~by_zero_case) & ~rem_ff) & valid_ff) & ~cancel);
-	assign smallnum[3] = ((a_ff[3] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1];
-	assign smallnum[2] = ((((a_ff[3] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0]) | (((a_ff[2] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[2]) & ~b_ff[3]) & ~b_ff[2]);
-	assign smallnum[1] = ((((((((((a_ff[2] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0]) | (((a_ff[1] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & ~b_ff[3]) & ~b_ff[1]) & ~b_ff[0])) | (((((a_ff[3] & ~a_ff[2]) & ~b_ff[3]) & ~b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & ~b_ff[2])) | (((a_ff[3] & a_ff[2]) & ~b_ff[3]) & ~b_ff[0])) | ((((a_ff[3] & a_ff[2]) & ~b_ff[3]) & b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[1]) & ~b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[2]);
-	assign smallnum[0] = ((((((((((((((((((((((((((((a_ff[2] & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[1]) | (((((a_ff[3] & ~a_ff[2]) & a_ff[0]) & ~b_ff[3]) & b_ff[1]) & b_ff[0])) | (((a_ff[2] & ~b_ff[3]) & ~b_ff[1]) & ~b_ff[0])) | (((a_ff[1] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[0])) | (((a_ff[0] & ~b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | ((((((~a_ff[3] & a_ff[2]) & ~a_ff[1]) & ~b_ff[3]) & ~b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & ~b_ff[0])) | (((a_ff[3] & ~b_ff[2]) & ~b_ff[1]) & ~b_ff[0])) | ((((a_ff[3] & ~a_ff[2]) & ~b_ff[3]) & b_ff[2]) & b_ff[1])) | (((((~a_ff[3] & a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[2]) & ~b_ff[1])) | ((((~a_ff[3] & a_ff[2]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[1])) | (((((a_ff[3] & ~a_ff[2]) & ~a_ff[1]) & ~b_ff[3]) & b_ff[2]) & b_ff[0])) | ((((~a_ff[2] & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & ~b_ff[2])) | (((a_ff[3] & a_ff[2]) & ~b_ff[1]) & ~b_ff[0])) | (((a_ff[3] & a_ff[1]) & ~b_ff[2]) & ~b_ff[0])) | (((((~a_ff[3] & a_ff[2]) & a_ff[1]) & a_ff[0]) & ~b_ff[3]) & b_ff[2])) | (((a_ff[3] & a_ff[2]) & b_ff[3]) & ~b_ff[2])) | ((((a_ff[3] & a_ff[1]) & b_ff[3]) & ~b_ff[2]) & ~b_ff[1])) | (((a_ff[3] & a_ff[0]) & ~b_ff[2]) & ~b_ff[1])) | (((((a_ff[3] & ~a_ff[1]) & ~b_ff[3]) & b_ff[2]) & b_ff[1]) & b_ff[0])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & b_ff[3]) & ~b_ff[0])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & a_ff[2]) & a_ff[0]) & b_ff[3]) & ~b_ff[1])) | ((((a_ff[3] & ~a_ff[2]) & a_ff[1]) & ~b_ff[3]) & b_ff[1])) | (((a_ff[3] & a_ff[1]) & a_ff[0]) & ~b_ff[2])) | ((((a_ff[3] & a_ff[2]) & a_ff[1]) & a_ff[0]) & b_ff[3]);
-	assign shortq_dividend[32:0] = {dividend_sign_ff, a_ff[31:0]};
-	wire [5:0] dw_a_enc;
-	wire [5:0] dw_b_enc;
-	wire [6:0] dw_shortq_raw;
-	eb1_exu_div_cls i_a_cls(
-		.operand(shortq_dividend[32:0]),
-		.cls(dw_a_enc[4:0])
-	);
-	eb1_exu_div_cls i_b_cls(
-		.operand(b_ff[32:0]),
-		.cls(dw_b_enc[4:0])
-	);
-	assign dw_a_enc[5] = 1'b0;
-	assign dw_b_enc[5] = 1'b0;
-	assign dw_shortq_raw[6:0] = ({1'b0, dw_b_enc[5:0]} - {1'b0, dw_a_enc[5:0]}) + 7'd1;
-	assign shortq[5:0] = (dw_shortq_raw[6] ? 6'd0 : dw_shortq_raw[5:0]);
-	assign shortq_enable = ((valid_ff & ~shortq[5]) & ~(shortq[4:2] == 3'b111)) & ~cancel;
-	assign shortq_decode[4:0] = ((((((((((((((((((((((((((((((({5 {shortq[4:0] == 5'd31}} & 5'd0) | ({5 {shortq[4:0] == 5'd30}} & 5'd0)) | ({5 {shortq[4:0] == 5'd29}} & 5'd0)) | ({5 {shortq[4:0] == 5'd28}} & 5'd0)) | ({5 {shortq[4:0] == 5'd27}} & 5'd4)) | ({5 {shortq[4:0] == 5'd26}} & 5'd4)) | ({5 {shortq[4:0] == 5'd25}} & 5'd4)) | ({5 {shortq[4:0] == 5'd24}} & 5'd4)) | ({5 {shortq[4:0] == 5'd23}} & 5'd8)) | ({5 {shortq[4:0] == 5'd22}} & 5'd8)) | ({5 {shortq[4:0] == 5'd21}} & 5'd8)) | ({5 {shortq[4:0] == 5'd20}} & 5'd8)) | ({5 {shortq[4:0] == 5'd19}} & 5'd12)) | ({5 {shortq[4:0] == 5'd18}} & 5'd12)) | ({5 {shortq[4:0] == 5'd17}} & 5'd12)) | ({5 {shortq[4:0] == 5'd16}} & 5'd12)) | ({5 {shortq[4:0] == 5'd15}} & 5'd16)) | ({5 {shortq[4:0] == 5'd14}} & 5'd16)) | ({5 {shortq[4:0] == 5'd13}} & 5'd16)) | ({5 {shortq[4:0] == 5'd12}} & 5'd16)) | ({5 {shortq[4:0] == 5'd11}} & 5'd20)) | ({5 {shortq[4:0] == 5'd10}} & 5'd20)) | ({5 {shortq[4:0] == 5'd9}} & 5'd20)) | ({5 {shortq[4:0] == 5'd8}} & 5'd20)) | ({5 {shortq[4:0] == 5'd7}} & 5'd24)) | ({5 {shortq[4:0] == 5'd6}} & 5'd24)) | ({5 {shortq[4:0] == 5'd5}} & 5'd24)) | ({5 {shortq[4:0] == 5'd4}} & 5'd24)) | ({5 {shortq[4:0] == 5'd3}} & 5'd28)) | ({5 {shortq[4:0] == 5'd2}} & 5'd28)) | ({5 {shortq[4:0] == 5'd1}} & 5'd28)) | ({5 {shortq[4:0] == 5'd0}} & 5'd28);
-	assign shortq_shift[4:0] = (~shortq_enable ? 5'd0 : shortq_decode[4:0]);
-endmodule
-module eb1_exu_div_cls (
-	operand,
-	cls
-);
-	input wire [32:0] operand;
-	output wire [4:0] cls;
-	wire [4:0] cls_zeros;
-	wire [4:0] cls_ones;
-	assign cls_zeros[4:0] = (((((((((((((((((((((((((((((((({5 {operand[31] == 1'b1}} & 5'd0) | ({5 {operand[31:30] == 2'b01}} & 5'd1)) | ({5 {operand[31:29] == {{2 {1'b0}}, 1'b1}}} & 5'd2)) | ({5 {operand[31:28] == {{3 {1'b0}}, 1'b1}}} & 5'd3)) | ({5 {operand[31:27] == {{4 {1'b0}}, 1'b1}}} & 5'd4)) | ({5 {operand[31:26] == {{5 {1'b0}}, 1'b1}}} & 5'd5)) | ({5 {operand[31:25] == {{6 {1'b0}}, 1'b1}}} & 5'd6)) | ({5 {operand[31:24] == {{7 {1'b0}}, 1'b1}}} & 5'd7)) | ({5 {operand[31:23] == {{8 {1'b0}}, 1'b1}}} & 5'd8)) | ({5 {operand[31:22] == {{9 {1'b0}}, 1'b1}}} & 5'd9)) | ({5 {operand[31:21] == {{10 {1'b0}}, 1'b1}}} & 5'd10)) | ({5 {operand[31:20] == {{11 {1'b0}}, 1'b1}}} & 5'd11)) | ({5 {operand[31:19] == {{12 {1'b0}}, 1'b1}}} & 5'd12)) | ({5 {operand[31:18] == {{13 {1'b0}}, 1'b1}}} & 5'd13)) | ({5 {operand[31:17] == {{14 {1'b0}}, 1'b1}}} & 5'd14)) | ({5 {operand[31:16] == {{15 {1'b0}}, 1'b1}}} & 5'd15)) | ({5 {operand[31:15] == {{16 {1'b0}}, 1'b1}}} & 5'd16)) | ({5 {operand[31:14] == {{17 {1'b0}}, 1'b1}}} & 5'd17)) | ({5 {operand[31:13] == {{18 {1'b0}}, 1'b1}}} & 5'd18)) | ({5 {operand[31:12] == {{19 {1'b0}}, 1'b1}}} & 5'd19)) | ({5 {operand[31:11] == {{20 {1'b0}}, 1'b1}}} & 5'd20)) | ({5 {operand[31:10] == {{21 {1'b0}}, 1'b1}}} & 5'd21)) | ({5 {operand[31:9] == {{22 {1'b0}}, 1'b1}}} & 5'd22)) | ({5 {operand[31:8] == {{23 {1'b0}}, 1'b1}}} & 5'd23)) | ({5 {operand[31:7] == {{24 {1'b0}}, 1'b1}}} & 5'd24)) | ({5 {operand[31:6] == {{25 {1'b0}}, 1'b1}}} & 5'd25)) | ({5 {operand[31:5] == {{26 {1'b0}}, 1'b1}}} & 5'd26)) | ({5 {operand[31:4] == {{27 {1'b0}}, 1'b1}}} & 5'd27)) | ({5 {operand[31:3] == {{28 {1'b0}}, 1'b1}}} & 5'd28)) | ({5 {operand[31:2] == {{29 {1'b0}}, 1'b1}}} & 5'd29)) | ({5 {operand[31:1] == {{30 {1'b0}}, 1'b1}}} & 5'd30)) | ({5 {operand[31:0] == {{31 {1'b0}}, 1'b1}}} & 5'd31)) | ({5 {operand[31:0] == {32 {1'b0}}}} & 5'd0);
-	assign cls_ones[4:0] = ((((((((((((((((((((((((((((((({5 {operand[31:30] == 2'b10}} & 5'd0) | ({5 {operand[31:29] == {{2 {1'b1}}, 1'b0}}} & 5'd1)) | ({5 {operand[31:28] == {{3 {1'b1}}, 1'b0}}} & 5'd2)) | ({5 {operand[31:27] == {{4 {1'b1}}, 1'b0}}} & 5'd3)) | ({5 {operand[31:26] == {{5 {1'b1}}, 1'b0}}} & 5'd4)) | ({5 {operand[31:25] == {{6 {1'b1}}, 1'b0}}} & 5'd5)) | ({5 {operand[31:24] == {{7 {1'b1}}, 1'b0}}} & 5'd6)) | ({5 {operand[31:23] == {{8 {1'b1}}, 1'b0}}} & 5'd7)) | ({5 {operand[31:22] == {{9 {1'b1}}, 1'b0}}} & 5'd8)) | ({5 {operand[31:21] == {{10 {1'b1}}, 1'b0}}} & 5'd9)) | ({5 {operand[31:20] == {{11 {1'b1}}, 1'b0}}} & 5'd10)) | ({5 {operand[31:19] == {{12 {1'b1}}, 1'b0}}} & 5'd11)) | ({5 {operand[31:18] == {{13 {1'b1}}, 1'b0}}} & 5'd12)) | ({5 {operand[31:17] == {{14 {1'b1}}, 1'b0}}} & 5'd13)) | ({5 {operand[31:16] == {{15 {1'b1}}, 1'b0}}} & 5'd14)) | ({5 {operand[31:15] == {{16 {1'b1}}, 1'b0}}} & 5'd15)) | ({5 {operand[31:14] == {{17 {1'b1}}, 1'b0}}} & 5'd16)) | ({5 {operand[31:13] == {{18 {1'b1}}, 1'b0}}} & 5'd17)) | ({5 {operand[31:12] == {{19 {1'b1}}, 1'b0}}} & 5'd18)) | ({5 {operand[31:11] == {{20 {1'b1}}, 1'b0}}} & 5'd19)) | ({5 {operand[31:10] == {{21 {1'b1}}, 1'b0}}} & 5'd20)) | ({5 {operand[31:9] == {{22 {1'b1}}, 1'b0}}} & 5'd21)) | ({5 {operand[31:8] == {{23 {1'b1}}, 1'b0}}} & 5'd22)) | ({5 {operand[31:7] == {{24 {1'b1}}, 1'b0}}} & 5'd23)) | ({5 {operand[31:6] == {{25 {1'b1}}, 1'b0}}} & 5'd24)) | ({5 {operand[31:5] == {{26 {1'b1}}, 1'b0}}} & 5'd25)) | ({5 {operand[31:4] == {{27 {1'b1}}, 1'b0}}} & 5'd26)) | ({5 {operand[31:3] == {{28 {1'b1}}, 1'b0}}} & 5'd27)) | ({5 {operand[31:2] == {{29 {1'b1}}, 1'b0}}} & 5'd28)) | ({5 {operand[31:1] == {{30 {1'b1}}, 1'b0}}} & 5'd29)) | ({5 {operand[31:0] == {{31 {1'b1}}, 1'b0}}} & 5'd30)) | ({5 {operand[31:0] == {32 {1'b1}}}} & 5'd31);
-	assign cls[4:0] = (operand[32] ? cls_ones[4:0] : cls_zeros[4:0]);
-endmodule
-module eb1_exu_mul_ctl (
-	clk,
-	rst_l,
-	scan_mode,
-	mul_p,
-	rs1_in,
-	rs2_in,
-	result_x
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire [19:0] mul_p;
-	input wire [31:0] rs1_in;
-	input wire [31:0] rs2_in;
-	output wire [31:0] result_x;
-	wire mul_x_enable;
-	wire bit_x_enable;
-	wire signed [32:0] rs1_ext_in;
-	wire signed [32:0] rs2_ext_in;
-	wire [65:0] prod_x;
-	wire low_x;
-	wire bitmanip_sel_d;
-	wire bitmanip_sel_x;
-	wire [31:0] bitmanip_d;
-	wire [31:0] bitmanip_x;
-	wire ap_bext;
-	wire ap_bdep;
-	wire ap_clmul;
-	wire ap_clmulh;
-	wire ap_clmulr;
-	wire ap_grev;
-	wire ap_gorc;
-	wire ap_shfl;
-	wire ap_unshfl;
-	wire ap_crc32_b;
-	wire ap_crc32_h;
-	wire ap_crc32_w;
-	wire ap_crc32c_b;
-	wire ap_crc32c_h;
-	wire ap_crc32c_w;
-	wire ap_bfp;
-	generate
-		if (pt[2197-:5] == 1) begin
-			assign ap_bext = mul_p[15];
-			assign ap_bdep = mul_p[14];
-		end
-		else begin
-			assign ap_bext = 1'b0;
-			assign ap_bdep = 1'b0;
-		end
-	endgenerate
-	generate
-		if (pt[2202-:5] == 1) begin
-			assign ap_clmul = mul_p[13];
-			assign ap_clmulh = mul_p[12];
-			assign ap_clmulr = mul_p[11];
-		end
-		else begin
-			assign ap_clmul = 1'b0;
-			assign ap_clmulh = 1'b0;
-			assign ap_clmulr = 1'b0;
-		end
-	endgenerate
-	generate
-		if (pt[2187-:5] == 1) begin
-			assign ap_grev = mul_p[10];
-			assign ap_gorc = mul_p[9];
-			assign ap_shfl = mul_p[8];
-			assign ap_unshfl = mul_p[7];
-		end
-		else begin
-			assign ap_grev = 1'b0;
-			assign ap_gorc = 1'b0;
-			assign ap_shfl = 1'b0;
-			assign ap_unshfl = 1'b0;
-		end
-	endgenerate
-	generate
-		if (pt[2182-:5] == 1) begin
-			assign ap_crc32_b = mul_p[6];
-			assign ap_crc32_h = mul_p[5];
-			assign ap_crc32_w = mul_p[4];
-			assign ap_crc32c_b = mul_p[3];
-			assign ap_crc32c_h = mul_p[2];
-			assign ap_crc32c_w = mul_p[1];
-		end
-		else begin
-			assign ap_crc32_b = 1'b0;
-			assign ap_crc32_h = 1'b0;
-			assign ap_crc32_w = 1'b0;
-			assign ap_crc32c_b = 1'b0;
-			assign ap_crc32c_h = 1'b0;
-			assign ap_crc32c_w = 1'b0;
-		end
-	endgenerate
-	generate
-		if (pt[2192-:5] == 1) begin
-			assign ap_bfp = mul_p[0];
-		end
-		else assign ap_bfp = 1'b0;
-	endgenerate
-	assign mul_x_enable = mul_p[19];
-	assign bit_x_enable = mul_p[19];
-	assign rs1_ext_in[32] = mul_p[18] & rs1_in[31];
-	assign rs2_ext_in[32] = mul_p[17] & rs2_in[31];
-	assign rs1_ext_in[31:0] = rs1_in[31:0];
-	assign rs2_ext_in[31:0] = rs2_in[31:0];
-	wire signed [32:0] rs1_x;
-	wire signed [32:0] rs2_x;
-	rvdffe #(.WIDTH(34)) i_a_x_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.din({mul_p[16], rs1_ext_in[32:0]}),
-		.dout({low_x, rs1_x[32:0]}),
-		.en(mul_x_enable)
-	);
-	rvdffe #(.WIDTH(33)) i_b_x_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.din(rs2_ext_in[32:0]),
-		.dout(rs2_x[32:0]),
-		.en(mul_x_enable)
-	);
-	assign prod_x[65:0] = rs1_x * rs2_x;
-	reg [31:0] bext_d;
-	reg bext_test_bit_d;
-	integer bext_i;
-	integer bext_j;
-	always @(*) begin
-		bext_j = 0;
-		bext_test_bit_d = 1'b0;
-		bext_d[31:0] = 32'b00000000000000000000000000000000;
-		for (bext_i = 0; bext_i < 32; bext_i = bext_i + 1)
-			begin
-				bext_test_bit_d = rs2_in[bext_i];
-				if (bext_test_bit_d) begin
-					bext_d[bext_j] = rs1_in[bext_i];
-					bext_j = bext_j + 1;
-				end
-			end
-	end
-	reg [31:0] bdep_d;
-	reg bdep_test_bit_d;
-	integer bdep_i;
-	integer bdep_j;
-	always @(*) begin
-		bdep_j = 0;
-		bdep_test_bit_d = 1'b0;
-		bdep_d[31:0] = 32'b00000000000000000000000000000000;
-		for (bdep_i = 0; bdep_i < 32; bdep_i = bdep_i + 1)
-			begin
-				bdep_test_bit_d = rs2_in[bdep_i];
-				if (bdep_test_bit_d) begin
-					bdep_d[bdep_i] = rs1_in[bdep_j];
-					bdep_j = bdep_j + 1;
-				end
-			end
-	end
-	wire [62:0] clmul_raw_d;
-	assign clmul_raw_d[62:0] = ((((((((((((((((((((((((((((((({63 {rs2_in[0]}} & {31'b0000000000000000000000000000000, rs1_in[31:0]}) ^ ({63 {rs2_in[1]}} & {30'b000000000000000000000000000000, rs1_in[31:0], 1'b0})) ^ ({63 {rs2_in[2]}} & {29'b00000000000000000000000000000, rs1_in[31:0], 2'b00})) ^ ({63 {rs2_in[3]}} & {28'b0000000000000000000000000000, rs1_in[31:0], 3'b000})) ^ ({63 {rs2_in[4]}} & {27'b000000000000000000000000000, rs1_in[31:0], 4'b0000})) ^ ({63 {rs2_in[5]}} & {26'b00000000000000000000000000, rs1_in[31:0], 5'b00000})) ^ ({63 {rs2_in[6]}} & {25'b0000000000000000000000000, rs1_in[31:0], 6'b000000})) ^ ({63 {rs2_in[7]}} & {24'b000000000000000000000000, rs1_in[31:0], 7'b0000000})) ^ ({63 {rs2_in[8]}} & {23'b00000000000000000000000, rs1_in[31:0], 8'b00000000})) ^ ({63 {rs2_in[9]}} & {22'b0000000000000000000000, rs1_in[31:0], 9'b000000000})) ^ ({63 {rs2_in[10]}} & {21'b000000000000000000000, rs1_in[31:0], 10'b0000000000})) ^ ({63 {rs2_in[11]}} & {20'b00000000000000000000, rs1_in[31:0], 11'b00000000000})) ^ ({63 {rs2_in[12]}} & {19'b0000000000000000000, rs1_in[31:0], 12'b000000000000})) ^ ({63 {rs2_in[13]}} & {18'b000000000000000000, rs1_in[31:0], 13'b0000000000000})) ^ ({63 {rs2_in[14]}} & {17'b00000000000000000, rs1_in[31:0], 14'b00000000000000})) ^ ({63 {rs2_in[15]}} & {16'b0000000000000000, rs1_in[31:0], 15'b000000000000000})) ^ ({63 {rs2_in[16]}} & {15'b000000000000000, rs1_in[31:0], 16'b0000000000000000})) ^ ({63 {rs2_in[17]}} & {14'b00000000000000, rs1_in[31:0], 17'b00000000000000000})) ^ ({63 {rs2_in[18]}} & {13'b0000000000000, rs1_in[31:0], 18'b000000000000000000})) ^ ({63 {rs2_in[19]}} & {12'b000000000000, rs1_in[31:0], 19'b0000000000000000000})) ^ ({63 {rs2_in[20]}} & {11'b00000000000, rs1_in[31:0], 20'b00000000000000000000})) ^ ({63 {rs2_in[21]}} & {10'b0000000000, rs1_in[31:0], 21'b000000000000000000000})) ^ ({63 {rs2_in[22]}} & {9'b000000000, rs1_in[31:0], 22'b0000000000000000000000})) ^ ({63 {rs2_in[23]}} & {8'b00000000, rs1_in[31:0], 23'b00000000000000000000000})) ^ ({63 {rs2_in[24]}} & {7'b0000000, rs1_in[31:0], 24'b000000000000000000000000})) ^ ({63 {rs2_in[25]}} & {6'b000000, rs1_in[31:0], 25'b0000000000000000000000000})) ^ ({63 {rs2_in[26]}} & {5'b00000, rs1_in[31:0], 26'b00000000000000000000000000})) ^ ({63 {rs2_in[27]}} & {4'b0000, rs1_in[31:0], 27'b000000000000000000000000000})) ^ ({63 {rs2_in[28]}} & {3'b000, rs1_in[31:0], 28'b0000000000000000000000000000})) ^ ({63 {rs2_in[29]}} & {2'b00, rs1_in[31:0], 29'b00000000000000000000000000000})) ^ ({63 {rs2_in[30]}} & {1'b0, rs1_in[31:0], 30'b000000000000000000000000000000})) ^ ({63 {rs2_in[31]}} & {rs1_in[31:0], 31'b0000000000000000000000000000000});
-	wire [31:0] grev1_d;
-	wire [31:0] grev2_d;
-	wire [31:0] grev4_d;
-	wire [31:0] grev8_d;
-	wire [31:0] grev_d;
-	assign grev1_d[31:0] = (rs2_in[0] ? {rs1_in[30], rs1_in[31], rs1_in[28], rs1_in[29], rs1_in[26], rs1_in[27], rs1_in[24], rs1_in[25], rs1_in[22], rs1_in[23], rs1_in[20], rs1_in[21], rs1_in[18], rs1_in[19], rs1_in[16], rs1_in[17], rs1_in[14], rs1_in[15], rs1_in[12], rs1_in[13], rs1_in[10], rs1_in[11], rs1_in[8], rs1_in[9], rs1_in[6], rs1_in[7], rs1_in[4], rs1_in[5], rs1_in[2], rs1_in[3], rs1_in[0], rs1_in[1]} : rs1_in[31:0]);
-	assign grev2_d[31:0] = (rs2_in[1] ? {grev1_d[29:28], grev1_d[31:30], grev1_d[25:24], grev1_d[27:26], grev1_d[21:20], grev1_d[23:22], grev1_d[17:16], grev1_d[19:18], grev1_d[13:12], grev1_d[15:14], grev1_d[9:8], grev1_d[11:10], grev1_d[5:4], grev1_d[7:6], grev1_d[1:0], grev1_d[3:2]} : grev1_d[31:0]);
-	assign grev4_d[31:0] = (rs2_in[2] ? {grev2_d[27:24], grev2_d[31:28], grev2_d[19:16], grev2_d[23:20], grev2_d[11:8], grev2_d[15:12], grev2_d[3:0], grev2_d[7:4]} : grev2_d[31:0]);
-	assign grev8_d[31:0] = (rs2_in[3] ? {grev4_d[23:16], grev4_d[31:24], grev4_d[7:0], grev4_d[15:8]} : grev4_d[31:0]);
-	assign grev_d[31:0] = (rs2_in[4] ? {grev8_d[15:0], grev8_d[31:16]} : grev8_d[31:0]);
-	wire [31:0] gorc1_d;
-	wire [31:0] gorc2_d;
-	wire [31:0] gorc4_d;
-	wire [31:0] gorc8_d;
-	wire [31:0] gorc_d;
-	assign gorc1_d[31:0] = ({32 {rs2_in[0]}} & {rs1_in[30], rs1_in[31], rs1_in[28], rs1_in[29], rs1_in[26], rs1_in[27], rs1_in[24], rs1_in[25], rs1_in[22], rs1_in[23], rs1_in[20], rs1_in[21], rs1_in[18], rs1_in[19], rs1_in[16], rs1_in[17], rs1_in[14], rs1_in[15], rs1_in[12], rs1_in[13], rs1_in[10], rs1_in[11], rs1_in[8], rs1_in[9], rs1_in[6], rs1_in[7], rs1_in[4], rs1_in[5], rs1_in[2], rs1_in[3], rs1_in[0], rs1_in[1]}) | rs1_in[31:0];
-	assign gorc2_d[31:0] = ({32 {rs2_in[1]}} & {gorc1_d[29:28], gorc1_d[31:30], gorc1_d[25:24], gorc1_d[27:26], gorc1_d[21:20], gorc1_d[23:22], gorc1_d[17:16], gorc1_d[19:18], gorc1_d[13:12], gorc1_d[15:14], gorc1_d[9:8], gorc1_d[11:10], gorc1_d[5:4], gorc1_d[7:6], gorc1_d[1:0], gorc1_d[3:2]}) | gorc1_d[31:0];
-	assign gorc4_d[31:0] = ({32 {rs2_in[2]}} & {gorc2_d[27:24], gorc2_d[31:28], gorc2_d[19:16], gorc2_d[23:20], gorc2_d[11:8], gorc2_d[15:12], gorc2_d[3:0], gorc2_d[7:4]}) | gorc2_d[31:0];
-	assign gorc8_d[31:0] = ({32 {rs2_in[3]}} & {gorc4_d[23:16], gorc4_d[31:24], gorc4_d[7:0], gorc4_d[15:8]}) | gorc4_d[31:0];
-	assign gorc_d[31:0] = ({32 {rs2_in[4]}} & {gorc8_d[15:0], gorc8_d[31:16]}) | gorc8_d[31:0];
-	wire [31:0] shfl8_d;
-	wire [31:0] shfl4_d;
-	wire [31:0] shfl2_d;
-	wire [31:0] shfl_d;
-	assign shfl8_d[31:0] = (rs2_in[3] ? {rs1_in[31:24], rs1_in[15:8], rs1_in[23:16], rs1_in[7:0]} : rs1_in[31:0]);
-	assign shfl4_d[31:0] = (rs2_in[2] ? {shfl8_d[31:28], shfl8_d[23:20], shfl8_d[27:24], shfl8_d[19:16], shfl8_d[15:12], shfl8_d[7:4], shfl8_d[11:8], shfl8_d[3:0]} : shfl8_d[31:0]);
-	assign shfl2_d[31:0] = (rs2_in[1] ? {shfl4_d[31:30], shfl4_d[27:26], shfl4_d[29:28], shfl4_d[25:24], shfl4_d[23:22], shfl4_d[19:18], shfl4_d[21:20], shfl4_d[17:16], shfl4_d[15:14], shfl4_d[11:10], shfl4_d[13:12], shfl4_d[9:8], shfl4_d[7:6], shfl4_d[3:2], shfl4_d[5:4], shfl4_d[1:0]} : shfl4_d[31:0]);
-	assign shfl_d[31:0] = (rs2_in[0] ? {shfl2_d[31], shfl2_d[29], shfl2_d[30], shfl2_d[28], shfl2_d[27], shfl2_d[25], shfl2_d[26], shfl2_d[24], shfl2_d[23], shfl2_d[21], shfl2_d[22], shfl2_d[20], shfl2_d[19], shfl2_d[17], shfl2_d[18], shfl2_d[16], shfl2_d[15], shfl2_d[13], shfl2_d[14], shfl2_d[12], shfl2_d[11], shfl2_d[9], shfl2_d[10], shfl2_d[8], shfl2_d[7], shfl2_d[5], shfl2_d[6], shfl2_d[4], shfl2_d[3], shfl2_d[1], shfl2_d[2], shfl2_d[0]} : shfl2_d[31:0]);
-	wire [31:0] unshfl1_d;
-	wire [31:0] unshfl2_d;
-	wire [31:0] unshfl4_d;
-	wire [31:0] unshfl_d;
-	assign unshfl1_d[31:0] = (rs2_in[0] ? {rs1_in[31], rs1_in[29], rs1_in[30], rs1_in[28], rs1_in[27], rs1_in[25], rs1_in[26], rs1_in[24], rs1_in[23], rs1_in[21], rs1_in[22], rs1_in[20], rs1_in[19], rs1_in[17], rs1_in[18], rs1_in[16], rs1_in[15], rs1_in[13], rs1_in[14], rs1_in[12], rs1_in[11], rs1_in[9], rs1_in[10], rs1_in[8], rs1_in[7], rs1_in[5], rs1_in[6], rs1_in[4], rs1_in[3], rs1_in[1], rs1_in[2], rs1_in[0]} : rs1_in[31:0]);
-	assign unshfl2_d[31:0] = (rs2_in[1] ? {unshfl1_d[31:30], unshfl1_d[27:26], unshfl1_d[29:28], unshfl1_d[25:24], unshfl1_d[23:22], unshfl1_d[19:18], unshfl1_d[21:20], unshfl1_d[17:16], unshfl1_d[15:14], unshfl1_d[11:10], unshfl1_d[13:12], unshfl1_d[9:8], unshfl1_d[7:6], unshfl1_d[3:2], unshfl1_d[5:4], unshfl1_d[1:0]} : unshfl1_d[31:0]);
-	assign unshfl4_d[31:0] = (rs2_in[2] ? {unshfl2_d[31:28], unshfl2_d[23:20], unshfl2_d[27:24], unshfl2_d[19:16], unshfl2_d[15:12], unshfl2_d[7:4], unshfl2_d[11:8], unshfl2_d[3:0]} : unshfl2_d[31:0]);
-	assign unshfl_d[31:0] = (rs2_in[3] ? {unshfl4_d[31:24], unshfl4_d[15:8], unshfl4_d[23:16], unshfl4_d[7:0]} : unshfl4_d[31:0]);
-	wire crc32_all;
-	wire [31:0] crc32_poly_rev;
-	wire [31:0] crc32c_poly_rev;
-	integer crc32_bi;
-	integer crc32_hi;
-	integer crc32_wi;
-	integer crc32c_bi;
-	integer crc32c_hi;
-	integer crc32c_wi;
-	reg [31:0] crc32_bd;
-	reg [31:0] crc32_hd;
-	reg [31:0] crc32_wd;
-	reg [31:0] crc32c_bd;
-	reg [31:0] crc32c_hd;
-	reg [31:0] crc32c_wd;
-	assign crc32_all = ((((ap_crc32_b | ap_crc32_h) | ap_crc32_w) | ap_crc32c_b) | ap_crc32c_h) | ap_crc32c_w;
-	assign crc32_poly_rev[31:0] = 32'hedb88320;
-	assign crc32c_poly_rev[31:0] = 32'h82f63b78;
-	always @(*) begin
-		crc32_bd[31:0] = rs1_in[31:0];
-		for (crc32_bi = 0; crc32_bi < 8; crc32_bi = crc32_bi + 1)
-			crc32_bd[31:0] = (crc32_bd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32 {crc32_bd[0]}});
-	end
-	always @(*) begin
-		crc32_hd[31:0] = rs1_in[31:0];
-		for (crc32_hi = 0; crc32_hi < 16; crc32_hi = crc32_hi + 1)
-			crc32_hd[31:0] = (crc32_hd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32 {crc32_hd[0]}});
-	end
-	always @(*) begin
-		crc32_wd[31:0] = rs1_in[31:0];
-		for (crc32_wi = 0; crc32_wi < 32; crc32_wi = crc32_wi + 1)
-			crc32_wd[31:0] = (crc32_wd[31:0] >> 1) ^ (crc32_poly_rev[31:0] & {32 {crc32_wd[0]}});
-	end
-	always @(*) begin
-		crc32c_bd[31:0] = rs1_in[31:0];
-		for (crc32c_bi = 0; crc32c_bi < 8; crc32c_bi = crc32c_bi + 1)
-			crc32c_bd[31:0] = (crc32c_bd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32 {crc32c_bd[0]}});
-	end
-	always @(*) begin
-		crc32c_hd[31:0] = rs1_in[31:0];
-		for (crc32c_hi = 0; crc32c_hi < 16; crc32c_hi = crc32c_hi + 1)
-			crc32c_hd[31:0] = (crc32c_hd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32 {crc32c_hd[0]}});
-	end
-	always @(*) begin
-		crc32c_wd[31:0] = rs1_in[31:0];
-		for (crc32c_wi = 0; crc32c_wi < 32; crc32c_wi = crc32c_wi + 1)
-			crc32c_wd[31:0] = (crc32c_wd[31:0] >> 1) ^ (crc32c_poly_rev[31:0] & {32 {crc32c_wd[0]}});
-	end
-	wire [4:0] bfp_len;
-	wire [4:0] bfp_off;
-	wire [31:0] bfp_len_mask_;
-	wire [15:0] bfp_preshift_data;
-	wire [63:0] bfp_shift_data;
-	wire [63:0] bfp_shift_mask;
-	wire [31:0] bfp_result_d;
-	assign bfp_len[3:0] = rs2_in[27:24];
-	assign bfp_len[4] = bfp_len[3:0] == 4'b0000;
-	assign bfp_off[4:0] = rs2_in[20:16];
-	assign bfp_len_mask_[31:0] = 32'hffffffff << bfp_len[4:0];
-	assign bfp_preshift_data[15:0] = rs2_in[15:0] & ~bfp_len_mask_[15:0];
-	assign bfp_shift_data[63:0] = {16'b0000000000000000, bfp_preshift_data[15:0], 16'b0000000000000000, bfp_preshift_data[15:0]} << bfp_off[4:0];
-	assign bfp_shift_mask[63:0] = {bfp_len_mask_[31:0], bfp_len_mask_[31:0]} << bfp_off[4:0];
-	assign bfp_result_d[31:0] = bfp_shift_data[63:32] | (rs1_in[31:0] & bfp_shift_mask[63:32]);
-	assign bitmanip_sel_d = (((((((((ap_bext | ap_bdep) | ap_clmul) | ap_clmulh) | ap_clmulr) | ap_grev) | ap_gorc) | ap_shfl) | ap_unshfl) | crc32_all) | ap_bfp;
-	assign bitmanip_d[31:0] = ((((((((((((((({32 {ap_bext}} & bext_d[31:0]) | ({32 {ap_bdep}} & bdep_d[31:0])) | ({32 {ap_clmul}} & clmul_raw_d[31:0])) | ({32 {ap_clmulh}} & {1'b0, clmul_raw_d[62:32]})) | ({32 {ap_clmulr}} & clmul_raw_d[62:31])) | ({32 {ap_grev}} & grev_d[31:0])) | ({32 {ap_gorc}} & gorc_d[31:0])) | ({32 {ap_shfl}} & shfl_d[31:0])) | ({32 {ap_unshfl}} & unshfl_d[31:0])) | ({32 {ap_crc32_b}} & crc32_bd[31:0])) | ({32 {ap_crc32_h}} & crc32_hd[31:0])) | ({32 {ap_crc32_w}} & crc32_wd[31:0])) | ({32 {ap_crc32c_b}} & crc32c_bd[31:0])) | ({32 {ap_crc32c_h}} & crc32c_hd[31:0])) | ({32 {ap_crc32c_w}} & crc32c_wd[31:0])) | ({32 {ap_bfp}} & bfp_result_d[31:0]);
-	rvdffe #(.WIDTH(33)) i_bitmanip_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.din({bitmanip_sel_d, bitmanip_d[31:0]}),
-		.dout({bitmanip_sel_x, bitmanip_x[31:0]}),
-		.en(bit_x_enable)
-	);
-	assign result_x[31:0] = (({32 {~bitmanip_sel_x & ~low_x}} & prod_x[63:32]) | ({32 {~bitmanip_sel_x & low_x}} & prod_x[31:0])) | bitmanip_x[31:0];
-endmodule
-module eb1_ifu (
-	free_l2clk,
-	active_clk,
-	clk,
-	rst_l,
-	dec_i0_decode_d,
-	exu_flush_final,
-	dec_tlu_i0_commit_cmt,
-	dec_tlu_flush_err_wb,
-	dec_tlu_flush_noredir_wb,
-	exu_flush_path_final,
-	dec_tlu_mrac_ff,
-	dec_tlu_fence_i_wb,
-	dec_tlu_flush_leak_one_wb,
-	dec_tlu_bpred_disable,
-	dec_tlu_core_ecc_disable,
-	dec_tlu_force_halt,
-	ifu_axi_awvalid,
-	ifu_axi_awid,
-	ifu_axi_awaddr,
-	ifu_axi_awregion,
-	ifu_axi_awlen,
-	ifu_axi_awsize,
-	ifu_axi_awburst,
-	ifu_axi_awlock,
-	ifu_axi_awcache,
-	ifu_axi_awprot,
-	ifu_axi_awqos,
-	ifu_axi_wvalid,
-	ifu_axi_wdata,
-	ifu_axi_wstrb,
-	ifu_axi_wlast,
-	ifu_axi_bready,
-	ifu_axi_arvalid,
-	ifu_axi_arready,
-	ifu_axi_arid,
-	ifu_axi_araddr,
-	ifu_axi_arregion,
-	ifu_axi_arlen,
-	ifu_axi_arsize,
-	ifu_axi_arburst,
-	ifu_axi_arlock,
-	ifu_axi_arcache,
-	ifu_axi_arprot,
-	ifu_axi_arqos,
-	ifu_axi_rvalid,
-	ifu_axi_rready,
-	ifu_axi_rid,
-	ifu_axi_rdata,
-	ifu_axi_rresp,
-	ifu_bus_clk_en,
-	dma_iccm_req,
-	dma_mem_addr,
-	dma_mem_sz,
-	dma_mem_write,
-	dma_mem_wdata,
-	dma_mem_tag,
-	dma_iccm_stall_any,
-	iccm_dma_ecc_error,
-	iccm_dma_rvalid,
-	iccm_dma_rdata,
-	iccm_dma_rtag,
-	iccm_ready,
-	ifu_pmu_instr_aligned,
-	ifu_pmu_fetch_stall,
-	ifu_ic_error_start,
-	ic_rw_addr,
-	ic_wr_en,
-	ic_rd_en,
-	ic_wr_data,
-	ic_rd_data,
-	ic_debug_rd_data,
-	ictag_debug_rd_data,
-	ic_debug_wr_data,
-	ifu_ic_debug_rd_data,
-	ic_eccerr,
-	ic_parerr,
-	ic_premux_data,
-	ic_sel_premux_data,
-	ic_debug_addr,
-	ic_debug_rd_en,
-	ic_debug_wr_en,
-	ic_debug_tag_array,
-	ic_debug_way,
-	ic_tag_valid,
-	ic_rd_hit,
-	ic_tag_perr,
-	iccm_rw_addr,
-	iccm_wren,
-	iccm_rden,
-	iccm_wr_data,
-	iccm_wr_size,
-	iccm_rd_data,
-	iccm_rd_data_ecc,
-	ifu_iccm_rd_ecc_single_err,
-	ifu_pmu_ic_miss,
-	ifu_pmu_ic_hit,
-	ifu_pmu_bus_error,
-	ifu_pmu_bus_busy,
-	ifu_pmu_bus_trxn,
-	ifu_i0_icaf,
-	ifu_i0_icaf_type,
-	ifu_i0_valid,
-	ifu_i0_icaf_second,
-	ifu_i0_dbecc,
-	iccm_dma_sb_error,
-	ifu_i0_instr,
-	ifu_i0_pc,
-	ifu_i0_pc4,
-	ifu_miss_state_idle,
-	i0_brp,
-	ifu_i0_bp_index,
-	ifu_i0_bp_fghr,
-	ifu_i0_bp_btag,
-	ifu_i0_fa_index,
-	exu_mp_pkt,
-	exu_mp_eghr,
-	exu_mp_fghr,
-	exu_mp_index,
-	exu_mp_btag,
-	dec_tlu_br0_r_pkt,
-	exu_i0_br_fghr_r,
-	exu_i0_br_index_r,
-	dec_fa_error_index,
-	dec_tlu_flush_lower_wb,
-	ifu_i0_cinst,
-	dec_tlu_ic_diag_pkt,
-	ifu_ic_debug_rd_data_valid,
-	iccm_buf_correct_ecc,
-	iccm_correction_state,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire free_l2clk;
-	input wire active_clk;
-	input wire clk;
-	input wire rst_l;
-	input wire dec_i0_decode_d;
-	input wire exu_flush_final;
-	input wire dec_tlu_i0_commit_cmt;
-	input wire dec_tlu_flush_err_wb;
-	input wire dec_tlu_flush_noredir_wb;
-	input wire [31:1] exu_flush_path_final;
-	input wire [31:0] dec_tlu_mrac_ff;
-	input wire dec_tlu_fence_i_wb;
-	input wire dec_tlu_flush_leak_one_wb;
-	input wire dec_tlu_bpred_disable;
-	input wire dec_tlu_core_ecc_disable;
-	input wire dec_tlu_force_halt;
-	output wire ifu_axi_awvalid;
-	output wire [pt[826-:8] - 1:0] ifu_axi_awid;
-	output wire [31:0] ifu_axi_awaddr;
-	output wire [3:0] ifu_axi_awregion;
-	output wire [7:0] ifu_axi_awlen;
-	output wire [2:0] ifu_axi_awsize;
-	output wire [1:0] ifu_axi_awburst;
-	output wire ifu_axi_awlock;
-	output wire [3:0] ifu_axi_awcache;
-	output wire [2:0] ifu_axi_awprot;
-	output wire [3:0] ifu_axi_awqos;
-	output wire ifu_axi_wvalid;
-	output wire [63:0] ifu_axi_wdata;
-	output wire [7:0] ifu_axi_wstrb;
-	output wire ifu_axi_wlast;
-	output wire ifu_axi_bready;
-	output wire ifu_axi_arvalid;
-	input wire ifu_axi_arready;
-	output wire [pt[826-:8] - 1:0] ifu_axi_arid;
-	output wire [31:0] ifu_axi_araddr;
-	output wire [3:0] ifu_axi_arregion;
-	output wire [7:0] ifu_axi_arlen;
-	output wire [2:0] ifu_axi_arsize;
-	output wire [1:0] ifu_axi_arburst;
-	output wire ifu_axi_arlock;
-	output wire [3:0] ifu_axi_arcache;
-	output wire [2:0] ifu_axi_arprot;
-	output wire [3:0] ifu_axi_arqos;
-	input wire ifu_axi_rvalid;
-	output wire ifu_axi_rready;
-	input wire [pt[826-:8] - 1:0] ifu_axi_rid;
-	input wire [63:0] ifu_axi_rdata;
-	input wire [1:0] ifu_axi_rresp;
-	input wire ifu_bus_clk_en;
-	input wire dma_iccm_req;
-	input wire [31:0] dma_mem_addr;
-	input wire [2:0] dma_mem_sz;
-	input wire dma_mem_write;
-	input wire [63:0] dma_mem_wdata;
-	input wire [2:0] dma_mem_tag;
-	input wire dma_iccm_stall_any;
-	output wire iccm_dma_ecc_error;
-	output wire iccm_dma_rvalid;
-	output wire [63:0] iccm_dma_rdata;
-	output wire [2:0] iccm_dma_rtag;
-	output wire iccm_ready;
-	output wire ifu_pmu_instr_aligned;
-	output wire ifu_pmu_fetch_stall;
-	output wire ifu_ic_error_start;
-	output wire [31:1] ic_rw_addr;
-	output wire [pt[1060-:7] - 1:0] ic_wr_en;
-	output wire ic_rd_en;
-	output wire [(pt[1189-:7] * 71) - 1:0] ic_wr_data;
-	input wire [63:0] ic_rd_data;
-	input wire [70:0] ic_debug_rd_data;
-	input wire [25:0] ictag_debug_rd_data;
-	output wire [70:0] ic_debug_wr_data;
-	output wire [70:0] ifu_ic_debug_rd_data;
-	input wire [pt[1189-:7] - 1:0] ic_eccerr;
-	input wire [pt[1189-:7] - 1:0] ic_parerr;
-	output wire [63:0] ic_premux_data;
-	output wire ic_sel_premux_data;
-	output wire [pt[1104-:9]:3] ic_debug_addr;
-	output wire ic_debug_rd_en;
-	output wire ic_debug_wr_en;
-	output wire ic_debug_tag_array;
-	output wire [pt[1060-:7] - 1:0] ic_debug_way;
-	output wire [pt[1060-:7] - 1:0] ic_tag_valid;
-	input wire [pt[1060-:7] - 1:0] ic_rd_hit;
-	input wire ic_tag_perr;
-	output wire [pt[936-:9] - 1:1] iccm_rw_addr;
-	output wire iccm_wren;
-	output wire iccm_rden;
-	output wire [77:0] iccm_wr_data;
-	output wire [2:0] iccm_wr_size;
-	input wire [63:0] iccm_rd_data;
-	input wire [77:0] iccm_rd_data_ecc;
-	output wire ifu_iccm_rd_ecc_single_err;
-	output wire ifu_pmu_ic_miss;
-	output wire ifu_pmu_ic_hit;
-	output wire ifu_pmu_bus_error;
-	output wire ifu_pmu_bus_busy;
-	output wire ifu_pmu_bus_trxn;
-	output wire ifu_i0_icaf;
-	output wire [1:0] ifu_i0_icaf_type;
-	output wire ifu_i0_valid;
-	output wire ifu_i0_icaf_second;
-	output wire ifu_i0_dbecc;
-	output wire iccm_dma_sb_error;
-	output wire [31:0] ifu_i0_instr;
-	output wire [31:1] ifu_i0_pc;
-	output wire ifu_i0_pc4;
-	output wire ifu_miss_state_idle;
-	output wire [50:0] i0_brp;
-	output wire [pt[2172-:9]:pt[2163-:6]] ifu_i0_bp_index;
-	output wire [pt[2236-:8] - 1:0] ifu_i0_bp_fghr;
-	output wire [pt[2139-:9] - 1:0] ifu_i0_bp_btag;
-	output wire [$clog2(pt[2061-:14]) - 1:0] ifu_i0_fa_index;
-	input wire [55:0] exu_mp_pkt;
-	input wire [pt[2236-:8] - 1:0] exu_mp_eghr;
-	input wire [pt[2236-:8] - 1:0] exu_mp_fghr;
-	input wire [pt[2172-:9]:pt[2163-:6]] exu_mp_index;
-	input wire [pt[2139-:9] - 1:0] exu_mp_btag;
-	input wire [6:0] dec_tlu_br0_r_pkt;
-	input wire [pt[2236-:8] - 1:0] exu_i0_br_fghr_r;
-	input wire [pt[2172-:9]:pt[2163-:6]] exu_i0_br_index_r;
-	input wire [$clog2(pt[2061-:14]) - 1:0] dec_fa_error_index;
-	input dec_tlu_flush_lower_wb;
-	output wire [15:0] ifu_i0_cinst;
-	input wire [89:0] dec_tlu_ic_diag_pkt;
-	output wire ifu_ic_debug_rd_data_valid;
-	output wire iccm_buf_correct_ecc;
-	output wire iccm_correction_state;
-	input wire scan_mode;
-	localparam TAGWIDTH = 2;
-	localparam IDWIDTH = 2;
-	wire ifu_fb_consume1;
-	wire ifu_fb_consume2;
-	wire [31:1] ifc_fetch_addr_f;
-	wire [31:1] ifc_fetch_addr_bf;
-	wire [1:0] ifu_fetch_val;
-	wire [31:1] ifu_fetch_pc;
-	wire iccm_rd_ecc_single_err;
-	wire ic_error_start;
-	assign ifu_iccm_rd_ecc_single_err = iccm_rd_ecc_single_err;
-	assign ifu_ic_error_start = ic_error_start;
-	wire ic_write_stall;
-	wire ic_dma_active;
-	wire ifc_dma_access_ok;
-	wire [1:0] ic_access_fault_f;
-	wire [1:0] ic_access_fault_type_f;
-	wire ifu_ic_mb_empty;
-	wire ic_hit_f;
-	wire [1:0] ifu_bp_way_f;
-	wire ifu_bp_hit_taken_f;
-	wire [31:1] ifu_bp_btb_target_f;
-	wire ifu_bp_inst_mask_f;
-	wire [1:0] ifu_bp_hist1_f;
-	wire [1:0] ifu_bp_hist0_f;
-	wire [11:0] ifu_bp_poffset_f;
-	wire [1:0] ifu_bp_ret_f;
-	wire [1:0] ifu_bp_pc4_f;
-	wire [1:0] ifu_bp_valid_f;
-	wire [pt[2236-:8] - 1:0] ifu_bp_fghr_f;
-	wire [(2 * $clog2(pt[2061-:14])) - 1:0] ifu_bp_fa_index_f;
-	wire ifc_fetch_req_bf;
-	wire ifc_fetch_req_bf_raw;
-	wire ifc_fetch_req_f;
-	wire ifc_fetch_uncacheable_bf;
-	wire ifc_iccm_access_bf;
-	wire ifc_region_acc_fault_bf;
-	eb1_ifu_ifc_ctl #(.pt(pt)) ifc(
-		.clk(clk),
-		.free_l2clk(free_l2clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.ic_hit_f(ic_hit_f),
-		.ifu_ic_mb_empty(ifu_ic_mb_empty),
-		.ifu_fb_consume1(ifu_fb_consume1),
-		.ifu_fb_consume2(ifu_fb_consume2),
-		.dec_tlu_flush_noredir_wb(dec_tlu_flush_noredir_wb),
-		.exu_flush_final(exu_flush_final),
-		.exu_flush_path_final(exu_flush_path_final),
-		.ifu_bp_hit_taken_f(ifu_bp_hit_taken_f),
-		.ifu_bp_btb_target_f(ifu_bp_btb_target_f),
-		.ic_dma_active(ic_dma_active),
-		.ic_write_stall(ic_write_stall),
-		.dma_iccm_stall_any(dma_iccm_stall_any),
-		.dec_tlu_mrac_ff(dec_tlu_mrac_ff),
-		.ifc_fetch_addr_f(ifc_fetch_addr_f),
-		.ifc_fetch_addr_bf(ifc_fetch_addr_bf),
-		.ifc_fetch_req_f(ifc_fetch_req_f),
-		.ifu_pmu_fetch_stall(ifu_pmu_fetch_stall),
-		.ifc_fetch_uncacheable_bf(ifc_fetch_uncacheable_bf),
-		.ifc_fetch_req_bf(ifc_fetch_req_bf),
-		.ifc_fetch_req_bf_raw(ifc_fetch_req_bf_raw),
-		.ifc_iccm_access_bf(ifc_iccm_access_bf),
-		.ifc_region_acc_fault_bf(ifc_region_acc_fault_bf),
-		.ifc_dma_access_ok(ifc_dma_access_ok)
-	);
-	generate
-		if (pt[2130-:5] == 1) begin : bpred
-			eb1_ifu_bp_ctl #(.pt(pt)) bp(
-				.clk(clk),
-				.rst_l(rst_l),
-				.ic_hit_f(ic_hit_f),
-				.ifc_fetch_addr_f(ifc_fetch_addr_f),
-				.ifc_fetch_req_f(ifc_fetch_req_f),
-				.dec_tlu_br0_r_pkt(dec_tlu_br0_r_pkt),
-				.exu_i0_br_fghr_r(exu_i0_br_fghr_r),
-				.exu_i0_br_index_r(exu_i0_br_index_r),
-				.dec_fa_error_index(dec_fa_error_index),
-				.dec_tlu_flush_lower_wb(dec_tlu_flush_lower_wb),
-				.dec_tlu_flush_leak_one_wb(dec_tlu_flush_leak_one_wb),
-				.dec_tlu_bpred_disable(dec_tlu_bpred_disable),
-				.exu_mp_pkt(exu_mp_pkt),
-				.exu_mp_eghr(exu_mp_eghr),
-				.exu_mp_fghr(exu_mp_fghr),
-				.exu_mp_index(exu_mp_index),
-				.exu_mp_btag(exu_mp_btag),
-				.exu_flush_final(exu_flush_final),
-				.ifu_bp_hit_taken_f(ifu_bp_hit_taken_f),
-				.ifu_bp_btb_target_f(ifu_bp_btb_target_f),
-				.ifu_bp_inst_mask_f(ifu_bp_inst_mask_f),
-				.ifu_bp_fghr_f(ifu_bp_fghr_f),
-				.ifu_bp_way_f(ifu_bp_way_f),
-				.ifu_bp_ret_f(ifu_bp_ret_f),
-				.ifu_bp_hist1_f(ifu_bp_hist1_f),
-				.ifu_bp_hist0_f(ifu_bp_hist0_f),
-				.ifu_bp_pc4_f(ifu_bp_pc4_f),
-				.ifu_bp_valid_f(ifu_bp_valid_f),
-				.ifu_bp_poffset_f(ifu_bp_poffset_f),
-				.ifu_bp_fa_index_f(ifu_bp_fa_index_f),
-				.scan_mode(scan_mode)
-			);
-		end
-		else begin : bpred
-			assign ifu_bp_hit_taken_f = 1'b0;
-			wire btb_wr_en_way0;
-			wire btb_wr_en_way1;
-			wire dec_tlu_error_wb;
-			wire [16 + pt[2139-:9]:0] btb_wr_data;
-			assign btb_wr_en_way0 = 1'b0;
-			assign btb_wr_en_way1 = 1'b0;
-			assign btb_wr_data = {((16 + pt[2139-:9]) >= 0 ? (16 + pt[2139-:9]) + 1 : 1 - (16 + pt[2139-:9])) {1'sb0}};
-			assign dec_tlu_error_wb = 1'b0;
-			assign ifu_bp_inst_mask_f = 1'b1;
-		end
-	endgenerate
-	wire [1:0] ic_fetch_val_f;
-	wire [31:0] ic_data_f;
-	wire [31:0] ifu_fetch_data_f;
-	wire ifc_fetch_req_f_raw;
-	wire [1:0] iccm_rd_ecc_double_err;
-	wire ifu_async_error_start;
-	assign ifu_fetch_data_f[31:0] = ic_data_f[31:0];
-	assign ifu_fetch_val[1:0] = ic_fetch_val_f[1:0];
-	assign ifu_fetch_pc[31:1] = ifc_fetch_addr_f[31:1];
-	eb1_ifu_aln_ctl #(.pt(pt)) aln(
-		.scan_mode(scan_mode),
-		.rst_l(rst_l),
-		.clk(clk),
-		.active_clk(active_clk),
-		.ifu_async_error_start(ifu_async_error_start),
-		.iccm_rd_ecc_double_err(iccm_rd_ecc_double_err),
-		.ic_access_fault_f(ic_access_fault_f),
-		.ic_access_fault_type_f(ic_access_fault_type_f),
-		.exu_flush_final(exu_flush_final),
-		.dec_i0_decode_d(dec_i0_decode_d),
-		.ifu_fetch_data_f(ifu_fetch_data_f),
-		.ifu_fetch_val(ifu_fetch_val),
-		.ifu_fetch_pc(ifu_fetch_pc),
-		.ifu_i0_valid(ifu_i0_valid),
-		.ifu_i0_icaf(ifu_i0_icaf),
-		.ifu_i0_icaf_type(ifu_i0_icaf_type),
-		.ifu_i0_icaf_second(ifu_i0_icaf_second),
-		.ifu_i0_dbecc(ifu_i0_dbecc),
-		.ifu_i0_instr(ifu_i0_instr),
-		.ifu_i0_pc(ifu_i0_pc),
-		.ifu_i0_pc4(ifu_i0_pc4),
-		.ifu_fb_consume1(ifu_fb_consume1),
-		.ifu_fb_consume2(ifu_fb_consume2),
-		.ifu_bp_fghr_f(ifu_bp_fghr_f),
-		.ifu_bp_btb_target_f(ifu_bp_btb_target_f),
-		.ifu_bp_poffset_f(ifu_bp_poffset_f),
-		.ifu_bp_fa_index_f(ifu_bp_fa_index_f),
-		.ifu_bp_hist0_f(ifu_bp_hist0_f),
-		.ifu_bp_hist1_f(ifu_bp_hist1_f),
-		.ifu_bp_pc4_f(ifu_bp_pc4_f),
-		.ifu_bp_way_f(ifu_bp_way_f),
-		.ifu_bp_valid_f(ifu_bp_valid_f),
-		.ifu_bp_ret_f(ifu_bp_ret_f),
-		.i0_brp(i0_brp),
-		.ifu_i0_bp_index(ifu_i0_bp_index),
-		.ifu_i0_bp_fghr(ifu_i0_bp_fghr),
-		.ifu_i0_bp_btag(ifu_i0_bp_btag),
-		.ifu_i0_fa_index(ifu_i0_fa_index),
-		.ifu_pmu_instr_aligned(ifu_pmu_instr_aligned),
-		.ifu_i0_cinst(ifu_i0_cinst)
-	);
-	eb1_ifu_mem_ctl #(.pt(pt)) mem_ctl(
-		.clk(clk),
-		.active_clk(active_clk),
-		.free_l2clk(free_l2clk),
-		.rst_l(rst_l),
-		.exu_flush_final(exu_flush_final),
-		.dec_tlu_flush_lower_wb(dec_tlu_flush_lower_wb),
-		.dec_tlu_flush_err_wb(dec_tlu_flush_err_wb),
-		.dec_tlu_i0_commit_cmt(dec_tlu_i0_commit_cmt),
-		.dec_tlu_force_halt(dec_tlu_force_halt),
-		.ifc_fetch_addr_bf(ifc_fetch_addr_bf),
-		.ifc_fetch_uncacheable_bf(ifc_fetch_uncacheable_bf),
-		.ifc_fetch_req_bf(ifc_fetch_req_bf),
-		.ifc_fetch_req_bf_raw(ifc_fetch_req_bf_raw),
-		.ifc_iccm_access_bf(ifc_iccm_access_bf),
-		.ifc_region_acc_fault_bf(ifc_region_acc_fault_bf),
-		.ifc_dma_access_ok(ifc_dma_access_ok),
-		.dec_tlu_fence_i_wb(dec_tlu_fence_i_wb),
-		.ifu_bp_hit_taken_f(ifu_bp_hit_taken_f),
-		.ifu_bp_inst_mask_f(ifu_bp_inst_mask_f),
-		.ifu_miss_state_idle(ifu_miss_state_idle),
-		.ifu_ic_mb_empty(ifu_ic_mb_empty),
-		.ic_dma_active(ic_dma_active),
-		.ic_write_stall(ic_write_stall),
-		.ifu_pmu_ic_miss(ifu_pmu_ic_miss),
-		.ifu_pmu_ic_hit(ifu_pmu_ic_hit),
-		.ifu_pmu_bus_error(ifu_pmu_bus_error),
-		.ifu_pmu_bus_busy(ifu_pmu_bus_busy),
-		.ifu_pmu_bus_trxn(ifu_pmu_bus_trxn),
-		.ifu_axi_awvalid(ifu_axi_awvalid),
-		.ifu_axi_awid(ifu_axi_awid),
-		.ifu_axi_awaddr(ifu_axi_awaddr),
-		.ifu_axi_awregion(ifu_axi_awregion),
-		.ifu_axi_awlen(ifu_axi_awlen),
-		.ifu_axi_awsize(ifu_axi_awsize),
-		.ifu_axi_awburst(ifu_axi_awburst),
-		.ifu_axi_awlock(ifu_axi_awlock),
-		.ifu_axi_awcache(ifu_axi_awcache),
-		.ifu_axi_awprot(ifu_axi_awprot),
-		.ifu_axi_awqos(ifu_axi_awqos),
-		.ifu_axi_wvalid(ifu_axi_wvalid),
-		.ifu_axi_wdata(ifu_axi_wdata),
-		.ifu_axi_wstrb(ifu_axi_wstrb),
-		.ifu_axi_wlast(ifu_axi_wlast),
-		.ifu_axi_bready(ifu_axi_bready),
-		.ifu_axi_arvalid(ifu_axi_arvalid),
-		.ifu_axi_arready(ifu_axi_arready),
-		.ifu_axi_arid(ifu_axi_arid),
-		.ifu_axi_araddr(ifu_axi_araddr),
-		.ifu_axi_arregion(ifu_axi_arregion),
-		.ifu_axi_arlen(ifu_axi_arlen),
-		.ifu_axi_arsize(ifu_axi_arsize),
-		.ifu_axi_arburst(ifu_axi_arburst),
-		.ifu_axi_arlock(ifu_axi_arlock),
-		.ifu_axi_arcache(ifu_axi_arcache),
-		.ifu_axi_arprot(ifu_axi_arprot),
-		.ifu_axi_arqos(ifu_axi_arqos),
-		.ifu_axi_rvalid(ifu_axi_rvalid),
-		.ifu_axi_rready(ifu_axi_rready),
-		.ifu_axi_rid(ifu_axi_rid),
-		.ifu_axi_rdata(ifu_axi_rdata),
-		.ifu_axi_rresp(ifu_axi_rresp),
-		.ifu_bus_clk_en(ifu_bus_clk_en),
-		.dma_iccm_req(dma_iccm_req),
-		.dma_mem_addr(dma_mem_addr),
-		.dma_mem_sz(dma_mem_sz),
-		.dma_mem_write(dma_mem_write),
-		.dma_mem_wdata(dma_mem_wdata),
-		.dma_mem_tag(dma_mem_tag),
-		.iccm_dma_ecc_error(iccm_dma_ecc_error),
-		.iccm_dma_rvalid(iccm_dma_rvalid),
-		.iccm_dma_rdata(iccm_dma_rdata),
-		.iccm_dma_rtag(iccm_dma_rtag),
-		.iccm_ready(iccm_ready),
-		.ic_rw_addr(ic_rw_addr),
-		.ic_wr_en(ic_wr_en),
-		.ic_rd_en(ic_rd_en),
-		.ic_wr_data(ic_wr_data),
-		.ic_rd_data(ic_rd_data),
-		.ic_debug_rd_data(ic_debug_rd_data),
-		.ictag_debug_rd_data(ictag_debug_rd_data),
-		.ic_debug_wr_data(ic_debug_wr_data),
-		.ifu_ic_debug_rd_data(ifu_ic_debug_rd_data),
-		.ic_eccerr(ic_eccerr),
-		.ic_parerr(ic_parerr),
-		.ic_debug_addr(ic_debug_addr),
-		.ic_debug_rd_en(ic_debug_rd_en),
-		.ic_debug_wr_en(ic_debug_wr_en),
-		.ic_debug_tag_array(ic_debug_tag_array),
-		.ic_debug_way(ic_debug_way),
-		.ic_tag_valid(ic_tag_valid),
-		.ic_rd_hit(ic_rd_hit),
-		.ic_tag_perr(ic_tag_perr),
-		.iccm_rw_addr(iccm_rw_addr),
-		.iccm_wren(iccm_wren),
-		.iccm_rden(iccm_rden),
-		.iccm_wr_data(iccm_wr_data),
-		.iccm_wr_size(iccm_wr_size),
-		.iccm_rd_data(iccm_rd_data),
-		.iccm_rd_data_ecc(iccm_rd_data_ecc),
-		.ifu_fetch_val(ifu_fetch_val),
-		.ic_hit_f(ic_hit_f),
-		.ic_access_fault_f(ic_access_fault_f),
-		.ic_access_fault_type_f(ic_access_fault_type_f),
-		.iccm_rd_ecc_single_err(iccm_rd_ecc_single_err),
-		.iccm_rd_ecc_double_err(iccm_rd_ecc_double_err),
-		.ic_error_start(ic_error_start),
-		.ifu_async_error_start(ifu_async_error_start),
-		.iccm_dma_sb_error(iccm_dma_sb_error),
-		.ic_fetch_val_f(ic_fetch_val_f),
-		.ic_premux_data(ic_premux_data),
-		.ic_sel_premux_data(ic_sel_premux_data),
-		.dec_tlu_ic_diag_pkt(dec_tlu_ic_diag_pkt),
-		.dec_tlu_core_ecc_disable(dec_tlu_core_ecc_disable),
-		.ifu_ic_debug_rd_data_valid(ifu_ic_debug_rd_data_valid),
-		.iccm_buf_correct_ecc(iccm_buf_correct_ecc),
-		.iccm_correction_state(iccm_correction_state),
-		.scan_mode(scan_mode),
-		.ic_data_f(ic_data_f[31:0])
-	);
-endmodule
-module eb1_ifu_aln_ctl (
-	scan_mode,
-	rst_l,
-	clk,
-	active_clk,
-	ifu_async_error_start,
-	iccm_rd_ecc_double_err,
-	ic_access_fault_f,
-	ic_access_fault_type_f,
-	exu_flush_final,
-	dec_i0_decode_d,
-	ifu_fetch_data_f,
-	ifu_fetch_val,
-	ifu_fetch_pc,
-	ifu_i0_valid,
-	ifu_i0_icaf,
-	ifu_i0_icaf_type,
-	ifu_i0_icaf_second,
-	ifu_i0_dbecc,
-	ifu_i0_instr,
-	ifu_i0_pc,
-	ifu_i0_pc4,
-	ifu_fb_consume1,
-	ifu_fb_consume2,
-	ifu_bp_fghr_f,
-	ifu_bp_btb_target_f,
-	ifu_bp_poffset_f,
-	ifu_bp_fa_index_f,
-	ifu_bp_hist0_f,
-	ifu_bp_hist1_f,
-	ifu_bp_pc4_f,
-	ifu_bp_way_f,
-	ifu_bp_valid_f,
-	ifu_bp_ret_f,
-	i0_brp,
-	ifu_i0_bp_index,
-	ifu_i0_bp_fghr,
-	ifu_i0_bp_btag,
-	ifu_i0_fa_index,
-	ifu_pmu_instr_aligned,
-	ifu_i0_cinst
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire scan_mode;
-	input wire rst_l;
-	input wire clk;
-	input wire active_clk;
-	input wire ifu_async_error_start;
-	input wire [1:0] iccm_rd_ecc_double_err;
-	input wire [1:0] ic_access_fault_f;
-	input wire [1:0] ic_access_fault_type_f;
-	input wire exu_flush_final;
-	input wire dec_i0_decode_d;
-	input wire [31:0] ifu_fetch_data_f;
-	input wire [1:0] ifu_fetch_val;
-	input wire [31:1] ifu_fetch_pc;
-	output wire ifu_i0_valid;
-	output wire ifu_i0_icaf;
-	output wire [1:0] ifu_i0_icaf_type;
-	output wire ifu_i0_icaf_second;
-	output wire ifu_i0_dbecc;
-	output wire [31:0] ifu_i0_instr;
-	output wire [31:1] ifu_i0_pc;
-	output wire ifu_i0_pc4;
-	output wire ifu_fb_consume1;
-	output wire ifu_fb_consume2;
-	input wire [pt[2236-:8] - 1:0] ifu_bp_fghr_f;
-	input wire [31:1] ifu_bp_btb_target_f;
-	input wire [11:0] ifu_bp_poffset_f;
-	input wire [(2 * $clog2(pt[2061-:14])) - 1:0] ifu_bp_fa_index_f;
-	input wire [1:0] ifu_bp_hist0_f;
-	input wire [1:0] ifu_bp_hist1_f;
-	input wire [1:0] ifu_bp_pc4_f;
-	input wire [1:0] ifu_bp_way_f;
-	input wire [1:0] ifu_bp_valid_f;
-	input wire [1:0] ifu_bp_ret_f;
-	output reg [50:0] i0_brp;
-	output wire [pt[2172-:9]:pt[2163-:6]] ifu_i0_bp_index;
-	output wire [pt[2236-:8] - 1:0] ifu_i0_bp_fghr;
-	output wire [pt[2139-:9] - 1:0] ifu_i0_bp_btag;
-	output reg [$clog2(pt[2061-:14]) - 1:0] ifu_i0_fa_index;
-	output wire ifu_pmu_instr_aligned;
-	output wire [15:0] ifu_i0_cinst;
-	wire ifvalid;
-	wire shift_f1_f0;
-	wire shift_f2_f0;
-	wire shift_f2_f1;
-	wire fetch_to_f0;
-	wire fetch_to_f1;
-	wire fetch_to_f2;
-	wire [1:0] f2val_in;
-	wire [1:0] f2val;
-	wire [1:0] f1val_in;
-	wire [1:0] f1val;
-	wire [1:0] f0val_in;
-	wire [1:0] f0val;
-	wire [1:0] sf1val;
-	wire [1:0] sf0val;
-	wire [31:0] aligndata;
-	wire first4B;
-	wire first2B;
-	wire [31:0] uncompress0;
-	wire i0_shift;
-	wire shift_2B;
-	wire shift_4B;
-	wire f1_shift_2B;
-	wire f2_valid;
-	wire sf1_valid;
-	wire sf0_valid;
-	wire [31:0] ifirst;
-	wire [1:0] alignval;
-	wire [31:1] firstpc;
-	wire [31:1] secondpc;
-	wire [11:0] f1poffset;
-	wire [11:0] f0poffset;
-	wire [pt[2236-:8] - 1:0] f1fghr;
-	wire [pt[2236-:8] - 1:0] f0fghr;
-	wire [1:0] f1hist1;
-	wire [1:0] f0hist1;
-	wire [1:0] f1hist0;
-	wire [1:0] f0hist0;
-	wire [(2 * $clog2(pt[2061-:14])) - 1:0] f0index;
-	wire [(2 * $clog2(pt[2061-:14])) - 1:0] f1index;
-	wire [(2 * $clog2(pt[2061-:14])) - 1:0] alignindex;
-	wire [1:0] f1ictype;
-	wire [1:0] f0ictype;
-	wire [1:0] f1pc4;
-	wire [1:0] f0pc4;
-	wire [1:0] f1ret;
-	wire [1:0] f0ret;
-	wire [1:0] f1way;
-	wire [1:0] f0way;
-	wire [1:0] f1brend;
-	wire [1:0] f0brend;
-	wire [1:0] alignbrend;
-	wire [1:0] alignpc4;
-	wire [1:0] alignret;
-	wire [1:0] alignway;
-	wire [1:0] alignhist1;
-	wire [1:0] alignhist0;
-	wire [1:1] alignfromf1;
-	reg i0_ends_f1;
-	reg i0_br_start_error;
-	wire [31:1] f1prett;
-	wire [31:1] f0prett;
-	wire [1:0] f1dbecc;
-	wire [1:0] f0dbecc;
-	wire [1:0] f1icaf;
-	wire [1:0] f0icaf;
-	wire [1:0] aligndbecc;
-	wire [1:0] alignicaf;
-	reg i0_brp_pc4;
-	wire [pt[2172-:9]:pt[2163-:6]] firstpc_hash;
-	wire [pt[2172-:9]:pt[2163-:6]] secondpc_hash;
-	wire first_legal;
-	wire [1:0] wrptr;
-	wire [1:0] wrptr_in;
-	wire [1:0] rdptr;
-	wire [1:0] rdptr_in;
-	wire [2:0] qwen;
-	wire [31:0] q2;
-	wire [31:0] q1;
-	wire [31:0] q0;
-	wire q2off_in;
-	wire q2off;
-	wire q1off_in;
-	wire q1off;
-	wire q0off_in;
-	wire q0off;
-	wire f0_shift_2B;
-	wire [31:0] q0eff;
-	wire [31:0] q0final;
-	wire q0ptr;
-	wire [1:0] q0sel;
-	wire [31:0] q1eff;
-	wire [15:0] q1final;
-	wire q1ptr;
-	wire [1:0] q1sel;
-	wire [2:0] qren;
-	wire consume_fb1;
-	wire consume_fb0;
-	wire [1:0] icaf_eff;
-	localparam BRDATA_SIZE = (pt[2130-:5] ? 16 + (($clog2(pt[2061-:14]) * 2) * pt[2120-:5]) : 2);
-	localparam BRDATA_WIDTH = (pt[2130-:5] ? 8 + ($clog2(pt[2061-:14]) * pt[2120-:5]) : 1);
-	wire [BRDATA_SIZE - 1:0] brdata_in;
-	wire [BRDATA_SIZE - 1:0] brdata2;
-	wire [BRDATA_SIZE - 1:0] brdata1;
-	wire [BRDATA_SIZE - 1:0] brdata0;
-	wire [BRDATA_SIZE - 1:0] brdata1eff;
-	wire [BRDATA_SIZE - 1:0] brdata0eff;
-	wire [BRDATA_SIZE - 1:0] brdata1final;
-	wire [BRDATA_SIZE - 1:0] brdata0final;
-	localparam MHI = 1 + (pt[2130-:5] * (43 + pt[2236-:8]));
-	localparam MSIZE = 2 + (pt[2130-:5] * (43 + pt[2236-:8]));
-	wire [MHI:0] misc_data_in;
-	wire [MHI:0] misc2;
-	wire [MHI:0] misc1;
-	wire [MHI:0] misc0;
-	wire [MHI:0] misc1eff;
-	wire [MHI:0] misc0eff;
-	wire [pt[2139-:9] - 1:0] firstbrtag_hash;
-	wire [pt[2139-:9] - 1:0] secondbrtag_hash;
-	wire error_stall_in;
-	wire error_stall;
-	assign error_stall_in = (error_stall | ifu_async_error_start) & ~exu_flush_final;
-	rvdff #(.WIDTH(7)) bundle1ff(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.din({wrptr_in[1:0], rdptr_in[1:0], q2off_in, q1off_in, q0off_in}),
-		.dout({wrptr[1:0], rdptr[1:0], q2off, q1off, q0off})
-	);
-	rvdffie #(
-		.WIDTH(7),
-		.OVERRIDE(1)
-	) bundle2ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.din({error_stall_in, f2val_in[1:0], f1val_in[1:0], f0val_in[1:0]}),
-		.dout({error_stall, f2val[1:0], f1val[1:0], f0val[1:0]})
-	);
-	generate
-		if (pt[2130-:5] == 1) begin
-			rvdffe #(.WIDTH(BRDATA_SIZE)) brdata2ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(clk),
-				.en(qwen[2]),
-				.din(brdata_in[BRDATA_SIZE - 1:0]),
-				.dout(brdata2[BRDATA_SIZE - 1:0])
-			);
-			rvdffe #(.WIDTH(BRDATA_SIZE)) brdata1ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(clk),
-				.en(qwen[1]),
-				.din(brdata_in[BRDATA_SIZE - 1:0]),
-				.dout(brdata1[BRDATA_SIZE - 1:0])
-			);
-			rvdffe #(.WIDTH(BRDATA_SIZE)) brdata0ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(clk),
-				.en(qwen[0]),
-				.din(brdata_in[BRDATA_SIZE - 1:0]),
-				.dout(brdata0[BRDATA_SIZE - 1:0])
-			);
-			rvdffe #(.WIDTH(MSIZE)) misc2ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(clk),
-				.en(qwen[2]),
-				.din(misc_data_in[MHI:0]),
-				.dout(misc2[MHI:0])
-			);
-			rvdffe #(.WIDTH(MSIZE)) misc1ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(clk),
-				.en(qwen[1]),
-				.din(misc_data_in[MHI:0]),
-				.dout(misc1[MHI:0])
-			);
-			rvdffe #(.WIDTH(MSIZE)) misc0ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(clk),
-				.en(qwen[0]),
-				.din(misc_data_in[MHI:0]),
-				.dout(misc0[MHI:0])
-			);
-		end
-		else rvdffie #(.WIDTH((MSIZE * 3) + (BRDATA_SIZE * 3))) miscff(
-			.clk(clk),
-			.rst_l(rst_l),
-			.scan_mode(scan_mode),
-			.din({(qwen[2] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE - 1:0]} : {misc2[MHI:0], brdata2[BRDATA_SIZE - 1:0]}), (qwen[1] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE - 1:0]} : {misc1[MHI:0], brdata1[BRDATA_SIZE - 1:0]}), (qwen[0] ? {misc_data_in[MHI:0], brdata_in[BRDATA_SIZE - 1:0]} : {misc0[MHI:0], brdata0[BRDATA_SIZE - 1:0]})}),
-			.dout({misc2[MHI:0], misc1[MHI:0], misc0[MHI:0], brdata2[BRDATA_SIZE - 1:0], brdata1[BRDATA_SIZE - 1:0], brdata0[BRDATA_SIZE - 1:0]})
-		);
-	endgenerate
-	wire [31:1] q2pc;
-	wire [31:1] q1pc;
-	wire [31:1] q0pc;
-	rvdffe #(.WIDTH(31)) q2pcff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(qwen[2]),
-		.din(ifu_fetch_pc[31:1]),
-		.dout(q2pc[31:1])
-	);
-	rvdffe #(.WIDTH(31)) q1pcff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(qwen[1]),
-		.din(ifu_fetch_pc[31:1]),
-		.dout(q1pc[31:1])
-	);
-	rvdffe #(.WIDTH(31)) q0pcff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(qwen[0]),
-		.din(ifu_fetch_pc[31:1]),
-		.dout(q0pc[31:1])
-	);
-	rvdffe #(.WIDTH(32)) q2ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(qwen[2]),
-		.din(ifu_fetch_data_f[31:0]),
-		.dout(q2[31:0])
-	);
-	rvdffe #(.WIDTH(32)) q1ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(qwen[1]),
-		.din(ifu_fetch_data_f[31:0]),
-		.dout(q1[31:0])
-	);
-	rvdffe #(.WIDTH(32)) q0ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.en(qwen[0]),
-		.din(ifu_fetch_data_f[31:0]),
-		.dout(q0[31:0])
-	);
-	assign qren[2:0] = {rdptr[1:0] == 2'b10, rdptr[1:0] == 2'b01, rdptr[1:0] == 2'b00};
-	assign qwen[2:0] = {(wrptr[1:0] == 2'b10) & ifvalid, (wrptr[1:0] == 2'b01) & ifvalid, (wrptr[1:0] == 2'b00) & ifvalid};
-	assign rdptr_in[1:0] = (((((({2 {(qren[0] & ifu_fb_consume1) & ~exu_flush_final}} & 2'b01) | ({2 {(qren[1] & ifu_fb_consume1) & ~exu_flush_final}} & 2'b10)) | ({2 {(qren[2] & ifu_fb_consume1) & ~exu_flush_final}} & 2'b00)) | ({2 {(qren[0] & ifu_fb_consume2) & ~exu_flush_final}} & 2'b10)) | ({2 {(qren[1] & ifu_fb_consume2) & ~exu_flush_final}} & 2'b00)) | ({2 {(qren[2] & ifu_fb_consume2) & ~exu_flush_final}} & 2'b01)) | ({2 {(~ifu_fb_consume1 & ~ifu_fb_consume2) & ~exu_flush_final}} & rdptr[1:0]);
-	assign wrptr_in[1:0] = ((({2 {qwen[0] & ~exu_flush_final}} & 2'b01) | ({2 {qwen[1] & ~exu_flush_final}} & 2'b10)) | ({2 {qwen[2] & ~exu_flush_final}} & 2'b00)) | ({2 {~ifvalid & ~exu_flush_final}} & wrptr[1:0]);
-	assign q2off_in = (((~qwen[2] & (rdptr[1:0] == 2'd2)) & (q2off | f0_shift_2B)) | ((~qwen[2] & (rdptr[1:0] == 2'd1)) & (q2off | f1_shift_2B))) | ((~qwen[2] & (rdptr[1:0] == 2'd0)) & q2off);
-	assign q1off_in = (((~qwen[1] & (rdptr[1:0] == 2'd1)) & (q1off | f0_shift_2B)) | ((~qwen[1] & (rdptr[1:0] == 2'd0)) & (q1off | f1_shift_2B))) | ((~qwen[1] & (rdptr[1:0] == 2'd2)) & q1off);
-	assign q0off_in = (((~qwen[0] & (rdptr[1:0] == 2'd0)) & (q0off | f0_shift_2B)) | ((~qwen[0] & (rdptr[1:0] == 2'd2)) & (q0off | f1_shift_2B))) | ((~qwen[0] & (rdptr[1:0] == 2'd1)) & q0off);
-	assign q0ptr = (((rdptr[1:0] == 2'b00) & q0off) | ((rdptr[1:0] == 2'b01) & q1off)) | ((rdptr[1:0] == 2'b10) & q2off);
-	assign q1ptr = (((rdptr[1:0] == 2'b00) & q1off) | ((rdptr[1:0] == 2'b01) & q2off)) | ((rdptr[1:0] == 2'b10) & q0off);
-	assign q0sel[1:0] = {q0ptr, ~q0ptr};
-	assign q1sel[1:0] = {q1ptr, ~q1ptr};
-	generate
-		if (pt[2130-:5] == 1) begin
-			assign misc_data_in[MHI:0] = {ic_access_fault_type_f[1:0], ifu_bp_btb_target_f[31:1], ifu_bp_poffset_f[11:0], ifu_bp_fghr_f[pt[2236-:8] - 1:0]};
-		end
-		else assign misc_data_in[MHI:0] = {ic_access_fault_type_f[1:0]};
-	endgenerate
-	assign {misc1eff[MHI:0], misc0eff[MHI:0]} = (({MSIZE * 2 {qren[0]}} & {misc1[MHI:0], misc0[MHI:0]}) | ({MSIZE * 2 {qren[1]}} & {misc2[MHI:0], misc1[MHI:0]})) | ({MSIZE * 2 {qren[2]}} & {misc0[MHI:0], misc2[MHI:0]});
-	generate
-		if (pt[2130-:5] == 1) begin
-			assign {f1ictype[1:0], f1prett[31:1], f1poffset[11:0], f1fghr[pt[2236-:8] - 1:0]} = misc1eff[MHI:0];
-			assign {f0ictype[1:0], f0prett[31:1], f0poffset[11:0], f0fghr[pt[2236-:8] - 1:0]} = misc0eff[MHI:0];
-			if (pt[2120-:5]) begin
-				assign brdata_in[BRDATA_SIZE - 1:0] = {ifu_bp_fa_index_f[$clog2(pt[2061-:14])+:$clog2(pt[2061-:14])], iccm_rd_ecc_double_err[1], ic_access_fault_f[1], ifu_bp_hist1_f[1], ifu_bp_hist0_f[1], ifu_bp_pc4_f[1], ifu_bp_way_f[1], ifu_bp_valid_f[1], ifu_bp_ret_f[1], ifu_bp_fa_index_f[0+:$clog2(pt[2061-:14])], iccm_rd_ecc_double_err[0], ic_access_fault_f[0], ifu_bp_hist1_f[0], ifu_bp_hist0_f[0], ifu_bp_pc4_f[0], ifu_bp_way_f[0], ifu_bp_valid_f[0], ifu_bp_ret_f[0]};
-				assign {f0index[$clog2(pt[2061-:14])+:$clog2(pt[2061-:14])], f0dbecc[1], f0icaf[1], f0hist1[1], f0hist0[1], f0pc4[1], f0way[1], f0brend[1], f0ret[1], f0index[0+:$clog2(pt[2061-:14])], f0dbecc[0], f0icaf[0], f0hist1[0], f0hist0[0], f0pc4[0], f0way[0], f0brend[0], f0ret[0]} = brdata0final[BRDATA_SIZE - 1:0];
-				assign {f1index[$clog2(pt[2061-:14])+:$clog2(pt[2061-:14])], f1dbecc[1], f1icaf[1], f1hist1[1], f1hist0[1], f1pc4[1], f1way[1], f1brend[1], f1ret[1], f1index[0+:$clog2(pt[2061-:14])], f1dbecc[0], f1icaf[0], f1hist1[0], f1hist0[0], f1pc4[0], f1way[0], f1brend[0], f1ret[0]} = brdata1final[BRDATA_SIZE - 1:0];
-			end
-			else begin
-				assign brdata_in[BRDATA_SIZE - 1:0] = {iccm_rd_ecc_double_err[1], ic_access_fault_f[1], ifu_bp_hist1_f[1], ifu_bp_hist0_f[1], ifu_bp_pc4_f[1], ifu_bp_way_f[1], ifu_bp_valid_f[1], ifu_bp_ret_f[1], iccm_rd_ecc_double_err[0], ic_access_fault_f[0], ifu_bp_hist1_f[0], ifu_bp_hist0_f[0], ifu_bp_pc4_f[0], ifu_bp_way_f[0], ifu_bp_valid_f[0], ifu_bp_ret_f[0]};
-				assign {f0dbecc[1], f0icaf[1], f0hist1[1], f0hist0[1], f0pc4[1], f0way[1], f0brend[1], f0ret[1], f0dbecc[0], f0icaf[0], f0hist1[0], f0hist0[0], f0pc4[0], f0way[0], f0brend[0], f0ret[0]} = brdata0final[BRDATA_SIZE - 1:0];
-				assign {f1dbecc[1], f1icaf[1], f1hist1[1], f1hist0[1], f1pc4[1], f1way[1], f1brend[1], f1ret[1], f1dbecc[0], f1icaf[0], f1hist1[0], f1hist0[0], f1pc4[0], f1way[0], f1brend[0], f1ret[0]} = brdata1final[BRDATA_SIZE - 1:0];
-			end
-			assign {brdata1eff[BRDATA_SIZE - 1:0], brdata0eff[BRDATA_SIZE - 1:0]} = (({BRDATA_SIZE * 2 {qren[0]}} & {brdata1[BRDATA_SIZE - 1:0], brdata0[BRDATA_SIZE - 1:0]}) | ({BRDATA_SIZE * 2 {qren[1]}} & {brdata2[BRDATA_SIZE - 1:0], brdata1[BRDATA_SIZE - 1:0]})) | ({BRDATA_SIZE * 2 {qren[2]}} & {brdata0[BRDATA_SIZE - 1:0], brdata2[BRDATA_SIZE - 1:0]});
-			assign brdata0final[BRDATA_SIZE - 1:0] = ({BRDATA_SIZE {q0sel[0]}} & {brdata0eff[(2 * BRDATA_WIDTH) - 1:0]}) | ({BRDATA_SIZE {q0sel[1]}} & {{BRDATA_WIDTH {1'b0}}, brdata0eff[BRDATA_SIZE - 1:BRDATA_WIDTH]});
-			assign brdata1final[BRDATA_SIZE - 1:0] = ({BRDATA_SIZE {q1sel[0]}} & {brdata1eff[(2 * BRDATA_WIDTH) - 1:0]}) | ({BRDATA_SIZE {q1sel[1]}} & {{BRDATA_WIDTH {1'b0}}, brdata1eff[BRDATA_SIZE - 1:BRDATA_WIDTH]});
-		end
-		else begin
-			assign {f1ictype[1:0]} = misc1eff[MHI:0];
-			assign {f0ictype[1:0]} = misc0eff[MHI:0];
-			assign brdata_in[BRDATA_SIZE - 1:0] = {iccm_rd_ecc_double_err[1], ic_access_fault_f[1], iccm_rd_ecc_double_err[0], ic_access_fault_f[0]};
-			assign {f0dbecc[1], f0icaf[1], f0dbecc[0], f0icaf[0]} = brdata0final[BRDATA_SIZE - 1:0];
-			assign {f1dbecc[1], f1icaf[1], f1dbecc[0], f1icaf[0]} = brdata1final[BRDATA_SIZE - 1:0];
-			assign {brdata1eff[BRDATA_SIZE - 1:0], brdata0eff[BRDATA_SIZE - 1:0]} = (({BRDATA_SIZE * 2 {qren[0]}} & {brdata1[BRDATA_SIZE - 1:0], brdata0[BRDATA_SIZE - 1:0]}) | ({BRDATA_SIZE * 2 {qren[1]}} & {brdata2[BRDATA_SIZE - 1:0], brdata1[BRDATA_SIZE - 1:0]})) | ({BRDATA_SIZE * 2 {qren[2]}} & {brdata0[BRDATA_SIZE - 1:0], brdata2[BRDATA_SIZE - 1:0]});
-			assign brdata0final[BRDATA_SIZE - 1:0] = ({BRDATA_SIZE {q0sel[0]}} & {brdata0eff[(2 * BRDATA_WIDTH) - 1:0]}) | ({BRDATA_SIZE {q0sel[1]}} & {{BRDATA_WIDTH {1'b0}}, brdata0eff[BRDATA_SIZE - 1:BRDATA_WIDTH]});
-			assign brdata1final[BRDATA_SIZE - 1:0] = ({BRDATA_SIZE {q1sel[0]}} & {brdata1eff[(2 * BRDATA_WIDTH) - 1:0]}) | ({BRDATA_SIZE {q1sel[1]}} & {{BRDATA_WIDTH {1'b0}}, brdata1eff[BRDATA_SIZE - 1:BRDATA_WIDTH]});
-		end
-	endgenerate
-	assign f2_valid = f2val[0];
-	assign sf1_valid = sf1val[0];
-	assign sf0_valid = sf0val[0];
-	assign consume_fb0 = ~sf0val[0] & f0val[0];
-	assign consume_fb1 = ~sf1val[0] & f1val[0];
-	assign ifu_fb_consume1 = (consume_fb0 & ~consume_fb1) & ~exu_flush_final;
-	assign ifu_fb_consume2 = (consume_fb0 & consume_fb1) & ~exu_flush_final;
-	assign ifvalid = ifu_fetch_val[0];
-	assign shift_f1_f0 = ~sf0_valid & sf1_valid;
-	assign shift_f2_f0 = (~sf0_valid & ~sf1_valid) & f2_valid;
-	assign shift_f2_f1 = (~sf0_valid & sf1_valid) & f2_valid;
-	assign fetch_to_f0 = ((~sf0_valid & ~sf1_valid) & ~f2_valid) & ifvalid;
-	assign fetch_to_f1 = ((((~sf0_valid & ~sf1_valid) & f2_valid) & ifvalid) | (((~sf0_valid & sf1_valid) & ~f2_valid) & ifvalid)) | (((sf0_valid & ~sf1_valid) & ~f2_valid) & ifvalid);
-	assign fetch_to_f2 = (((~sf0_valid & sf1_valid) & f2_valid) & ifvalid) | (((sf0_valid & sf1_valid) & ~f2_valid) & ifvalid);
-	assign f2val_in[1:0] = ({2 {fetch_to_f2 & ~exu_flush_final}} & ifu_fetch_val[1:0]) | ({2 {((~fetch_to_f2 & ~shift_f2_f1) & ~shift_f2_f0) & ~exu_flush_final}} & f2val[1:0]);
-	assign sf1val[1:0] = ({2 {f1_shift_2B}} & {1'b0, f1val[1]}) | ({2 {~f1_shift_2B}} & f1val[1:0]);
-	assign f1val_in[1:0] = (({2 {fetch_to_f1 & ~exu_flush_final}} & ifu_fetch_val[1:0]) | ({2 {shift_f2_f1 & ~exu_flush_final}} & f2val[1:0])) | ({2 {((~fetch_to_f1 & ~shift_f2_f1) & ~shift_f1_f0) & ~exu_flush_final}} & sf1val[1:0]);
-	assign sf0val[1:0] = ({2 {shift_2B}} & {1'b0, f0val[1]}) | ({2 {~shift_2B & ~shift_4B}} & f0val[1:0]);
-	assign f0val_in[1:0] = ((({2 {fetch_to_f0 & ~exu_flush_final}} & ifu_fetch_val[1:0]) | ({2 {shift_f2_f0 & ~exu_flush_final}} & f2val[1:0])) | ({2 {shift_f1_f0 & ~exu_flush_final}} & sf1val[1:0])) | ({2 {((~fetch_to_f0 & ~shift_f2_f0) & ~shift_f1_f0) & ~exu_flush_final}} & sf0val[1:0]);
-	assign {q1eff[31:0], q0eff[31:0]} = (({64 {qren[0]}} & {q1[31:0], q0[31:0]}) | ({64 {qren[1]}} & {q2[31:0], q1[31:0]})) | ({64 {qren[2]}} & {q0[31:0], q2[31:0]});
-	assign q0final[31:0] = ({32 {q0sel[0]}} & {q0eff[31:0]}) | ({32 {q0sel[1]}} & {16'b0000000000000000, q0eff[31:16]});
-	assign q1final[15:0] = ({16 {q1sel[0]}} & q1eff[15:0]) | ({16 {q1sel[1]}} & q1eff[31:16]);
-	wire [31:1] q0pceff;
-	wire [31:1] q0pcfinal;
-	wire [31:1] q1pceff;
-	assign {q1pceff[31:1], q0pceff[31:1]} = (({62 {qren[0]}} & {q1pc[31:1], q0pc[31:1]}) | ({62 {qren[1]}} & {q2pc[31:1], q1pc[31:1]})) | ({62 {qren[2]}} & {q0pc[31:1], q2pc[31:1]});
-	assign q0pcfinal[31:1] = ({31 {q0sel[0]}} & q0pceff[31:1]) | ({31 {q0sel[1]}} & (q0pceff[31:1] + 31'd1));
-	assign aligndata[31:0] = ({32 {f0val[1]}} & {q0final[31:0]}) | ({32 {~f0val[1] & f0val[0]}} & {q1final[15:0], q0final[15:0]});
-	assign alignval[1:0] = ({2 {f0val[1]}} & 2'b11) | ({2 {~f0val[1] & f0val[0]}} & {f1val[0], 1'b1});
-	assign alignicaf[1:0] = ({2 {f0val[1]}} & f0icaf[1:0]) | ({2 {~f0val[1] & f0val[0]}} & {f1icaf[0], f0icaf[0]});
-	assign aligndbecc[1:0] = ({2 {f0val[1]}} & f0dbecc[1:0]) | ({2 {~f0val[1] & f0val[0]}} & {f1dbecc[0], f0dbecc[0]});
-	generate
-		if (pt[2130-:5] == 1) begin
-			assign alignbrend[1:0] = ({2 {f0val[1]}} & f0brend[1:0]) | ({2 {~f0val[1] & f0val[0]}} & {f1brend[0], f0brend[0]});
-			assign alignpc4[1:0] = ({2 {f0val[1]}} & f0pc4[1:0]) | ({2 {~f0val[1] & f0val[0]}} & {f1pc4[0], f0pc4[0]});
-			if (pt[2120-:5]) begin
-				assign alignindex[0+:$clog2(pt[2061-:14])] = f0index[0+:$clog2(pt[2061-:14])];
-				assign alignindex[$clog2(pt[2061-:14])+:$clog2(pt[2061-:14])] = (f0val[1] ? f0index[$clog2(pt[2061-:14])+:$clog2(pt[2061-:14])] : f1index[0+:$clog2(pt[2061-:14])]);
-			end
-			assign alignret[1:0] = ({2 {f0val[1]}} & f0ret[1:0]) | ({2 {~f0val[1] & f0val[0]}} & {f1ret[0], f0ret[0]});
-			assign alignway[1:0] = ({2 {f0val[1]}} & f0way[1:0]) | ({2 {~f0val[1] & f0val[0]}} & {f1way[0], f0way[0]});
-			assign alignhist1[1:0] = ({2 {f0val[1]}} & f0hist1[1:0]) | ({2 {~f0val[1] & f0val[0]}} & {f1hist1[0], f0hist1[0]});
-			assign alignhist0[1:0] = ({2 {f0val[1]}} & f0hist0[1:0]) | ({2 {~f0val[1] & f0val[0]}} & {f1hist0[0], f0hist0[0]});
-			assign secondpc[31:1] = ({31 {f0val[1]}} & (q0pceff[31:1] + 31'd1)) | ({31 {~f0val[1] & f0val[0]}} & q1pceff[31:1]);
-			assign firstpc[31:1] = q0pcfinal[31:1];
-		end
-	endgenerate
-	assign alignfromf1[1] = ~f0val[1] & f0val[0];
-	assign ifu_i0_pc[31:1] = q0pcfinal[31:1];
-	assign ifu_i0_pc4 = first4B;
-	assign ifu_i0_cinst[15:0] = aligndata[15:0];
-	assign first4B = aligndata[1:0] == 2'b11;
-	assign first2B = ~first4B;
-	assign ifu_i0_valid = (first4B & alignval[1]) | (first2B & alignval[0]);
-	assign ifu_i0_icaf = (first4B & |alignicaf[1:0]) | (first2B & alignicaf[0]);
-	assign ifu_i0_icaf_type[1:0] = ((((first4B & ~f0val[1]) & f0val[0]) & ~alignicaf[0]) & ~aligndbecc[0] ? f1ictype[1:0] : f0ictype[1:0]);
-	assign icaf_eff[1:0] = alignicaf[1:0] | aligndbecc[1:0];
-	assign ifu_i0_icaf_second = (first4B & ~icaf_eff[0]) & icaf_eff[1];
-	assign ifu_i0_dbecc = (first4B & |aligndbecc[1:0]) | (first2B & aligndbecc[0]);
-	assign ifirst[31:0] = aligndata[31:0];
-	assign ifu_i0_instr[31:0] = ({32 {first4B & alignval[1]}} & ifirst[31:0]) | ({32 {first2B & alignval[0]}} & uncompress0[31:0]);
-	generate
-		if (pt[2130-:5] == 1) begin
-			eb1_btb_addr_hash #(.pt(pt)) firsthash(
-				.pc(firstpc[pt[2079-:9]:pt[2106-:9]]),
-				.hash(firstpc_hash[pt[2172-:9]:pt[2163-:6]])
-			);
-			eb1_btb_addr_hash #(.pt(pt)) secondhash(
-				.pc(secondpc[pt[2079-:9]:pt[2106-:9]]),
-				.hash(secondpc_hash[pt[2172-:9]:pt[2163-:6]])
-			);
-			if (pt[2120-:5]) begin
-				assign firstbrtag_hash = firstpc;
-				assign secondbrtag_hash = secondpc;
-			end
-			else if (pt[2144-:5]) begin : btbfold
-				eb1_btb_tag_hash_fold #(.pt(pt)) first_brhash(
-					.pc(firstpc[(pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]:pt[2172-:9] + 1]),
-					.hash(firstbrtag_hash[pt[2139-:9] - 1:0])
-				);
-				eb1_btb_tag_hash_fold #(.pt(pt)) second_brhash(
-					.pc(secondpc[(pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]:pt[2172-:9] + 1]),
-					.hash(secondbrtag_hash[pt[2139-:9] - 1:0])
-				);
-			end
-			else begin
-				eb1_btb_tag_hash #(.pt(pt)) first_brhash(
-					.pc(firstpc[((pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]) + pt[2139-:9]:pt[2172-:9] + 1]),
-					.hash(firstbrtag_hash[pt[2139-:9] - 1:0])
-				);
-				eb1_btb_tag_hash #(.pt(pt)) second_brhash(
-					.pc(secondpc[((pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]) + pt[2139-:9]:pt[2172-:9] + 1]),
-					.hash(secondbrtag_hash[pt[2139-:9] - 1:0])
-				);
-			end
-			always @(*) begin
-				i0_brp = {51 {1'sb0}};
-				i0_br_start_error = (first4B & alignval[1]) & alignbrend[0];
-				i0_brp[50] = ((first2B & alignbrend[0]) | (first4B & alignbrend[1])) | i0_br_start_error;
-				i0_brp_pc4 = (first2B & alignpc4[0]) | (first4B & alignpc4[1]);
-				i0_brp[0] = (first2B & alignret[0]) | (first4B & alignret[1]);
-				i0_brp[1] = (first2B | alignbrend[0] ? alignway[0] : alignway[1]);
-				i0_brp[37] = (first2B & alignhist1[0]) | (first4B & alignhist1[1]);
-				i0_brp[36] = (first2B & alignhist0[0]) | (first4B & alignhist0[1]);
-				i0_ends_f1 = first4B & alignfromf1[1];
-				i0_brp[49:38] = (i0_ends_f1 ? f1poffset[11:0] : f0poffset[11:0]);
-				i0_brp[32:2] = (i0_ends_f1 ? f1prett[31:1] : f0prett[31:1]);
-				i0_brp[34] = i0_br_start_error;
-				i0_brp[33] = (first2B | alignbrend[0] ? firstpc[1] : secondpc[1]);
-				i0_brp[35] = ((i0_brp[50] & i0_brp_pc4) & first2B) | ((i0_brp[50] & ~i0_brp_pc4) & first4B);
-				if (pt[2120-:5])
-					ifu_i0_fa_index = (first2B | alignbrend[0] ? alignindex[0+:$clog2(pt[2061-:14])] : alignindex[$clog2(pt[2061-:14])+:$clog2(pt[2061-:14])]);
-				else
-					ifu_i0_fa_index = {$clog2(pt[2061-:14]) {1'sb0}};
-			end
-			assign ifu_i0_bp_index[pt[2172-:9]:pt[2163-:6]] = (first2B | alignbrend[0] ? firstpc_hash[pt[2172-:9]:pt[2163-:6]] : secondpc_hash[pt[2172-:9]:pt[2163-:6]]);
-			assign ifu_i0_bp_fghr[pt[2236-:8] - 1:0] = (i0_ends_f1 ? f1fghr[pt[2236-:8] - 1:0] : f0fghr[pt[2236-:8] - 1:0]);
-			assign ifu_i0_bp_btag[pt[2139-:9] - 1:0] = (first2B | alignbrend[0] ? firstbrtag_hash[pt[2139-:9] - 1:0] : secondbrtag_hash[pt[2139-:9] - 1:0]);
-		end
-		else begin
-			wire [51:1] sv2v_tmp_B43E9;
-			assign sv2v_tmp_B43E9 = {51 {1'sb0}};
-			always @(*) i0_brp = sv2v_tmp_B43E9;
-			assign ifu_i0_bp_index = {(pt[2172-:9] >= pt[2163-:6] ? (pt[2172-:9] - pt[2163-:6]) + 1 : (pt[2163-:6] - pt[2172-:9]) + 1) {1'sb0}};
-			assign ifu_i0_bp_fghr = {pt[2236-:8] {1'sb0}};
-			assign ifu_i0_bp_btag = {pt[2139-:9] {1'sb0}};
-		end
-	endgenerate
-	eb1_ifu_compress_ctl #(.pt(pt)) compress0(
-		.din((first2B ? aligndata[15:0] : {16 {1'sb0}})),
-		.dout(uncompress0[31:0])
-	);
-	assign i0_shift = dec_i0_decode_d & ~error_stall;
-	assign ifu_pmu_instr_aligned = i0_shift;
-	assign shift_2B = i0_shift & first2B;
-	assign shift_4B = i0_shift & first4B;
-	assign f0_shift_2B = (shift_2B & f0val[0]) | ((shift_4B & f0val[0]) & ~f0val[1]);
-	assign f1_shift_2B = (f0val[0] & ~f0val[1]) & shift_4B;
-endmodule
-module eb1_ifu_bp_ctl (
-	clk,
-	rst_l,
-	ic_hit_f,
-	ifc_fetch_addr_f,
-	ifc_fetch_req_f,
-	dec_tlu_br0_r_pkt,
-	exu_i0_br_fghr_r,
-	exu_i0_br_index_r,
-	dec_fa_error_index,
-	dec_tlu_flush_lower_wb,
-	dec_tlu_flush_leak_one_wb,
-	dec_tlu_bpred_disable,
-	exu_mp_pkt,
-	exu_mp_eghr,
-	exu_mp_fghr,
-	exu_mp_index,
-	exu_mp_btag,
-	exu_flush_final,
-	ifu_bp_hit_taken_f,
-	ifu_bp_btb_target_f,
-	ifu_bp_inst_mask_f,
-	ifu_bp_fghr_f,
-	ifu_bp_way_f,
-	ifu_bp_ret_f,
-	ifu_bp_hist1_f,
-	ifu_bp_hist0_f,
-	ifu_bp_pc4_f,
-	ifu_bp_valid_f,
-	ifu_bp_poffset_f,
-	ifu_bp_fa_index_f,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire rst_l;
-	input wire ic_hit_f;
-	input wire [31:1] ifc_fetch_addr_f;
-	input wire ifc_fetch_req_f;
-	input wire [6:0] dec_tlu_br0_r_pkt;
-	input wire [pt[2236-:8] - 1:0] exu_i0_br_fghr_r;
-	input wire [pt[2172-:9]:pt[2163-:6]] exu_i0_br_index_r;
-	input wire [$clog2(pt[2061-:14]) - 1:0] dec_fa_error_index;
-	input wire dec_tlu_flush_lower_wb;
-	input wire dec_tlu_flush_leak_one_wb;
-	input wire dec_tlu_bpred_disable;
-	input wire [55:0] exu_mp_pkt;
-	input wire [pt[2236-:8] - 1:0] exu_mp_eghr;
-	input wire [pt[2236-:8] - 1:0] exu_mp_fghr;
-	input wire [pt[2172-:9]:pt[2163-:6]] exu_mp_index;
-	input wire [pt[2139-:9] - 1:0] exu_mp_btag;
-	input wire exu_flush_final;
-	output wire ifu_bp_hit_taken_f;
-	output wire [31:1] ifu_bp_btb_target_f;
-	output wire ifu_bp_inst_mask_f;
-	output wire [pt[2236-:8] - 1:0] ifu_bp_fghr_f;
-	output wire [1:0] ifu_bp_way_f;
-	output wire [1:0] ifu_bp_ret_f;
-	output wire [1:0] ifu_bp_hist1_f;
-	output wire [1:0] ifu_bp_hist0_f;
-	output wire [1:0] ifu_bp_pc4_f;
-	output wire [1:0] ifu_bp_valid_f;
-	output wire [11:0] ifu_bp_poffset_f;
-	output wire [(2 * $clog2(pt[2061-:14])) - 1:0] ifu_bp_fa_index_f;
-	input wire scan_mode;
-	localparam BTB_DWIDTH = (pt[2047-:9] + pt[2139-:9]) + 5;
-	function automatic signed [31:0] sv2v_cast_32_signed;
-		input reg signed [31:0] inp;
-		sv2v_cast_32_signed = inp;
-	endfunction
-	localparam BTB_DWIDTH_TOP = (sv2v_cast_32_signed(pt[2047-:9]) + sv2v_cast_32_signed(pt[2139-:9])) + 4;
-	localparam BTB_FA_INDEX = $clog2(pt[2061-:14]) - 1;
-	localparam FA_CMP_LOWER = $clog2(pt[1095-:11]);
-	localparam FA_TAG_END_UPPER = ((5 + sv2v_cast_32_signed(pt[2047-:9])) + FA_CMP_LOWER) - 1;
-	localparam FA_TAG_START_LOWER = (3 + sv2v_cast_32_signed(pt[2047-:9])) + FA_CMP_LOWER;
-	localparam FA_TAG_END_LOWER = 5 + sv2v_cast_32_signed(pt[2047-:9]);
-	localparam TAG_START = BTB_DWIDTH - 1;
-	localparam PC4 = 4;
-	localparam BOFF = 3;
-	localparam CALL = 2;
-	localparam RET = 1;
-	localparam BV = 0;
-	localparam LRU_SIZE = pt[2157-:13];
-	localparam NUM_BHT_LOOP = (pt[2256-:15] > 16 ? 16 : pt[2256-:15]);
-	localparam NUM_BHT_LOOP_INNER_HI = (pt[2256-:15] > 16 ? pt[2262-:6] + 3 : pt[2270-:8]);
-	localparam NUM_BHT_LOOP_OUTER_LO = (pt[2256-:15] > 16 ? pt[2262-:6] + 4 : pt[2262-:6]);
-	localparam BHT_NO_ADDR_MATCH = pt[2256-:15] <= 16;
-	wire exu_mp_valid_write;
-	wire exu_mp_ataken;
-	wire exu_mp_valid;
-	wire exu_mp_boffset;
-	wire exu_mp_pc4;
-	wire exu_mp_call;
-	wire exu_mp_ret;
-	wire exu_mp_ja;
-	wire [1:0] exu_mp_hist;
-	wire [11:0] exu_mp_tgt;
-	wire [pt[2172-:9]:pt[2163-:6]] exu_mp_addr;
-	wire dec_tlu_br0_v_wb;
-	wire [1:0] dec_tlu_br0_hist_wb;
-	wire [pt[2172-:9]:pt[2163-:6]] dec_tlu_br0_addr_wb;
-	wire dec_tlu_br0_error_wb;
-	wire dec_tlu_br0_start_error_wb;
-	wire [pt[2236-:8] - 1:0] exu_i0_br_fghr_wb;
-	wire use_mp_way;
-	wire use_mp_way_p1;
-	wire [(pt[31-:8] * 32) - 1:0] rets_out;
-	wire [(pt[31-:8] * 32) - 1:0] rets_in;
-	wire [pt[31-:8] - 1:0] rsenable;
-	wire [11:0] btb_rd_tgt_f;
-	wire btb_rd_pc4_f;
-	wire btb_rd_call_f;
-	wire btb_rd_ret_f;
-	wire [1:1] bp_total_branch_offset_f;
-	wire [31:1] bp_btb_target_adder_f;
-	wire [31:1] bp_rs_call_target_f;
-	wire rs_push;
-	wire rs_pop;
-	wire rs_hold;
-	wire [pt[2172-:9]:pt[2163-:6]] btb_rd_addr_p1_f;
-	wire [pt[2172-:9]:pt[2163-:6]] btb_wr_addr;
-	wire [pt[2172-:9]:pt[2163-:6]] btb_rd_addr_f;
-	wire [pt[2139-:9] - 1:0] btb_wr_tag;
-	wire [pt[2139-:9] - 1:0] fetch_rd_tag_f;
-	wire [pt[2139-:9] - 1:0] fetch_rd_tag_p1_f;
-	wire [BTB_DWIDTH - 1:0] btb_wr_data;
-	wire btb_wr_en_way0;
-	wire btb_wr_en_way1;
-	wire dec_tlu_error_wb;
-	wire btb_valid;
-	wire dec_tlu_br0_middle_wb;
-	wire [pt[2172-:9]:pt[2163-:6]] btb_error_addr_wb;
-	wire branch_error_collision_f;
-	wire fetch_mp_collision_f;
-	wire branch_error_collision_p1_f;
-	wire fetch_mp_collision_p1_f;
-	wire branch_error_bank_conflict_f;
-	wire [pt[2236-:8] - 1:0] merged_ghr;
-	wire [pt[2236-:8] - 1:0] fghr_ns;
-	wire [pt[2236-:8] - 1:0] fghr;
-	wire [1:0] num_valids;
-	wire [LRU_SIZE - 1:0] btb_lru_b0_f;
-	wire [LRU_SIZE - 1:0] btb_lru_b0_hold;
-	wire [LRU_SIZE - 1:0] btb_lru_b0_ns;
-	wire [LRU_SIZE - 1:0] fetch_wrindex_dec;
-	wire [LRU_SIZE - 1:0] fetch_wrindex_p1_dec;
-	wire [LRU_SIZE - 1:0] fetch_wrlru_b0;
-	wire [LRU_SIZE - 1:0] fetch_wrlru_p1_b0;
-	wire [LRU_SIZE - 1:0] mp_wrindex_dec;
-	wire [LRU_SIZE - 1:0] mp_wrlru_b0;
-	wire btb_lru_rd_f;
-	wire btb_lru_rd_p1_f;
-	wire lru_update_valid_f;
-	wire tag_match_way0_f;
-	wire tag_match_way1_f;
-	wire [1:0] way_raw;
-	wire [1:0] bht_dir_f;
-	wire [1:0] btb_sel_f;
-	wire [1:0] wayhit_f;
-	wire [1:0] vwayhit_f;
-	wire [1:0] wayhit_p1_f;
-	wire [1:0] bht_valid_f;
-	wire [1:0] bht_force_taken_f;
-	wire leak_one_f;
-	wire leak_one_f_d1;
-	wire [(LRU_SIZE * BTB_DWIDTH) - 1:0] btb_bank0_rd_data_way0_out;
-	wire [(LRU_SIZE * BTB_DWIDTH) - 1:0] btb_bank0_rd_data_way1_out;
-	reg [BTB_DWIDTH - 1:0] btb_bank0_rd_data_way0_f;
-	reg [BTB_DWIDTH - 1:0] btb_bank0_rd_data_way1_f;
-	reg [BTB_DWIDTH - 1:0] btb_bank0_rd_data_way0_p1_f;
-	reg [BTB_DWIDTH - 1:0] btb_bank0_rd_data_way1_p1_f;
-	reg [BTB_DWIDTH - 1:0] btb_vbank0_rd_data_f;
-	reg [BTB_DWIDTH - 1:0] btb_vbank1_rd_data_f;
-	wire final_h;
-	wire btb_fg_crossing_f;
-	wire middle_of_bank;
-	wire [1:0] bht_vbank0_rd_data_f;
-	wire [1:0] bht_vbank1_rd_data_f;
-	wire branch_error_bank_conflict_p1_f;
-	wire tag_match_way0_p1_f;
-	wire tag_match_way1_p1_f;
-	wire [1:0] btb_vlru_rd_f;
-	wire [1:0] fetch_start_f;
-	wire [1:0] tag_match_vway1_expanded_f;
-	wire [1:0] tag_match_way0_expanded_p1_f;
-	wire [1:0] tag_match_way1_expanded_p1_f;
-	wire [31:2] fetch_addr_p1_f;
-	wire exu_mp_way;
-	wire exu_mp_way_f;
-	wire dec_tlu_br0_way_wb;
-	wire dec_tlu_way_wb;
-	wire [BTB_DWIDTH - 1:0] btb_bank0e_rd_data_f;
-	wire [BTB_DWIDTH - 1:0] btb_bank0e_rd_data_p1_f;
-	wire [BTB_DWIDTH - 1:0] btb_bank0o_rd_data_f;
-	wire [1:0] tag_match_way0_expanded_f;
-	wire [1:0] tag_match_way1_expanded_f;
-	reg [1:0] bht_bank0_rd_data_f;
-	reg [1:0] bht_bank1_rd_data_f;
-	reg [1:0] bht_bank0_rd_data_p1_f;
-	genvar j;
-	genvar i;
-	assign exu_mp_valid = exu_mp_pkt[55] & ~leak_one_f;
-	assign exu_mp_boffset = exu_mp_pkt[53];
-	assign exu_mp_pc4 = exu_mp_pkt[52];
-	assign exu_mp_call = exu_mp_pkt[34];
-	assign exu_mp_ret = exu_mp_pkt[31];
-	assign exu_mp_ja = exu_mp_pkt[33];
-	assign exu_mp_way = exu_mp_pkt[32];
-	assign exu_mp_hist[1:0] = exu_mp_pkt[51:50];
-	assign exu_mp_tgt[11:0] = exu_mp_pkt[49:38];
-	assign exu_mp_addr[pt[2172-:9]:pt[2163-:6]] = exu_mp_index[pt[2172-:9]:pt[2163-:6]];
-	assign exu_mp_ataken = exu_mp_pkt[54];
-	assign dec_tlu_br0_v_wb = dec_tlu_br0_r_pkt[6];
-	assign dec_tlu_br0_hist_wb[1:0] = dec_tlu_br0_r_pkt[5:4];
-	assign dec_tlu_br0_addr_wb[pt[2172-:9]:pt[2163-:6]] = exu_i0_br_index_r[pt[2172-:9]:pt[2163-:6]];
-	assign dec_tlu_br0_error_wb = dec_tlu_br0_r_pkt[3];
-	assign dec_tlu_br0_middle_wb = dec_tlu_br0_r_pkt[0];
-	assign dec_tlu_br0_way_wb = dec_tlu_br0_r_pkt[1];
-	assign dec_tlu_br0_start_error_wb = dec_tlu_br0_r_pkt[2];
-	assign exu_i0_br_fghr_wb[pt[2236-:8] - 1:0] = exu_i0_br_fghr_r[pt[2236-:8] - 1:0];
-	eb1_btb_addr_hash #(.pt(pt)) f1hash(
-		.pc(ifc_fetch_addr_f[pt[2079-:9]:pt[2106-:9]]),
-		.hash(btb_rd_addr_f[pt[2172-:9]:pt[2163-:6]])
-	);
-	assign fetch_addr_p1_f[31:2] = ifc_fetch_addr_f[31:2] + 30'b000000000000000000000000000001;
-	eb1_btb_addr_hash #(.pt(pt)) f1hash_p1(
-		.pc(fetch_addr_p1_f[pt[2079-:9]:pt[2106-:9]]),
-		.hash(btb_rd_addr_p1_f[pt[2172-:9]:pt[2163-:6]])
-	);
-	assign btb_sel_f[1] = ~bht_dir_f[0];
-	assign btb_sel_f[0] = bht_dir_f[0];
-	assign fetch_start_f[1:0] = {ifc_fetch_addr_f[1], ~ifc_fetch_addr_f[1]};
-	assign branch_error_collision_f = dec_tlu_error_wb & (btb_error_addr_wb[pt[2172-:9]:pt[2163-:6]] == btb_rd_addr_f[pt[2172-:9]:pt[2163-:6]]);
-	assign branch_error_collision_p1_f = dec_tlu_error_wb & (btb_error_addr_wb[pt[2172-:9]:pt[2163-:6]] == btb_rd_addr_p1_f[pt[2172-:9]:pt[2163-:6]]);
-	assign branch_error_bank_conflict_f = branch_error_collision_f & dec_tlu_error_wb;
-	assign branch_error_bank_conflict_p1_f = branch_error_collision_p1_f & dec_tlu_error_wb;
-	assign leak_one_f = (dec_tlu_flush_leak_one_wb & dec_tlu_flush_lower_wb) | (leak_one_f_d1 & ~dec_tlu_flush_lower_wb);
-	wire exu_flush_final_d1;
-	generate
-		if (!pt[2120-:5]) begin
-			assign fetch_mp_collision_f = (((exu_mp_btag[pt[2139-:9] - 1:0] == fetch_rd_tag_f[pt[2139-:9] - 1:0]) & exu_mp_valid) & ifc_fetch_req_f) & (exu_mp_addr[pt[2172-:9]:pt[2163-:6]] == btb_rd_addr_f[pt[2172-:9]:pt[2163-:6]]);
-			assign fetch_mp_collision_p1_f = (((exu_mp_btag[pt[2139-:9] - 1:0] == fetch_rd_tag_p1_f[pt[2139-:9] - 1:0]) & exu_mp_valid) & ifc_fetch_req_f) & (exu_mp_addr[pt[2172-:9]:pt[2163-:6]] == btb_rd_addr_p1_f[pt[2172-:9]:pt[2163-:6]]);
-			assign tag_match_way0_f = (((btb_bank0_rd_data_way0_f[BV] & (btb_bank0_rd_data_way0_f[TAG_START:17] == fetch_rd_tag_f[pt[2139-:9] - 1:0])) & ~(dec_tlu_way_wb & branch_error_bank_conflict_f)) & ifc_fetch_req_f) & ~leak_one_f;
-			assign tag_match_way1_f = (((btb_bank0_rd_data_way1_f[BV] & (btb_bank0_rd_data_way1_f[TAG_START:17] == fetch_rd_tag_f[pt[2139-:9] - 1:0])) & ~(dec_tlu_way_wb & branch_error_bank_conflict_f)) & ifc_fetch_req_f) & ~leak_one_f;
-			assign tag_match_way0_p1_f = (((btb_bank0_rd_data_way0_p1_f[BV] & (btb_bank0_rd_data_way0_p1_f[TAG_START:17] == fetch_rd_tag_p1_f[pt[2139-:9] - 1:0])) & ~(dec_tlu_way_wb & branch_error_bank_conflict_p1_f)) & ifc_fetch_req_f) & ~leak_one_f;
-			assign tag_match_way1_p1_f = (((btb_bank0_rd_data_way1_p1_f[BV] & (btb_bank0_rd_data_way1_p1_f[TAG_START:17] == fetch_rd_tag_p1_f[pt[2139-:9] - 1:0])) & ~(dec_tlu_way_wb & branch_error_bank_conflict_p1_f)) & ifc_fetch_req_f) & ~leak_one_f;
-			assign tag_match_way0_expanded_f[1:0] = {tag_match_way0_f & (btb_bank0_rd_data_way0_f[BOFF] ^ btb_bank0_rd_data_way0_f[PC4]), tag_match_way0_f & ~(btb_bank0_rd_data_way0_f[BOFF] ^ btb_bank0_rd_data_way0_f[PC4])};
-			assign tag_match_way1_expanded_f[1:0] = {tag_match_way1_f & (btb_bank0_rd_data_way1_f[BOFF] ^ btb_bank0_rd_data_way1_f[PC4]), tag_match_way1_f & ~(btb_bank0_rd_data_way1_f[BOFF] ^ btb_bank0_rd_data_way1_f[PC4])};
-			assign tag_match_way0_expanded_p1_f[1:0] = {tag_match_way0_p1_f & (btb_bank0_rd_data_way0_p1_f[BOFF] ^ btb_bank0_rd_data_way0_p1_f[PC4]), tag_match_way0_p1_f & ~(btb_bank0_rd_data_way0_p1_f[BOFF] ^ btb_bank0_rd_data_way0_p1_f[PC4])};
-			assign tag_match_way1_expanded_p1_f[1:0] = {tag_match_way1_p1_f & (btb_bank0_rd_data_way1_p1_f[BOFF] ^ btb_bank0_rd_data_way1_p1_f[PC4]), tag_match_way1_p1_f & ~(btb_bank0_rd_data_way1_p1_f[BOFF] ^ btb_bank0_rd_data_way1_p1_f[PC4])};
-			assign wayhit_f[1:0] = tag_match_way0_expanded_f[1:0] | tag_match_way1_expanded_f[1:0];
-			assign wayhit_p1_f[1:0] = tag_match_way0_expanded_p1_f[1:0] | tag_match_way1_expanded_p1_f[1:0];
-			assign btb_bank0o_rd_data_f[BTB_DWIDTH - 1:0] = ({17 + pt[2139-:9] {tag_match_way0_expanded_f[1]}} & btb_bank0_rd_data_way0_f[BTB_DWIDTH - 1:0]) | ({17 + pt[2139-:9] {tag_match_way1_expanded_f[1]}} & btb_bank0_rd_data_way1_f[BTB_DWIDTH - 1:0]);
-			assign btb_bank0e_rd_data_f[BTB_DWIDTH - 1:0] = ({17 + pt[2139-:9] {tag_match_way0_expanded_f[0]}} & btb_bank0_rd_data_way0_f[BTB_DWIDTH - 1:0]) | ({17 + pt[2139-:9] {tag_match_way1_expanded_f[0]}} & btb_bank0_rd_data_way1_f[BTB_DWIDTH - 1:0]);
-			assign btb_bank0e_rd_data_p1_f[BTB_DWIDTH - 1:0] = ({17 + pt[2139-:9] {tag_match_way0_expanded_p1_f[0]}} & btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH - 1:0]) | ({17 + pt[2139-:9] {tag_match_way1_expanded_p1_f[0]}} & btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH - 1:0]);
-			wire [BTB_DWIDTH:1] sv2v_tmp_F09CF;
-			assign sv2v_tmp_F09CF = ({17 + pt[2139-:9] {fetch_start_f[0]}} & btb_bank0e_rd_data_f[BTB_DWIDTH - 1:0]) | ({17 + pt[2139-:9] {fetch_start_f[1]}} & btb_bank0o_rd_data_f[BTB_DWIDTH - 1:0]);
-			always @(*) btb_vbank0_rd_data_f[BTB_DWIDTH - 1:0] = sv2v_tmp_F09CF;
-			wire [BTB_DWIDTH:1] sv2v_tmp_BEF15;
-			assign sv2v_tmp_BEF15 = ({17 + pt[2139-:9] {fetch_start_f[0]}} & btb_bank0o_rd_data_f[BTB_DWIDTH - 1:0]) | ({17 + pt[2139-:9] {fetch_start_f[1]}} & btb_bank0e_rd_data_p1_f[BTB_DWIDTH - 1:0]);
-			always @(*) btb_vbank1_rd_data_f[BTB_DWIDTH - 1:0] = sv2v_tmp_BEF15;
-			assign way_raw[1:0] = tag_match_vway1_expanded_f[1:0] | (~vwayhit_f[1:0] & btb_vlru_rd_f[1:0]);
-			assign mp_wrindex_dec[LRU_SIZE - 1:0] = {{LRU_SIZE - 1 {1'b0}}, 1'b1} << exu_mp_addr[pt[2172-:9]:pt[2163-:6]];
-			assign fetch_wrindex_dec[LRU_SIZE - 1:0] = {{LRU_SIZE - 1 {1'b0}}, 1'b1} << btb_rd_addr_f[pt[2172-:9]:pt[2163-:6]];
-			assign fetch_wrindex_p1_dec[LRU_SIZE - 1:0] = {{LRU_SIZE - 1 {1'b0}}, 1'b1} << btb_rd_addr_p1_f[pt[2172-:9]:pt[2163-:6]];
-			assign mp_wrlru_b0[LRU_SIZE - 1:0] = mp_wrindex_dec[LRU_SIZE - 1:0] & {LRU_SIZE {exu_mp_valid}};
-			assign btb_lru_b0_hold[LRU_SIZE - 1:0] = ~mp_wrlru_b0[LRU_SIZE - 1:0] & ~fetch_wrlru_b0[LRU_SIZE - 1:0];
-			assign use_mp_way = fetch_mp_collision_f;
-			assign use_mp_way_p1 = fetch_mp_collision_p1_f;
-			assign lru_update_valid_f = ((vwayhit_f[0] | vwayhit_f[1]) & ifc_fetch_req_f) & ~leak_one_f;
-			assign fetch_wrlru_b0[LRU_SIZE - 1:0] = fetch_wrindex_dec[LRU_SIZE - 1:0] & {LRU_SIZE {lru_update_valid_f}};
-			assign fetch_wrlru_p1_b0[LRU_SIZE - 1:0] = fetch_wrindex_p1_dec[LRU_SIZE - 1:0] & {LRU_SIZE {lru_update_valid_f}};
-			assign btb_lru_b0_ns[LRU_SIZE - 1:0] = (((btb_lru_b0_hold[LRU_SIZE - 1:0] & btb_lru_b0_f[LRU_SIZE - 1:0]) | (mp_wrlru_b0[LRU_SIZE - 1:0] & {LRU_SIZE {~exu_mp_way}})) | (fetch_wrlru_b0[LRU_SIZE - 1:0] & {LRU_SIZE {tag_match_way0_f}})) | (fetch_wrlru_p1_b0[LRU_SIZE - 1:0] & {LRU_SIZE {tag_match_way0_p1_f}});
-			assign btb_lru_rd_f = (use_mp_way ? exu_mp_way_f : |(fetch_wrindex_dec[LRU_SIZE - 1:0] & btb_lru_b0_f[LRU_SIZE - 1:0]));
-			assign btb_lru_rd_p1_f = (use_mp_way_p1 ? exu_mp_way_f : |(fetch_wrindex_p1_dec[LRU_SIZE - 1:0] & btb_lru_b0_f[LRU_SIZE - 1:0]));
-			assign btb_vlru_rd_f[1:0] = ({2 {fetch_start_f[0]}} & {btb_lru_rd_f, btb_lru_rd_f}) | ({2 {fetch_start_f[1]}} & {btb_lru_rd_p1_f, btb_lru_rd_f});
-			assign tag_match_vway1_expanded_f[1:0] = ({2 {fetch_start_f[0]}} & {tag_match_way1_expanded_f[1:0]}) | ({2 {fetch_start_f[1]}} & {tag_match_way1_expanded_p1_f[0], tag_match_way1_expanded_f[1]});
-			rvdffe #(.WIDTH(LRU_SIZE)) btb_lru_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.en(ifc_fetch_req_f | exu_mp_valid),
-				.din(btb_lru_b0_ns[LRU_SIZE - 1:0]),
-				.dout(btb_lru_b0_f[LRU_SIZE - 1:0])
-			);
-		end
-	endgenerate
-	wire eoc_near;
-	wire eoc_mask;
-	assign eoc_near = &ifc_fetch_addr_f[pt[1182-:8]:3];
-	assign eoc_mask = ~eoc_near | |(~ifc_fetch_addr_f[2:1]);
-	wire [16:1] btb_sel_data_f;
-	assign btb_rd_tgt_f[11:0] = btb_sel_data_f[16:5];
-	assign btb_rd_pc4_f = btb_sel_data_f[4];
-	assign btb_rd_call_f = btb_sel_data_f[2];
-	assign btb_rd_ret_f = btb_sel_data_f[1];
-	assign btb_sel_data_f[16:1] = ({16 {btb_sel_f[1]}} & btb_vbank1_rd_data_f[16:1]) | ({16 {btb_sel_f[0]}} & btb_vbank0_rd_data_f[16:1]);
-	wire [1:0] hist0_raw;
-	wire [1:0] hist1_raw;
-	wire [1:0] pc4_raw;
-	wire [1:0] pret_raw;
-	assign ifu_bp_hit_taken_f = ((|(vwayhit_f[1:0] & hist1_raw[1:0]) & ifc_fetch_req_f) & ~leak_one_f_d1) & ~dec_tlu_bpred_disable;
-	assign bht_force_taken_f[1:0] = {btb_vbank1_rd_data_f[CALL] | btb_vbank1_rd_data_f[RET], btb_vbank0_rd_data_f[CALL] | btb_vbank0_rd_data_f[RET]};
-	assign bht_valid_f[1:0] = vwayhit_f[1:0];
-	assign bht_vbank0_rd_data_f[1:0] = ({2 {fetch_start_f[0]}} & bht_bank0_rd_data_f[1:0]) | ({2 {fetch_start_f[1]}} & bht_bank1_rd_data_f[1:0]);
-	assign bht_vbank1_rd_data_f[1:0] = ({2 {fetch_start_f[0]}} & bht_bank1_rd_data_f[1:0]) | ({2 {fetch_start_f[1]}} & bht_bank0_rd_data_p1_f[1:0]);
-	assign bht_dir_f[1:0] = {(bht_force_taken_f[1] | bht_vbank1_rd_data_f[1]) & bht_valid_f[1], (bht_force_taken_f[0] | bht_vbank0_rd_data_f[1]) & bht_valid_f[0]};
-	assign ifu_bp_inst_mask_f = (ifu_bp_hit_taken_f & btb_sel_f[1]) | ~ifu_bp_hit_taken_f;
-	assign hist1_raw[1:0] = bht_force_taken_f[1:0] | {bht_vbank1_rd_data_f[1], bht_vbank0_rd_data_f[1]};
-	assign hist0_raw[1:0] = {bht_vbank1_rd_data_f[0], bht_vbank0_rd_data_f[0]};
-	assign pc4_raw[1:0] = {vwayhit_f[1] & btb_vbank1_rd_data_f[PC4], vwayhit_f[0] & btb_vbank0_rd_data_f[PC4]};
-	assign pret_raw[1:0] = {(vwayhit_f[1] & ~btb_vbank1_rd_data_f[CALL]) & btb_vbank1_rd_data_f[RET], (vwayhit_f[0] & ~btb_vbank0_rd_data_f[CALL]) & btb_vbank0_rd_data_f[RET]};
-	function [1:0] countones;
-		input [1:0] valid;
-		countones[1:0] = {2'b00, valid[1]} + {2'b00, valid[0]};
-	endfunction
-	assign num_valids[1:0] = countones(bht_valid_f[1:0]);
-	assign final_h = |(btb_sel_f[1:0] & bht_dir_f[1:0]);
-	assign merged_ghr[pt[2236-:8] - 1:0] = (({pt[2236-:8] {num_valids[1:0] == 2'h2}} & {fghr[pt[2236-:8] - 3:0], 1'b0, final_h}) | ({pt[2236-:8] {num_valids[1:0] == 2'h1}} & {fghr[pt[2236-:8] - 2:0], final_h})) | ({pt[2236-:8] {num_valids[1:0] == 2'h0}} & {fghr[pt[2236-:8] - 1:0]});
-	wire [pt[2236-:8] - 1:0] exu_flush_ghr;
-	assign exu_flush_ghr[pt[2236-:8] - 1:0] = exu_mp_fghr[pt[2236-:8] - 1:0];
-	assign fghr_ns[pt[2236-:8] - 1:0] = (({pt[2236-:8] {exu_flush_final_d1}} & exu_flush_ghr[pt[2236-:8] - 1:0]) | ({pt[2236-:8] {((~exu_flush_final_d1 & ifc_fetch_req_f) & ic_hit_f) & ~leak_one_f_d1}} & merged_ghr[pt[2236-:8] - 1:0])) | ({pt[2236-:8] {~exu_flush_final_d1 & ~((ifc_fetch_req_f & ic_hit_f) & ~leak_one_f_d1)}} & fghr[pt[2236-:8] - 1:0]);
-	rvdffie #(
-		.WIDTH(pt[2236-:8] + 3),
-		.OVERRIDE(1)
-	) fetchghr(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.din({exu_flush_final, exu_mp_way, leak_one_f, fghr_ns[pt[2236-:8] - 1:0]}),
-		.dout({exu_flush_final_d1, exu_mp_way_f, leak_one_f_d1, fghr[pt[2236-:8] - 1:0]})
-	);
-	assign ifu_bp_fghr_f[pt[2236-:8] - 1:0] = fghr[pt[2236-:8] - 1:0];
-	assign ifu_bp_way_f[1:0] = way_raw[1:0];
-	assign ifu_bp_hist1_f[1:0] = hist1_raw[1:0];
-	assign ifu_bp_hist0_f[1:0] = hist0_raw[1:0];
-	assign ifu_bp_pc4_f[1:0] = pc4_raw[1:0];
-	assign ifu_bp_valid_f[1:0] = vwayhit_f[1:0] & ~{2 {dec_tlu_bpred_disable}};
-	assign ifu_bp_ret_f[1:0] = pret_raw[1:0];
-	wire [1:0] bloc_f;
-	wire use_fa_plus;
-	assign bloc_f[1] = (bht_dir_f[0] & ~fetch_start_f[0]) | (~bht_dir_f[0] & fetch_start_f[0]);
-	assign bloc_f[0] = (bht_dir_f[0] & fetch_start_f[0]) | (~bht_dir_f[0] & ~fetch_start_f[0]);
-	assign use_fa_plus = (~bht_dir_f[0] & ~fetch_start_f[0]) & ~btb_rd_pc4_f;
-	assign btb_fg_crossing_f = (fetch_start_f[0] & btb_sel_f[0]) & btb_rd_pc4_f;
-	assign bp_total_branch_offset_f = bloc_f[1] ^ btb_rd_pc4_f;
-	wire [31:2] adder_pc_in_f;
-	wire [31:2] ifc_fetch_adder_prior;
-	rvdfflie #(
-		.WIDTH(30),
-		.LEFT(19)
-	) faddrf_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en((ifc_fetch_req_f & ~ifu_bp_hit_taken_f) & ic_hit_f),
-		.din(ifc_fetch_addr_f[31:2]),
-		.dout(ifc_fetch_adder_prior[31:2])
-	);
-	assign ifu_bp_poffset_f[11:0] = btb_rd_tgt_f[11:0];
-	assign adder_pc_in_f[31:2] = (({30 {use_fa_plus}} & fetch_addr_p1_f[31:2]) | ({30 {btb_fg_crossing_f}} & ifc_fetch_adder_prior[31:2])) | ({30 {~btb_fg_crossing_f & ~use_fa_plus}} & ifc_fetch_addr_f[31:2]);
-	rvbradder predtgt_addr(
-		.pc({adder_pc_in_f[31:2], bp_total_branch_offset_f}),
-		.offset(btb_rd_tgt_f[11:0]),
-		.dout(bp_btb_target_adder_f[31:1])
-	);
-	assign ifu_bp_btb_target_f[31:1] = ({31 {((btb_rd_ret_f & ~btb_rd_call_f) & rets_out[0]) & ifu_bp_hit_taken_f}} & rets_out[31-:31]) | ({31 {~((btb_rd_ret_f & ~btb_rd_call_f) & rets_out[0]) & ifu_bp_hit_taken_f}} & bp_btb_target_adder_f[31:1]);
-	rvbradder rs_addr(
-		.pc({adder_pc_in_f[31:2], bp_total_branch_offset_f}),
-		.offset({11'b00000000000, ~btb_rd_pc4_f}),
-		.dout(bp_rs_call_target_f[31:1])
-	);
-	assign rs_push = (btb_rd_call_f & ~btb_rd_ret_f) & ifu_bp_hit_taken_f;
-	assign rs_pop = (btb_rd_ret_f & ~btb_rd_call_f) & ifu_bp_hit_taken_f;
-	assign rs_hold = ~rs_push & ~rs_pop;
-	assign rets_in[31-:32] = ({32 {rs_push}} & {bp_rs_call_target_f[31:1], 1'b1}) | ({32 {rs_pop}} & rets_out[63-:32]);
-	assign rsenable[0] = ~rs_hold;
-	generate
-		for (i = 0; i < pt[31-:8]; i = i + 1) begin : retstack
-			if (i == (pt[31-:8] - 1)) begin
-				assign rets_in[(i * 32) + 31-:32] = rets_out[((i - 1) * 32) + 31-:32];
-				assign rsenable[i] = rs_push;
-			end
-			else if (i > 0) begin
-				assign rets_in[(i * 32) + 31-:32] = ({32 {rs_push}} & rets_out[((i - 1) * 32) + 31-:32]) | ({32 {rs_pop}} & rets_out[((i + 1) * 32) + 31-:32]);
-				assign rsenable[i] = rs_push | rs_pop;
-			end
-			rvdffe #(.WIDTH(32)) rets_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.en(rsenable[i]),
-				.din(rets_in[(i * 32) + 31-:32]),
-				.dout(rets_out[(i * 32) + 31-:32])
-			);
-		end
-	endgenerate
-	assign dec_tlu_error_wb = dec_tlu_br0_start_error_wb | dec_tlu_br0_error_wb;
-	assign btb_error_addr_wb[pt[2172-:9]:pt[2163-:6]] = dec_tlu_br0_addr_wb[pt[2172-:9]:pt[2163-:6]];
-	assign dec_tlu_way_wb = dec_tlu_br0_way_wb;
-	assign btb_valid = exu_mp_valid & ~dec_tlu_error_wb;
-	assign btb_wr_tag[pt[2139-:9] - 1:0] = exu_mp_btag[pt[2139-:9] - 1:0];
-	generate
-		if (!pt[2120-:5]) begin
-			if (pt[2144-:5]) begin : btbfold
-				eb1_btb_tag_hash_fold #(.pt(pt)) rdtagf(
-					.hash(fetch_rd_tag_f[pt[2139-:9] - 1:0]),
-					.pc({ifc_fetch_addr_f[(pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]:pt[2172-:9] + 1]})
-				);
-				eb1_btb_tag_hash_fold #(.pt(pt)) rdtagp1f(
-					.hash(fetch_rd_tag_p1_f[pt[2139-:9] - 1:0]),
-					.pc({fetch_addr_p1_f[(pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]:pt[2172-:9] + 1]})
-				);
-			end
-			else begin
-				eb1_btb_tag_hash #(.pt(pt)) rdtagf(
-					.hash(fetch_rd_tag_f[pt[2139-:9] - 1:0]),
-					.pc({ifc_fetch_addr_f[((pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]) + pt[2139-:9]:pt[2172-:9] + 1]})
-				);
-				eb1_btb_tag_hash #(.pt(pt)) rdtagp1f(
-					.hash(fetch_rd_tag_p1_f[pt[2139-:9] - 1:0]),
-					.pc({fetch_addr_p1_f[((pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]) + pt[2139-:9]:pt[2172-:9] + 1]})
-				);
-			end
-			assign btb_wr_en_way0 = {(~exu_mp_way & exu_mp_valid_write) & ~dec_tlu_error_wb} | {~dec_tlu_way_wb & dec_tlu_error_wb};
-			assign btb_wr_en_way1 = {(exu_mp_way & exu_mp_valid_write) & ~dec_tlu_error_wb} | {dec_tlu_way_wb & dec_tlu_error_wb};
-			assign btb_wr_addr[pt[2172-:9]:pt[2163-:6]] = (dec_tlu_error_wb ? btb_error_addr_wb[pt[2172-:9]:pt[2163-:6]] : exu_mp_addr[pt[2172-:9]:pt[2163-:6]]);
-			assign vwayhit_f[1:0] = (({2 {fetch_start_f[0]}} & {wayhit_f[1:0]}) | ({2 {fetch_start_f[1]}} & {wayhit_p1_f[0], wayhit_f[1]})) & {eoc_mask, 1'b1};
-		end
-	endgenerate
-	assign btb_wr_data[BTB_DWIDTH - 1:0] = {btb_wr_tag[pt[2139-:9] - 1:0], exu_mp_tgt[pt[2047-:9] - 1:0], exu_mp_pc4, exu_mp_boffset, exu_mp_call | exu_mp_ja, exu_mp_ret | exu_mp_ja, btb_valid};
-	assign exu_mp_valid_write = (exu_mp_valid & exu_mp_ataken) & ~exu_mp_pkt[37];
-	wire [1:0] bht_wr_data0;
-	wire [1:0] bht_wr_data2;
-	wire [1:0] bht_wr_en0;
-	wire [1:0] bht_wr_en2;
-	assign middle_of_bank = exu_mp_pc4 ^ exu_mp_boffset;
-	assign bht_wr_en0[1:0] = {2 {((exu_mp_valid & ~exu_mp_call) & ~exu_mp_ret) & ~exu_mp_ja}} & {middle_of_bank, ~middle_of_bank};
-	assign bht_wr_en2[1:0] = {2 {dec_tlu_br0_v_wb}} & {dec_tlu_br0_middle_wb, ~dec_tlu_br0_middle_wb};
-	assign bht_wr_data0[1:0] = exu_mp_hist[1:0];
-	assign bht_wr_data2[1:0] = dec_tlu_br0_hist_wb[1:0];
-	wire [pt[2270-:8]:pt[2262-:6]] bht_rd_addr_f;
-	wire [pt[2270-:8]:pt[2262-:6]] bht_rd_addr_p1_f;
-	wire [pt[2270-:8]:pt[2262-:6]] bht_wr_addr0;
-	wire [pt[2270-:8]:pt[2262-:6]] bht_wr_addr2;
-	wire [pt[2270-:8]:pt[2262-:6]] mp_hashed;
-	wire [pt[2270-:8]:pt[2262-:6]] br0_hashed_wb;
-	wire [pt[2270-:8]:pt[2262-:6]] bht_rd_addr_hashed_f;
-	wire [pt[2270-:8]:pt[2262-:6]] bht_rd_addr_hashed_p1_f;
-	eb1_btb_ghr_hash #(.pt(pt)) mpghrhs(
-		.hashin(exu_mp_addr[pt[2172-:9]:pt[2163-:6]]),
-		.ghr(exu_mp_eghr[pt[2236-:8] - 1:0]),
-		.hash(mp_hashed[pt[2270-:8]:pt[2262-:6]])
-	);
-	eb1_btb_ghr_hash #(.pt(pt)) br0ghrhs(
-		.hashin(dec_tlu_br0_addr_wb[pt[2172-:9]:pt[2163-:6]]),
-		.ghr(exu_i0_br_fghr_wb[pt[2236-:8] - 1:0]),
-		.hash(br0_hashed_wb[pt[2270-:8]:pt[2262-:6]])
-	);
-	eb1_btb_ghr_hash #(.pt(pt)) fghrhs(
-		.hashin(btb_rd_addr_f[pt[2172-:9]:pt[2163-:6]]),
-		.ghr(fghr[pt[2236-:8] - 1:0]),
-		.hash(bht_rd_addr_hashed_f[pt[2270-:8]:pt[2262-:6]])
-	);
-	eb1_btb_ghr_hash #(.pt(pt)) fghrhs_p1(
-		.hashin(btb_rd_addr_p1_f[pt[2172-:9]:pt[2163-:6]]),
-		.ghr(fghr[pt[2236-:8] - 1:0]),
-		.hash(bht_rd_addr_hashed_p1_f[pt[2270-:8]:pt[2262-:6]])
-	);
-	assign bht_wr_addr0[pt[2270-:8]:pt[2262-:6]] = mp_hashed[pt[2270-:8]:pt[2262-:6]];
-	assign bht_wr_addr2[pt[2270-:8]:pt[2262-:6]] = br0_hashed_wb[pt[2270-:8]:pt[2262-:6]];
-	assign bht_rd_addr_f[pt[2270-:8]:pt[2262-:6]] = bht_rd_addr_hashed_f[pt[2270-:8]:pt[2262-:6]];
-	assign bht_rd_addr_p1_f[pt[2270-:8]:pt[2262-:6]] = bht_rd_addr_hashed_p1_f[pt[2270-:8]:pt[2262-:6]];
-	generate
-		if (!pt[2120-:5]) begin
-			for (j = 0; j < LRU_SIZE; j = j + 1) begin : BTB_FLOPS
-				rvdffe #(.WIDTH(17 + pt[2139-:9])) btb_bank0_way0(
-					.clk(clk),
-					.rst_l(rst_l),
-					.scan_mode(scan_mode),
-					.en((btb_wr_addr[pt[2172-:9]:pt[2163-:6]] == j) & btb_wr_en_way0),
-					.din(btb_wr_data[BTB_DWIDTH - 1:0]),
-					.dout(btb_bank0_rd_data_way0_out[j * BTB_DWIDTH+:BTB_DWIDTH])
-				);
-				rvdffe #(.WIDTH(17 + pt[2139-:9])) btb_bank0_way1(
-					.clk(clk),
-					.rst_l(rst_l),
-					.scan_mode(scan_mode),
-					.en((btb_wr_addr[pt[2172-:9]:pt[2163-:6]] == j) & btb_wr_en_way1),
-					.din(btb_wr_data[BTB_DWIDTH - 1:0]),
-					.dout(btb_bank0_rd_data_way1_out[j * BTB_DWIDTH+:BTB_DWIDTH])
-				);
-			end
-			function automatic signed [((pt[2172-:9] - pt[2163-:6]) >= 0 ? (pt[2172-:9] - pt[2163-:6]) + 1 : 1 - (pt[2172-:9] - pt[2163-:6])) - 1:0] sv2v_cast_C4842_signed;
-				input reg signed [((pt[2172-:9] - pt[2163-:6]) >= 0 ? (pt[2172-:9] - pt[2163-:6]) + 1 : 1 - (pt[2172-:9] - pt[2163-:6])) - 1:0] inp;
-				sv2v_cast_C4842_signed = inp;
-			endfunction
-			always @(*) begin : BTB_rd_mux
-				btb_bank0_rd_data_way0_f[BTB_DWIDTH - 1:0] = {BTB_DWIDTH {1'sb0}};
-				btb_bank0_rd_data_way1_f[BTB_DWIDTH - 1:0] = {BTB_DWIDTH {1'sb0}};
-				btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH - 1:0] = {BTB_DWIDTH {1'sb0}};
-				btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH - 1:0] = {BTB_DWIDTH {1'sb0}};
-				begin : sv2v_autoblock_43
-					reg signed [31:0] j;
-					for (j = 0; j < LRU_SIZE; j = j + 1)
-						if (btb_rd_addr_f[pt[2172-:9]:pt[2163-:6]] == sv2v_cast_C4842_signed(j)) begin
-							btb_bank0_rd_data_way0_f[BTB_DWIDTH - 1:0] = btb_bank0_rd_data_way0_out[j * BTB_DWIDTH+:BTB_DWIDTH];
-							btb_bank0_rd_data_way1_f[BTB_DWIDTH - 1:0] = btb_bank0_rd_data_way1_out[j * BTB_DWIDTH+:BTB_DWIDTH];
-						end
-				end
-				begin : sv2v_autoblock_44
-					reg signed [31:0] j;
-					for (j = 0; j < LRU_SIZE; j = j + 1)
-						if (btb_rd_addr_p1_f[pt[2172-:9]:pt[2163-:6]] == sv2v_cast_C4842_signed(j)) begin
-							btb_bank0_rd_data_way0_p1_f[BTB_DWIDTH - 1:0] = btb_bank0_rd_data_way0_out[j * BTB_DWIDTH+:BTB_DWIDTH];
-							btb_bank0_rd_data_way1_p1_f[BTB_DWIDTH - 1:0] = btb_bank0_rd_data_way1_out[j * BTB_DWIDTH+:BTB_DWIDTH];
-						end
-				end
-			end
-		end
-	endgenerate
-	generate
-		if (pt[2120-:5]) begin : fa
-			reg found1;
-			reg hit0;
-			reg hit1;
-			wire btb_used_reset;
-			wire write_used;
-			reg [$clog2(pt[2061-:14]) - 1:0] btb_fa_wr_addr0;
-			reg [$clog2(pt[2061-:14]) - 1:0] hit0_index;
-			reg [$clog2(pt[2061-:14]) - 1:0] hit1_index;
-			reg [pt[2061-:14] - 1:0] btb_tag_hit;
-			reg [pt[2061-:14] - 1:0] btb_offset_0;
-			reg [pt[2061-:14] - 1:0] btb_offset_1;
-			wire [pt[2061-:14] - 1:0] btb_used_ns;
-			wire [pt[2061-:14] - 1:0] btb_used;
-			wire [pt[2061-:14] - 1:0] wr0_en;
-			reg [pt[2061-:14] - 1:0] btb_upper_hit;
-			wire [(pt[2061-:14] * BTB_DWIDTH) - 1:0] btbdata;
-			wire [FA_CMP_LOWER - 1:1] ifc_fetch_addr_p1_f;
-			assign ifc_fetch_addr_p1_f[FA_CMP_LOWER - 1:1] = ifc_fetch_addr_f[FA_CMP_LOWER - 1:1] + 1'b1;
-			assign fetch_mp_collision_f = (((exu_mp_btag[pt[2139-:9] - 1:0] == ifc_fetch_addr_f[31:1]) & exu_mp_valid) & ifc_fetch_req_f) & ~exu_mp_pkt[32];
-			assign fetch_mp_collision_p1_f = (((exu_mp_btag[pt[2139-:9] - 1:0] == {ifc_fetch_addr_f[31:FA_CMP_LOWER], ifc_fetch_addr_p1_f[FA_CMP_LOWER - 1:1]}) & exu_mp_valid) & ifc_fetch_req_f) & ~exu_mp_pkt[32];
-			function automatic signed [(BTB_FA_INDEX >= 0 ? BTB_FA_INDEX + 1 : 1 - BTB_FA_INDEX) - 1:0] sv2v_cast_50CAB_signed;
-				input reg signed [(BTB_FA_INDEX >= 0 ? BTB_FA_INDEX + 1 : 1 - BTB_FA_INDEX) - 1:0] inp;
-				sv2v_cast_50CAB_signed = inp;
-			endfunction
-			always @(*) begin
-				btb_vbank0_rd_data_f = {BTB_DWIDTH {1'sb0}};
-				btb_vbank1_rd_data_f = {BTB_DWIDTH {1'sb0}};
-				btb_tag_hit = {pt[2061-:14] {1'sb0}};
-				btb_upper_hit = {pt[2061-:14] {1'sb0}};
-				btb_offset_0 = {pt[2061-:14] {1'sb0}};
-				btb_offset_1 = {pt[2061-:14] {1'sb0}};
-				found1 = 1'b0;
-				hit0 = 1'b0;
-				hit1 = 1'b0;
-				hit0_index = {$clog2(pt[2061-:14]) {1'sb0}};
-				hit1_index = {$clog2(pt[2061-:14]) {1'sb0}};
-				btb_fa_wr_addr0 = {$clog2(pt[2061-:14]) {1'sb0}};
-				begin : sv2v_autoblock_45
-					reg signed [31:0] i;
-					for (i = 0; i < pt[2061-:14]; i = i + 1)
-						begin
-							btb_upper_hit[i] = ((btbdata[(i * BTB_DWIDTH) + (BTB_DWIDTH_TOP >= FA_TAG_END_UPPER ? BTB_DWIDTH_TOP : (BTB_DWIDTH_TOP + (BTB_DWIDTH_TOP >= FA_TAG_END_UPPER ? (BTB_DWIDTH_TOP - FA_TAG_END_UPPER) + 1 : (FA_TAG_END_UPPER - BTB_DWIDTH_TOP) + 1)) - 1)-:(BTB_DWIDTH_TOP >= FA_TAG_END_UPPER ? (BTB_DWIDTH_TOP - FA_TAG_END_UPPER) + 1 : (FA_TAG_END_UPPER - BTB_DWIDTH_TOP) + 1)] == ifc_fetch_addr_f[31:FA_CMP_LOWER]) & btbdata[i * BTB_DWIDTH]) & ~wr0_en[i];
-							btb_offset_0[i] = (btbdata[(i * BTB_DWIDTH) + (FA_TAG_START_LOWER >= FA_TAG_END_LOWER ? FA_TAG_START_LOWER : (FA_TAG_START_LOWER + (FA_TAG_START_LOWER >= FA_TAG_END_LOWER ? (FA_TAG_START_LOWER - FA_TAG_END_LOWER) + 1 : (FA_TAG_END_LOWER - FA_TAG_START_LOWER) + 1)) - 1)-:(FA_TAG_START_LOWER >= FA_TAG_END_LOWER ? (FA_TAG_START_LOWER - FA_TAG_END_LOWER) + 1 : (FA_TAG_END_LOWER - FA_TAG_START_LOWER) + 1)] == ifc_fetch_addr_f[FA_CMP_LOWER - 1:1]) & btb_upper_hit[i];
-							btb_offset_1[i] = (btbdata[(i * BTB_DWIDTH) + (FA_TAG_START_LOWER >= FA_TAG_END_LOWER ? FA_TAG_START_LOWER : (FA_TAG_START_LOWER + (FA_TAG_START_LOWER >= FA_TAG_END_LOWER ? (FA_TAG_START_LOWER - FA_TAG_END_LOWER) + 1 : (FA_TAG_END_LOWER - FA_TAG_START_LOWER) + 1)) - 1)-:(FA_TAG_START_LOWER >= FA_TAG_END_LOWER ? (FA_TAG_START_LOWER - FA_TAG_END_LOWER) + 1 : (FA_TAG_END_LOWER - FA_TAG_START_LOWER) + 1)] == ifc_fetch_addr_p1_f[FA_CMP_LOWER - 1:1]) & btb_upper_hit[i];
-							if (~hit0)
-								if (btb_offset_0[i]) begin
-									hit0_index[BTB_FA_INDEX:0] = sv2v_cast_50CAB_signed(i);
-									hit0 = 1'b1;
-								end
-							if (~hit1)
-								if (btb_offset_1[i]) begin
-									hit1_index[BTB_FA_INDEX:0] = sv2v_cast_50CAB_signed(i);
-									hit1 = 1'b1;
-								end
-							if (btb_offset_0[i] == 1'b1)
-								btb_vbank0_rd_data_f[BTB_DWIDTH - 1:0] = (fetch_mp_collision_f ? btb_wr_data : btbdata[i * BTB_DWIDTH+:BTB_DWIDTH]);
-							if (btb_offset_1[i] == 1'b1)
-								btb_vbank1_rd_data_f[BTB_DWIDTH - 1:0] = (fetch_mp_collision_p1_f ? btb_wr_data : btbdata[i * BTB_DWIDTH+:BTB_DWIDTH]);
-							if (~found1)
-								if (~btb_used[i]) begin
-									btb_fa_wr_addr0[BTB_FA_INDEX:0] = i[BTB_FA_INDEX:0];
-									found1 = 1'b1;
-								end
-						end
-				end
-			end
-			assign vwayhit_f[1:0] = {hit1, hit0} & {eoc_mask, 1'b1};
-			assign way_raw[1:0] = vwayhit_f[1:0] | {fetch_mp_collision_p1_f, fetch_mp_collision_f};
-			for (j = 0; j < pt[2061-:14]; j = j + 1) begin : BTB_FAFLOPS
-				assign wr0_en[j] = ((btb_fa_wr_addr0[BTB_FA_INDEX:0] == j) & (exu_mp_valid_write & ~exu_mp_pkt[32])) | ((dec_fa_error_index == j) & dec_tlu_error_wb);
-				rvdffe #(.WIDTH(BTB_DWIDTH)) btb_fa(
-					.rst_l(rst_l),
-					.scan_mode(scan_mode),
-					.clk(clk),
-					.en(wr0_en[j]),
-					.din(btb_wr_data[BTB_DWIDTH - 1:0]),
-					.dout(btbdata[j * BTB_DWIDTH+:BTB_DWIDTH])
-				);
-			end
-			assign ifu_bp_fa_index_f[$clog2(pt[2061-:14])+:$clog2(pt[2061-:14])] = (hit1 ? hit1_index : {$clog2(pt[2061-:14]) {1'sb0}});
-			assign ifu_bp_fa_index_f[0+:$clog2(pt[2061-:14])] = (hit0 ? hit0_index : {$clog2(pt[2061-:14]) {1'sb0}});
-			assign btb_used_reset = &btb_used[pt[2061-:14] - 1:0];
-			assign btb_used_ns[pt[2061-:14] - 1:0] = ((((({pt[2061-:14] {vwayhit_f[1]}} & (32'b00000000000000000000000000000001 << hit1_index[BTB_FA_INDEX:0])) | ({pt[2061-:14] {vwayhit_f[0]}} & (32'b00000000000000000000000000000001 << hit0_index[BTB_FA_INDEX:0]))) | ({pt[2061-:14] {(exu_mp_valid_write & ~exu_mp_pkt[32]) & ~dec_tlu_error_wb}} & (32'b00000000000000000000000000000001 << btb_fa_wr_addr0[BTB_FA_INDEX:0]))) | ({pt[2061-:14] {btb_used_reset}} & {pt[2061-:14] {1'b0}})) | ({pt[2061-:14] {~btb_used_reset & dec_tlu_error_wb}} & (btb_used[pt[2061-:14] - 1:0] & ~(32'b00000000000000000000000000000001 << dec_fa_error_index[BTB_FA_INDEX:0])))) | (~{pt[2061-:14] {btb_used_reset | dec_tlu_error_wb}} & btb_used[pt[2061-:14] - 1:0]);
-			assign write_used = ((btb_used_reset | ifu_bp_hit_taken_f) | exu_mp_valid_write) | dec_tlu_error_wb;
-			rvdffe #(.WIDTH(pt[2061-:14])) btb_usedf(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(clk),
-				.en(write_used),
-				.din(btb_used_ns[pt[2061-:14] - 1:0]),
-				.dout(btb_used[pt[2061-:14] - 1:0])
-			);
-		end
-	endgenerate
-	wire [(((2 * (pt[2256-:15] / NUM_BHT_LOOP)) * NUM_BHT_LOOP) * 2) - 1:0] bht_bank_wr_data;
-	wire [((2 * pt[2256-:15]) * 2) - 1:0] bht_bank_rd_data_out;
-	wire [(2 * (pt[2256-:15] / NUM_BHT_LOOP)) - 1:0] bht_bank_clken;
-	wire [(2 * (pt[2256-:15] / NUM_BHT_LOOP)) - 1:0] bht_bank_clk;
-	wire [((2 * (pt[2256-:15] / NUM_BHT_LOOP)) * NUM_BHT_LOOP) - 1:0] bht_bank_sel;
-	generate
-		for (i = 0; i < 2; i = i + 1) begin : BANKS
-			genvar k;
-			for (k = 0; k < (pt[2256-:15] / NUM_BHT_LOOP); k = k + 1) begin : BHT_CLK_GROUP
-				assign bht_bank_clken[(i * (pt[2256-:15] / NUM_BHT_LOOP)) + k] = (bht_wr_en0[i] & ((bht_wr_addr0[pt[2270-:8]:NUM_BHT_LOOP_OUTER_LO] == k) | BHT_NO_ADDR_MATCH)) | (bht_wr_en2[i] & ((bht_wr_addr2[pt[2270-:8]:NUM_BHT_LOOP_OUTER_LO] == k) | BHT_NO_ADDR_MATCH));
-				rvclkhdr bht_bank_grp_cgc(
-					.en(bht_bank_clken[(i * (pt[2256-:15] / NUM_BHT_LOOP)) + k]),
-					.l1clk(bht_bank_clk[(i * (pt[2256-:15] / NUM_BHT_LOOP)) + k]),
-					.clk(clk),
-					.scan_mode(scan_mode)
-				);
-				for (j = 0; j < NUM_BHT_LOOP; j = j + 1) begin : BHT_FLOPS
-					assign bht_bank_sel[(((i * (pt[2256-:15] / NUM_BHT_LOOP)) + k) * NUM_BHT_LOOP) + j] = ((bht_wr_en0[i] & (bht_wr_addr0[NUM_BHT_LOOP_INNER_HI:pt[2262-:6]] == j)) & ((bht_wr_addr0[pt[2270-:8]:NUM_BHT_LOOP_OUTER_LO] == k) | BHT_NO_ADDR_MATCH)) | ((bht_wr_en2[i] & (bht_wr_addr2[NUM_BHT_LOOP_INNER_HI:pt[2262-:6]] == j)) & ((bht_wr_addr2[pt[2270-:8]:NUM_BHT_LOOP_OUTER_LO] == k) | BHT_NO_ADDR_MATCH));
-					assign bht_bank_wr_data[((((i * (pt[2256-:15] / NUM_BHT_LOOP)) + k) * NUM_BHT_LOOP) + j) * 2+:2] = ((bht_wr_en2[i] & (bht_wr_addr2[NUM_BHT_LOOP_INNER_HI:pt[2262-:6]] == j)) & ((bht_wr_addr2[pt[2270-:8]:NUM_BHT_LOOP_OUTER_LO] == k) | BHT_NO_ADDR_MATCH) ? bht_wr_data2[1:0] : bht_wr_data0[1:0]);
-					rvdffs_fpga #(.WIDTH(2)) bht_bank(
-						.rst_l(rst_l),
-						.clk(bht_bank_clk[(i * (pt[2256-:15] / NUM_BHT_LOOP)) + k]),
-						.en(bht_bank_sel[(((i * (pt[2256-:15] / NUM_BHT_LOOP)) + k) * NUM_BHT_LOOP) + j]),
-						.rawclk(clk),
-						.clken(bht_bank_sel[(((i * (pt[2256-:15] / NUM_BHT_LOOP)) + k) * NUM_BHT_LOOP) + j]),
-						.din(bht_bank_wr_data[((((i * (pt[2256-:15] / NUM_BHT_LOOP)) + k) * NUM_BHT_LOOP) + j) * 2+:2]),
-						.dout(bht_bank_rd_data_out[((i * pt[2256-:15]) + ((16 * k) + j)) * 2+:2])
-					);
-				end
-			end
-		end
-	endgenerate
-	function automatic signed [((pt[2270-:8] - pt[2262-:6]) >= 0 ? (pt[2270-:8] - pt[2262-:6]) + 1 : 1 - (pt[2270-:8] - pt[2262-:6])) - 1:0] sv2v_cast_AB44B_signed;
-		input reg signed [((pt[2270-:8] - pt[2262-:6]) >= 0 ? (pt[2270-:8] - pt[2262-:6]) + 1 : 1 - (pt[2270-:8] - pt[2262-:6])) - 1:0] inp;
-		sv2v_cast_AB44B_signed = inp;
-	endfunction
-	always @(*) begin : BHT_rd_mux
-		bht_bank0_rd_data_f[1:0] = {2 {1'sb0}};
-		bht_bank1_rd_data_f[1:0] = {2 {1'sb0}};
-		bht_bank0_rd_data_p1_f[1:0] = {2 {1'sb0}};
-		begin : sv2v_autoblock_46
-			reg signed [31:0] j;
-			for (j = 0; j < pt[2256-:15]; j = j + 1)
-				begin
-					if (bht_rd_addr_f[pt[2270-:8]:pt[2262-:6]] == sv2v_cast_AB44B_signed(j)) begin
-						bht_bank0_rd_data_f[1:0] = bht_bank_rd_data_out[j * 2+:2];
-						bht_bank1_rd_data_f[1:0] = bht_bank_rd_data_out[(pt[2256-:15] + j) * 2+:2];
-					end
-					if (bht_rd_addr_p1_f[pt[2270-:8]:pt[2262-:6]] == sv2v_cast_AB44B_signed(j))
-						bht_bank0_rd_data_p1_f[1:0] = bht_bank_rd_data_out[j * 2+:2];
-				end
-		end
-	end
-endmodule
-module eb1_ifu_compress_ctl (
-	din,
-	dout
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire [15:0] din;
-	output wire [31:0] dout;
-	wire legal;
-	wire [15:0] i;
-	wire [31:0] o;
-	wire [31:0] l1;
-	wire [31:0] l2;
-	wire [31:0] l3;
-	assign i[15:0] = din[15:0];
-	wire [4:0] rs2d;
-	wire [4:0] rdd;
-	wire [4:0] rdpd;
-	wire [4:0] rs2pd;
-	wire rdrd;
-	wire rdrs1;
-	wire rs2rs2;
-	wire rdprd;
-	wire rdprs1;
-	wire rs2prs2;
-	wire rs2prd;
-	wire uimm9_2;
-	wire ulwimm6_2;
-	wire ulwspimm7_2;
-	wire rdeq2;
-	wire rdeq1;
-	wire rs1eq2;
-	wire sbroffset8_1;
-	wire simm9_4;
-	wire simm5_0;
-	wire sjaloffset11_1;
-	wire sluimm17_12;
-	wire uimm5_0;
-	wire uswimm6_2;
-	wire uswspimm7_2;
-	assign rs2d[4:0] = i[6:2];
-	assign rdd[4:0] = i[11:7];
-	assign rdpd[4:0] = {2'b01, i[9:7]};
-	assign rs2pd[4:0] = {2'b01, i[4:2]};
-	assign l1[6:0] = o[6:0];
-	assign l1[11:7] = ((((o[11:7] | ({5 {rdrd}} & rdd[4:0])) | ({5 {rdprd}} & rdpd[4:0])) | ({5 {rs2prd}} & rs2pd[4:0])) | ({5 {rdeq1}} & 5'd1)) | ({5 {rdeq2}} & 5'd2);
-	assign l1[14:12] = o[14:12];
-	assign l1[19:15] = ((o[19:15] | ({5 {rdrs1}} & rdd[4:0])) | ({5 {rdprs1}} & rdpd[4:0])) | ({5 {rs1eq2}} & 5'd2);
-	assign l1[24:20] = (o[24:20] | ({5 {rs2rs2}} & rs2d[4:0])) | ({5 {rs2prs2}} & rs2pd[4:0]);
-	assign l1[31:25] = o[31:25];
-	wire [5:0] simm5d;
-	wire [9:2] uimm9d;
-	wire [9:4] simm9d;
-	wire [6:2] ulwimm6d;
-	wire [7:2] ulwspimm7d;
-	wire [5:0] uimm5d;
-	wire [20:1] sjald;
-	wire [31:12] sluimmd;
-	assign simm5d[5:0] = {i[12], i[6:2]};
-	assign uimm9d[9:2] = {i[10:7], i[12:11], i[5], i[6]};
-	assign simm9d[9:4] = {i[12], i[4:3], i[5], i[2], i[6]};
-	assign ulwimm6d[6:2] = {i[5], i[12:10], i[6]};
-	assign ulwspimm7d[7:2] = {i[3:2], i[12], i[6:4]};
-	assign uimm5d[5:0] = {i[12], i[6:2]};
-	assign sjald[11:1] = {i[12], i[8], i[10:9], i[6], i[7], i[2], i[11], i[5:4], i[3]};
-	assign sjald[20:12] = {9 {i[12]}};
-	assign sluimmd[31:12] = {{15 {i[12]}}, i[6:2]};
-	assign l2[31:20] = (((((((l1[31:20] | ({12 {simm5_0}} & {{7 {simm5d[5]}}, simm5d[4:0]})) | ({12 {uimm9_2}} & {2'b00, uimm9d[9:2], 2'b00})) | ({12 {simm9_4}} & {{3 {simm9d[9]}}, simm9d[8:4], 4'b0000})) | ({12 {ulwimm6_2}} & {5'b00000, ulwimm6d[6:2], 2'b00})) | ({12 {ulwspimm7_2}} & {4'b0000, ulwspimm7d[7:2], 2'b00})) | ({12 {uimm5_0}} & {6'b000000, uimm5d[5:0]})) | ({12 {sjaloffset11_1}} & {sjald[20], sjald[10:1], sjald[11]})) | ({12 {sluimm17_12}} & sluimmd[31:20]);
-	assign l2[19:12] = (l1[19:12] | ({8 {sjaloffset11_1}} & sjald[19:12])) | ({8 {sluimm17_12}} & sluimmd[19:12]);
-	assign l2[11:0] = l1[11:0];
-	wire [8:1] sbr8d;
-	wire [6:2] uswimm6d;
-	wire [7:2] uswspimm7d;
-	assign sbr8d[8:1] = {i[12], i[6], i[5], i[2], i[11], i[10], i[4], i[3]};
-	assign uswimm6d[6:2] = {i[5], i[12:10], i[6]};
-	assign uswspimm7d[7:2] = {i[8:7], i[12:9]};
-	assign l3[31:25] = ((l2[31:25] | ({7 {sbroffset8_1}} & {{4 {sbr8d[8]}}, sbr8d[7:5]})) | ({7 {uswimm6_2}} & {5'b00000, uswimm6d[6:5]})) | ({7 {uswspimm7_2}} & {4'b0000, uswspimm7d[7:5]});
-	assign l3[24:12] = l2[24:12];
-	assign l3[11:7] = ((l2[11:7] | ({5 {sbroffset8_1}} & {sbr8d[4:1], sbr8d[8]})) | ({5 {uswimm6_2}} & {uswimm6d[4:2], 2'b00})) | ({5 {uswspimm7_2}} & {uswspimm7d[4:2], 2'b00});
-	assign l3[6:0] = l2[6:0];
-	assign dout[31:0] = l3[31:0] & {32 {legal}};
-	assign rdrd = ((((((((((((!i[14] & i[6]) & i[1]) | (((!i[15] & i[14]) & i[11]) & i[0])) | ((!i[14] & i[5]) & i[1])) | (((!i[15] & i[14]) & i[10]) & i[0])) | ((!i[14] & i[4]) & i[1])) | (((!i[15] & i[14]) & i[9]) & i[0])) | ((!i[14] & i[3]) & i[1])) | (((!i[15] & i[14]) & !i[8]) & i[0])) | ((!i[14] & i[2]) & i[1])) | (((!i[15] & i[14]) & i[7]) & i[0])) | (!i[15] & i[1])) | ((!i[15] & !i[13]) & i[0]);
-	assign rdrs1 = ((((((((((((((!i[14] & i[12]) & i[11]) & i[1]) | (((!i[14] & i[12]) & i[10]) & i[1])) | (((!i[14] & i[12]) & i[9]) & i[1])) | (((!i[14] & i[12]) & i[8]) & i[1])) | (((!i[14] & i[12]) & i[7]) & i[1])) | (((((((!i[14] & !i[12]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1])) | (((!i[14] & i[12]) & i[6]) & i[1])) | (((!i[14] & i[12]) & i[5]) & i[1])) | (((!i[14] & i[12]) & i[4]) & i[1])) | (((!i[14] & i[12]) & i[3]) & i[1])) | (((!i[14] & i[12]) & i[2]) & i[1])) | (((!i[15] & !i[14]) & !i[13]) & i[0])) | ((!i[15] & !i[14]) & i[1]);
-	assign rs2rs2 = ((((((i[15] & i[6]) & i[1]) | ((i[15] & i[5]) & i[1])) | ((i[15] & i[4]) & i[1])) | ((i[15] & i[3]) & i[1])) | ((i[15] & i[2]) & i[1])) | ((i[15] & i[14]) & i[1]);
-	assign rdprd = ((i[15] & !i[14]) & !i[13]) & i[0];
-	assign rdprs1 = (((i[15] & !i[13]) & i[0]) | ((i[15] & i[14]) & i[0])) | ((i[14] & !i[1]) & !i[0]);
-	assign rs2prs2 = (((((i[15] & !i[14]) & !i[13]) & i[11]) & i[10]) & i[0]) | ((i[15] & !i[1]) & !i[0]);
-	assign rs2prd = (!i[15] & !i[1]) & !i[0];
-	assign uimm9_2 = (!i[14] & !i[1]) & !i[0];
-	assign ulwimm6_2 = ((!i[15] & i[14]) & !i[1]) & !i[0];
-	assign ulwspimm7_2 = (!i[15] & i[14]) & i[1];
-	assign rdeq2 = ((((((!i[15] & i[14]) & i[13]) & !i[11]) & !i[10]) & !i[9]) & i[8]) & !i[7];
-	assign rdeq1 = ((((((((((((!i[14] & i[12]) & i[11]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1]) | ((((((((!i[14] & i[12]) & i[10]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1])) | ((((((((!i[14] & i[12]) & i[9]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1])) | ((((((((!i[14] & i[12]) & i[8]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1])) | ((((((((!i[14] & i[12]) & i[7]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1])) | ((!i[15] & !i[14]) & i[13]);
-	assign rs1eq2 = ((((((((!i[15] & i[14]) & i[13]) & !i[11]) & !i[10]) & !i[9]) & i[8]) & !i[7]) | (i[14] & i[1])) | ((!i[14] & !i[1]) & !i[0]);
-	assign sbroffset8_1 = (i[15] & i[14]) & i[0];
-	assign simm9_4 = ((((((!i[15] & i[14]) & i[13]) & !i[11]) & !i[10]) & !i[9]) & i[8]) & !i[7];
-	assign simm5_0 = ((((!i[14] & !i[13]) & i[11]) & !i[10]) & i[0]) | ((!i[15] & !i[13]) & i[0]);
-	assign sjaloffset11_1 = !i[14] & i[13];
-	assign sluimm17_12 = ((((((!i[15] & i[14]) & i[13]) & i[7]) | (((!i[15] & i[14]) & i[13]) & !i[8])) | (((!i[15] & i[14]) & i[13]) & i[9])) | (((!i[15] & i[14]) & i[13]) & i[10])) | (((!i[15] & i[14]) & i[13]) & i[11]);
-	assign uimm5_0 = ((((i[15] & !i[14]) & !i[13]) & !i[11]) & i[0]) | ((!i[15] & !i[14]) & i[1]);
-	assign uswimm6_2 = (i[15] & !i[1]) & !i[0];
-	assign uswspimm7_2 = (i[15] & i[14]) & i[1];
-	assign o[31] = 1'b0;
-	assign o[30] = ((((((i[15] & !i[14]) & !i[13]) & i[10]) & !i[6]) & !i[5]) & i[0]) | (((((i[15] & !i[14]) & !i[13]) & !i[11]) & i[10]) & i[0]);
-	assign o[29] = 1'b0;
-	assign o[28] = 1'b0;
-	assign o[27] = 1'b0;
-	assign o[26] = 1'b0;
-	assign o[25] = 1'b0;
-	assign o[24] = 1'b0;
-	assign o[23] = 1'b0;
-	assign o[22] = 1'b0;
-	assign o[21] = 1'b0;
-	assign o[20] = (((((((((((!i[14] & i[12]) & !i[11]) & !i[10]) & !i[9]) & !i[8]) & !i[7]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1];
-	assign o[19] = 1'b0;
-	assign o[18] = 1'b0;
-	assign o[17] = 1'b0;
-	assign o[16] = 1'b0;
-	assign o[15] = 1'b0;
-	assign o[14] = ((((((i[15] & !i[14]) & !i[13]) & !i[11]) & i[0]) | ((((i[15] & !i[14]) & !i[13]) & !i[10]) & i[0])) | ((((i[15] & !i[14]) & !i[13]) & i[6]) & i[0])) | ((((i[15] & !i[14]) & !i[13]) & i[5]) & i[0]);
-	assign o[13] = ((((((i[15] & !i[14]) & !i[13]) & i[11]) & !i[10]) & i[0]) | (((((i[15] & !i[14]) & !i[13]) & i[11]) & i[6]) & i[0])) | (i[14] & !i[0]);
-	assign o[12] = ((((((((i[15] & !i[14]) & !i[13]) & i[6]) & i[5]) & i[0]) | ((((i[15] & !i[14]) & !i[13]) & !i[11]) & i[0])) | ((((i[15] & !i[14]) & !i[13]) & !i[10]) & i[0])) | ((!i[15] & !i[14]) & i[1])) | ((i[15] & i[14]) & i[13]);
-	assign o[11] = 1'b0;
-	assign o[10] = 1'b0;
-	assign o[9] = 1'b0;
-	assign o[8] = 1'b0;
-	assign o[7] = 1'b0;
-	assign o[6] = ((((((((i[15] & !i[14]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & !i[0]) | (!i[14] & i[13])) | ((i[15] & i[14]) & i[0]);
-	assign o[5] = ((((((((i[15] & !i[0]) | ((i[15] & i[11]) & i[10])) | (i[13] & !i[8])) | (i[13] & i[7])) | (i[13] & i[9])) | (i[13] & i[10])) | (i[13] & i[11])) | (!i[14] & i[13])) | (i[15] & i[14]);
-	assign o[4] = (((((((((((((!i[14] & !i[11]) & !i[10]) & !i[9]) & !i[8]) & !i[7]) & !i[0]) | ((!i[15] & !i[14]) & !i[0])) | ((!i[14] & i[6]) & !i[0])) | ((!i[15] & i[14]) & i[0])) | ((!i[14] & i[5]) & !i[0])) | ((!i[14] & i[4]) & !i[0])) | ((!i[14] & !i[13]) & i[0])) | ((!i[14] & i[3]) & !i[0])) | ((!i[14] & i[2]) & !i[0]);
-	assign o[3] = !i[14] & i[13];
-	assign o[2] = ((((((((((((((((((!i[14] & i[12]) & i[11]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1]) | ((((((((!i[14] & i[12]) & i[10]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1])) | ((((((((!i[14] & i[12]) & i[9]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1])) | ((((((((!i[14] & i[12]) & i[8]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1])) | ((((((((!i[14] & i[12]) & i[7]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & i[1])) | ((((((((i[15] & !i[14]) & !i[12]) & !i[6]) & !i[5]) & !i[4]) & !i[3]) & !i[2]) & !i[0])) | ((!i[15] & i[13]) & !i[8])) | ((!i[15] & i[13]) & i[7])) | ((!i[15] & i[13]) & i[9])) | ((!i[15] & i[13]) & i[10])) | ((!i[15] & i[13]) & i[11])) | (!i[14] & i[13]);
-	assign o[1] = 1'b1;
-	assign o[0] = 1'b1;
-	assign legal = (((((((((((((((((((((((((((((((((!i[13] & !i[12]) & i[11]) & i[1]) & !i[0]) | ((((!i[13] & !i[12]) & i[6]) & i[1]) & !i[0])) | (((!i[15] & !i[13]) & i[11]) & !i[1])) | ((((!i[13] & !i[12]) & i[5]) & i[1]) & !i[0])) | ((((!i[13] & !i[12]) & i[10]) & i[1]) & !i[0])) | (((!i[15] & !i[13]) & i[6]) & !i[1])) | (((i[15] & !i[12]) & !i[1]) & i[0])) | ((((!i[13] & !i[12]) & i[9]) & i[1]) & !i[0])) | (((!i[12] & i[6]) & !i[1]) & i[0])) | (((!i[15] & !i[13]) & i[5]) & !i[1])) | ((((!i[13] & !i[12]) & i[8]) & i[1]) & !i[0])) | (((!i[12] & i[5]) & !i[1]) & i[0])) | (((!i[15] & !i[13]) & i[10]) & !i[1])) | ((((!i[13] & !i[12]) & i[7]) & i[1]) & !i[0])) | ((((i[12] & i[11]) & !i[10]) & !i[1]) & i[0])) | (((!i[15] & !i[13]) & i[9]) & !i[1])) | ((((!i[13] & !i[12]) & i[4]) & i[1]) & !i[0])) | (((i[13] & i[12]) & !i[1]) & i[0])) | (((!i[15] & !i[13]) & i[8]) & !i[1])) | ((((!i[13] & !i[12]) & i[3]) & i[1]) & !i[0])) | (((i[13] & i[4]) & !i[1]) & i[0])) | ((((!i[13] & !i[12]) & i[2]) & i[1]) & !i[0])) | (((!i[15] & !i[13]) & i[7]) & !i[1])) | (((i[13] & i[3]) & !i[1]) & i[0])) | (((i[13] & i[2]) & !i[1]) & i[0])) | ((i[14] & !i[13]) & !i[1])) | (((!i[14] & !i[12]) & !i[1]) & i[0])) | ((((i[15] & !i[13]) & i[12]) & i[1]) & !i[0])) | ((((!i[15] & !i[13]) & !i[12]) & i[1]) & !i[0])) | (((!i[15] & !i[13]) & i[12]) & !i[1])) | ((i[14] & !i[13]) & !i[0]);
-endmodule
-module eb1_ifu_iccm_mem (
-	VPWR,
-	VGND,
-	clk,
-	active_clk,
-	rst_l,
-	clk_override,
-	iccm_wren,
-	iccm_rden,
-	iccm_rw_addr,
-	iccm_buf_correct_ecc,
-	iccm_correction_state,
-	iccm_wr_size,
-	iccm_wr_data,
-	iccm_ext_in_pkt,
-	iccm_rd_data,
-	iccm_rd_data_ecc,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire VPWR;
-	input wire VGND;
-	input wire clk;
-	input wire active_clk;
-	input wire rst_l;
-	input wire clk_override;
-	input wire iccm_wren;
-	input wire iccm_rden;
-	input wire [pt[936-:9] - 1:1] iccm_rw_addr;
-	input wire iccm_buf_correct_ecc;
-	input wire iccm_correction_state;
-	input wire [2:0] iccm_wr_size;
-	input wire [77:0] iccm_wr_data;
-	input wire [(pt[909-:9] * 12) - 1:0] iccm_ext_in_pkt;
-	output wire [63:0] iccm_rd_data;
-	output wire [77:0] iccm_rd_data_ecc;
-	input wire scan_mode;
-	wire [pt[909-:9] - 1:0] wren_bank;
-	wire [pt[909-:9] - 1:0] rden_bank;
-	wire [pt[909-:9] - 1:0] iccm_clken;
-	wire [((pt[936-:9] - 1) >= pt[945-:9] ? (pt[909-:9] * (((pt[936-:9] - 1) - pt[945-:9]) + 1)) + (pt[945-:9] - 1) : (pt[909-:9] * ((pt[945-:9] - (pt[936-:9] - 1)) + 1)) + (pt[936-:9] - 2)):((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1)] addr_bank;
-	wire [(pt[909-:9] * 39) - 1:0] iccm_bank_dout;
-	wire [(pt[909-:9] * 39) - 1:0] iccm_bank_dout_fn;
-	wire [(pt[909-:9] * 39) - 1:0] iccm_bank_wr_data;
-	wire [pt[936-:9] - 1:1] addr_bank_inc;
-	wire [pt[954-:9]:2] iccm_rd_addr_hi_q;
-	wire [pt[954-:9]:1] iccm_rd_addr_lo_q;
-	wire [63:0] iccm_rd_data_pre;
-	wire [63:0] iccm_data;
-	wire [1:0] addr_incr;
-	wire [(pt[909-:9] * 39) - 1:0] iccm_bank_wr_data_vec;
-	wire [((pt[936-:9] - 1) >= 2 ? (2 * (pt[936-:9] - 2)) + 1 : (2 * (4 - pt[936-:9])) + (pt[936-:9] - 2)):((pt[936-:9] - 1) >= 2 ? 2 : pt[936-:9] - 1)] redundant_address;
-	wire [77:0] redundant_data;
-	wire [1:0] redundant_valid;
-	wire [pt[909-:9] - 1:0] sel_red1;
-	wire [pt[909-:9] - 1:0] sel_red0;
-	wire [pt[909-:9] - 1:0] sel_red1_q;
-	wire [pt[909-:9] - 1:0] sel_red0_q;
-	wire [38:0] redundant_data0_in;
-	wire [38:0] redundant_data1_in;
-	wire redundant_lru;
-	wire redundant_lru_in;
-	wire redundant_lru_en;
-	wire redundant_data0_en;
-	wire redundant_data1_en;
-	wire r0_addr_en;
-	wire r1_addr_en;
-	assign addr_incr[1:0] = (iccm_wr_size[1:0] == 2'b11 ? 2'b10 : 2'b01);
-	assign addr_bank_inc[pt[936-:9] - 1:1] = iccm_rw_addr[pt[936-:9] - 1:1] + addr_incr[1:0];
-	generate
-		genvar i;
-		for (i = 0; i < (pt[909-:9] / 2); i = i + 1) begin : mem_bank_data
-			assign iccm_bank_wr_data_vec[(2 * i) * 39+:39] = iccm_wr_data[38:0];
-			assign iccm_bank_wr_data_vec[((2 * i) + 1) * 39+:39] = iccm_wr_data[77:39];
-		end
-	endgenerate
-	generate
-		for (i = 0; i < pt[909-:9]; i = i + 1) begin : mem_bank
-			assign wren_bank[i] = iccm_wren & ((iccm_rw_addr[pt[954-:9]:2] == i) | (addr_bank_inc[pt[954-:9]:2] == i));
-			assign iccm_bank_wr_data[i * 39+:39] = iccm_bank_wr_data_vec[i * 39+:39];
-			assign rden_bank[i] = iccm_rden & ((iccm_rw_addr[pt[954-:9]:2] == i) | (addr_bank_inc[pt[954-:9]:2] == i));
-			assign iccm_clken[i] = (wren_bank[i] | rden_bank[i]) | clk_override;
-			assign addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)) + ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) >= pt[945-:9] ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)) - 1) : pt[945-:9] - (((pt[936-:9] - 1) >= pt[945-:9] ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)) - 1) - (pt[936-:9] - 1))) : (((i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)) + ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) >= pt[945-:9] ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)) - 1) : pt[945-:9] - (((pt[936-:9] - 1) >= pt[945-:9] ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)) - 1) - (pt[936-:9] - 1)))) + ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)) - 1)-:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)] = (wren_bank[i] ? iccm_rw_addr[pt[936-:9] - 1:pt[945-:9]] : (addr_bank_inc[pt[954-:9]:2] == i ? addr_bank_inc[pt[936-:9] - 1:pt[945-:9]] : iccm_rw_addr[pt[936-:9] - 1:pt[945-:9]]));
-			if (pt[917-:8] == 6) begin : iccm
-				ram_64x39 iccm_bank(
-					.CLK(clk),
-					.ME(iccm_clken[i]),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1) + (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1))+:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)]),
-					.D(iccm_bank_wr_data[(i * 39) + 38-:39]),
-					.Q(iccm_bank_dout[(i * 39) + 38-:39]),
-					.ROP(),
-					.TEST1(iccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(iccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(iccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(iccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(iccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(iccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(iccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(iccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(iccm_ext_in_pkt[i * 12])
-				);
-			end
-			else if (pt[917-:8] == 7) begin : iccm
-				ram_128x39 iccm_bank(
-					.CLK(clk),
-					.ME(iccm_clken[i]),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1) + (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1))+:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)]),
-					.D(iccm_bank_wr_data[(i * 39) + 38-:39]),
-					.Q(iccm_bank_dout[(i * 39) + 38-:39]),
-					.ROP(),
-					.TEST1(iccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(iccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(iccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(iccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(iccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(iccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(iccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(iccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(iccm_ext_in_pkt[i * 12])
-				);
-			end
-			else if (pt[917-:8] == 8) begin : iccm
-				sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-					.vccd1(VPWR),
-					.vssd1(VGND),
-					.clk0(clk),
-					.csb0(~iccm_clken[i]),
-					.web0(~wren_bank[i]),
-					.wmask0(4'hf),
-					.addr0(addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1) + (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1))+:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)]),
-					.din0(iccm_bank_wr_data[(i * 39) + 31-:32]),
-					.dout0(iccm_bank_dout[(i * 39) + 31-:32]),
-					.clk1(clk),
-					.csb1(1'b1),
-					.addr1(8'h00),
-					.dout1()
-				);
-			end
-			else if (pt[917-:8] == 9) begin : iccm
-				ram_512x39 iccm_bank(
-					.CLK(clk),
-					.ME(iccm_clken[i]),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1) + (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1))+:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)]),
-					.D(iccm_bank_wr_data[(i * 39) + 38-:39]),
-					.Q(iccm_bank_dout[(i * 39) + 38-:39]),
-					.ROP(),
-					.TEST1(iccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(iccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(iccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(iccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(iccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(iccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(iccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(iccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(iccm_ext_in_pkt[i * 12])
-				);
-			end
-			else if (pt[917-:8] == 10) begin : iccm
-				sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-					.vccd1(VPWR),
-					.vssd1(VGND),
-					.clk0(clk),
-					.csb0(~iccm_clken[i]),
-					.web0(~wren_bank[i]),
-					.wmask0(4'hf),
-					.addr0(addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1) + (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1))+:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)]),
-					.din0(iccm_bank_wr_data[i * 39+:39]),
-					.dout0(iccm_bank_dout[i * 39+:39]),
-					.clk1(clk),
-					.csb1(1'b1),
-					.addr1(8'h00),
-					.dout1()
-				);
-			end
-			else if (pt[917-:8] == 11) begin : iccm
-				ram_2048x39 iccm_bank(
-					.CLK(clk),
-					.ME(iccm_clken[i]),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1) + (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1))+:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)]),
-					.D(iccm_bank_wr_data[(i * 39) + 38-:39]),
-					.Q(iccm_bank_dout[(i * 39) + 38-:39]),
-					.ROP(),
-					.TEST1(iccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(iccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(iccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(iccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(iccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(iccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(iccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(iccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(iccm_ext_in_pkt[i * 12])
-				);
-			end
-			else if (pt[917-:8] == 12) begin : iccm
-				ram_4096x39 iccm_bank(
-					.CLK(clk),
-					.ME(iccm_clken[i]),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1) + (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1))+:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)]),
-					.D(iccm_bank_wr_data[(i * 39) + 38-:39]),
-					.Q(iccm_bank_dout[(i * 39) + 38-:39]),
-					.ROP(),
-					.TEST1(iccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(iccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(iccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(iccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(iccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(iccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(iccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(iccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(iccm_ext_in_pkt[i * 12])
-				);
-			end
-			else if (pt[917-:8] == 13) begin : iccm
-				ram_8192x39 iccm_bank(
-					.CLK(clk),
-					.ME(iccm_clken[i]),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1) + (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1))+:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)]),
-					.D(iccm_bank_wr_data[(i * 39) + 38-:39]),
-					.Q(iccm_bank_dout[(i * 39) + 38-:39]),
-					.ROP(),
-					.TEST1(iccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(iccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(iccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(iccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(iccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(iccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(iccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(iccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(iccm_ext_in_pkt[i * 12])
-				);
-			end
-			else if (pt[917-:8] == 14) begin : iccm
-				ram_16384x39 iccm_bank(
-					.CLK(clk),
-					.ME(iccm_clken[i]),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1) + (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1))+:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)]),
-					.D(iccm_bank_wr_data[(i * 39) + 38-:39]),
-					.Q(iccm_bank_dout[(i * 39) + 38-:39]),
-					.ROP(),
-					.TEST1(iccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(iccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(iccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(iccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(iccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(iccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(iccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(iccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(iccm_ext_in_pkt[i * 12])
-				);
-			end
-			else begin : iccm
-				ram_32768x39 iccm_bank(
-					.CLK(clk),
-					.ME(iccm_clken[i]),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[936-:9] - 1) >= pt[945-:9] ? pt[945-:9] : pt[936-:9] - 1) + (i * ((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1))+:((pt[936-:9] - 1) >= pt[945-:9] ? ((pt[936-:9] - 1) - pt[945-:9]) + 1 : (pt[945-:9] - (pt[936-:9] - 1)) + 1)]),
-					.D(iccm_bank_wr_data[(i * 39) + 38-:39]),
-					.Q(iccm_bank_dout[(i * 39) + 38-:39]),
-					.ROP(),
-					.TEST1(iccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(iccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(iccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(iccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(iccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(iccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(iccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(iccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(iccm_ext_in_pkt[i * 12])
-				);
-			end
-			assign sel_red1[i] = redundant_valid[1] & (((iccm_rw_addr[pt[936-:9] - 1:2] == redundant_address[((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) : ((((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1)))) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1)-:((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])]) & (iccm_rw_addr[3:2] == i)) | ((addr_bank_inc[pt[936-:9] - 1:2] == redundant_address[((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) : ((((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1)))) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1)-:((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])]) & (addr_bank_inc[3:2] == i)));
-			assign sel_red0[i] = redundant_valid[0] & (((iccm_rw_addr[pt[936-:9] - 1:2] == redundant_address[((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) : (((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1)-:((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])]) & (iccm_rw_addr[3:2] == i)) | ((addr_bank_inc[pt[936-:9] - 1:2] == redundant_address[((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) : (((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1)-:((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])]) & (addr_bank_inc[3:2] == i)));
-			rvdff #(.WIDTH(1)) selred0(
-				.rst_l(rst_l),
-				.clk(active_clk),
-				.din(sel_red0[i]),
-				.dout(sel_red0_q[i])
-			);
-			rvdff #(.WIDTH(1)) selred1(
-				.rst_l(rst_l),
-				.clk(active_clk),
-				.din(sel_red1[i]),
-				.dout(sel_red1_q[i])
-			);
-			assign iccm_bank_dout_fn[(i * 39) + 38-:39] = (({39 {sel_red1_q[i]}} & redundant_data[77-:39]) | ({39 {sel_red0_q[i]}} & redundant_data[38-:39])) | ({39 {~sel_red0_q[i] & ~sel_red1_q[i]}} & iccm_bank_dout[(i * 39) + 38-:39]);
-		end
-	endgenerate
-	assign r0_addr_en = ~redundant_lru & iccm_buf_correct_ecc;
-	assign r1_addr_en = redundant_lru & iccm_buf_correct_ecc;
-	assign redundant_lru_en = iccm_buf_correct_ecc | (((|sel_red0[pt[909-:9] - 1:0] | |sel_red1[pt[909-:9] - 1:0]) & iccm_rden) & iccm_correction_state);
-	assign redundant_lru_in = (iccm_buf_correct_ecc ? ~redundant_lru : (|sel_red0[pt[909-:9] - 1:0] ? 1'b1 : 1'b0));
-	rvdffs red_lru(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.en(redundant_lru_en),
-		.din(redundant_lru_in),
-		.dout(redundant_lru)
-	);
-	rvdffs #(.WIDTH(pt[936-:9] - 2)) r0_address(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.en(r0_addr_en),
-		.din(iccm_rw_addr[pt[936-:9] - 1:2]),
-		.dout(redundant_address[((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) : (((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1)-:((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])])
-	);
-	rvdffs #(.WIDTH(pt[936-:9] - 2)) r1_address(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.en(r1_addr_en),
-		.din(iccm_rw_addr[pt[936-:9] - 1:2]),
-		.dout(redundant_address[((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) : ((((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1) - (pt[936-:9] - 1)))) + ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])) - 1)-:((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9])])
-	);
-	rvdffs #(.WIDTH(1)) r0_valid(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.en(r0_addr_en),
-		.din(1'b1),
-		.dout(redundant_valid[0])
-	);
-	rvdffs #(.WIDTH(1)) r1_valid(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.en(r1_addr_en),
-		.din(1'b1),
-		.dout(redundant_valid[1])
-	);
-	assign redundant_data0_en = ((((iccm_rw_addr[pt[936-:9] - 1:3] == redundant_address[((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) : (((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) + ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])) - 1)-:((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])]) & ((iccm_rw_addr[2] == redundant_address[((pt[936-:9] - 1) >= 2 ? 2 : pt[936-:9] - 1)]) | (iccm_wr_size[1:0] == 2'b11))) & redundant_valid[0]) & iccm_wren) | (~redundant_lru & iccm_buf_correct_ecc);
-	assign redundant_data0_in[38:0] = (((iccm_rw_addr[2] == redundant_address[((pt[936-:9] - 1) >= 2 ? 2 : pt[936-:9] - 1)]) & iccm_rw_addr[2]) | (redundant_address[((pt[936-:9] - 1) >= 2 ? 2 : pt[936-:9] - 1)] & (iccm_wr_size[1:0] == 2'b11)) ? iccm_wr_data[77:39] : iccm_wr_data[38:0]);
-	rvdffs #(.WIDTH(39)) r0_data(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.en(redundant_data0_en),
-		.din(redundant_data0_in[38:0]),
-		.dout(redundant_data[38-:39])
-	);
-	assign redundant_data1_en = ((((iccm_rw_addr[pt[936-:9] - 1:3] == redundant_address[((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])) - 1) - (pt[936-:9] - 1))) : ((((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])) - 1) : 2 - (((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 1 : ((pt[936-:9] - 1) + ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])) - 1) - (pt[936-:9] - 1)))) + ((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])) - 1)-:((pt[936-:9] - 1) >= 3 ? pt[936-:9] - 3 : 5 - pt[936-:9])]) & ((iccm_rw_addr[2] == redundant_address[((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? 2 : pt[936-:9] - 1)]) | (iccm_wr_size[1:0] == 2'b11))) & redundant_valid[1]) & iccm_wren) | (redundant_lru & iccm_buf_correct_ecc);
-	assign redundant_data1_in[38:0] = (((iccm_rw_addr[2] == redundant_address[((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? 2 : pt[936-:9] - 1)]) & iccm_rw_addr[2]) | (redundant_address[((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) + ((pt[936-:9] - 1) >= 2 ? 2 : pt[936-:9] - 1)] & (iccm_wr_size[1:0] == 2'b11)) ? iccm_wr_data[77:39] : iccm_wr_data[38:0]);
-	rvdffs #(.WIDTH(39)) r1_data(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.en(redundant_data1_en),
-		.din(redundant_data1_in[38:0]),
-		.dout(redundant_data[77-:39])
-	);
-	rvdffs #(.WIDTH(pt[954-:9])) rd_addr_lo_ff(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.din(iccm_rw_addr[pt[954-:9]:1]),
-		.dout(iccm_rd_addr_lo_q[pt[954-:9]:1]),
-		.en(1'b1)
-	);
-	rvdffs #(.WIDTH(pt[961-:7])) rd_addr_hi_ff(
-		.rst_l(rst_l),
-		.clk(active_clk),
-		.din(addr_bank_inc[pt[954-:9]:2]),
-		.dout(iccm_rd_addr_hi_q[pt[954-:9]:2]),
-		.en(1'b1)
-	);
-	assign iccm_rd_data_pre[63:0] = {iccm_bank_dout_fn[(iccm_rd_addr_hi_q * 39) + 31-:32], iccm_bank_dout_fn[(iccm_rd_addr_lo_q[pt[954-:9]:2] * 39) + 31-:32]};
-	function automatic [63:0] sv2v_cast_64;
-		input reg [63:0] inp;
-		sv2v_cast_64 = inp;
-	endfunction
-	assign iccm_data[63:0] = sv2v_cast_64({16'b0000000000000000, iccm_rd_data_pre[63:0] >> (16 * iccm_rd_addr_lo_q[1])});
-	assign iccm_rd_data[63:0] = {iccm_data[63:0]};
-	assign iccm_rd_data_ecc[77:0] = {iccm_bank_dout_fn[(iccm_rd_addr_hi_q * 39) + 38-:39], iccm_bank_dout_fn[(iccm_rd_addr_lo_q[pt[954-:9]:2] * 39) + 38-:39]};
-endmodule
-module eb1_ifu_ifc_ctl (
-	clk,
-	free_l2clk,
-	rst_l,
-	scan_mode,
-	ic_hit_f,
-	ifu_ic_mb_empty,
-	ifu_fb_consume1,
-	ifu_fb_consume2,
-	dec_tlu_flush_noredir_wb,
-	exu_flush_final,
-	exu_flush_path_final,
-	ifu_bp_hit_taken_f,
-	ifu_bp_btb_target_f,
-	ic_dma_active,
-	ic_write_stall,
-	dma_iccm_stall_any,
-	dec_tlu_mrac_ff,
-	ifc_fetch_addr_f,
-	ifc_fetch_addr_bf,
-	ifc_fetch_req_f,
-	ifu_pmu_fetch_stall,
-	ifc_fetch_uncacheable_bf,
-	ifc_fetch_req_bf,
-	ifc_fetch_req_bf_raw,
-	ifc_iccm_access_bf,
-	ifc_region_acc_fault_bf,
-	ifc_dma_access_ok
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire free_l2clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire ic_hit_f;
-	input wire ifu_ic_mb_empty;
-	input wire ifu_fb_consume1;
-	input wire ifu_fb_consume2;
-	input wire dec_tlu_flush_noredir_wb;
-	input wire exu_flush_final;
-	input wire [31:1] exu_flush_path_final;
-	input wire ifu_bp_hit_taken_f;
-	input wire [31:1] ifu_bp_btb_target_f;
-	input wire ic_dma_active;
-	input wire ic_write_stall;
-	input wire dma_iccm_stall_any;
-	input wire [31:0] dec_tlu_mrac_ff;
-	output wire [31:1] ifc_fetch_addr_f;
-	output wire [31:1] ifc_fetch_addr_bf;
-	output wire ifc_fetch_req_f;
-	output wire ifu_pmu_fetch_stall;
-	output wire ifc_fetch_uncacheable_bf;
-	output wire ifc_fetch_req_bf;
-	output wire ifc_fetch_req_bf_raw;
-	output wire ifc_iccm_access_bf;
-	output wire ifc_region_acc_fault_bf;
-	output wire ifc_dma_access_ok;
-	wire [31:1] fetch_addr_bf;
-	wire [31:1] fetch_addr_next;
-	wire [3:0] fb_write_f;
-	wire [3:0] fb_write_ns;
-	wire fb_full_f_ns;
-	wire fb_full_f;
-	wire fb_right;
-	wire fb_right2;
-	wire fb_left;
-	wire wfm;
-	wire idle;
-	wire sel_last_addr_bf;
-	wire sel_next_addr_bf;
-	wire miss_f;
-	wire miss_a;
-	wire flush_fb;
-	wire dma_iccm_stall_any_f;
-	wire mb_empty_mod;
-	wire goto_idle;
-	wire leave_idle;
-	wire fetch_bf_en;
-	wire line_wrap;
-	wire fetch_addr_next_1;
-	wire [1:0] state;
-	wire [1:0] next_state;
-	wire dma_stall;
-	assign dma_stall = ic_dma_active | dma_iccm_stall_any_f;
-	generate
-		if (pt[2130-:5] == 1) begin
-			wire sel_btb_addr_bf;
-			assign sel_last_addr_bf = ~exu_flush_final & (~ifc_fetch_req_f | ~ic_hit_f);
-			assign sel_btb_addr_bf = ((~exu_flush_final & ifc_fetch_req_f) & ifu_bp_hit_taken_f) & ic_hit_f;
-			assign sel_next_addr_bf = ((~exu_flush_final & ifc_fetch_req_f) & ~ifu_bp_hit_taken_f) & ic_hit_f;
-			assign fetch_addr_bf[31:1] = ((({31 {exu_flush_final}} & exu_flush_path_final[31:1]) | ({31 {sel_last_addr_bf}} & ifc_fetch_addr_f[31:1])) | ({31 {sel_btb_addr_bf}} & {ifu_bp_btb_target_f[31:1]})) | ({31 {sel_next_addr_bf}} & {fetch_addr_next[31:1]});
-		end
-		else begin
-			assign sel_last_addr_bf = ~exu_flush_final & (~ifc_fetch_req_f | ~ic_hit_f);
-			assign sel_next_addr_bf = (~exu_flush_final & ifc_fetch_req_f) & ic_hit_f;
-			assign fetch_addr_bf[31:1] = (({31 {exu_flush_final}} & exu_flush_path_final[31:1]) | ({31 {sel_last_addr_bf}} & ifc_fetch_addr_f[31:1])) | ({31 {sel_next_addr_bf}} & {fetch_addr_next[31:1]});
-		end
-	endgenerate
-	assign fetch_addr_next[31:1] = {{ifc_fetch_addr_f[31:2]} + 31'b0000000000000000000000000000001, fetch_addr_next_1};
-	assign line_wrap = fetch_addr_next[pt[998-:7]] ^ ifc_fetch_addr_f[pt[998-:7]];
-	assign fetch_addr_next_1 = (line_wrap ? 1'b0 : ifc_fetch_addr_f[1]);
-	assign ifc_fetch_req_bf_raw = ~idle;
-	assign ifc_fetch_req_bf = (((ifc_fetch_req_bf_raw & ~(fb_full_f_ns & ~(ifu_fb_consume2 | ifu_fb_consume1))) & ~dma_stall) & ~ic_write_stall) & ~dec_tlu_flush_noredir_wb;
-	assign fetch_bf_en = exu_flush_final | ifc_fetch_req_f;
-	assign miss_f = (ifc_fetch_req_f & ~ic_hit_f) & ~exu_flush_final;
-	assign mb_empty_mod = (((ifu_ic_mb_empty | exu_flush_final) & ~dma_stall) & ~miss_f) & ~miss_a;
-	assign goto_idle = exu_flush_final & dec_tlu_flush_noredir_wb;
-	assign leave_idle = (exu_flush_final & ~dec_tlu_flush_noredir_wb) & idle;
-	assign next_state[1] = (((~state[1] & state[0]) & miss_f) & ~goto_idle) | ((state[1] & ~mb_empty_mod) & ~goto_idle);
-	assign next_state[0] = (~goto_idle & leave_idle) | (state[0] & ~goto_idle);
-	assign flush_fb = exu_flush_final;
-	assign fb_right = ((ifu_fb_consume1 & ~ifu_fb_consume2) & (~ifc_fetch_req_f | miss_f)) | (ifu_fb_consume2 & ifc_fetch_req_f);
-	assign fb_right2 = ifu_fb_consume2 & (~ifc_fetch_req_f | miss_f);
-	assign fb_left = (ifc_fetch_req_f & ~(ifu_fb_consume1 | ifu_fb_consume2)) & ~miss_f;
-	assign fb_write_ns[3:0] = (((({4 {flush_fb}} & 4'b0001) | ({4 {~flush_fb & fb_right}} & {1'b0, fb_write_f[3:1]})) | ({4 {~flush_fb & fb_right2}} & {2'b00, fb_write_f[3:2]})) | ({4 {~flush_fb & fb_left}} & {fb_write_f[2:0], 1'b0})) | ({4 {((~flush_fb & ~fb_right) & ~fb_right2) & ~fb_left}} & fb_write_f[3:0]);
-	assign fb_full_f_ns = fb_write_ns[3];
-	localparam [1:0] IDLE = 2'b00;
-	assign idle = state == IDLE;
-	localparam [1:0] WFM = 2'b11;
-	assign wfm = state == WFM;
-	rvdffie #(.WIDTH(10)) fbwrite_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.din({dma_iccm_stall_any, miss_f, ifc_fetch_req_bf, next_state[1:0], fb_full_f_ns, fb_write_ns[3:0]}),
-		.dout({dma_iccm_stall_any_f, miss_a, ifc_fetch_req_f, state[1:0], fb_full_f, fb_write_f[3:0]})
-	);
-	assign ifu_pmu_fetch_stall = wfm | (ifc_fetch_req_bf_raw & ((fb_full_f & ~((ifu_fb_consume2 | ifu_fb_consume1) | exu_flush_final)) | dma_stall));
-	assign ifc_fetch_addr_bf[31:1] = fetch_addr_bf[31:1];
-	rvdffpcie #(.WIDTH(31)) faddrf1_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(fetch_bf_en),
-		.din(fetch_addr_bf[31:1]),
-		.dout(ifc_fetch_addr_f[31:1])
-	);
-	generate
-		if (pt[927-:5]) begin
-			wire iccm_acc_in_region_bf;
-			wire iccm_acc_in_range_bf;
-			rvrangecheck #(
-				.CCM_SADR(pt[887-:36]),
-				.CCM_SIZE(pt[851-:14])
-			) iccm_rangecheck(
-				.addr({ifc_fetch_addr_bf[31:1], 1'b0}),
-				.in_range(iccm_acc_in_range_bf),
-				.in_region(iccm_acc_in_region_bf)
-			);
-			assign ifc_iccm_access_bf = iccm_acc_in_range_bf;
-			assign ifc_dma_access_ok = ((((~ifc_iccm_access_bf | (fb_full_f & ~(ifu_fb_consume2 | ifu_fb_consume1))) | (wfm & ~ifc_fetch_req_bf)) | idle) & ~exu_flush_final) | dma_iccm_stall_any_f;
-			assign ifc_region_acc_fault_bf = ~iccm_acc_in_range_bf & iccm_acc_in_region_bf;
-		end
-		else begin
-			assign ifc_iccm_access_bf = 1'b0;
-			assign ifc_dma_access_ok = 1'b0;
-			assign ifc_region_acc_fault_bf = 1'b0;
-		end
-	endgenerate
-	assign ifc_fetch_uncacheable_bf = ~dec_tlu_mrac_ff[{ifc_fetch_addr_bf[31:28], 1'b0}];
-endmodule
-module eb1_ifu_mem_ctl (
-	clk,
-	active_clk,
-	free_l2clk,
-	rst_l,
-	exu_flush_final,
-	dec_tlu_flush_lower_wb,
-	dec_tlu_flush_err_wb,
-	dec_tlu_i0_commit_cmt,
-	dec_tlu_force_halt,
-	ifc_fetch_addr_bf,
-	ifc_fetch_uncacheable_bf,
-	ifc_fetch_req_bf,
-	ifc_fetch_req_bf_raw,
-	ifc_iccm_access_bf,
-	ifc_region_acc_fault_bf,
-	ifc_dma_access_ok,
-	dec_tlu_fence_i_wb,
-	ifu_bp_hit_taken_f,
-	ifu_bp_inst_mask_f,
-	ifu_miss_state_idle,
-	ifu_ic_mb_empty,
-	ic_dma_active,
-	ic_write_stall,
-	ifu_pmu_ic_miss,
-	ifu_pmu_ic_hit,
-	ifu_pmu_bus_error,
-	ifu_pmu_bus_busy,
-	ifu_pmu_bus_trxn,
-	ifu_axi_awvalid,
-	ifu_axi_awid,
-	ifu_axi_awaddr,
-	ifu_axi_awregion,
-	ifu_axi_awlen,
-	ifu_axi_awsize,
-	ifu_axi_awburst,
-	ifu_axi_awlock,
-	ifu_axi_awcache,
-	ifu_axi_awprot,
-	ifu_axi_awqos,
-	ifu_axi_wvalid,
-	ifu_axi_wdata,
-	ifu_axi_wstrb,
-	ifu_axi_wlast,
-	ifu_axi_bready,
-	ifu_axi_arvalid,
-	ifu_axi_arready,
-	ifu_axi_arid,
-	ifu_axi_araddr,
-	ifu_axi_arregion,
-	ifu_axi_arlen,
-	ifu_axi_arsize,
-	ifu_axi_arburst,
-	ifu_axi_arlock,
-	ifu_axi_arcache,
-	ifu_axi_arprot,
-	ifu_axi_arqos,
-	ifu_axi_rvalid,
-	ifu_axi_rready,
-	ifu_axi_rid,
-	ifu_axi_rdata,
-	ifu_axi_rresp,
-	ifu_bus_clk_en,
-	dma_iccm_req,
-	dma_mem_addr,
-	dma_mem_sz,
-	dma_mem_write,
-	dma_mem_wdata,
-	dma_mem_tag,
-	iccm_dma_ecc_error,
-	iccm_dma_rvalid,
-	iccm_dma_rdata,
-	iccm_dma_rtag,
-	iccm_ready,
-	ic_rw_addr,
-	ic_wr_en,
-	ic_rd_en,
-	ic_wr_data,
-	ic_rd_data,
-	ic_debug_rd_data,
-	ictag_debug_rd_data,
-	ic_debug_wr_data,
-	ifu_ic_debug_rd_data,
-	ic_eccerr,
-	ic_parerr,
-	ic_debug_addr,
-	ic_debug_rd_en,
-	ic_debug_wr_en,
-	ic_debug_tag_array,
-	ic_debug_way,
-	ic_tag_valid,
-	ic_rd_hit,
-	ic_tag_perr,
-	iccm_rw_addr,
-	iccm_wren,
-	iccm_rden,
-	iccm_wr_data,
-	iccm_wr_size,
-	iccm_rd_data,
-	iccm_rd_data_ecc,
-	ifu_fetch_val,
-	ic_hit_f,
-	ic_access_fault_f,
-	ic_access_fault_type_f,
-	iccm_rd_ecc_single_err,
-	iccm_rd_ecc_double_err,
-	ic_error_start,
-	ifu_async_error_start,
-	iccm_dma_sb_error,
-	ic_fetch_val_f,
-	ic_data_f,
-	ic_premux_data,
-	ic_sel_premux_data,
-	dec_tlu_ic_diag_pkt,
-	dec_tlu_core_ecc_disable,
-	ifu_ic_debug_rd_data_valid,
-	iccm_buf_correct_ecc,
-	iccm_correction_state,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire active_clk;
-	input wire free_l2clk;
-	input wire rst_l;
-	input wire exu_flush_final;
-	input wire dec_tlu_flush_lower_wb;
-	input wire dec_tlu_flush_err_wb;
-	input wire dec_tlu_i0_commit_cmt;
-	input wire dec_tlu_force_halt;
-	input wire [31:1] ifc_fetch_addr_bf;
-	input wire ifc_fetch_uncacheable_bf;
-	input wire ifc_fetch_req_bf;
-	input wire ifc_fetch_req_bf_raw;
-	input wire ifc_iccm_access_bf;
-	input wire ifc_region_acc_fault_bf;
-	input wire ifc_dma_access_ok;
-	input wire dec_tlu_fence_i_wb;
-	input wire ifu_bp_hit_taken_f;
-	input wire ifu_bp_inst_mask_f;
-	output wire ifu_miss_state_idle;
-	output wire ifu_ic_mb_empty;
-	output wire ic_dma_active;
-	output wire ic_write_stall;
-	output wire ifu_pmu_ic_miss;
-	output wire ifu_pmu_ic_hit;
-	output wire ifu_pmu_bus_error;
-	output wire ifu_pmu_bus_busy;
-	output wire ifu_pmu_bus_trxn;
-	output wire ifu_axi_awvalid;
-	output wire [pt[826-:8] - 1:0] ifu_axi_awid;
-	output wire [31:0] ifu_axi_awaddr;
-	output wire [3:0] ifu_axi_awregion;
-	output wire [7:0] ifu_axi_awlen;
-	output wire [2:0] ifu_axi_awsize;
-	output wire [1:0] ifu_axi_awburst;
-	output wire ifu_axi_awlock;
-	output wire [3:0] ifu_axi_awcache;
-	output wire [2:0] ifu_axi_awprot;
-	output wire [3:0] ifu_axi_awqos;
-	output wire ifu_axi_wvalid;
-	output wire [63:0] ifu_axi_wdata;
-	output wire [7:0] ifu_axi_wstrb;
-	output wire ifu_axi_wlast;
-	output wire ifu_axi_bready;
-	output wire ifu_axi_arvalid;
-	input wire ifu_axi_arready;
-	output wire [pt[826-:8] - 1:0] ifu_axi_arid;
-	output wire [31:0] ifu_axi_araddr;
-	output wire [3:0] ifu_axi_arregion;
-	output wire [7:0] ifu_axi_arlen;
-	output wire [2:0] ifu_axi_arsize;
-	output wire [1:0] ifu_axi_arburst;
-	output wire ifu_axi_arlock;
-	output wire [3:0] ifu_axi_arcache;
-	output wire [2:0] ifu_axi_arprot;
-	output wire [3:0] ifu_axi_arqos;
-	input wire ifu_axi_rvalid;
-	output wire ifu_axi_rready;
-	input wire [pt[826-:8] - 1:0] ifu_axi_rid;
-	input wire [63:0] ifu_axi_rdata;
-	input wire [1:0] ifu_axi_rresp;
-	input wire ifu_bus_clk_en;
-	input wire dma_iccm_req;
-	input wire [31:0] dma_mem_addr;
-	input wire [2:0] dma_mem_sz;
-	input wire dma_mem_write;
-	input wire [63:0] dma_mem_wdata;
-	input wire [2:0] dma_mem_tag;
-	output wire iccm_dma_ecc_error;
-	output wire iccm_dma_rvalid;
-	output wire [63:0] iccm_dma_rdata;
-	output wire [2:0] iccm_dma_rtag;
-	output wire iccm_ready;
-	output wire [31:1] ic_rw_addr;
-	output wire [pt[1060-:7] - 1:0] ic_wr_en;
-	output wire ic_rd_en;
-	output wire [(pt[1189-:7] * 71) - 1:0] ic_wr_data;
-	input wire [63:0] ic_rd_data;
-	input wire [70:0] ic_debug_rd_data;
-	input wire [25:0] ictag_debug_rd_data;
-	output wire [70:0] ic_debug_wr_data;
-	output wire [70:0] ifu_ic_debug_rd_data;
-	input wire [pt[1189-:7] - 1:0] ic_eccerr;
-	input wire [pt[1189-:7] - 1:0] ic_parerr;
-	output wire [pt[1104-:9]:3] ic_debug_addr;
-	output wire ic_debug_rd_en;
-	output wire ic_debug_wr_en;
-	output wire ic_debug_tag_array;
-	output wire [pt[1060-:7] - 1:0] ic_debug_way;
-	output wire [pt[1060-:7] - 1:0] ic_tag_valid;
-	input wire [pt[1060-:7] - 1:0] ic_rd_hit;
-	input wire ic_tag_perr;
-	output wire [pt[936-:9] - 1:1] iccm_rw_addr;
-	output wire iccm_wren;
-	output wire iccm_rden;
-	output wire [77:0] iccm_wr_data;
-	output wire [2:0] iccm_wr_size;
-	input wire [63:0] iccm_rd_data;
-	input wire [77:0] iccm_rd_data_ecc;
-	input wire [1:0] ifu_fetch_val;
-	output wire ic_hit_f;
-	output wire [1:0] ic_access_fault_f;
-	output wire [1:0] ic_access_fault_type_f;
-	output wire iccm_rd_ecc_single_err;
-	output wire [1:0] iccm_rd_ecc_double_err;
-	output wire ic_error_start;
-	output wire ifu_async_error_start;
-	output wire iccm_dma_sb_error;
-	output wire [1:0] ic_fetch_val_f;
-	output wire [31:0] ic_data_f;
-	output wire [63:0] ic_premux_data;
-	output wire ic_sel_premux_data;
-	input wire [89:0] dec_tlu_ic_diag_pkt;
-	input wire dec_tlu_core_ecc_disable;
-	output wire ifu_ic_debug_rd_data_valid;
-	output wire iccm_buf_correct_ecc;
-	output reg iccm_correction_state;
-	input wire scan_mode;
-	localparam NUM_OF_BEATS = 8;
-	wire [31:3] ifu_ic_req_addr_f;
-	wire uncacheable_miss_in;
-	wire uncacheable_miss_ff;
-	wire bus_ifu_wr_en;
-	wire bus_ifu_wr_en_ff;
-	wire bus_ifu_wr_en_ff_q;
-	wire bus_ifu_wr_en_ff_wo_err;
-	wire [pt[1060-:7] - 1:0] bus_ic_wr_en;
-	wire reset_tag_valid_for_miss;
-	reg [pt[1027-:7] - 1:0] way_status;
-	wire [pt[1027-:7] - 1:0] way_status_mb_in;
-	wire [pt[1027-:7] - 1:0] way_status_rep_new;
-	wire [pt[1027-:7] - 1:0] way_status_mb_ff;
-	wire [pt[1027-:7] - 1:0] way_status_new;
-	wire [pt[1027-:7] - 1:0] way_status_hit_new;
-	wire [pt[1027-:7] - 1:0] way_status_new_w_debug;
-	wire [pt[1060-:7] - 1:0] tagv_mb_in;
-	wire [pt[1060-:7] - 1:0] tagv_mb_ff;
-	wire ifu_wr_data_comb_err;
-	wire ifu_byp_data_err_new;
-	wire [1:0] ifu_byp_data_err_f;
-	wire ifu_wr_cumulative_err_data;
-	wire ifu_wr_cumulative_err;
-	wire ifu_wr_data_comb_err_ff;
-	wire scnd_miss_index_match;
-	wire ifc_dma_access_q_ok;
-	wire ifc_iccm_access_f;
-	wire ifc_region_acc_fault_f;
-	wire ifc_region_acc_fault_final_f;
-	wire [1:0] ifc_bus_acc_fault_f;
-	wire ic_act_miss_f;
-	wire ic_miss_under_miss_f;
-	wire ic_ignore_2nd_miss_f;
-	wire ic_act_hit_f;
-	wire miss_pending;
-	wire [31:1] imb_in;
-	wire [31:1] imb_ff;
-	wire [31:pt[1182-:8] + 1] miss_addr_in;
-	wire [31:pt[1182-:8] + 1] miss_addr;
-	wire miss_wrap_f;
-	wire flush_final_f;
-	wire ifc_fetch_req_f;
-	wire ifc_fetch_req_f_raw;
-	wire fetch_req_f_qual;
-	wire ifc_fetch_req_qual_bf;
-	wire [pt[1060-:7] - 1:0] replace_way_mb_any;
-	wire last_beat;
-	wire reset_beat_cnt;
-	wire [pt[1182-:8]:3] ic_req_addr_bits_hi_3;
-	wire [pt[1182-:8]:3] ic_wr_addr_bits_hi_3;
-	wire [31:1] ifu_fetch_addr_int_f;
-	wire [31:1] ifu_ic_rw_int_addr;
-	wire crit_wd_byp_ok_ff;
-	wire ic_crit_wd_rdy_new_ff;
-	wire [79:0] ic_byp_data_only_pre_new;
-	wire [79:0] ic_byp_data_only_new;
-	wire ic_byp_hit_f;
-	wire ic_valid;
-	wire ic_valid_ff;
-	wire reset_all_tags;
-	wire ic_valid_w_debug;
-	wire [pt[1060-:7] - 1:0] ifu_tag_wren;
-	wire [pt[1060-:7] - 1:0] ifu_tag_wren_ff;
-	wire [pt[1060-:7] - 1:0] ic_debug_tag_wr_en;
-	wire [pt[1060-:7] - 1:0] ifu_tag_wren_w_debug;
-	wire [pt[1060-:7] - 1:0] ic_debug_way_ff;
-	wire ic_debug_rd_en_ff;
-	wire fetch_bf_f_c1_clken;
-	wire fetch_bf_f_c1_clk;
-	wire debug_c1_clken;
-	wire debug_c1_clk;
-	wire reset_ic_in;
-	wire reset_ic_ff;
-	wire [pt[1182-:8]:1] vaddr_f;
-	wire [31:1] ifu_status_wr_addr;
-	wire sel_mb_addr;
-	wire sel_mb_addr_ff;
-	wire sel_mb_status_addr;
-	wire [63:0] ic_final_data;
-	wire [pt[1104-:9]:pt[998-:7]] ifu_ic_rw_int_addr_ff;
-	wire [pt[1104-:9]:pt[998-:7]] ifu_status_wr_addr_ff;
-	wire [pt[1104-:9]:pt[998-:7]] ifu_ic_rw_int_addr_w_debug;
-	wire [pt[1104-:9]:pt[998-:7]] ifu_status_wr_addr_w_debug;
-	wire [pt[1027-:7] - 1:0] way_status_new_ff;
-	wire way_status_wr_en_ff;
-	wire [(pt[1015-:17] * pt[1027-:7]) - 1:0] way_status_out;
-	wire [1:0] ic_debug_way_enc;
-	wire [pt[826-:8] - 1:0] ifu_bus_rid_ff;
-	wire fetch_req_icache_f;
-	wire fetch_req_iccm_f;
-	wire ic_iccm_hit_f;
-	wire fetch_uncacheable_ff;
-	wire way_status_wr_en;
-	wire sel_byp_data;
-	wire sel_ic_data;
-	wire sel_iccm_data;
-	wire ic_rd_parity_final_err;
-	wire ic_act_miss_f_delayed;
-	wire bus_ifu_wr_data_error;
-	wire bus_ifu_wr_data_error_ff;
-	wire way_status_wr_en_w_debug;
-	wire ic_debug_tag_val_rd_out;
-	wire ifu_pmu_ic_miss_in;
-	wire ifu_pmu_ic_hit_in;
-	wire ifu_pmu_bus_error_in;
-	wire ifu_pmu_bus_trxn_in;
-	wire ifu_pmu_bus_busy_in;
-	wire ic_debug_ict_array_sel_in;
-	wire ic_debug_ict_array_sel_ff;
-	wire debug_data_clken;
-	wire last_data_recieved_in;
-	wire last_data_recieved_ff;
-	wire ifu_bus_rvalid;
-	wire ifu_bus_rvalid_ff;
-	wire ifu_bus_rvalid_unq_ff;
-	wire ifu_bus_arready_unq;
-	wire ifu_bus_arready_unq_ff;
-	wire ifu_bus_arvalid;
-	wire ifu_bus_arvalid_ff;
-	wire ifu_bus_arready;
-	wire ifu_bus_arready_ff;
-	wire [63:0] ifu_bus_rdata_ff;
-	wire [1:0] ifu_bus_rresp_ff;
-	wire ifu_bus_rsp_valid;
-	wire ifu_bus_rsp_ready;
-	wire [pt[826-:8] - 1:0] ifu_bus_rsp_tag;
-	wire [63:0] ifu_bus_rsp_rdata;
-	wire [1:0] ifu_bus_rsp_opc;
-	wire [pt[1084-:8] - 1:0] write_fill_data;
-	wire [pt[1084-:8] - 1:0] wr_data_c1_clk;
-	wire [pt[1084-:8] - 1:0] ic_miss_buff_data_valid_in;
-	wire [pt[1084-:8] - 1:0] ic_miss_buff_data_valid;
-	wire [pt[1084-:8] - 1:0] ic_miss_buff_data_error_in;
-	wire [pt[1084-:8] - 1:0] ic_miss_buff_data_error;
-	wire [pt[1182-:8]:1] byp_fetch_index;
-	wire [pt[1182-:8]:2] byp_fetch_index_0;
-	wire [pt[1182-:8]:2] byp_fetch_index_1;
-	wire [pt[1182-:8]:3] byp_fetch_index_inc;
-	wire [pt[1182-:8]:2] byp_fetch_index_inc_0;
-	wire [pt[1182-:8]:2] byp_fetch_index_inc_1;
-	wire miss_buff_hit_unq_f;
-	wire stream_hit_f;
-	wire stream_miss_f;
-	wire stream_eol_f;
-	wire crit_byp_hit_f;
-	wire [pt[826-:8] - 1:0] other_tag;
-	wire [((2 * pt[1084-:8]) * 32) - 1:0] ic_miss_buff_data;
-	wire [63:0] ic_miss_buff_half;
-	wire scnd_miss_req;
-	wire scnd_miss_req_q;
-	wire scnd_miss_req_in;
-	wire [pt[936-:9] - 1:2] iccm_ecc_corr_index_ff;
-	wire [pt[936-:9] - 1:2] iccm_ecc_corr_index_in;
-	wire [38:0] iccm_ecc_corr_data_ff;
-	wire iccm_ecc_write_status;
-	wire iccm_rd_ecc_single_err_ff;
-	wire iccm_error_start;
-	reg perr_state_en;
-	reg miss_state_en;
-	wire busclk;
-	wire busclk_force;
-	wire busclk_reset;
-	wire bus_ifu_bus_clk_en_ff;
-	wire bus_ifu_bus_clk_en;
-	wire ifc_bus_ic_req_ff_in;
-	wire ifu_bus_cmd_valid;
-	wire ifu_bus_cmd_ready;
-	wire bus_inc_data_beat_cnt;
-	wire bus_reset_data_beat_cnt;
-	wire bus_hold_data_beat_cnt;
-	wire bus_inc_cmd_beat_cnt;
-	wire bus_reset_cmd_beat_cnt_0;
-	wire bus_reset_cmd_beat_cnt_secondlast;
-	wire bus_hold_cmd_beat_cnt;
-	wire [pt[1174-:8] - 1:0] bus_new_data_beat_count;
-	wire [pt[1174-:8] - 1:0] bus_data_beat_count;
-	wire [pt[1174-:8] - 1:0] bus_new_cmd_beat_count;
-	wire [pt[1174-:8] - 1:0] bus_cmd_beat_count;
-	wire [pt[1174-:8] - 1:0] bus_new_rd_addr_count;
-	wire [pt[1174-:8] - 1:0] bus_rd_addr_count;
-	wire bus_cmd_sent;
-	wire bus_last_data_beat;
-	wire [pt[1060-:7] - 1:0] bus_wren;
-	wire [pt[1060-:7] - 1:0] bus_wren_last;
-	wire [pt[1060-:7] - 1:0] wren_reset_miss;
-	wire ifc_dma_access_ok_d;
-	wire ifc_dma_access_ok_prev;
-	wire bus_cmd_req_in;
-	wire bus_cmd_req_hold;
-	wire second_half_available;
-	wire write_ic_16_bytes;
-	wire ifc_region_acc_fault_final_bf;
-	wire ifc_region_acc_fault_memory_bf;
-	wire ifc_region_acc_fault_memory_f;
-	wire ifc_region_acc_okay;
-	wire iccm_correct_ecc;
-	wire dma_sb_err_state;
-	wire dma_sb_err_state_ff;
-	wire two_byte_instr;
-	wire [2:0] miss_state;
-	reg [2:0] miss_nxtstate;
-	wire [1:0] err_stop_state;
-	reg [1:0] err_stop_nxtstate;
-	reg err_stop_state_en;
-	reg err_stop_fetch;
-	wire ic_crit_wd_rdy;
-	wire ifu_bp_hit_taken_q_f;
-	wire ifu_bus_rvalid_unq;
-	wire bus_cmd_beat_en;
-	assign fetch_bf_f_c1_clken = (((ifc_fetch_req_bf_raw | ifc_fetch_req_f) | miss_pending) | exu_flush_final) | scnd_miss_req;
-	assign debug_c1_clken = ic_debug_rd_en | ic_debug_wr_en;
-	rvclkhdr fetch_bf_f_c1_cgc(
-		.en(fetch_bf_f_c1_clken),
-		.l1clk(fetch_bf_f_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvclkhdr debug_c1_cgc(
-		.en(debug_c1_clken),
-		.l1clk(debug_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	wire [1:0] iccm_single_ecc_error;
-	wire dma_iccm_req_f;
-	assign iccm_dma_sb_error = |iccm_single_ecc_error[1:0] & dma_iccm_req_f;
-	assign ifu_async_error_start = iccm_rd_ecc_single_err | ic_error_start;
-	wire [2:0] perr_state;
-	reg [2:0] perr_nxtstate;
-	localparam [2:0] DMA_SB_ERR = 3'b100;
-	localparam [1:0] ERR_STOP_FETCH = 2'b11;
-	assign ic_dma_active = (((iccm_correct_ecc | (perr_state == DMA_SB_ERR)) | (err_stop_state == ERR_STOP_FETCH)) | err_stop_fetch) | dec_tlu_flush_err_wb;
-	localparam [2:0] SCND_MISS = 3'b101;
-	assign scnd_miss_req_in = (((((ifu_bus_rsp_valid & bus_ifu_bus_clk_en) & ifu_bus_rsp_ready) & &bus_new_data_beat_count[pt[1174-:8] - 1:0]) & ~uncacheable_miss_ff) & ((miss_state == SCND_MISS) | (miss_nxtstate == SCND_MISS))) & ~exu_flush_final;
-	assign ifu_bp_hit_taken_q_f = ifu_bp_hit_taken_f & ic_hit_f;
-	localparam [2:0] CRIT_BYP_OK = 3'b001;
-	localparam [2:0] CRIT_WRD_RDY = 3'b100;
-	localparam [2:0] HIT_U_MISS = 3'b010;
-	localparam [2:0] IDLE = 3'b000;
-	localparam [2:0] MISS_WAIT = 3'b011;
-	localparam [2:0] STALL_SCND_MISS = 3'b111;
-	localparam [2:0] STREAM = 3'b110;
-	always @(*) begin : MISS_SM
-		miss_nxtstate = IDLE;
-		miss_state_en = 1'b0;
-		case (miss_state)
-			IDLE: begin : idle
-				miss_nxtstate = (ic_act_miss_f & ~exu_flush_final ? CRIT_BYP_OK : HIT_U_MISS);
-				miss_state_en = ic_act_miss_f & ~dec_tlu_force_halt;
-			end
-			CRIT_BYP_OK: begin : crit_byp_ok
-				miss_nxtstate = (dec_tlu_force_halt ? IDLE : ((ic_byp_hit_f & (last_data_recieved_ff | (bus_ifu_wr_en_ff & last_beat))) & uncacheable_miss_ff ? IDLE : ((ic_byp_hit_f & ~last_data_recieved_ff) & uncacheable_miss_ff ? MISS_WAIT : (((~ic_byp_hit_f & ~exu_flush_final) & (bus_ifu_wr_en_ff & last_beat)) & uncacheable_miss_ff ? CRIT_WRD_RDY : ((bus_ifu_wr_en_ff & last_beat) & ~uncacheable_miss_ff ? IDLE : ((((ic_byp_hit_f & ~exu_flush_final) & ~(bus_ifu_wr_en_ff & last_beat)) & ~ifu_bp_hit_taken_q_f) & ~uncacheable_miss_ff ? STREAM : ((((bus_ifu_wr_en_ff & ~exu_flush_final) & ~(bus_ifu_wr_en_ff & last_beat)) & ~ifu_bp_hit_taken_q_f) & ~uncacheable_miss_ff ? STREAM : (((~ic_byp_hit_f & ~exu_flush_final) & (bus_ifu_wr_en_ff & last_beat)) & ~uncacheable_miss_ff ? IDLE : ((exu_flush_final | ifu_bp_hit_taken_q_f) & ~(bus_ifu_wr_en_ff & last_beat) ? HIT_U_MISS : IDLE)))))))));
-				miss_state_en = ((((dec_tlu_force_halt | exu_flush_final) | ic_byp_hit_f) | ifu_bp_hit_taken_q_f) | (bus_ifu_wr_en_ff & last_beat)) | (bus_ifu_wr_en_ff & ~uncacheable_miss_ff);
-			end
-			CRIT_WRD_RDY: begin : crit_wrd_rdy
-				miss_nxtstate = IDLE;
-				miss_state_en = ((exu_flush_final | flush_final_f) | ic_byp_hit_f) | dec_tlu_force_halt;
-			end
-			STREAM: begin : stream
-				miss_nxtstate = ((((exu_flush_final | ifu_bp_hit_taken_q_f) | stream_eol_f) & ~(bus_ifu_wr_en_ff & last_beat)) & ~dec_tlu_force_halt ? HIT_U_MISS : IDLE);
-				miss_state_en = (((exu_flush_final | ifu_bp_hit_taken_q_f) | stream_eol_f) | (bus_ifu_wr_en_ff & last_beat)) | dec_tlu_force_halt;
-			end
-			MISS_WAIT: begin : miss_wait
-				miss_nxtstate = ((exu_flush_final & ~(bus_ifu_wr_en_ff & last_beat)) & ~dec_tlu_force_halt ? HIT_U_MISS : IDLE);
-				miss_state_en = (exu_flush_final | (bus_ifu_wr_en_ff & last_beat)) | dec_tlu_force_halt;
-			end
-			HIT_U_MISS: begin : hit_u_miss
-				miss_nxtstate = ((ic_miss_under_miss_f & ~(bus_ifu_wr_en_ff & last_beat)) & ~dec_tlu_force_halt ? SCND_MISS : ((ic_ignore_2nd_miss_f & ~(bus_ifu_wr_en_ff & last_beat)) & ~dec_tlu_force_halt ? STALL_SCND_MISS : IDLE));
-				miss_state_en = (((bus_ifu_wr_en_ff & last_beat) | ic_miss_under_miss_f) | ic_ignore_2nd_miss_f) | dec_tlu_force_halt;
-			end
-			SCND_MISS: begin : scnd_miss
-				miss_nxtstate = (dec_tlu_force_halt ? IDLE : (exu_flush_final ? (bus_ifu_wr_en_ff & last_beat ? IDLE : HIT_U_MISS) : CRIT_BYP_OK));
-				miss_state_en = ((bus_ifu_wr_en_ff & last_beat) | exu_flush_final) | dec_tlu_force_halt;
-			end
-			STALL_SCND_MISS: begin : stall_scnd_miss
-				miss_nxtstate = (dec_tlu_force_halt ? IDLE : (exu_flush_final ? (bus_ifu_wr_en_ff & last_beat ? IDLE : HIT_U_MISS) : IDLE));
-				miss_state_en = ((bus_ifu_wr_en_ff & last_beat) | exu_flush_final) | dec_tlu_force_halt;
-			end
-			default: begin : def_case
-				miss_nxtstate = IDLE;
-				miss_state_en = 1'b0;
-			end
-		endcase
-	end
-	rvdffs #(.WIDTH(3)) miss_state_ff(
-		.clk(active_clk),
-		.din(miss_nxtstate),
-		.dout({miss_state}),
-		.en(miss_state_en),
-		.rst_l(rst_l)
-	);
-	wire sel_hold_imb;
-	assign miss_pending = miss_state != IDLE;
-	assign crit_wd_byp_ok_ff = (miss_state == CRIT_BYP_OK) | ((miss_state == CRIT_WRD_RDY) & ~flush_final_f);
-	assign sel_hold_imb = ((((miss_pending & ~(bus_ifu_wr_en_ff & last_beat)) & ~((miss_state == CRIT_WRD_RDY) & exu_flush_final)) & ~((miss_state == CRIT_WRD_RDY) & crit_byp_hit_f)) | ic_act_miss_f) | (miss_pending & (miss_nxtstate == CRIT_WRD_RDY));
-	wire sel_hold_imb_scnd;
-	wire [31:1] imb_scnd_in;
-	wire [31:1] imb_scnd_ff;
-	wire uncacheable_miss_scnd_in;
-	wire uncacheable_miss_scnd_ff;
-	wire [pt[1060-:7] - 1:0] tagv_mb_scnd_in;
-	wire [pt[1060-:7] - 1:0] tagv_mb_scnd_ff;
-	wire [pt[1027-:7] - 1:0] way_status_mb_scnd_in;
-	wire [pt[1027-:7] - 1:0] way_status_mb_scnd_ff;
-	assign sel_hold_imb_scnd = ((miss_state == SCND_MISS) | ic_miss_under_miss_f) & ~flush_final_f;
-	assign way_status_mb_scnd_in[pt[1027-:7] - 1:0] = (miss_state == SCND_MISS ? way_status_mb_scnd_ff[pt[1027-:7] - 1:0] : {way_status[pt[1027-:7] - 1:0]});
-	assign tagv_mb_scnd_in[pt[1060-:7] - 1:0] = (miss_state == SCND_MISS ? tagv_mb_scnd_ff[pt[1060-:7] - 1:0] : {ic_tag_valid[pt[1060-:7] - 1:0]} & {pt[1060-:7] {~reset_all_tags & ~exu_flush_final}});
-	assign uncacheable_miss_scnd_in = (sel_hold_imb_scnd ? uncacheable_miss_scnd_ff : ifc_fetch_uncacheable_bf);
-	rvdff_fpga #(.WIDTH(1)) unc_miss_scnd_ff(
-		.rst_l(rst_l),
-		.clk(fetch_bf_f_c1_clk),
-		.clken(fetch_bf_f_c1_clken),
-		.rawclk(clk),
-		.din(uncacheable_miss_scnd_in),
-		.dout(uncacheable_miss_scnd_ff)
-	);
-	rvdffpcie #(.WIDTH(31)) imb_f_scnd_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(fetch_bf_f_c1_clken),
-		.din({imb_scnd_in[31:1]}),
-		.dout({imb_scnd_ff[31:1]})
-	);
-	rvdff_fpga #(.WIDTH(pt[1027-:7])) mb_rep_wayf2_scnd_ff(
-		.rst_l(rst_l),
-		.clk(fetch_bf_f_c1_clk),
-		.clken(fetch_bf_f_c1_clken),
-		.rawclk(clk),
-		.din({way_status_mb_scnd_in[pt[1027-:7] - 1:0]}),
-		.dout({way_status_mb_scnd_ff[pt[1027-:7] - 1:0]})
-	);
-	rvdff_fpga #(.WIDTH(pt[1060-:7])) mb_tagv_scnd_ff(
-		.rst_l(rst_l),
-		.clk(fetch_bf_f_c1_clk),
-		.clken(fetch_bf_f_c1_clken),
-		.rawclk(clk),
-		.din({tagv_mb_scnd_in[pt[1060-:7] - 1:0]}),
-		.dout({tagv_mb_scnd_ff[pt[1060-:7] - 1:0]})
-	);
-	assign ic_req_addr_bits_hi_3[pt[1182-:8]:3] = bus_rd_addr_count[pt[1174-:8] - 1:0];
-	assign ic_wr_addr_bits_hi_3[pt[1182-:8]:3] = ifu_bus_rid_ff[pt[1174-:8] - 1:0] & {pt[1174-:8] {bus_ifu_wr_en_ff}};
-	assign fetch_req_icache_f = (ifc_fetch_req_f & ~ifc_iccm_access_f) & ~ifc_region_acc_fault_final_f;
-	assign fetch_req_iccm_f = ifc_fetch_req_f & ifc_iccm_access_f;
-	assign ic_iccm_hit_f = fetch_req_iccm_f & ((~miss_pending | (miss_state == HIT_U_MISS)) | (miss_state == STREAM));
-	assign ic_byp_hit_f = ((crit_byp_hit_f | stream_hit_f) & fetch_req_icache_f) & miss_pending;
-	assign ic_act_hit_f = (((|ic_rd_hit[pt[1060-:7] - 1:0] & fetch_req_icache_f) & ~reset_all_tags) & (~miss_pending | (miss_state == HIT_U_MISS))) & ~sel_mb_addr_ff;
-	assign ic_act_miss_f = ((((~(|ic_rd_hit[pt[1060-:7] - 1:0]) | reset_all_tags) & fetch_req_icache_f) & ~miss_pending) | scnd_miss_req) & ~ifc_region_acc_fault_final_f;
-	assign ic_miss_under_miss_f = ((((((~(|ic_rd_hit[pt[1060-:7] - 1:0]) | reset_all_tags) & fetch_req_icache_f) & (miss_state == HIT_U_MISS)) & (imb_ff[31:pt[998-:7]] != ifu_fetch_addr_int_f[31:pt[998-:7]])) & ~uncacheable_miss_ff) & ~sel_mb_addr_ff) & ~ifc_region_acc_fault_final_f;
-	assign ic_ignore_2nd_miss_f = (((~(|ic_rd_hit[pt[1060-:7] - 1:0]) | reset_all_tags) & fetch_req_icache_f) & (miss_state == HIT_U_MISS)) & ((imb_ff[31:pt[998-:7]] == ifu_fetch_addr_int_f[31:pt[998-:7]]) | uncacheable_miss_ff);
-	assign ic_hit_f = ((ic_act_hit_f | ic_byp_hit_f) | ic_iccm_hit_f) | (ifc_region_acc_fault_final_f & ifc_fetch_req_f);
-	assign uncacheable_miss_in = (scnd_miss_req ? uncacheable_miss_scnd_ff : (sel_hold_imb ? uncacheable_miss_ff : ifc_fetch_uncacheable_bf));
-	assign imb_in[31:1] = (scnd_miss_req ? imb_scnd_ff[31:1] : (sel_hold_imb ? imb_ff[31:1] : {ifc_fetch_addr_bf[31:1]}));
-	assign imb_scnd_in[31:1] = (sel_hold_imb_scnd ? imb_scnd_ff[31:1] : {ifc_fetch_addr_bf[31:1]});
-	assign scnd_miss_index_match = ((imb_ff[pt[1104-:9]:pt[998-:7]] == imb_scnd_ff[pt[1104-:9]:pt[998-:7]]) & scnd_miss_req) & ~ifu_wr_cumulative_err_data;
-	assign way_status_mb_in[pt[1027-:7] - 1:0] = (scnd_miss_req & ~scnd_miss_index_match ? way_status_mb_scnd_ff[pt[1027-:7] - 1:0] : (scnd_miss_req & scnd_miss_index_match ? way_status_rep_new[pt[1027-:7] - 1:0] : (miss_pending ? way_status_mb_ff[pt[1027-:7] - 1:0] : {way_status[pt[1027-:7] - 1:0]})));
-	assign tagv_mb_in[pt[1060-:7] - 1:0] = (scnd_miss_req ? tagv_mb_scnd_ff[pt[1060-:7] - 1:0] | ({pt[1060-:7] {scnd_miss_index_match}} & replace_way_mb_any[pt[1060-:7] - 1:0]) : (miss_pending ? tagv_mb_ff[pt[1060-:7] - 1:0] : {ic_tag_valid[pt[1060-:7] - 1:0]} & {pt[1060-:7] {~reset_all_tags & ~exu_flush_final}}));
-	assign reset_ic_in = (miss_pending & ~scnd_miss_req_q) & (reset_all_tags | reset_ic_ff);
-	rvdffpcie #(.WIDTH(31)) ifu_fetch_addr_f_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(fetch_bf_f_c1_clken),
-		.din({ifc_fetch_addr_bf[31:1]}),
-		.dout({ifu_fetch_addr_int_f[31:1]})
-	);
-	assign vaddr_f[pt[1182-:8]:1] = ifu_fetch_addr_int_f[pt[1182-:8]:1];
-	rvdffpcie #(.WIDTH(31)) imb_f_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(fetch_bf_f_c1_clken),
-		.din(imb_in[31:1]),
-		.dout(imb_ff[31:1])
-	);
-	rvdff_fpga #(.WIDTH(1)) unc_miss_ff(
-		.rst_l(rst_l),
-		.clk(fetch_bf_f_c1_clk),
-		.clken(fetch_bf_f_c1_clken),
-		.rawclk(clk),
-		.din(uncacheable_miss_in),
-		.dout(uncacheable_miss_ff)
-	);
-	assign miss_addr_in[31:pt[1182-:8] + 1] = (~miss_pending ? imb_ff[31:pt[1182-:8] + 1] : (scnd_miss_req_q ? imb_scnd_ff[31:pt[1182-:8] + 1] : miss_addr[31:pt[1182-:8] + 1]));
-	rvdfflie #(
-		.WIDTH(31 - pt[1182-:8]),
-		.LEFT((31 - pt[1182-:8]) - 8)
-	) miss_f_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en((bus_ifu_bus_clk_en | ic_act_miss_f) | dec_tlu_force_halt),
-		.din({miss_addr_in[31:pt[1182-:8] + 1]}),
-		.dout({miss_addr[31:pt[1182-:8] + 1]})
-	);
-	rvdff_fpga #(.WIDTH(pt[1027-:7])) mb_rep_wayf2_ff(
-		.rst_l(rst_l),
-		.clk(fetch_bf_f_c1_clk),
-		.clken(fetch_bf_f_c1_clken),
-		.rawclk(clk),
-		.din({way_status_mb_in[pt[1027-:7] - 1:0]}),
-		.dout({way_status_mb_ff[pt[1027-:7] - 1:0]})
-	);
-	rvdff_fpga #(.WIDTH(pt[1060-:7])) mb_tagv_ff(
-		.rst_l(rst_l),
-		.clk(fetch_bf_f_c1_clk),
-		.clken(fetch_bf_f_c1_clken),
-		.rawclk(clk),
-		.din({tagv_mb_in[pt[1060-:7] - 1:0]}),
-		.dout({tagv_mb_ff[pt[1060-:7] - 1:0]})
-	);
-	assign ifc_fetch_req_qual_bf = (ifc_fetch_req_bf & ~((miss_state == CRIT_WRD_RDY) & flush_final_f)) & ~stream_miss_f;
-	assign ifc_fetch_req_f = ifc_fetch_req_f_raw & ~exu_flush_final;
-	rvdff_fpga #(.WIDTH(1)) ifu_iccm_acc_ff(
-		.rst_l(rst_l),
-		.clk(fetch_bf_f_c1_clk),
-		.clken(fetch_bf_f_c1_clken),
-		.rawclk(clk),
-		.din(ifc_iccm_access_bf),
-		.dout(ifc_iccm_access_f)
-	);
-	rvdff_fpga #(.WIDTH(1)) ifu_iccm_reg_acc_ff(
-		.rst_l(rst_l),
-		.clk(fetch_bf_f_c1_clk),
-		.clken(fetch_bf_f_c1_clken),
-		.rawclk(clk),
-		.din(ifc_region_acc_fault_final_bf),
-		.dout(ifc_region_acc_fault_final_f)
-	);
-	rvdff_fpga #(.WIDTH(1)) rgn_acc_ff(
-		.rst_l(rst_l),
-		.clk(fetch_bf_f_c1_clk),
-		.clken(fetch_bf_f_c1_clken),
-		.rawclk(clk),
-		.din(ifc_region_acc_fault_bf),
-		.dout(ifc_region_acc_fault_f)
-	);
-	assign ifu_ic_req_addr_f[31:3] = {miss_addr[31:pt[1182-:8] + 1], ic_req_addr_bits_hi_3[pt[1182-:8]:3]};
-	assign ifu_ic_mb_empty = (((miss_state == HIT_U_MISS) | (miss_state == STREAM)) & ~(bus_ifu_wr_en_ff & last_beat)) | ~miss_pending;
-	assign ifu_miss_state_idle = miss_state == IDLE;
-	assign sel_mb_addr = ((miss_pending & write_ic_16_bytes) & ~uncacheable_miss_ff) | reset_tag_valid_for_miss;
-	assign ifu_ic_rw_int_addr[31:1] = ({31 {sel_mb_addr}} & {imb_ff[31:pt[1182-:8] + 1], ic_wr_addr_bits_hi_3[pt[1182-:8]:3], imb_ff[2:1]}) | ({31 {~sel_mb_addr}} & ifc_fetch_addr_bf[31:1]);
-	assign sel_mb_status_addr = ((((miss_pending & write_ic_16_bytes) & ~uncacheable_miss_ff) & last_beat) & bus_ifu_wr_en_ff_q) | reset_tag_valid_for_miss;
-	assign ifu_status_wr_addr[31:1] = ({31 {sel_mb_status_addr}} & {imb_ff[31:pt[1182-:8] + 1], ic_wr_addr_bits_hi_3[pt[1182-:8]:3], imb_ff[2:1]}) | ({31 {~sel_mb_status_addr}} & ifu_fetch_addr_int_f[31:1]);
-	assign ic_rw_addr[31:1] = ifu_ic_rw_int_addr[31:1];
-	generate
-		if (pt[1125-:5] == 1) begin : icache_ecc_1
-			wire [6:0] ic_wr_ecc;
-			wire [6:0] ic_miss_buff_ecc;
-			wire [141:0] ic_wr_16bytes_data;
-			wire [70:0] ifu_ic_debug_rd_data_in;
-			rvecc_encode_64 ic_ecc_encode_64_bus(
-				.din(ifu_bus_rdata_ff[63:0]),
-				.ecc_out(ic_wr_ecc[6:0])
-			);
-			rvecc_encode_64 ic_ecc_encode_64_buff(
-				.din(ic_miss_buff_half[63:0]),
-				.ecc_out(ic_miss_buff_ecc[6:0])
-			);
-			genvar i;
-			for (i = 0; i < pt[1189-:7]; i = i + 1) begin : ic_wr_data_loop
-				assign ic_wr_data[(i * 71) + 70-:71] = ic_wr_16bytes_data[(71 * i) + 70:71 * i];
-			end
-			assign ic_debug_wr_data[70:0] = {dec_tlu_ic_diag_pkt[89:19]};
-			assign ic_error_start = (|ic_eccerr[pt[1189-:7] - 1:0] & ic_act_hit_f) | ic_rd_parity_final_err;
-			assign ifu_ic_debug_rd_data_in[70:0] = (ic_debug_ict_array_sel_ff ? {2'b00, ictag_debug_rd_data[25:21], 32'b00000000000000000000000000000000, ictag_debug_rd_data[20:0], {7 - pt[1027-:7] {1'b0}}, way_status[pt[1027-:7] - 1:0], 3'b000, ic_debug_tag_val_rd_out} : ic_debug_rd_data[70:0]);
-			rvdffe #(.WIDTH(71)) ifu_debug_data_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.en(debug_data_clken),
-				.din({ifu_ic_debug_rd_data_in[70:0]}),
-				.dout({ifu_ic_debug_rd_data[70:0]})
-			);
-			assign ic_wr_16bytes_data[141:0] = (ifu_bus_rid_ff[0] ? {ic_wr_ecc[6:0], ifu_bus_rdata_ff[63:0], ic_miss_buff_ecc[6:0], ic_miss_buff_half[63:0]} : {ic_miss_buff_ecc[6:0], ic_miss_buff_half[63:0], ic_wr_ecc[6:0], ifu_bus_rdata_ff[63:0]});
-		end
-		else begin : icache_parity_1
-			wire [3:0] ic_wr_parity;
-			wire [3:0] ic_miss_buff_parity;
-			wire [135:0] ic_wr_16bytes_data;
-			wire [70:0] ifu_ic_debug_rd_data_in;
-			genvar i;
-			for (i = 0; i < 4; i = i + 1) begin : DATA_PGEN
-				rveven_paritygen #(.WIDTH(16)) par_bus(
-					.data_in(ifu_bus_rdata_ff[(16 * i) + 15:16 * i]),
-					.parity_out(ic_wr_parity[i])
-				);
-				rveven_paritygen #(.WIDTH(16)) par_buff(
-					.data_in(ic_miss_buff_half[(16 * i) + 15:16 * i]),
-					.parity_out(ic_miss_buff_parity[i])
-				);
-			end
-			for (i = 0; i < pt[1189-:7]; i = i + 1) begin : ic_wr_data_loop
-				assign ic_wr_data[(i * 71) + 70-:71] = {3'b000, ic_wr_16bytes_data[(68 * i) + 67:68 * i]};
-			end
-			assign ic_debug_wr_data[70:0] = {dec_tlu_ic_diag_pkt[89:19]};
-			assign ic_error_start = (|ic_parerr[pt[1189-:7] - 1:0] & ic_act_hit_f) | ic_rd_parity_final_err;
-			assign ifu_ic_debug_rd_data_in[70:0] = (ic_debug_ict_array_sel_ff ? {6'b000000, ictag_debug_rd_data[21], 32'b00000000000000000000000000000000, ictag_debug_rd_data[20:0], {7 - pt[1027-:7] {1'b0}}, way_status[pt[1027-:7] - 1:0], 3'b000, ic_debug_tag_val_rd_out} : ic_debug_rd_data[70:0]);
-			rvdffe #(.WIDTH(71)) ifu_debug_data_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.en(debug_data_clken),
-				.din({ifu_ic_debug_rd_data_in[70:0]}),
-				.dout({ifu_ic_debug_rd_data[70:0]})
-			);
-			assign ic_wr_16bytes_data[135:0] = (ifu_bus_rid_ff[0] ? {ic_wr_parity[3:0], ifu_bus_rdata_ff[63:0], ic_miss_buff_parity[3:0], ic_miss_buff_half[63:0]} : {ic_miss_buff_parity[3:0], ic_miss_buff_half[63:0], ic_wr_parity[3:0], ifu_bus_rdata_ff[63:0]});
-		end
-	endgenerate
-	assign ifu_wr_data_comb_err = bus_ifu_wr_data_error_ff;
-	assign ifu_wr_cumulative_err = (ifu_wr_data_comb_err | ifu_wr_data_comb_err_ff) & ~reset_beat_cnt;
-	assign ifu_wr_cumulative_err_data = ifu_wr_data_comb_err | ifu_wr_data_comb_err_ff;
-	assign sel_byp_data = (ic_crit_wd_rdy | (miss_state == STREAM)) | (miss_state == CRIT_BYP_OK);
-	assign sel_ic_data = (~(((ic_crit_wd_rdy | (miss_state == STREAM)) | (miss_state == CRIT_BYP_OK)) | (miss_state == MISS_WAIT)) & ~fetch_req_iccm_f) & ~ifc_region_acc_fault_final_f;
-	generate
-		if (pt[922-:5] == 1) begin : iccm_icache
-			assign sel_iccm_data = fetch_req_iccm_f;
-			assign ic_final_data[63:0] = {64 {(sel_byp_data | sel_iccm_data) | sel_ic_data}} & {ic_rd_data[63:0]};
-			assign ic_premux_data[63:0] = ({64 {sel_byp_data}} & {ic_byp_data_only_new[63:0]}) | ({64 {sel_iccm_data}} & {iccm_rd_data[63:0]});
-			assign ic_sel_premux_data = sel_iccm_data | sel_byp_data;
-		end
-	endgenerate
-	generate
-		if (pt[900-:5] == 1) begin : iccm_only
-			assign sel_iccm_data = fetch_req_iccm_f;
-			assign ic_final_data[63:0] = ({64 {sel_byp_data}} & {ic_byp_data_only_new[63:0]}) | ({64 {sel_iccm_data}} & {iccm_rd_data[63:0]});
-			assign ic_premux_data = {64 {1'sb0}};
-			assign ic_sel_premux_data = 1'b0;
-		end
-	endgenerate
-	generate
-		if (pt[1053-:5] == 1) begin : icache_only
-			assign ic_final_data[63:0] = {64 {sel_byp_data | sel_ic_data}} & {ic_rd_data[63:0]};
-			assign ic_premux_data[63:0] = {64 {sel_byp_data}} & {ic_byp_data_only_new[63:0]};
-			assign ic_sel_premux_data = sel_byp_data;
-		end
-	endgenerate
-	generate
-		if (pt[140-:5] == 1) begin : no_iccm_no_icache
-			assign ic_final_data[63:0] = {64 {sel_byp_data}} & {ic_byp_data_only_new[63:0]};
-			assign ic_premux_data = 0;
-			assign ic_sel_premux_data = 1'b0;
-		end
-	endgenerate
-	assign ifc_bus_acc_fault_f[1:0] = {2 {ic_byp_hit_f}} & ifu_byp_data_err_f[1:0];
-	assign ic_data_f[31:0] = ic_final_data[31:0];
-	assign fetch_req_f_qual = ic_hit_f & ~exu_flush_final;
-	assign ic_access_fault_f[1:0] = ({2 {ifc_region_acc_fault_final_f}} | ifc_bus_acc_fault_f[1:0]) & {2 {~exu_flush_final}};
-	assign ic_access_fault_type_f[1:0] = (|iccm_rd_ecc_double_err ? 2'b01 : (ifc_region_acc_fault_f ? 2'b10 : (ifc_region_acc_fault_memory_f ? 2'b11 : 2'b00)));
-	localparam [1:0] ERR_FETCH2 = 2'b10;
-	assign ic_fetch_val_f[1] = ((fetch_req_f_qual & ifu_bp_inst_mask_f) & ~(vaddr_f[pt[1182-:8]:1] == {pt[1182-:8] {1'b1}})) & (err_stop_state != ERR_FETCH2);
-	assign ic_fetch_val_f[0] = fetch_req_f_qual;
-	assign two_byte_instr = ic_data_f[1:0] != 2'b11;
-	wire [63:0] ic_miss_buff_data_in;
-	assign ic_miss_buff_data_in[63:0] = ifu_bus_rsp_rdata[63:0];
-	generate
-		genvar i;
-		for (i = 0; i < pt[1084-:8]; i = i + 1) begin : wr_flop
-			function automatic signed [pt[826-:8] - 1:0] sv2v_cast_ADFF4_signed;
-				input reg signed [pt[826-:8] - 1:0] inp;
-				sv2v_cast_ADFF4_signed = inp;
-			endfunction
-			assign write_fill_data[i] = bus_ifu_wr_en & (sv2v_cast_ADFF4_signed(i) == ifu_bus_rsp_tag[pt[826-:8] - 1:0]);
-			rvdffe #(.WIDTH(32)) byp_data_0_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.en(write_fill_data[i]),
-				.din(ic_miss_buff_data_in[31:0]),
-				.dout(ic_miss_buff_data[((i * 2) * 32) + 31-:32])
-			);
-			rvdffe #(.WIDTH(32)) byp_data_1_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.en(write_fill_data[i]),
-				.din(ic_miss_buff_data_in[63:32]),
-				.dout(ic_miss_buff_data[(((i * 2) + 1) * 32) + 31-:32])
-			);
-			assign ic_miss_buff_data_valid_in[i] = (write_fill_data[i] ? 1'b1 : ic_miss_buff_data_valid[i] & ~ic_act_miss_f);
-			rvdff #(.WIDTH(1)) byp_data_valid_ff(
-				.rst_l(rst_l),
-				.clk(active_clk),
-				.din(ic_miss_buff_data_valid_in[i]),
-				.dout(ic_miss_buff_data_valid[i])
-			);
-			assign ic_miss_buff_data_error_in[i] = (write_fill_data[i] ? bus_ifu_wr_data_error : ic_miss_buff_data_error[i] & ~ic_act_miss_f);
-			rvdff #(.WIDTH(1)) byp_data_error_ff(
-				.rst_l(rst_l),
-				.clk(active_clk),
-				.din(ic_miss_buff_data_error_in[i]),
-				.dout(ic_miss_buff_data_error[i])
-			);
-		end
-	endgenerate
-	wire [pt[1182-:8]:1] bypass_index;
-	wire [pt[1182-:8]:3] bypass_index_5_3_inc;
-	wire bypass_data_ready_in;
-	wire ic_crit_wd_rdy_new_in;
-	assign bypass_index[pt[1182-:8]:1] = imb_ff[pt[1182-:8]:1];
-	assign bypass_index_5_3_inc[pt[1182-:8]:3] = bypass_index[pt[1182-:8]:3] + 1;
-	assign bypass_data_ready_in = (((((ic_miss_buff_data_valid_in[bypass_index[pt[1182-:8]:3]] & ~bypass_index[2]) & ~bypass_index[1]) | ((ic_miss_buff_data_valid_in[bypass_index[pt[1182-:8]:3]] & ~bypass_index[2]) & bypass_index[1])) | ((ic_miss_buff_data_valid_in[bypass_index[pt[1182-:8]:3]] & bypass_index[2]) & ~bypass_index[1])) | (((ic_miss_buff_data_valid_in[bypass_index[pt[1182-:8]:3]] & ic_miss_buff_data_valid_in[bypass_index_5_3_inc[pt[1182-:8]:3]]) & bypass_index[2]) & bypass_index[1])) | (ic_miss_buff_data_valid_in[bypass_index[pt[1182-:8]:3]] & (bypass_index[pt[1182-:8]:3] == {pt[1182-:8] {1'b1}}));
-	assign ic_crit_wd_rdy_new_in = (((((bypass_data_ready_in & crit_wd_byp_ok_ff) & uncacheable_miss_ff) & ~exu_flush_final) & ~ifu_bp_hit_taken_q_f) | (((crit_wd_byp_ok_ff & ~uncacheable_miss_ff) & ~exu_flush_final) & ~ifu_bp_hit_taken_q_f)) | (((ic_crit_wd_rdy_new_ff & ~fetch_req_icache_f) & crit_wd_byp_ok_ff) & ~exu_flush_final);
-	assign byp_fetch_index[pt[1182-:8]:1] = ifu_fetch_addr_int_f[pt[1182-:8]:1];
-	assign byp_fetch_index_0[pt[1182-:8]:2] = {ifu_fetch_addr_int_f[pt[1182-:8]:3], 1'b0};
-	assign byp_fetch_index_1[pt[1182-:8]:2] = {ifu_fetch_addr_int_f[pt[1182-:8]:3], 1'b1};
-	assign byp_fetch_index_inc[pt[1182-:8]:3] = ifu_fetch_addr_int_f[pt[1182-:8]:3] + 1'b1;
-	assign byp_fetch_index_inc_0[pt[1182-:8]:2] = {byp_fetch_index_inc[pt[1182-:8]:3], 1'b0};
-	assign byp_fetch_index_inc_1[pt[1182-:8]:2] = {byp_fetch_index_inc[pt[1182-:8]:3], 1'b1};
-	assign ifu_byp_data_err_new = ((((~ifu_fetch_addr_int_f[2] & ~ifu_fetch_addr_int_f[1]) & ic_miss_buff_data_error[byp_fetch_index[pt[1182-:8]:3]]) | ((~ifu_fetch_addr_int_f[2] & ifu_fetch_addr_int_f[1]) & ic_miss_buff_data_error[byp_fetch_index[pt[1182-:8]:3]])) | ((ifu_fetch_addr_int_f[2] & ~ifu_fetch_addr_int_f[1]) & ic_miss_buff_data_error[byp_fetch_index[pt[1182-:8]:3]])) | ((ifu_fetch_addr_int_f[2] & ifu_fetch_addr_int_f[1]) & (ic_miss_buff_data_error[byp_fetch_index_inc[pt[1182-:8]:3]] | ic_miss_buff_data_error[byp_fetch_index[pt[1182-:8]:3]]));
-	assign ifu_byp_data_err_f[1:0] = (ic_miss_buff_data_error[byp_fetch_index[pt[1182-:8]:3]] ? 2'b11 : (((ifu_fetch_addr_int_f[2] & ifu_fetch_addr_int_f[1]) & ~ic_miss_buff_data_error[byp_fetch_index[pt[1182-:8]:3]]) & (~miss_wrap_f & ic_miss_buff_data_error[byp_fetch_index_inc[pt[1182-:8]:3]]) ? 2'b10 : 2'b00));
-	assign ic_byp_data_only_pre_new[79:0] = ({80 {~ifu_fetch_addr_int_f[2]}} & {ic_miss_buff_data[(byp_fetch_index_inc_0 * 32) + 15-:16], ic_miss_buff_data[(byp_fetch_index_1 * 32) + 31-:32], ic_miss_buff_data[(byp_fetch_index_0 * 32) + 31-:32]}) | ({80 {ifu_fetch_addr_int_f[2]}} & {ic_miss_buff_data[(byp_fetch_index_inc_1 * 32) + 15-:16], ic_miss_buff_data[(byp_fetch_index_inc_0 * 32) + 31-:32], ic_miss_buff_data[(byp_fetch_index_1 * 32) + 31-:32]});
-	assign ic_byp_data_only_new[79:0] = (~ifu_fetch_addr_int_f[1] ? {ic_byp_data_only_pre_new[79:0]} : {16'b0000000000000000, ic_byp_data_only_pre_new[79:16]});
-	assign miss_wrap_f = imb_ff[pt[998-:7]] != ifu_fetch_addr_int_f[pt[998-:7]];
-	assign miss_buff_hit_unq_f = (((((ic_miss_buff_data_valid[byp_fetch_index[pt[1182-:8]:3]] & ~byp_fetch_index[2]) & ~byp_fetch_index[1]) | ((ic_miss_buff_data_valid[byp_fetch_index[pt[1182-:8]:3]] & ~byp_fetch_index[2]) & byp_fetch_index[1])) | ((ic_miss_buff_data_valid[byp_fetch_index[pt[1182-:8]:3]] & byp_fetch_index[2]) & ~byp_fetch_index[1])) | (((ic_miss_buff_data_valid[byp_fetch_index[pt[1182-:8]:3]] & ic_miss_buff_data_valid[byp_fetch_index_inc[pt[1182-:8]:3]]) & byp_fetch_index[2]) & byp_fetch_index[1])) | (ic_miss_buff_data_valid[byp_fetch_index[pt[1182-:8]:3]] & (byp_fetch_index[pt[1182-:8]:3] == {pt[1174-:8] {1'b1}}));
-	assign stream_hit_f = (miss_buff_hit_unq_f & ~miss_wrap_f) & (miss_state == STREAM);
-	assign stream_miss_f = (~(miss_buff_hit_unq_f & ~miss_wrap_f) & (miss_state == STREAM)) & ifc_fetch_req_f;
-	assign stream_eol_f = ((byp_fetch_index[pt[1182-:8]:2] == {pt[1174-:8] + 1 {1'b1}}) & ifc_fetch_req_f) & stream_hit_f;
-	assign crit_byp_hit_f = miss_buff_hit_unq_f & ((miss_state == CRIT_WRD_RDY) | (miss_state == CRIT_BYP_OK));
-	assign other_tag[pt[826-:8] - 1:0] = {ifu_bus_rid_ff[pt[826-:8] - 1:1], ~ifu_bus_rid_ff[0]};
-	assign second_half_available = ic_miss_buff_data_valid[other_tag];
-	assign write_ic_16_bytes = second_half_available & bus_ifu_wr_en_ff;
-	assign ic_miss_buff_half[63:0] = {ic_miss_buff_data[{other_tag, 1'b1} * 32+:32], ic_miss_buff_data[{other_tag, 1'b0} * 32+:32]};
-	assign ic_rd_parity_final_err = (((ic_tag_perr & ~exu_flush_final) & sel_ic_data) & ~(ifc_region_acc_fault_final_f | |ifc_bus_acc_fault_f)) & (((fetch_req_icache_f & ~reset_all_tags) & (~miss_pending | (miss_state == HIT_U_MISS))) & ~sel_mb_addr_ff);
-	wire [pt[1060-:7] - 1:0] perr_err_inv_way;
-	wire [pt[1104-:9]:pt[998-:7]] perr_ic_index_ff;
-	reg perr_sel_invalidate;
-	reg perr_sb_write_status;
-	rvdffe #(
-		.WIDTH((pt[1104-:9] - pt[998-:7]) + 1),
-		.OVERRIDE(1)
-	) perr_dat_ff(
-		.din(ifu_ic_rw_int_addr_ff[pt[1104-:9]:pt[998-:7]]),
-		.dout(perr_ic_index_ff[pt[1104-:9]:pt[998-:7]]),
-		.en(perr_sb_write_status),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	assign perr_err_inv_way[pt[1060-:7] - 1:0] = {pt[1060-:7] {perr_sel_invalidate}};
-	localparam [2:0] ECC_CORR = 3'b011;
-	assign iccm_correct_ecc = perr_state == ECC_CORR;
-	assign dma_sb_err_state = perr_state == DMA_SB_ERR;
-	assign iccm_buf_correct_ecc = iccm_correct_ecc & ~dma_sb_err_state_ff;
-	localparam [2:0] ECC_WFF = 3'b010;
-	localparam [2:0] ERR_IDLE = 3'b000;
-	localparam [2:0] IC_WFF = 3'b001;
-	always @(*) begin : ERROR_SM
-		perr_nxtstate = ERR_IDLE;
-		perr_state_en = 1'b0;
-		perr_sb_write_status = 1'b0;
-		perr_sel_invalidate = 1'b0;
-		case (perr_state)
-			ERR_IDLE: begin : err_idle
-				perr_nxtstate = (iccm_dma_sb_error ? DMA_SB_ERR : (ic_error_start & ~exu_flush_final ? IC_WFF : ECC_WFF));
-				perr_state_en = (((iccm_error_start | ic_error_start) & ~exu_flush_final) | iccm_dma_sb_error) & ~dec_tlu_force_halt;
-				perr_sb_write_status = perr_state_en;
-			end
-			IC_WFF: begin : icache_wff
-				perr_nxtstate = ERR_IDLE;
-				perr_state_en = dec_tlu_flush_lower_wb | dec_tlu_force_halt;
-				perr_sel_invalidate = dec_tlu_flush_err_wb & dec_tlu_flush_lower_wb;
-			end
-			ECC_WFF: begin : ecc_wff
-				perr_nxtstate = ((~dec_tlu_flush_err_wb & dec_tlu_flush_lower_wb) | dec_tlu_force_halt ? ERR_IDLE : ECC_CORR);
-				perr_state_en = dec_tlu_flush_lower_wb | dec_tlu_force_halt;
-			end
-			DMA_SB_ERR: begin : dma_sb_ecc
-				perr_nxtstate = (dec_tlu_force_halt ? ERR_IDLE : ECC_CORR);
-				perr_state_en = 1'b1;
-			end
-			ECC_CORR: begin : ecc_corr
-				perr_nxtstate = ERR_IDLE;
-				perr_state_en = 1'b1;
-			end
-			default: begin : def_case
-				perr_nxtstate = ERR_IDLE;
-				perr_state_en = 1'b0;
-				perr_sb_write_status = 1'b0;
-				perr_sel_invalidate = 1'b0;
-			end
-		endcase
-	end
-	rvdffs #(.WIDTH(3)) perr_state_ff(
-		.clk(active_clk),
-		.din(perr_nxtstate),
-		.dout({perr_state}),
-		.en(perr_state_en),
-		.rst_l(rst_l)
-	);
-	localparam [1:0] ERR_FETCH1 = 2'b01;
-	localparam [1:0] ERR_STOP_IDLE = 2'b00;
-	always @(*) begin : ERROR_STOP_FETCH
-		err_stop_nxtstate = ERR_STOP_IDLE;
-		err_stop_state_en = 1'b0;
-		err_stop_fetch = 1'b0;
-		iccm_correction_state = 1'b0;
-		case (err_stop_state)
-			ERR_STOP_IDLE: begin : err_stop_idle
-				err_stop_nxtstate = ERR_FETCH1;
-				err_stop_state_en = (dec_tlu_flush_err_wb & (perr_state == ECC_WFF)) & ~dec_tlu_force_halt;
-			end
-			ERR_FETCH1: begin : err_fetch1
-				err_stop_nxtstate = ((dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt) | dec_tlu_force_halt ? ERR_STOP_IDLE : ((ifu_fetch_val[1:0] == 2'b11) | (ifu_fetch_val[0] & two_byte_instr) ? ERR_STOP_FETCH : (ifu_fetch_val[0] ? ERR_FETCH2 : ERR_FETCH1)));
-				err_stop_state_en = (((dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt) | ifu_fetch_val[0]) | ifu_bp_hit_taken_q_f) | dec_tlu_force_halt;
-				err_stop_fetch = ((ifu_fetch_val[1:0] == 2'b11) | (ifu_fetch_val[0] & two_byte_instr)) & ~(exu_flush_final | dec_tlu_i0_commit_cmt);
-				iccm_correction_state = 1'b1;
-			end
-			ERR_FETCH2: begin : err_fetch2
-				err_stop_nxtstate = ((dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt) | dec_tlu_force_halt ? ERR_STOP_IDLE : (ifu_fetch_val[0] ? ERR_STOP_FETCH : ERR_FETCH2));
-				err_stop_state_en = ((dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt) | ifu_fetch_val[0]) | dec_tlu_force_halt;
-				err_stop_fetch = (ifu_fetch_val[0] & ~exu_flush_final) & ~dec_tlu_i0_commit_cmt;
-				iccm_correction_state = 1'b1;
-			end
-			ERR_STOP_FETCH: begin : ecc_wff
-				err_stop_nxtstate = (((dec_tlu_flush_lower_wb & ~dec_tlu_flush_err_wb) | dec_tlu_i0_commit_cmt) | dec_tlu_force_halt ? ERR_STOP_IDLE : (dec_tlu_flush_err_wb ? ERR_FETCH1 : ERR_STOP_FETCH));
-				err_stop_state_en = (dec_tlu_flush_lower_wb | dec_tlu_i0_commit_cmt) | dec_tlu_force_halt;
-				err_stop_fetch = 1'b1;
-				iccm_correction_state = 1'b1;
-			end
-			default: begin : def_case
-				err_stop_nxtstate = ERR_STOP_IDLE;
-				err_stop_state_en = 1'b0;
-				err_stop_fetch = 1'b0;
-				iccm_correction_state = 1'b1;
-			end
-		endcase
-	end
-	rvdffs #(.WIDTH(2)) err_stop_state_ff(
-		.clk(active_clk),
-		.din(err_stop_nxtstate),
-		.dout({err_stop_state}),
-		.en(err_stop_state_en),
-		.rst_l(rst_l)
-	);
-	assign bus_ifu_bus_clk_en = ifu_bus_clk_en;
-	rvclkhdr bus_clk_f(
-		.en(bus_ifu_bus_clk_en),
-		.l1clk(busclk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvclkhdr bus_clk(
-		.en(bus_ifu_bus_clk_en | dec_tlu_force_halt),
-		.l1clk(busclk_force),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	assign scnd_miss_req = scnd_miss_req_q & ~exu_flush_final;
-	assign ifc_bus_ic_req_ff_in = (((ic_act_miss_f | bus_cmd_req_hold) | ifu_bus_cmd_valid) & ~dec_tlu_force_halt) & ~((((bus_cmd_beat_count == {pt[1174-:8] {1'b1}}) & ifu_bus_cmd_valid) & ifu_bus_cmd_ready) & miss_pending);
-	rvdff_fpga #(.WIDTH(1)) bus_ic_req_ff2(
-		.rst_l(rst_l),
-		.clk(busclk_force),
-		.clken(bus_ifu_bus_clk_en | dec_tlu_force_halt),
-		.rawclk(clk),
-		.din(ifc_bus_ic_req_ff_in),
-		.dout(ifu_bus_cmd_valid)
-	);
-	assign bus_cmd_req_in = ((ic_act_miss_f | bus_cmd_req_hold) & ~bus_cmd_sent) & ~dec_tlu_force_halt;
-	assign ifu_axi_arvalid = ifu_bus_cmd_valid;
-	function automatic [pt[826-:8] - 1:0] sv2v_cast_ADFF4;
-		input reg [pt[826-:8] - 1:0] inp;
-		sv2v_cast_ADFF4 = inp;
-	endfunction
-	assign ifu_axi_arid[pt[826-:8] - 1:0] = sv2v_cast_ADFF4(bus_rd_addr_count[pt[1174-:8] - 1:0]) & {pt[826-:8] {ifu_bus_cmd_valid}};
-	assign ifu_axi_araddr[31:0] = {ifu_ic_req_addr_f[31:3], 3'b000} & {32 {ifu_bus_cmd_valid}};
-	assign ifu_axi_arsize[2:0] = 3'b011;
-	assign ifu_axi_arprot[2:0] = 3'b101;
-	assign ifu_axi_arcache[3:0] = 4'b1111;
-	assign ifu_axi_arregion[3:0] = ifu_ic_req_addr_f[31:28];
-	assign ifu_axi_arlen[7:0] = {8 {1'sb0}};
-	assign ifu_axi_arburst[1:0] = 2'b01;
-	assign ifu_axi_arqos[3:0] = {4 {1'sb0}};
-	assign ifu_axi_arlock = 1'b0;
-	assign ifu_axi_rready = 1'b1;
-	assign ifu_axi_awvalid = 1'b0;
-	assign ifu_axi_awid[pt[826-:8] - 1:0] = {pt[826-:8] {1'sb0}};
-	assign ifu_axi_awaddr[31:0] = {32 {1'sb0}};
-	assign ifu_axi_awsize[2:0] = {3 {1'sb0}};
-	assign ifu_axi_awprot[2:0] = {3 {1'sb0}};
-	assign ifu_axi_awcache[3:0] = {4 {1'sb0}};
-	assign ifu_axi_awregion[3:0] = {4 {1'sb0}};
-	assign ifu_axi_awlen[7:0] = {8 {1'sb0}};
-	assign ifu_axi_awburst[1:0] = {2 {1'sb0}};
-	assign ifu_axi_awqos[3:0] = {4 {1'sb0}};
-	assign ifu_axi_awlock = 1'b0;
-	assign ifu_axi_wvalid = 1'b0;
-	assign ifu_axi_wstrb[7:0] = {8 {1'sb0}};
-	assign ifu_axi_wdata[63:0] = {64 {1'sb0}};
-	assign ifu_axi_wlast = 1'b0;
-	assign ifu_axi_bready = 1'b0;
-	assign ifu_bus_arready_unq = ifu_axi_arready;
-	assign ifu_bus_rvalid_unq = ifu_axi_rvalid;
-	assign ifu_bus_arvalid = ifu_axi_arvalid;
-	rvdff_fpga #(.WIDTH(1)) bus_rdy_ff(
-		.rst_l(rst_l),
-		.clk(busclk),
-		.clken(bus_ifu_bus_clk_en),
-		.rawclk(clk),
-		.din(ifu_bus_arready_unq),
-		.dout(ifu_bus_arready_unq_ff)
-	);
-	rvdff_fpga #(.WIDTH(1)) bus_rsp_vld_ff(
-		.rst_l(rst_l),
-		.clk(busclk),
-		.clken(bus_ifu_bus_clk_en),
-		.rawclk(clk),
-		.din(ifu_bus_rvalid_unq),
-		.dout(ifu_bus_rvalid_unq_ff)
-	);
-	rvdff_fpga #(.WIDTH(1)) bus_cmd_ff(
-		.rst_l(rst_l),
-		.clk(busclk),
-		.clken(bus_ifu_bus_clk_en),
-		.rawclk(clk),
-		.din(ifu_bus_arvalid),
-		.dout(ifu_bus_arvalid_ff)
-	);
-	rvdff_fpga #(.WIDTH(2)) bus_rsp_cmd_ff(
-		.rst_l(rst_l),
-		.clk(busclk),
-		.clken(bus_ifu_bus_clk_en),
-		.rawclk(clk),
-		.din(ifu_axi_rresp[1:0]),
-		.dout(ifu_bus_rresp_ff[1:0])
-	);
-	rvdff_fpga #(.WIDTH(pt[826-:8])) bus_rsp_tag_ff(
-		.rst_l(rst_l),
-		.clk(busclk),
-		.clken(bus_ifu_bus_clk_en),
-		.rawclk(clk),
-		.din(ifu_axi_rid[pt[826-:8] - 1:0]),
-		.dout(ifu_bus_rid_ff[pt[826-:8] - 1:0])
-	);
-	rvdffe #(.WIDTH(64)) bus_data_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(clk),
-		.din(ifu_axi_rdata[63:0]),
-		.dout(ifu_bus_rdata_ff[63:0]),
-		.en(ifu_bus_clk_en & ifu_axi_rvalid)
-	);
-	assign ifu_bus_cmd_ready = ifu_axi_arready;
-	assign ifu_bus_rsp_valid = ifu_axi_rvalid;
-	assign ifu_bus_rsp_ready = ifu_axi_rready;
-	assign ifu_bus_rsp_tag[pt[826-:8] - 1:0] = ifu_axi_rid[pt[826-:8] - 1:0];
-	assign ifu_bus_rsp_rdata[63:0] = ifu_axi_rdata[63:0];
-	assign ifu_bus_rsp_opc[1:0] = {ifu_axi_rresp[1:0]};
-	assign ifu_bus_rvalid = ifu_bus_rsp_valid & bus_ifu_bus_clk_en;
-	assign ifu_bus_arready = ifu_bus_arready_unq & bus_ifu_bus_clk_en;
-	assign ifu_bus_arready_ff = ifu_bus_arready_unq_ff & bus_ifu_bus_clk_en_ff;
-	assign ifu_bus_rvalid_ff = ifu_bus_rvalid_unq_ff & bus_ifu_bus_clk_en_ff;
-	assign bus_cmd_sent = ((ifu_bus_arvalid & ifu_bus_arready) & miss_pending) & ~dec_tlu_force_halt;
-	assign bus_inc_data_beat_cnt = (bus_ifu_wr_en_ff & ~bus_last_data_beat) & ~dec_tlu_force_halt;
-	assign bus_reset_data_beat_cnt = (ic_act_miss_f | (bus_ifu_wr_en_ff & bus_last_data_beat)) | dec_tlu_force_halt;
-	assign bus_hold_data_beat_cnt = ~bus_inc_data_beat_cnt & ~bus_reset_data_beat_cnt;
-	function automatic signed [pt[1174-:8] - 1:0] sv2v_cast_4BA5C_signed;
-		input reg signed [pt[1174-:8] - 1:0] inp;
-		sv2v_cast_4BA5C_signed = inp;
-	endfunction
-	assign bus_new_data_beat_count[pt[1174-:8] - 1:0] = (({pt[1174-:8] {bus_reset_data_beat_cnt}} & sv2v_cast_4BA5C_signed(0)) | ({pt[1174-:8] {bus_inc_data_beat_cnt}} & (bus_data_beat_count[pt[1174-:8] - 1:0] + {{pt[1174-:8] - 1 {1'b0}}, 1'b1}))) | ({pt[1174-:8] {bus_hold_data_beat_cnt}} & bus_data_beat_count[pt[1174-:8] - 1:0]);
-	assign last_data_recieved_in = ((bus_ifu_wr_en_ff & bus_last_data_beat) & ~scnd_miss_req) | (last_data_recieved_ff & ~ic_act_miss_f);
-	assign bus_new_rd_addr_count[pt[1174-:8] - 1:0] = (~miss_pending ? imb_ff[pt[1182-:8]:3] : (scnd_miss_req_q ? imb_scnd_ff[pt[1182-:8]:3] : (bus_cmd_sent ? bus_rd_addr_count[pt[1174-:8] - 1:0] + 3'b001 : bus_rd_addr_count[pt[1174-:8] - 1:0])));
-	rvdff_fpga #(.WIDTH(pt[1174-:8])) bus_rd_addr_ff(
-		.rst_l(rst_l),
-		.clk(busclk_reset),
-		.clken((bus_ifu_bus_clk_en | ic_act_miss_f) | dec_tlu_force_halt),
-		.rawclk(clk),
-		.din({bus_new_rd_addr_count[pt[1174-:8] - 1:0]}),
-		.dout({bus_rd_addr_count[pt[1174-:8] - 1:0]})
-	);
-	assign bus_inc_cmd_beat_cnt = ((ifu_bus_cmd_valid & ifu_bus_cmd_ready) & miss_pending) & ~dec_tlu_force_halt;
-	assign bus_reset_cmd_beat_cnt_0 = (ic_act_miss_f & ~uncacheable_miss_in) | dec_tlu_force_halt;
-	assign bus_reset_cmd_beat_cnt_secondlast = ic_act_miss_f & uncacheable_miss_in;
-	assign bus_hold_cmd_beat_cnt = ~bus_inc_cmd_beat_cnt & ~((ic_act_miss_f | scnd_miss_req) | dec_tlu_force_halt);
-	assign bus_cmd_beat_en = (bus_inc_cmd_beat_cnt | ic_act_miss_f) | dec_tlu_force_halt;
-	function automatic [pt[1174-:8] - 1:0] sv2v_cast_4BA5C;
-		input reg [pt[1174-:8] - 1:0] inp;
-		sv2v_cast_4BA5C = inp;
-	endfunction
-	assign bus_new_cmd_beat_count[pt[1174-:8] - 1:0] = ((({pt[1174-:8] {bus_reset_cmd_beat_cnt_0}} & sv2v_cast_4BA5C_signed(0)) | ({pt[1174-:8] {bus_reset_cmd_beat_cnt_secondlast}} & sv2v_cast_4BA5C(pt[1048-:8]))) | ({pt[1174-:8] {bus_inc_cmd_beat_cnt}} & (bus_cmd_beat_count[pt[1174-:8] - 1:0] + {{pt[1174-:8] - 1 {1'b0}}, 1'b1}))) | ({pt[1174-:8] {bus_hold_cmd_beat_cnt}} & bus_cmd_beat_count[pt[1174-:8] - 1:0]);
-	rvclkhdr bus_clk_reset(
-		.en((bus_ifu_bus_clk_en | ic_act_miss_f) | dec_tlu_force_halt),
-		.l1clk(busclk_reset),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvdffs_fpga #(.WIDTH(pt[1174-:8])) bus_cmd_beat_ff(
-		.rst_l(rst_l),
-		.clk(busclk_reset),
-		.clken((bus_ifu_bus_clk_en | ic_act_miss_f) | dec_tlu_force_halt),
-		.rawclk(clk),
-		.en(bus_cmd_beat_en),
-		.din({bus_new_cmd_beat_count[pt[1174-:8] - 1:0]}),
-		.dout({bus_cmd_beat_count[pt[1174-:8] - 1:0]})
-	);
-	assign bus_last_data_beat = (uncacheable_miss_ff ? bus_data_beat_count[pt[1174-:8] - 1:0] == {{pt[1174-:8] - 1 {1'b0}}, 1'b1} : &bus_data_beat_count[pt[1174-:8] - 1:0]);
-	assign bus_ifu_wr_en = ifu_bus_rvalid & miss_pending;
-	assign bus_ifu_wr_en_ff = ifu_bus_rvalid_ff & miss_pending;
-	assign bus_ifu_wr_en_ff_q = (((ifu_bus_rvalid_ff & miss_pending) & ~uncacheable_miss_ff) & ~(|ifu_bus_rresp_ff[1:0])) & write_ic_16_bytes;
-	assign bus_ifu_wr_en_ff_wo_err = (ifu_bus_rvalid_ff & miss_pending) & ~uncacheable_miss_ff;
-	rvdffie #(.WIDTH(10)) misc_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.din({ic_act_miss_f, ifu_wr_cumulative_err, exu_flush_final, ic_crit_wd_rdy_new_in, bus_ifu_bus_clk_en, scnd_miss_req_in, bus_cmd_req_in, last_data_recieved_in, ifc_dma_access_ok_d, dma_iccm_req}),
-		.dout({ic_act_miss_f_delayed, ifu_wr_data_comb_err_ff, flush_final_f, ic_crit_wd_rdy_new_ff, bus_ifu_bus_clk_en_ff, scnd_miss_req_q, bus_cmd_req_hold, last_data_recieved_ff, ifc_dma_access_ok_prev, dma_iccm_req_f})
-	);
-	rvdffie #(
-		.WIDTH(pt[1174-:8] + 5),
-		.OVERRIDE(1)
-	) misc1_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.din({reset_ic_in, sel_mb_addr, bus_new_data_beat_count[pt[1174-:8] - 1:0], ifc_region_acc_fault_memory_bf, ic_debug_rd_en, ic_debug_rd_en_ff}),
-		.dout({reset_ic_ff, sel_mb_addr_ff, bus_data_beat_count[pt[1174-:8] - 1:0], ifc_region_acc_fault_memory_f, ic_debug_rd_en_ff, ifu_ic_debug_rd_data_valid})
-	);
-	assign reset_tag_valid_for_miss = (ic_act_miss_f_delayed & (miss_state == CRIT_BYP_OK)) & ~uncacheable_miss_ff;
-	assign bus_ifu_wr_data_error = (|ifu_bus_rsp_opc[1:0] & ifu_bus_rvalid) & miss_pending;
-	assign bus_ifu_wr_data_error_ff = (|ifu_bus_rresp_ff[1:0] & ifu_bus_rvalid_ff) & miss_pending;
-	assign ic_crit_wd_rdy = ic_crit_wd_rdy_new_in | ic_crit_wd_rdy_new_ff;
-	assign last_beat = bus_last_data_beat & bus_ifu_wr_en_ff;
-	assign reset_beat_cnt = bus_reset_data_beat_cnt;
-	assign ifc_dma_access_ok_d = (ifc_dma_access_ok & ~iccm_correct_ecc) & ~iccm_dma_sb_error;
-	assign ifc_dma_access_q_ok = (((ifc_dma_access_ok & ~iccm_correct_ecc) & ifc_dma_access_ok_prev) & (perr_state == ERR_IDLE)) & ~iccm_dma_sb_error;
-	assign iccm_ready = ifc_dma_access_q_ok;
-	wire [1:0] iccm_ecc_word_enable;
-	generate
-		if (pt[927-:5] == 1) begin : iccm_enabled
-			wire [3:2] dma_mem_addr_ff;
-			wire iccm_dma_rden;
-			wire iccm_dma_ecc_error_in;
-			wire [13:0] dma_mem_ecc;
-			wire [63:0] iccm_dma_rdata_in;
-			wire [31:0] iccm_dma_rdata_1_muxed;
-			wire [63:0] iccm_corrected_data;
-			wire [13:0] iccm_corrected_ecc;
-			wire [1:0] iccm_double_ecc_error;
-			wire [pt[936-:9] - 1:2] iccm_rw_addr_f;
-			wire [31:0] iccm_corrected_data_f_mux;
-			wire [6:0] iccm_corrected_ecc_f_mux;
-			wire iccm_dma_rvalid_in;
-			wire [77:0] iccm_rdmux_data;
-			wire iccm_rd_ecc_single_err_hold_in;
-			wire [2:0] dma_mem_tag_ff;
-			assign iccm_wren = ((ifc_dma_access_q_ok & dma_iccm_req) & dma_mem_write) | iccm_correct_ecc;
-			assign iccm_rden = ((ifc_dma_access_q_ok & dma_iccm_req) & ~dma_mem_write) | (ifc_iccm_access_bf & ifc_fetch_req_bf);
-			assign iccm_dma_rden = (ifc_dma_access_q_ok & dma_iccm_req) & ~dma_mem_write;
-			assign iccm_wr_size[2:0] = {3 {dma_iccm_req}} & dma_mem_sz[2:0];
-			rvecc_encode iccm_ecc_encode0(
-				.din(dma_mem_wdata[31:0]),
-				.ecc_out(dma_mem_ecc[6:0])
-			);
-			rvecc_encode iccm_ecc_encode1(
-				.din(dma_mem_wdata[63:32]),
-				.ecc_out(dma_mem_ecc[13:7])
-			);
-			assign iccm_wr_data[77:0] = (iccm_correct_ecc & ~(ifc_dma_access_q_ok & dma_iccm_req) ? {iccm_ecc_corr_data_ff[38:0], iccm_ecc_corr_data_ff[38:0]} : {dma_mem_ecc[13:7], dma_mem_wdata[63:32], dma_mem_ecc[6:0], dma_mem_wdata[31:0]});
-			assign iccm_dma_rdata_1_muxed[31:0] = (dma_mem_addr_ff[2] ? iccm_corrected_data[31-:32] : iccm_corrected_data[63-:32]);
-			assign iccm_dma_rdata_in[63:0] = (iccm_dma_ecc_error_in ? {2 {dma_mem_addr[31:0]}} : {iccm_dma_rdata_1_muxed[31:0], iccm_corrected_data[0+:32]});
-			assign iccm_dma_ecc_error_in = |iccm_double_ecc_error[1:0];
-			rvdffe #(.WIDTH(64)) dma_data_ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(clk),
-				.en(iccm_dma_rvalid_in),
-				.din(iccm_dma_rdata_in[63:0]),
-				.dout(iccm_dma_rdata[63:0])
-			);
-			rvdffie #(.WIDTH(11)) dma_misc_bits(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(free_l2clk),
-				.din({dma_mem_tag[2:0], dma_mem_tag_ff[2:0], dma_mem_addr[3:2], iccm_dma_rden, iccm_dma_rvalid_in, iccm_dma_ecc_error_in}),
-				.dout({dma_mem_tag_ff[2:0], iccm_dma_rtag[2:0], dma_mem_addr_ff[3:2], iccm_dma_rvalid_in, iccm_dma_rvalid, iccm_dma_ecc_error})
-			);
-			assign iccm_rw_addr[pt[936-:9] - 1:1] = ((ifc_dma_access_q_ok & dma_iccm_req) & ~iccm_correct_ecc ? dma_mem_addr[pt[936-:9] - 1:1] : (~(ifc_dma_access_q_ok & dma_iccm_req) & iccm_correct_ecc ? {iccm_ecc_corr_index_ff[pt[936-:9] - 1:2], 1'b0} : ifc_fetch_addr_bf[pt[936-:9] - 1:1]));
-			wire [3:0] ic_fetch_val_int_f;
-			wire [3:0] ic_fetch_val_shift_right;
-			assign ic_fetch_val_int_f[3:0] = {2'b00, ic_fetch_val_f[1:0]};
-			assign ic_fetch_val_shift_right[3:0] = {ic_fetch_val_int_f << ifu_fetch_addr_int_f[1]};
-			assign iccm_rdmux_data[77:0] = iccm_rd_data_ecc[77:0];
-			for (i = 0; i < 2; i = i + 1) begin : ICCM_ECC_CHECK
-				assign iccm_ecc_word_enable[i] = (((|ic_fetch_val_shift_right[(2 * i) + 1:2 * i] & ~exu_flush_final) & sel_iccm_data) | iccm_dma_rvalid_in) & ~dec_tlu_core_ecc_disable;
-				rvecc_decode ecc_decode(
-					.en(iccm_ecc_word_enable[i]),
-					.sed_ded(1'b0),
-					.din(iccm_rdmux_data[(39 * i) + 31:39 * i]),
-					.ecc_in(iccm_rdmux_data[(39 * i) + 38:(39 * i) + 32]),
-					.dout(iccm_corrected_data[(i * 32) + 31-:32]),
-					.ecc_out(iccm_corrected_ecc[(i * 7) + 6-:7]),
-					.single_ecc_error(iccm_single_ecc_error[i]),
-					.double_ecc_error(iccm_double_ecc_error[i])
-				);
-			end
-			assign iccm_rd_ecc_single_err = (|iccm_single_ecc_error[1:0] & ifc_iccm_access_f) & ifc_fetch_req_f;
-			assign iccm_rd_ecc_double_err[1:0] = (~ifu_fetch_addr_int_f[1] ? {iccm_double_ecc_error[0], iccm_double_ecc_error[0]} & {2 {ifc_iccm_access_f}} : {iccm_double_ecc_error[1], iccm_double_ecc_error[0]} & {2 {ifc_iccm_access_f}});
-			assign iccm_corrected_data_f_mux[31:0] = (iccm_single_ecc_error[0] ? iccm_corrected_data[0+:32] : iccm_corrected_data[32+:32]);
-			assign iccm_corrected_ecc_f_mux[6:0] = (iccm_single_ecc_error[0] ? iccm_corrected_ecc[0+:7] : iccm_corrected_ecc[7+:7]);
-			assign iccm_ecc_write_status = ((iccm_rd_ecc_single_err & ~iccm_rd_ecc_single_err_ff) & ~exu_flush_final) | iccm_dma_sb_error;
-			assign iccm_rd_ecc_single_err_hold_in = (iccm_rd_ecc_single_err | iccm_rd_ecc_single_err_ff) & ~exu_flush_final;
-			assign iccm_error_start = iccm_rd_ecc_single_err;
-			assign iccm_ecc_corr_index_in[pt[936-:9] - 1:2] = (iccm_single_ecc_error[0] ? iccm_rw_addr_f[pt[936-:9] - 1:2] : iccm_rw_addr_f[pt[936-:9] - 1:2] + 1'b1);
-			rvdffie #(.WIDTH(pt[936-:9] - 1)) iccm_index_f(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(free_l2clk),
-				.din({iccm_rw_addr[pt[936-:9] - 1:2], iccm_rd_ecc_single_err_hold_in}),
-				.dout({iccm_rw_addr_f[pt[936-:9] - 1:2], iccm_rd_ecc_single_err_ff})
-			);
-			rvdffe #(.WIDTH(pt[936-:9] + 37)) ecc_dat0_ff(
-				.clk(clk),
-				.din({iccm_corrected_ecc_f_mux[6:0], iccm_corrected_data_f_mux[31:0], iccm_ecc_corr_index_in[pt[936-:9] - 1:2]}),
-				.dout({iccm_ecc_corr_data_ff[38:0], iccm_ecc_corr_index_ff[pt[936-:9] - 1:2]}),
-				.en(iccm_ecc_write_status),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode)
-			);
-		end
-		else begin : iccm_disabled
-			assign iccm_dma_rvalid = 1'b0;
-			assign iccm_dma_ecc_error = 1'b0;
-			assign iccm_dma_rdata[63:0] = {64 {1'sb0}};
-			assign iccm_single_ecc_error = {2 {1'sb0}};
-			assign iccm_dma_rtag = {3 {1'sb0}};
-			assign iccm_rd_ecc_single_err = 1'b0;
-			assign iccm_rd_ecc_double_err = {2 {1'sb0}};
-			assign iccm_rd_ecc_single_err_ff = 1'b0;
-			assign iccm_error_start = 1'b0;
-			assign iccm_ecc_corr_index_ff[pt[936-:9] - 1:2] = {((pt[936-:9] - 1) >= 2 ? pt[936-:9] - 2 : 4 - pt[936-:9]) {1'sb0}};
-			assign iccm_ecc_corr_data_ff[38:0] = {39 {1'sb0}};
-			assign iccm_ecc_write_status = 1'b0;
-		end
-	endgenerate
-	assign ic_rd_en = (((ifc_fetch_req_bf & ~ifc_fetch_uncacheable_bf) & ~ifc_iccm_access_bf) & ~(((((((miss_state == STREAM) & ~miss_state_en) | ((miss_state == CRIT_BYP_OK) & ~miss_state_en)) | ((miss_state == STALL_SCND_MISS) & ~miss_state_en)) | ((miss_state == MISS_WAIT) & ~miss_state_en)) | ((miss_state == CRIT_WRD_RDY) & ~miss_state_en)) | (((miss_state == CRIT_BYP_OK) & miss_state_en) & (miss_nxtstate == MISS_WAIT)))) | (((ifc_fetch_req_bf & exu_flush_final) & ~ifc_fetch_uncacheable_bf) & ~ifc_iccm_access_bf);
-	wire ic_real_rd_wp_unused;
-	assign ic_real_rd_wp_unused = ((((((ifc_fetch_req_bf & ~ifc_iccm_access_bf) & ~ifc_region_acc_fault_final_bf) & ~dec_tlu_fence_i_wb) & ~stream_miss_f) & ~ic_act_miss_f) & ~(((((((((miss_state == STREAM) & ~miss_state_en) | (((miss_state == CRIT_BYP_OK) & ~miss_state_en) & ~(miss_nxtstate == MISS_WAIT))) | (((miss_state == CRIT_BYP_OK) & miss_state_en) & (miss_nxtstate == MISS_WAIT))) | ((miss_state == MISS_WAIT) & ~miss_state_en)) | ((miss_state == STALL_SCND_MISS) & ~miss_state_en)) | ((miss_state == CRIT_WRD_RDY) & ~miss_state_en)) | ((miss_nxtstate == STREAM) & miss_state_en)) | ((miss_state == SCND_MISS) & ~miss_state_en))) | (((((ifc_fetch_req_bf & ~ifc_iccm_access_bf) & ~ifc_region_acc_fault_final_bf) & ~dec_tlu_fence_i_wb) & ~stream_miss_f) & exu_flush_final);
-	assign ic_wr_en[pt[1060-:7] - 1:0] = bus_ic_wr_en[pt[1060-:7] - 1:0] & {pt[1060-:7] {write_ic_16_bytes}};
-	assign ic_write_stall = write_ic_16_bytes & ~(((miss_state == CRIT_BYP_OK) | ((miss_state == STREAM) & ~((exu_flush_final | ifu_bp_hit_taken_q_f) | stream_eol_f))) & ~((bus_ifu_wr_en_ff & last_beat) & ~uncacheable_miss_ff));
-	reg [pt[1060-:7] - 1:0] ic_tag_valid_unq;
-	generate
-		if (pt[1120-:5] == 1) begin : icache_enabled
-			assign ic_valid = (~ifu_wr_cumulative_err_data & ~(reset_ic_in | reset_ic_ff)) & ~reset_tag_valid_for_miss;
-			assign ifu_status_wr_addr_w_debug[pt[1104-:9]:pt[998-:7]] = ((ic_debug_rd_en | ic_debug_wr_en) & ic_debug_tag_array ? ic_debug_addr[pt[1104-:9]:pt[998-:7]] : ifu_status_wr_addr[pt[1104-:9]:pt[998-:7]]);
-			assign way_status_wr_en_w_debug = way_status_wr_en | (ic_debug_wr_en & ic_debug_tag_array);
-			assign way_status_new_w_debug[pt[1027-:7] - 1:0] = (ic_debug_wr_en & ic_debug_tag_array ? (pt[1027-:7] == 1 ? ic_debug_wr_data[4] : ic_debug_wr_data[6:4]) : way_status_new[pt[1027-:7] - 1:0]);
-			rvdffie #(
-				.WIDTH(((pt[991-:9] - pt[998-:7]) + 1) + pt[1027-:7]),
-				.OVERRIDE(1)
-			) status_misc_ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(free_l2clk),
-				.din({ifu_status_wr_addr_w_debug[pt[1104-:9]:pt[998-:7]], way_status_wr_en_w_debug, way_status_new_w_debug[pt[1027-:7] - 1:0]}),
-				.dout({ifu_status_wr_addr_ff[pt[1104-:9]:pt[998-:7]], way_status_wr_en_ff, way_status_new_ff[pt[1027-:7] - 1:0]})
-			);
-			wire [(pt[1015-:17] / 8) - 1:0] way_status_clken;
-			wire [(pt[1015-:17] / 8) - 1:0] way_status_clk;
-			for (i = 0; i < (pt[1015-:17] / 8); i = i + 1) begin : CLK_GRP_WAY_STATUS
-				assign way_status_clken[i] = ifu_status_wr_addr_ff[pt[1104-:9]:pt[998-:7] + 3] == i;
-				rvclkhdr way_status_cgc(
-					.en(way_status_clken[i]),
-					.l1clk(way_status_clk[i]),
-					.clk(clk),
-					.scan_mode(scan_mode)
-				);
-				genvar j;
-				for (j = 0; j < 8; j = j + 1) begin : WAY_STATUS
-					rvdffs_fpga #(.WIDTH(pt[1027-:7])) ic_way_status(
-						.rst_l(rst_l),
-						.clk(way_status_clk[i]),
-						.clken(way_status_clken[i]),
-						.rawclk(clk),
-						.en((ifu_status_wr_addr_ff[pt[998-:7] + 2:pt[998-:7]] == j) & way_status_wr_en_ff),
-						.din(way_status_new_ff[pt[1027-:7] - 1:0]),
-						.dout(way_status_out[((8 * i) + j) * pt[1027-:7]+:pt[1027-:7]])
-					);
-				end
-			end
-			function automatic signed [(pt[991-:9] - pt[998-:7]) - 1:0] sv2v_cast_46E4F_signed;
-				input reg signed [(pt[991-:9] - pt[998-:7]) - 1:0] inp;
-				sv2v_cast_46E4F_signed = inp;
-			endfunction
-			always @(*) begin : way_status_out_mux
-				way_status[pt[1027-:7] - 1:0] = {pt[1027-:7] {1'sb0}};
-				begin : sv2v_autoblock_47
-					reg signed [31:0] j;
-					for (j = 0; j < pt[1015-:17]; j = j + 1)
-						begin : status_mux_loop
-							if (ifu_ic_rw_int_addr_ff[pt[1104-:9]:pt[998-:7]] == sv2v_cast_46E4F_signed(j)) begin : mux_out
-								way_status[pt[1027-:7] - 1:0] = way_status_out[j * pt[1027-:7]+:pt[1027-:7]];
-							end
-						end
-				end
-			end
-			assign ifu_ic_rw_int_addr_w_debug[pt[1104-:9]:pt[998-:7]] = ((ic_debug_rd_en | ic_debug_wr_en) & ic_debug_tag_array ? ic_debug_addr[pt[1104-:9]:pt[998-:7]] : ifu_ic_rw_int_addr[pt[1104-:9]:pt[998-:7]]);
-			assign ifu_tag_wren_w_debug[pt[1060-:7] - 1:0] = ifu_tag_wren[pt[1060-:7] - 1:0] | ic_debug_tag_wr_en[pt[1060-:7] - 1:0];
-			assign ic_valid_w_debug = (ic_debug_wr_en & ic_debug_tag_array ? ic_debug_wr_data[0] : ic_valid);
-			rvdffie #(.WIDTH(((pt[991-:9] - pt[998-:7]) + pt[1060-:7]) + 1)) tag_addr_ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.clk(free_l2clk),
-				.din({ifu_ic_rw_int_addr_w_debug[pt[1104-:9]:pt[998-:7]], ifu_tag_wren_w_debug[pt[1060-:7] - 1:0], ic_valid_w_debug}),
-				.dout({ifu_ic_rw_int_addr_ff[pt[1104-:9]:pt[998-:7]], ifu_tag_wren_ff[pt[1060-:7] - 1:0], ic_valid_ff})
-			);
-			wire [(pt[1060-:7] * pt[1015-:17]) - 1:0] ic_tag_valid_out;
-			wire [((pt[1015-:17] / 32) * pt[1060-:7]) - 1:0] tag_valid_clken;
-			wire [((pt[1015-:17] / 32) * pt[1060-:7]) - 1:0] tag_valid_clk;
-			for (i = 0; i < (pt[1015-:17] / 32); i = i + 1) begin : CLK_GRP_TAG_VALID
-				genvar j;
-				for (j = 0; j < pt[1060-:7]; j = j + 1) begin : way_clken
-					if (pt[1015-:17] == 32) begin
-						assign tag_valid_clken[(i * pt[1060-:7]) + j] = (ifu_tag_wren_ff[j] | perr_err_inv_way[j]) | reset_all_tags;
-					end
-					else assign tag_valid_clken[(i * pt[1060-:7]) + j] = (((ifu_ic_rw_int_addr_ff[pt[1104-:9]:pt[998-:7] + 5] == i) & ifu_tag_wren_ff[j]) | ((perr_ic_index_ff[pt[1104-:9]:pt[998-:7] + 5] == i) & perr_err_inv_way[j])) | reset_all_tags;
-					rvclkhdr way_status_cgc(
-						.en(tag_valid_clken[(i * pt[1060-:7]) + j]),
-						.l1clk(tag_valid_clk[(i * pt[1060-:7]) + j]),
-						.clk(clk),
-						.scan_mode(scan_mode)
-					);
-					genvar k;
-					for (k = 0; k < 32; k = k + 1) begin : TAG_VALID
-						rvdffs_fpga #(.WIDTH(1)) ic_way_tagvalid_dup(
-							.rst_l(rst_l),
-							.clk(tag_valid_clk[(i * pt[1060-:7]) + j]),
-							.clken(tag_valid_clken[(i * pt[1060-:7]) + j]),
-							.rawclk(clk),
-							.en((((ifu_ic_rw_int_addr_ff[pt[1104-:9]:pt[998-:7]] == (k + (32 * i))) & ifu_tag_wren_ff[j]) | ((perr_ic_index_ff[pt[1104-:9]:pt[998-:7]] == (k + (32 * i))) & perr_err_inv_way[j])) | reset_all_tags),
-							.din((ic_valid_ff & ~reset_all_tags) & ~perr_sel_invalidate),
-							.dout(ic_tag_valid_out[(j * pt[1015-:17]) + ((32 * i) + k)])
-						);
-					end
-				end
-			end
-			always @(*) begin : tag_valid_out_mux
-				ic_tag_valid_unq[pt[1060-:7] - 1:0] = {pt[1060-:7] {1'sb0}};
-				begin : sv2v_autoblock_48
-					reg signed [31:0] j;
-					for (j = 0; j < pt[1015-:17]; j = j + 1)
-						begin : tag_valid_loop
-							if (ifu_ic_rw_int_addr_ff[pt[1104-:9]:pt[998-:7]] == sv2v_cast_46E4F_signed(j)) begin : valid_out
-								begin : sv2v_autoblock_49
-									reg signed [31:0] k;
-									for (k = 0; k < pt[1060-:7]; k = k + 1)
-										ic_tag_valid_unq[k] = ic_tag_valid_unq[k] | ic_tag_valid_out[(k * pt[1015-:17]) + j];
-								end
-							end
-						end
-				end
-			end
-			if (pt[1060-:7] == 4) begin : four_way_plru
-				assign replace_way_mb_any[3] = ((way_status_mb_ff[2] & way_status_mb_ff[0]) & &tagv_mb_ff[3:0]) | (((~tagv_mb_ff[3] & tagv_mb_ff[2]) & tagv_mb_ff[1]) & tagv_mb_ff[0]);
-				assign replace_way_mb_any[2] = ((~way_status_mb_ff[2] & way_status_mb_ff[0]) & &tagv_mb_ff[3:0]) | ((~tagv_mb_ff[2] & tagv_mb_ff[1]) & tagv_mb_ff[0]);
-				assign replace_way_mb_any[1] = ((way_status_mb_ff[1] & ~way_status_mb_ff[0]) & &tagv_mb_ff[3:0]) | (~tagv_mb_ff[1] & tagv_mb_ff[0]);
-				assign replace_way_mb_any[0] = ((~way_status_mb_ff[1] & ~way_status_mb_ff[0]) & &tagv_mb_ff[3:0]) | ~tagv_mb_ff[0];
-				assign way_status_hit_new[pt[1027-:7] - 1:0] = ((({3 {~exu_flush_final & ic_rd_hit[0]}} & {way_status[2], 1'b1, 1'b1}) | ({3 {~exu_flush_final & ic_rd_hit[1]}} & {way_status[2], 1'b0, 1'b1})) | ({3 {~exu_flush_final & ic_rd_hit[2]}} & {1'b1, way_status[1], 1'b0})) | ({3 {~exu_flush_final & ic_rd_hit[3]}} & {1'b0, way_status[1], 1'b0});
-				assign way_status_rep_new[pt[1027-:7] - 1:0] = ((({3 {replace_way_mb_any[0]}} & {way_status_mb_ff[2], 1'b1, 1'b1}) | ({3 {replace_way_mb_any[1]}} & {way_status_mb_ff[2], 1'b0, 1'b1})) | ({3 {replace_way_mb_any[2]}} & {1'b1, way_status_mb_ff[1], 1'b0})) | ({3 {replace_way_mb_any[3]}} & {1'b0, way_status_mb_ff[1], 1'b0});
-			end
-			else begin : two_ways_plru
-				assign replace_way_mb_any[0] = ((~way_status_mb_ff & tagv_mb_ff[0]) & tagv_mb_ff[1]) | ~tagv_mb_ff[0];
-				assign replace_way_mb_any[1] = ((way_status_mb_ff & tagv_mb_ff[0]) & tagv_mb_ff[1]) | (~tagv_mb_ff[1] & tagv_mb_ff[0]);
-				assign way_status_hit_new[pt[1027-:7] - 1:0] = ic_rd_hit[0];
-				assign way_status_rep_new[pt[1027-:7] - 1:0] = replace_way_mb_any[0];
-			end
-			assign way_status_new[pt[1027-:7] - 1:0] = (bus_ifu_wr_en_ff_q & last_beat ? way_status_rep_new[pt[1027-:7] - 1:0] : way_status_hit_new[pt[1027-:7] - 1:0]);
-			assign way_status_wr_en = (bus_ifu_wr_en_ff_q & last_beat) | ic_act_hit_f;
-			for (i = 0; i < pt[1060-:7]; i = i + 1) begin : bus_wren_loop
-				assign bus_wren[i] = (bus_ifu_wr_en_ff_q & replace_way_mb_any[i]) & miss_pending;
-				assign bus_wren_last[i] = ((bus_ifu_wr_en_ff_wo_err & replace_way_mb_any[i]) & miss_pending) & bus_last_data_beat;
-				assign ifu_tag_wren[i] = bus_wren_last[i] | wren_reset_miss[i];
-				assign wren_reset_miss[i] = replace_way_mb_any[i] & reset_tag_valid_for_miss;
-			end
-			assign bus_ic_wr_en[pt[1060-:7] - 1:0] = bus_wren[pt[1060-:7] - 1:0];
-		end
-		else begin : icache_disabled
-			wire [pt[1060-:7]:1] sv2v_tmp_602A9;
-			assign sv2v_tmp_602A9 = {pt[1060-:7] {1'sb0}};
-			always @(*) ic_tag_valid_unq[pt[1060-:7] - 1:0] = sv2v_tmp_602A9;
-			wire [pt[1027-:7]:1] sv2v_tmp_89B17;
-			assign sv2v_tmp_89B17 = {pt[1027-:7] {1'sb0}};
-			always @(*) way_status[pt[1027-:7] - 1:0] = sv2v_tmp_89B17;
-			assign replace_way_mb_any[pt[1060-:7] - 1:0] = {pt[1060-:7] {1'sb0}};
-			assign way_status_hit_new[pt[1027-:7] - 1:0] = {pt[1027-:7] {1'sb0}};
-			assign way_status_rep_new[pt[1027-:7] - 1:0] = {pt[1027-:7] {1'sb0}};
-			assign way_status_new[pt[1027-:7] - 1:0] = {pt[1027-:7] {1'sb0}};
-			assign way_status_wr_en = 1'b0;
-			assign bus_wren[pt[1060-:7] - 1:0] = {pt[1060-:7] {1'sb0}};
-		end
-	endgenerate
-	assign ic_tag_valid[pt[1060-:7] - 1:0] = ic_tag_valid_unq[pt[1060-:7] - 1:0] & {pt[1060-:7] {~fetch_uncacheable_ff & ifc_fetch_req_f_raw}};
-	assign ic_debug_tag_val_rd_out = |((ic_tag_valid_unq[pt[1060-:7] - 1:0] & ic_debug_way_ff[pt[1060-:7] - 1:0]) & {pt[1060-:7] {ic_debug_rd_en_ff}});
-	assign ifu_pmu_ic_miss_in = ic_act_miss_f;
-	assign ifu_pmu_ic_hit_in = ic_act_hit_f;
-	assign ifu_pmu_bus_error_in = |ifc_bus_acc_fault_f;
-	assign ifu_pmu_bus_trxn_in = bus_cmd_sent;
-	assign ifu_pmu_bus_busy_in = (ifu_bus_arvalid_ff & ~ifu_bus_arready_ff) & miss_pending;
-	rvdffie #(.WIDTH(9)) ifu_pmu_sigs_ff(
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.clk(free_l2clk),
-		.din({ifc_fetch_uncacheable_bf, ifc_fetch_req_qual_bf, dma_sb_err_state, dec_tlu_fence_i_wb, ifu_pmu_ic_miss_in, ifu_pmu_ic_hit_in, ifu_pmu_bus_error_in, ifu_pmu_bus_busy_in, ifu_pmu_bus_trxn_in}),
-		.dout({fetch_uncacheable_ff, ifc_fetch_req_f_raw, dma_sb_err_state_ff, reset_all_tags, ifu_pmu_ic_miss, ifu_pmu_ic_hit, ifu_pmu_bus_error, ifu_pmu_bus_busy, ifu_pmu_bus_trxn})
-	);
-	assign ic_debug_addr[pt[1104-:9]:3] = dec_tlu_ic_diag_pkt[pt[1104-:9] - 1:2];
-	assign ic_debug_way_enc[1:0] = dec_tlu_ic_diag_pkt[17:16];
-	assign ic_debug_tag_array = dec_tlu_ic_diag_pkt[18];
-	assign ic_debug_rd_en = dec_tlu_ic_diag_pkt[1];
-	assign ic_debug_wr_en = dec_tlu_ic_diag_pkt[0];
-	assign ic_debug_way[pt[1060-:7] - 1:0] = {ic_debug_way_enc[1:0] == 2'b11, ic_debug_way_enc[1:0] == 2'b10, ic_debug_way_enc[1:0] == 2'b01, ic_debug_way_enc[1:0] == 2'b00};
-	assign ic_debug_tag_wr_en[pt[1060-:7] - 1:0] = {pt[1060-:7] {ic_debug_wr_en & ic_debug_tag_array}} & ic_debug_way[pt[1060-:7] - 1:0];
-	assign ic_debug_ict_array_sel_in = ic_debug_rd_en & ic_debug_tag_array;
-	rvdff_fpga #(.WIDTH(1 + pt[1060-:7])) ifu_debug_sel_ff(
-		.rst_l(rst_l),
-		.clk(debug_c1_clk),
-		.clken(debug_c1_clken),
-		.rawclk(clk),
-		.din({ic_debug_ict_array_sel_in, ic_debug_way[pt[1060-:7] - 1:0]}),
-		.dout({ic_debug_ict_array_sel_ff, ic_debug_way_ff[pt[1060-:7] - 1:0]})
-	);
-	assign debug_data_clken = ic_debug_rd_en_ff;
-	assign ifc_region_acc_okay = (((((((~(|{pt[530-:5], pt[525-:5], pt[520-:5], pt[515-:5], pt[510-:5], pt[505-:5], pt[500-:5], pt[495-:5]}) | (pt[530-:5] & (({ifc_fetch_addr_bf[31:1], 1'b0} | pt[490-:36]) == (pt[818-:36] | pt[490-:36])))) | (pt[525-:5] & (({ifc_fetch_addr_bf[31:1], 1'b0} | pt[454-:36]) == (pt[782-:36] | pt[454-:36])))) | (pt[520-:5] & (({ifc_fetch_addr_bf[31:1], 1'b0} | pt[418-:36]) == (pt[746-:36] | pt[418-:36])))) | (pt[515-:5] & (({ifc_fetch_addr_bf[31:1], 1'b0} | pt[382-:36]) == (pt[710-:36] | pt[382-:36])))) | (pt[510-:5] & (({ifc_fetch_addr_bf[31:1], 1'b0} | pt[346-:36]) == (pt[674-:36] | pt[346-:36])))) | (pt[505-:5] & (({ifc_fetch_addr_bf[31:1], 1'b0} | pt[310-:36]) == (pt[638-:36] | pt[310-:36])))) | (pt[500-:5] & (({ifc_fetch_addr_bf[31:1], 1'b0} | pt[274-:36]) == (pt[602-:36] | pt[274-:36])))) | (pt[495-:5] & (({ifc_fetch_addr_bf[31:1], 1'b0} | pt[238-:36]) == (pt[566-:36] | pt[238-:36])));
-	assign ifc_region_acc_fault_memory_bf = (~ifc_iccm_access_bf & ~ifc_region_acc_okay) & ifc_fetch_req_bf;
-	assign ifc_region_acc_fault_final_bf = ifc_region_acc_fault_bf | ifc_region_acc_fault_memory_bf;
-endmodule
-module eb1_lsu (
-	clk_override,
-	dec_tlu_flush_lower_r,
-	dec_tlu_i0_kill_writeb_r,
-	dec_tlu_force_halt,
-	dec_tlu_external_ldfwd_disable,
-	dec_tlu_wb_coalescing_disable,
-	dec_tlu_sideeffect_posted_disable,
-	dec_tlu_core_ecc_disable,
-	exu_lsu_rs1_d,
-	exu_lsu_rs2_d,
-	dec_lsu_offset_d,
-	lsu_p,
-	dec_lsu_valid_raw_d,
-	dec_tlu_mrac_ff,
-	lsu_result_m,
-	lsu_result_corr_r,
-	lsu_load_stall_any,
-	lsu_store_stall_any,
-	lsu_fastint_stall_any,
-	lsu_idle_any,
-	lsu_active,
-	lsu_fir_addr,
-	lsu_fir_error,
-	lsu_single_ecc_error_incr,
-	lsu_error_pkt_r,
-	lsu_imprecise_error_load_any,
-	lsu_imprecise_error_store_any,
-	lsu_imprecise_error_addr_any,
-	lsu_nonblock_load_valid_m,
-	lsu_nonblock_load_tag_m,
-	lsu_nonblock_load_inv_r,
-	lsu_nonblock_load_inv_tag_r,
-	lsu_nonblock_load_data_valid,
-	lsu_nonblock_load_data_error,
-	lsu_nonblock_load_data_tag,
-	lsu_nonblock_load_data,
-	lsu_pmu_load_external_m,
-	lsu_pmu_store_external_m,
-	lsu_pmu_misaligned_m,
-	lsu_pmu_bus_trxn,
-	lsu_pmu_bus_misaligned,
-	lsu_pmu_bus_error,
-	lsu_pmu_bus_busy,
-	trigger_pkt_any,
-	lsu_trigger_match_m,
-	dccm_wren,
-	dccm_rden,
-	dccm_wr_addr_lo,
-	dccm_wr_addr_hi,
-	dccm_rd_addr_lo,
-	dccm_rd_addr_hi,
-	dccm_wr_data_lo,
-	dccm_wr_data_hi,
-	dccm_rd_data_lo,
-	dccm_rd_data_hi,
-	picm_wren,
-	picm_rden,
-	picm_mken,
-	picm_rdaddr,
-	picm_wraddr,
-	picm_wr_data,
-	picm_rd_data,
-	lsu_axi_awvalid,
-	lsu_axi_awready,
-	lsu_axi_awid,
-	lsu_axi_awaddr,
-	lsu_axi_awregion,
-	lsu_axi_awlen,
-	lsu_axi_awsize,
-	lsu_axi_awburst,
-	lsu_axi_awlock,
-	lsu_axi_awcache,
-	lsu_axi_awprot,
-	lsu_axi_awqos,
-	lsu_axi_wvalid,
-	lsu_axi_wready,
-	lsu_axi_wdata,
-	lsu_axi_wstrb,
-	lsu_axi_wlast,
-	lsu_axi_bvalid,
-	lsu_axi_bready,
-	lsu_axi_bresp,
-	lsu_axi_bid,
-	lsu_axi_arvalid,
-	lsu_axi_arready,
-	lsu_axi_arid,
-	lsu_axi_araddr,
-	lsu_axi_arregion,
-	lsu_axi_arlen,
-	lsu_axi_arsize,
-	lsu_axi_arburst,
-	lsu_axi_arlock,
-	lsu_axi_arcache,
-	lsu_axi_arprot,
-	lsu_axi_arqos,
-	lsu_axi_rvalid,
-	lsu_axi_rready,
-	lsu_axi_rid,
-	lsu_axi_rdata,
-	lsu_axi_rresp,
-	lsu_axi_rlast,
-	lsu_bus_clk_en,
-	dma_dccm_req,
-	dma_mem_tag,
-	dma_mem_addr,
-	dma_mem_sz,
-	dma_mem_write,
-	dma_mem_wdata,
-	dccm_dma_rvalid,
-	dccm_dma_ecc_error,
-	dccm_dma_rtag,
-	dccm_dma_rdata,
-	dccm_ready,
-	scan_mode,
-	clk,
-	active_clk,
-	rst_l
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk_override;
-	input wire dec_tlu_flush_lower_r;
-	input wire dec_tlu_i0_kill_writeb_r;
-	input wire dec_tlu_force_halt;
-	input wire dec_tlu_external_ldfwd_disable;
-	input wire dec_tlu_wb_coalescing_disable;
-	input wire dec_tlu_sideeffect_posted_disable;
-	input wire dec_tlu_core_ecc_disable;
-	input wire [31:0] exu_lsu_rs1_d;
-	input wire [31:0] exu_lsu_rs2_d;
-	input wire [11:0] dec_lsu_offset_d;
-	input wire [13:0] lsu_p;
-	input wire dec_lsu_valid_raw_d;
-	input wire [31:0] dec_tlu_mrac_ff;
-	output wire [31:0] lsu_result_m;
-	output wire [31:0] lsu_result_corr_r;
-	output wire lsu_load_stall_any;
-	output wire lsu_store_stall_any;
-	output wire lsu_fastint_stall_any;
-	output wire lsu_idle_any;
-	output wire lsu_active;
-	output wire [31:1] lsu_fir_addr;
-	output wire [1:0] lsu_fir_error;
-	output wire lsu_single_ecc_error_incr;
-	output wire [39:0] lsu_error_pkt_r;
-	output wire lsu_imprecise_error_load_any;
-	output wire lsu_imprecise_error_store_any;
-	output wire [31:0] lsu_imprecise_error_addr_any;
-	output wire lsu_nonblock_load_valid_m;
-	output wire [pt[164-:7] - 1:0] lsu_nonblock_load_tag_m;
-	output wire lsu_nonblock_load_inv_r;
-	output wire [pt[164-:7] - 1:0] lsu_nonblock_load_inv_tag_r;
-	output wire lsu_nonblock_load_data_valid;
-	output wire lsu_nonblock_load_data_error;
-	output wire [pt[164-:7] - 1:0] lsu_nonblock_load_data_tag;
-	output wire [31:0] lsu_nonblock_load_data;
-	output wire lsu_pmu_load_external_m;
-	output wire lsu_pmu_store_external_m;
-	output wire lsu_pmu_misaligned_m;
-	output wire lsu_pmu_bus_trxn;
-	output wire lsu_pmu_bus_misaligned;
-	output wire lsu_pmu_bus_error;
-	output wire lsu_pmu_bus_busy;
-	input wire [151:0] trigger_pkt_any;
-	output wire [3:0] lsu_trigger_match_m;
-	output wire dccm_wren;
-	output wire dccm_rden;
-	output wire [pt[1398-:9] - 1:0] dccm_wr_addr_lo;
-	output wire [pt[1398-:9] - 1:0] dccm_wr_addr_hi;
-	output wire [pt[1398-:9] - 1:0] dccm_rd_addr_lo;
-	output wire [pt[1398-:9] - 1:0] dccm_rd_addr_hi;
-	output wire [pt[1360-:10] - 1:0] dccm_wr_data_lo;
-	output wire [pt[1360-:10] - 1:0] dccm_wr_data_hi;
-	input wire [pt[1360-:10] - 1:0] dccm_rd_data_lo;
-	input wire [pt[1360-:10] - 1:0] dccm_rd_data_hi;
-	output wire picm_wren;
-	output wire picm_rden;
-	output wire picm_mken;
-	output wire [31:0] picm_rdaddr;
-	output wire [31:0] picm_wraddr;
-	output wire [31:0] picm_wr_data;
-	input wire [31:0] picm_rd_data;
-	output wire lsu_axi_awvalid;
-	input wire lsu_axi_awready;
-	output wire [pt[181-:8] - 1:0] lsu_axi_awid;
-	output wire [31:0] lsu_axi_awaddr;
-	output wire [3:0] lsu_axi_awregion;
-	output wire [7:0] lsu_axi_awlen;
-	output wire [2:0] lsu_axi_awsize;
-	output wire [1:0] lsu_axi_awburst;
-	output wire lsu_axi_awlock;
-	output wire [3:0] lsu_axi_awcache;
-	output wire [2:0] lsu_axi_awprot;
-	output wire [3:0] lsu_axi_awqos;
-	output wire lsu_axi_wvalid;
-	input wire lsu_axi_wready;
-	output wire [63:0] lsu_axi_wdata;
-	output wire [7:0] lsu_axi_wstrb;
-	output wire lsu_axi_wlast;
-	input wire lsu_axi_bvalid;
-	output wire lsu_axi_bready;
-	input wire [1:0] lsu_axi_bresp;
-	input wire [pt[181-:8] - 1:0] lsu_axi_bid;
-	output wire lsu_axi_arvalid;
-	input wire lsu_axi_arready;
-	output wire [pt[181-:8] - 1:0] lsu_axi_arid;
-	output wire [31:0] lsu_axi_araddr;
-	output wire [3:0] lsu_axi_arregion;
-	output wire [7:0] lsu_axi_arlen;
-	output wire [2:0] lsu_axi_arsize;
-	output wire [1:0] lsu_axi_arburst;
-	output wire lsu_axi_arlock;
-	output wire [3:0] lsu_axi_arcache;
-	output wire [2:0] lsu_axi_arprot;
-	output wire [3:0] lsu_axi_arqos;
-	input wire lsu_axi_rvalid;
-	output wire lsu_axi_rready;
-	input wire [pt[181-:8] - 1:0] lsu_axi_rid;
-	input wire [63:0] lsu_axi_rdata;
-	input wire [1:0] lsu_axi_rresp;
-	input wire lsu_axi_rlast;
-	input wire lsu_bus_clk_en;
-	input wire dma_dccm_req;
-	input wire [2:0] dma_mem_tag;
-	input wire [31:0] dma_mem_addr;
-	input wire [2:0] dma_mem_sz;
-	input wire dma_mem_write;
-	input wire [63:0] dma_mem_wdata;
-	output wire dccm_dma_rvalid;
-	output wire dccm_dma_ecc_error;
-	output wire [2:0] dccm_dma_rtag;
-	output wire [63:0] dccm_dma_rdata;
-	output wire dccm_ready;
-	input wire scan_mode;
-	input wire clk;
-	input wire active_clk;
-	input wire rst_l;
-	wire lsu_dccm_rden_m;
-	wire lsu_dccm_rden_r;
-	wire [31:0] store_data_m;
-	wire [31:0] store_data_r;
-	wire [31:0] store_data_hi_r;
-	wire [31:0] store_data_lo_r;
-	wire [31:0] store_datafn_hi_r;
-	wire [31:0] store_datafn_lo_r;
-	wire [31:0] sec_data_lo_m;
-	wire [31:0] sec_data_hi_m;
-	wire [31:0] sec_data_lo_r;
-	wire [31:0] sec_data_hi_r;
-	wire [31:0] lsu_ld_data_m;
-	wire [31:0] dccm_rdata_hi_m;
-	wire [31:0] dccm_rdata_lo_m;
-	wire [6:0] dccm_data_ecc_hi_m;
-	wire [6:0] dccm_data_ecc_lo_m;
-	wire lsu_single_ecc_error_m;
-	wire lsu_double_ecc_error_m;
-	wire [31:0] lsu_ld_data_r;
-	wire [31:0] lsu_ld_data_corr_r;
-	wire [31:0] dccm_rdata_hi_r;
-	wire [31:0] dccm_rdata_lo_r;
-	wire [6:0] dccm_data_ecc_hi_r;
-	wire [6:0] dccm_data_ecc_lo_r;
-	wire single_ecc_error_hi_r;
-	wire single_ecc_error_lo_r;
-	wire lsu_single_ecc_error_r;
-	wire lsu_double_ecc_error_r;
-	wire ld_single_ecc_error_r;
-	wire ld_single_ecc_error_r_ff;
-	wire [31:0] picm_mask_data_m;
-	wire [31:0] lsu_addr_d;
-	wire [31:0] lsu_addr_m;
-	wire [31:0] lsu_addr_r;
-	wire [31:0] end_addr_d;
-	wire [31:0] end_addr_m;
-	wire [31:0] end_addr_r;
-	wire [13:0] lsu_pkt_d;
-	wire [13:0] lsu_pkt_m;
-	wire [13:0] lsu_pkt_r;
-	wire lsu_i0_valid_d;
-	wire lsu_i0_valid_m;
-	wire lsu_i0_valid_r;
-	wire store_stbuf_reqvld_r;
-	wire ldst_stbuf_reqvld_r;
-	wire lsu_commit_r;
-	wire lsu_exc_m;
-	wire addr_in_dccm_d;
-	wire addr_in_dccm_m;
-	wire addr_in_dccm_r;
-	wire addr_in_pic_d;
-	wire addr_in_pic_m;
-	wire addr_in_pic_r;
-	wire ldst_dual_d;
-	wire ldst_dual_m;
-	wire ldst_dual_r;
-	wire addr_external_m;
-	wire stbuf_reqvld_any;
-	wire stbuf_reqvld_flushed_any;
-	wire [pt[157-:9] - 1:0] stbuf_addr_any;
-	wire [pt[1382-:10] - 1:0] stbuf_data_any;
-	wire [pt[1372-:7] - 1:0] stbuf_ecc_any;
-	wire [pt[1382-:10] - 1:0] sec_data_lo_r_ff;
-	wire [pt[1382-:10] - 1:0] sec_data_hi_r_ff;
-	wire [pt[1372-:7] - 1:0] sec_data_ecc_hi_r_ff;
-	wire [pt[1372-:7] - 1:0] sec_data_ecc_lo_r_ff;
-	wire lsu_cmpen_m;
-	wire [pt[1382-:10] - 1:0] stbuf_fwddata_hi_m;
-	wire [pt[1382-:10] - 1:0] stbuf_fwddata_lo_m;
-	wire [pt[1389-:7] - 1:0] stbuf_fwdbyteen_hi_m;
-	wire [pt[1389-:7] - 1:0] stbuf_fwdbyteen_lo_m;
-	wire lsu_stbuf_commit_any;
-	wire lsu_stbuf_empty_any;
-	wire lsu_stbuf_full_any;
-	wire lsu_busreq_r;
-	wire lsu_bus_buffer_pend_any;
-	wire lsu_bus_buffer_empty_any;
-	wire lsu_bus_buffer_full_any;
-	wire lsu_busreq_m;
-	wire [31:0] bus_read_data_m;
-	wire flush_m_up;
-	wire flush_r;
-	wire is_sideeffects_m;
-	wire [2:0] dma_mem_tag_d;
-	wire [2:0] dma_mem_tag_m;
-	wire ldst_nodma_mtor;
-	wire dma_dccm_wen;
-	wire dma_pic_wen;
-	wire [31:0] dma_dccm_wdata_lo;
-	wire [31:0] dma_dccm_wdata_hi;
-	wire [pt[1372-:7] - 1:0] dma_dccm_wdata_ecc_lo;
-	wire [pt[1372-:7] - 1:0] dma_dccm_wdata_ecc_hi;
-	wire lsu_busm_clken;
-	wire lsu_bus_obuf_c1_clken;
-	wire lsu_c1_m_clk;
-	wire lsu_c1_r_clk;
-	wire lsu_c2_m_clk;
-	wire lsu_c2_r_clk;
-	wire lsu_store_c1_m_clk;
-	wire lsu_store_c1_r_clk;
-	wire lsu_stbuf_c1_clk;
-	wire lsu_bus_ibuf_c1_clk;
-	wire lsu_bus_obuf_c1_clk;
-	wire lsu_bus_buf_c1_clk;
-	wire lsu_busm_clk;
-	wire lsu_free_c2_clk;
-	wire lsu_raw_fwd_lo_m;
-	wire lsu_raw_fwd_hi_m;
-	wire lsu_raw_fwd_lo_r;
-	wire lsu_raw_fwd_hi_r;
-	assign lsu_raw_fwd_lo_m = |stbuf_fwdbyteen_lo_m[pt[1389-:7] - 1:0];
-	assign lsu_raw_fwd_hi_m = |stbuf_fwdbyteen_hi_m[pt[1389-:7] - 1:0];
-	eb1_lsu_lsc_ctl #(.pt(pt)) lsu_lsc_ctl(
-		.rst_l(rst_l),
-		.clk_override(clk_override),
-		.clk(clk),
-		.lsu_c1_m_clk(lsu_c1_m_clk),
-		.lsu_c1_r_clk(lsu_c1_r_clk),
-		.lsu_c2_m_clk(lsu_c2_m_clk),
-		.lsu_c2_r_clk(lsu_c2_r_clk),
-		.lsu_store_c1_m_clk(lsu_store_c1_m_clk),
-		.lsu_ld_data_r(lsu_ld_data_r),
-		.lsu_ld_data_corr_r(lsu_ld_data_corr_r),
-		.lsu_single_ecc_error_r(lsu_single_ecc_error_r),
-		.lsu_double_ecc_error_r(lsu_double_ecc_error_r),
-		.lsu_ld_data_m(lsu_ld_data_m),
-		.lsu_single_ecc_error_m(lsu_single_ecc_error_m),
-		.lsu_double_ecc_error_m(lsu_double_ecc_error_m),
-		.flush_m_up(flush_m_up),
-		.flush_r(flush_r),
-		.ldst_dual_d(ldst_dual_d),
-		.ldst_dual_m(ldst_dual_m),
-		.ldst_dual_r(ldst_dual_r),
-		.exu_lsu_rs1_d(exu_lsu_rs1_d),
-		.exu_lsu_rs2_d(exu_lsu_rs2_d),
-		.lsu_p(lsu_p),
-		.dec_lsu_valid_raw_d(dec_lsu_valid_raw_d),
-		.dec_lsu_offset_d(dec_lsu_offset_d),
-		.picm_mask_data_m(picm_mask_data_m),
-		.bus_read_data_m(bus_read_data_m),
-		.lsu_result_m(lsu_result_m),
-		.lsu_result_corr_r(lsu_result_corr_r),
-		.lsu_addr_d(lsu_addr_d),
-		.lsu_addr_m(lsu_addr_m),
-		.lsu_addr_r(lsu_addr_r),
-		.end_addr_d(end_addr_d),
-		.end_addr_m(end_addr_m),
-		.end_addr_r(end_addr_r),
-		.store_data_m(store_data_m),
-		.dec_tlu_mrac_ff(dec_tlu_mrac_ff),
-		.lsu_exc_m(lsu_exc_m),
-		.is_sideeffects_m(is_sideeffects_m),
-		.lsu_commit_r(lsu_commit_r),
-		.lsu_single_ecc_error_incr(lsu_single_ecc_error_incr),
-		.lsu_error_pkt_r(lsu_error_pkt_r),
-		.lsu_fir_addr(lsu_fir_addr),
-		.lsu_fir_error(lsu_fir_error),
-		.addr_in_dccm_d(addr_in_dccm_d),
-		.addr_in_dccm_m(addr_in_dccm_m),
-		.addr_in_dccm_r(addr_in_dccm_r),
-		.addr_in_pic_d(addr_in_pic_d),
-		.addr_in_pic_m(addr_in_pic_m),
-		.addr_in_pic_r(addr_in_pic_r),
-		.addr_external_m(addr_external_m),
-		.dma_dccm_req(dma_dccm_req),
-		.dma_mem_addr(dma_mem_addr),
-		.dma_mem_sz(dma_mem_sz),
-		.dma_mem_write(dma_mem_write),
-		.dma_mem_wdata(dma_mem_wdata),
-		.lsu_pkt_d(lsu_pkt_d),
-		.lsu_pkt_m(lsu_pkt_m),
-		.lsu_pkt_r(lsu_pkt_r),
-		.scan_mode(scan_mode)
-	);
-	assign lsu_store_stall_any = (lsu_stbuf_full_any | lsu_bus_buffer_full_any) | ld_single_ecc_error_r_ff;
-	assign lsu_load_stall_any = lsu_bus_buffer_full_any | ld_single_ecc_error_r_ff;
-	assign lsu_fastint_stall_any = ld_single_ecc_error_r;
-	assign dma_mem_tag_d[2:0] = dma_mem_tag[2:0];
-	assign ldst_nodma_mtor = ((lsu_pkt_m[0] & ~lsu_pkt_m[4]) & (addr_in_dccm_m | addr_in_pic_m)) & lsu_pkt_m[6];
-	assign dccm_ready = ~((dec_lsu_valid_raw_d | ldst_nodma_mtor) | ld_single_ecc_error_r_ff);
-	assign dma_dccm_wen = ((dma_dccm_req & dma_mem_write) & addr_in_dccm_d) & dma_mem_sz[1];
-	assign dma_pic_wen = (dma_dccm_req & dma_mem_write) & addr_in_pic_d;
-	assign {dma_dccm_wdata_hi[31:0], dma_dccm_wdata_lo[31:0]} = dma_mem_wdata[63:0] >> {dma_mem_addr[2:0], 3'b000};
-	assign flush_m_up = dec_tlu_flush_lower_r;
-	assign flush_r = dec_tlu_i0_kill_writeb_r;
-	assign lsu_idle_any = ~((lsu_pkt_m[0] & ~lsu_pkt_m[4]) | (lsu_pkt_r[0] & ~lsu_pkt_r[4])) & lsu_bus_buffer_empty_any;
-	assign lsu_active = ((lsu_pkt_m[0] | lsu_pkt_r[0]) | ld_single_ecc_error_r_ff) | ~lsu_bus_buffer_empty_any;
-	assign store_stbuf_reqvld_r = (((lsu_pkt_r[0] & lsu_pkt_r[6]) & addr_in_dccm_r) & ~flush_r) & (~lsu_pkt_r[4] | ((lsu_pkt_r[11] | lsu_pkt_r[10]) & ~lsu_double_ecc_error_r));
-	assign lsu_cmpen_m = (lsu_pkt_m[0] & (lsu_pkt_m[7] | lsu_pkt_m[6])) & (addr_in_dccm_m | addr_in_pic_m);
-	assign lsu_busreq_m = (((lsu_pkt_m[0] & ((lsu_pkt_m[7] | lsu_pkt_m[6]) & addr_external_m)) & ~flush_m_up) & ~lsu_exc_m) & ~lsu_pkt_m[13];
-	assign ldst_dual_d = lsu_addr_d[2] != end_addr_d[2];
-	assign ldst_dual_m = lsu_addr_m[2] != end_addr_m[2];
-	assign ldst_dual_r = lsu_addr_r[2] != end_addr_r[2];
-	assign lsu_pmu_misaligned_m = lsu_pkt_m[0] & ((lsu_pkt_m[10] & lsu_addr_m[0]) | (lsu_pkt_m[9] & |lsu_addr_m[1:0]));
-	assign lsu_pmu_load_external_m = (lsu_pkt_m[0] & lsu_pkt_m[7]) & addr_external_m;
-	assign lsu_pmu_store_external_m = (lsu_pkt_m[0] & lsu_pkt_m[6]) & addr_external_m;
-	eb1_lsu_dccm_ctl #(.pt(pt)) dccm_ctl(
-		.lsu_addr_d(lsu_addr_d[31:0]),
-		.end_addr_d(end_addr_d[pt[1398-:9] - 1:0]),
-		.lsu_addr_m(lsu_addr_m[pt[1398-:9] - 1:0]),
-		.lsu_addr_r(lsu_addr_r[31:0]),
-		.end_addr_m(end_addr_m[pt[1398-:9] - 1:0]),
-		.end_addr_r(end_addr_r[pt[1398-:9] - 1:0]),
-		.lsu_c2_m_clk(lsu_c2_m_clk),
-		.lsu_c2_r_clk(lsu_c2_r_clk),
-		.lsu_c1_r_clk(lsu_c1_r_clk),
-		.lsu_store_c1_r_clk(lsu_store_c1_r_clk),
-		.lsu_free_c2_clk(lsu_free_c2_clk),
-		.clk_override(clk_override),
-		.clk(clk),
-		.rst_l(rst_l),
-		.lsu_pkt_r(lsu_pkt_r),
-		.lsu_pkt_m(lsu_pkt_m),
-		.lsu_pkt_d(lsu_pkt_d),
-		.addr_in_dccm_d(addr_in_dccm_d),
-		.addr_in_pic_d(addr_in_pic_d),
-		.addr_in_pic_m(addr_in_pic_m),
-		.addr_in_dccm_m(addr_in_dccm_m),
-		.addr_in_dccm_r(addr_in_dccm_r),
-		.addr_in_pic_r(addr_in_pic_r),
-		.lsu_raw_fwd_lo_r(lsu_raw_fwd_lo_r),
-		.lsu_raw_fwd_hi_r(lsu_raw_fwd_hi_r),
-		.lsu_commit_r(lsu_commit_r),
-		.ldst_dual_m(ldst_dual_m),
-		.ldst_dual_r(ldst_dual_r),
-		.stbuf_reqvld_any(stbuf_reqvld_any),
-		.stbuf_addr_any(stbuf_addr_any),
-		.stbuf_data_any(stbuf_data_any),
-		.stbuf_ecc_any(stbuf_ecc_any),
-		.stbuf_fwddata_hi_m(stbuf_fwddata_hi_m),
-		.stbuf_fwddata_lo_m(stbuf_fwddata_lo_m),
-		.stbuf_fwdbyteen_hi_m(stbuf_fwdbyteen_hi_m),
-		.stbuf_fwdbyteen_lo_m(stbuf_fwdbyteen_lo_m),
-		.dccm_rdata_hi_r(dccm_rdata_hi_r),
-		.dccm_rdata_lo_r(dccm_rdata_lo_r),
-		.dccm_data_ecc_hi_r(dccm_data_ecc_hi_r),
-		.dccm_data_ecc_lo_r(dccm_data_ecc_lo_r),
-		.lsu_ld_data_r(lsu_ld_data_r),
-		.lsu_ld_data_corr_r(lsu_ld_data_corr_r),
-		.lsu_double_ecc_error_r(lsu_double_ecc_error_r),
-		.single_ecc_error_hi_r(single_ecc_error_hi_r),
-		.single_ecc_error_lo_r(single_ecc_error_lo_r),
-		.sec_data_hi_r(sec_data_hi_r),
-		.sec_data_lo_r(sec_data_lo_r),
-		.sec_data_hi_r_ff(sec_data_hi_r_ff),
-		.sec_data_lo_r_ff(sec_data_lo_r_ff),
-		.sec_data_ecc_hi_r_ff(sec_data_ecc_hi_r_ff),
-		.sec_data_ecc_lo_r_ff(sec_data_ecc_lo_r_ff),
-		.dccm_rdata_hi_m(dccm_rdata_hi_m),
-		.dccm_rdata_lo_m(dccm_rdata_lo_m),
-		.dccm_data_ecc_hi_m(dccm_data_ecc_hi_m),
-		.dccm_data_ecc_lo_m(dccm_data_ecc_lo_m),
-		.lsu_ld_data_m(lsu_ld_data_m),
-		.lsu_double_ecc_error_m(lsu_double_ecc_error_m),
-		.sec_data_hi_m(sec_data_hi_m),
-		.sec_data_lo_m(sec_data_lo_m),
-		.store_data_m(store_data_m),
-		.dma_dccm_wen(dma_dccm_wen),
-		.dma_pic_wen(dma_pic_wen),
-		.dma_mem_tag_m(dma_mem_tag_m),
-		.dma_mem_addr(dma_mem_addr),
-		.dma_mem_wdata(dma_mem_wdata),
-		.dma_dccm_wdata_lo(dma_dccm_wdata_lo),
-		.dma_dccm_wdata_hi(dma_dccm_wdata_hi),
-		.dma_dccm_wdata_ecc_hi(dma_dccm_wdata_ecc_hi),
-		.dma_dccm_wdata_ecc_lo(dma_dccm_wdata_ecc_lo),
-		.store_data_hi_r(store_data_hi_r),
-		.store_data_lo_r(store_data_lo_r),
-		.store_datafn_hi_r(store_datafn_hi_r),
-		.store_datafn_lo_r(store_datafn_lo_r),
-		.store_data_r(store_data_r),
-		.ld_single_ecc_error_r(ld_single_ecc_error_r),
-		.ld_single_ecc_error_r_ff(ld_single_ecc_error_r_ff),
-		.picm_mask_data_m(picm_mask_data_m),
-		.lsu_stbuf_commit_any(lsu_stbuf_commit_any),
-		.lsu_dccm_rden_m(lsu_dccm_rden_m),
-		.lsu_dccm_rden_r(lsu_dccm_rden_r),
-		.dccm_dma_rvalid(dccm_dma_rvalid),
-		.dccm_dma_ecc_error(dccm_dma_ecc_error),
-		.dccm_dma_rtag(dccm_dma_rtag),
-		.dccm_dma_rdata(dccm_dma_rdata),
-		.dccm_wren(dccm_wren),
-		.dccm_rden(dccm_rden),
-		.dccm_wr_addr_lo(dccm_wr_addr_lo),
-		.dccm_wr_addr_hi(dccm_wr_addr_hi),
-		.dccm_rd_addr_lo(dccm_rd_addr_lo),
-		.dccm_rd_addr_hi(dccm_rd_addr_hi),
-		.dccm_wr_data_lo(dccm_wr_data_lo),
-		.dccm_wr_data_hi(dccm_wr_data_hi),
-		.dccm_rd_data_lo(dccm_rd_data_lo),
-		.dccm_rd_data_hi(dccm_rd_data_hi),
-		.picm_wren(picm_wren),
-		.picm_rden(picm_rden),
-		.picm_mken(picm_mken),
-		.picm_rdaddr(picm_rdaddr),
-		.picm_wraddr(picm_wraddr),
-		.picm_wr_data(picm_wr_data),
-		.picm_rd_data(picm_rd_data),
-		.scan_mode(scan_mode)
-	);
-	eb1_lsu_stbuf #(.pt(pt)) stbuf(
-		.lsu_addr_d(lsu_addr_d[pt[157-:9] - 1:0]),
-		.end_addr_d(end_addr_d[pt[157-:9] - 1:0]),
-		.clk(clk),
-		.rst_l(rst_l),
-		.lsu_stbuf_c1_clk(lsu_stbuf_c1_clk),
-		.lsu_free_c2_clk(lsu_free_c2_clk),
-		.store_stbuf_reqvld_r(store_stbuf_reqvld_r),
-		.lsu_commit_r(lsu_commit_r),
-		.dec_lsu_valid_raw_d(dec_lsu_valid_raw_d),
-		.store_data_hi_r(store_data_hi_r),
-		.store_data_lo_r(store_data_lo_r),
-		.store_datafn_hi_r(store_datafn_hi_r),
-		.store_datafn_lo_r(store_datafn_lo_r),
-		.stbuf_reqvld_any(stbuf_reqvld_any),
-		.stbuf_reqvld_flushed_any(stbuf_reqvld_flushed_any),
-		.stbuf_addr_any(stbuf_addr_any),
-		.stbuf_data_any(stbuf_data_any),
-		.lsu_stbuf_commit_any(lsu_stbuf_commit_any),
-		.lsu_stbuf_full_any(lsu_stbuf_full_any),
-		.lsu_stbuf_empty_any(lsu_stbuf_empty_any),
-		.ldst_stbuf_reqvld_r(ldst_stbuf_reqvld_r),
-		.lsu_addr_m(lsu_addr_m),
-		.lsu_addr_r(lsu_addr_r),
-		.end_addr_m(end_addr_m),
-		.end_addr_r(end_addr_r),
-		.ldst_dual_d(ldst_dual_d),
-		.ldst_dual_m(ldst_dual_m),
-		.ldst_dual_r(ldst_dual_r),
-		.addr_in_dccm_m(addr_in_dccm_m),
-		.addr_in_dccm_r(addr_in_dccm_r),
-		.lsu_cmpen_m(lsu_cmpen_m),
-		.lsu_pkt_m(lsu_pkt_m),
-		.lsu_pkt_r(lsu_pkt_r),
-		.stbuf_fwddata_hi_m(stbuf_fwddata_hi_m),
-		.stbuf_fwddata_lo_m(stbuf_fwddata_lo_m),
-		.stbuf_fwdbyteen_hi_m(stbuf_fwdbyteen_hi_m),
-		.stbuf_fwdbyteen_lo_m(stbuf_fwdbyteen_lo_m),
-		.scan_mode(scan_mode)
-	);
-	eb1_lsu_ecc #(.pt(pt)) ecc(
-		.lsu_addr_r(lsu_addr_r[pt[1398-:9] - 1:0]),
-		.end_addr_r(end_addr_r[pt[1398-:9] - 1:0]),
-		.lsu_addr_m(lsu_addr_m[pt[1398-:9] - 1:0]),
-		.end_addr_m(end_addr_m[pt[1398-:9] - 1:0]),
-		.clk(clk),
-		.lsu_c2_r_clk(lsu_c2_r_clk),
-		.clk_override(clk_override),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.lsu_pkt_m(lsu_pkt_m),
-		.lsu_pkt_r(lsu_pkt_r),
-		.stbuf_data_any(stbuf_data_any),
-		.dec_tlu_core_ecc_disable(dec_tlu_core_ecc_disable),
-		.lsu_dccm_rden_r(lsu_dccm_rden_r),
-		.addr_in_dccm_r(addr_in_dccm_r),
-		.dccm_rdata_hi_r(dccm_rdata_hi_r),
-		.dccm_rdata_lo_r(dccm_rdata_lo_r),
-		.dccm_data_ecc_hi_r(dccm_data_ecc_hi_r),
-		.dccm_data_ecc_lo_r(dccm_data_ecc_lo_r),
-		.sec_data_hi_r(sec_data_hi_r),
-		.sec_data_lo_r(sec_data_lo_r),
-		.sec_data_hi_r_ff(sec_data_hi_r_ff),
-		.sec_data_lo_r_ff(sec_data_lo_r_ff),
-		.ld_single_ecc_error_r(ld_single_ecc_error_r),
-		.ld_single_ecc_error_r_ff(ld_single_ecc_error_r_ff),
-		.lsu_dccm_rden_m(lsu_dccm_rden_m),
-		.addr_in_dccm_m(addr_in_dccm_m),
-		.dccm_rdata_hi_m(dccm_rdata_hi_m),
-		.dccm_rdata_lo_m(dccm_rdata_lo_m),
-		.dccm_data_ecc_hi_m(dccm_data_ecc_hi_m),
-		.dccm_data_ecc_lo_m(dccm_data_ecc_lo_m),
-		.sec_data_hi_m(sec_data_hi_m),
-		.sec_data_lo_m(sec_data_lo_m),
-		.dma_dccm_wen(dma_dccm_wen),
-		.dma_dccm_wdata_lo(dma_dccm_wdata_lo),
-		.dma_dccm_wdata_hi(dma_dccm_wdata_hi),
-		.dma_dccm_wdata_ecc_hi(dma_dccm_wdata_ecc_hi),
-		.dma_dccm_wdata_ecc_lo(dma_dccm_wdata_ecc_lo),
-		.stbuf_ecc_any(stbuf_ecc_any),
-		.sec_data_ecc_hi_r_ff(sec_data_ecc_hi_r_ff),
-		.sec_data_ecc_lo_r_ff(sec_data_ecc_lo_r_ff),
-		.single_ecc_error_hi_r(single_ecc_error_hi_r),
-		.single_ecc_error_lo_r(single_ecc_error_lo_r),
-		.lsu_single_ecc_error_r(lsu_single_ecc_error_r),
-		.lsu_double_ecc_error_r(lsu_double_ecc_error_r),
-		.lsu_single_ecc_error_m(lsu_single_ecc_error_m),
-		.lsu_double_ecc_error_m(lsu_double_ecc_error_m)
-	);
-	eb1_lsu_trigger #(.pt(pt)) trigger(
-		.store_data_m(store_data_m[31:0]),
-		.trigger_pkt_any(trigger_pkt_any),
-		.lsu_pkt_m(lsu_pkt_m),
-		.lsu_addr_m(lsu_addr_m),
-		.lsu_trigger_match_m(lsu_trigger_match_m)
-	);
-	eb1_lsu_clkdomain #(.pt(pt)) clkdomain(
-		.clk(clk),
-		.active_clk(active_clk),
-		.rst_l(rst_l),
-		.dec_tlu_force_halt(dec_tlu_force_halt),
-		.clk_override(clk_override),
-		.dma_dccm_req(dma_dccm_req),
-		.ldst_stbuf_reqvld_r(ldst_stbuf_reqvld_r),
-		.stbuf_reqvld_any(stbuf_reqvld_any),
-		.stbuf_reqvld_flushed_any(stbuf_reqvld_flushed_any),
-		.lsu_busreq_r(lsu_busreq_r),
-		.lsu_bus_buffer_pend_any(lsu_bus_buffer_pend_any),
-		.lsu_bus_buffer_empty_any(lsu_bus_buffer_empty_any),
-		.lsu_stbuf_empty_any(lsu_stbuf_empty_any),
-		.lsu_bus_clk_en(lsu_bus_clk_en),
-		.lsu_p(lsu_p),
-		.lsu_pkt_d(lsu_pkt_d),
-		.lsu_pkt_m(lsu_pkt_m),
-		.lsu_pkt_r(lsu_pkt_r),
-		.lsu_bus_obuf_c1_clken(lsu_bus_obuf_c1_clken),
-		.lsu_busm_clken(lsu_busm_clken),
-		.lsu_c1_m_clk(lsu_c1_m_clk),
-		.lsu_c1_r_clk(lsu_c1_r_clk),
-		.lsu_c2_m_clk(lsu_c2_m_clk),
-		.lsu_c2_r_clk(lsu_c2_r_clk),
-		.lsu_store_c1_m_clk(lsu_store_c1_m_clk),
-		.lsu_store_c1_r_clk(lsu_store_c1_r_clk),
-		.lsu_stbuf_c1_clk(lsu_stbuf_c1_clk),
-		.lsu_bus_obuf_c1_clk(lsu_bus_obuf_c1_clk),
-		.lsu_bus_ibuf_c1_clk(lsu_bus_ibuf_c1_clk),
-		.lsu_bus_buf_c1_clk(lsu_bus_buf_c1_clk),
-		.lsu_busm_clk(lsu_busm_clk),
-		.lsu_free_c2_clk(lsu_free_c2_clk),
-		.scan_mode(scan_mode)
-	);
-	eb1_lsu_bus_intf #(.pt(pt)) bus_intf(
-		.lsu_addr_m(lsu_addr_m[31:0] & {32 {addr_external_m & lsu_pkt_m[0]}}),
-		.lsu_addr_r(lsu_addr_r[31:0] & {32 {lsu_busreq_r}}),
-		.end_addr_m(end_addr_m[31:0] & {32 {addr_external_m & lsu_pkt_m[0]}}),
-		.end_addr_r(end_addr_r[31:0] & {32 {lsu_busreq_r}}),
-		.store_data_r(store_data_r[31:0] & {32 {lsu_busreq_r}}),
-		.clk(clk),
-		.clk_override(clk_override),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.dec_tlu_external_ldfwd_disable(dec_tlu_external_ldfwd_disable),
-		.dec_tlu_wb_coalescing_disable(dec_tlu_wb_coalescing_disable),
-		.dec_tlu_sideeffect_posted_disable(dec_tlu_sideeffect_posted_disable),
-		.lsu_bus_obuf_c1_clken(lsu_bus_obuf_c1_clken),
-		.lsu_busm_clken(lsu_busm_clken),
-		.lsu_c1_r_clk(lsu_c1_r_clk),
-		.lsu_c2_r_clk(lsu_c2_r_clk),
-		.lsu_bus_ibuf_c1_clk(lsu_bus_ibuf_c1_clk),
-		.lsu_bus_obuf_c1_clk(lsu_bus_obuf_c1_clk),
-		.lsu_bus_buf_c1_clk(lsu_bus_buf_c1_clk),
-		.lsu_free_c2_clk(lsu_free_c2_clk),
-		.active_clk(active_clk),
-		.lsu_busm_clk(lsu_busm_clk),
-		.dec_lsu_valid_raw_d(dec_lsu_valid_raw_d),
-		.lsu_busreq_m(lsu_busreq_m),
-		.lsu_pkt_m(lsu_pkt_m),
-		.lsu_pkt_r(lsu_pkt_r),
-		.dec_tlu_force_halt(dec_tlu_force_halt),
-		.lsu_commit_r(lsu_commit_r),
-		.is_sideeffects_m(is_sideeffects_m),
-		.flush_m_up(flush_m_up),
-		.flush_r(flush_r),
-		.ldst_dual_d(ldst_dual_d),
-		.ldst_dual_m(ldst_dual_m),
-		.ldst_dual_r(ldst_dual_r),
-		.lsu_busreq_r(lsu_busreq_r),
-		.lsu_bus_buffer_pend_any(lsu_bus_buffer_pend_any),
-		.lsu_bus_buffer_full_any(lsu_bus_buffer_full_any),
-		.lsu_bus_buffer_empty_any(lsu_bus_buffer_empty_any),
-		.bus_read_data_m(bus_read_data_m),
-		.lsu_imprecise_error_load_any(lsu_imprecise_error_load_any),
-		.lsu_imprecise_error_store_any(lsu_imprecise_error_store_any),
-		.lsu_imprecise_error_addr_any(lsu_imprecise_error_addr_any),
-		.lsu_nonblock_load_valid_m(lsu_nonblock_load_valid_m),
-		.lsu_nonblock_load_tag_m(lsu_nonblock_load_tag_m),
-		.lsu_nonblock_load_inv_r(lsu_nonblock_load_inv_r),
-		.lsu_nonblock_load_inv_tag_r(lsu_nonblock_load_inv_tag_r),
-		.lsu_nonblock_load_data_valid(lsu_nonblock_load_data_valid),
-		.lsu_nonblock_load_data_error(lsu_nonblock_load_data_error),
-		.lsu_nonblock_load_data_tag(lsu_nonblock_load_data_tag),
-		.lsu_nonblock_load_data(lsu_nonblock_load_data),
-		.lsu_pmu_bus_trxn(lsu_pmu_bus_trxn),
-		.lsu_pmu_bus_misaligned(lsu_pmu_bus_misaligned),
-		.lsu_pmu_bus_error(lsu_pmu_bus_error),
-		.lsu_pmu_bus_busy(lsu_pmu_bus_busy),
-		.lsu_axi_awvalid(lsu_axi_awvalid),
-		.lsu_axi_awready(lsu_axi_awready),
-		.lsu_axi_awid(lsu_axi_awid),
-		.lsu_axi_awaddr(lsu_axi_awaddr),
-		.lsu_axi_awregion(lsu_axi_awregion),
-		.lsu_axi_awlen(lsu_axi_awlen),
-		.lsu_axi_awsize(lsu_axi_awsize),
-		.lsu_axi_awburst(lsu_axi_awburst),
-		.lsu_axi_awlock(lsu_axi_awlock),
-		.lsu_axi_awcache(lsu_axi_awcache),
-		.lsu_axi_awprot(lsu_axi_awprot),
-		.lsu_axi_awqos(lsu_axi_awqos),
-		.lsu_axi_wvalid(lsu_axi_wvalid),
-		.lsu_axi_wready(lsu_axi_wready),
-		.lsu_axi_wdata(lsu_axi_wdata),
-		.lsu_axi_wstrb(lsu_axi_wstrb),
-		.lsu_axi_wlast(lsu_axi_wlast),
-		.lsu_axi_bvalid(lsu_axi_bvalid),
-		.lsu_axi_bready(lsu_axi_bready),
-		.lsu_axi_bresp(lsu_axi_bresp),
-		.lsu_axi_bid(lsu_axi_bid),
-		.lsu_axi_arvalid(lsu_axi_arvalid),
-		.lsu_axi_arready(lsu_axi_arready),
-		.lsu_axi_arid(lsu_axi_arid),
-		.lsu_axi_araddr(lsu_axi_araddr),
-		.lsu_axi_arregion(lsu_axi_arregion),
-		.lsu_axi_arlen(lsu_axi_arlen),
-		.lsu_axi_arsize(lsu_axi_arsize),
-		.lsu_axi_arburst(lsu_axi_arburst),
-		.lsu_axi_arlock(lsu_axi_arlock),
-		.lsu_axi_arcache(lsu_axi_arcache),
-		.lsu_axi_arprot(lsu_axi_arprot),
-		.lsu_axi_arqos(lsu_axi_arqos),
-		.lsu_axi_rvalid(lsu_axi_rvalid),
-		.lsu_axi_rready(lsu_axi_rready),
-		.lsu_axi_rid(lsu_axi_rid),
-		.lsu_axi_rdata(lsu_axi_rdata),
-		.lsu_axi_rresp(lsu_axi_rresp),
-		.lsu_bus_clk_en(lsu_bus_clk_en)
-	);
-	rvdff #(.WIDTH(3)) dma_mem_tag_mff(
-		.rst_l(rst_l),
-		.din(dma_mem_tag_d[2:0]),
-		.dout(dma_mem_tag_m[2:0]),
-		.clk(lsu_c1_m_clk)
-	);
-	rvdff #(.WIDTH(2)) lsu_raw_fwd_r_ff(
-		.rst_l(rst_l),
-		.din({lsu_raw_fwd_hi_m, lsu_raw_fwd_lo_m}),
-		.dout({lsu_raw_fwd_hi_r, lsu_raw_fwd_lo_r}),
-		.clk(lsu_c2_r_clk)
-	);
-endmodule
-module eb1_lsu_addrcheck (
-	lsu_c2_m_clk,
-	rst_l,
-	start_addr_d,
-	end_addr_d,
-	lsu_pkt_d,
-	dec_tlu_mrac_ff,
-	rs1_region_d,
-	rs1_d,
-	is_sideeffects_m,
-	addr_in_dccm_d,
-	addr_in_pic_d,
-	addr_external_d,
-	access_fault_d,
-	misaligned_fault_d,
-	exc_mscause_d,
-	fir_dccm_access_error_d,
-	fir_nondccm_access_error_d,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire lsu_c2_m_clk;
-	input wire rst_l;
-	input wire [31:0] start_addr_d;
-	input wire [31:0] end_addr_d;
-	input wire [13:0] lsu_pkt_d;
-	input wire [31:0] dec_tlu_mrac_ff;
-	input wire [3:0] rs1_region_d;
-	input wire [31:0] rs1_d;
-	output wire is_sideeffects_m;
-	output wire addr_in_dccm_d;
-	output wire addr_in_pic_d;
-	output wire addr_external_d;
-	output wire access_fault_d;
-	output wire misaligned_fault_d;
-	output wire [3:0] exc_mscause_d;
-	output wire fir_dccm_access_error_d;
-	output wire fir_nondccm_access_error_d;
-	input wire scan_mode;
-	wire non_dccm_access_ok;
-	wire is_sideeffects_d;
-	wire is_aligned_d;
-	wire start_addr_in_dccm_d;
-	wire end_addr_in_dccm_d;
-	wire start_addr_in_dccm_region_d;
-	wire end_addr_in_dccm_region_d;
-	wire start_addr_in_pic_d;
-	wire end_addr_in_pic_d;
-	wire start_addr_in_pic_region_d;
-	wire end_addr_in_pic_region_d;
-	wire [4:0] csr_idx;
-	wire addr_in_iccm;
-	wire start_addr_dccm_or_pic;
-	wire base_reg_dccm_or_pic;
-	wire unmapped_access_fault_d;
-	wire mpu_access_fault_d;
-	wire picm_access_fault_d;
-	wire regpred_access_fault_d;
-	wire regcross_misaligned_fault_d;
-	wire sideeffect_misaligned_fault_d;
-	wire [3:0] access_fault_mscause_d;
-	wire [3:0] misaligned_fault_mscause_d;
-	generate
-		if (pt[1365-:5] == 1) begin : Gen_dccm_enable
-			rvrangecheck #(
-				.CCM_SADR(pt[1325-:36]),
-				.CCM_SIZE(pt[1289-:14])
-			) start_addr_dccm_rangecheck(
-				.addr(start_addr_d[31:0]),
-				.in_range(start_addr_in_dccm_d),
-				.in_region(start_addr_in_dccm_region_d)
-			);
-			rvrangecheck #(
-				.CCM_SADR(pt[1325-:36]),
-				.CCM_SIZE(pt[1289-:14])
-			) end_addr_dccm_rangecheck(
-				.addr(end_addr_d[31:0]),
-				.in_range(end_addr_in_dccm_d),
-				.in_region(end_addr_in_dccm_region_d)
-			);
-		end
-		else begin : Gen_dccm_disable
-			assign start_addr_in_dccm_d = 1'b0;
-			assign start_addr_in_dccm_region_d = 1'b0;
-			assign end_addr_in_dccm_d = 1'b0;
-			assign end_addr_in_dccm_region_d = 1'b0;
-		end
-	endgenerate
-	generate
-		if (pt[927-:5] == 1) begin : check_iccm
-			assign addr_in_iccm = start_addr_d[31:28] == pt[895-:8];
-		end
-		else assign addr_in_iccm = 1'b0;
-	endgenerate
-	rvrangecheck #(
-		.CCM_SADR(pt[130-:36]),
-		.CCM_SIZE(pt[69-:13])
-	) start_addr_pic_rangecheck(
-		.addr(start_addr_d[31:0]),
-		.in_range(start_addr_in_pic_d),
-		.in_region(start_addr_in_pic_region_d)
-	);
-	rvrangecheck #(
-		.CCM_SADR(pt[130-:36]),
-		.CCM_SIZE(pt[69-:13])
-	) end_addr_pic_rangecheck(
-		.addr(end_addr_d[31:0]),
-		.in_range(end_addr_in_pic_d),
-		.in_region(end_addr_in_pic_region_d)
-	);
-	assign start_addr_dccm_or_pic = start_addr_in_dccm_region_d | start_addr_in_pic_region_d;
-	assign base_reg_dccm_or_pic = ((rs1_region_d[3:0] == pt[1333-:8]) & pt[1365-:5]) | (rs1_region_d[3:0] == pt[77-:8]);
-	assign addr_in_dccm_d = start_addr_in_dccm_d & end_addr_in_dccm_d;
-	assign addr_in_pic_d = start_addr_in_pic_d & end_addr_in_pic_d;
-	assign addr_external_d = ~(start_addr_in_dccm_region_d | start_addr_in_pic_region_d);
-	assign csr_idx[4:0] = {start_addr_d[31:28], 1'b1};
-	assign is_sideeffects_d = ((dec_tlu_mrac_ff[csr_idx] & ~((start_addr_in_dccm_region_d | start_addr_in_pic_region_d) | addr_in_iccm)) & lsu_pkt_d[0]) & (lsu_pkt_d[6] | lsu_pkt_d[7]);
-	assign is_aligned_d = ((lsu_pkt_d[9] & (start_addr_d[1:0] == 2'b00)) | (lsu_pkt_d[10] & (start_addr_d[0] == 1'b0))) | lsu_pkt_d[11];
-	assign non_dccm_access_ok = ~(|{pt[1733-:5], pt[1728-:5], pt[1723-:5], pt[1718-:5], pt[1713-:5], pt[1708-:5], pt[1703-:5], pt[1698-:5]}) | (((((((((pt[1733-:5] & ((start_addr_d[31:0] | pt[1693-:36]) == (pt[2021-:36] | pt[1693-:36]))) | (pt[1728-:5] & ((start_addr_d[31:0] | pt[1657-:36]) == (pt[1985-:36] | pt[1657-:36])))) | (pt[1723-:5] & ((start_addr_d[31:0] | pt[1621-:36]) == (pt[1949-:36] | pt[1621-:36])))) | (pt[1718-:5] & ((start_addr_d[31:0] | pt[1585-:36]) == (pt[1913-:36] | pt[1585-:36])))) | (pt[1713-:5] & ((start_addr_d[31:0] | pt[1549-:36]) == (pt[1877-:36] | pt[1549-:36])))) | (pt[1708-:5] & ((start_addr_d[31:0] | pt[1513-:36]) == (pt[1841-:36] | pt[1513-:36])))) | (pt[1703-:5] & ((start_addr_d[31:0] | pt[1477-:36]) == (pt[1805-:36] | pt[1477-:36])))) | (pt[1698-:5] & ((start_addr_d[31:0] | pt[1441-:36]) == (pt[1769-:36] | pt[1441-:36])))) & ((((((((pt[1733-:5] & ((end_addr_d[31:0] | pt[1693-:36]) == (pt[2021-:36] | pt[1693-:36]))) | (pt[1728-:5] & ((end_addr_d[31:0] | pt[1657-:36]) == (pt[1985-:36] | pt[1657-:36])))) | (pt[1723-:5] & ((end_addr_d[31:0] | pt[1621-:36]) == (pt[1949-:36] | pt[1621-:36])))) | (pt[1718-:5] & ((end_addr_d[31:0] | pt[1585-:36]) == (pt[1913-:36] | pt[1585-:36])))) | (pt[1713-:5] & ((end_addr_d[31:0] | pt[1549-:36]) == (pt[1877-:36] | pt[1549-:36])))) | (pt[1708-:5] & ((end_addr_d[31:0] | pt[1513-:36]) == (pt[1841-:36] | pt[1513-:36])))) | (pt[1703-:5] & ((end_addr_d[31:0] | pt[1477-:36]) == (pt[1805-:36] | pt[1477-:36])))) | (pt[1698-:5] & ((end_addr_d[31:0] | pt[1441-:36]) == (pt[1769-:36] | pt[1441-:36])))));
-	assign regpred_access_fault_d = start_addr_dccm_or_pic ^ base_reg_dccm_or_pic;
-	assign picm_access_fault_d = addr_in_pic_d & ((start_addr_d[1:0] != 2'b00) | ~lsu_pkt_d[9]);
-	generate
-		if (pt[1365-:5] & (pt[1333-:8] == pt[77-:8])) begin
-			assign unmapped_access_fault_d = (((start_addr_in_dccm_region_d & ~(start_addr_in_dccm_d | start_addr_in_pic_d)) | (end_addr_in_dccm_region_d & ~(end_addr_in_dccm_d | end_addr_in_pic_d))) | (start_addr_in_dccm_d & end_addr_in_pic_d)) | (start_addr_in_pic_d & end_addr_in_dccm_d);
-			assign mpu_access_fault_d = ~start_addr_in_dccm_region_d & ~non_dccm_access_ok;
-		end
-		else begin
-			assign unmapped_access_fault_d = (((start_addr_in_dccm_region_d & ~start_addr_in_dccm_d) | (end_addr_in_dccm_region_d & ~end_addr_in_dccm_d)) | (start_addr_in_pic_region_d & ~start_addr_in_pic_d)) | (end_addr_in_pic_region_d & ~end_addr_in_pic_d);
-			assign mpu_access_fault_d = (~start_addr_in_pic_region_d & ~start_addr_in_dccm_region_d) & ~non_dccm_access_ok;
-		end
-	endgenerate
-	assign access_fault_d = ((((unmapped_access_fault_d | mpu_access_fault_d) | picm_access_fault_d) | regpred_access_fault_d) & lsu_pkt_d[0]) & ~lsu_pkt_d[4];
-	assign access_fault_mscause_d[3:0] = (unmapped_access_fault_d ? 4'h2 : (mpu_access_fault_d ? 4'h3 : (regpred_access_fault_d ? 4'h5 : (picm_access_fault_d ? 4'h6 : 4'h0))));
-	assign regcross_misaligned_fault_d = start_addr_d[31:28] != end_addr_d[31:28];
-	assign sideeffect_misaligned_fault_d = is_sideeffects_d & ~is_aligned_d;
-	assign misaligned_fault_d = ((regcross_misaligned_fault_d | (sideeffect_misaligned_fault_d & addr_external_d)) & lsu_pkt_d[0]) & ~lsu_pkt_d[4];
-	assign misaligned_fault_mscause_d[3:0] = (regcross_misaligned_fault_d ? 4'h2 : (sideeffect_misaligned_fault_d ? 4'h1 : 4'h0));
-	assign exc_mscause_d[3:0] = (misaligned_fault_d ? misaligned_fault_mscause_d[3:0] : access_fault_mscause_d[3:0]);
-	assign fir_dccm_access_error_d = (((start_addr_in_dccm_region_d & ~start_addr_in_dccm_d) | (end_addr_in_dccm_region_d & ~end_addr_in_dccm_d)) & lsu_pkt_d[0]) & lsu_pkt_d[13];
-	assign fir_nondccm_access_error_d = (~(start_addr_in_dccm_region_d & end_addr_in_dccm_region_d) & lsu_pkt_d[0]) & lsu_pkt_d[13];
-	rvdff #(.WIDTH(1)) is_sideeffects_mff(
-		.din(is_sideeffects_d),
-		.dout(is_sideeffects_m),
-		.clk(lsu_c2_m_clk),
-		.rst_l(rst_l)
-	);
-endmodule
-module eb1_lsu_bus_buffer (
-	clk,
-	clk_override,
-	rst_l,
-	scan_mode,
-	dec_tlu_external_ldfwd_disable,
-	dec_tlu_wb_coalescing_disable,
-	dec_tlu_sideeffect_posted_disable,
-	dec_tlu_force_halt,
-	lsu_bus_obuf_c1_clken,
-	lsu_busm_clken,
-	lsu_c2_r_clk,
-	lsu_bus_ibuf_c1_clk,
-	lsu_bus_obuf_c1_clk,
-	lsu_bus_buf_c1_clk,
-	lsu_free_c2_clk,
-	lsu_busm_clk,
-	dec_lsu_valid_raw_d,
-	lsu_pkt_m,
-	lsu_pkt_r,
-	lsu_addr_m,
-	end_addr_m,
-	lsu_addr_r,
-	end_addr_r,
-	store_data_r,
-	no_word_merge_r,
-	no_dword_merge_r,
-	lsu_busreq_m,
-	lsu_busreq_r,
-	ld_full_hit_m,
-	flush_m_up,
-	flush_r,
-	lsu_commit_r,
-	is_sideeffects_r,
-	ldst_dual_d,
-	ldst_dual_m,
-	ldst_dual_r,
-	ldst_byteen_ext_m,
-	lsu_bus_buffer_pend_any,
-	lsu_bus_buffer_full_any,
-	lsu_bus_buffer_empty_any,
-	ld_byte_hit_buf_lo,
-	ld_byte_hit_buf_hi,
-	ld_fwddata_buf_lo,
-	ld_fwddata_buf_hi,
-	lsu_imprecise_error_load_any,
-	lsu_imprecise_error_store_any,
-	lsu_imprecise_error_addr_any,
-	lsu_nonblock_load_valid_m,
-	lsu_nonblock_load_tag_m,
-	lsu_nonblock_load_inv_r,
-	lsu_nonblock_load_inv_tag_r,
-	lsu_nonblock_load_data_valid,
-	lsu_nonblock_load_data_error,
-	lsu_nonblock_load_data_tag,
-	lsu_nonblock_load_data,
-	lsu_pmu_bus_trxn,
-	lsu_pmu_bus_misaligned,
-	lsu_pmu_bus_error,
-	lsu_pmu_bus_busy,
-	lsu_axi_awvalid,
-	lsu_axi_awready,
-	lsu_axi_awid,
-	lsu_axi_awaddr,
-	lsu_axi_awregion,
-	lsu_axi_awlen,
-	lsu_axi_awsize,
-	lsu_axi_awburst,
-	lsu_axi_awlock,
-	lsu_axi_awcache,
-	lsu_axi_awprot,
-	lsu_axi_awqos,
-	lsu_axi_wvalid,
-	lsu_axi_wready,
-	lsu_axi_wdata,
-	lsu_axi_wstrb,
-	lsu_axi_wlast,
-	lsu_axi_bvalid,
-	lsu_axi_bready,
-	lsu_axi_bresp,
-	lsu_axi_bid,
-	lsu_axi_arvalid,
-	lsu_axi_arready,
-	lsu_axi_arid,
-	lsu_axi_araddr,
-	lsu_axi_arregion,
-	lsu_axi_arlen,
-	lsu_axi_arsize,
-	lsu_axi_arburst,
-	lsu_axi_arlock,
-	lsu_axi_arcache,
-	lsu_axi_arprot,
-	lsu_axi_arqos,
-	lsu_axi_rvalid,
-	lsu_axi_rready,
-	lsu_axi_rid,
-	lsu_axi_rdata,
-	lsu_axi_rresp,
-	lsu_bus_clk_en,
-	lsu_bus_clk_en_q
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire clk_override;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire dec_tlu_external_ldfwd_disable;
-	input wire dec_tlu_wb_coalescing_disable;
-	input wire dec_tlu_sideeffect_posted_disable;
-	input wire dec_tlu_force_halt;
-	input wire lsu_bus_obuf_c1_clken;
-	input wire lsu_busm_clken;
-	input wire lsu_c2_r_clk;
-	input wire lsu_bus_ibuf_c1_clk;
-	input wire lsu_bus_obuf_c1_clk;
-	input wire lsu_bus_buf_c1_clk;
-	input wire lsu_free_c2_clk;
-	input wire lsu_busm_clk;
-	input wire dec_lsu_valid_raw_d;
-	input wire [13:0] lsu_pkt_m;
-	input wire [13:0] lsu_pkt_r;
-	input wire [31:0] lsu_addr_m;
-	input wire [31:0] end_addr_m;
-	input wire [31:0] lsu_addr_r;
-	input wire [31:0] end_addr_r;
-	input wire [31:0] store_data_r;
-	input wire no_word_merge_r;
-	input wire no_dword_merge_r;
-	input wire lsu_busreq_m;
-	output wire lsu_busreq_r;
-	input wire ld_full_hit_m;
-	input wire flush_m_up;
-	input wire flush_r;
-	input wire lsu_commit_r;
-	input wire is_sideeffects_r;
-	input wire ldst_dual_d;
-	input wire ldst_dual_m;
-	input wire ldst_dual_r;
-	input wire [7:0] ldst_byteen_ext_m;
-	output wire lsu_bus_buffer_pend_any;
-	output wire lsu_bus_buffer_full_any;
-	output wire lsu_bus_buffer_empty_any;
-	output wire [3:0] ld_byte_hit_buf_lo;
-	output wire [3:0] ld_byte_hit_buf_hi;
-	output reg [31:0] ld_fwddata_buf_lo;
-	output reg [31:0] ld_fwddata_buf_hi;
-	output wire lsu_imprecise_error_load_any;
-	output reg lsu_imprecise_error_store_any;
-	output wire [31:0] lsu_imprecise_error_addr_any;
-	output wire lsu_nonblock_load_valid_m;
-	output wire [pt[164-:7] - 1:0] lsu_nonblock_load_tag_m;
-	output wire lsu_nonblock_load_inv_r;
-	output wire [pt[164-:7] - 1:0] lsu_nonblock_load_inv_tag_r;
-	output wire lsu_nonblock_load_data_valid;
-	output reg lsu_nonblock_load_data_error;
-	output reg [pt[164-:7] - 1:0] lsu_nonblock_load_data_tag;
-	output wire [31:0] lsu_nonblock_load_data;
-	output wire lsu_pmu_bus_trxn;
-	output wire lsu_pmu_bus_misaligned;
-	output wire lsu_pmu_bus_error;
-	output wire lsu_pmu_bus_busy;
-	output wire lsu_axi_awvalid;
-	input wire lsu_axi_awready;
-	output wire [pt[181-:8] - 1:0] lsu_axi_awid;
-	output wire [31:0] lsu_axi_awaddr;
-	output wire [3:0] lsu_axi_awregion;
-	output wire [7:0] lsu_axi_awlen;
-	output wire [2:0] lsu_axi_awsize;
-	output wire [1:0] lsu_axi_awburst;
-	output wire lsu_axi_awlock;
-	output wire [3:0] lsu_axi_awcache;
-	output wire [2:0] lsu_axi_awprot;
-	output wire [3:0] lsu_axi_awqos;
-	output wire lsu_axi_wvalid;
-	input wire lsu_axi_wready;
-	output wire [63:0] lsu_axi_wdata;
-	output wire [7:0] lsu_axi_wstrb;
-	output wire lsu_axi_wlast;
-	input wire lsu_axi_bvalid;
-	output wire lsu_axi_bready;
-	input wire [1:0] lsu_axi_bresp;
-	input wire [pt[181-:8] - 1:0] lsu_axi_bid;
-	output wire lsu_axi_arvalid;
-	input wire lsu_axi_arready;
-	output wire [pt[181-:8] - 1:0] lsu_axi_arid;
-	output wire [31:0] lsu_axi_araddr;
-	output wire [3:0] lsu_axi_arregion;
-	output wire [7:0] lsu_axi_arlen;
-	output wire [2:0] lsu_axi_arsize;
-	output wire [1:0] lsu_axi_arburst;
-	output wire lsu_axi_arlock;
-	output wire [3:0] lsu_axi_arcache;
-	output wire [2:0] lsu_axi_arprot;
-	output wire [3:0] lsu_axi_arqos;
-	input wire lsu_axi_rvalid;
-	output wire lsu_axi_rready;
-	input wire [pt[181-:8] - 1:0] lsu_axi_rid;
-	input wire [63:0] lsu_axi_rdata;
-	input wire [1:0] lsu_axi_rresp;
-	input wire lsu_bus_clk_en;
-	input wire lsu_bus_clk_en_q;
-	localparam DEPTH = pt[173-:9];
-	localparam DEPTH_LOG2 = pt[164-:7];
-	localparam TIMER = 8;
-	localparam TIMER_MAX = 7;
-	localparam TIMER_LOG2 = 3;
-	wire [3:0] ldst_byteen_hi_m;
-	wire [3:0] ldst_byteen_lo_m;
-	wire [DEPTH - 1:0] ld_addr_hitvec_lo;
-	wire [DEPTH - 1:0] ld_addr_hitvec_hi;
-	wire [(4 * DEPTH) - 1:0] ld_byte_hitvec_lo;
-	wire [(4 * DEPTH) - 1:0] ld_byte_hitvec_hi;
-	wire [(4 * DEPTH) - 1:0] ld_byte_hitvecfn_lo;
-	wire [(4 * DEPTH) - 1:0] ld_byte_hitvecfn_hi;
-	wire ld_addr_ibuf_hit_lo;
-	wire ld_addr_ibuf_hit_hi;
-	wire [3:0] ld_byte_ibuf_hit_lo;
-	wire [3:0] ld_byte_ibuf_hit_hi;
-	wire [3:0] ldst_byteen_r;
-	wire [3:0] ldst_byteen_hi_r;
-	wire [3:0] ldst_byteen_lo_r;
-	wire [31:0] store_data_hi_r;
-	wire [31:0] store_data_lo_r;
-	wire is_aligned_r;
-	wire ldst_samedw_r;
-	wire lsu_nonblock_load_valid_r;
-	reg [31:0] lsu_nonblock_load_data_hi;
-	reg [31:0] lsu_nonblock_load_data_lo;
-	wire [31:0] lsu_nonblock_data_unalgn;
-	wire [1:0] lsu_nonblock_addr_offset;
-	wire [1:0] lsu_nonblock_sz;
-	wire lsu_nonblock_unsign;
-	reg lsu_nonblock_load_data_ready;
-	wire [DEPTH - 1:0] CmdPtr0Dec;
-	wire [DEPTH - 1:0] CmdPtr1Dec;
-	wire [DEPTH - 1:0] RspPtrDec;
-	wire [DEPTH_LOG2 - 1:0] CmdPtr0;
-	wire [DEPTH_LOG2 - 1:0] CmdPtr1;
-	wire [DEPTH_LOG2 - 1:0] RspPtr;
-	reg [DEPTH_LOG2 - 1:0] WrPtr0_m;
-	wire [DEPTH_LOG2 - 1:0] WrPtr0_r;
-	reg [DEPTH_LOG2 - 1:0] WrPtr1_m;
-	wire [DEPTH_LOG2 - 1:0] WrPtr1_r;
-	reg found_wrptr0;
-	reg found_wrptr1;
-	wire found_cmdptr0;
-	wire found_cmdptr1;
-	reg [3:0] buf_numvld_any;
-	reg [3:0] buf_numvld_wrcmd_any;
-	reg [3:0] buf_numvld_cmd_any;
-	reg [3:0] buf_numvld_pend_any;
-	reg any_done_wait_state;
-	reg bus_sideeffect_pend;
-	wire bus_coalescing_disable;
-	reg bus_addr_match_pending;
-	wire bus_cmd_sent;
-	wire bus_cmd_ready;
-	wire bus_wcmd_sent;
-	wire bus_wdata_sent;
-	wire bus_rsp_read;
-	wire bus_rsp_write;
-	wire [pt[181-:8] - 1:0] bus_rsp_read_tag;
-	wire [pt[181-:8] - 1:0] bus_rsp_write_tag;
-	wire bus_rsp_read_error;
-	wire bus_rsp_write_error;
-	wire [63:0] bus_rsp_rdata;
-	wire [(DEPTH * 3) - 1:0] buf_state;
-	wire [(DEPTH * 2) - 1:0] buf_sz;
-	wire [(DEPTH * 32) - 1:0] buf_addr;
-	wire [(DEPTH * 4) - 1:0] buf_byteen;
-	wire [DEPTH - 1:0] buf_sideeffect;
-	wire [DEPTH - 1:0] buf_write;
-	wire [DEPTH - 1:0] buf_unsign;
-	wire [DEPTH - 1:0] buf_dual;
-	wire [DEPTH - 1:0] buf_samedw;
-	wire [DEPTH - 1:0] buf_nomerge;
-	wire [DEPTH - 1:0] buf_dualhi;
-	wire [(DEPTH * DEPTH_LOG2) - 1:0] buf_dualtag;
-	wire [DEPTH - 1:0] buf_ldfwd;
-	wire [(DEPTH * DEPTH_LOG2) - 1:0] buf_ldfwdtag;
-	wire [DEPTH - 1:0] buf_error;
-	wire [(DEPTH * 32) - 1:0] buf_data;
-	wire [(DEPTH * DEPTH) - 1:0] buf_age;
-	wire [(DEPTH * DEPTH) - 1:0] buf_age_younger;
-	wire [(DEPTH * DEPTH) - 1:0] buf_rspage;
-	wire [(DEPTH * DEPTH) - 1:0] buf_rsp_pickage;
-	reg [(DEPTH * 3) - 1:0] buf_nxtstate;
-	reg [DEPTH - 1:0] buf_rst;
-	reg [DEPTH - 1:0] buf_state_en;
-	reg [DEPTH - 1:0] buf_cmd_state_bus_en;
-	reg [DEPTH - 1:0] buf_resp_state_bus_en;
-	reg [DEPTH - 1:0] buf_state_bus_en;
-	wire [DEPTH - 1:0] buf_dual_in;
-	wire [DEPTH - 1:0] buf_samedw_in;
-	wire [DEPTH - 1:0] buf_nomerge_in;
-	wire [DEPTH - 1:0] buf_sideeffect_in;
-	wire [DEPTH - 1:0] buf_unsign_in;
-	wire [(DEPTH * 2) - 1:0] buf_sz_in;
-	wire [DEPTH - 1:0] buf_write_in;
-	reg [DEPTH - 1:0] buf_wr_en;
-	wire [DEPTH - 1:0] buf_dualhi_in;
-	wire [(DEPTH * DEPTH_LOG2) - 1:0] buf_dualtag_in;
-	reg [DEPTH - 1:0] buf_ldfwd_en;
-	reg [DEPTH - 1:0] buf_ldfwd_in;
-	reg [(DEPTH * DEPTH_LOG2) - 1:0] buf_ldfwdtag_in;
-	wire [(DEPTH * 4) - 1:0] buf_byteen_in;
-	wire [(DEPTH * 32) - 1:0] buf_addr_in;
-	reg [(DEPTH * 32) - 1:0] buf_data_in;
-	reg [DEPTH - 1:0] buf_error_en;
-	reg [DEPTH - 1:0] buf_data_en;
-	wire [(DEPTH * DEPTH) - 1:0] buf_age_in;
-	wire [(DEPTH * DEPTH) - 1:0] buf_ageQ;
-	wire [(DEPTH * DEPTH) - 1:0] buf_rspage_set;
-	wire [(DEPTH * DEPTH) - 1:0] buf_rspage_in;
-	wire [(DEPTH * DEPTH) - 1:0] buf_rspageQ;
-	wire ibuf_valid;
-	wire ibuf_dual;
-	wire ibuf_samedw;
-	wire ibuf_nomerge;
-	wire [DEPTH_LOG2 - 1:0] ibuf_tag;
-	wire [DEPTH_LOG2 - 1:0] ibuf_dualtag;
-	wire ibuf_sideeffect;
-	wire ibuf_unsign;
-	wire ibuf_write;
-	wire [1:0] ibuf_sz;
-	wire [3:0] ibuf_byteen;
-	wire [31:0] ibuf_addr;
-	wire [31:0] ibuf_data;
-	wire [2:0] ibuf_timer;
-	wire ibuf_byp;
-	wire ibuf_wr_en;
-	wire ibuf_rst;
-	wire ibuf_force_drain;
-	wire ibuf_drain_vld;
-	wire [DEPTH - 1:0] ibuf_drainvec_vld;
-	wire [DEPTH_LOG2 - 1:0] ibuf_tag_in;
-	wire [DEPTH_LOG2 - 1:0] ibuf_dualtag_in;
-	wire [1:0] ibuf_sz_in;
-	wire [31:0] ibuf_addr_in;
-	wire [3:0] ibuf_byteen_in;
-	wire [31:0] ibuf_data_in;
-	wire [2:0] ibuf_timer_in;
-	wire [3:0] ibuf_byteen_out;
-	wire [31:0] ibuf_data_out;
-	wire ibuf_merge_en;
-	wire ibuf_merge_in;
-	wire obuf_valid;
-	wire obuf_write;
-	wire obuf_nosend;
-	wire obuf_rdrsp_pend;
-	wire obuf_sideeffect;
-	wire [31:0] obuf_addr;
-	wire [63:0] obuf_data;
-	wire [1:0] obuf_sz;
-	wire [7:0] obuf_byteen;
-	wire obuf_merge;
-	wire obuf_cmd_done;
-	wire obuf_data_done;
-	wire [pt[181-:8] - 1:0] obuf_tag0;
-	wire [pt[181-:8] - 1:0] obuf_tag1;
-	wire [pt[181-:8] - 1:0] obuf_rdrsp_tag;
-	wire ibuf_buf_byp;
-	wire obuf_force_wr_en;
-	wire obuf_wr_wait;
-	wire obuf_wr_en;
-	wire obuf_wr_enQ;
-	wire obuf_rst;
-	wire obuf_write_in;
-	wire obuf_nosend_in;
-	wire obuf_rdrsp_pend_en;
-	wire obuf_rdrsp_pend_in;
-	wire obuf_sideeffect_in;
-	wire obuf_aligned_in;
-	wire [31:0] obuf_addr_in;
-	wire [63:0] obuf_data_in;
-	wire [1:0] obuf_sz_in;
-	wire [7:0] obuf_byteen_in;
-	wire obuf_merge_in;
-	wire obuf_cmd_done_in;
-	wire obuf_data_done_in;
-	wire [pt[181-:8] - 1:0] obuf_tag0_in;
-	wire [pt[181-:8] - 1:0] obuf_tag1_in;
-	wire [pt[181-:8] - 1:0] obuf_rdrsp_tag_in;
-	wire obuf_merge_en;
-	wire [2:0] obuf_wr_timer;
-	wire [2:0] obuf_wr_timer_in;
-	wire [7:0] obuf_byteen0_in;
-	wire [7:0] obuf_byteen1_in;
-	wire [63:0] obuf_data0_in;
-	wire [63:0] obuf_data1_in;
-	wire lsu_axi_awvalid_q;
-	wire lsu_axi_awready_q;
-	wire lsu_axi_wvalid_q;
-	wire lsu_axi_wready_q;
-	wire lsu_axi_arvalid_q;
-	wire lsu_axi_arready_q;
-	wire lsu_axi_bvalid_q;
-	wire lsu_axi_bready_q;
-	wire lsu_axi_rvalid_q;
-	wire lsu_axi_rready_q;
-	wire [pt[181-:8] - 1:0] lsu_axi_bid_q;
-	wire [pt[181-:8] - 1:0] lsu_axi_rid_q;
-	wire [1:0] lsu_axi_bresp_q;
-	wire [1:0] lsu_axi_rresp_q;
-	reg [pt[181-:8] - 1:0] lsu_imprecise_error_store_tag;
-	wire [63:0] lsu_axi_rdata_q;
-	function automatic [2:0] f_Enc8to3;
-		input reg [7:0] Dec_value;
-		reg [2:0] Enc_value;
-		begin
-			Enc_value[0] = ((Dec_value[1] | Dec_value[3]) | Dec_value[5]) | Dec_value[7];
-			Enc_value[1] = ((Dec_value[2] | Dec_value[3]) | Dec_value[6]) | Dec_value[7];
-			Enc_value[2] = ((Dec_value[4] | Dec_value[5]) | Dec_value[6]) | Dec_value[7];
-			f_Enc8to3 = Enc_value[2:0];
-		end
-	endfunction
-	assign ldst_byteen_hi_m[3:0] = ldst_byteen_ext_m[7:4];
-	assign ldst_byteen_lo_m[3:0] = ldst_byteen_ext_m[3:0];
-	localparam [2:0] IDLE = 3'b000;
-	generate
-		genvar i;
-		for (i = 0; i < DEPTH; i = i + 1) begin
-			assign ld_addr_hitvec_lo[i] = (((lsu_addr_m[31:2] == buf_addr[(i * 32) + 31-:30]) & buf_write[i]) & (buf_state[i * 3+:3] != IDLE)) & lsu_busreq_m;
-			assign ld_addr_hitvec_hi[i] = (((end_addr_m[31:2] == buf_addr[(i * 32) + 31-:30]) & buf_write[i]) & (buf_state[i * 3+:3] != IDLE)) & lsu_busreq_m;
-		end
-	endgenerate
-	generate
-		genvar j;
-		for (j = 0; j < 4; j = j + 1) begin
-			assign ld_byte_hit_buf_lo[j] = |ld_byte_hitvecfn_lo[j * DEPTH+:DEPTH] | ld_byte_ibuf_hit_lo[j];
-			assign ld_byte_hit_buf_hi[j] = |ld_byte_hitvecfn_hi[j * DEPTH+:DEPTH] | ld_byte_ibuf_hit_hi[j];
-			for (i = 0; i < DEPTH; i = i + 1) begin
-				assign ld_byte_hitvec_lo[(j * DEPTH) + i] = (ld_addr_hitvec_lo[i] & buf_byteen[(i * 4) + j]) & ldst_byteen_lo_m[j];
-				assign ld_byte_hitvec_hi[(j * DEPTH) + i] = (ld_addr_hitvec_hi[i] & buf_byteen[(i * 4) + j]) & ldst_byteen_hi_m[j];
-				assign ld_byte_hitvecfn_lo[(j * DEPTH) + i] = (ld_byte_hitvec_lo[(j * DEPTH) + i] & ~(|(ld_byte_hitvec_lo[j * DEPTH+:DEPTH] & buf_age_younger[i * DEPTH+:DEPTH]))) & ~ld_byte_ibuf_hit_lo[j];
-				assign ld_byte_hitvecfn_hi[(j * DEPTH) + i] = (ld_byte_hitvec_hi[(j * DEPTH) + i] & ~(|(ld_byte_hitvec_hi[j * DEPTH+:DEPTH] & buf_age_younger[i * DEPTH+:DEPTH]))) & ~ld_byte_ibuf_hit_hi[j];
-			end
-		end
-	endgenerate
-	assign ld_addr_ibuf_hit_lo = (((lsu_addr_m[31:2] == ibuf_addr[31:2]) & ibuf_write) & ibuf_valid) & lsu_busreq_m;
-	assign ld_addr_ibuf_hit_hi = (((end_addr_m[31:2] == ibuf_addr[31:2]) & ibuf_write) & ibuf_valid) & lsu_busreq_m;
-	generate
-		for (i = 0; i < 4; i = i + 1) begin
-			assign ld_byte_ibuf_hit_lo[i] = (ld_addr_ibuf_hit_lo & ibuf_byteen[i]) & ldst_byteen_lo_m[i];
-			assign ld_byte_ibuf_hit_hi[i] = (ld_addr_ibuf_hit_hi & ibuf_byteen[i]) & ldst_byteen_hi_m[i];
-		end
-	endgenerate
-	always @(*) begin
-		ld_fwddata_buf_lo[31:0] = {{8 {ld_byte_ibuf_hit_lo[3]}}, {8 {ld_byte_ibuf_hit_lo[2]}}, {8 {ld_byte_ibuf_hit_lo[1]}}, {8 {ld_byte_ibuf_hit_lo[0]}}} & ibuf_data[31:0];
-		ld_fwddata_buf_hi[31:0] = {{8 {ld_byte_ibuf_hit_hi[3]}}, {8 {ld_byte_ibuf_hit_hi[2]}}, {8 {ld_byte_ibuf_hit_hi[1]}}, {8 {ld_byte_ibuf_hit_hi[0]}}} & ibuf_data[31:0];
-		begin : sv2v_autoblock_50
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				begin
-					ld_fwddata_buf_lo[7:0] = ld_fwddata_buf_lo[7:0] | ({8 {ld_byte_hitvecfn_lo[i]}} & buf_data[(i * 32) + 7-:8]);
-					ld_fwddata_buf_lo[15:8] = ld_fwddata_buf_lo[15:8] | ({8 {ld_byte_hitvecfn_lo[DEPTH + i]}} & buf_data[(i * 32) + 15-:8]);
-					ld_fwddata_buf_lo[23:16] = ld_fwddata_buf_lo[23:16] | ({8 {ld_byte_hitvecfn_lo[(2 * DEPTH) + i]}} & buf_data[(i * 32) + 23-:8]);
-					ld_fwddata_buf_lo[31:24] = ld_fwddata_buf_lo[31:24] | ({8 {ld_byte_hitvecfn_lo[(3 * DEPTH) + i]}} & buf_data[(i * 32) + 31-:8]);
-					ld_fwddata_buf_hi[7:0] = ld_fwddata_buf_hi[7:0] | ({8 {ld_byte_hitvecfn_hi[i]}} & buf_data[(i * 32) + 7-:8]);
-					ld_fwddata_buf_hi[15:8] = ld_fwddata_buf_hi[15:8] | ({8 {ld_byte_hitvecfn_hi[DEPTH + i]}} & buf_data[(i * 32) + 15-:8]);
-					ld_fwddata_buf_hi[23:16] = ld_fwddata_buf_hi[23:16] | ({8 {ld_byte_hitvecfn_hi[(2 * DEPTH) + i]}} & buf_data[(i * 32) + 23-:8]);
-					ld_fwddata_buf_hi[31:24] = ld_fwddata_buf_hi[31:24] | ({8 {ld_byte_hitvecfn_hi[(3 * DEPTH) + i]}} & buf_data[(i * 32) + 31-:8]);
-				end
-		end
-	end
-	assign bus_coalescing_disable = dec_tlu_wb_coalescing_disable | pt[2038];
-	assign ldst_byteen_r[3:0] = (({4 {lsu_pkt_r[11]}} & 4'b0001) | ({4 {lsu_pkt_r[10]}} & 4'b0011)) | ({4 {lsu_pkt_r[9]}} & 4'b1111);
-	assign {ldst_byteen_hi_r[3:0], ldst_byteen_lo_r[3:0]} = {4'b0000, ldst_byteen_r[3:0]} << lsu_addr_r[1:0];
-	assign {store_data_hi_r[31:0], store_data_lo_r[31:0]} = {32'b00000000000000000000000000000000, store_data_r[31:0]} << (8 * lsu_addr_r[1:0]);
-	assign ldst_samedw_r = lsu_addr_r[3] == end_addr_r[3];
-	assign is_aligned_r = ((lsu_pkt_r[9] & (lsu_addr_r[1:0] == 2'b00)) | (lsu_pkt_r[10] & (lsu_addr_r[0] == 1'b0))) | lsu_pkt_r[11];
-	assign ibuf_byp = (lsu_busreq_r & (lsu_pkt_r[7] | no_word_merge_r)) & ~ibuf_valid;
-	assign ibuf_wr_en = (lsu_busreq_r & lsu_commit_r) & ~ibuf_byp;
-	assign ibuf_rst = (ibuf_drain_vld & ~ibuf_wr_en) | dec_tlu_force_halt;
-	assign ibuf_force_drain = ((lsu_busreq_m & ~lsu_busreq_r) & ibuf_valid) & (lsu_pkt_m[7] | (ibuf_addr[31:2] != lsu_addr_m[31:2]));
-	assign ibuf_drain_vld = ibuf_valid & (((((((ibuf_wr_en | (ibuf_timer == TIMER_MAX)) & ~(ibuf_merge_en & ibuf_merge_in)) | ibuf_byp) | ibuf_force_drain) | ibuf_sideeffect) | ~ibuf_write) | bus_coalescing_disable);
-	assign ibuf_tag_in[DEPTH_LOG2 - 1:0] = (ibuf_merge_en & ibuf_merge_in ? ibuf_tag[DEPTH_LOG2 - 1:0] : (ldst_dual_r ? WrPtr1_r : WrPtr0_r));
-	assign ibuf_dualtag_in[DEPTH_LOG2 - 1:0] = WrPtr0_r;
-	assign ibuf_sz_in[1:0] = {lsu_pkt_r[9], lsu_pkt_r[10]};
-	assign ibuf_addr_in[31:0] = (ldst_dual_r ? end_addr_r[31:0] : lsu_addr_r[31:0]);
-	assign ibuf_byteen_in[3:0] = (ibuf_merge_en & ibuf_merge_in ? ibuf_byteen[3:0] | ldst_byteen_lo_r[3:0] : (ldst_dual_r ? ldst_byteen_hi_r[3:0] : ldst_byteen_lo_r[3:0]));
-	generate
-		for (i = 0; i < 4; i = i + 1) assign ibuf_data_in[(8 * i) + 7:8 * i] = (ibuf_merge_en & ibuf_merge_in ? (ldst_byteen_lo_r[i] ? store_data_lo_r[(8 * i) + 7:8 * i] : ibuf_data[(8 * i) + 7:8 * i]) : (ldst_dual_r ? store_data_hi_r[(8 * i) + 7:8 * i] : store_data_lo_r[(8 * i) + 7:8 * i]));
-	endgenerate
-	assign ibuf_timer_in = (ibuf_wr_en ? {3 {1'sb0}} : (ibuf_timer < TIMER_MAX ? ibuf_timer + 1'b1 : ibuf_timer));
-	assign ibuf_merge_en = ((((((lsu_busreq_r & lsu_commit_r) & lsu_pkt_r[6]) & ibuf_valid) & ibuf_write) & (lsu_addr_r[31:2] == ibuf_addr[31:2])) & ~is_sideeffects_r) & ~bus_coalescing_disable;
-	assign ibuf_merge_in = ~ldst_dual_r;
-	generate
-		for (i = 0; i < 4; i = i + 1) begin
-			assign ibuf_byteen_out[i] = (ibuf_merge_en & ~ibuf_merge_in ? ibuf_byteen[i] | ldst_byteen_lo_r[i] : ibuf_byteen[i]);
-			assign ibuf_data_out[(8 * i) + 7:8 * i] = (ibuf_merge_en & ~ibuf_merge_in ? (ldst_byteen_lo_r[i] ? store_data_lo_r[(8 * i) + 7:8 * i] : ibuf_data[(8 * i) + 7:8 * i]) : ibuf_data[(8 * i) + 7:8 * i]);
-		end
-	endgenerate
-	rvdffsc #(.WIDTH(1)) ibuf_valid_ff(
-		.din(1'b1),
-		.dout(ibuf_valid),
-		.en(ibuf_wr_en),
-		.clear(ibuf_rst),
-		.clk(lsu_free_c2_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(DEPTH_LOG2)) ibuf_tagff(
-		.din(ibuf_tag_in),
-		.dout(ibuf_tag),
-		.en(ibuf_wr_en),
-		.clk(lsu_bus_ibuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(DEPTH_LOG2)) ibuf_dualtagff(
-		.din(ibuf_dualtag_in),
-		.dout(ibuf_dualtag),
-		.en(ibuf_wr_en),
-		.clk(lsu_bus_ibuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(1)) ibuf_dualff(
-		.din(ldst_dual_r),
-		.dout(ibuf_dual),
-		.en(ibuf_wr_en),
-		.clk(lsu_bus_ibuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(1)) ibuf_samedwff(
-		.din(ldst_samedw_r),
-		.dout(ibuf_samedw),
-		.en(ibuf_wr_en),
-		.clk(lsu_bus_ibuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(1)) ibuf_nomergeff(
-		.din(no_dword_merge_r),
-		.dout(ibuf_nomerge),
-		.en(ibuf_wr_en),
-		.clk(lsu_bus_ibuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(1)) ibuf_sideeffectff(
-		.din(is_sideeffects_r),
-		.dout(ibuf_sideeffect),
-		.en(ibuf_wr_en),
-		.clk(lsu_bus_ibuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(1)) ibuf_unsignff(
-		.din(lsu_pkt_r[5]),
-		.dout(ibuf_unsign),
-		.en(ibuf_wr_en),
-		.clk(lsu_bus_ibuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(1)) ibuf_writeff(
-		.din(lsu_pkt_r[6]),
-		.dout(ibuf_write),
-		.en(ibuf_wr_en),
-		.clk(lsu_bus_ibuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(2)) ibuf_szff(
-		.din(ibuf_sz_in[1:0]),
-		.dout(ibuf_sz),
-		.en(ibuf_wr_en),
-		.clk(lsu_bus_ibuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(32)) ibuf_addrff(
-		.din(ibuf_addr_in[31:0]),
-		.dout(ibuf_addr),
-		.en(ibuf_wr_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdffs #(.WIDTH(4)) ibuf_byteenff(
-		.din(ibuf_byteen_in[3:0]),
-		.dout(ibuf_byteen),
-		.en(ibuf_wr_en),
-		.clk(lsu_bus_ibuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(32)) ibuf_dataff(
-		.din(ibuf_data_in[31:0]),
-		.dout(ibuf_data),
-		.en(ibuf_wr_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdff #(.WIDTH(TIMER_LOG2)) ibuf_timerff(
-		.din(ibuf_timer_in),
-		.dout(ibuf_timer),
-		.clk(lsu_free_c2_clk),
-		.rst_l(rst_l)
-	);
-	assign obuf_wr_wait = ((((((buf_numvld_wrcmd_any[3:0] == 4'b0001) & (buf_numvld_cmd_any[3:0] == 4'b0001)) & (obuf_wr_timer != TIMER_MAX)) & ~bus_coalescing_disable) & ~buf_nomerge[CmdPtr0]) & ~buf_sideeffect[CmdPtr0]) & ~obuf_force_wr_en;
-	assign obuf_wr_timer_in = (obuf_wr_en ? 3'b000 : ((buf_numvld_cmd_any > 4'b0000) & (obuf_wr_timer < TIMER_MAX) ? obuf_wr_timer + 1'b1 : obuf_wr_timer));
-	assign obuf_force_wr_en = (((lsu_busreq_m & ~lsu_busreq_r) & ~ibuf_valid) & (buf_numvld_cmd_any[3:0] == 4'b0001)) & (lsu_addr_m[31:2] != buf_addr[(CmdPtr0 * 32) + 31-:30]);
-	assign ibuf_buf_byp = (ibuf_byp & (buf_numvld_pend_any[3:0] == 4'b0000)) & (~lsu_pkt_r[6] | no_dword_merge_r);
-	localparam [2:0] CMD = 3'b010;
-	assign obuf_wr_en = ((((((ibuf_buf_byp & lsu_commit_r) & ~(is_sideeffects_r & bus_sideeffect_pend)) | (((((buf_state[CmdPtr0 * 3+:3] == CMD) & found_cmdptr0) & ~buf_cmd_state_bus_en[CmdPtr0]) & ~(buf_sideeffect[CmdPtr0] & bus_sideeffect_pend)) & (((~((buf_dual[CmdPtr0] & buf_samedw[CmdPtr0]) & ~buf_write[CmdPtr0]) | found_cmdptr1) | buf_nomerge[CmdPtr0]) | obuf_force_wr_en))) & ((bus_cmd_ready | ~obuf_valid) | obuf_nosend)) & ~obuf_wr_wait) & ~bus_addr_match_pending) & lsu_bus_clk_en;
-	assign obuf_rst = (((bus_cmd_sent | (obuf_valid & obuf_nosend)) & ~obuf_wr_en) & lsu_bus_clk_en) | dec_tlu_force_halt;
-	assign obuf_write_in = (ibuf_buf_byp ? lsu_pkt_r[6] : buf_write[CmdPtr0]);
-	assign obuf_sideeffect_in = (ibuf_buf_byp ? is_sideeffects_r : buf_sideeffect[CmdPtr0]);
-	assign obuf_addr_in[31:0] = (ibuf_buf_byp ? lsu_addr_r[31:0] : buf_addr[CmdPtr0 * 32+:32]);
-	assign obuf_sz_in[1:0] = (ibuf_buf_byp ? {lsu_pkt_r[9], lsu_pkt_r[10]} : buf_sz[CmdPtr0 * 2+:2]);
-	assign obuf_merge_in = obuf_merge_en;
-	function automatic [pt[181-:8] - 1:0] sv2v_cast_72B45;
-		input reg [pt[181-:8] - 1:0] inp;
-		sv2v_cast_72B45 = inp;
-	endfunction
-	assign obuf_tag0_in[pt[181-:8] - 1:0] = (ibuf_buf_byp ? sv2v_cast_72B45(WrPtr0_r) : sv2v_cast_72B45(CmdPtr0));
-	assign obuf_tag1_in[pt[181-:8] - 1:0] = (ibuf_buf_byp ? sv2v_cast_72B45(WrPtr1_r) : sv2v_cast_72B45(CmdPtr1));
-	assign obuf_cmd_done_in = ~(obuf_wr_en | obuf_rst) & (obuf_cmd_done | bus_wcmd_sent);
-	assign obuf_data_done_in = ~(obuf_wr_en | obuf_rst) & (obuf_data_done | bus_wdata_sent);
-	assign obuf_aligned_in = (ibuf_buf_byp ? is_aligned_r : ((obuf_sz_in[1:0] == 2'b00) | (obuf_sz_in[0] & ~obuf_addr_in[0])) | (obuf_sz_in[1] & ~(|obuf_addr_in[1:0])));
-	assign obuf_rdrsp_pend_in = (((~(obuf_wr_en & ~obuf_nosend_in) & obuf_rdrsp_pend) & ~(bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag))) | (bus_cmd_sent & ~obuf_write)) & ~dec_tlu_force_halt;
-	assign obuf_rdrsp_pend_en = lsu_bus_clk_en | dec_tlu_force_halt;
-	assign obuf_rdrsp_tag_in[pt[181-:8] - 1:0] = (bus_cmd_sent & ~obuf_write ? obuf_tag0[pt[181-:8] - 1:0] : obuf_rdrsp_tag[pt[181-:8] - 1:0]);
-	assign obuf_nosend_in = ((((((obuf_addr_in[31:3] == obuf_addr[31:3]) & obuf_aligned_in) & ~obuf_sideeffect) & ~obuf_write) & ~obuf_write_in) & ~dec_tlu_external_ldfwd_disable) & ((obuf_valid & ~obuf_nosend) | (obuf_rdrsp_pend & ~(bus_rsp_read & (bus_rsp_read_tag == obuf_rdrsp_tag))));
-	assign obuf_byteen0_in[7:0] = (ibuf_buf_byp ? (lsu_addr_r[2] ? {ldst_byteen_lo_r[3:0], 4'b0000} : {4'b0000, ldst_byteen_lo_r[3:0]}) : (buf_addr[(CmdPtr0 * 32) + 2] ? {buf_byteen[CmdPtr0 * 4+:4], 4'b0000} : {4'b0000, buf_byteen[CmdPtr0 * 4+:4]}));
-	assign obuf_byteen1_in[7:0] = (ibuf_buf_byp ? (end_addr_r[2] ? {ldst_byteen_hi_r[3:0], 4'b0000} : {4'b0000, ldst_byteen_hi_r[3:0]}) : (buf_addr[(CmdPtr1 * 32) + 2] ? {buf_byteen[CmdPtr1 * 4+:4], 4'b0000} : {4'b0000, buf_byteen[CmdPtr1 * 4+:4]}));
-	assign obuf_data0_in[63:0] = (ibuf_buf_byp ? (lsu_addr_r[2] ? {store_data_lo_r[31:0], 32'b00000000000000000000000000000000} : {32'b00000000000000000000000000000000, store_data_lo_r[31:0]}) : (buf_addr[(CmdPtr0 * 32) + 2] ? {buf_data[CmdPtr0 * 32+:32], 32'b00000000000000000000000000000000} : {32'b00000000000000000000000000000000, buf_data[CmdPtr0 * 32+:32]}));
-	assign obuf_data1_in[63:0] = (ibuf_buf_byp ? (end_addr_r[2] ? {store_data_hi_r[31:0], 32'b00000000000000000000000000000000} : {32'b00000000000000000000000000000000, store_data_hi_r[31:0]}) : (buf_addr[(CmdPtr1 * 32) + 2] ? {buf_data[CmdPtr1 * 32+:32], 32'b00000000000000000000000000000000} : {32'b00000000000000000000000000000000, buf_data[CmdPtr1 * 32+:32]}));
-	generate
-		for (i = 0; i < 8; i = i + 1) begin
-			assign obuf_byteen_in[i] = obuf_byteen0_in[i] | (obuf_merge_en & obuf_byteen1_in[i]);
-			assign obuf_data_in[(8 * i) + 7:8 * i] = (obuf_merge_en & obuf_byteen1_in[i] ? obuf_data1_in[(8 * i) + 7:8 * i] : obuf_data0_in[(8 * i) + 7:8 * i]);
-		end
-	endgenerate
-	assign obuf_merge_en = ((((((((CmdPtr0 != CmdPtr1) & found_cmdptr0) & found_cmdptr1) & (buf_state[CmdPtr0 * 3+:3] == CMD)) & (buf_state[CmdPtr1 * 3+:3] == CMD)) & ~buf_cmd_state_bus_en[CmdPtr0]) & ~buf_sideeffect[CmdPtr0]) & (((~buf_write[CmdPtr0] & buf_dual[CmdPtr0]) & ~buf_dualhi[CmdPtr0]) & buf_samedw[CmdPtr0])) | ((ibuf_buf_byp & ldst_samedw_r) & ldst_dual_r);
-	rvdff_fpga #(.WIDTH(1)) obuf_wren_ff(
-		.din(obuf_wr_en),
-		.dout(obuf_wr_enQ),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffsc #(.WIDTH(1)) obuf_valid_ff(
-		.din(1'b1),
-		.dout(obuf_valid),
-		.en(obuf_wr_en),
-		.clear(obuf_rst),
-		.clk(lsu_free_c2_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(1)) obuf_nosend_ff(
-		.din(obuf_nosend_in),
-		.dout(obuf_nosend),
-		.en(obuf_wr_en),
-		.clk(lsu_free_c2_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(1)) obuf_rdrsp_pend_ff(
-		.din(obuf_rdrsp_pend_in),
-		.dout(obuf_rdrsp_pend),
-		.en(obuf_rdrsp_pend_en),
-		.clk(lsu_free_c2_clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) obuf_cmd_done_ff(
-		.din(obuf_cmd_done_in),
-		.dout(obuf_cmd_done),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) obuf_data_done_ff(
-		.din(obuf_data_done_in),
-		.dout(obuf_data_done),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(pt[181-:8])) obuf_rdrsp_tagff(
-		.din(obuf_rdrsp_tag_in),
-		.dout(obuf_rdrsp_tag),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(pt[181-:8])) obuf_tag0ff(
-		.din(obuf_tag0_in),
-		.dout(obuf_tag0),
-		.en(obuf_wr_en),
-		.clk(lsu_bus_obuf_c1_clk),
-		.clken(lsu_bus_obuf_c1_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(pt[181-:8])) obuf_tag1ff(
-		.din(obuf_tag1_in),
-		.dout(obuf_tag1),
-		.en(obuf_wr_en),
-		.clk(lsu_bus_obuf_c1_clk),
-		.clken(lsu_bus_obuf_c1_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(1)) obuf_mergeff(
-		.din(obuf_merge_in),
-		.dout(obuf_merge),
-		.en(obuf_wr_en),
-		.clk(lsu_bus_obuf_c1_clk),
-		.clken(lsu_bus_obuf_c1_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(1)) obuf_writeff(
-		.din(obuf_write_in),
-		.dout(obuf_write),
-		.en(obuf_wr_en),
-		.clk(lsu_bus_obuf_c1_clk),
-		.clken(lsu_bus_obuf_c1_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(1)) obuf_sideeffectff(
-		.din(obuf_sideeffect_in),
-		.dout(obuf_sideeffect),
-		.en(obuf_wr_en),
-		.clk(lsu_bus_obuf_c1_clk),
-		.clken(lsu_bus_obuf_c1_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(2)) obuf_szff(
-		.din(obuf_sz_in[1:0]),
-		.dout(obuf_sz),
-		.en(obuf_wr_en),
-		.clk(lsu_bus_obuf_c1_clk),
-		.clken(lsu_bus_obuf_c1_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffs_fpga #(.WIDTH(8)) obuf_byteenff(
-		.din(obuf_byteen_in[7:0]),
-		.dout(obuf_byteen),
-		.en(obuf_wr_en),
-		.clk(lsu_bus_obuf_c1_clk),
-		.clken(lsu_bus_obuf_c1_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(32)) obuf_addrff(
-		.din(obuf_addr_in[31:0]),
-		.dout(obuf_addr),
-		.en(obuf_wr_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdffe #(.WIDTH(64)) obuf_dataff(
-		.din(obuf_data_in[63:0]),
-		.dout(obuf_data),
-		.en(obuf_wr_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdff_fpga #(.WIDTH(TIMER_LOG2)) obuf_timerff(
-		.din(obuf_wr_timer_in),
-		.dout(obuf_wr_timer),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	function automatic signed [DEPTH_LOG2 - 1:0] sv2v_cast_63A9F_signed;
-		input reg signed [DEPTH_LOG2 - 1:0] inp;
-		sv2v_cast_63A9F_signed = inp;
-	endfunction
-	always @(*) begin
-		WrPtr0_m[DEPTH_LOG2 - 1:0] = {DEPTH_LOG2 {1'sb0}};
-		WrPtr1_m[DEPTH_LOG2 - 1:0] = {DEPTH_LOG2 {1'sb0}};
-		found_wrptr0 = 1'b0;
-		found_wrptr1 = 1'b0;
-		begin : sv2v_autoblock_51
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				if (~found_wrptr0) begin
-					WrPtr0_m[DEPTH_LOG2 - 1:0] = sv2v_cast_63A9F_signed(i);
-					found_wrptr0 = (buf_state[i * 3+:3] == IDLE) & ~((ibuf_valid & (ibuf_tag == i)) | (lsu_busreq_r & ((WrPtr0_r == i) | (ldst_dual_r & (WrPtr1_r == i)))));
-				end
-		end
-		begin : sv2v_autoblock_52
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				if (~found_wrptr1) begin
-					WrPtr1_m[DEPTH_LOG2 - 1:0] = sv2v_cast_63A9F_signed(i);
-					found_wrptr1 = (buf_state[i * 3+:3] == IDLE) & ~(((ibuf_valid & (ibuf_tag == i)) | (lsu_busreq_m & (WrPtr0_m == i))) | (lsu_busreq_r & ((WrPtr0_r == i) | (ldst_dual_r & (WrPtr1_r == i)))));
-				end
-		end
-	end
-	localparam [2:0] DONE_WAIT = 3'b101;
-	generate
-		for (i = 0; i < DEPTH; i = i + 1) begin
-			assign CmdPtr0Dec[i] = (~(|buf_age[i * DEPTH+:DEPTH]) & (buf_state[i * 3+:3] == CMD)) & ~buf_cmd_state_bus_en[i];
-			assign CmdPtr1Dec[i] = ((~(|(buf_age[i * DEPTH+:DEPTH] & ~CmdPtr0Dec)) & ~CmdPtr0Dec[i]) & (buf_state[i * 3+:3] == CMD)) & ~buf_cmd_state_bus_en[i];
-			assign RspPtrDec[i] = ~(|buf_rsp_pickage[i * DEPTH+:DEPTH]) & (buf_state[i * 3+:3] == DONE_WAIT);
-		end
-	endgenerate
-	assign found_cmdptr0 = |CmdPtr0Dec;
-	assign found_cmdptr1 = |CmdPtr1Dec;
-	function automatic [7:0] sv2v_cast_8;
-		input reg [7:0] inp;
-		sv2v_cast_8 = inp;
-	endfunction
-	assign CmdPtr0 = f_Enc8to3(sv2v_cast_8(CmdPtr0Dec[DEPTH - 1:0]));
-	assign CmdPtr1 = f_Enc8to3(sv2v_cast_8(CmdPtr1Dec[DEPTH - 1:0]));
-	assign RspPtr = f_Enc8to3(sv2v_cast_8(RspPtrDec[DEPTH - 1:0]));
-	localparam [2:0] WAIT = 3'b001;
-	generate
-		for (i = 0; i < DEPTH; i = i + 1) begin : GenAgeVec
-			for (j = 0; j < DEPTH; j = j + 1) begin
-				assign buf_age_in[(i * DEPTH) + j] = (((buf_state[i * 3+:3] == IDLE) & buf_state_en[i]) & ((((buf_state[j * 3+:3] == WAIT) | ((buf_state[j * 3+:3] == CMD) & ~buf_cmd_state_bus_en[j])) | ((((ibuf_drain_vld & lsu_busreq_r) & (ibuf_byp | ldst_dual_r)) & (i == WrPtr0_r)) & (j == ibuf_tag))) | ((((ibuf_byp & lsu_busreq_r) & ldst_dual_r) & (i == WrPtr1_r)) & (j == WrPtr0_r)))) | buf_age[(i * DEPTH) + j];
-				assign buf_age[(i * DEPTH) + j] = (buf_ageQ[(i * DEPTH) + j] & ~((buf_state[j * 3+:3] == CMD) & buf_cmd_state_bus_en[j])) & ~dec_tlu_force_halt;
-				assign buf_age_younger[(i * DEPTH) + j] = (i == j ? 1'b0 : ~buf_age[(i * DEPTH) + j] & (buf_state[j * 3+:3] != IDLE));
-			end
-		end
-	endgenerate
-	localparam [2:0] DONE = 3'b110;
-	generate
-		for (i = 0; i < DEPTH; i = i + 1) begin : GenRspAgeVec
-			for (j = 0; j < DEPTH; j = j + 1) begin
-				function automatic signed [DEPTH_LOG2 - 1:0] sv2v_cast_63A9F_signed;
-					input reg signed [DEPTH_LOG2 - 1:0] inp;
-					sv2v_cast_63A9F_signed = inp;
-				endfunction
-				assign buf_rspage_set[(i * DEPTH) + j] = ((buf_state[i * 3+:3] == IDLE) & buf_state_en[i]) & ((~((buf_state[j * 3+:3] == IDLE) | (buf_state[j * 3+:3] == DONE)) | ((((ibuf_drain_vld & lsu_busreq_r) & (ibuf_byp | ldst_dual_r)) & (sv2v_cast_63A9F_signed(i) == WrPtr0_r)) & (sv2v_cast_63A9F_signed(j) == ibuf_tag))) | ((((ibuf_byp & lsu_busreq_r) & ldst_dual_r) & (sv2v_cast_63A9F_signed(i) == WrPtr1_r)) & (sv2v_cast_63A9F_signed(j) == WrPtr0_r)));
-				assign buf_rspage_in[(i * DEPTH) + j] = buf_rspage_set[(i * DEPTH) + j] | buf_rspage[(i * DEPTH) + j];
-				assign buf_rspage[(i * DEPTH) + j] = (buf_rspageQ[(i * DEPTH) + j] & ~((buf_state[j * 3+:3] == DONE) | (buf_state[j * 3+:3] == IDLE))) & ~dec_tlu_force_halt;
-				assign buf_rsp_pickage[(i * DEPTH) + j] = buf_rspageQ[(i * DEPTH) + j] & (buf_state[j * 3+:3] == DONE_WAIT);
-			end
-		end
-	endgenerate
-	localparam [2:0] DONE_PARTIAL = 3'b100;
-	localparam [2:0] RESP = 3'b011;
-	generate
-		for (i = 0; i < DEPTH; i = i + 1) begin
-			assign ibuf_drainvec_vld[i] = ibuf_drain_vld & (i == ibuf_tag);
-			assign buf_byteen_in[i * 4+:4] = (ibuf_drainvec_vld[i] ? ibuf_byteen_out[3:0] : ((ibuf_byp & ldst_dual_r) & (i == WrPtr1_r) ? ldst_byteen_hi_r[3:0] : ldst_byteen_lo_r[3:0]));
-			assign buf_addr_in[i * 32+:32] = (ibuf_drainvec_vld[i] ? ibuf_addr[31:0] : ((ibuf_byp & ldst_dual_r) & (i == WrPtr1_r) ? end_addr_r[31:0] : lsu_addr_r[31:0]));
-			assign buf_dual_in[i] = (ibuf_drainvec_vld[i] ? ibuf_dual : ldst_dual_r);
-			assign buf_samedw_in[i] = (ibuf_drainvec_vld[i] ? ibuf_samedw : ldst_samedw_r);
-			assign buf_nomerge_in[i] = (ibuf_drainvec_vld[i] ? ibuf_nomerge | ibuf_force_drain : no_dword_merge_r);
-			assign buf_dualhi_in[i] = (ibuf_drainvec_vld[i] ? ibuf_dual : (ibuf_byp & ldst_dual_r) & (i == WrPtr1_r));
-			assign buf_dualtag_in[i * DEPTH_LOG2+:DEPTH_LOG2] = (ibuf_drainvec_vld[i] ? ibuf_dualtag : ((ibuf_byp & ldst_dual_r) & (i == WrPtr1_r) ? WrPtr0_r : WrPtr1_r));
-			assign buf_sideeffect_in[i] = (ibuf_drainvec_vld[i] ? ibuf_sideeffect : is_sideeffects_r);
-			assign buf_unsign_in[i] = (ibuf_drainvec_vld[i] ? ibuf_unsign : lsu_pkt_r[5]);
-			assign buf_sz_in[i * 2+:2] = (ibuf_drainvec_vld[i] ? ibuf_sz : {lsu_pkt_r[9], lsu_pkt_r[10]});
-			assign buf_write_in[i] = (ibuf_drainvec_vld[i] ? ibuf_write : lsu_pkt_r[6]);
-			function automatic [DEPTH_LOG2 - 1:0] sv2v_cast_63A9F;
-				input reg [DEPTH_LOG2 - 1:0] inp;
-				sv2v_cast_63A9F = inp;
-			endfunction
-			function automatic signed [pt[181-:8] - 1:0] sv2v_cast_72B45_signed;
-				input reg signed [pt[181-:8] - 1:0] inp;
-				sv2v_cast_72B45_signed = inp;
-			endfunction
-			function automatic [pt[181-:8] - 1:0] sv2v_cast_72B45;
-				input reg [pt[181-:8] - 1:0] inp;
-				sv2v_cast_72B45 = inp;
-			endfunction
-			function automatic signed [DEPTH_LOG2 - 1:0] sv2v_cast_63A9F_signed;
-				input reg signed [DEPTH_LOG2 - 1:0] inp;
-				sv2v_cast_63A9F_signed = inp;
-			endfunction
-			always @(*) begin
-				buf_nxtstate[i * 3+:3] = IDLE;
-				buf_state_en[i] = 1'b0;
-				buf_resp_state_bus_en[i] = 1'b0;
-				buf_state_bus_en[i] = 1'b0;
-				buf_wr_en[i] = 1'b0;
-				buf_data_in[i * 32+:32] = {32 {1'sb0}};
-				buf_data_en[i] = 1'b0;
-				buf_error_en[i] = 1'b0;
-				buf_rst[i] = dec_tlu_force_halt;
-				buf_ldfwd_en[i] = dec_tlu_force_halt;
-				buf_ldfwd_in[i] = 1'b0;
-				buf_ldfwdtag_in[i * DEPTH_LOG2+:DEPTH_LOG2] = {DEPTH_LOG2 {1'sb0}};
-				case (buf_state[i * 3+:3])
-					IDLE: begin
-						buf_nxtstate[i * 3+:3] = (lsu_bus_clk_en ? CMD : WAIT);
-						buf_state_en[i] = ((lsu_busreq_r & lsu_commit_r) & ((((ibuf_byp | ldst_dual_r) & ~ibuf_merge_en) & (i == WrPtr0_r)) | ((ibuf_byp & ldst_dual_r) & (i == WrPtr1_r)))) | (ibuf_drain_vld & (i == ibuf_tag));
-						buf_wr_en[i] = buf_state_en[i];
-						buf_data_en[i] = buf_state_en[i];
-						buf_data_in[i * 32+:32] = (ibuf_drain_vld & (i == ibuf_tag) ? ibuf_data_out[31:0] : store_data_lo_r[31:0]);
-						buf_cmd_state_bus_en[i] = 1'b0;
-					end
-					WAIT: begin
-						buf_nxtstate[i * 3+:3] = (dec_tlu_force_halt ? IDLE : CMD);
-						buf_state_en[i] = lsu_bus_clk_en | dec_tlu_force_halt;
-						buf_cmd_state_bus_en[i] = 1'b0;
-					end
-					CMD: begin
-						buf_nxtstate[i * 3+:3] = (dec_tlu_force_halt ? IDLE : ((obuf_nosend & bus_rsp_read) & (bus_rsp_read_tag == obuf_rdrsp_tag) ? DONE_WAIT : RESP));
-						buf_cmd_state_bus_en[i] = (((obuf_tag0 == i) | (obuf_merge & (obuf_tag1 == i))) & obuf_valid) & obuf_wr_enQ;
-						buf_state_bus_en[i] = buf_cmd_state_bus_en[i];
-						buf_state_en[i] = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-						buf_ldfwd_in[i] = 1'b1;
-						buf_ldfwd_en[i] = ((buf_state_en[i] & ~buf_write[i]) & obuf_nosend) & ~dec_tlu_force_halt;
-						buf_ldfwdtag_in[i * DEPTH_LOG2+:DEPTH_LOG2] = sv2v_cast_63A9F(obuf_rdrsp_tag[pt[181-:8] - 2:0]);
-						buf_data_en[i] = ((buf_state_bus_en[i] & lsu_bus_clk_en) & obuf_nosend) & bus_rsp_read;
-						buf_error_en[i] = ((buf_state_bus_en[i] & lsu_bus_clk_en) & obuf_nosend) & bus_rsp_read_error;
-						buf_data_in[i * 32+:32] = (buf_error_en[i] ? bus_rsp_rdata[31:0] : (buf_addr[(i * 32) + 2] ? bus_rsp_rdata[63:32] : bus_rsp_rdata[31:0]));
-					end
-					RESP: begin
-						buf_nxtstate[i * 3+:3] = (dec_tlu_force_halt | (buf_write[i] & ~bus_rsp_write_error) ? IDLE : (((buf_dual[i] & ~buf_samedw[i]) & ~buf_write[i]) & (buf_state[buf_dualtag[i * DEPTH_LOG2+:DEPTH_LOG2] * 3+:3] != DONE_PARTIAL) ? DONE_PARTIAL : ((buf_ldfwd[i] | any_done_wait_state) | (((((buf_dual[i] & ~buf_samedw[i]) & ~buf_write[i]) & buf_ldfwd[buf_dualtag[i * DEPTH_LOG2+:DEPTH_LOG2]]) & (buf_state[buf_dualtag[i * DEPTH_LOG2+:DEPTH_LOG2] * 3+:3] == DONE_PARTIAL)) & any_done_wait_state) ? DONE_WAIT : DONE)));
-						buf_resp_state_bus_en[i] = (bus_rsp_write & (bus_rsp_write_tag == sv2v_cast_72B45_signed(i))) | (bus_rsp_read & (((bus_rsp_read_tag == sv2v_cast_72B45_signed(i)) | (buf_ldfwd[i] & (bus_rsp_read_tag == sv2v_cast_72B45(buf_ldfwdtag[i * DEPTH_LOG2+:DEPTH_LOG2])))) | ((((buf_dual[i] & buf_dualhi[i]) & ~buf_write[i]) & buf_samedw[i]) & (bus_rsp_read_tag == sv2v_cast_72B45(buf_dualtag[i * DEPTH_LOG2+:DEPTH_LOG2])))));
-						buf_state_bus_en[i] = buf_resp_state_bus_en[i];
-						buf_state_en[i] = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-						buf_data_en[i] = (buf_state_bus_en[i] & bus_rsp_read) & lsu_bus_clk_en;
-						buf_error_en[i] = (buf_state_bus_en[i] & lsu_bus_clk_en) & (((bus_rsp_read_error & (bus_rsp_read_tag == sv2v_cast_72B45_signed(i))) | ((bus_rsp_read_error & buf_ldfwd[i]) & (bus_rsp_read_tag == sv2v_cast_72B45(buf_ldfwdtag[i * DEPTH_LOG2+:DEPTH_LOG2])))) | (bus_rsp_write_error & (bus_rsp_write_tag == sv2v_cast_72B45_signed(i))));
-						buf_data_in[(i * 32) + 31-:32] = (buf_state_en[i] & ~buf_error_en[i] ? (buf_addr[(i * 32) + 2] ? bus_rsp_rdata[63:32] : bus_rsp_rdata[31:0]) : bus_rsp_rdata[31:0]);
-						buf_cmd_state_bus_en[i] = 1'b0;
-					end
-					DONE_PARTIAL: begin
-						buf_nxtstate[i * 3+:3] = (dec_tlu_force_halt ? IDLE : ((buf_ldfwd[i] | buf_ldfwd[buf_dualtag[i * DEPTH_LOG2+:DEPTH_LOG2]]) | any_done_wait_state ? DONE_WAIT : DONE));
-						buf_state_bus_en[i] = bus_rsp_read & ((bus_rsp_read_tag == sv2v_cast_72B45(buf_dualtag[i * DEPTH_LOG2+:DEPTH_LOG2])) | (buf_ldfwd[buf_dualtag[i * DEPTH_LOG2+:DEPTH_LOG2]] & (bus_rsp_read_tag == sv2v_cast_72B45(buf_ldfwdtag[buf_dualtag[i * DEPTH_LOG2+:DEPTH_LOG2] * DEPTH_LOG2+:DEPTH_LOG2]))));
-						buf_state_en[i] = (buf_state_bus_en[i] & lsu_bus_clk_en) | dec_tlu_force_halt;
-						buf_cmd_state_bus_en[i] = 1'b0;
-					end
-					DONE_WAIT: begin
-						buf_nxtstate[i * 3+:3] = (dec_tlu_force_halt ? IDLE : DONE);
-						buf_state_en[i] = ((RspPtr == sv2v_cast_63A9F_signed(i)) | (buf_dual[i] & (buf_dualtag[i * DEPTH_LOG2+:DEPTH_LOG2] == RspPtr))) | dec_tlu_force_halt;
-						buf_cmd_state_bus_en[i] = 1'b0;
-					end
-					DONE: begin
-						buf_nxtstate[i * 3+:3] = IDLE;
-						buf_rst[i] = 1'b1;
-						buf_state_en[i] = 1'b1;
-						buf_ldfwd_in[i] = 1'b0;
-						buf_ldfwd_en[i] = buf_state_en[i];
-						buf_cmd_state_bus_en[i] = 1'b0;
-					end
-					default: begin
-						buf_nxtstate[i * 3+:3] = IDLE;
-						buf_state_en[i] = 1'b0;
-						buf_resp_state_bus_en[i] = 1'b0;
-						buf_state_bus_en[i] = 1'b0;
-						buf_wr_en[i] = 1'b0;
-						buf_data_in[i * 32+:32] = {32 {1'sb0}};
-						buf_data_en[i] = 1'b0;
-						buf_error_en[i] = 1'b0;
-						buf_rst[i] = 1'b0;
-						buf_cmd_state_bus_en[i] = 1'b0;
-					end
-				endcase
-			end
-			rvdffs #(.WIDTH(3)) buf_state_ff(
-				.din(buf_nxtstate[i * 3+:3]),
-				.dout({buf_state[i * 3+:3]}),
-				.en(buf_state_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdff #(.WIDTH(DEPTH)) buf_ageff(
-				.din(buf_age_in[i * DEPTH+:DEPTH]),
-				.dout(buf_ageQ[i * DEPTH+:DEPTH]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdff #(.WIDTH(DEPTH)) buf_rspageff(
-				.din(buf_rspage_in[i * DEPTH+:DEPTH]),
-				.dout(buf_rspageQ[i * DEPTH+:DEPTH]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(DEPTH_LOG2)) buf_dualtagff(
-				.din(buf_dualtag_in[i * DEPTH_LOG2+:DEPTH_LOG2]),
-				.dout(buf_dualtag[i * DEPTH_LOG2+:DEPTH_LOG2]),
-				.en(buf_wr_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) buf_dualff(
-				.din(buf_dual_in[i]),
-				.dout(buf_dual[i]),
-				.en(buf_wr_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) buf_samedwff(
-				.din(buf_samedw_in[i]),
-				.dout(buf_samedw[i]),
-				.en(buf_wr_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) buf_nomergeff(
-				.din(buf_nomerge_in[i]),
-				.dout(buf_nomerge[i]),
-				.en(buf_wr_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) buf_dualhiff(
-				.din(buf_dualhi_in[i]),
-				.dout(buf_dualhi[i]),
-				.en(buf_wr_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) buf_ldfwdff(
-				.din(buf_ldfwd_in[i]),
-				.dout(buf_ldfwd[i]),
-				.en(buf_ldfwd_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(DEPTH_LOG2)) buf_ldfwdtagff(
-				.din(buf_ldfwdtag_in[i * DEPTH_LOG2+:DEPTH_LOG2]),
-				.dout(buf_ldfwdtag[i * DEPTH_LOG2+:DEPTH_LOG2]),
-				.en(buf_ldfwd_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) buf_sideeffectff(
-				.din(buf_sideeffect_in[i]),
-				.dout(buf_sideeffect[i]),
-				.en(buf_wr_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) buf_unsignff(
-				.din(buf_unsign_in[i]),
-				.dout(buf_unsign[i]),
-				.en(buf_wr_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(1)) buf_writeff(
-				.din(buf_write_in[i]),
-				.dout(buf_write[i]),
-				.en(buf_wr_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffs #(.WIDTH(2)) buf_szff(
-				.din(buf_sz_in[i * 2+:2]),
-				.dout(buf_sz[i * 2+:2]),
-				.en(buf_wr_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffe #(.WIDTH(32)) buf_addrff(
-				.din(buf_addr_in[(i * 32) + 31-:32]),
-				.dout(buf_addr[i * 32+:32]),
-				.en(buf_wr_en[i]),
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode)
-			);
-			rvdffs #(.WIDTH(4)) buf_byteenff(
-				.din(buf_byteen_in[(i * 4) + 3-:4]),
-				.dout(buf_byteen[i * 4+:4]),
-				.en(buf_wr_en[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-			rvdffe #(.WIDTH(32)) buf_dataff(
-				.din(buf_data_in[(i * 32) + 31-:32]),
-				.dout(buf_data[i * 32+:32]),
-				.en(buf_data_en[i]),
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode)
-			);
-			rvdffsc #(.WIDTH(1)) buf_errorff(
-				.din(1'b1),
-				.dout(buf_error[i]),
-				.en(buf_error_en[i]),
-				.clear(buf_rst[i]),
-				.clk(lsu_bus_buf_c1_clk),
-				.rst_l(rst_l)
-			);
-		end
-	endgenerate
-	always @(*) begin
-		buf_numvld_any[3:0] = (({1'b0, lsu_busreq_m} << ldst_dual_m) + ({1'b0, lsu_busreq_r} << ldst_dual_r)) + ibuf_valid;
-		buf_numvld_wrcmd_any[3:0] = 4'b0000;
-		buf_numvld_cmd_any[3:0] = 4'b0000;
-		buf_numvld_pend_any[3:0] = 4'b0000;
-		any_done_wait_state = 1'b0;
-		begin : sv2v_autoblock_53
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				begin
-					buf_numvld_any[3:0] = buf_numvld_any[3:0] + {3'b000, buf_state[i * 3+:3] != IDLE};
-					buf_numvld_wrcmd_any[3:0] = buf_numvld_wrcmd_any[3:0] + {3'b000, (buf_write[i] & (buf_state[i * 3+:3] == CMD)) & ~buf_cmd_state_bus_en[i]};
-					buf_numvld_cmd_any[3:0] = buf_numvld_cmd_any[3:0] + {3'b000, (buf_state[i * 3+:3] == CMD) & ~buf_cmd_state_bus_en[i]};
-					buf_numvld_pend_any[3:0] = buf_numvld_pend_any[3:0] + {3'b000, (buf_state[i * 3+:3] == WAIT) | ((buf_state[i * 3+:3] == CMD) & ~buf_cmd_state_bus_en[i])};
-					any_done_wait_state = any_done_wait_state | (buf_state[i * 3+:3] == DONE_WAIT);
-				end
-		end
-	end
-	assign lsu_bus_buffer_pend_any = buf_numvld_pend_any != 0;
-	assign lsu_bus_buffer_full_any = (ldst_dual_d & dec_lsu_valid_raw_d ? buf_numvld_any[3:0] >= (DEPTH - 1) : buf_numvld_any[3:0] == DEPTH);
-	assign lsu_bus_buffer_empty_any = (~(|buf_state[3 * ((DEPTH - 1) - (DEPTH - 1))+:3 * DEPTH]) & ~ibuf_valid) & ~obuf_valid;
-	assign lsu_nonblock_load_valid_m = (((lsu_busreq_m & lsu_pkt_m[0]) & lsu_pkt_m[7]) & ~flush_m_up) & ~ld_full_hit_m;
-	assign lsu_nonblock_load_tag_m[DEPTH_LOG2 - 1:0] = WrPtr0_m[DEPTH_LOG2 - 1:0];
-	assign lsu_nonblock_load_inv_r = lsu_nonblock_load_valid_r & ~lsu_commit_r;
-	assign lsu_nonblock_load_inv_tag_r[DEPTH_LOG2 - 1:0] = WrPtr0_r[DEPTH_LOG2 - 1:0];
-	always @(*) begin
-		lsu_nonblock_load_data_ready = 1'b0;
-		lsu_nonblock_load_data_error = 1'b0;
-		lsu_nonblock_load_data_tag[DEPTH_LOG2 - 1:0] = {DEPTH_LOG2 {1'sb0}};
-		lsu_nonblock_load_data_lo[31:0] = {32 {1'sb0}};
-		lsu_nonblock_load_data_hi[31:0] = {32 {1'sb0}};
-		begin : sv2v_autoblock_54
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				begin
-					lsu_nonblock_load_data_ready = lsu_nonblock_load_data_ready | ((buf_state[i * 3+:3] == DONE) & ~buf_write[i]);
-					lsu_nonblock_load_data_error = lsu_nonblock_load_data_error | (((buf_state[i * 3+:3] == DONE) & buf_error[i]) & ~buf_write[i]);
-					lsu_nonblock_load_data_tag[DEPTH_LOG2 - 1:0] = lsu_nonblock_load_data_tag[DEPTH_LOG2 - 1:0] | (sv2v_cast_63A9F_signed(i) & {DEPTH_LOG2 {((buf_state[i * 3+:3] == DONE) & ~buf_write[i]) & (~buf_dual[i] | ~buf_dualhi[i])}});
-					lsu_nonblock_load_data_lo[31:0] = lsu_nonblock_load_data_lo[31:0] | (buf_data[(i * 32) + 31-:32] & {32 {((buf_state[i * 3+:3] == DONE) & ~buf_write[i]) & (~buf_dual[i] | ~buf_dualhi[i])}});
-					lsu_nonblock_load_data_hi[31:0] = lsu_nonblock_load_data_hi[31:0] | (buf_data[(i * 32) + 31-:32] & {32 {((buf_state[i * 3+:3] == DONE) & ~buf_write[i]) & (buf_dual[i] & buf_dualhi[i])}});
-				end
-		end
-	end
-	assign lsu_nonblock_addr_offset[1:0] = buf_addr[(lsu_nonblock_load_data_tag * 32) + 1-:2];
-	assign lsu_nonblock_sz[1:0] = buf_sz[(lsu_nonblock_load_data_tag * 2) + 1-:2];
-	assign lsu_nonblock_unsign = buf_unsign[lsu_nonblock_load_data_tag];
-	function automatic [31:0] sv2v_cast_32;
-		input reg [31:0] inp;
-		sv2v_cast_32 = inp;
-	endfunction
-	assign lsu_nonblock_data_unalgn[31:0] = sv2v_cast_32({lsu_nonblock_load_data_hi[31:0], lsu_nonblock_load_data_lo[31:0]} >> (8 * lsu_nonblock_addr_offset[1:0]));
-	assign lsu_nonblock_load_data_valid = lsu_nonblock_load_data_ready & ~lsu_nonblock_load_data_error;
-	assign lsu_nonblock_load_data[31:0] = (((({32 {lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b00)}} & {24'b000000000000000000000000, lsu_nonblock_data_unalgn[7:0]}) | ({32 {lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b01)}} & {16'b0000000000000000, lsu_nonblock_data_unalgn[15:0]})) | ({32 {~lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b00)}} & {{24 {lsu_nonblock_data_unalgn[7]}}, lsu_nonblock_data_unalgn[7:0]})) | ({32 {~lsu_nonblock_unsign & (lsu_nonblock_sz[1:0] == 2'b01)}} & {{16 {lsu_nonblock_data_unalgn[15]}}, lsu_nonblock_data_unalgn[15:0]})) | ({32 {lsu_nonblock_sz[1:0] == 2'b10}} & lsu_nonblock_data_unalgn[31:0]);
-	always @(*) begin
-		bus_sideeffect_pend = (obuf_valid & obuf_sideeffect) & dec_tlu_sideeffect_posted_disable;
-		begin : sv2v_autoblock_55
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				bus_sideeffect_pend = bus_sideeffect_pend | (((buf_state[i * 3+:3] == RESP) & buf_sideeffect[i]) & dec_tlu_sideeffect_posted_disable);
-		end
-	end
-	function automatic signed [pt[181-:8] - 1:0] sv2v_cast_72B45_signed;
-		input reg signed [pt[181-:8] - 1:0] inp;
-		sv2v_cast_72B45_signed = inp;
-	endfunction
-	always @(*) begin
-		bus_addr_match_pending = 1'b0;
-		begin : sv2v_autoblock_56
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				bus_addr_match_pending = bus_addr_match_pending | (((obuf_valid & (obuf_addr[31:3] == buf_addr[(i * 32) + 31-:29])) & (buf_state[i * 3+:3] == RESP)) & ~((obuf_tag0 == sv2v_cast_72B45_signed(i)) | (obuf_merge & (obuf_tag1 == sv2v_cast_72B45_signed(i)))));
-		end
-	end
-	assign bus_cmd_ready = (obuf_write ? (obuf_cmd_done | obuf_data_done ? (obuf_cmd_done ? lsu_axi_wready : lsu_axi_awready) : lsu_axi_awready & lsu_axi_wready) : lsu_axi_arready);
-	assign bus_wcmd_sent = lsu_axi_awvalid & lsu_axi_awready;
-	assign bus_wdata_sent = lsu_axi_wvalid & lsu_axi_wready;
-	assign bus_cmd_sent = ((obuf_cmd_done | bus_wcmd_sent) & (obuf_data_done | bus_wdata_sent)) | (lsu_axi_arvalid & lsu_axi_arready);
-	assign bus_rsp_read = lsu_axi_rvalid & lsu_axi_rready;
-	assign bus_rsp_write = lsu_axi_bvalid & lsu_axi_bready;
-	assign bus_rsp_read_tag[pt[181-:8] - 1:0] = lsu_axi_rid[pt[181-:8] - 1:0];
-	assign bus_rsp_write_tag[pt[181-:8] - 1:0] = lsu_axi_bid[pt[181-:8] - 1:0];
-	assign bus_rsp_write_error = bus_rsp_write & (lsu_axi_bresp[1:0] != 2'b00);
-	assign bus_rsp_read_error = bus_rsp_read & (lsu_axi_rresp[1:0] != 2'b00);
-	assign bus_rsp_rdata[63:0] = lsu_axi_rdata[63:0];
-	assign lsu_axi_awvalid = ((obuf_valid & obuf_write) & ~obuf_cmd_done) & ~bus_addr_match_pending;
-	assign lsu_axi_awid[pt[181-:8] - 1:0] = sv2v_cast_72B45(obuf_tag0);
-	assign lsu_axi_awaddr[31:0] = (obuf_sideeffect ? obuf_addr[31:0] : {obuf_addr[31:3], 3'b000});
-	assign lsu_axi_awsize[2:0] = (obuf_sideeffect ? {1'b0, obuf_sz[1:0]} : 3'b011);
-	assign lsu_axi_awprot[2:0] = 3'b001;
-	assign lsu_axi_awcache[3:0] = (obuf_sideeffect ? 4'b0000 : 4'b1111);
-	assign lsu_axi_awregion[3:0] = obuf_addr[31:28];
-	assign lsu_axi_awlen[7:0] = {8 {1'sb0}};
-	assign lsu_axi_awburst[1:0] = 2'b01;
-	assign lsu_axi_awqos[3:0] = {4 {1'sb0}};
-	assign lsu_axi_awlock = 1'b0;
-	assign lsu_axi_wvalid = ((obuf_valid & obuf_write) & ~obuf_data_done) & ~bus_addr_match_pending;
-	assign lsu_axi_wstrb[7:0] = obuf_byteen[7:0] & {8 {obuf_write}};
-	assign lsu_axi_wdata[63:0] = obuf_data[63:0];
-	assign lsu_axi_wlast = 1'b1;
-	assign lsu_axi_arvalid = ((obuf_valid & ~obuf_write) & ~obuf_nosend) & ~bus_addr_match_pending;
-	assign lsu_axi_arid[pt[181-:8] - 1:0] = sv2v_cast_72B45(obuf_tag0);
-	assign lsu_axi_araddr[31:0] = (obuf_sideeffect ? obuf_addr[31:0] : {obuf_addr[31:3], 3'b000});
-	assign lsu_axi_arsize[2:0] = (obuf_sideeffect ? {1'b0, obuf_sz[1:0]} : 3'b011);
-	assign lsu_axi_arprot[2:0] = 3'b001;
-	assign lsu_axi_arcache[3:0] = (obuf_sideeffect ? 4'b0000 : 4'b1111);
-	assign lsu_axi_arregion[3:0] = obuf_addr[31:28];
-	assign lsu_axi_arlen[7:0] = {8 {1'sb0}};
-	assign lsu_axi_arburst[1:0] = 2'b01;
-	assign lsu_axi_arqos[3:0] = {4 {1'sb0}};
-	assign lsu_axi_arlock = 1'b0;
-	assign lsu_axi_bready = 1;
-	assign lsu_axi_rready = 1;
-	always @(*) begin
-		lsu_imprecise_error_store_any = 1'b0;
-		lsu_imprecise_error_store_tag = {pt[181-:8] {1'sb0}};
-		begin : sv2v_autoblock_57
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				begin
-					lsu_imprecise_error_store_any = lsu_imprecise_error_store_any | (((lsu_bus_clk_en_q & (buf_state[i * 3+:3] == DONE)) & buf_error[i]) & buf_write[i]);
-					lsu_imprecise_error_store_tag = lsu_imprecise_error_store_tag | (sv2v_cast_63A9F_signed(i) & {DEPTH_LOG2 {((buf_state[i * 3+:3] == DONE) & buf_error[i]) & buf_write[i]}});
-				end
-		end
-	end
-	assign lsu_imprecise_error_load_any = lsu_nonblock_load_data_error & ~lsu_imprecise_error_store_any;
-	assign lsu_imprecise_error_addr_any[31:0] = (lsu_imprecise_error_store_any ? buf_addr[lsu_imprecise_error_store_tag * 32+:32] : buf_addr[lsu_nonblock_load_data_tag * 32+:32]);
-	assign lsu_pmu_bus_trxn = ((lsu_axi_awvalid & lsu_axi_awready) | (lsu_axi_wvalid & lsu_axi_wready)) | (lsu_axi_arvalid & lsu_axi_arready);
-	assign lsu_pmu_bus_misaligned = (lsu_busreq_r & ldst_dual_r) & lsu_commit_r;
-	assign lsu_pmu_bus_error = lsu_imprecise_error_load_any | lsu_imprecise_error_store_any;
-	assign lsu_pmu_bus_busy = ((lsu_axi_awvalid & ~lsu_axi_awready) | (lsu_axi_wvalid & ~lsu_axi_wready)) | (lsu_axi_arvalid & ~lsu_axi_arready);
-	rvdff_fpga #(.WIDTH(1)) lsu_axi_awvalid_ff(
-		.din(lsu_axi_awvalid),
-		.dout(lsu_axi_awvalid_q),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) lsu_axi_awready_ff(
-		.din(lsu_axi_awready),
-		.dout(lsu_axi_awready_q),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) lsu_axi_wvalid_ff(
-		.din(lsu_axi_wvalid),
-		.dout(lsu_axi_wvalid_q),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) lsu_axi_wready_ff(
-		.din(lsu_axi_wready),
-		.dout(lsu_axi_wready_q),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) lsu_axi_arvalid_ff(
-		.din(lsu_axi_arvalid),
-		.dout(lsu_axi_arvalid_q),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) lsu_axi_arready_ff(
-		.din(lsu_axi_arready),
-		.dout(lsu_axi_arready_q),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) lsu_axi_bvalid_ff(
-		.din(lsu_axi_bvalid),
-		.dout(lsu_axi_bvalid_q),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) lsu_axi_bready_ff(
-		.din(lsu_axi_bready),
-		.dout(lsu_axi_bready_q),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(2)) lsu_axi_bresp_ff(
-		.din(lsu_axi_bresp[1:0]),
-		.dout(lsu_axi_bresp_q[1:0]),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(pt[181-:8])) lsu_axi_bid_ff(
-		.din(lsu_axi_bid[pt[181-:8] - 1:0]),
-		.dout(lsu_axi_bid_q[pt[181-:8] - 1:0]),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(64)) lsu_axi_rdata_ff(
-		.din(lsu_axi_rdata[63:0]),
-		.dout(lsu_axi_rdata_q[63:0]),
-		.en((lsu_axi_rvalid | clk_override) & lsu_bus_clk_en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdff_fpga #(.WIDTH(1)) lsu_axi_rvalid_ff(
-		.din(lsu_axi_rvalid),
-		.dout(lsu_axi_rvalid_q),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(1)) lsu_axi_rready_ff(
-		.din(lsu_axi_rready),
-		.dout(lsu_axi_rready_q),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(2)) lsu_axi_rresp_ff(
-		.din(lsu_axi_rresp[1:0]),
-		.dout(lsu_axi_rresp_q[1:0]),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff_fpga #(.WIDTH(pt[181-:8])) lsu_axi_rid_ff(
-		.din(lsu_axi_rid[pt[181-:8] - 1:0]),
-		.dout(lsu_axi_rid_q[pt[181-:8] - 1:0]),
-		.clk(lsu_busm_clk),
-		.clken(lsu_busm_clken),
-		.rawclk(clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(DEPTH_LOG2)) lsu_WrPtr0_rff(
-		.din(WrPtr0_m),
-		.dout(WrPtr0_r),
-		.clk(lsu_c2_r_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(DEPTH_LOG2)) lsu_WrPtr1_rff(
-		.din(WrPtr1_m),
-		.dout(WrPtr1_r),
-		.clk(lsu_c2_r_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) lsu_busreq_rff(
-		.din((lsu_busreq_m & ~flush_r) & ~ld_full_hit_m),
-		.dout(lsu_busreq_r),
-		.clk(lsu_c2_r_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) lsu_nonblock_load_valid_rff(
-		.din(lsu_nonblock_load_valid_m),
-		.dout(lsu_nonblock_load_valid_r),
-		.clk(lsu_c2_r_clk),
-		.rst_l(rst_l)
-	);
-endmodule
-module eb1_lsu_bus_intf (
-	clk,
-	clk_override,
-	rst_l,
-	scan_mode,
-	dec_tlu_external_ldfwd_disable,
-	dec_tlu_wb_coalescing_disable,
-	dec_tlu_sideeffect_posted_disable,
-	lsu_bus_obuf_c1_clken,
-	lsu_busm_clken,
-	lsu_c1_r_clk,
-	lsu_c2_r_clk,
-	lsu_bus_ibuf_c1_clk,
-	lsu_bus_obuf_c1_clk,
-	lsu_bus_buf_c1_clk,
-	lsu_free_c2_clk,
-	active_clk,
-	lsu_busm_clk,
-	dec_lsu_valid_raw_d,
-	lsu_busreq_m,
-	lsu_pkt_m,
-	lsu_pkt_r,
-	lsu_addr_m,
-	lsu_addr_r,
-	end_addr_m,
-	end_addr_r,
-	store_data_r,
-	dec_tlu_force_halt,
-	lsu_commit_r,
-	is_sideeffects_m,
-	flush_m_up,
-	flush_r,
-	ldst_dual_d,
-	ldst_dual_m,
-	ldst_dual_r,
-	lsu_busreq_r,
-	lsu_bus_buffer_pend_any,
-	lsu_bus_buffer_full_any,
-	lsu_bus_buffer_empty_any,
-	bus_read_data_m,
-	lsu_imprecise_error_load_any,
-	lsu_imprecise_error_store_any,
-	lsu_imprecise_error_addr_any,
-	lsu_nonblock_load_valid_m,
-	lsu_nonblock_load_tag_m,
-	lsu_nonblock_load_inv_r,
-	lsu_nonblock_load_inv_tag_r,
-	lsu_nonblock_load_data_valid,
-	lsu_nonblock_load_data_error,
-	lsu_nonblock_load_data_tag,
-	lsu_nonblock_load_data,
-	lsu_pmu_bus_trxn,
-	lsu_pmu_bus_misaligned,
-	lsu_pmu_bus_error,
-	lsu_pmu_bus_busy,
-	lsu_axi_awvalid,
-	lsu_axi_awready,
-	lsu_axi_awid,
-	lsu_axi_awaddr,
-	lsu_axi_awregion,
-	lsu_axi_awlen,
-	lsu_axi_awsize,
-	lsu_axi_awburst,
-	lsu_axi_awlock,
-	lsu_axi_awcache,
-	lsu_axi_awprot,
-	lsu_axi_awqos,
-	lsu_axi_wvalid,
-	lsu_axi_wready,
-	lsu_axi_wdata,
-	lsu_axi_wstrb,
-	lsu_axi_wlast,
-	lsu_axi_bvalid,
-	lsu_axi_bready,
-	lsu_axi_bresp,
-	lsu_axi_bid,
-	lsu_axi_arvalid,
-	lsu_axi_arready,
-	lsu_axi_arid,
-	lsu_axi_araddr,
-	lsu_axi_arregion,
-	lsu_axi_arlen,
-	lsu_axi_arsize,
-	lsu_axi_arburst,
-	lsu_axi_arlock,
-	lsu_axi_arcache,
-	lsu_axi_arprot,
-	lsu_axi_arqos,
-	lsu_axi_rvalid,
-	lsu_axi_rready,
-	lsu_axi_rid,
-	lsu_axi_rdata,
-	lsu_axi_rresp,
-	lsu_bus_clk_en
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire clk_override;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire dec_tlu_external_ldfwd_disable;
-	input wire dec_tlu_wb_coalescing_disable;
-	input wire dec_tlu_sideeffect_posted_disable;
-	input wire lsu_bus_obuf_c1_clken;
-	input wire lsu_busm_clken;
-	input wire lsu_c1_r_clk;
-	input wire lsu_c2_r_clk;
-	input wire lsu_bus_ibuf_c1_clk;
-	input wire lsu_bus_obuf_c1_clk;
-	input wire lsu_bus_buf_c1_clk;
-	input wire lsu_free_c2_clk;
-	input wire active_clk;
-	input wire lsu_busm_clk;
-	input wire dec_lsu_valid_raw_d;
-	input wire lsu_busreq_m;
-	input wire [13:0] lsu_pkt_m;
-	input wire [13:0] lsu_pkt_r;
-	input wire [31:0] lsu_addr_m;
-	input wire [31:0] lsu_addr_r;
-	input wire [31:0] end_addr_m;
-	input wire [31:0] end_addr_r;
-	input wire [31:0] store_data_r;
-	input wire dec_tlu_force_halt;
-	input wire lsu_commit_r;
-	input wire is_sideeffects_m;
-	input wire flush_m_up;
-	input wire flush_r;
-	input wire ldst_dual_d;
-	input wire ldst_dual_m;
-	input wire ldst_dual_r;
-	output wire lsu_busreq_r;
-	output wire lsu_bus_buffer_pend_any;
-	output wire lsu_bus_buffer_full_any;
-	output wire lsu_bus_buffer_empty_any;
-	output wire [31:0] bus_read_data_m;
-	output wire lsu_imprecise_error_load_any;
-	output wire lsu_imprecise_error_store_any;
-	output wire [31:0] lsu_imprecise_error_addr_any;
-	output wire lsu_nonblock_load_valid_m;
-	output wire [pt[164-:7] - 1:0] lsu_nonblock_load_tag_m;
-	output wire lsu_nonblock_load_inv_r;
-	output wire [pt[164-:7] - 1:0] lsu_nonblock_load_inv_tag_r;
-	output wire lsu_nonblock_load_data_valid;
-	output wire lsu_nonblock_load_data_error;
-	output wire [pt[164-:7] - 1:0] lsu_nonblock_load_data_tag;
-	output wire [31:0] lsu_nonblock_load_data;
-	output wire lsu_pmu_bus_trxn;
-	output wire lsu_pmu_bus_misaligned;
-	output wire lsu_pmu_bus_error;
-	output wire lsu_pmu_bus_busy;
-	output wire lsu_axi_awvalid;
-	input wire lsu_axi_awready;
-	output wire [pt[181-:8] - 1:0] lsu_axi_awid;
-	output wire [31:0] lsu_axi_awaddr;
-	output wire [3:0] lsu_axi_awregion;
-	output wire [7:0] lsu_axi_awlen;
-	output wire [2:0] lsu_axi_awsize;
-	output wire [1:0] lsu_axi_awburst;
-	output wire lsu_axi_awlock;
-	output wire [3:0] lsu_axi_awcache;
-	output wire [2:0] lsu_axi_awprot;
-	output wire [3:0] lsu_axi_awqos;
-	output wire lsu_axi_wvalid;
-	input wire lsu_axi_wready;
-	output wire [63:0] lsu_axi_wdata;
-	output wire [7:0] lsu_axi_wstrb;
-	output wire lsu_axi_wlast;
-	input wire lsu_axi_bvalid;
-	output wire lsu_axi_bready;
-	input wire [1:0] lsu_axi_bresp;
-	input wire [pt[181-:8] - 1:0] lsu_axi_bid;
-	output wire lsu_axi_arvalid;
-	input wire lsu_axi_arready;
-	output wire [pt[181-:8] - 1:0] lsu_axi_arid;
-	output wire [31:0] lsu_axi_araddr;
-	output wire [3:0] lsu_axi_arregion;
-	output wire [7:0] lsu_axi_arlen;
-	output wire [2:0] lsu_axi_arsize;
-	output wire [1:0] lsu_axi_arburst;
-	output wire lsu_axi_arlock;
-	output wire [3:0] lsu_axi_arcache;
-	output wire [2:0] lsu_axi_arprot;
-	output wire [3:0] lsu_axi_arqos;
-	input wire lsu_axi_rvalid;
-	output wire lsu_axi_rready;
-	input wire [pt[181-:8] - 1:0] lsu_axi_rid;
-	input wire [63:0] lsu_axi_rdata;
-	input wire [1:0] lsu_axi_rresp;
-	input wire lsu_bus_clk_en;
-	wire lsu_bus_clk_en_q;
-	wire [3:0] ldst_byteen_m;
-	wire [3:0] ldst_byteen_r;
-	wire [7:0] ldst_byteen_ext_m;
-	wire [7:0] ldst_byteen_ext_r;
-	wire [3:0] ldst_byteen_hi_m;
-	wire [3:0] ldst_byteen_hi_r;
-	wire [3:0] ldst_byteen_lo_m;
-	wire [3:0] ldst_byteen_lo_r;
-	wire is_sideeffects_r;
-	wire [63:0] store_data_ext_r;
-	wire [31:0] store_data_hi_r;
-	wire [31:0] store_data_lo_r;
-	wire addr_match_dw_lo_r_m;
-	wire addr_match_word_lo_r_m;
-	wire no_word_merge_r;
-	wire no_dword_merge_r;
-	wire ld_addr_rhit_lo_lo;
-	wire ld_addr_rhit_hi_lo;
-	wire ld_addr_rhit_lo_hi;
-	wire ld_addr_rhit_hi_hi;
-	wire [3:0] ld_byte_rhit_lo_lo;
-	wire [3:0] ld_byte_rhit_hi_lo;
-	wire [3:0] ld_byte_rhit_lo_hi;
-	wire [3:0] ld_byte_rhit_hi_hi;
-	wire [3:0] ld_byte_hit_lo;
-	wire [3:0] ld_byte_rhit_lo;
-	wire [3:0] ld_byte_hit_hi;
-	wire [3:0] ld_byte_rhit_hi;
-	wire [31:0] ld_fwddata_rpipe_lo;
-	wire [31:0] ld_fwddata_rpipe_hi;
-	wire [3:0] ld_byte_hit_buf_lo;
-	wire [3:0] ld_byte_hit_buf_hi;
-	wire [31:0] ld_fwddata_buf_lo;
-	wire [31:0] ld_fwddata_buf_hi;
-	wire [63:0] ld_fwddata_lo;
-	wire [63:0] ld_fwddata_hi;
-	wire [63:0] ld_fwddata_m;
-	reg ld_full_hit_hi_m;
-	reg ld_full_hit_lo_m;
-	wire ld_full_hit_m;
-	assign ldst_byteen_m[3:0] = (({4 {lsu_pkt_m[11]}} & 4'b0001) | ({4 {lsu_pkt_m[10]}} & 4'b0011)) | ({4 {lsu_pkt_m[9]}} & 4'b1111);
-	eb1_lsu_bus_buffer #(.pt(pt)) bus_buffer(
-		.clk(clk),
-		.clk_override(clk_override),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.dec_tlu_external_ldfwd_disable(dec_tlu_external_ldfwd_disable),
-		.dec_tlu_wb_coalescing_disable(dec_tlu_wb_coalescing_disable),
-		.dec_tlu_sideeffect_posted_disable(dec_tlu_sideeffect_posted_disable),
-		.dec_tlu_force_halt(dec_tlu_force_halt),
-		.lsu_bus_obuf_c1_clken(lsu_bus_obuf_c1_clken),
-		.lsu_busm_clken(lsu_busm_clken),
-		.lsu_c2_r_clk(lsu_c2_r_clk),
-		.lsu_bus_ibuf_c1_clk(lsu_bus_ibuf_c1_clk),
-		.lsu_bus_obuf_c1_clk(lsu_bus_obuf_c1_clk),
-		.lsu_bus_buf_c1_clk(lsu_bus_buf_c1_clk),
-		.lsu_free_c2_clk(lsu_free_c2_clk),
-		.lsu_busm_clk(lsu_busm_clk),
-		.dec_lsu_valid_raw_d(dec_lsu_valid_raw_d),
-		.lsu_pkt_m(lsu_pkt_m),
-		.lsu_pkt_r(lsu_pkt_r),
-		.lsu_addr_m(lsu_addr_m),
-		.end_addr_m(end_addr_m),
-		.lsu_addr_r(lsu_addr_r),
-		.end_addr_r(end_addr_r),
-		.store_data_r(store_data_r),
-		.no_word_merge_r(no_word_merge_r),
-		.no_dword_merge_r(no_dword_merge_r),
-		.lsu_busreq_m(lsu_busreq_m),
-		.lsu_busreq_r(lsu_busreq_r),
-		.ld_full_hit_m(ld_full_hit_m),
-		.flush_m_up(flush_m_up),
-		.flush_r(flush_r),
-		.lsu_commit_r(lsu_commit_r),
-		.is_sideeffects_r(is_sideeffects_r),
-		.ldst_dual_d(ldst_dual_d),
-		.ldst_dual_m(ldst_dual_m),
-		.ldst_dual_r(ldst_dual_r),
-		.ldst_byteen_ext_m(ldst_byteen_ext_m),
-		.lsu_bus_buffer_pend_any(lsu_bus_buffer_pend_any),
-		.lsu_bus_buffer_full_any(lsu_bus_buffer_full_any),
-		.lsu_bus_buffer_empty_any(lsu_bus_buffer_empty_any),
-		.ld_byte_hit_buf_lo(ld_byte_hit_buf_lo),
-		.ld_byte_hit_buf_hi(ld_byte_hit_buf_hi),
-		.ld_fwddata_buf_lo(ld_fwddata_buf_lo),
-		.ld_fwddata_buf_hi(ld_fwddata_buf_hi),
-		.lsu_imprecise_error_load_any(lsu_imprecise_error_load_any),
-		.lsu_imprecise_error_store_any(lsu_imprecise_error_store_any),
-		.lsu_imprecise_error_addr_any(lsu_imprecise_error_addr_any),
-		.lsu_nonblock_load_valid_m(lsu_nonblock_load_valid_m),
-		.lsu_nonblock_load_tag_m(lsu_nonblock_load_tag_m),
-		.lsu_nonblock_load_inv_r(lsu_nonblock_load_inv_r),
-		.lsu_nonblock_load_inv_tag_r(lsu_nonblock_load_inv_tag_r),
-		.lsu_nonblock_load_data_valid(lsu_nonblock_load_data_valid),
-		.lsu_nonblock_load_data_error(lsu_nonblock_load_data_error),
-		.lsu_nonblock_load_data_tag(lsu_nonblock_load_data_tag),
-		.lsu_nonblock_load_data(lsu_nonblock_load_data),
-		.lsu_pmu_bus_trxn(lsu_pmu_bus_trxn),
-		.lsu_pmu_bus_misaligned(lsu_pmu_bus_misaligned),
-		.lsu_pmu_bus_error(lsu_pmu_bus_error),
-		.lsu_pmu_bus_busy(lsu_pmu_bus_busy),
-		.lsu_axi_awvalid(lsu_axi_awvalid),
-		.lsu_axi_awready(lsu_axi_awready),
-		.lsu_axi_awid(lsu_axi_awid),
-		.lsu_axi_awaddr(lsu_axi_awaddr),
-		.lsu_axi_awregion(lsu_axi_awregion),
-		.lsu_axi_awlen(lsu_axi_awlen),
-		.lsu_axi_awsize(lsu_axi_awsize),
-		.lsu_axi_awburst(lsu_axi_awburst),
-		.lsu_axi_awlock(lsu_axi_awlock),
-		.lsu_axi_awcache(lsu_axi_awcache),
-		.lsu_axi_awprot(lsu_axi_awprot),
-		.lsu_axi_awqos(lsu_axi_awqos),
-		.lsu_axi_wvalid(lsu_axi_wvalid),
-		.lsu_axi_wready(lsu_axi_wready),
-		.lsu_axi_wdata(lsu_axi_wdata),
-		.lsu_axi_wstrb(lsu_axi_wstrb),
-		.lsu_axi_wlast(lsu_axi_wlast),
-		.lsu_axi_bvalid(lsu_axi_bvalid),
-		.lsu_axi_bready(lsu_axi_bready),
-		.lsu_axi_bresp(lsu_axi_bresp),
-		.lsu_axi_bid(lsu_axi_bid),
-		.lsu_axi_arvalid(lsu_axi_arvalid),
-		.lsu_axi_arready(lsu_axi_arready),
-		.lsu_axi_arid(lsu_axi_arid),
-		.lsu_axi_araddr(lsu_axi_araddr),
-		.lsu_axi_arregion(lsu_axi_arregion),
-		.lsu_axi_arlen(lsu_axi_arlen),
-		.lsu_axi_arsize(lsu_axi_arsize),
-		.lsu_axi_arburst(lsu_axi_arburst),
-		.lsu_axi_arlock(lsu_axi_arlock),
-		.lsu_axi_arcache(lsu_axi_arcache),
-		.lsu_axi_arprot(lsu_axi_arprot),
-		.lsu_axi_arqos(lsu_axi_arqos),
-		.lsu_axi_rvalid(lsu_axi_rvalid),
-		.lsu_axi_rready(lsu_axi_rready),
-		.lsu_axi_rid(lsu_axi_rid),
-		.lsu_axi_rdata(lsu_axi_rdata),
-		.lsu_axi_rresp(lsu_axi_rresp),
-		.lsu_bus_clk_en(lsu_bus_clk_en),
-		.lsu_bus_clk_en_q(lsu_bus_clk_en_q)
-	);
-	assign addr_match_dw_lo_r_m = lsu_addr_r[31:3] == lsu_addr_m[31:3];
-	assign addr_match_word_lo_r_m = addr_match_dw_lo_r_m & ~(lsu_addr_r[2] ^ lsu_addr_m[2]);
-	assign no_word_merge_r = ((lsu_busreq_r & ~ldst_dual_r) & lsu_busreq_m) & (lsu_pkt_m[7] | ~addr_match_word_lo_r_m);
-	assign no_dword_merge_r = ((lsu_busreq_r & ~ldst_dual_r) & lsu_busreq_m) & (lsu_pkt_m[7] | ~addr_match_dw_lo_r_m);
-	assign ldst_byteen_ext_m[7:0] = {4'b0000, ldst_byteen_m[3:0]} << lsu_addr_m[1:0];
-	assign ldst_byteen_ext_r[7:0] = {4'b0000, ldst_byteen_r[3:0]} << lsu_addr_r[1:0];
-	assign store_data_ext_r[63:0] = {32'b00000000000000000000000000000000, store_data_r[31:0]} << {lsu_addr_r[1:0], 3'b000};
-	assign ldst_byteen_hi_m[3:0] = ldst_byteen_ext_m[7:4];
-	assign ldst_byteen_lo_m[3:0] = ldst_byteen_ext_m[3:0];
-	assign ldst_byteen_hi_r[3:0] = ldst_byteen_ext_r[7:4];
-	assign ldst_byteen_lo_r[3:0] = ldst_byteen_ext_r[3:0];
-	assign store_data_hi_r[31:0] = store_data_ext_r[63:32];
-	assign store_data_lo_r[31:0] = store_data_ext_r[31:0];
-	assign ld_addr_rhit_lo_lo = (((lsu_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r[0]) & lsu_pkt_r[6]) & lsu_busreq_m;
-	assign ld_addr_rhit_lo_hi = (((end_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r[0]) & lsu_pkt_r[6]) & lsu_busreq_m;
-	assign ld_addr_rhit_hi_lo = (((lsu_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r[0]) & lsu_pkt_r[6]) & lsu_busreq_m;
-	assign ld_addr_rhit_hi_hi = (((end_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r[0]) & lsu_pkt_r[6]) & lsu_busreq_m;
-	generate
-		genvar i;
-		for (i = 0; i < 4; i = i + 1) begin : GenBusBufFwd
-			assign ld_byte_rhit_lo_lo[i] = (ld_addr_rhit_lo_lo & ldst_byteen_lo_r[i]) & ldst_byteen_lo_m[i];
-			assign ld_byte_rhit_lo_hi[i] = (ld_addr_rhit_lo_hi & ldst_byteen_lo_r[i]) & ldst_byteen_hi_m[i];
-			assign ld_byte_rhit_hi_lo[i] = (ld_addr_rhit_hi_lo & ldst_byteen_hi_r[i]) & ldst_byteen_lo_m[i];
-			assign ld_byte_rhit_hi_hi[i] = (ld_addr_rhit_hi_hi & ldst_byteen_hi_r[i]) & ldst_byteen_hi_m[i];
-			assign ld_byte_hit_lo[i] = (ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i]) | ld_byte_hit_buf_lo[i];
-			assign ld_byte_hit_hi[i] = (ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i]) | ld_byte_hit_buf_hi[i];
-			assign ld_byte_rhit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-			assign ld_byte_rhit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-			assign ld_fwddata_rpipe_lo[(8 * i) + 7:8 * i] = ({8 {ld_byte_rhit_lo_lo[i]}} & store_data_lo_r[(8 * i) + 7:8 * i]) | ({8 {ld_byte_rhit_hi_lo[i]}} & store_data_hi_r[(8 * i) + 7:8 * i]);
-			assign ld_fwddata_rpipe_hi[(8 * i) + 7:8 * i] = ({8 {ld_byte_rhit_lo_hi[i]}} & store_data_lo_r[(8 * i) + 7:8 * i]) | ({8 {ld_byte_rhit_hi_hi[i]}} & store_data_hi_r[(8 * i) + 7:8 * i]);
-			assign ld_fwddata_lo[(8 * i) + 7:8 * i] = (ld_byte_rhit_lo[i] ? ld_fwddata_rpipe_lo[(8 * i) + 7:8 * i] : ld_fwddata_buf_lo[(8 * i) + 7:8 * i]);
-			assign ld_fwddata_hi[(8 * i) + 7:8 * i] = (ld_byte_rhit_hi[i] ? ld_fwddata_rpipe_hi[(8 * i) + 7:8 * i] : ld_fwddata_buf_hi[(8 * i) + 7:8 * i]);
-		end
-	endgenerate
-	always @(*) begin
-		ld_full_hit_lo_m = 1'b1;
-		ld_full_hit_hi_m = 1'b1;
-		begin : sv2v_autoblock_58
-			reg signed [31:0] i;
-			for (i = 0; i < 4; i = i + 1)
-				begin
-					ld_full_hit_lo_m = ld_full_hit_lo_m & (ld_byte_hit_lo[i] | ~ldst_byteen_lo_m[i]);
-					ld_full_hit_hi_m = ld_full_hit_hi_m & (ld_byte_hit_hi[i] | ~ldst_byteen_hi_m[i]);
-				end
-		end
-	end
-	assign ld_full_hit_m = (((ld_full_hit_lo_m & ld_full_hit_hi_m) & lsu_busreq_m) & lsu_pkt_m[7]) & ~is_sideeffects_m;
-	assign ld_fwddata_m[63:0] = {ld_fwddata_hi[31:0], ld_fwddata_lo[31:0]} >> (8 * lsu_addr_m[1:0]);
-	assign bus_read_data_m[31:0] = ld_fwddata_m[31:0];
-	rvdff #(.WIDTH(1)) clken_ff(
-		.din(lsu_bus_clk_en),
-		.dout(lsu_bus_clk_en_q),
-		.clk(active_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) is_sideeffects_rff(
-		.din(is_sideeffects_m),
-		.dout(is_sideeffects_r),
-		.clk(lsu_c1_r_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(4)) lsu_byten_rff(
-		.rst_l(rst_l),
-		.din(ldst_byteen_m[3:0]),
-		.dout(ldst_byteen_r[3:0]),
-		.clk(lsu_c1_r_clk)
-	);
-endmodule
-module eb1_lsu_clkdomain (
-	clk,
-	active_clk,
-	rst_l,
-	dec_tlu_force_halt,
-	clk_override,
-	dma_dccm_req,
-	ldst_stbuf_reqvld_r,
-	stbuf_reqvld_any,
-	stbuf_reqvld_flushed_any,
-	lsu_busreq_r,
-	lsu_bus_buffer_pend_any,
-	lsu_bus_buffer_empty_any,
-	lsu_stbuf_empty_any,
-	lsu_bus_clk_en,
-	lsu_p,
-	lsu_pkt_d,
-	lsu_pkt_m,
-	lsu_pkt_r,
-	lsu_bus_obuf_c1_clken,
-	lsu_busm_clken,
-	lsu_c1_m_clk,
-	lsu_c1_r_clk,
-	lsu_c2_m_clk,
-	lsu_c2_r_clk,
-	lsu_store_c1_m_clk,
-	lsu_store_c1_r_clk,
-	lsu_stbuf_c1_clk,
-	lsu_bus_obuf_c1_clk,
-	lsu_bus_ibuf_c1_clk,
-	lsu_bus_buf_c1_clk,
-	lsu_busm_clk,
-	lsu_free_c2_clk,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire active_clk;
-	input wire rst_l;
-	input wire dec_tlu_force_halt;
-	input wire clk_override;
-	input wire dma_dccm_req;
-	input wire ldst_stbuf_reqvld_r;
-	input wire stbuf_reqvld_any;
-	input wire stbuf_reqvld_flushed_any;
-	input wire lsu_busreq_r;
-	input wire lsu_bus_buffer_pend_any;
-	input wire lsu_bus_buffer_empty_any;
-	input wire lsu_stbuf_empty_any;
-	input wire lsu_bus_clk_en;
-	input wire [13:0] lsu_p;
-	input wire [13:0] lsu_pkt_d;
-	input wire [13:0] lsu_pkt_m;
-	input wire [13:0] lsu_pkt_r;
-	output wire lsu_bus_obuf_c1_clken;
-	output wire lsu_busm_clken;
-	output wire lsu_c1_m_clk;
-	output wire lsu_c1_r_clk;
-	output wire lsu_c2_m_clk;
-	output wire lsu_c2_r_clk;
-	output wire lsu_store_c1_m_clk;
-	output wire lsu_store_c1_r_clk;
-	output wire lsu_stbuf_c1_clk;
-	output wire lsu_bus_obuf_c1_clk;
-	output wire lsu_bus_ibuf_c1_clk;
-	output wire lsu_bus_buf_c1_clk;
-	output wire lsu_busm_clk;
-	output wire lsu_free_c2_clk;
-	input wire scan_mode;
-	wire lsu_c1_m_clken;
-	wire lsu_c1_r_clken;
-	wire lsu_c2_m_clken;
-	wire lsu_c2_r_clken;
-	wire lsu_c1_m_clken_q;
-	wire lsu_c1_r_clken_q;
-	wire lsu_store_c1_m_clken;
-	wire lsu_store_c1_r_clken;
-	wire lsu_stbuf_c1_clken;
-	wire lsu_bus_ibuf_c1_clken;
-	wire lsu_bus_buf_c1_clken;
-	wire lsu_free_c1_clken;
-	wire lsu_free_c1_clken_q;
-	wire lsu_free_c2_clken;
-	assign lsu_c1_m_clken = (lsu_p[0] | dma_dccm_req) | clk_override;
-	assign lsu_c1_r_clken = (lsu_pkt_m[0] | lsu_c1_m_clken_q) | clk_override;
-	assign lsu_c2_m_clken = (lsu_c1_m_clken | lsu_c1_m_clken_q) | clk_override;
-	assign lsu_c2_r_clken = (lsu_c1_r_clken | lsu_c1_r_clken_q) | clk_override;
-	assign lsu_store_c1_m_clken = (lsu_c1_m_clken & lsu_pkt_d[6]) | clk_override;
-	assign lsu_store_c1_r_clken = (lsu_c1_r_clken & lsu_pkt_m[6]) | clk_override;
-	assign lsu_stbuf_c1_clken = ((ldst_stbuf_reqvld_r | stbuf_reqvld_any) | stbuf_reqvld_flushed_any) | clk_override;
-	assign lsu_bus_ibuf_c1_clken = lsu_busreq_r | clk_override;
-	assign lsu_bus_obuf_c1_clken = ((lsu_bus_buffer_pend_any | lsu_busreq_r) | clk_override) & lsu_bus_clk_en;
-	assign lsu_bus_buf_c1_clken = ((~lsu_bus_buffer_empty_any | lsu_busreq_r) | dec_tlu_force_halt) | clk_override;
-	assign lsu_free_c1_clken = (((((lsu_p[0] | lsu_pkt_d[0]) | lsu_pkt_m[0]) | lsu_pkt_r[0]) | ~lsu_bus_buffer_empty_any) | ~lsu_stbuf_empty_any) | clk_override;
-	assign lsu_free_c2_clken = (lsu_free_c1_clken | lsu_free_c1_clken_q) | clk_override;
-	rvdff #(.WIDTH(1)) lsu_free_c1_clkenff(
-		.din(lsu_free_c1_clken),
-		.dout(lsu_free_c1_clken_q),
-		.clk(active_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) lsu_c1_m_clkenff(
-		.din(lsu_c1_m_clken),
-		.dout(lsu_c1_m_clken_q),
-		.clk(lsu_free_c2_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) lsu_c1_r_clkenff(
-		.din(lsu_c1_r_clken),
-		.dout(lsu_c1_r_clken_q),
-		.clk(lsu_free_c2_clk),
-		.rst_l(rst_l)
-	);
-	rvoclkhdr lsu_c1m_cgc(
-		.en(lsu_c1_m_clken),
-		.l1clk(lsu_c1_m_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr lsu_c1r_cgc(
-		.en(lsu_c1_r_clken),
-		.l1clk(lsu_c1_r_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr lsu_c2m_cgc(
-		.en(lsu_c2_m_clken),
-		.l1clk(lsu_c2_m_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr lsu_c2r_cgc(
-		.en(lsu_c2_r_clken),
-		.l1clk(lsu_c2_r_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr lsu_store_c1m_cgc(
-		.en(lsu_store_c1_m_clken),
-		.l1clk(lsu_store_c1_m_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr lsu_store_c1r_cgc(
-		.en(lsu_store_c1_r_clken),
-		.l1clk(lsu_store_c1_r_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr lsu_stbuf_c1_cgc(
-		.en(lsu_stbuf_c1_clken),
-		.l1clk(lsu_stbuf_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr lsu_bus_ibuf_c1_cgc(
-		.en(lsu_bus_ibuf_c1_clken),
-		.l1clk(lsu_bus_ibuf_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr lsu_bus_buf_c1_cgc(
-		.en(lsu_bus_buf_c1_clken),
-		.l1clk(lsu_bus_buf_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	assign lsu_busm_clken = ((~lsu_bus_buffer_empty_any | lsu_busreq_r) | clk_override) & lsu_bus_clk_en;
-	rvclkhdr lsu_bus_obuf_c1_cgc(
-		.en(lsu_bus_obuf_c1_clken),
-		.l1clk(lsu_bus_obuf_c1_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvclkhdr lsu_busm_cgc(
-		.en(lsu_busm_clken),
-		.l1clk(lsu_busm_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-	rvoclkhdr lsu_free_cgc(
-		.en(lsu_free_c2_clken),
-		.l1clk(lsu_free_c2_clk),
-		.clk(clk),
-		.scan_mode(scan_mode)
-	);
-endmodule
-module eb1_lsu_dccm_ctl (
-	lsu_c2_m_clk,
-	lsu_c2_r_clk,
-	lsu_c1_r_clk,
-	lsu_store_c1_r_clk,
-	lsu_free_c2_clk,
-	clk_override,
-	clk,
-	rst_l,
-	lsu_pkt_r,
-	lsu_pkt_m,
-	lsu_pkt_d,
-	addr_in_dccm_d,
-	addr_in_pic_d,
-	addr_in_pic_m,
-	addr_in_dccm_m,
-	addr_in_dccm_r,
-	addr_in_pic_r,
-	lsu_raw_fwd_lo_r,
-	lsu_raw_fwd_hi_r,
-	lsu_commit_r,
-	ldst_dual_m,
-	ldst_dual_r,
-	lsu_addr_d,
-	lsu_addr_m,
-	lsu_addr_r,
-	end_addr_d,
-	end_addr_m,
-	end_addr_r,
-	stbuf_reqvld_any,
-	stbuf_addr_any,
-	stbuf_data_any,
-	stbuf_ecc_any,
-	stbuf_fwddata_hi_m,
-	stbuf_fwddata_lo_m,
-	stbuf_fwdbyteen_hi_m,
-	stbuf_fwdbyteen_lo_m,
-	dccm_rdata_hi_r,
-	dccm_rdata_lo_r,
-	dccm_data_ecc_hi_r,
-	dccm_data_ecc_lo_r,
-	lsu_ld_data_r,
-	lsu_ld_data_corr_r,
-	lsu_double_ecc_error_r,
-	single_ecc_error_hi_r,
-	single_ecc_error_lo_r,
-	sec_data_hi_r,
-	sec_data_lo_r,
-	sec_data_hi_r_ff,
-	sec_data_lo_r_ff,
-	sec_data_ecc_hi_r_ff,
-	sec_data_ecc_lo_r_ff,
-	dccm_rdata_hi_m,
-	dccm_rdata_lo_m,
-	dccm_data_ecc_hi_m,
-	dccm_data_ecc_lo_m,
-	lsu_ld_data_m,
-	lsu_double_ecc_error_m,
-	sec_data_hi_m,
-	sec_data_lo_m,
-	store_data_m,
-	dma_dccm_wen,
-	dma_pic_wen,
-	dma_mem_tag_m,
-	dma_mem_addr,
-	dma_mem_wdata,
-	dma_dccm_wdata_lo,
-	dma_dccm_wdata_hi,
-	dma_dccm_wdata_ecc_hi,
-	dma_dccm_wdata_ecc_lo,
-	store_data_hi_r,
-	store_data_lo_r,
-	store_datafn_hi_r,
-	store_datafn_lo_r,
-	store_data_r,
-	ld_single_ecc_error_r,
-	ld_single_ecc_error_r_ff,
-	picm_mask_data_m,
-	lsu_stbuf_commit_any,
-	lsu_dccm_rden_m,
-	lsu_dccm_rden_r,
-	dccm_dma_rvalid,
-	dccm_dma_ecc_error,
-	dccm_dma_rtag,
-	dccm_dma_rdata,
-	dccm_wren,
-	dccm_rden,
-	dccm_wr_addr_lo,
-	dccm_wr_addr_hi,
-	dccm_rd_addr_lo,
-	dccm_rd_addr_hi,
-	dccm_wr_data_lo,
-	dccm_wr_data_hi,
-	dccm_rd_data_lo,
-	dccm_rd_data_hi,
-	picm_wren,
-	picm_rden,
-	picm_mken,
-	picm_rdaddr,
-	picm_wraddr,
-	picm_wr_data,
-	picm_rd_data,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire lsu_c2_m_clk;
-	input wire lsu_c2_r_clk;
-	input wire lsu_c1_r_clk;
-	input wire lsu_store_c1_r_clk;
-	input wire lsu_free_c2_clk;
-	input wire clk_override;
-	input wire clk;
-	input wire rst_l;
-	input wire [13:0] lsu_pkt_r;
-	input wire [13:0] lsu_pkt_m;
-	input wire [13:0] lsu_pkt_d;
-	input wire addr_in_dccm_d;
-	input wire addr_in_pic_d;
-	input wire addr_in_pic_m;
-	input wire addr_in_dccm_m;
-	input wire addr_in_dccm_r;
-	input wire addr_in_pic_r;
-	input wire lsu_raw_fwd_lo_r;
-	input wire lsu_raw_fwd_hi_r;
-	input wire lsu_commit_r;
-	input wire ldst_dual_m;
-	input wire ldst_dual_r;
-	input wire [31:0] lsu_addr_d;
-	input wire [pt[1398-:9] - 1:0] lsu_addr_m;
-	input wire [31:0] lsu_addr_r;
-	input wire [pt[1398-:9] - 1:0] end_addr_d;
-	input wire [pt[1398-:9] - 1:0] end_addr_m;
-	input wire [pt[1398-:9] - 1:0] end_addr_r;
-	input wire stbuf_reqvld_any;
-	input wire [pt[157-:9] - 1:0] stbuf_addr_any;
-	input wire [pt[1382-:10] - 1:0] stbuf_data_any;
-	input wire [pt[1372-:7] - 1:0] stbuf_ecc_any;
-	input wire [pt[1382-:10] - 1:0] stbuf_fwddata_hi_m;
-	input wire [pt[1382-:10] - 1:0] stbuf_fwddata_lo_m;
-	input wire [pt[1389-:7] - 1:0] stbuf_fwdbyteen_hi_m;
-	input wire [pt[1389-:7] - 1:0] stbuf_fwdbyteen_lo_m;
-	output wire [pt[1382-:10] - 1:0] dccm_rdata_hi_r;
-	output wire [pt[1382-:10] - 1:0] dccm_rdata_lo_r;
-	output wire [pt[1372-:7] - 1:0] dccm_data_ecc_hi_r;
-	output wire [pt[1372-:7] - 1:0] dccm_data_ecc_lo_r;
-	output wire [pt[1382-:10] - 1:0] lsu_ld_data_r;
-	output wire [pt[1382-:10] - 1:0] lsu_ld_data_corr_r;
-	input wire lsu_double_ecc_error_r;
-	input wire single_ecc_error_hi_r;
-	input wire single_ecc_error_lo_r;
-	input wire [pt[1382-:10] - 1:0] sec_data_hi_r;
-	input wire [pt[1382-:10] - 1:0] sec_data_lo_r;
-	input wire [pt[1382-:10] - 1:0] sec_data_hi_r_ff;
-	input wire [pt[1382-:10] - 1:0] sec_data_lo_r_ff;
-	input wire [pt[1372-:7] - 1:0] sec_data_ecc_hi_r_ff;
-	input wire [pt[1372-:7] - 1:0] sec_data_ecc_lo_r_ff;
-	output wire [pt[1382-:10] - 1:0] dccm_rdata_hi_m;
-	output wire [pt[1382-:10] - 1:0] dccm_rdata_lo_m;
-	output wire [pt[1372-:7] - 1:0] dccm_data_ecc_hi_m;
-	output wire [pt[1372-:7] - 1:0] dccm_data_ecc_lo_m;
-	output wire [pt[1382-:10] - 1:0] lsu_ld_data_m;
-	input wire lsu_double_ecc_error_m;
-	input wire [pt[1382-:10] - 1:0] sec_data_hi_m;
-	input wire [pt[1382-:10] - 1:0] sec_data_lo_m;
-	input wire [31:0] store_data_m;
-	input wire dma_dccm_wen;
-	input wire dma_pic_wen;
-	input wire [2:0] dma_mem_tag_m;
-	input wire [31:0] dma_mem_addr;
-	input wire [63:0] dma_mem_wdata;
-	input wire [31:0] dma_dccm_wdata_lo;
-	input wire [31:0] dma_dccm_wdata_hi;
-	input wire [pt[1372-:7] - 1:0] dma_dccm_wdata_ecc_hi;
-	input wire [pt[1372-:7] - 1:0] dma_dccm_wdata_ecc_lo;
-	output wire [pt[1382-:10] - 1:0] store_data_hi_r;
-	output wire [pt[1382-:10] - 1:0] store_data_lo_r;
-	output wire [pt[1382-:10] - 1:0] store_datafn_hi_r;
-	output wire [pt[1382-:10] - 1:0] store_datafn_lo_r;
-	output wire [31:0] store_data_r;
-	output wire ld_single_ecc_error_r;
-	output wire ld_single_ecc_error_r_ff;
-	output wire [31:0] picm_mask_data_m;
-	output wire lsu_stbuf_commit_any;
-	output wire lsu_dccm_rden_m;
-	output wire lsu_dccm_rden_r;
-	output wire dccm_dma_rvalid;
-	output wire dccm_dma_ecc_error;
-	output wire [2:0] dccm_dma_rtag;
-	output wire [63:0] dccm_dma_rdata;
-	output wire dccm_wren;
-	output wire dccm_rden;
-	output wire [pt[1398-:9] - 1:0] dccm_wr_addr_lo;
-	output wire [pt[1398-:9] - 1:0] dccm_wr_addr_hi;
-	output wire [pt[1398-:9] - 1:0] dccm_rd_addr_lo;
-	output wire [pt[1398-:9] - 1:0] dccm_rd_addr_hi;
-	output wire [pt[1360-:10] - 1:0] dccm_wr_data_lo;
-	output wire [pt[1360-:10] - 1:0] dccm_wr_data_hi;
-	input wire [pt[1360-:10] - 1:0] dccm_rd_data_lo;
-	input wire [pt[1360-:10] - 1:0] dccm_rd_data_hi;
-	output wire picm_wren;
-	output wire picm_rden;
-	output wire picm_mken;
-	output wire [31:0] picm_rdaddr;
-	output wire [31:0] picm_wraddr;
-	output wire [31:0] picm_wr_data;
-	input wire [31:0] picm_rd_data;
-	input wire scan_mode;
-	localparam DCCM_WIDTH_BITS = $clog2(pt[1389-:7]);
-	wire lsu_dccm_rden_d;
-	wire lsu_dccm_wren_d;
-	wire ld_single_ecc_error_lo_r;
-	wire ld_single_ecc_error_hi_r;
-	wire ld_single_ecc_error_lo_r_ns;
-	wire ld_single_ecc_error_hi_r_ns;
-	wire ld_single_ecc_error_lo_r_ff;
-	wire ld_single_ecc_error_hi_r_ff;
-	wire lsu_double_ecc_error_r_ff;
-	wire [pt[1398-:9] - 1:0] ld_sec_addr_lo_r_ff;
-	wire [pt[1398-:9] - 1:0] ld_sec_addr_hi_r_ff;
-	wire [pt[1382-:10] - 1:0] store_data_lo_r_in;
-	wire [pt[1382-:10] - 1:0] store_data_hi_r_in;
-	wire [63:0] picm_rd_data_m;
-	wire dccm_wr_bypass_d_m_hi;
-	wire dccm_wr_bypass_d_r_hi;
-	wire dccm_wr_bypass_d_m_lo;
-	wire dccm_wr_bypass_d_r_lo;
-	wire kill_ecc_corr_lo_r;
-	wire kill_ecc_corr_hi_r;
-	wire [3:0] store_byteen_m;
-	wire [3:0] store_byteen_r;
-	wire [7:0] store_byteen_ext_m;
-	wire [7:0] store_byteen_ext_r;
-	generate
-		if (pt[202-:5] == 1) begin : L2U_Plus1_1
-			wire [63:0] lsu_rdata_r;
-			wire [63:0] lsu_rdata_corr_r;
-			wire [63:0] dccm_rdata_r;
-			wire [63:0] dccm_rdata_corr_r;
-			wire [63:0] stbuf_fwddata_r;
-			wire [7:0] stbuf_fwdbyteen_r;
-			wire [31:0] stbuf_fwddata_lo_r;
-			wire [31:0] stbuf_fwddata_hi_r;
-			wire [3:0] stbuf_fwdbyteen_lo_r;
-			wire [3:0] stbuf_fwdbyteen_hi_r;
-			wire [31:0] lsu_rdata_lo_r;
-			wire [31:0] lsu_rdata_hi_r;
-			wire [63:0] picm_rd_data_r;
-			wire [63:32] lsu_ld_data_r_nc;
-			wire [63:32] lsu_ld_data_corr_r_nc;
-			wire [2:0] dma_mem_tag_r;
-			wire stbuf_fwddata_en;
-			assign dccm_dma_rvalid = (lsu_pkt_r[0] & lsu_pkt_r[7]) & lsu_pkt_r[4];
-			assign dccm_dma_ecc_error = lsu_double_ecc_error_r;
-			assign dccm_dma_rtag[2:0] = dma_mem_tag_r[2:0];
-			assign dccm_dma_rdata[63:0] = (ldst_dual_r ? lsu_rdata_corr_r[63:0] : {2 {lsu_rdata_corr_r[31:0]}});
-			assign {lsu_ld_data_r_nc[63:32], lsu_ld_data_r[31:0]} = lsu_rdata_r[63:0] >> (8 * lsu_addr_r[1:0]);
-			assign {lsu_ld_data_corr_r_nc[63:32], lsu_ld_data_corr_r[31:0]} = lsu_rdata_corr_r[63:0] >> (8 * lsu_addr_r[1:0]);
-			assign picm_rd_data_r[63:32] = picm_rd_data_r[31:0];
-			assign dccm_rdata_r[63:0] = {dccm_rdata_hi_r[31:0], dccm_rdata_lo_r[31:0]};
-			assign dccm_rdata_corr_r[63:0] = {sec_data_hi_r[31:0], sec_data_lo_r[31:0]};
-			assign stbuf_fwddata_r[63:0] = {stbuf_fwddata_hi_r[31:0], stbuf_fwddata_lo_r[31:0]};
-			assign stbuf_fwdbyteen_r[7:0] = {stbuf_fwdbyteen_hi_r[3:0], stbuf_fwdbyteen_lo_r[3:0]};
-			assign stbuf_fwddata_en = (|stbuf_fwdbyteen_hi_m[3:0] | |stbuf_fwdbyteen_lo_m[3:0]) | clk_override;
-			genvar i;
-			for (i = 0; i < 8; i = i + 1) begin : GenDMAData
-				assign lsu_rdata_corr_r[(8 * i) + 7:8 * i] = (stbuf_fwdbyteen_r[i] ? stbuf_fwddata_r[(8 * i) + 7:8 * i] : (addr_in_pic_r ? picm_rd_data_r[(8 * i) + 7:8 * i] : {8 {addr_in_dccm_r}} & dccm_rdata_corr_r[(8 * i) + 7:8 * i]));
-				assign lsu_rdata_r[(8 * i) + 7:8 * i] = (stbuf_fwdbyteen_r[i] ? stbuf_fwddata_r[(8 * i) + 7:8 * i] : (addr_in_pic_r ? picm_rd_data_r[(8 * i) + 7:8 * i] : {8 {addr_in_dccm_r}} & dccm_rdata_r[(8 * i) + 7:8 * i]));
-			end
-			rvdffe #(.WIDTH(pt[1382-:10])) dccm_rdata_hi_r_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din(dccm_rdata_hi_m[pt[1382-:10] - 1:0]),
-				.dout(dccm_rdata_hi_r[pt[1382-:10] - 1:0]),
-				.en((lsu_dccm_rden_m & ldst_dual_m) | clk_override)
-			);
-			rvdffe #(.WIDTH(pt[1382-:10])) dccm_rdata_lo_r_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din(dccm_rdata_lo_m[pt[1382-:10] - 1:0]),
-				.dout(dccm_rdata_lo_r[pt[1382-:10] - 1:0]),
-				.en(lsu_dccm_rden_m | clk_override)
-			);
-			rvdffe #(.WIDTH(2 * pt[1372-:7])) dccm_data_ecc_r_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din({dccm_data_ecc_hi_m[pt[1372-:7] - 1:0], dccm_data_ecc_lo_m[pt[1372-:7] - 1:0]}),
-				.dout({dccm_data_ecc_hi_r[pt[1372-:7] - 1:0], dccm_data_ecc_lo_r[pt[1372-:7] - 1:0]}),
-				.en(lsu_dccm_rden_m | clk_override)
-			);
-			rvdff #(.WIDTH(8)) stbuf_fwdbyteen_ff(
-				.rst_l(rst_l),
-				.din({stbuf_fwdbyteen_hi_m[3:0], stbuf_fwdbyteen_lo_m[3:0]}),
-				.dout({stbuf_fwdbyteen_hi_r[3:0], stbuf_fwdbyteen_lo_r[3:0]}),
-				.clk(lsu_c2_r_clk)
-			);
-			rvdffe #(.WIDTH(64)) stbuf_fwddata_ff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din({stbuf_fwddata_hi_m[31:0], stbuf_fwddata_lo_m[31:0]}),
-				.dout({stbuf_fwddata_hi_r[31:0], stbuf_fwddata_lo_r[31:0]}),
-				.en(stbuf_fwddata_en)
-			);
-			rvdffe #(.WIDTH(32)) picm_rddata_rff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din(picm_rd_data_m[31:0]),
-				.dout(picm_rd_data_r[31:0]),
-				.en(addr_in_pic_m | clk_override)
-			);
-			rvdff #(.WIDTH(3)) dma_mem_tag_rff(
-				.rst_l(rst_l),
-				.din(dma_mem_tag_m[2:0]),
-				.dout(dma_mem_tag_r[2:0]),
-				.clk(lsu_c1_r_clk)
-			);
-		end
-		else begin : L2U_Plus1_0
-			wire [63:0] lsu_rdata_m;
-			wire [63:0] lsu_rdata_corr_m;
-			wire [63:0] dccm_rdata_m;
-			wire [63:0] dccm_rdata_corr_m;
-			wire [63:0] stbuf_fwddata_m;
-			wire [7:0] stbuf_fwdbyteen_m;
-			wire [63:32] lsu_ld_data_m_nc;
-			wire [63:32] lsu_ld_data_corr_m_nc;
-			wire [31:0] lsu_ld_data_corr_m;
-			assign dccm_dma_rvalid = (lsu_pkt_m[0] & lsu_pkt_m[7]) & lsu_pkt_m[4];
-			assign dccm_dma_ecc_error = lsu_double_ecc_error_m;
-			assign dccm_dma_rtag[2:0] = dma_mem_tag_m[2:0];
-			assign dccm_dma_rdata[63:0] = (ldst_dual_m ? lsu_rdata_corr_m[63:0] : {2 {lsu_rdata_corr_m[31:0]}});
-			assign {lsu_ld_data_m_nc[63:32], lsu_ld_data_m[31:0]} = lsu_rdata_m[63:0] >> (8 * lsu_addr_m[1:0]);
-			assign {lsu_ld_data_corr_m_nc[63:32], lsu_ld_data_corr_m[31:0]} = lsu_rdata_corr_m[63:0] >> (8 * lsu_addr_m[1:0]);
-			assign dccm_rdata_m[63:0] = {dccm_rdata_hi_m[31:0], dccm_rdata_lo_m[31:0]};
-			assign dccm_rdata_corr_m[63:0] = {sec_data_hi_m[31:0], sec_data_lo_m[31:0]};
-			assign stbuf_fwddata_m[63:0] = {stbuf_fwddata_hi_m[31:0], stbuf_fwddata_lo_m[31:0]};
-			assign stbuf_fwdbyteen_m[7:0] = {stbuf_fwdbyteen_hi_m[3:0], stbuf_fwdbyteen_lo_m[3:0]};
-			genvar i;
-			for (i = 0; i < 8; i = i + 1) begin : GenLoop
-				assign lsu_rdata_corr_m[(8 * i) + 7:8 * i] = (stbuf_fwdbyteen_m[i] ? stbuf_fwddata_m[(8 * i) + 7:8 * i] : (addr_in_pic_m ? picm_rd_data_m[(8 * i) + 7:8 * i] : {8 {addr_in_dccm_m}} & dccm_rdata_corr_m[(8 * i) + 7:8 * i]));
-				assign lsu_rdata_m[(8 * i) + 7:8 * i] = (stbuf_fwdbyteen_m[i] ? stbuf_fwddata_m[(8 * i) + 7:8 * i] : (addr_in_pic_m ? picm_rd_data_m[(8 * i) + 7:8 * i] : {8 {addr_in_dccm_m}} & dccm_rdata_m[(8 * i) + 7:8 * i]));
-			end
-			rvdffe #(.WIDTH(32)) lsu_ld_data_corr_rff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din(lsu_ld_data_corr_m[31:0]),
-				.dout(lsu_ld_data_corr_r[31:0]),
-				.en(((lsu_pkt_m[0] & lsu_pkt_m[7]) & (addr_in_pic_m | addr_in_dccm_m)) | clk_override)
-			);
-		end
-	endgenerate
-	assign kill_ecc_corr_lo_r = ((((((lsu_addr_d[pt[1398-:9] - 1:2] == lsu_addr_r[pt[1398-:9] - 1:2]) | (end_addr_d[pt[1398-:9] - 1:2] == lsu_addr_r[pt[1398-:9] - 1:2])) & lsu_pkt_d[0]) & lsu_pkt_d[6]) & lsu_pkt_d[4]) & addr_in_dccm_d) | ((((((lsu_addr_m[pt[1398-:9] - 1:2] == lsu_addr_r[pt[1398-:9] - 1:2]) | (end_addr_m[pt[1398-:9] - 1:2] == lsu_addr_r[pt[1398-:9] - 1:2])) & lsu_pkt_m[0]) & lsu_pkt_m[6]) & lsu_pkt_m[4]) & addr_in_dccm_m);
-	assign kill_ecc_corr_hi_r = ((((((lsu_addr_d[pt[1398-:9] - 1:2] == end_addr_r[pt[1398-:9] - 1:2]) | (end_addr_d[pt[1398-:9] - 1:2] == end_addr_r[pt[1398-:9] - 1:2])) & lsu_pkt_d[0]) & lsu_pkt_d[6]) & lsu_pkt_d[4]) & addr_in_dccm_d) | ((((((lsu_addr_m[pt[1398-:9] - 1:2] == end_addr_r[pt[1398-:9] - 1:2]) | (end_addr_m[pt[1398-:9] - 1:2] == end_addr_r[pt[1398-:9] - 1:2])) & lsu_pkt_m[0]) & lsu_pkt_m[6]) & lsu_pkt_m[4]) & addr_in_dccm_m);
-	assign ld_single_ecc_error_lo_r = (lsu_pkt_r[7] & single_ecc_error_lo_r) & ~lsu_raw_fwd_lo_r;
-	assign ld_single_ecc_error_hi_r = (lsu_pkt_r[7] & single_ecc_error_hi_r) & ~lsu_raw_fwd_hi_r;
-	assign ld_single_ecc_error_r = (ld_single_ecc_error_lo_r | ld_single_ecc_error_hi_r) & ~lsu_double_ecc_error_r;
-	assign ld_single_ecc_error_lo_r_ns = (ld_single_ecc_error_lo_r & (lsu_commit_r | lsu_pkt_r[4])) & ~kill_ecc_corr_lo_r;
-	assign ld_single_ecc_error_hi_r_ns = (ld_single_ecc_error_hi_r & (lsu_commit_r | lsu_pkt_r[4])) & ~kill_ecc_corr_hi_r;
-	assign ld_single_ecc_error_r_ff = (ld_single_ecc_error_lo_r_ff | ld_single_ecc_error_hi_r_ff) & ~lsu_double_ecc_error_r_ff;
-	assign lsu_stbuf_commit_any = stbuf_reqvld_any & (~((lsu_dccm_rden_d | lsu_dccm_wren_d) | ld_single_ecc_error_r_ff) | (lsu_dccm_rden_d & ~((stbuf_addr_any[pt[1275-:6]+:pt[1405-:7]] == lsu_addr_d[pt[1275-:6]+:pt[1405-:7]]) | (stbuf_addr_any[pt[1275-:6]+:pt[1405-:7]] == end_addr_d[pt[1275-:6]+:pt[1405-:7]]))));
-	assign lsu_dccm_rden_d = (lsu_pkt_d[0] & (lsu_pkt_d[7] | (lsu_pkt_d[6] & (~(lsu_pkt_d[9] | lsu_pkt_d[8]) | (lsu_addr_d[1:0] != 2'b00))))) & addr_in_dccm_d;
-	assign lsu_dccm_wren_d = dma_dccm_wen;
-	assign dccm_wren = (lsu_dccm_wren_d | lsu_stbuf_commit_any) | ld_single_ecc_error_r_ff;
-	assign dccm_rden = lsu_dccm_rden_d & addr_in_dccm_d;
-	assign dccm_wr_addr_lo[pt[1398-:9] - 1:0] = (ld_single_ecc_error_r_ff ? (ld_single_ecc_error_lo_r_ff ? ld_sec_addr_lo_r_ff[pt[1398-:9] - 1:0] : ld_sec_addr_hi_r_ff[pt[1398-:9] - 1:0]) : (lsu_dccm_wren_d ? lsu_addr_d[pt[1398-:9] - 1:0] : stbuf_addr_any[pt[1398-:9] - 1:0]));
-	assign dccm_wr_addr_hi[pt[1398-:9] - 1:0] = (ld_single_ecc_error_r_ff ? (ld_single_ecc_error_hi_r_ff ? ld_sec_addr_hi_r_ff[pt[1398-:9] - 1:0] : ld_sec_addr_lo_r_ff[pt[1398-:9] - 1:0]) : (lsu_dccm_wren_d ? end_addr_d[pt[1398-:9] - 1:0] : stbuf_addr_any[pt[1398-:9] - 1:0]));
-	assign dccm_rd_addr_lo[pt[1398-:9] - 1:0] = lsu_addr_d[pt[1398-:9] - 1:0];
-	assign dccm_rd_addr_hi[pt[1398-:9] - 1:0] = end_addr_d[pt[1398-:9] - 1:0];
-	assign dccm_wr_data_lo[pt[1360-:10] - 1:0] = (ld_single_ecc_error_r_ff ? (ld_single_ecc_error_lo_r_ff ? {sec_data_ecc_lo_r_ff[pt[1372-:7] - 1:0], sec_data_lo_r_ff[pt[1382-:10] - 1:0]} : {sec_data_ecc_hi_r_ff[pt[1372-:7] - 1:0], sec_data_hi_r_ff[pt[1382-:10] - 1:0]}) : (dma_dccm_wen ? {dma_dccm_wdata_ecc_lo[pt[1372-:7] - 1:0], dma_dccm_wdata_lo[pt[1382-:10] - 1:0]} : {stbuf_ecc_any[pt[1372-:7] - 1:0], stbuf_data_any[pt[1382-:10] - 1:0]}));
-	assign dccm_wr_data_hi[pt[1360-:10] - 1:0] = (ld_single_ecc_error_r_ff ? (ld_single_ecc_error_hi_r_ff ? {sec_data_ecc_hi_r_ff[pt[1372-:7] - 1:0], sec_data_hi_r_ff[pt[1382-:10] - 1:0]} : {sec_data_ecc_lo_r_ff[pt[1372-:7] - 1:0], sec_data_lo_r_ff[pt[1382-:10] - 1:0]}) : (dma_dccm_wen ? {dma_dccm_wdata_ecc_hi[pt[1372-:7] - 1:0], dma_dccm_wdata_hi[pt[1382-:10] - 1:0]} : {stbuf_ecc_any[pt[1372-:7] - 1:0], stbuf_data_any[pt[1382-:10] - 1:0]}));
-	assign store_byteen_m[3:0] = {4 {lsu_pkt_m[6]}} & ((({4 {lsu_pkt_m[11]}} & 4'b0001) | ({4 {lsu_pkt_m[10]}} & 4'b0011)) | ({4 {lsu_pkt_m[9]}} & 4'b1111));
-	assign store_byteen_r[3:0] = {4 {lsu_pkt_r[6]}} & ((({4 {lsu_pkt_r[11]}} & 4'b0001) | ({4 {lsu_pkt_r[10]}} & 4'b0011)) | ({4 {lsu_pkt_r[9]}} & 4'b1111));
-	assign store_byteen_ext_m[7:0] = {4'b0000, store_byteen_m[3:0]} << lsu_addr_m[1:0];
-	assign store_byteen_ext_r[7:0] = {4'b0000, store_byteen_r[3:0]} << lsu_addr_r[1:0];
-	assign dccm_wr_bypass_d_m_lo = (stbuf_addr_any[pt[1398-:9] - 1:2] == lsu_addr_m[pt[1398-:9] - 1:2]) & addr_in_dccm_m;
-	assign dccm_wr_bypass_d_m_hi = (stbuf_addr_any[pt[1398-:9] - 1:2] == end_addr_m[pt[1398-:9] - 1:2]) & addr_in_dccm_m;
-	assign dccm_wr_bypass_d_r_lo = (stbuf_addr_any[pt[1398-:9] - 1:2] == lsu_addr_r[pt[1398-:9] - 1:2]) & addr_in_dccm_r;
-	assign dccm_wr_bypass_d_r_hi = (stbuf_addr_any[pt[1398-:9] - 1:2] == end_addr_r[pt[1398-:9] - 1:2]) & addr_in_dccm_r;
-	generate
-		if (pt[202-:5] == 1) begin : L2U1_Plus1_1
-			wire dccm_wren_Q;
-			wire [31:0] dccm_wr_data_Q;
-			wire dccm_wr_bypass_d_m_lo_Q;
-			wire dccm_wr_bypass_d_m_hi_Q;
-			wire [31:0] store_data_pre_hi_r;
-			wire [31:0] store_data_pre_lo_r;
-			assign {store_data_pre_hi_r[31:0], store_data_pre_lo_r[31:0]} = {32'b00000000000000000000000000000000, store_data_r[31:0]} << (8 * lsu_addr_r[1:0]);
-			genvar i;
-			for (i = 0; i < 4; i = i + 1) begin
-				assign store_data_lo_r[(8 * i) + 7:8 * i] = (store_byteen_ext_r[i] ? store_data_pre_lo_r[(8 * i) + 7:8 * i] : (dccm_wren_Q & dccm_wr_bypass_d_m_lo_Q ? dccm_wr_data_Q[(8 * i) + 7:8 * i] : sec_data_lo_r[(8 * i) + 7:8 * i]));
-				assign store_data_hi_r[(8 * i) + 7:8 * i] = (store_byteen_ext_r[i + 4] ? store_data_pre_hi_r[(8 * i) + 7:8 * i] : (dccm_wren_Q & dccm_wr_bypass_d_m_hi_Q ? dccm_wr_data_Q[(8 * i) + 7:8 * i] : sec_data_hi_r[(8 * i) + 7:8 * i]));
-				assign store_datafn_lo_r[(8 * i) + 7:8 * i] = (store_byteen_ext_r[i] ? store_data_pre_lo_r[(8 * i) + 7:8 * i] : (lsu_stbuf_commit_any & dccm_wr_bypass_d_r_lo ? stbuf_data_any[(8 * i) + 7:8 * i] : (dccm_wren_Q & dccm_wr_bypass_d_m_lo_Q ? dccm_wr_data_Q[(8 * i) + 7:8 * i] : sec_data_lo_r[(8 * i) + 7:8 * i])));
-				assign store_datafn_hi_r[(8 * i) + 7:8 * i] = (store_byteen_ext_r[i + 4] ? store_data_pre_hi_r[(8 * i) + 7:8 * i] : (lsu_stbuf_commit_any & dccm_wr_bypass_d_r_hi ? stbuf_data_any[(8 * i) + 7:8 * i] : (dccm_wren_Q & dccm_wr_bypass_d_m_hi_Q ? dccm_wr_data_Q[(8 * i) + 7:8 * i] : sec_data_hi_r[(8 * i) + 7:8 * i])));
-			end
-			rvdff #(.WIDTH(1)) dccm_wren_ff(
-				.rst_l(rst_l),
-				.din(lsu_stbuf_commit_any),
-				.dout(dccm_wren_Q),
-				.clk(lsu_free_c2_clk)
-			);
-			rvdffe #(.WIDTH(32)) dccm_wrdata_ff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din(stbuf_data_any[31:0]),
-				.dout(dccm_wr_data_Q[31:0]),
-				.en(lsu_stbuf_commit_any | clk_override),
-				.clk(clk)
-			);
-			rvdff #(.WIDTH(1)) dccm_wrbyp_dm_loff(
-				.rst_l(rst_l),
-				.din(dccm_wr_bypass_d_m_lo),
-				.dout(dccm_wr_bypass_d_m_lo_Q),
-				.clk(lsu_free_c2_clk)
-			);
-			rvdff #(.WIDTH(1)) dccm_wrbyp_dm_hiff(
-				.rst_l(rst_l),
-				.din(dccm_wr_bypass_d_m_hi),
-				.dout(dccm_wr_bypass_d_m_hi_Q),
-				.clk(lsu_free_c2_clk)
-			);
-			rvdff #(.WIDTH(32)) store_data_rff(
-				.rst_l(rst_l),
-				.din(store_data_m[31:0]),
-				.dout(store_data_r[31:0]),
-				.clk(lsu_store_c1_r_clk)
-			);
-		end
-		else begin : L2U1_Plus1_0
-			wire [31:0] store_data_hi_m;
-			wire [31:0] store_data_lo_m;
-			wire [63:0] store_data_mask;
-			assign {store_data_hi_m[31:0], store_data_lo_m[31:0]} = {32'b00000000000000000000000000000000, store_data_m[31:0]} << (8 * lsu_addr_m[1:0]);
-			genvar i;
-			for (i = 0; i < 4; i = i + 1) begin
-				assign store_data_hi_r_in[(8 * i) + 7:8 * i] = (store_byteen_ext_m[i + 4] ? store_data_hi_m[(8 * i) + 7:8 * i] : (lsu_stbuf_commit_any & dccm_wr_bypass_d_m_hi ? stbuf_data_any[(8 * i) + 7:8 * i] : sec_data_hi_m[(8 * i) + 7:8 * i]));
-				assign store_data_lo_r_in[(8 * i) + 7:8 * i] = (store_byteen_ext_m[i] ? store_data_lo_m[(8 * i) + 7:8 * i] : (lsu_stbuf_commit_any & dccm_wr_bypass_d_m_lo ? stbuf_data_any[(8 * i) + 7:8 * i] : sec_data_lo_m[(8 * i) + 7:8 * i]));
-				assign store_datafn_lo_r[(8 * i) + 7:8 * i] = ((lsu_stbuf_commit_any & dccm_wr_bypass_d_r_lo) & ~store_byteen_ext_r[i] ? stbuf_data_any[(8 * i) + 7:8 * i] : store_data_lo_r[(8 * i) + 7:8 * i]);
-				assign store_datafn_hi_r[(8 * i) + 7:8 * i] = ((lsu_stbuf_commit_any & dccm_wr_bypass_d_r_hi) & ~store_byteen_ext_r[i + 4] ? stbuf_data_any[(8 * i) + 7:8 * i] : store_data_hi_r[(8 * i) + 7:8 * i]);
-			end
-			for (i = 0; i < 4; i = i + 1) assign store_data_mask[(8 * i) + 7:8 * i] = {8 {store_byteen_r[i]}};
-			function automatic [31:0] sv2v_cast_32;
-				input reg [31:0] inp;
-				sv2v_cast_32 = inp;
-			endfunction
-			assign store_data_r[31:0] = sv2v_cast_32({store_data_hi_r[31:0], store_data_lo_r[31:0]} >> (8 * lsu_addr_r[1:0])) & store_data_mask[31:0];
-			rvdffe #(.WIDTH(pt[1382-:10])) store_data_hi_rff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din(store_data_hi_r_in[pt[1382-:10] - 1:0]),
-				.dout(store_data_hi_r[pt[1382-:10] - 1:0]),
-				.en(((ldst_dual_m & lsu_pkt_m[0]) & lsu_pkt_m[6]) | clk_override),
-				.clk(clk)
-			);
-			rvdff #(.WIDTH(pt[1382-:10])) store_data_lo_rff(
-				.rst_l(rst_l),
-				.din(store_data_lo_r_in[pt[1382-:10] - 1:0]),
-				.dout(store_data_lo_r[pt[1382-:10] - 1:0]),
-				.clk(lsu_store_c1_r_clk)
-			);
-		end
-	endgenerate
-	assign dccm_rdata_lo_m[pt[1382-:10] - 1:0] = dccm_rd_data_lo[pt[1382-:10] - 1:0];
-	assign dccm_rdata_hi_m[pt[1382-:10] - 1:0] = dccm_rd_data_hi[pt[1382-:10] - 1:0];
-	assign dccm_data_ecc_lo_m[pt[1372-:7] - 1:0] = dccm_rd_data_lo[pt[1360-:10] - 1:pt[1382-:10]];
-	assign dccm_data_ecc_hi_m[pt[1372-:7] - 1:0] = dccm_rd_data_hi[pt[1360-:10] - 1:pt[1382-:10]];
-	assign picm_wren = (((lsu_pkt_r[0] & lsu_pkt_r[6]) & addr_in_pic_r) & lsu_commit_r) | dma_pic_wen;
-	assign picm_rden = (lsu_pkt_d[0] & lsu_pkt_d[7]) & addr_in_pic_d;
-	assign picm_mken = (lsu_pkt_d[0] & lsu_pkt_d[6]) & addr_in_pic_d;
-	assign picm_rdaddr[31:0] = pt[130-:36] | {{32 - pt[94-:9] {1'b0}}, lsu_addr_d[pt[94-:9] - 1:0]};
-	assign picm_wraddr[31:0] = pt[130-:36] | {{32 - pt[94-:9] {1'b0}}, (dma_pic_wen ? dma_mem_addr[pt[94-:9] - 1:0] : lsu_addr_r[pt[94-:9] - 1:0])};
-	assign picm_wr_data[31:0] = (dma_pic_wen ? dma_mem_wdata[31:0] : store_datafn_lo_r[31:0]);
-	assign picm_mask_data_m[31:0] = picm_rd_data_m[31:0];
-	assign picm_rd_data_m[63:0] = {picm_rd_data[31:0], picm_rd_data[31:0]};
-	generate
-		if (pt[1365-:5] == 1) begin : Gen_dccm_enable
-			rvdff #(.WIDTH(1)) dccm_rden_mff(
-				.rst_l(rst_l),
-				.din(lsu_dccm_rden_d),
-				.dout(lsu_dccm_rden_m),
-				.clk(lsu_c2_m_clk)
-			);
-			rvdff #(.WIDTH(1)) dccm_rden_rff(
-				.rst_l(rst_l),
-				.din(lsu_dccm_rden_m),
-				.dout(lsu_dccm_rden_r),
-				.clk(lsu_c2_r_clk)
-			);
-			rvdff #(.WIDTH(1)) ld_double_ecc_error_rff(
-				.rst_l(rst_l),
-				.din(lsu_double_ecc_error_r),
-				.dout(lsu_double_ecc_error_r_ff),
-				.clk(lsu_free_c2_clk)
-			);
-			rvdff #(.WIDTH(1)) ld_single_ecc_error_hi_rff(
-				.rst_l(rst_l),
-				.din(ld_single_ecc_error_hi_r_ns),
-				.dout(ld_single_ecc_error_hi_r_ff),
-				.clk(lsu_free_c2_clk)
-			);
-			rvdff #(.WIDTH(1)) ld_single_ecc_error_lo_rff(
-				.rst_l(rst_l),
-				.din(ld_single_ecc_error_lo_r_ns),
-				.dout(ld_single_ecc_error_lo_r_ff),
-				.clk(lsu_free_c2_clk)
-			);
-			rvdffe #(.WIDTH(pt[1398-:9])) ld_sec_addr_hi_rff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din(end_addr_r[pt[1398-:9] - 1:0]),
-				.dout(ld_sec_addr_hi_r_ff[pt[1398-:9] - 1:0]),
-				.en(ld_single_ecc_error_r | clk_override),
-				.clk(clk)
-			);
-			rvdffe #(.WIDTH(pt[1398-:9])) ld_sec_addr_lo_rff(
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din(lsu_addr_r[pt[1398-:9] - 1:0]),
-				.dout(ld_sec_addr_lo_r_ff[pt[1398-:9] - 1:0]),
-				.en(ld_single_ecc_error_r | clk_override),
-				.clk(clk)
-			);
-		end
-		else begin : Gen_dccm_disable
-			assign lsu_dccm_rden_m = 1'b0;
-			assign lsu_dccm_rden_r = 1'b0;
-			assign lsu_double_ecc_error_r_ff = 1'b0;
-			assign ld_single_ecc_error_hi_r_ff = 1'b0;
-			assign ld_single_ecc_error_lo_r_ff = 1'b0;
-			assign ld_sec_addr_hi_r_ff[pt[1398-:9] - 1:0] = {pt[1398-:9] {1'sb0}};
-			assign ld_sec_addr_lo_r_ff[pt[1398-:9] - 1:0] = {pt[1398-:9] {1'sb0}};
-		end
-	endgenerate
-endmodule
-module eb1_lsu_dccm_mem (
-	VPWR,
-	VGND,
-	clk,
-	active_clk,
-	rst_l,
-	clk_override,
-	dccm_wren,
-	dccm_rden,
-	dccm_wr_addr_lo,
-	dccm_wr_addr_hi,
-	dccm_rd_addr_lo,
-	dccm_rd_addr_hi,
-	dccm_wr_data_lo,
-	dccm_wr_data_hi,
-	dccm_ext_in_pkt,
-	dccm_rd_data_lo,
-	dccm_rd_data_hi,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire VPWR;
-	input wire VGND;
-	input wire clk;
-	input wire active_clk;
-	input wire rst_l;
-	input wire clk_override;
-	input wire dccm_wren;
-	input wire dccm_rden;
-	input wire [pt[1398-:9] - 1:0] dccm_wr_addr_lo;
-	input wire [pt[1398-:9] - 1:0] dccm_wr_addr_hi;
-	input wire [pt[1398-:9] - 1:0] dccm_rd_addr_lo;
-	input wire [pt[1398-:9] - 1:0] dccm_rd_addr_hi;
-	input wire [pt[1360-:10] - 1:0] dccm_wr_data_lo;
-	input wire [pt[1360-:10] - 1:0] dccm_wr_data_hi;
-	input wire [(pt[1342-:9] * 12) - 1:0] dccm_ext_in_pkt;
-	output wire [pt[1360-:10] - 1:0] dccm_rd_data_lo;
-	output wire [pt[1360-:10] - 1:0] dccm_rd_data_hi;
-	input wire scan_mode;
-	localparam DCCM_WIDTH_BITS = $clog2(pt[1389-:7]);
-	localparam DCCM_INDEX_BITS = (pt[1398-:9] - pt[1405-:7]) - pt[1275-:6];
-	localparam DCCM_INDEX_DEPTH = (pt[1289-:14] * 1024) / (pt[1389-:7] * pt[1342-:9]);
-	wire [pt[1342-:9] - 1:0] wren_bank;
-	wire [pt[1342-:9] - 1:0] rden_bank;
-	wire [((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? (pt[1342-:9] * (((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1)) + (pt[1405-:7] + 1) : (pt[1342-:9] * (((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)) + (pt[1398-:9] - 2)):((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1)] addr_bank;
-	wire [pt[1398-:9] - 1:pt[1405-:7] + DCCM_WIDTH_BITS] rd_addr_even;
-	wire [pt[1398-:9] - 1:pt[1405-:7] + DCCM_WIDTH_BITS] rd_addr_odd;
-	wire rd_unaligned;
-	wire wr_unaligned;
-	wire [(pt[1342-:9] * pt[1360-:10]) - 1:0] dccm_bank_dout;
-	wire [pt[1360-:10] - 1:0] wrdata;
-	wire [(pt[1342-:9] * pt[1360-:10]) - 1:0] wr_data_bank;
-	wire [(DCCM_WIDTH_BITS + pt[1405-:7]) - 1:DCCM_WIDTH_BITS] dccm_rd_addr_lo_q;
-	wire [(DCCM_WIDTH_BITS + pt[1405-:7]) - 1:DCCM_WIDTH_BITS] dccm_rd_addr_hi_q;
-	wire [pt[1342-:9] - 1:0] dccm_clken;
-	assign rd_unaligned = dccm_rd_addr_lo[DCCM_WIDTH_BITS+:pt[1405-:7]] != dccm_rd_addr_hi[DCCM_WIDTH_BITS+:pt[1405-:7]];
-	assign wr_unaligned = dccm_wr_addr_lo[DCCM_WIDTH_BITS+:pt[1405-:7]] != dccm_wr_addr_hi[DCCM_WIDTH_BITS+:pt[1405-:7]];
-	assign dccm_rd_data_lo[pt[1360-:10] - 1:0] = dccm_bank_dout[(dccm_rd_addr_lo_q[pt[1275-:6]+:pt[1405-:7]] * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]];
-	assign dccm_rd_data_hi[pt[1360-:10] - 1:0] = dccm_bank_dout[(dccm_rd_addr_hi_q[DCCM_WIDTH_BITS+:pt[1405-:7]] * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]];
-	generate
-		genvar i;
-		for (i = 0; i < pt[1342-:9]; i = i + 1) begin : mem_bank
-			assign wren_bank[i] = dccm_wren & ((dccm_wr_addr_hi[2+:pt[1405-:7]] == i) | (dccm_wr_addr_lo[2+:pt[1405-:7]] == i));
-			assign rden_bank[i] = dccm_rden & ((dccm_rd_addr_hi[2+:pt[1405-:7]] == i) | (dccm_rd_addr_lo[2+:pt[1405-:7]] == i));
-			assign addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)) + ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + DCCM_WIDTH_BITS : (pt[1405-:7] + 2) - ((pt[1405-:7] + DCCM_WIDTH_BITS) - (pt[1398-:9] - 1))) : (((i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)) + ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + DCCM_WIDTH_BITS : (pt[1405-:7] + 2) - ((pt[1405-:7] + DCCM_WIDTH_BITS) - (pt[1398-:9] - 1)))) - DCCM_INDEX_BITS) + 1)+:DCCM_INDEX_BITS] = (wren_bank[i] ? ((dccm_wr_addr_hi[2+:pt[1405-:7]] == i) & wr_unaligned ? dccm_wr_addr_hi[pt[1405-:7] + DCCM_WIDTH_BITS+:DCCM_INDEX_BITS] : dccm_wr_addr_lo[pt[1405-:7] + DCCM_WIDTH_BITS+:DCCM_INDEX_BITS]) : ((dccm_rd_addr_hi[2+:pt[1405-:7]] == i) & rd_unaligned ? dccm_rd_addr_hi[pt[1405-:7] + DCCM_WIDTH_BITS+:DCCM_INDEX_BITS] : dccm_rd_addr_lo[pt[1405-:7] + DCCM_WIDTH_BITS+:DCCM_INDEX_BITS]));
-			assign wr_data_bank[i * pt[1360-:10]+:pt[1360-:10]] = ((dccm_wr_addr_hi[2+:pt[1405-:7]] == i) & wr_unaligned ? dccm_wr_data_hi[pt[1360-:10] - 1:0] : dccm_wr_data_lo[pt[1360-:10] - 1:0]);
-			assign dccm_clken[i] = (wren_bank[i] | rden_bank[i]) | clk_override;
-			if (DCCM_INDEX_DEPTH == 32768) begin : dccm
-				ram_32768x39 dccm_bank(
-					.ME(dccm_clken[i]),
-					.CLK(clk),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1) + (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1))+:((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)]),
-					.D(wr_data_bank[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.Q(dccm_bank_dout[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.ROP(),
-					.TEST1(dccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(dccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(dccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(dccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(dccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(dccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(dccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(dccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(dccm_ext_in_pkt[i * 12]),
-					.*
-				);
-			end
-			else if (DCCM_INDEX_DEPTH == 16384) begin : dccm
-				ram_16384x39 dccm_bank(
-					.ME(dccm_clken[i]),
-					.CLK(clk),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1) + (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1))+:((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)]),
-					.D(wr_data_bank[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.Q(dccm_bank_dout[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.ROP(),
-					.TEST1(dccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(dccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(dccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(dccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(dccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(dccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(dccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(dccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(dccm_ext_in_pkt[i * 12]),
-					.*
-				);
-			end
-			else if (DCCM_INDEX_DEPTH == 8192) begin : dccm
-				ram_8192x39 dccm_bank(
-					.ME(dccm_clken[i]),
-					.CLK(clk),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1) + (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1))+:((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)]),
-					.D(wr_data_bank[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.Q(dccm_bank_dout[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.ROP(),
-					.TEST1(dccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(dccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(dccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(dccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(dccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(dccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(dccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(dccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(dccm_ext_in_pkt[i * 12]),
-					.*
-				);
-			end
-			else if (DCCM_INDEX_DEPTH == 4096) begin : dccm
-				ram_4096x39 dccm_bank(
-					.ME(dccm_clken[i]),
-					.CLK(clk),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1) + (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1))+:((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)]),
-					.D(wr_data_bank[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.Q(dccm_bank_dout[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.ROP(),
-					.TEST1(dccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(dccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(dccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(dccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(dccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(dccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(dccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(dccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(dccm_ext_in_pkt[i * 12]),
-					.*
-				);
-			end
-			else if (DCCM_INDEX_DEPTH == 3072) begin : dccm
-				ram_3072x39 dccm_bank(
-					.ME(dccm_clken[i]),
-					.CLK(clk),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1) + (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1))+:((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)]),
-					.D(wr_data_bank[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.Q(dccm_bank_dout[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.ROP(),
-					.TEST1(dccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(dccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(dccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(dccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(dccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(dccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(dccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(dccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(dccm_ext_in_pkt[i * 12]),
-					.*
-				);
-			end
-			else if (DCCM_INDEX_DEPTH == 2048) begin : dccm
-				ram_2048x39 dccm_bank(
-					.ME(dccm_clken[i]),
-					.CLK(clk),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1) + (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1))+:((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)]),
-					.D(wr_data_bank[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.Q(dccm_bank_dout[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.ROP(),
-					.TEST1(dccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(dccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(dccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(dccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(dccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(dccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(dccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(dccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(dccm_ext_in_pkt[i * 12]),
-					.*
-				);
-			end
-			else if (DCCM_INDEX_DEPTH == 1024) begin : dccm
-				sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-					.vccd1(VPWR),
-					.vssd1(VGND),
-					.clk0(clk),
-					.csb0(~dccm_clken[i]),
-					.web0(~wren_bank[i]),
-					.wmask0(4'hf),
-					.addr0(addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1) + (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1))+:((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)]),
-					.din0(wr_data_bank[i * pt[1360-:10]+:pt[1360-:10]]),
-					.dout0(dccm_bank_dout[i * pt[1360-:10]+:pt[1360-:10]]),
-					.clk1(clk),
-					.csb1(1'b1),
-					.addr1(8'h00),
-					.dout1()
-				);
-			end
-			else if (DCCM_INDEX_DEPTH == 512) begin : dccm
-				ram_512x39 dccm_bank(
-					.ME(dccm_clken[i]),
-					.CLK(clk),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1) + (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1))+:((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)]),
-					.D(wr_data_bank[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.Q(dccm_bank_dout[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.ROP(),
-					.TEST1(dccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(dccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(dccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(dccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(dccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(dccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(dccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(dccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(dccm_ext_in_pkt[i * 12]),
-					.*
-				);
-			end
-			else if (DCCM_INDEX_DEPTH == 256) begin : dccm
-				sky130_sram_1kbyte_1rw1r_32x256_8 sram(
-					.vccd1(VPWR),
-					.vssd1(VGND),
-					.clk0(clk),
-					.csb0(~dccm_clken[i]),
-					.web0(~wren_bank[i]),
-					.wmask0(4'hf),
-					.addr0(addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1) + (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1))+:((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)]),
-					.din0(wr_data_bank[(i * pt[1360-:10]) + 31-:32]),
-					.dout0(dccm_bank_dout[(i * pt[1360-:10]) + 31-:32]),
-					.clk1(clk),
-					.csb1(1'b1),
-					.addr1(8'h00),
-					.dout1()
-				);
-			end
-			else if (DCCM_INDEX_DEPTH == 128) begin : dccm
-				ram_128x39 dccm_bank(
-					.ME(dccm_clken[i]),
-					.CLK(clk),
-					.WE(wren_bank[i]),
-					.ADR(addr_bank[((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? pt[1405-:7] + 2 : pt[1398-:9] - 1) + (i * ((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1))+:((pt[1398-:9] - 1) >= (pt[1405-:7] + 2) ? ((pt[1398-:9] - 1) - (pt[1405-:7] + 2)) + 1 : ((pt[1405-:7] + 2) - (pt[1398-:9] - 1)) + 1)]),
-					.D(wr_data_bank[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.Q(dccm_bank_dout[(i * pt[1360-:10]) + (pt[1360-:10] - 1)-:pt[1360-:10]]),
-					.ROP(),
-					.TEST1(dccm_ext_in_pkt[(i * 12) + 11]),
-					.RME(dccm_ext_in_pkt[(i * 12) + 10]),
-					.RM(dccm_ext_in_pkt[(i * 12) + 9-:4]),
-					.LS(dccm_ext_in_pkt[(i * 12) + 5]),
-					.DS(dccm_ext_in_pkt[(i * 12) + 4]),
-					.SD(dccm_ext_in_pkt[(i * 12) + 3]),
-					.TEST_RNM(dccm_ext_in_pkt[(i * 12) + 2]),
-					.BC1(dccm_ext_in_pkt[(i * 12) + 1]),
-					.BC2(dccm_ext_in_pkt[i * 12]),
-					.*
-				);
-			end
-		end
-	endgenerate
-	rvdff #(.WIDTH(pt[1405-:7])) rd_addr_lo_ff(
-		.rst_l(rst_l),
-		.din(dccm_rd_addr_lo[DCCM_WIDTH_BITS+:pt[1405-:7]]),
-		.dout(dccm_rd_addr_lo_q[DCCM_WIDTH_BITS+:pt[1405-:7]]),
-		.clk(active_clk)
-	);
-	rvdff #(.WIDTH(pt[1405-:7])) rd_addr_hi_ff(
-		.rst_l(rst_l),
-		.din(dccm_rd_addr_hi[DCCM_WIDTH_BITS+:pt[1405-:7]]),
-		.dout(dccm_rd_addr_hi_q[DCCM_WIDTH_BITS+:pt[1405-:7]]),
-		.clk(active_clk)
-	);
-endmodule
-module eb1_lsu_ecc (
-	clk,
-	lsu_c2_r_clk,
-	clk_override,
-	rst_l,
-	scan_mode,
-	lsu_pkt_m,
-	lsu_pkt_r,
-	stbuf_data_any,
-	dec_tlu_core_ecc_disable,
-	lsu_dccm_rden_r,
-	addr_in_dccm_r,
-	lsu_addr_r,
-	end_addr_r,
-	dccm_rdata_hi_r,
-	dccm_rdata_lo_r,
-	dccm_data_ecc_hi_r,
-	dccm_data_ecc_lo_r,
-	sec_data_hi_r,
-	sec_data_lo_r,
-	sec_data_hi_r_ff,
-	sec_data_lo_r_ff,
-	ld_single_ecc_error_r,
-	ld_single_ecc_error_r_ff,
-	lsu_dccm_rden_m,
-	addr_in_dccm_m,
-	lsu_addr_m,
-	end_addr_m,
-	dccm_rdata_hi_m,
-	dccm_rdata_lo_m,
-	dccm_data_ecc_hi_m,
-	dccm_data_ecc_lo_m,
-	sec_data_hi_m,
-	sec_data_lo_m,
-	dma_dccm_wen,
-	dma_dccm_wdata_lo,
-	dma_dccm_wdata_hi,
-	dma_dccm_wdata_ecc_hi,
-	dma_dccm_wdata_ecc_lo,
-	stbuf_ecc_any,
-	sec_data_ecc_hi_r_ff,
-	sec_data_ecc_lo_r_ff,
-	single_ecc_error_hi_r,
-	single_ecc_error_lo_r,
-	lsu_single_ecc_error_r,
-	lsu_double_ecc_error_r,
-	lsu_single_ecc_error_m,
-	lsu_double_ecc_error_m
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire lsu_c2_r_clk;
-	input wire clk_override;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire [13:0] lsu_pkt_m;
-	input wire [13:0] lsu_pkt_r;
-	input wire [pt[1382-:10] - 1:0] stbuf_data_any;
-	input wire dec_tlu_core_ecc_disable;
-	input wire lsu_dccm_rden_r;
-	input wire addr_in_dccm_r;
-	input wire [pt[1398-:9] - 1:0] lsu_addr_r;
-	input wire [pt[1398-:9] - 1:0] end_addr_r;
-	input wire [pt[1382-:10] - 1:0] dccm_rdata_hi_r;
-	input wire [pt[1382-:10] - 1:0] dccm_rdata_lo_r;
-	input wire [pt[1372-:7] - 1:0] dccm_data_ecc_hi_r;
-	input wire [pt[1372-:7] - 1:0] dccm_data_ecc_lo_r;
-	output wire [pt[1382-:10] - 1:0] sec_data_hi_r;
-	output wire [pt[1382-:10] - 1:0] sec_data_lo_r;
-	output wire [pt[1382-:10] - 1:0] sec_data_hi_r_ff;
-	output wire [pt[1382-:10] - 1:0] sec_data_lo_r_ff;
-	input wire ld_single_ecc_error_r;
-	input wire ld_single_ecc_error_r_ff;
-	input wire lsu_dccm_rden_m;
-	input wire addr_in_dccm_m;
-	input wire [pt[1398-:9] - 1:0] lsu_addr_m;
-	input wire [pt[1398-:9] - 1:0] end_addr_m;
-	input wire [pt[1382-:10] - 1:0] dccm_rdata_hi_m;
-	input wire [pt[1382-:10] - 1:0] dccm_rdata_lo_m;
-	input wire [pt[1372-:7] - 1:0] dccm_data_ecc_hi_m;
-	input wire [pt[1372-:7] - 1:0] dccm_data_ecc_lo_m;
-	output wire [pt[1382-:10] - 1:0] sec_data_hi_m;
-	output wire [pt[1382-:10] - 1:0] sec_data_lo_m;
-	input wire dma_dccm_wen;
-	input wire [31:0] dma_dccm_wdata_lo;
-	input wire [31:0] dma_dccm_wdata_hi;
-	output wire [pt[1372-:7] - 1:0] dma_dccm_wdata_ecc_hi;
-	output wire [pt[1372-:7] - 1:0] dma_dccm_wdata_ecc_lo;
-	output wire [pt[1372-:7] - 1:0] stbuf_ecc_any;
-	output wire [pt[1372-:7] - 1:0] sec_data_ecc_hi_r_ff;
-	output wire [pt[1372-:7] - 1:0] sec_data_ecc_lo_r_ff;
-	output wire single_ecc_error_hi_r;
-	output wire single_ecc_error_lo_r;
-	output wire lsu_single_ecc_error_r;
-	output wire lsu_double_ecc_error_r;
-	output wire lsu_single_ecc_error_m;
-	output wire lsu_double_ecc_error_m;
-	wire is_ldst_r;
-	wire is_ldst_hi_any;
-	wire is_ldst_lo_any;
-	wire [pt[1382-:10] - 1:0] dccm_wdata_hi_any;
-	wire [pt[1382-:10] - 1:0] dccm_wdata_lo_any;
-	wire [pt[1372-:7] - 1:0] dccm_wdata_ecc_hi_any;
-	wire [pt[1372-:7] - 1:0] dccm_wdata_ecc_lo_any;
-	wire [pt[1382-:10] - 1:0] dccm_rdata_hi_any;
-	wire [pt[1382-:10] - 1:0] dccm_rdata_lo_any;
-	wire [pt[1372-:7] - 1:0] dccm_data_ecc_hi_any;
-	wire [pt[1372-:7] - 1:0] dccm_data_ecc_lo_any;
-	wire [pt[1382-:10] - 1:0] sec_data_hi_any;
-	wire [pt[1382-:10] - 1:0] sec_data_lo_any;
-	wire single_ecc_error_hi_any;
-	wire single_ecc_error_lo_any;
-	wire double_ecc_error_hi_any;
-	wire double_ecc_error_lo_any;
-	wire double_ecc_error_hi_m;
-	wire double_ecc_error_lo_m;
-	wire double_ecc_error_hi_r;
-	wire double_ecc_error_lo_r;
-	wire [6:0] ecc_out_hi_nc;
-	wire [6:0] ecc_out_lo_nc;
-	generate
-		if (pt[202-:5] == 1) begin : L2U_Plus1_1
-			wire ldst_dual_m;
-			wire ldst_dual_r;
-			wire is_ldst_m;
-			wire is_ldst_hi_r;
-			wire is_ldst_lo_r;
-			assign ldst_dual_r = lsu_addr_r[2] != end_addr_r[2];
-			assign is_ldst_r = ((lsu_pkt_r[0] & (lsu_pkt_r[7] | lsu_pkt_r[6])) & addr_in_dccm_r) & lsu_dccm_rden_r;
-			assign is_ldst_lo_r = is_ldst_r & ~dec_tlu_core_ecc_disable;
-			assign is_ldst_hi_r = (is_ldst_r & ldst_dual_r) & ~dec_tlu_core_ecc_disable;
-			assign is_ldst_hi_any = is_ldst_hi_r;
-			assign dccm_rdata_hi_any[pt[1382-:10] - 1:0] = dccm_rdata_hi_r[pt[1382-:10] - 1:0];
-			assign dccm_data_ecc_hi_any[pt[1372-:7] - 1:0] = dccm_data_ecc_hi_r[pt[1372-:7] - 1:0];
-			assign is_ldst_lo_any = is_ldst_lo_r;
-			assign dccm_rdata_lo_any[pt[1382-:10] - 1:0] = dccm_rdata_lo_r[pt[1382-:10] - 1:0];
-			assign dccm_data_ecc_lo_any[pt[1372-:7] - 1:0] = dccm_data_ecc_lo_r[pt[1372-:7] - 1:0];
-			assign sec_data_hi_r[pt[1382-:10] - 1:0] = sec_data_hi_any[pt[1382-:10] - 1:0];
-			assign single_ecc_error_hi_r = single_ecc_error_hi_any;
-			assign double_ecc_error_hi_r = double_ecc_error_hi_any;
-			assign sec_data_lo_r[pt[1382-:10] - 1:0] = sec_data_lo_any[pt[1382-:10] - 1:0];
-			assign single_ecc_error_lo_r = single_ecc_error_lo_any;
-			assign double_ecc_error_lo_r = double_ecc_error_lo_any;
-			assign lsu_single_ecc_error_r = single_ecc_error_hi_r | single_ecc_error_lo_r;
-			assign lsu_double_ecc_error_r = double_ecc_error_hi_r | double_ecc_error_lo_r;
-		end
-		else begin : L2U_Plus1_0
-			wire ldst_dual_m;
-			wire is_ldst_m;
-			wire is_ldst_hi_m;
-			wire is_ldst_lo_m;
-			assign ldst_dual_m = lsu_addr_m[2] != end_addr_m[2];
-			assign is_ldst_m = ((lsu_pkt_m[0] & (lsu_pkt_m[7] | lsu_pkt_m[6])) & addr_in_dccm_m) & lsu_dccm_rden_m;
-			assign is_ldst_lo_m = is_ldst_m & ~dec_tlu_core_ecc_disable;
-			assign is_ldst_hi_m = (is_ldst_m & (ldst_dual_m | lsu_pkt_m[4])) & ~dec_tlu_core_ecc_disable;
-			assign is_ldst_hi_any = is_ldst_hi_m;
-			assign dccm_rdata_hi_any[pt[1382-:10] - 1:0] = dccm_rdata_hi_m[pt[1382-:10] - 1:0];
-			assign dccm_data_ecc_hi_any[pt[1372-:7] - 1:0] = dccm_data_ecc_hi_m[pt[1372-:7] - 1:0];
-			assign is_ldst_lo_any = is_ldst_lo_m;
-			assign dccm_rdata_lo_any[pt[1382-:10] - 1:0] = dccm_rdata_lo_m[pt[1382-:10] - 1:0];
-			assign dccm_data_ecc_lo_any[pt[1372-:7] - 1:0] = dccm_data_ecc_lo_m[pt[1372-:7] - 1:0];
-			assign sec_data_hi_m[pt[1382-:10] - 1:0] = sec_data_hi_any[pt[1382-:10] - 1:0];
-			assign double_ecc_error_hi_m = double_ecc_error_hi_any;
-			assign sec_data_lo_m[pt[1382-:10] - 1:0] = sec_data_lo_any[pt[1382-:10] - 1:0];
-			assign double_ecc_error_lo_m = double_ecc_error_lo_any;
-			assign lsu_single_ecc_error_m = single_ecc_error_hi_any | single_ecc_error_lo_any;
-			assign lsu_double_ecc_error_m = double_ecc_error_hi_m | double_ecc_error_lo_m;
-			rvdff #(.WIDTH(1)) lsu_single_ecc_err_r(
-				.din(lsu_single_ecc_error_m),
-				.dout(lsu_single_ecc_error_r),
-				.clk(lsu_c2_r_clk),
-				.rst_l(rst_l)
-			);
-			rvdff #(.WIDTH(1)) lsu_double_ecc_err_r(
-				.din(lsu_double_ecc_error_m),
-				.dout(lsu_double_ecc_error_r),
-				.clk(lsu_c2_r_clk),
-				.rst_l(rst_l)
-			);
-			rvdff #(.WIDTH(1)) ldst_sec_lo_rff(
-				.din(single_ecc_error_lo_any),
-				.dout(single_ecc_error_lo_r),
-				.clk(lsu_c2_r_clk),
-				.rst_l(rst_l)
-			);
-			rvdff #(.WIDTH(1)) ldst_sec_hi_rff(
-				.din(single_ecc_error_hi_any),
-				.dout(single_ecc_error_hi_r),
-				.clk(lsu_c2_r_clk),
-				.rst_l(rst_l)
-			);
-			rvdffe #(.WIDTH(pt[1382-:10])) sec_data_hi_rff(
-				.din(sec_data_hi_m[pt[1382-:10] - 1:0]),
-				.dout(sec_data_hi_r[pt[1382-:10] - 1:0]),
-				.en(lsu_single_ecc_error_m | clk_override),
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode)
-			);
-			rvdffe #(.WIDTH(pt[1382-:10])) sec_data_lo_rff(
-				.din(sec_data_lo_m[pt[1382-:10] - 1:0]),
-				.dout(sec_data_lo_r[pt[1382-:10] - 1:0]),
-				.en(lsu_single_ecc_error_m | clk_override),
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode)
-			);
-		end
-	endgenerate
-	assign dccm_wdata_lo_any[pt[1382-:10] - 1:0] = (ld_single_ecc_error_r_ff ? sec_data_lo_r_ff[pt[1382-:10] - 1:0] : (dma_dccm_wen ? dma_dccm_wdata_lo[pt[1382-:10] - 1:0] : stbuf_data_any[pt[1382-:10] - 1:0]));
-	assign dccm_wdata_hi_any[pt[1382-:10] - 1:0] = (ld_single_ecc_error_r_ff ? sec_data_hi_r_ff[pt[1382-:10] - 1:0] : (dma_dccm_wen ? dma_dccm_wdata_hi[pt[1382-:10] - 1:0] : 32'h00000000));
-	assign sec_data_ecc_hi_r_ff[pt[1372-:7] - 1:0] = dccm_wdata_ecc_hi_any[pt[1372-:7] - 1:0];
-	assign sec_data_ecc_lo_r_ff[pt[1372-:7] - 1:0] = dccm_wdata_ecc_lo_any[pt[1372-:7] - 1:0];
-	assign stbuf_ecc_any[pt[1372-:7] - 1:0] = dccm_wdata_ecc_lo_any[pt[1372-:7] - 1:0];
-	assign dma_dccm_wdata_ecc_hi[pt[1372-:7] - 1:0] = dccm_wdata_ecc_hi_any[pt[1372-:7] - 1:0];
-	assign dma_dccm_wdata_ecc_lo[pt[1372-:7] - 1:0] = dccm_wdata_ecc_lo_any[pt[1372-:7] - 1:0];
-	generate
-		if (pt[1365-:5] == 1) begin : Gen_dccm_enable
-			rvecc_decode lsu_ecc_decode_hi(
-				.en(is_ldst_hi_any),
-				.sed_ded(1'b0),
-				.din(dccm_rdata_hi_any[pt[1382-:10] - 1:0]),
-				.ecc_in(dccm_data_ecc_hi_any[pt[1372-:7] - 1:0]),
-				.dout(sec_data_hi_any[pt[1382-:10] - 1:0]),
-				.ecc_out(ecc_out_hi_nc[6:0]),
-				.single_ecc_error(single_ecc_error_hi_any),
-				.double_ecc_error(double_ecc_error_hi_any)
-			);
-			rvecc_decode lsu_ecc_decode_lo(
-				.en(is_ldst_lo_any),
-				.sed_ded(1'b0),
-				.din(dccm_rdata_lo_any[pt[1382-:10] - 1:0]),
-				.ecc_in(dccm_data_ecc_lo_any[pt[1372-:7] - 1:0]),
-				.dout(sec_data_lo_any[pt[1382-:10] - 1:0]),
-				.ecc_out(ecc_out_lo_nc[6:0]),
-				.single_ecc_error(single_ecc_error_lo_any),
-				.double_ecc_error(double_ecc_error_lo_any)
-			);
-			rvecc_encode lsu_ecc_encode_hi(
-				.din(dccm_wdata_hi_any[pt[1382-:10] - 1:0]),
-				.ecc_out(dccm_wdata_ecc_hi_any[pt[1372-:7] - 1:0])
-			);
-			rvecc_encode lsu_ecc_encode_lo(
-				.din(dccm_wdata_lo_any[pt[1382-:10] - 1:0]),
-				.ecc_out(dccm_wdata_ecc_lo_any[pt[1372-:7] - 1:0])
-			);
-		end
-		else begin : Gen_dccm_disable
-			assign sec_data_hi_any[pt[1382-:10] - 1:0] = {pt[1382-:10] {1'sb0}};
-			assign sec_data_lo_any[pt[1382-:10] - 1:0] = {pt[1382-:10] {1'sb0}};
-			assign single_ecc_error_hi_any = 1'b0;
-			assign double_ecc_error_hi_any = 1'b0;
-			assign single_ecc_error_lo_any = 1'b0;
-			assign double_ecc_error_lo_any = 1'b0;
-		end
-	endgenerate
-	rvdffe #(.WIDTH(pt[1382-:10])) sec_data_hi_rplus1ff(
-		.din(sec_data_hi_r[pt[1382-:10] - 1:0]),
-		.dout(sec_data_hi_r_ff[pt[1382-:10] - 1:0]),
-		.en(ld_single_ecc_error_r | clk_override),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-	rvdffe #(.WIDTH(pt[1382-:10])) sec_data_lo_rplus1ff(
-		.din(sec_data_lo_r[pt[1382-:10] - 1:0]),
-		.dout(sec_data_lo_r_ff[pt[1382-:10] - 1:0]),
-		.en(ld_single_ecc_error_r | clk_override),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode)
-	);
-endmodule
-module eb1_lsu_lsc_ctl (
-	rst_l,
-	clk_override,
-	clk,
-	lsu_c1_m_clk,
-	lsu_c1_r_clk,
-	lsu_c2_m_clk,
-	lsu_c2_r_clk,
-	lsu_store_c1_m_clk,
-	lsu_ld_data_r,
-	lsu_ld_data_corr_r,
-	lsu_single_ecc_error_r,
-	lsu_double_ecc_error_r,
-	lsu_ld_data_m,
-	lsu_single_ecc_error_m,
-	lsu_double_ecc_error_m,
-	flush_m_up,
-	flush_r,
-	ldst_dual_d,
-	ldst_dual_m,
-	ldst_dual_r,
-	exu_lsu_rs1_d,
-	exu_lsu_rs2_d,
-	lsu_p,
-	dec_lsu_valid_raw_d,
-	dec_lsu_offset_d,
-	picm_mask_data_m,
-	bus_read_data_m,
-	lsu_result_m,
-	lsu_result_corr_r,
-	lsu_addr_d,
-	lsu_addr_m,
-	lsu_addr_r,
-	end_addr_d,
-	end_addr_m,
-	end_addr_r,
-	store_data_m,
-	dec_tlu_mrac_ff,
-	lsu_exc_m,
-	is_sideeffects_m,
-	lsu_commit_r,
-	lsu_single_ecc_error_incr,
-	lsu_error_pkt_r,
-	lsu_fir_addr,
-	lsu_fir_error,
-	addr_in_dccm_d,
-	addr_in_dccm_m,
-	addr_in_dccm_r,
-	addr_in_pic_d,
-	addr_in_pic_m,
-	addr_in_pic_r,
-	addr_external_m,
-	dma_dccm_req,
-	dma_mem_addr,
-	dma_mem_sz,
-	dma_mem_write,
-	dma_mem_wdata,
-	lsu_pkt_d,
-	lsu_pkt_m,
-	lsu_pkt_r,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire rst_l;
-	input wire clk_override;
-	input wire clk;
-	input wire lsu_c1_m_clk;
-	input wire lsu_c1_r_clk;
-	input wire lsu_c2_m_clk;
-	input wire lsu_c2_r_clk;
-	input wire lsu_store_c1_m_clk;
-	input wire [31:0] lsu_ld_data_r;
-	input wire [31:0] lsu_ld_data_corr_r;
-	input wire lsu_single_ecc_error_r;
-	input wire lsu_double_ecc_error_r;
-	input wire [31:0] lsu_ld_data_m;
-	input wire lsu_single_ecc_error_m;
-	input wire lsu_double_ecc_error_m;
-	input wire flush_m_up;
-	input wire flush_r;
-	input wire ldst_dual_d;
-	input wire ldst_dual_m;
-	input wire ldst_dual_r;
-	input wire [31:0] exu_lsu_rs1_d;
-	input wire [31:0] exu_lsu_rs2_d;
-	input wire [13:0] lsu_p;
-	input wire dec_lsu_valid_raw_d;
-	input wire [11:0] dec_lsu_offset_d;
-	input wire [31:0] picm_mask_data_m;
-	input wire [31:0] bus_read_data_m;
-	output wire [31:0] lsu_result_m;
-	output wire [31:0] lsu_result_corr_r;
-	output wire [31:0] lsu_addr_d;
-	output wire [31:0] lsu_addr_m;
-	output wire [31:0] lsu_addr_r;
-	output wire [31:0] end_addr_d;
-	output wire [31:0] end_addr_m;
-	output wire [31:0] end_addr_r;
-	output wire [31:0] store_data_m;
-	input wire [31:0] dec_tlu_mrac_ff;
-	output wire lsu_exc_m;
-	output wire is_sideeffects_m;
-	output wire lsu_commit_r;
-	output wire lsu_single_ecc_error_incr;
-	output wire [39:0] lsu_error_pkt_r;
-	output wire [31:1] lsu_fir_addr;
-	output wire [1:0] lsu_fir_error;
-	output wire addr_in_dccm_d;
-	output wire addr_in_dccm_m;
-	output wire addr_in_dccm_r;
-	output wire addr_in_pic_d;
-	output wire addr_in_pic_m;
-	output wire addr_in_pic_r;
-	output wire addr_external_m;
-	input wire dma_dccm_req;
-	input wire [31:0] dma_mem_addr;
-	input wire [2:0] dma_mem_sz;
-	input wire dma_mem_write;
-	input wire [63:0] dma_mem_wdata;
-	output reg [13:0] lsu_pkt_d;
-	output wire [13:0] lsu_pkt_m;
-	output wire [13:0] lsu_pkt_r;
-	input wire scan_mode;
-	wire [31:3] end_addr_pre_m;
-	wire [31:3] end_addr_pre_r;
-	wire [31:0] full_addr_d;
-	wire [31:0] full_end_addr_d;
-	wire [31:0] lsu_rs1_d;
-	wire [11:0] lsu_offset_d;
-	wire [31:0] rs1_d;
-	wire [11:0] offset_d;
-	wire [12:0] end_addr_offset_d;
-	wire [2:0] addr_offset_d;
-	wire [63:0] dma_mem_wdata_shifted;
-	wire addr_external_d;
-	wire addr_external_r;
-	wire access_fault_d;
-	wire misaligned_fault_d;
-	wire access_fault_m;
-	wire misaligned_fault_m;
-	wire fir_dccm_access_error_d;
-	wire fir_nondccm_access_error_d;
-	wire fir_dccm_access_error_m;
-	wire fir_nondccm_access_error_m;
-	wire [3:0] exc_mscause_d;
-	wire [3:0] exc_mscause_m;
-	wire [31:0] rs1_d_raw;
-	wire [31:0] store_data_d;
-	wire [31:0] store_data_pre_m;
-	wire [31:0] store_data_m_in;
-	wire [31:0] bus_read_data_r;
-	reg [13:0] dma_pkt_d;
-	reg [13:0] lsu_pkt_m_in;
-	reg [13:0] lsu_pkt_r_in;
-	wire [39:0] lsu_error_pkt_m;
-	assign lsu_rs1_d[31:0] = (dec_lsu_valid_raw_d ? exu_lsu_rs1_d[31:0] : dma_mem_addr[31:0]);
-	assign lsu_offset_d[11:0] = dec_lsu_offset_d[11:0] & {12 {dec_lsu_valid_raw_d}};
-	assign rs1_d_raw[31:0] = lsu_rs1_d[31:0];
-	assign offset_d[11:0] = lsu_offset_d[11:0];
-	assign rs1_d[31:0] = (lsu_pkt_d[2] ? lsu_result_m[31:0] : rs1_d_raw[31:0]);
-	rvlsadder lsadder(
-		.rs1(rs1_d[31:0]),
-		.offset(offset_d[11:0]),
-		.dout(full_addr_d[31:0])
-	);
-	eb1_lsu_addrcheck #(.pt(pt)) addrcheck(
-		.start_addr_d(full_addr_d[31:0]),
-		.end_addr_d(full_end_addr_d[31:0]),
-		.rs1_region_d(rs1_d[31:28]),
-		.lsu_c2_m_clk(lsu_c2_m_clk),
-		.rst_l(rst_l),
-		.lsu_pkt_d(lsu_pkt_d),
-		.dec_tlu_mrac_ff(dec_tlu_mrac_ff),
-		.rs1_d(rs1_d),
-		.is_sideeffects_m(is_sideeffects_m),
-		.addr_in_dccm_d(addr_in_dccm_d),
-		.addr_in_pic_d(addr_in_pic_d),
-		.addr_external_d(addr_external_d),
-		.access_fault_d(access_fault_d),
-		.misaligned_fault_d(misaligned_fault_d),
-		.exc_mscause_d(exc_mscause_d),
-		.fir_dccm_access_error_d(fir_dccm_access_error_d),
-		.fir_nondccm_access_error_d(fir_nondccm_access_error_d),
-		.scan_mode(scan_mode)
-	);
-	assign addr_offset_d[2:0] = (({3 {lsu_pkt_d[10]}} & 3'b001) | ({3 {lsu_pkt_d[9]}} & 3'b011)) | ({3 {lsu_pkt_d[8]}} & 3'b111);
-	assign end_addr_offset_d[12:0] = {offset_d[11], offset_d[11:0]} + {9'b000000000, addr_offset_d[2:0]};
-	assign full_end_addr_d[31:0] = rs1_d[31:0] + {{19 {end_addr_offset_d[12]}}, end_addr_offset_d[12:0]};
-	assign end_addr_d[31:0] = full_end_addr_d[31:0];
-	assign lsu_exc_m = access_fault_m | misaligned_fault_m;
-	assign lsu_single_ecc_error_incr = ((lsu_single_ecc_error_r & ~lsu_double_ecc_error_r) & (lsu_commit_r | lsu_pkt_r[4])) & lsu_pkt_r[0];
-	generate
-		if (pt[202-:5] == 1) begin : L2U_Plus1_1
-			wire access_fault_r;
-			wire misaligned_fault_r;
-			wire [3:0] exc_mscause_r;
-			wire fir_dccm_access_error_r;
-			wire fir_nondccm_access_error_r;
-			assign lsu_error_pkt_r[0] = ((((access_fault_r | misaligned_fault_r) | lsu_double_ecc_error_r) & lsu_pkt_r[0]) & ~lsu_pkt_r[4]) & ~lsu_pkt_r[13];
-			assign lsu_error_pkt_r[1] = (lsu_single_ecc_error_r & ~lsu_error_pkt_r[0]) & ~lsu_pkt_r[4];
-			assign lsu_error_pkt_r[39] = lsu_pkt_r[6];
-			assign lsu_error_pkt_r[38] = ~misaligned_fault_r;
-			assign lsu_error_pkt_r[37:34] = ((lsu_double_ecc_error_r & ~misaligned_fault_r) & ~access_fault_r ? 4'h1 : exc_mscause_r[3:0]);
-			assign lsu_error_pkt_r[33:2] = lsu_addr_r[31:0];
-			assign lsu_fir_error[1:0] = (fir_nondccm_access_error_r ? 2'b11 : (fir_dccm_access_error_r ? 2'b10 : (lsu_pkt_r[13] & lsu_double_ecc_error_r ? 2'b01 : 2'b00)));
-			rvdff #(.WIDTH(1)) access_fault_rff(
-				.din(access_fault_m),
-				.dout(access_fault_r),
-				.clk(lsu_c1_r_clk),
-				.rst_l(rst_l)
-			);
-			rvdff #(.WIDTH(1)) misaligned_fault_rff(
-				.din(misaligned_fault_m),
-				.dout(misaligned_fault_r),
-				.clk(lsu_c1_r_clk),
-				.rst_l(rst_l)
-			);
-			rvdff #(.WIDTH(4)) exc_mscause_rff(
-				.din(exc_mscause_m[3:0]),
-				.dout(exc_mscause_r[3:0]),
-				.clk(lsu_c1_r_clk),
-				.rst_l(rst_l)
-			);
-			rvdff #(.WIDTH(1)) fir_dccm_access_error_mff(
-				.din(fir_dccm_access_error_m),
-				.dout(fir_dccm_access_error_r),
-				.clk(lsu_c1_r_clk),
-				.rst_l(rst_l)
-			);
-			rvdff #(.WIDTH(1)) fir_nondccm_access_error_mff(
-				.din(fir_nondccm_access_error_m),
-				.dout(fir_nondccm_access_error_r),
-				.clk(lsu_c1_r_clk),
-				.rst_l(rst_l)
-			);
-		end
-		else begin : L2U_Plus1_0
-			wire [1:0] lsu_fir_error_m;
-			assign lsu_error_pkt_m[0] = (((((access_fault_m | misaligned_fault_m) | lsu_double_ecc_error_m) & lsu_pkt_m[0]) & ~lsu_pkt_m[4]) & ~lsu_pkt_m[13]) & ~flush_m_up;
-			assign lsu_error_pkt_m[1] = (lsu_single_ecc_error_m & ~lsu_error_pkt_m[0]) & ~lsu_pkt_m[4];
-			assign lsu_error_pkt_m[39] = lsu_pkt_m[6];
-			assign lsu_error_pkt_m[38] = ~misaligned_fault_m;
-			assign lsu_error_pkt_m[37:34] = ((lsu_double_ecc_error_m & ~misaligned_fault_m) & ~access_fault_m ? 4'h1 : exc_mscause_m[3:0]);
-			assign lsu_error_pkt_m[33:2] = lsu_addr_m[31:0];
-			assign lsu_fir_error_m[1:0] = (fir_nondccm_access_error_m ? 2'b11 : (fir_dccm_access_error_m ? 2'b10 : (lsu_pkt_m[13] & lsu_double_ecc_error_m ? 2'b01 : 2'b00)));
-			rvdff #(.WIDTH(1)) lsu_exc_valid_rff(
-				.rst_l(rst_l),
-				.din(lsu_error_pkt_m[0]),
-				.dout(lsu_error_pkt_r[0]),
-				.clk(lsu_c2_r_clk)
-			);
-			rvdff #(.WIDTH(1)) lsu_single_ecc_error_rff(
-				.rst_l(rst_l),
-				.din(lsu_error_pkt_m[1]),
-				.dout(lsu_error_pkt_r[1]),
-				.clk(lsu_c2_r_clk)
-			);
-			rvdffe #(.WIDTH(38)) lsu_error_pkt_rff(
-				.clk(clk),
-				.rst_l(rst_l),
-				.scan_mode(scan_mode),
-				.din(lsu_error_pkt_m[39:2]),
-				.dout(lsu_error_pkt_r[39:2]),
-				.en((lsu_error_pkt_m[0] | lsu_error_pkt_m[1]) | clk_override)
-			);
-			rvdff #(.WIDTH(2)) lsu_fir_error_rff(
-				.rst_l(rst_l),
-				.din(lsu_fir_error_m[1:0]),
-				.dout(lsu_fir_error[1:0]),
-				.clk(lsu_c2_r_clk)
-			);
-		end
-	endgenerate
-	always @(*) begin
-		dma_pkt_d = {14 {1'sb0}};
-		dma_pkt_d[0] = dma_dccm_req;
-		dma_pkt_d[4] = 1'b1;
-		dma_pkt_d[6] = dma_mem_write;
-		dma_pkt_d[7] = ~dma_mem_write;
-		dma_pkt_d[11] = dma_mem_sz[2:0] == 3'b000;
-		dma_pkt_d[10] = dma_mem_sz[2:0] == 3'b001;
-		dma_pkt_d[9] = dma_mem_sz[2:0] == 3'b010;
-		dma_pkt_d[8] = dma_mem_sz[2:0] == 3'b011;
-	end
-	always @(*) begin
-		lsu_pkt_d = (dec_lsu_valid_raw_d ? lsu_p : dma_pkt_d);
-		lsu_pkt_m_in = lsu_pkt_d;
-		lsu_pkt_r_in = lsu_pkt_m;
-		lsu_pkt_d[0] = (lsu_p[0] & ~(flush_m_up & ~lsu_p[13])) | dma_dccm_req;
-		lsu_pkt_m_in[0] = lsu_pkt_d[0] & ~(flush_m_up & ~lsu_pkt_d[4]);
-		lsu_pkt_r_in[0] = lsu_pkt_m[0] & ~(flush_m_up & ~lsu_pkt_m[4]);
-	end
-	rvdff #(.WIDTH(1)) lsu_pkt_vldmff(
-		.rst_l(rst_l),
-		.din(lsu_pkt_m_in[0]),
-		.dout(lsu_pkt_m[0]),
-		.clk(lsu_c2_m_clk)
-	);
-	rvdff #(.WIDTH(1)) lsu_pkt_vldrff(
-		.rst_l(rst_l),
-		.din(lsu_pkt_r_in[0]),
-		.dout(lsu_pkt_r[0]),
-		.clk(lsu_c2_r_clk)
-	);
-	rvdff #(.WIDTH(13)) lsu_pkt_mff(
-		.rst_l(rst_l),
-		.din(lsu_pkt_m_in[13:1]),
-		.dout(lsu_pkt_m[13:1]),
-		.clk(lsu_c1_m_clk)
-	);
-	rvdff #(.WIDTH(13)) lsu_pkt_rff(
-		.rst_l(rst_l),
-		.din(lsu_pkt_r_in[13:1]),
-		.dout(lsu_pkt_r[13:1]),
-		.clk(lsu_c1_r_clk)
-	);
-	generate
-		if (pt[202-:5] == 1) begin : L2U1_Plus1_1
-			wire [31:0] lsu_ld_datafn_r;
-			wire [31:0] lsu_ld_datafn_corr_r;
-			assign lsu_ld_datafn_r[31:0] = (addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_r[31:0]);
-			assign lsu_ld_datafn_corr_r[31:0] = (addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_corr_r[31:0]);
-			assign lsu_result_m[31:0] = (((({32 {lsu_pkt_r[5] & lsu_pkt_r[11]}} & {24'b000000000000000000000000, lsu_ld_datafn_r[7:0]}) | ({32 {lsu_pkt_r[5] & lsu_pkt_r[10]}} & {16'b0000000000000000, lsu_ld_datafn_r[15:0]})) | ({32 {~lsu_pkt_r[5] & lsu_pkt_r[11]}} & {{24 {lsu_ld_datafn_r[7]}}, lsu_ld_datafn_r[7:0]})) | ({32 {~lsu_pkt_r[5] & lsu_pkt_r[10]}} & {{16 {lsu_ld_datafn_r[15]}}, lsu_ld_datafn_r[15:0]})) | ({32 {lsu_pkt_r[9]}} & lsu_ld_datafn_r[31:0]);
-			assign lsu_result_corr_r[31:0] = (((({32 {lsu_pkt_r[5] & lsu_pkt_r[11]}} & {24'b000000000000000000000000, lsu_ld_datafn_corr_r[7:0]}) | ({32 {lsu_pkt_r[5] & lsu_pkt_r[10]}} & {16'b0000000000000000, lsu_ld_datafn_corr_r[15:0]})) | ({32 {~lsu_pkt_r[5] & lsu_pkt_r[11]}} & {{24 {lsu_ld_datafn_corr_r[7]}}, lsu_ld_datafn_corr_r[7:0]})) | ({32 {~lsu_pkt_r[5] & lsu_pkt_r[10]}} & {{16 {lsu_ld_datafn_corr_r[15]}}, lsu_ld_datafn_corr_r[15:0]})) | ({32 {lsu_pkt_r[9]}} & lsu_ld_datafn_corr_r[31:0]);
-		end
-		else begin : L2U1_Plus1_0
-			wire [31:0] lsu_ld_datafn_m;
-			wire [31:0] lsu_ld_datafn_corr_r;
-			assign lsu_ld_datafn_m[31:0] = (addr_external_m ? bus_read_data_m[31:0] : lsu_ld_data_m[31:0]);
-			assign lsu_ld_datafn_corr_r[31:0] = (addr_external_r ? bus_read_data_r[31:0] : lsu_ld_data_corr_r[31:0]);
-			assign lsu_result_m[31:0] = (((({32 {lsu_pkt_m[5] & lsu_pkt_m[11]}} & {24'b000000000000000000000000, lsu_ld_datafn_m[7:0]}) | ({32 {lsu_pkt_m[5] & lsu_pkt_m[10]}} & {16'b0000000000000000, lsu_ld_datafn_m[15:0]})) | ({32 {~lsu_pkt_m[5] & lsu_pkt_m[11]}} & {{24 {lsu_ld_datafn_m[7]}}, lsu_ld_datafn_m[7:0]})) | ({32 {~lsu_pkt_m[5] & lsu_pkt_m[10]}} & {{16 {lsu_ld_datafn_m[15]}}, lsu_ld_datafn_m[15:0]})) | ({32 {lsu_pkt_m[9]}} & lsu_ld_datafn_m[31:0]);
-			assign lsu_result_corr_r[31:0] = (((({32 {lsu_pkt_r[5] & lsu_pkt_r[11]}} & {24'b000000000000000000000000, lsu_ld_datafn_corr_r[7:0]}) | ({32 {lsu_pkt_r[5] & lsu_pkt_r[10]}} & {16'b0000000000000000, lsu_ld_datafn_corr_r[15:0]})) | ({32 {~lsu_pkt_r[5] & lsu_pkt_r[11]}} & {{24 {lsu_ld_datafn_corr_r[7]}}, lsu_ld_datafn_corr_r[7:0]})) | ({32 {~lsu_pkt_r[5] & lsu_pkt_r[10]}} & {{16 {lsu_ld_datafn_corr_r[15]}}, lsu_ld_datafn_corr_r[15:0]})) | ({32 {lsu_pkt_r[9]}} & lsu_ld_datafn_corr_r[31:0]);
-		end
-	endgenerate
-	assign lsu_fir_addr[31:1] = lsu_ld_data_corr_r[31:1];
-	assign lsu_addr_d[31:0] = full_addr_d[31:0];
-	assign lsu_commit_r = ((lsu_pkt_r[0] & (lsu_pkt_r[6] | lsu_pkt_r[7])) & ~flush_r) & ~lsu_pkt_r[4];
-	assign dma_mem_wdata_shifted[63:0] = dma_mem_wdata[63:0] >> {dma_mem_addr[2:0], 3'b000};
-	assign store_data_d[31:0] = (dma_dccm_req ? dma_mem_wdata_shifted[31:0] : exu_lsu_rs2_d[31:0]);
-	assign store_data_m_in[31:0] = (lsu_pkt_d[3] ? lsu_result_m[31:0] : store_data_d[31:0]);
-	assign store_data_m[31:0] = (picm_mask_data_m[31:0] | {32 {~addr_in_pic_m}}) & (lsu_pkt_m[1] ? lsu_result_m[31:0] : store_data_pre_m[31:0]);
-	rvdff #(.WIDTH(32)) sdmff(
-		.rst_l(rst_l),
-		.din(store_data_m_in[31:0]),
-		.dout(store_data_pre_m[31:0]),
-		.clk(lsu_store_c1_m_clk)
-	);
-	rvdff #(.WIDTH(32)) samff(
-		.rst_l(rst_l),
-		.din(lsu_addr_d[31:0]),
-		.dout(lsu_addr_m[31:0]),
-		.clk(lsu_c1_m_clk)
-	);
-	rvdff #(.WIDTH(32)) sarff(
-		.rst_l(rst_l),
-		.din(lsu_addr_m[31:0]),
-		.dout(lsu_addr_r[31:0]),
-		.clk(lsu_c1_r_clk)
-	);
-	assign end_addr_m[31:3] = (ldst_dual_m ? end_addr_pre_m[31:3] : lsu_addr_m[31:3]);
-	assign end_addr_r[31:3] = (ldst_dual_r ? end_addr_pre_r[31:3] : lsu_addr_r[31:3]);
-	rvdffe #(.WIDTH(29)) end_addr_hi_mff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.din(end_addr_d[31:3]),
-		.dout(end_addr_pre_m[31:3]),
-		.en((lsu_pkt_d[0] & ldst_dual_d) | clk_override)
-	);
-	rvdffe #(.WIDTH(29)) end_addr_hi_rff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.din(end_addr_m[31:3]),
-		.dout(end_addr_pre_r[31:3]),
-		.en((lsu_pkt_m[0] & ldst_dual_m) | clk_override)
-	);
-	rvdff #(.WIDTH(3)) end_addr_lo_mff(
-		.rst_l(rst_l),
-		.din(end_addr_d[2:0]),
-		.dout(end_addr_m[2:0]),
-		.clk(lsu_c1_m_clk)
-	);
-	rvdff #(.WIDTH(3)) end_addr_lo_rff(
-		.rst_l(rst_l),
-		.din(end_addr_m[2:0]),
-		.dout(end_addr_r[2:0]),
-		.clk(lsu_c1_r_clk)
-	);
-	rvdff #(.WIDTH(1)) addr_in_dccm_mff(
-		.din(addr_in_dccm_d),
-		.dout(addr_in_dccm_m),
-		.clk(lsu_c1_m_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) addr_in_dccm_rff(
-		.din(addr_in_dccm_m),
-		.dout(addr_in_dccm_r),
-		.clk(lsu_c1_r_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) addr_in_pic_mff(
-		.din(addr_in_pic_d),
-		.dout(addr_in_pic_m),
-		.clk(lsu_c1_m_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) addr_in_pic_rff(
-		.din(addr_in_pic_m),
-		.dout(addr_in_pic_r),
-		.clk(lsu_c1_r_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) addr_external_mff(
-		.din(addr_external_d),
-		.dout(addr_external_m),
-		.clk(lsu_c1_m_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) addr_external_rff(
-		.din(addr_external_m),
-		.dout(addr_external_r),
-		.clk(lsu_c1_r_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) access_fault_mff(
-		.din(access_fault_d),
-		.dout(access_fault_m),
-		.clk(lsu_c1_m_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) misaligned_fault_mff(
-		.din(misaligned_fault_d),
-		.dout(misaligned_fault_m),
-		.clk(lsu_c1_m_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(4)) exc_mscause_mff(
-		.din(exc_mscause_d[3:0]),
-		.dout(exc_mscause_m[3:0]),
-		.clk(lsu_c1_m_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) fir_dccm_access_error_mff(
-		.din(fir_dccm_access_error_d),
-		.dout(fir_dccm_access_error_m),
-		.clk(lsu_c1_m_clk),
-		.rst_l(rst_l)
-	);
-	rvdff #(.WIDTH(1)) fir_nondccm_access_error_mff(
-		.din(fir_nondccm_access_error_d),
-		.dout(fir_nondccm_access_error_m),
-		.clk(lsu_c1_m_clk),
-		.rst_l(rst_l)
-	);
-	rvdffe #(.WIDTH(32)) bus_read_data_r_ff(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.din(bus_read_data_m[31:0]),
-		.dout(bus_read_data_r[31:0]),
-		.en(addr_external_m | clk_override)
-	);
-endmodule
-module eb1_lsu_stbuf (
-	clk,
-	rst_l,
-	lsu_stbuf_c1_clk,
-	lsu_free_c2_clk,
-	store_stbuf_reqvld_r,
-	lsu_commit_r,
-	dec_lsu_valid_raw_d,
-	store_data_hi_r,
-	store_data_lo_r,
-	store_datafn_hi_r,
-	store_datafn_lo_r,
-	stbuf_reqvld_any,
-	stbuf_reqvld_flushed_any,
-	stbuf_addr_any,
-	stbuf_data_any,
-	lsu_stbuf_commit_any,
-	lsu_stbuf_full_any,
-	lsu_stbuf_empty_any,
-	ldst_stbuf_reqvld_r,
-	lsu_addr_d,
-	lsu_addr_m,
-	lsu_addr_r,
-	end_addr_d,
-	end_addr_m,
-	end_addr_r,
-	ldst_dual_d,
-	ldst_dual_m,
-	ldst_dual_r,
-	addr_in_dccm_m,
-	addr_in_dccm_r,
-	lsu_cmpen_m,
-	lsu_pkt_m,
-	lsu_pkt_r,
-	stbuf_fwddata_hi_m,
-	stbuf_fwddata_lo_m,
-	stbuf_fwdbyteen_hi_m,
-	stbuf_fwdbyteen_lo_m,
-	scan_mode
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire clk;
-	input wire rst_l;
-	input wire lsu_stbuf_c1_clk;
-	input wire lsu_free_c2_clk;
-	input wire store_stbuf_reqvld_r;
-	input wire lsu_commit_r;
-	input wire dec_lsu_valid_raw_d;
-	input wire [pt[1382-:10] - 1:0] store_data_hi_r;
-	input wire [pt[1382-:10] - 1:0] store_data_lo_r;
-	input wire [pt[1382-:10] - 1:0] store_datafn_hi_r;
-	input wire [pt[1382-:10] - 1:0] store_datafn_lo_r;
-	output wire stbuf_reqvld_any;
-	output wire stbuf_reqvld_flushed_any;
-	output wire [pt[157-:9] - 1:0] stbuf_addr_any;
-	output wire [pt[1382-:10] - 1:0] stbuf_data_any;
-	input wire lsu_stbuf_commit_any;
-	output wire lsu_stbuf_full_any;
-	output wire lsu_stbuf_empty_any;
-	output wire ldst_stbuf_reqvld_r;
-	input wire [pt[157-:9] - 1:0] lsu_addr_d;
-	input wire [31:0] lsu_addr_m;
-	input wire [31:0] lsu_addr_r;
-	input wire [pt[157-:9] - 1:0] end_addr_d;
-	input wire [31:0] end_addr_m;
-	input wire [31:0] end_addr_r;
-	input wire ldst_dual_d;
-	input wire ldst_dual_m;
-	input wire ldst_dual_r;
-	input wire addr_in_dccm_m;
-	input wire addr_in_dccm_r;
-	input wire lsu_cmpen_m;
-	input wire [13:0] lsu_pkt_m;
-	input wire [13:0] lsu_pkt_r;
-	output wire [pt[1382-:10] - 1:0] stbuf_fwddata_hi_m;
-	output wire [pt[1382-:10] - 1:0] stbuf_fwddata_lo_m;
-	output wire [pt[1389-:7] - 1:0] stbuf_fwdbyteen_hi_m;
-	output wire [pt[1389-:7] - 1:0] stbuf_fwdbyteen_lo_m;
-	input wire scan_mode;
-	localparam DEPTH = pt[148-:8];
-	localparam DATA_WIDTH = pt[1382-:10];
-	localparam BYTE_WIDTH = pt[1389-:7];
-	localparam DEPTH_LOG2 = $clog2(DEPTH);
-	wire [DEPTH - 1:0] stbuf_vld;
-	wire [DEPTH - 1:0] stbuf_dma_kill;
-	wire [(DEPTH * pt[157-:9]) - 1:0] stbuf_addr;
-	wire [(DEPTH * BYTE_WIDTH) - 1:0] stbuf_byteen;
-	wire [(DEPTH * DATA_WIDTH) - 1:0] stbuf_data;
-	wire [DEPTH - 1:0] sel_lo;
-	wire [DEPTH - 1:0] stbuf_wr_en;
-	reg [DEPTH - 1:0] stbuf_dma_kill_en;
-	wire [DEPTH - 1:0] stbuf_reset;
-	wire [(DEPTH * pt[157-:9]) - 1:0] stbuf_addrin;
-	wire [(DEPTH * DATA_WIDTH) - 1:0] stbuf_datain;
-	wire [(DEPTH * BYTE_WIDTH) - 1:0] stbuf_byteenin;
-	wire [7:0] store_byteen_ext_r;
-	wire [BYTE_WIDTH - 1:0] store_byteen_hi_r;
-	wire [BYTE_WIDTH - 1:0] store_byteen_lo_r;
-	wire WrPtrEn;
-	wire RdPtrEn;
-	wire [DEPTH_LOG2 - 1:0] WrPtr;
-	wire [DEPTH_LOG2 - 1:0] RdPtr;
-	wire [DEPTH_LOG2 - 1:0] NxtWrPtr;
-	wire [DEPTH_LOG2 - 1:0] NxtRdPtr;
-	wire [DEPTH_LOG2 - 1:0] WrPtrPlus1;
-	wire [DEPTH_LOG2 - 1:0] WrPtrPlus2;
-	wire [DEPTH_LOG2 - 1:0] RdPtrPlus1;
-	wire dual_stbuf_write_r;
-	wire isdccmst_m;
-	wire isdccmst_r;
-	reg [3:0] stbuf_numvld_any;
-	wire [3:0] stbuf_specvld_any;
-	wire [1:0] stbuf_specvld_m;
-	wire [1:0] stbuf_specvld_r;
-	wire [pt[157-:9] - 1:$clog2(BYTE_WIDTH)] cmpaddr_hi_m;
-	wire [pt[157-:9] - 1:$clog2(BYTE_WIDTH)] cmpaddr_lo_m;
-	reg [DEPTH - 1:0] stbuf_match_hi;
-	reg [DEPTH - 1:0] stbuf_match_lo;
-	reg [(DEPTH * BYTE_WIDTH) - 1:0] stbuf_fwdbyteenvec_hi;
-	reg [(DEPTH * BYTE_WIDTH) - 1:0] stbuf_fwdbyteenvec_lo;
-	reg [DATA_WIDTH - 1:0] stbuf_fwddata_hi_pre_m;
-	reg [DATA_WIDTH - 1:0] stbuf_fwddata_lo_pre_m;
-	reg [BYTE_WIDTH - 1:0] stbuf_fwdbyteen_hi_pre_m;
-	reg [BYTE_WIDTH - 1:0] stbuf_fwdbyteen_lo_pre_m;
-	wire [BYTE_WIDTH - 1:0] ld_byte_rhit_lo_lo;
-	wire [BYTE_WIDTH - 1:0] ld_byte_rhit_hi_lo;
-	wire [BYTE_WIDTH - 1:0] ld_byte_rhit_lo_hi;
-	wire [BYTE_WIDTH - 1:0] ld_byte_rhit_hi_hi;
-	wire ld_addr_rhit_lo_lo;
-	wire ld_addr_rhit_hi_lo;
-	wire ld_addr_rhit_lo_hi;
-	wire ld_addr_rhit_hi_hi;
-	wire [BYTE_WIDTH - 1:0] ld_byte_hit_lo;
-	wire [BYTE_WIDTH - 1:0] ld_byte_rhit_lo;
-	wire [BYTE_WIDTH - 1:0] ld_byte_hit_hi;
-	wire [BYTE_WIDTH - 1:0] ld_byte_rhit_hi;
-	wire [BYTE_WIDTH - 1:0] ldst_byteen_hi_r;
-	wire [BYTE_WIDTH - 1:0] ldst_byteen_lo_r;
-	wire [7:0] ldst_byteen_r;
-	wire [7:0] ldst_byteen_ext_r;
-	wire [31:0] ld_fwddata_rpipe_lo;
-	wire [31:0] ld_fwddata_rpipe_hi;
-	wire [DEPTH - 1:0] store_matchvec_lo_r;
-	wire [DEPTH - 1:0] store_matchvec_hi_r;
-	wire store_coalesce_lo_r;
-	wire store_coalesce_hi_r;
-	assign store_byteen_ext_r[7:0] = ldst_byteen_r[7:0] << lsu_addr_r[1:0];
-	assign store_byteen_hi_r[BYTE_WIDTH - 1:0] = store_byteen_ext_r[7:4] & {4 {lsu_pkt_r[6]}};
-	assign store_byteen_lo_r[BYTE_WIDTH - 1:0] = store_byteen_ext_r[3:0] & {4 {lsu_pkt_r[6]}};
-	assign RdPtrPlus1[DEPTH_LOG2 - 1:0] = RdPtr[DEPTH_LOG2 - 1:0] + 1'b1;
-	assign WrPtrPlus1[DEPTH_LOG2 - 1:0] = WrPtr[DEPTH_LOG2 - 1:0] + 1'b1;
-	assign WrPtrPlus2[DEPTH_LOG2 - 1:0] = WrPtr[DEPTH_LOG2 - 1:0] + 2'b10;
-	assign dual_stbuf_write_r = ldst_dual_r & store_stbuf_reqvld_r;
-	assign ldst_stbuf_reqvld_r = (lsu_commit_r | lsu_pkt_r[4]) & store_stbuf_reqvld_r;
-	generate
-		genvar i;
-		for (i = 0; i < DEPTH; i = i + 1) begin : FindMatchEntry
-			assign store_matchvec_lo_r[i] = (((stbuf_addr[(i * pt[157-:9]) + ((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? pt[157-:9] - 1 : ((pt[157-:9] - 1) + ((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? ((pt[157-:9] - 1) - $clog2(BYTE_WIDTH)) + 1 : ($clog2(BYTE_WIDTH) - (pt[157-:9] - 1)) + 1)) - 1)-:((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? ((pt[157-:9] - 1) - $clog2(BYTE_WIDTH)) + 1 : ($clog2(BYTE_WIDTH) - (pt[157-:9] - 1)) + 1)] == lsu_addr_r[pt[157-:9] - 1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i]) & ~stbuf_dma_kill[i]) & ~stbuf_reset[i];
-			assign store_matchvec_hi_r[i] = ((((stbuf_addr[(i * pt[157-:9]) + ((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? pt[157-:9] - 1 : ((pt[157-:9] - 1) + ((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? ((pt[157-:9] - 1) - $clog2(BYTE_WIDTH)) + 1 : ($clog2(BYTE_WIDTH) - (pt[157-:9] - 1)) + 1)) - 1)-:((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? ((pt[157-:9] - 1) - $clog2(BYTE_WIDTH)) + 1 : ($clog2(BYTE_WIDTH) - (pt[157-:9] - 1)) + 1)] == end_addr_r[pt[157-:9] - 1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i]) & ~stbuf_dma_kill[i]) & dual_stbuf_write_r) & ~stbuf_reset[i];
-		end
-	endgenerate
-	assign store_coalesce_lo_r = |store_matchvec_lo_r[DEPTH - 1:0];
-	assign store_coalesce_hi_r = |store_matchvec_hi_r[DEPTH - 1:0];
-	generate
-		if (pt[1365-:5] == 1) begin : Gen_dccm_enable
-			for (i = 0; i < DEPTH; i = i + 1) begin : GenStBuf
-				assign stbuf_wr_en[i] = ldst_stbuf_reqvld_r & ((((((i == WrPtr[DEPTH_LOG2 - 1:0]) & ~store_coalesce_lo_r) | (((i == WrPtr[DEPTH_LOG2 - 1:0]) & dual_stbuf_write_r) & ~store_coalesce_hi_r)) | (((i == WrPtrPlus1[DEPTH_LOG2 - 1:0]) & dual_stbuf_write_r) & ~(store_coalesce_lo_r | store_coalesce_hi_r))) | store_matchvec_lo_r[i]) | store_matchvec_hi_r[i]);
-				assign stbuf_reset[i] = (lsu_stbuf_commit_any | stbuf_reqvld_flushed_any) & (i == RdPtr[DEPTH_LOG2 - 1:0]);
-				assign sel_lo[i] = (((~ldst_dual_r | store_stbuf_reqvld_r) & (i == WrPtr[DEPTH_LOG2 - 1:0])) & ~store_coalesce_lo_r) | store_matchvec_lo_r[i];
-				assign stbuf_addrin[(i * pt[157-:9]) + (pt[157-:9] - 1)-:pt[157-:9]] = (sel_lo[i] ? lsu_addr_r[pt[157-:9] - 1:0] : end_addr_r[pt[157-:9] - 1:0]);
-				assign stbuf_byteenin[(i * BYTE_WIDTH) + (BYTE_WIDTH - 1)-:BYTE_WIDTH] = (sel_lo[i] ? stbuf_byteen[(i * BYTE_WIDTH) + (BYTE_WIDTH - 1)-:BYTE_WIDTH] | store_byteen_lo_r[BYTE_WIDTH - 1:0] : stbuf_byteen[(i * BYTE_WIDTH) + (BYTE_WIDTH - 1)-:BYTE_WIDTH] | store_byteen_hi_r[BYTE_WIDTH - 1:0]);
-				assign stbuf_datain[(i * DATA_WIDTH) + 7-:8] = (sel_lo[i] ? (~stbuf_byteen[i * BYTE_WIDTH] | store_byteen_lo_r[0] ? store_datafn_lo_r[7:0] : stbuf_data[(i * DATA_WIDTH) + 7-:8]) : (~stbuf_byteen[i * BYTE_WIDTH] | store_byteen_hi_r[0] ? store_datafn_hi_r[7:0] : stbuf_data[(i * DATA_WIDTH) + 7-:8]));
-				assign stbuf_datain[(i * DATA_WIDTH) + 15-:8] = (sel_lo[i] ? (~stbuf_byteen[(i * BYTE_WIDTH) + 1] | store_byteen_lo_r[1] ? store_datafn_lo_r[15:8] : stbuf_data[(i * DATA_WIDTH) + 15-:8]) : (~stbuf_byteen[(i * BYTE_WIDTH) + 1] | store_byteen_hi_r[1] ? store_datafn_hi_r[15:8] : stbuf_data[(i * DATA_WIDTH) + 15-:8]));
-				assign stbuf_datain[(i * DATA_WIDTH) + 23-:8] = (sel_lo[i] ? (~stbuf_byteen[(i * BYTE_WIDTH) + 2] | store_byteen_lo_r[2] ? store_datafn_lo_r[23:16] : stbuf_data[(i * DATA_WIDTH) + 23-:8]) : (~stbuf_byteen[(i * BYTE_WIDTH) + 2] | store_byteen_hi_r[2] ? store_datafn_hi_r[23:16] : stbuf_data[(i * DATA_WIDTH) + 23-:8]));
-				assign stbuf_datain[(i * DATA_WIDTH) + 31-:8] = (sel_lo[i] ? (~stbuf_byteen[(i * BYTE_WIDTH) + 3] | store_byteen_lo_r[3] ? store_datafn_lo_r[31:24] : stbuf_data[(i * DATA_WIDTH) + 31-:8]) : (~stbuf_byteen[(i * BYTE_WIDTH) + 3] | store_byteen_hi_r[3] ? store_datafn_hi_r[31:24] : stbuf_data[(i * DATA_WIDTH) + 31-:8]));
-				rvdffsc #(.WIDTH(1)) stbuf_vldff(
-					.din(1'b1),
-					.dout(stbuf_vld[i]),
-					.en(stbuf_wr_en[i]),
-					.clear(stbuf_reset[i]),
-					.clk(lsu_free_c2_clk),
-					.rst_l(rst_l)
-				);
-				rvdffsc #(.WIDTH(1)) stbuf_killff(
-					.din(1'b1),
-					.dout(stbuf_dma_kill[i]),
-					.en(stbuf_dma_kill_en[i]),
-					.clear(stbuf_reset[i]),
-					.clk(lsu_free_c2_clk),
-					.rst_l(rst_l)
-				);
-				rvdffe #(.WIDTH(pt[157-:9])) stbuf_addrff(
-					.din(stbuf_addrin[(i * pt[157-:9]) + (pt[157-:9] - 1)-:pt[157-:9]]),
-					.dout(stbuf_addr[(i * pt[157-:9]) + (pt[157-:9] - 1)-:pt[157-:9]]),
-					.en(stbuf_wr_en[i]),
-					.clk(clk),
-					.rst_l(rst_l),
-					.scan_mode(scan_mode)
-				);
-				rvdffsc #(.WIDTH(BYTE_WIDTH)) stbuf_byteenff(
-					.din(stbuf_byteenin[(i * BYTE_WIDTH) + (BYTE_WIDTH - 1)-:BYTE_WIDTH]),
-					.dout(stbuf_byteen[(i * BYTE_WIDTH) + (BYTE_WIDTH - 1)-:BYTE_WIDTH]),
-					.en(stbuf_wr_en[i]),
-					.clear(stbuf_reset[i]),
-					.clk(lsu_stbuf_c1_clk),
-					.rst_l(rst_l)
-				);
-				rvdffe #(.WIDTH(DATA_WIDTH)) stbuf_dataff(
-					.din(stbuf_datain[(i * DATA_WIDTH) + (DATA_WIDTH - 1)-:DATA_WIDTH]),
-					.dout(stbuf_data[(i * DATA_WIDTH) + (DATA_WIDTH - 1)-:DATA_WIDTH]),
-					.en(stbuf_wr_en[i]),
-					.clk(clk),
-					.rst_l(rst_l),
-					.scan_mode(scan_mode)
-				);
-			end
-		end
-		else begin : Gen_dccm_disable
-			assign stbuf_wr_en[DEPTH - 1:0] = {DEPTH {1'sb0}};
-			assign stbuf_reset[DEPTH - 1:0] = {DEPTH {1'sb0}};
-			assign stbuf_vld[DEPTH - 1:0] = {DEPTH {1'sb0}};
-			assign stbuf_dma_kill[DEPTH - 1:0] = {DEPTH {1'sb0}};
-			assign stbuf_addr[pt[157-:9] * ((DEPTH - 1) - (DEPTH - 1))+:pt[157-:9] * DEPTH] = {pt[157-:9] * DEPTH {1'sb0}};
-			assign stbuf_byteen[BYTE_WIDTH * ((DEPTH - 1) - (DEPTH - 1))+:BYTE_WIDTH * DEPTH] = {BYTE_WIDTH * DEPTH {1'sb0}};
-			assign stbuf_data[DATA_WIDTH * ((DEPTH - 1) - (DEPTH - 1))+:DATA_WIDTH * DEPTH] = {DATA_WIDTH * DEPTH {1'sb0}};
-		end
-	endgenerate
-	assign stbuf_reqvld_flushed_any = stbuf_vld[RdPtr] & stbuf_dma_kill[RdPtr];
-	assign stbuf_reqvld_any = (stbuf_vld[RdPtr] & ~stbuf_dma_kill[RdPtr]) & ~(|stbuf_dma_kill_en[DEPTH - 1:0]);
-	assign stbuf_addr_any[pt[157-:9] - 1:0] = stbuf_addr[(RdPtr * pt[157-:9]) + (pt[157-:9] - 1)-:pt[157-:9]];
-	assign stbuf_data_any[DATA_WIDTH - 1:0] = stbuf_data[(RdPtr * DATA_WIDTH) + (DATA_WIDTH - 1)-:DATA_WIDTH];
-	assign WrPtrEn = ((ldst_stbuf_reqvld_r & ~dual_stbuf_write_r) & ~(store_coalesce_hi_r | store_coalesce_lo_r)) | ((ldst_stbuf_reqvld_r & dual_stbuf_write_r) & ~(store_coalesce_hi_r & store_coalesce_lo_r));
-	assign NxtWrPtr[DEPTH_LOG2 - 1:0] = ((ldst_stbuf_reqvld_r & dual_stbuf_write_r) & ~(store_coalesce_hi_r | store_coalesce_lo_r) ? WrPtrPlus2[DEPTH_LOG2 - 1:0] : WrPtrPlus1[DEPTH_LOG2 - 1:0]);
-	assign RdPtrEn = lsu_stbuf_commit_any | stbuf_reqvld_flushed_any;
-	assign NxtRdPtr[DEPTH_LOG2 - 1:0] = RdPtrPlus1[DEPTH_LOG2 - 1:0];
-	always @(*) begin
-		stbuf_numvld_any[3:0] = {4 {1'sb0}};
-		begin : sv2v_autoblock_59
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				stbuf_numvld_any[3:0] = stbuf_numvld_any[3:0] + {3'b000, stbuf_vld[i]};
-		end
-	end
-	assign isdccmst_m = ((lsu_pkt_m[0] & lsu_pkt_m[6]) & addr_in_dccm_m) & ~lsu_pkt_m[4];
-	assign isdccmst_r = ((lsu_pkt_r[0] & lsu_pkt_r[6]) & addr_in_dccm_r) & ~lsu_pkt_r[4];
-	assign stbuf_specvld_m[1:0] = {1'b0, isdccmst_m} << (isdccmst_m & ldst_dual_m);
-	assign stbuf_specvld_r[1:0] = {1'b0, isdccmst_r} << (isdccmst_r & ldst_dual_r);
-	assign stbuf_specvld_any[3:0] = (stbuf_numvld_any[3:0] + {2'b00, stbuf_specvld_m[1:0]}) + {2'b00, stbuf_specvld_r[1:0]};
-	assign lsu_stbuf_full_any = (~ldst_dual_d & dec_lsu_valid_raw_d ? stbuf_specvld_any[3:0] >= DEPTH : stbuf_specvld_any[3:0] >= (DEPTH - 1));
-	assign lsu_stbuf_empty_any = stbuf_numvld_any[3:0] == 4'b0000;
-	assign cmpaddr_hi_m[pt[157-:9] - 1:$clog2(BYTE_WIDTH)] = end_addr_m[pt[157-:9] - 1:$clog2(BYTE_WIDTH)];
-	assign cmpaddr_lo_m[pt[157-:9] - 1:$clog2(BYTE_WIDTH)] = lsu_addr_m[pt[157-:9] - 1:$clog2(BYTE_WIDTH)];
-	always @(*) begin : GenLdFwd
-		stbuf_fwdbyteen_hi_pre_m[BYTE_WIDTH - 1:0] = {BYTE_WIDTH {1'sb0}};
-		stbuf_fwdbyteen_lo_pre_m[BYTE_WIDTH - 1:0] = {BYTE_WIDTH {1'sb0}};
-		begin : sv2v_autoblock_60
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				begin
-					stbuf_match_hi[i] = (((stbuf_addr[(i * pt[157-:9]) + ((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? pt[157-:9] - 1 : ((pt[157-:9] - 1) + ((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? ((pt[157-:9] - 1) - $clog2(BYTE_WIDTH)) + 1 : ($clog2(BYTE_WIDTH) - (pt[157-:9] - 1)) + 1)) - 1)-:((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? ((pt[157-:9] - 1) - $clog2(BYTE_WIDTH)) + 1 : ($clog2(BYTE_WIDTH) - (pt[157-:9] - 1)) + 1)] == cmpaddr_hi_m[pt[157-:9] - 1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i]) & ~stbuf_dma_kill[i]) & addr_in_dccm_m;
-					stbuf_match_lo[i] = (((stbuf_addr[(i * pt[157-:9]) + ((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? pt[157-:9] - 1 : ((pt[157-:9] - 1) + ((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? ((pt[157-:9] - 1) - $clog2(BYTE_WIDTH)) + 1 : ($clog2(BYTE_WIDTH) - (pt[157-:9] - 1)) + 1)) - 1)-:((pt[157-:9] - 1) >= $clog2(BYTE_WIDTH) ? ((pt[157-:9] - 1) - $clog2(BYTE_WIDTH)) + 1 : ($clog2(BYTE_WIDTH) - (pt[157-:9] - 1)) + 1)] == cmpaddr_lo_m[pt[157-:9] - 1:$clog2(BYTE_WIDTH)]) & stbuf_vld[i]) & ~stbuf_dma_kill[i]) & addr_in_dccm_m;
-					stbuf_dma_kill_en[i] = (((stbuf_match_hi[i] | stbuf_match_lo[i]) & lsu_pkt_m[0]) & lsu_pkt_m[4]) & lsu_pkt_m[6];
-					begin : sv2v_autoblock_61
-						reg signed [31:0] j;
-						for (j = 0; j < BYTE_WIDTH; j = j + 1)
-							begin
-								stbuf_fwdbyteenvec_hi[(i * BYTE_WIDTH) + j] = (stbuf_match_hi[i] & stbuf_byteen[(i * BYTE_WIDTH) + j]) & stbuf_vld[i];
-								stbuf_fwdbyteen_hi_pre_m[j] = stbuf_fwdbyteen_hi_pre_m[j] | stbuf_fwdbyteenvec_hi[(i * BYTE_WIDTH) + j];
-								stbuf_fwdbyteenvec_lo[(i * BYTE_WIDTH) + j] = (stbuf_match_lo[i] & stbuf_byteen[(i * BYTE_WIDTH) + j]) & stbuf_vld[i];
-								stbuf_fwdbyteen_lo_pre_m[j] = stbuf_fwdbyteen_lo_pre_m[j] | stbuf_fwdbyteenvec_lo[(i * BYTE_WIDTH) + j];
-							end
-					end
-				end
-		end
-	end
-	always @(*) begin : GenLdData
-		stbuf_fwddata_hi_pre_m[31:0] = {32 {1'sb0}};
-		stbuf_fwddata_lo_pre_m[31:0] = {32 {1'sb0}};
-		begin : sv2v_autoblock_62
-			reg signed [31:0] i;
-			for (i = 0; i < DEPTH; i = i + 1)
-				begin
-					stbuf_fwddata_hi_pre_m[31:0] = stbuf_fwddata_hi_pre_m[31:0] | ({32 {stbuf_match_hi[i]}} & stbuf_data[(i * DATA_WIDTH) + 31-:32]);
-					stbuf_fwddata_lo_pre_m[31:0] = stbuf_fwddata_lo_pre_m[31:0] | ({32 {stbuf_match_lo[i]}} & stbuf_data[(i * DATA_WIDTH) + 31-:32]);
-				end
-		end
-	end
-	assign ldst_byteen_r[7:0] = ((({8 {lsu_pkt_r[11]}} & 8'b00000001) | ({8 {lsu_pkt_r[10]}} & 8'b00000011)) | ({8 {lsu_pkt_r[9]}} & 8'b00001111)) | ({8 {lsu_pkt_r[8]}} & 8'b11111111);
-	assign ldst_byteen_ext_r[7:0] = ldst_byteen_r[7:0] << lsu_addr_r[1:0];
-	assign ldst_byteen_hi_r[3:0] = ldst_byteen_ext_r[7:4];
-	assign ldst_byteen_lo_r[3:0] = ldst_byteen_ext_r[3:0];
-	assign ld_addr_rhit_lo_lo = (((lsu_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r[0]) & lsu_pkt_r[6]) & ~lsu_pkt_r[4];
-	assign ld_addr_rhit_lo_hi = (((end_addr_m[31:2] == lsu_addr_r[31:2]) & lsu_pkt_r[0]) & lsu_pkt_r[6]) & ~lsu_pkt_r[4];
-	assign ld_addr_rhit_hi_lo = ((((lsu_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r[0]) & lsu_pkt_r[6]) & ~lsu_pkt_r[4]) & dual_stbuf_write_r;
-	assign ld_addr_rhit_hi_hi = ((((end_addr_m[31:2] == end_addr_r[31:2]) & lsu_pkt_r[0]) & lsu_pkt_r[6]) & ~lsu_pkt_r[4]) & dual_stbuf_write_r;
-	generate
-		for (i = 0; i < BYTE_WIDTH; i = i + 1) begin
-			assign ld_byte_rhit_lo_lo[i] = ld_addr_rhit_lo_lo & ldst_byteen_lo_r[i];
-			assign ld_byte_rhit_lo_hi[i] = ld_addr_rhit_lo_hi & ldst_byteen_lo_r[i];
-			assign ld_byte_rhit_hi_lo[i] = ld_addr_rhit_hi_lo & ldst_byteen_hi_r[i];
-			assign ld_byte_rhit_hi_hi[i] = ld_addr_rhit_hi_hi & ldst_byteen_hi_r[i];
-			assign ld_byte_rhit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-			assign ld_byte_rhit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-			assign ld_fwddata_rpipe_lo[(8 * i) + 7:8 * i] = ({8 {ld_byte_rhit_lo_lo[i]}} & store_data_lo_r[(8 * i) + 7:8 * i]) | ({8 {ld_byte_rhit_hi_lo[i]}} & store_data_hi_r[(8 * i) + 7:8 * i]);
-			assign ld_fwddata_rpipe_hi[(8 * i) + 7:8 * i] = ({8 {ld_byte_rhit_lo_hi[i]}} & store_data_lo_r[(8 * i) + 7:8 * i]) | ({8 {ld_byte_rhit_hi_hi[i]}} & store_data_hi_r[(8 * i) + 7:8 * i]);
-			assign ld_byte_hit_lo[i] = ld_byte_rhit_lo_lo[i] | ld_byte_rhit_hi_lo[i];
-			assign ld_byte_hit_hi[i] = ld_byte_rhit_lo_hi[i] | ld_byte_rhit_hi_hi[i];
-			assign stbuf_fwdbyteen_hi_m[i] = ld_byte_hit_hi[i] | stbuf_fwdbyteen_hi_pre_m[i];
-			assign stbuf_fwdbyteen_lo_m[i] = ld_byte_hit_lo[i] | stbuf_fwdbyteen_lo_pre_m[i];
-			assign stbuf_fwddata_lo_m[(8 * i) + 7:8 * i] = (ld_byte_rhit_lo[i] ? ld_fwddata_rpipe_lo[(8 * i) + 7:8 * i] : stbuf_fwddata_lo_pre_m[(8 * i) + 7:8 * i]);
-			assign stbuf_fwddata_hi_m[(8 * i) + 7:8 * i] = (ld_byte_rhit_hi[i] ? ld_fwddata_rpipe_hi[(8 * i) + 7:8 * i] : stbuf_fwddata_hi_pre_m[(8 * i) + 7:8 * i]);
-		end
-	endgenerate
-	rvdffs #(.WIDTH(DEPTH_LOG2)) WrPtrff(
-		.din(NxtWrPtr[DEPTH_LOG2 - 1:0]),
-		.dout(WrPtr[DEPTH_LOG2 - 1:0]),
-		.en(WrPtrEn),
-		.clk(lsu_stbuf_c1_clk),
-		.rst_l(rst_l)
-	);
-	rvdffs #(.WIDTH(DEPTH_LOG2)) RdPtrff(
-		.din(NxtRdPtr[DEPTH_LOG2 - 1:0]),
-		.dout(RdPtr[DEPTH_LOG2 - 1:0]),
-		.en(RdPtrEn),
-		.clk(lsu_stbuf_c1_clk),
-		.rst_l(rst_l)
-	);
-endmodule
-module eb1_lsu_trigger (
-	trigger_pkt_any,
-	lsu_pkt_m,
-	lsu_addr_m,
-	store_data_m,
-	lsu_trigger_match_m
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire [151:0] trigger_pkt_any;
-	input wire [13:0] lsu_pkt_m;
-	input wire [31:0] lsu_addr_m;
-	input wire [31:0] store_data_m;
-	output wire [3:0] lsu_trigger_match_m;
-	reg trigger_enable;
-	wire [127:0] lsu_match_data;
-	wire [3:0] lsu_trigger_data_match;
-	wire [31:0] store_data_trigger_m;
-	wire [31:0] ldst_addr_trigger_m;
-	always @(*) begin
-		trigger_enable = 1'b0;
-		begin : sv2v_autoblock_63
-			reg signed [31:0] i;
-			for (i = 0; i < 4; i = i + 1)
-				trigger_enable = trigger_enable | trigger_pkt_any[(i * 38) + 32];
-		end
-	end
-	assign store_data_trigger_m[31:0] = {{16 {lsu_pkt_m[9]}} & store_data_m[31:16], {8 {lsu_pkt_m[10] | lsu_pkt_m[9]}} & store_data_m[15:8], store_data_m[7:0]} & {32 {trigger_enable}};
-	assign ldst_addr_trigger_m[31:0] = lsu_addr_m[31:0] & {32 {trigger_enable}};
-	generate
-		genvar i;
-		for (i = 0; i < 4; i = i + 1) begin
-			assign lsu_match_data[(i * 32) + 31-:32] = ({32 {~trigger_pkt_any[(i * 38) + 37]}} & ldst_addr_trigger_m[31:0]) | ({32 {trigger_pkt_any[(i * 38) + 37] & trigger_pkt_any[(i * 38) + 35]}} & store_data_trigger_m[31:0]);
-			rvmaskandmatch trigger_match(
-				.mask(trigger_pkt_any[(i * 38) + 31-:32]),
-				.data(lsu_match_data[(i * 32) + 31-:32]),
-				.masken(trigger_pkt_any[(i * 38) + 36]),
-				.match(lsu_trigger_data_match[i])
-			);
-			assign lsu_trigger_match_m[i] = (((lsu_pkt_m[0] & ~lsu_pkt_m[4]) & trigger_enable) & ((trigger_pkt_any[(i * 38) + 35] & lsu_pkt_m[6]) | ((trigger_pkt_any[(i * 38) + 34] & lsu_pkt_m[7]) & ~trigger_pkt_any[(i * 38) + 37]))) & lsu_trigger_data_match[i];
-		end
-	endgenerate
-endmodule
-module rvjtag_tap (
-	trst,
-	tck,
-	tms,
-	tdi,
-	tdo,
-	tdoEnable,
-	wr_data,
-	wr_addr,
-	wr_en,
-	rd_en,
-	rd_data,
-	rd_status,
-	dmi_reset,
-	dmi_hard_reset,
-	idle,
-	dmi_stat,
-	jtag_id,
-	version
-);
-	parameter AWIDTH = 7;
-	input trst;
-	input tck;
-	input tms;
-	input tdi;
-	output reg tdo;
-	output tdoEnable;
-	output [31:0] wr_data;
-	output [AWIDTH - 1:0] wr_addr;
-	output wr_en;
-	output rd_en;
-	input [31:0] rd_data;
-	input [1:0] rd_status;
-	output reg dmi_reset;
-	output reg dmi_hard_reset;
-	input [2:0] idle;
-	input [1:0] dmi_stat;
-	input [31:1] jtag_id;
-	input [3:0] version;
-	localparam USER_DR_LENGTH = AWIDTH + 34;
-	reg [USER_DR_LENGTH - 1:0] sr;
-	reg [USER_DR_LENGTH - 1:0] nsr;
-	reg [USER_DR_LENGTH - 1:0] dr;
-	reg [3:0] state;
-	reg [3:0] nstate;
-	reg [4:0] ir;
-	wire jtag_reset;
-	wire shift_dr;
-	wire pause_dr;
-	wire update_dr;
-	wire capture_dr;
-	wire shift_ir;
-	wire pause_ir;
-	wire update_ir;
-	wire capture_ir;
-	wire [1:0] dr_en;
-	wire devid_sel;
-	wire [5:0] abits;
-	assign abits = AWIDTH[5:0];
-	localparam TEST_LOGIC_RESET_STATE = 0;
-	localparam RUN_TEST_IDLE_STATE = 1;
-	localparam SELECT_DR_SCAN_STATE = 2;
-	localparam CAPTURE_DR_STATE = 3;
-	localparam SHIFT_DR_STATE = 4;
-	localparam EXIT1_DR_STATE = 5;
-	localparam PAUSE_DR_STATE = 6;
-	localparam EXIT2_DR_STATE = 7;
-	localparam UPDATE_DR_STATE = 8;
-	localparam SELECT_IR_SCAN_STATE = 9;
-	localparam CAPTURE_IR_STATE = 10;
-	localparam SHIFT_IR_STATE = 11;
-	localparam EXIT1_IR_STATE = 12;
-	localparam PAUSE_IR_STATE = 13;
-	localparam EXIT2_IR_STATE = 14;
-	localparam UPDATE_IR_STATE = 15;
-	always @(*) begin
-		nstate = state;
-		case (state)
-			TEST_LOGIC_RESET_STATE: nstate = (tms ? TEST_LOGIC_RESET_STATE : RUN_TEST_IDLE_STATE);
-			RUN_TEST_IDLE_STATE: nstate = (tms ? SELECT_DR_SCAN_STATE : RUN_TEST_IDLE_STATE);
-			SELECT_DR_SCAN_STATE: nstate = (tms ? SELECT_IR_SCAN_STATE : CAPTURE_DR_STATE);
-			CAPTURE_DR_STATE: nstate = (tms ? EXIT1_DR_STATE : SHIFT_DR_STATE);
-			SHIFT_DR_STATE: nstate = (tms ? EXIT1_DR_STATE : SHIFT_DR_STATE);
-			EXIT1_DR_STATE: nstate = (tms ? UPDATE_DR_STATE : PAUSE_DR_STATE);
-			PAUSE_DR_STATE: nstate = (tms ? EXIT2_DR_STATE : PAUSE_DR_STATE);
-			EXIT2_DR_STATE: nstate = (tms ? UPDATE_DR_STATE : SHIFT_DR_STATE);
-			UPDATE_DR_STATE: nstate = (tms ? SELECT_DR_SCAN_STATE : RUN_TEST_IDLE_STATE);
-			SELECT_IR_SCAN_STATE: nstate = (tms ? TEST_LOGIC_RESET_STATE : CAPTURE_IR_STATE);
-			CAPTURE_IR_STATE: nstate = (tms ? EXIT1_IR_STATE : SHIFT_IR_STATE);
-			SHIFT_IR_STATE: nstate = (tms ? EXIT1_IR_STATE : SHIFT_IR_STATE);
-			EXIT1_IR_STATE: nstate = (tms ? UPDATE_IR_STATE : PAUSE_IR_STATE);
-			PAUSE_IR_STATE: nstate = (tms ? EXIT2_IR_STATE : PAUSE_IR_STATE);
-			EXIT2_IR_STATE: nstate = (tms ? UPDATE_IR_STATE : SHIFT_IR_STATE);
-			UPDATE_IR_STATE: nstate = (tms ? SELECT_DR_SCAN_STATE : RUN_TEST_IDLE_STATE);
-			default: nstate = TEST_LOGIC_RESET_STATE;
-		endcase
-	end
-	always @(posedge tck or negedge trst)
-		if (!trst)
-			state <= TEST_LOGIC_RESET_STATE;
-		else
-			state <= nstate;
-	assign jtag_reset = state == TEST_LOGIC_RESET_STATE;
-	assign shift_dr = state == SHIFT_DR_STATE;
-	assign pause_dr = state == PAUSE_DR_STATE;
-	assign update_dr = state == UPDATE_DR_STATE;
-	assign capture_dr = state == CAPTURE_DR_STATE;
-	assign shift_ir = state == SHIFT_IR_STATE;
-	assign pause_ir = state == PAUSE_IR_STATE;
-	assign update_ir = state == UPDATE_IR_STATE;
-	assign capture_ir = state == CAPTURE_IR_STATE;
-	assign tdoEnable = shift_dr | shift_ir;
-	always @(negedge tck or negedge trst)
-		if (!trst)
-			ir <= 5'b00001;
-		else if (jtag_reset)
-			ir <= 5'b00001;
-		else if (update_ir)
-			ir <= (sr[4:0] == {5 {1'sb0}} ? 5'h1f : sr[4:0]);
-	assign devid_sel = ir == 5'b00001;
-	assign dr_en[0] = ir == 5'b10000;
-	assign dr_en[1] = ir == 5'b10001;
-	always @(posedge tck or negedge trst)
-		if (!trst)
-			sr <= {USER_DR_LENGTH {1'sb0}};
-		else
-			sr <= nsr;
-	always @(*) begin
-		nsr = sr;
-		case (1)
-			shift_dr:
-				case (1)
-					dr_en[1]: nsr = {tdi, sr[USER_DR_LENGTH - 1:1]};
-					dr_en[0], devid_sel: nsr = {{USER_DR_LENGTH - 32 {1'b0}}, tdi, sr[31:1]};
-					default: nsr = {{USER_DR_LENGTH - 1 {1'b0}}, tdi};
-				endcase
-			capture_dr: begin
-				nsr[0] = 1'b0;
-				case (1)
-					dr_en[0]: nsr = {{USER_DR_LENGTH - 15 {1'b0}}, idle, dmi_stat, abits, version};
-					dr_en[1]: nsr = {{AWIDTH {1'b0}}, rd_data, rd_status};
-					devid_sel: nsr = {{USER_DR_LENGTH - 32 {1'b0}}, jtag_id, 1'b1};
-				endcase
-			end
-			shift_ir: nsr = {{USER_DR_LENGTH - 5 {1'b0}}, tdi, sr[4:1]};
-			capture_ir: nsr = {{USER_DR_LENGTH - 1 {1'b0}}, 1'b1};
-		endcase
-	end
-	always @(negedge tck) tdo <= sr[0];
-	always @(posedge tck or negedge trst)
-		if (!trst) begin
-			dmi_hard_reset <= 1'b0;
-			dmi_reset <= 1'b0;
-		end
-		else if (update_dr & dr_en[0]) begin
-			dmi_hard_reset <= sr[17];
-			dmi_reset <= sr[16];
-		end
-		else begin
-			dmi_hard_reset <= 1'b0;
-			dmi_reset <= 1'b0;
-		end
-	always @(posedge tck or negedge trst)
-		if (!trst)
-			dr <= {USER_DR_LENGTH {1'sb0}};
-		else if (update_dr & dr_en[1])
-			dr <= sr;
-		else
-			dr <= {dr[USER_DR_LENGTH - 1:2], 2'b00};
-	assign {wr_addr, wr_data, wr_en, rd_en} = dr;
-endmodule
-module eb1_btb_tag_hash (
-	pc,
-	hash
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire [((pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]) + pt[2139-:9]:pt[2172-:9] + 1] pc;
-	output wire [pt[2139-:9] - 1:0] hash;
-	assign hash = {(pc[((pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]) + pt[2139-:9]:((pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]) + 1] ^ pc[(pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]:(pt[2172-:9] + pt[2139-:9]) + 1]) ^ pc[pt[2172-:9] + pt[2139-:9]:pt[2172-:9] + 1]};
-endmodule
-module eb1_btb_tag_hash_fold (
-	pc,
-	hash
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire [(pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]:pt[2172-:9] + 1] pc;
-	output wire [pt[2139-:9] - 1:0] hash;
-	assign hash = {pc[(pt[2172-:9] + pt[2139-:9]) + pt[2139-:9]:(pt[2172-:9] + pt[2139-:9]) + 1] ^ pc[pt[2172-:9] + pt[2139-:9]:pt[2172-:9] + 1]};
-endmodule
-module eb1_btb_addr_hash (
-	pc,
-	hash
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire [pt[2079-:9]:pt[2106-:9]] pc;
-	output wire [pt[2172-:9]:pt[2163-:6]] hash;
-	generate
-		if (pt[2125-:5]) begin : fold2
-			assign hash[pt[2172-:9]:pt[2163-:6]] = pc[pt[2115-:9]:pt[2106-:9]] ^ pc[pt[2079-:9]:pt[2070-:9]];
-		end
-		else assign hash[pt[2172-:9]:pt[2163-:6]] = (pc[pt[2115-:9]:pt[2106-:9]] ^ pc[pt[2097-:9]:pt[2088-:9]]) ^ pc[pt[2079-:9]:pt[2070-:9]];
-	endgenerate
-endmodule
-module eb1_btb_ghr_hash (
-	hashin,
-	ghr,
-	hash
-);
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
-	endfunction
-	parameter [2270:0] pt = {232'h0808040001c0400000000000010102000060800080103c12160802000c, sv2v_cast_1(4'h0), 5'h01, 5'h01, 6'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 7'h02, 9'h00c, 7'h04, 10'h020, 7'h07, 5'h01, 10'h027, 8'h08, 9'h004, 8'h0f, 36'h0f0040000, 14'h0004, 6'h02, 7'h03, 5'h01, 7'h05, 9'h001, 6'h02, 8'h01, 5'h01, 5'h01, 7'h01, 7'h03, 6'h03, 8'h08, 7'h02, 8'h05, 8'h03, 5'h01, 18'h00200, 7'h04, 11'h040, 5'h01, 5'h00, 11'h047, 9'h00c, 11'h040, 8'h08, 8'h02, 8'h02, 7'h02, 5'h00, 8'h06, 13'h0010, 7'h01, 5'h01, 17'h00080, 7'h06, 9'h00d, 8'h02, 8'h02, 5'h01, 7'h02, 9'h003, 9'h004, 9'h00c, 5'h01, 5'h00, 8'h08, 9'h004, 5'h01, 8'h0a, 36'h0affff000, 14'h0004, 5'h01, 6'h02, 8'h03, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 36'h000000000, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 5'h00, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 36'h0ffffffff, 5'h00, 5'h00, 5'h01, 6'h02, 8'h03, 9'h004, 7'h02, 9'h00c, 8'h04, 5'h00, 5'h00, 36'h0f00c0000, 9'h00f, 8'h01, 8'h0f, 13'h0020, 12'h01f, 13'h0020, 8'h08, 5'h01, 6'h02, 8'h01, 5'h01};
-	input wire [pt[2172-:9]:pt[2163-:6]] hashin;
-	input wire [pt[2236-:8] - 1:0] ghr;
-	output wire [pt[2270-:8]:pt[2262-:6]] hash;
-	generate
-		if (pt[2241-:5]) begin : ghrhash_cfg1
-			assign hash[pt[2270-:8]:pt[2262-:6]] = {ghr[pt[2236-:8] - 1:pt[2115-:9] - 1], hashin[pt[2115-:9]:2] ^ ghr[pt[2115-:9] - 2:0]};
-		end
-		else begin : ghrhash_cfg2
-			assign hash[pt[2270-:8]:pt[2262-:6]] = {hashin[pt[2236-:8] + 1:2] ^ ghr[pt[2236-:8] - 1:0]};
-		end
-	endgenerate
-endmodule
-module rvdff (
-	din,
-	clk,
-	rst_l,
-	dout
-);
-	parameter WIDTH = 1;
-	parameter SHORT = 0;
-	input wire [WIDTH - 1:0] din;
-	input wire clk;
-	input wire rst_l;
-	output reg [WIDTH - 1:0] dout;
-	generate
-		if (SHORT == 1) begin
-			wire [WIDTH:1] sv2v_tmp_70387;
-			assign sv2v_tmp_70387 = din;
-			always @(*) dout = sv2v_tmp_70387;
-		end
-	endgenerate
-	always @(posedge clk or negedge rst_l)
-		if (rst_l == 0)
-			dout[WIDTH - 1:0] <= 0;
-		else
-			dout[WIDTH - 1:0] <= din[WIDTH - 1:0];
-endmodule
-module rvdffs (
-	din,
-	en,
-	clk,
-	rst_l,
-	dout
-);
-	parameter WIDTH = 1;
-	parameter SHORT = 0;
-	input wire [WIDTH - 1:0] din;
-	input wire en;
-	input wire clk;
-	input wire rst_l;
-	output wire [WIDTH - 1:0] dout;
-	generate
-		if (SHORT == 1) begin : genblock
-			assign dout = din;
-		end
-		else begin : genblock
-			rvdff #(.WIDTH(WIDTH)) dffs(
-				.din((en ? din[WIDTH - 1:0] : dout[WIDTH - 1:0])),
-				.clk(clk),
-				.rst_l(rst_l),
-				.dout(dout)
-			);
-		end
-	endgenerate
-endmodule
-module rvdffsc (
-	din,
-	en,
-	clear,
-	clk,
-	rst_l,
-	dout
-);
-	parameter WIDTH = 1;
-	parameter SHORT = 0;
-	input wire [WIDTH - 1:0] din;
-	input wire en;
-	input wire clear;
-	input wire clk;
-	input wire rst_l;
-	output wire [WIDTH - 1:0] dout;
-	wire [WIDTH - 1:0] din_new;
-	generate
-		if (SHORT == 1) begin
-			assign dout = din;
-		end
-		else begin
-			assign din_new = {WIDTH {~clear}} & (en ? din[WIDTH - 1:0] : dout[WIDTH - 1:0]);
-			rvdff #(.WIDTH(WIDTH)) dffsc(
-				.din(din_new[WIDTH - 1:0]),
-				.clk(clk),
-				.rst_l(rst_l),
-				.dout(dout)
-			);
-		end
-	endgenerate
-endmodule
-module rvdff_fpga (
-	din,
-	clk,
-	clken,
-	rawclk,
-	rst_l,
-	dout
-);
-	parameter WIDTH = 1;
-	parameter SHORT = 0;
-	input wire [WIDTH - 1:0] din;
-	input wire clk;
-	input wire clken;
-	input wire rawclk;
-	input wire rst_l;
-	output wire [WIDTH - 1:0] dout;
-	generate
-		if (SHORT == 1) begin
-			assign dout = din;
-		end
-		else rvdff #(.WIDTH(WIDTH)) dff(
-			.din(din),
-			.clk(clk),
-			.rst_l(rst_l),
-			.dout(dout)
-		);
-	endgenerate
-endmodule
-module rvdffs_fpga (
-	din,
-	en,
-	clk,
-	clken,
-	rawclk,
-	rst_l,
-	dout
-);
-	parameter WIDTH = 1;
-	parameter SHORT = 0;
-	input wire [WIDTH - 1:0] din;
-	input wire en;
-	input wire clk;
-	input wire clken;
-	input wire rawclk;
-	input wire rst_l;
-	output wire [WIDTH - 1:0] dout;
-	generate
-		if (SHORT == 1) begin : genblock
-			assign dout = din;
-		end
-		else begin : genblock
-			rvdffs #(.WIDTH(WIDTH)) dffs(
-				.din(din),
-				.en(en),
-				.clk(clk),
-				.rst_l(rst_l),
-				.dout(dout)
-			);
-		end
-	endgenerate
-endmodule
-module rvdffsc_fpga (
-	din,
-	en,
-	clear,
-	clk,
-	clken,
-	rawclk,
-	rst_l,
-	dout
-);
-	parameter WIDTH = 1;
-	parameter SHORT = 0;
-	input wire [WIDTH - 1:0] din;
-	input wire en;
-	input wire clear;
-	input wire clk;
-	input wire clken;
-	input wire rawclk;
-	input wire rst_l;
-	output wire [WIDTH - 1:0] dout;
-	wire [WIDTH - 1:0] din_new;
-	generate
-		if (SHORT == 1) begin
-			assign dout = din;
-		end
-		else rvdffsc #(.WIDTH(WIDTH)) dffsc(
-			.din(din),
-			.en(en),
-			.clear(clear),
-			.clk(clk),
-			.rst_l(rst_l),
-			.dout(dout)
-		);
-	endgenerate
-endmodule
-module rvdffe (
-	din,
-	en,
-	clk,
-	rst_l,
-	scan_mode,
-	dout
-);
-	parameter WIDTH = 1;
-	parameter SHORT = 0;
-	parameter OVERRIDE = 0;
-	input wire [WIDTH - 1:0] din;
-	input wire en;
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	output wire [WIDTH - 1:0] dout;
-	wire l1clk;
-	generate
-		if (SHORT == 1) begin : genblock
-			begin : genblock
-				assign dout = din;
-			end
-		end
-		else begin : genblock
-			rvclkhdr clkhdr(
-				.en(en),
-				.clk(clk),
-				.scan_mode(scan_mode),
-				.l1clk(l1clk)
-			);
-			rvdff #(.WIDTH(WIDTH)) dff(
-				.din(din),
-				.rst_l(rst_l),
-				.dout(dout),
-				.clk(l1clk)
-			);
-		end
-	endgenerate
-endmodule
-module rvdffpcie (
-	din,
-	clk,
-	rst_l,
-	en,
-	scan_mode,
-	dout
-);
-	parameter WIDTH = 31;
-	input wire [WIDTH - 1:0] din;
-	input wire clk;
-	input wire rst_l;
-	input wire en;
-	input wire scan_mode;
-	output wire [WIDTH - 1:0] dout;
-	rvdfflie #(
-		.WIDTH(WIDTH),
-		.LEFT(19)
-	) dff(
-		.din(din),
-		.clk(clk),
-		.rst_l(rst_l),
-		.en(en),
-		.scan_mode(scan_mode),
-		.dout(dout)
-	);
-endmodule
-module rvdfflie (
-	din,
-	clk,
-	rst_l,
-	en,
-	scan_mode,
-	dout
-);
-	parameter WIDTH = 16;
-	parameter LEFT = 8;
-	input wire [WIDTH - 1:0] din;
-	input wire clk;
-	input wire rst_l;
-	input wire en;
-	input wire scan_mode;
-	output wire [WIDTH - 1:0] dout;
-	localparam EXTRA = WIDTH - LEFT;
-	localparam LMSB = WIDTH - 1;
-	localparam LLSB = (LMSB - LEFT) + 1;
-	localparam XMSB = LLSB - 1;
-	localparam XLSB = LLSB - EXTRA;
-	rvdffiee #(.WIDTH(LEFT)) dff_left(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.en(en),
-		.din(din[LMSB:LLSB]),
-		.dout(dout[LMSB:LLSB])
-	);
-	rvdffe #(.WIDTH(EXTRA)) dff_extra(
-		.en(en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.din(din[XMSB:XLSB]),
-		.dout(dout[XMSB:XLSB])
-	);
-endmodule
-module rvdffppe (
-	din,
-	clk,
-	rst_l,
-	en,
-	scan_mode,
-	dout
-);
-	parameter WIDTH = 32;
-	input wire [WIDTH - 1:0] din;
-	input wire clk;
-	input wire rst_l;
-	input wire en;
-	input wire scan_mode;
-	output wire [WIDTH - 1:0] dout;
-	localparam RIGHT = 31;
-	localparam LEFT = WIDTH - RIGHT;
-	localparam LMSB = WIDTH - 1;
-	localparam LLSB = (LMSB - LEFT) + 1;
-	localparam RMSB = LLSB - 1;
-	localparam RLSB = LLSB - RIGHT;
-	rvdffe #(.WIDTH(LEFT)) dff_left(
-		.en(en),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.din(din[LMSB:LLSB]),
-		.dout(dout[LMSB:LLSB])
-	);
-	rvdffe #(.WIDTH(RIGHT)) dff_right(
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.din(din[RMSB:RLSB]),
-		.dout(dout[RMSB:RLSB]),
-		.en(en & din[LLSB])
-	);
-endmodule
-module rvdffie (
-	din,
-	clk,
-	rst_l,
-	scan_mode,
-	dout
-);
-	parameter WIDTH = 1;
-	parameter OVERRIDE = 0;
-	input wire [WIDTH - 1:0] din;
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	output wire [WIDTH - 1:0] dout;
-	wire l1clk;
-	wire en;
-	assign en = |(din ^ dout);
-	rvclkhdr clkhdr(
-		.en(en),
-		.clk(clk),
-		.scan_mode(scan_mode),
-		.l1clk(l1clk)
-	);
-	rvdff #(.WIDTH(WIDTH)) dff(
-		.din(din),
-		.rst_l(rst_l),
-		.dout(dout),
-		.clk(l1clk)
-	);
-endmodule
-module rvdffiee (
-	din,
-	clk,
-	rst_l,
-	scan_mode,
-	en,
-	dout
-);
-	parameter WIDTH = 1;
-	parameter OVERRIDE = 0;
-	input wire [WIDTH - 1:0] din;
-	input wire clk;
-	input wire rst_l;
-	input wire scan_mode;
-	input wire en;
-	output wire [WIDTH - 1:0] dout;
-	wire l1clk;
-	wire final_en;
-	assign final_en = |(din ^ dout) & en;
-	rvdffe #(.WIDTH(WIDTH)) dff(
-		.din(din),
-		.clk(clk),
-		.rst_l(rst_l),
-		.scan_mode(scan_mode),
-		.dout(dout),
-		.en(final_en)
-	);
-endmodule
-module rvsyncss (
-	clk,
-	rst_l,
-	din,
-	dout
-);
-	parameter WIDTH = 251;
-	input wire clk;
-	input wire rst_l;
-	input wire [WIDTH - 1:0] din;
-	output wire [WIDTH - 1:0] dout;
-	wire [WIDTH - 1:0] din_ff1;
-	rvdff #(.WIDTH(WIDTH)) sync_ff1(
-		.clk(clk),
-		.rst_l(rst_l),
-		.din(din[WIDTH - 1:0]),
-		.dout(din_ff1[WIDTH - 1:0])
-	);
-	rvdff #(.WIDTH(WIDTH)) sync_ff2(
-		.clk(clk),
-		.rst_l(rst_l),
-		.din(din_ff1[WIDTH - 1:0]),
-		.dout(dout[WIDTH - 1:0])
-	);
-endmodule
-module rvsyncss_fpga (
-	gw_clk,
-	rawclk,
-	clken,
-	rst_l,
-	din,
-	dout
-);
-	parameter WIDTH = 251;
-	input wire gw_clk;
-	input wire rawclk;
-	input wire clken;
-	input wire rst_l;
-	input wire [WIDTH - 1:0] din;
-	output wire [WIDTH - 1:0] dout;
-	wire [WIDTH - 1:0] din_ff1;
-	rvdff_fpga #(.WIDTH(WIDTH)) sync_ff1(
-		.rst_l(rst_l),
-		.clk(gw_clk),
-		.rawclk(rawclk),
-		.clken(clken),
-		.din(din[WIDTH - 1:0]),
-		.dout(din_ff1[WIDTH - 1:0])
-	);
-	rvdff_fpga #(.WIDTH(WIDTH)) sync_ff2(
-		.rst_l(rst_l),
-		.clk(gw_clk),
-		.rawclk(rawclk),
-		.clken(clken),
-		.din(din_ff1[WIDTH - 1:0]),
-		.dout(dout[WIDTH - 1:0])
-	);
-endmodule
-module rvlsadder (
-	rs1,
-	offset,
-	dout
-);
-	input wire [31:0] rs1;
-	input wire [11:0] offset;
-	output wire [31:0] dout;
-	wire cout;
-	wire sign;
-	wire [31:12] rs1_inc;
-	wire [31:12] rs1_dec;
-	assign {cout, dout[11:0]} = {1'b0, rs1[11:0]} + {1'b0, offset[11:0]};
-	assign rs1_inc[31:12] = rs1[31:12] + 1;
-	assign rs1_dec[31:12] = rs1[31:12] - 1;
-	assign sign = offset[11];
-	assign dout[31:12] = (({20 {sign ~^ cout}} & rs1[31:12]) | ({20 {~sign & cout}} & rs1_inc[31:12])) | ({20 {sign & ~cout}} & rs1_dec[31:12]);
-endmodule
-module rvbradder (
-	pc,
-	offset,
-	dout
-);
-	input [31:1] pc;
-	input [12:1] offset;
-	output [31:1] dout;
-	wire cout;
-	wire sign;
-	wire [31:13] pc_inc;
-	wire [31:13] pc_dec;
-	assign {cout, dout[12:1]} = {1'b0, pc[12:1]} + {1'b0, offset[12:1]};
-	assign pc_inc[31:13] = pc[31:13] + 1;
-	assign pc_dec[31:13] = pc[31:13] - 1;
-	assign sign = offset[12];
-	assign dout[31:13] = (({19 {sign ~^ cout}} & pc[31:13]) | ({19 {~sign & cout}} & pc_inc[31:13])) | ({19 {sign & ~cout}} & pc_dec[31:13]);
-endmodule
-module rvtwoscomp (
-	din,
-	dout
-);
-	parameter WIDTH = 32;
-	input wire [WIDTH - 1:0] din;
-	output wire [WIDTH - 1:0] dout;
-	wire [WIDTH - 1:1] dout_temp;
-	genvar i;
-	generate
-		for (i = 1; i < WIDTH; i = i + 1) begin : flip_after_first_one
-			assign dout_temp[i] = (|din[i - 1:0] ? ~din[i] : din[i]);
-		end
-	endgenerate
-	assign dout[WIDTH - 1:0] = {dout_temp[WIDTH - 1:1], din[0]};
-endmodule
-module rvfindfirst1 (
-	din,
-	dout
-);
-	parameter WIDTH = 32;
-	parameter SHIFT = $clog2(WIDTH);
-	input wire [WIDTH - 1:0] din;
-	output reg [SHIFT - 1:0] dout;
-	reg done;
-	always @(*) begin
-		dout[SHIFT - 1:0] = {SHIFT {1'b0}};
-		done = 1'b0;
-		begin : sv2v_autoblock_64
-			reg signed [31:0] i;
-			for (i = WIDTH - 1; i > 0; i = i - 1)
-				begin : find_first_one
-					done = done | din[i];
-					dout[SHIFT - 1:0] = dout[SHIFT - 1:0] + (done ? 1'b0 : 1'b1);
-				end
-		end
-	end
-endmodule
-module rvfindfirst1hot (
-	din,
-	dout
-);
-	parameter WIDTH = 32;
-	input wire [WIDTH - 1:0] din;
-	output reg [WIDTH - 1:0] dout;
-	reg done;
-	always @(*) begin
-		dout[WIDTH - 1:0] = {WIDTH {1'b0}};
-		done = 1'b0;
-		begin : sv2v_autoblock_65
-			reg signed [31:0] i;
-			for (i = 0; i < WIDTH; i = i + 1)
-				begin : find_first_one
-					dout[i] = ~done & din[i];
-					done = done | din[i];
-				end
-		end
-	end
-endmodule
-module rvmaskandmatch (
-	mask,
-	data,
-	masken,
-	match
-);
-	parameter WIDTH = 32;
-	input wire [WIDTH - 1:0] mask;
-	input wire [WIDTH - 1:0] data;
-	input wire masken;
-	output wire match;
-	wire [WIDTH - 1:0] matchvec;
-	wire masken_or_fullmask;
-	assign masken_or_fullmask = masken & ~(&mask[WIDTH - 1:0]);
-	assign matchvec[0] = masken_or_fullmask | (mask[0] == data[0]);
-	genvar i;
-	generate
-		for (i = 1; i < WIDTH; i = i + 1) begin : match_after_first_zero
-			assign matchvec[i] = (&mask[i - 1:0] & masken_or_fullmask ? 1'b1 : mask[i] == data[i]);
-		end
-	endgenerate
-	assign match = &matchvec[WIDTH - 1:0];
-endmodule
-module rvrangecheck (
-	addr,
-	in_range,
-	in_region
-);
-	parameter CCM_SADR = 32'h00000000;
-	parameter CCM_SIZE = 128;
-	input wire [31:0] addr;
-	output wire in_range;
-	output wire in_region;
-	localparam REGION_BITS = 4;
-	localparam MASK_BITS = 10 + $clog2(CCM_SIZE);
-	wire [31:0] start_addr;
-	wire [3:0] region;
-	assign start_addr[31:0] = CCM_SADR;
-	assign region[3:0] = start_addr[31:28];
-	assign in_region = addr[31:28] == region[3:0];
-	generate
-		if (CCM_SIZE == 48) begin
-			assign in_range = (addr[31:MASK_BITS] == start_addr[31:MASK_BITS]) & ~(&addr[MASK_BITS - 1:MASK_BITS - 2]);
-		end
-		else assign in_range = addr[31:MASK_BITS] == start_addr[31:MASK_BITS];
-	endgenerate
-endmodule
-module rveven_paritygen (
-	data_in,
-	parity_out
-);
-	parameter WIDTH = 16;
-	input wire [WIDTH - 1:0] data_in;
-	output wire parity_out;
-	assign parity_out = ^data_in[WIDTH - 1:0];
-endmodule
-module rveven_paritycheck (
-	data_in,
-	parity_in,
-	parity_err
-);
-	parameter WIDTH = 16;
-	input wire [WIDTH - 1:0] data_in;
-	input wire parity_in;
-	output wire parity_err;
-	assign parity_err = ^data_in[WIDTH - 1:0] ^ parity_in;
-endmodule
-module rvecc_encode (
-	din,
-	ecc_out
-);
-	input [31:0] din;
-	output [6:0] ecc_out;
-	wire [5:0] ecc_out_temp;
-	assign ecc_out_temp[0] = ((((((((((((((((din[0] ^ din[1]) ^ din[3]) ^ din[4]) ^ din[6]) ^ din[8]) ^ din[10]) ^ din[11]) ^ din[13]) ^ din[15]) ^ din[17]) ^ din[19]) ^ din[21]) ^ din[23]) ^ din[25]) ^ din[26]) ^ din[28]) ^ din[30];
-	assign ecc_out_temp[1] = ((((((((((((((((din[0] ^ din[2]) ^ din[3]) ^ din[5]) ^ din[6]) ^ din[9]) ^ din[10]) ^ din[12]) ^ din[13]) ^ din[16]) ^ din[17]) ^ din[20]) ^ din[21]) ^ din[24]) ^ din[25]) ^ din[27]) ^ din[28]) ^ din[31];
-	assign ecc_out_temp[2] = ((((((((((((((((din[1] ^ din[2]) ^ din[3]) ^ din[7]) ^ din[8]) ^ din[9]) ^ din[10]) ^ din[14]) ^ din[15]) ^ din[16]) ^ din[17]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25]) ^ din[29]) ^ din[30]) ^ din[31];
-	assign ecc_out_temp[3] = (((((((((((((din[4] ^ din[5]) ^ din[6]) ^ din[7]) ^ din[8]) ^ din[9]) ^ din[10]) ^ din[18]) ^ din[19]) ^ din[20]) ^ din[21]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25];
-	assign ecc_out_temp[4] = (((((((((((((din[11] ^ din[12]) ^ din[13]) ^ din[14]) ^ din[15]) ^ din[16]) ^ din[17]) ^ din[18]) ^ din[19]) ^ din[20]) ^ din[21]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25];
-	assign ecc_out_temp[5] = ((((din[26] ^ din[27]) ^ din[28]) ^ din[29]) ^ din[30]) ^ din[31];
-	assign ecc_out[6:0] = {^din[31:0] ^ ^ecc_out_temp[5:0], ecc_out_temp[5:0]};
-endmodule
-module rvecc_decode (
-	en,
-	din,
-	ecc_in,
-	sed_ded,
-	dout,
-	ecc_out,
-	single_ecc_error,
-	double_ecc_error
-);
-	input en;
-	input [31:0] din;
-	input [6:0] ecc_in;
-	input sed_ded;
-	output [31:0] dout;
-	output [6:0] ecc_out;
-	output single_ecc_error;
-	output double_ecc_error;
-	wire [6:0] ecc_check;
-	wire [38:0] error_mask;
-	wire [38:0] din_plus_parity;
-	wire [38:0] dout_plus_parity;
-	assign ecc_check[0] = (((((((((((((((((ecc_in[0] ^ din[0]) ^ din[1]) ^ din[3]) ^ din[4]) ^ din[6]) ^ din[8]) ^ din[10]) ^ din[11]) ^ din[13]) ^ din[15]) ^ din[17]) ^ din[19]) ^ din[21]) ^ din[23]) ^ din[25]) ^ din[26]) ^ din[28]) ^ din[30];
-	assign ecc_check[1] = (((((((((((((((((ecc_in[1] ^ din[0]) ^ din[2]) ^ din[3]) ^ din[5]) ^ din[6]) ^ din[9]) ^ din[10]) ^ din[12]) ^ din[13]) ^ din[16]) ^ din[17]) ^ din[20]) ^ din[21]) ^ din[24]) ^ din[25]) ^ din[27]) ^ din[28]) ^ din[31];
-	assign ecc_check[2] = (((((((((((((((((ecc_in[2] ^ din[1]) ^ din[2]) ^ din[3]) ^ din[7]) ^ din[8]) ^ din[9]) ^ din[10]) ^ din[14]) ^ din[15]) ^ din[16]) ^ din[17]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25]) ^ din[29]) ^ din[30]) ^ din[31];
-	assign ecc_check[3] = ((((((((((((((ecc_in[3] ^ din[4]) ^ din[5]) ^ din[6]) ^ din[7]) ^ din[8]) ^ din[9]) ^ din[10]) ^ din[18]) ^ din[19]) ^ din[20]) ^ din[21]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25];
-	assign ecc_check[4] = ((((((((((((((ecc_in[4] ^ din[11]) ^ din[12]) ^ din[13]) ^ din[14]) ^ din[15]) ^ din[16]) ^ din[17]) ^ din[18]) ^ din[19]) ^ din[20]) ^ din[21]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25];
-	assign ecc_check[5] = (((((ecc_in[5] ^ din[26]) ^ din[27]) ^ din[28]) ^ din[29]) ^ din[30]) ^ din[31];
-	assign ecc_check[6] = (^din[31:0] ^ ^ecc_in[6:0]) & ~sed_ded;
-	assign single_ecc_error = (en & (ecc_check[6:0] != 0)) & ecc_check[6];
-	assign double_ecc_error = (en & (ecc_check[6:0] != 0)) & ~ecc_check[6];
-	generate
-		genvar i;
-		for (i = 1; i < 40; i = i + 1) assign error_mask[i - 1] = ecc_check[5:0] == i;
-	endgenerate
-	assign din_plus_parity[38:0] = {ecc_in[6], din[31:26], ecc_in[5], din[25:11], ecc_in[4], din[10:4], ecc_in[3], din[3:1], ecc_in[2], din[0], ecc_in[1:0]};
-	assign dout_plus_parity[38:0] = (single_ecc_error ? error_mask[38:0] ^ din_plus_parity[38:0] : din_plus_parity[38:0]);
-	assign dout[31:0] = {dout_plus_parity[37:32], dout_plus_parity[30:16], dout_plus_parity[14:8], dout_plus_parity[6:4], dout_plus_parity[2]};
-	assign ecc_out[6:0] = {dout_plus_parity[38] ^ (ecc_check[6:0] == 7'b1000000), dout_plus_parity[31], dout_plus_parity[15], dout_plus_parity[7], dout_plus_parity[3], dout_plus_parity[1:0]};
-endmodule
-module rvecc_encode_64 (
-	din,
-	ecc_out
-);
-	input [63:0] din;
-	output [6:0] ecc_out;
-	assign ecc_out[0] = (((((((((((((((((((((((((((((((((din[0] ^ din[1]) ^ din[3]) ^ din[4]) ^ din[6]) ^ din[8]) ^ din[10]) ^ din[11]) ^ din[13]) ^ din[15]) ^ din[17]) ^ din[19]) ^ din[21]) ^ din[23]) ^ din[25]) ^ din[26]) ^ din[28]) ^ din[30]) ^ din[32]) ^ din[34]) ^ din[36]) ^ din[38]) ^ din[40]) ^ din[42]) ^ din[44]) ^ din[46]) ^ din[48]) ^ din[50]) ^ din[52]) ^ din[54]) ^ din[56]) ^ din[57]) ^ din[59]) ^ din[61]) ^ din[63];
-	assign ecc_out[1] = (((((((((((((((((((((((((((((((((din[0] ^ din[2]) ^ din[3]) ^ din[5]) ^ din[6]) ^ din[9]) ^ din[10]) ^ din[12]) ^ din[13]) ^ din[16]) ^ din[17]) ^ din[20]) ^ din[21]) ^ din[24]) ^ din[25]) ^ din[27]) ^ din[28]) ^ din[31]) ^ din[32]) ^ din[35]) ^ din[36]) ^ din[39]) ^ din[40]) ^ din[43]) ^ din[44]) ^ din[47]) ^ din[48]) ^ din[51]) ^ din[52]) ^ din[55]) ^ din[56]) ^ din[58]) ^ din[59]) ^ din[62]) ^ din[63];
-	assign ecc_out[2] = (((((((((((((((((((((((((((((((((din[1] ^ din[2]) ^ din[3]) ^ din[7]) ^ din[8]) ^ din[9]) ^ din[10]) ^ din[14]) ^ din[15]) ^ din[16]) ^ din[17]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25]) ^ din[29]) ^ din[30]) ^ din[31]) ^ din[32]) ^ din[37]) ^ din[38]) ^ din[39]) ^ din[40]) ^ din[45]) ^ din[46]) ^ din[47]) ^ din[48]) ^ din[53]) ^ din[54]) ^ din[55]) ^ din[56]) ^ din[60]) ^ din[61]) ^ din[62]) ^ din[63];
-	assign ecc_out[3] = (((((((((((((((((((((((((((((din[4] ^ din[5]) ^ din[6]) ^ din[7]) ^ din[8]) ^ din[9]) ^ din[10]) ^ din[18]) ^ din[19]) ^ din[20]) ^ din[21]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25]) ^ din[33]) ^ din[34]) ^ din[35]) ^ din[36]) ^ din[37]) ^ din[38]) ^ din[39]) ^ din[40]) ^ din[49]) ^ din[50]) ^ din[51]) ^ din[52]) ^ din[53]) ^ din[54]) ^ din[55]) ^ din[56];
-	assign ecc_out[4] = (((((((((((((((((((((((((((((din[11] ^ din[12]) ^ din[13]) ^ din[14]) ^ din[15]) ^ din[16]) ^ din[17]) ^ din[18]) ^ din[19]) ^ din[20]) ^ din[21]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25]) ^ din[41]) ^ din[42]) ^ din[43]) ^ din[44]) ^ din[45]) ^ din[46]) ^ din[47]) ^ din[48]) ^ din[49]) ^ din[50]) ^ din[51]) ^ din[52]) ^ din[53]) ^ din[54]) ^ din[55]) ^ din[56];
-	assign ecc_out[5] = (((((((((((((((((((((((((((((din[26] ^ din[27]) ^ din[28]) ^ din[29]) ^ din[30]) ^ din[31]) ^ din[32]) ^ din[33]) ^ din[34]) ^ din[35]) ^ din[36]) ^ din[37]) ^ din[38]) ^ din[39]) ^ din[40]) ^ din[41]) ^ din[42]) ^ din[43]) ^ din[44]) ^ din[45]) ^ din[46]) ^ din[47]) ^ din[48]) ^ din[49]) ^ din[50]) ^ din[51]) ^ din[52]) ^ din[53]) ^ din[54]) ^ din[55]) ^ din[56];
-	assign ecc_out[6] = (((((din[57] ^ din[58]) ^ din[59]) ^ din[60]) ^ din[61]) ^ din[62]) ^ din[63];
-endmodule
-module rvecc_decode_64 (
-	en,
-	din,
-	ecc_in,
-	ecc_error
-);
-	input en;
-	input [63:0] din;
-	input [6:0] ecc_in;
-	output ecc_error;
-	wire [6:0] ecc_check;
-	assign ecc_check[0] = ((((((((((((((((((((((((((((((((((ecc_in[0] ^ din[0]) ^ din[1]) ^ din[3]) ^ din[4]) ^ din[6]) ^ din[8]) ^ din[10]) ^ din[11]) ^ din[13]) ^ din[15]) ^ din[17]) ^ din[19]) ^ din[21]) ^ din[23]) ^ din[25]) ^ din[26]) ^ din[28]) ^ din[30]) ^ din[32]) ^ din[34]) ^ din[36]) ^ din[38]) ^ din[40]) ^ din[42]) ^ din[44]) ^ din[46]) ^ din[48]) ^ din[50]) ^ din[52]) ^ din[54]) ^ din[56]) ^ din[57]) ^ din[59]) ^ din[61]) ^ din[63];
-	assign ecc_check[1] = ((((((((((((((((((((((((((((((((((ecc_in[1] ^ din[0]) ^ din[2]) ^ din[3]) ^ din[5]) ^ din[6]) ^ din[9]) ^ din[10]) ^ din[12]) ^ din[13]) ^ din[16]) ^ din[17]) ^ din[20]) ^ din[21]) ^ din[24]) ^ din[25]) ^ din[27]) ^ din[28]) ^ din[31]) ^ din[32]) ^ din[35]) ^ din[36]) ^ din[39]) ^ din[40]) ^ din[43]) ^ din[44]) ^ din[47]) ^ din[48]) ^ din[51]) ^ din[52]) ^ din[55]) ^ din[56]) ^ din[58]) ^ din[59]) ^ din[62]) ^ din[63];
-	assign ecc_check[2] = ((((((((((((((((((((((((((((((((((ecc_in[2] ^ din[1]) ^ din[2]) ^ din[3]) ^ din[7]) ^ din[8]) ^ din[9]) ^ din[10]) ^ din[14]) ^ din[15]) ^ din[16]) ^ din[17]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25]) ^ din[29]) ^ din[30]) ^ din[31]) ^ din[32]) ^ din[37]) ^ din[38]) ^ din[39]) ^ din[40]) ^ din[45]) ^ din[46]) ^ din[47]) ^ din[48]) ^ din[53]) ^ din[54]) ^ din[55]) ^ din[56]) ^ din[60]) ^ din[61]) ^ din[62]) ^ din[63];
-	assign ecc_check[3] = ((((((((((((((((((((((((((((((ecc_in[3] ^ din[4]) ^ din[5]) ^ din[6]) ^ din[7]) ^ din[8]) ^ din[9]) ^ din[10]) ^ din[18]) ^ din[19]) ^ din[20]) ^ din[21]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25]) ^ din[33]) ^ din[34]) ^ din[35]) ^ din[36]) ^ din[37]) ^ din[38]) ^ din[39]) ^ din[40]) ^ din[49]) ^ din[50]) ^ din[51]) ^ din[52]) ^ din[53]) ^ din[54]) ^ din[55]) ^ din[56];
-	assign ecc_check[4] = ((((((((((((((((((((((((((((((ecc_in[4] ^ din[11]) ^ din[12]) ^ din[13]) ^ din[14]) ^ din[15]) ^ din[16]) ^ din[17]) ^ din[18]) ^ din[19]) ^ din[20]) ^ din[21]) ^ din[22]) ^ din[23]) ^ din[24]) ^ din[25]) ^ din[41]) ^ din[42]) ^ din[43]) ^ din[44]) ^ din[45]) ^ din[46]) ^ din[47]) ^ din[48]) ^ din[49]) ^ din[50]) ^ din[51]) ^ din[52]) ^ din[53]) ^ din[54]) ^ din[55]) ^ din[56];
-	assign ecc_check[5] = ((((((((((((((((((((((((((((((ecc_in[5] ^ din[26]) ^ din[27]) ^ din[28]) ^ din[29]) ^ din[30]) ^ din[31]) ^ din[32]) ^ din[33]) ^ din[34]) ^ din[35]) ^ din[36]) ^ din[37]) ^ din[38]) ^ din[39]) ^ din[40]) ^ din[41]) ^ din[42]) ^ din[43]) ^ din[44]) ^ din[45]) ^ din[46]) ^ din[47]) ^ din[48]) ^ din[49]) ^ din[50]) ^ din[51]) ^ din[52]) ^ din[53]) ^ din[54]) ^ din[55]) ^ din[56];
-	assign ecc_check[6] = ((((((ecc_in[6] ^ din[57]) ^ din[58]) ^ din[59]) ^ din[60]) ^ din[61]) ^ din[62]) ^ din[63];
-	assign ecc_error = en & (ecc_check[6:0] != 0);
-endmodule
-module rvclkhdr (
-	en,
-	clk,
-	scan_mode,
-	l1clk
-);
-	input wire en;
-	input wire clk;
-	input wire scan_mode;
-	output wire l1clk;
-	wire SE;
-	assign SE = 0;
-	sky130_fd_sc_hd__dlclkp_1 clkhdr(
-		.VPWR(1'b1),
-		.VGND(1'b0),
-		.CLK(clk),
-		.GCLK(l1clk),
-		.GATE(en)
-	);
-endmodule
-module rvoclkhdr (
-	en,
-	clk,
-	scan_mode,
-	l1clk
-);
-	input wire en;
-	input wire clk;
-	input wire scan_mode;
-	output wire l1clk;
-	wire SE;
-	assign SE = 0;
-	sky130_fd_sc_hd__dlclkp_1 clkhdr(
-		.VPWR(1'b1),
-		.VGND(1'b0),
-		.CLK(clk),
-		.GCLK(l1clk),
-		.GATE(en)
-	);
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/openlane/sky130_sram_1kbyte_1rw1r_32x256_8.v b/verilog/rtl/BrqRV_EB1/design/openlane/sky130_sram_1kbyte_1rw1r_32x256_8.v
deleted file mode 100644
index 4048ea8..0000000
--- a/verilog/rtl/BrqRV_EB1/design/openlane/sky130_sram_1kbyte_1rw1r_32x256_8.v
+++ /dev/null
@@ -1,114 +0,0 @@
-// OpenRAM SRAM model
-// Words: 256
-// Word size: 32
-// Write size: 8
-
-module sky130_sram_1kbyte_1rw1r_32x256_8(
-`ifdef USE_POWER_PINS
-    vccd1,
-    vssd1,
-`endif
-// Port 0: RW
-    clk0,csb0,web0,wmask0,addr0,din0,dout0,
-// Port 1: R
-    clk1,csb1,addr1,dout1
-  );
-
-  parameter NUM_WMASKS = 4 ;
-  parameter DATA_WIDTH = 32 ;
-  parameter ADDR_WIDTH = 8 ;
-  parameter RAM_DEPTH = 1 << ADDR_WIDTH;
-  // FIXME: This delay is arbitrary.
-  parameter DELAY = 3 ;
-  parameter VERBOSE = 1 ; //Set to 0 to only display warnings
-  parameter T_HOLD = 1 ; //Delay to hold dout value after posedge. Value is arbitrary
-
-`ifdef USE_POWER_PINS
-    inout vccd1;
-    inout vssd1;
-`endif
-  input  clk0; // clock
-  input   csb0; // active low chip select
-  input  web0; // active low write control
-  input [NUM_WMASKS-1:0]   wmask0; // write mask
-  input [ADDR_WIDTH-1:0]  addr0;
-  input [DATA_WIDTH-1:0]  din0;
-  output [DATA_WIDTH-1:0] dout0;
-  input  clk1; // clock
-  input   csb1; // active low chip select
-  input [ADDR_WIDTH-1:0]  addr1;
-  output [DATA_WIDTH-1:0] dout1;
-
-  reg  csb0_reg;
-  reg  web0_reg;
-  reg [NUM_WMASKS-1:0]   wmask0_reg;
-  reg [ADDR_WIDTH-1:0]  addr0_reg;
-  reg [DATA_WIDTH-1:0]  din0_reg;
-  reg [DATA_WIDTH-1:0]  dout0;
-
-  // All inputs are registers
-  always @(posedge clk0)
-  begin
-    csb0_reg = csb0;
-    web0_reg = web0;
-    wmask0_reg = wmask0;
-    addr0_reg = addr0;
-    din0_reg = din0;
-    //#(T_HOLD) dout0 = 32'bx;
-    if ( !csb0_reg && web0_reg && VERBOSE ) 
-      $display($time," Reading %m addr0=%b dout0=%b",addr0_reg,mem[addr0_reg]);
-    if ( !csb0_reg && !web0_reg && VERBOSE )
-      $display($time," Writing %m addr0=%b din0=%b wmask0=%b",addr0_reg,din0_reg,wmask0_reg);
-  end
-
-  reg  csb1_reg;
-  reg [ADDR_WIDTH-1:0]  addr1_reg;
-  reg [DATA_WIDTH-1:0]  dout1;
-
-  // All inputs are registers
-  always @(posedge clk1)
-  begin
-    csb1_reg = csb1;
-    addr1_reg = addr1;
-    if (!csb0 && !web0 && !csb1 && (addr0 == addr1))
-         $display($time," WARNING: Writing and reading addr0=%b and addr1=%b simultaneously!",addr0,addr1);
-    //#(T_HOLD) dout1 = 32'bx;
-    if ( !csb1_reg && VERBOSE ) 
-      $display($time," Reading %m addr1=%b dout1=%b",addr1_reg,mem[addr1_reg]);
-  end
-
-reg [DATA_WIDTH-1:0]    mem [0:RAM_DEPTH-1];
-
-  // Memory Write Block Port 0
-  // Write Operation : When web0 = 0, csb0 = 0
-  always @ (negedge clk0)
-  begin : MEM_WRITE0
-    if ( !csb0_reg && !web0_reg ) begin
-        if (wmask0_reg[0])
-                mem[addr0_reg][7:0] = din0_reg[7:0];
-        if (wmask0_reg[1])
-                mem[addr0_reg][15:8] = din0_reg[15:8];
-        if (wmask0_reg[2])
-                mem[addr0_reg][23:16] = din0_reg[23:16];
-        if (wmask0_reg[3])
-                mem[addr0_reg][31:24] = din0_reg[31:24];
-    end
-  end
-
-  // Memory Read Block Port 0
-  // Read Operation : When web0 = 1, csb0 = 0
-  always @ (negedge clk0)
-  begin : MEM_READ0
-    if (!csb0_reg && web0_reg)
-       dout0 <= #(DELAY) mem[addr0_reg];
-  end
-
-  // Memory Read Block Port 1
-  // Read Operation : When web1 = 1, csb1 = 0
-  always @ (negedge clk1)
-  begin : MEM_READ1
-    if (!csb1_reg)
-       dout1 <= #(DELAY) mem[addr1_reg];
-  end
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/pd_defines.vh b/verilog/rtl/BrqRV_EB1/design/pd_defines.vh
deleted file mode 100644
index 0b9763c..0000000
--- a/verilog/rtl/BrqRV_EB1/design/pd_defines.vh
+++ /dev/null
@@ -1,11 +0,0 @@
-// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-// This is an automatically generated file by hshabbir on و 08:16:54 PKT ت 08 جون 2021
-//
-// cmd:    brqrv -target=default -set build_axi4 
-//
-
-`include "common_defines.vh"
-`undef RV_ASSERT_ON
-`undef TEC_RV_ICG
-`define TEC_RV_ICG sky130_fd_sc_hd__dlclkp_1
-`define RV_PHYSICAL 1
diff --git a/verilog/rtl/BrqRV_EB1/design/rvjtag_tap.v b/verilog/rtl/BrqRV_EB1/design/rvjtag_tap.v
deleted file mode 100644
index d4969b3..0000000
--- a/verilog/rtl/BrqRV_EB1/design/rvjtag_tap.v
+++ /dev/null
@@ -1,224 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or it's affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License
-
-module rvjtag_tap #(
-parameter AWIDTH = 7
-)
-(
-input               trst,
-input               tck,
-input               tms,
-input               tdi,
-output   reg        tdo,
-output              tdoEnable,
-
-output [31:0]       wr_data,
-output [AWIDTH-1:0] wr_addr,
-output              wr_en,
-output              rd_en,
-
-input   [31:0]      rd_data,
-input   [1:0]       rd_status,
-
-output  reg         dmi_reset,
-output  reg         dmi_hard_reset,
-
-input   [2:0]       idle,
-input   [1:0]       dmi_stat,
-/*
---  revisionCode        : 4'h0;
---  manufacturersIdCode : 11'h45;
---  deviceIdCode        : 16'h0001;
---  order MSB .. LSB -> [4 bit version or revision] [16 bit part number] [11 bit manufacturer id] [value of 1'b1 in LSB]
-*/
-input   [31:1]      jtag_id,
-input   [3:0]       version
-);
-
-localparam USER_DR_LENGTH = AWIDTH + 34;
-
-
-reg [USER_DR_LENGTH-1:0] sr, nsr, dr;
-
-///////////////////////////////////////////////////////
-//                      Tap controller
-///////////////////////////////////////////////////////
-logic[3:0] state, nstate;
-logic [4:0] ir;
-wire jtag_reset;
-wire shift_dr;
-wire pause_dr;
-wire update_dr;
-wire capture_dr;
-wire shift_ir;
-wire pause_ir ;
-wire update_ir ;
-wire capture_ir;
-wire[1:0] dr_en;
-wire devid_sel;
-wire [5:0] abits;
-
-assign abits = AWIDTH[5:0];
-
-
-localparam TEST_LOGIC_RESET_STATE = 0;
-localparam RUN_TEST_IDLE_STATE    = 1;
-localparam SELECT_DR_SCAN_STATE   = 2;
-localparam CAPTURE_DR_STATE       = 3;
-localparam SHIFT_DR_STATE         = 4;
-localparam EXIT1_DR_STATE         = 5;
-localparam PAUSE_DR_STATE         = 6;
-localparam EXIT2_DR_STATE         = 7;
-localparam UPDATE_DR_STATE        = 8;
-localparam SELECT_IR_SCAN_STATE   = 9;
-localparam CAPTURE_IR_STATE       = 10;
-localparam SHIFT_IR_STATE         = 11;
-localparam EXIT1_IR_STATE         = 12;
-localparam PAUSE_IR_STATE         = 13;
-localparam EXIT2_IR_STATE         = 14;
-localparam UPDATE_IR_STATE        = 15;
-
-always_comb  begin
-    nstate = state;
-    case(state)
-    TEST_LOGIC_RESET_STATE: nstate = tms ? TEST_LOGIC_RESET_STATE : RUN_TEST_IDLE_STATE;
-    RUN_TEST_IDLE_STATE:    nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    SELECT_DR_SCAN_STATE:   nstate = tms ? SELECT_IR_SCAN_STATE   : CAPTURE_DR_STATE;
-    CAPTURE_DR_STATE:       nstate = tms ? EXIT1_DR_STATE         : SHIFT_DR_STATE;
-    SHIFT_DR_STATE:         nstate = tms ? EXIT1_DR_STATE         : SHIFT_DR_STATE;
-    EXIT1_DR_STATE:         nstate = tms ? UPDATE_DR_STATE        : PAUSE_DR_STATE;
-    PAUSE_DR_STATE:         nstate = tms ? EXIT2_DR_STATE         : PAUSE_DR_STATE;
-    EXIT2_DR_STATE:         nstate = tms ? UPDATE_DR_STATE        : SHIFT_DR_STATE;
-    UPDATE_DR_STATE:        nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    SELECT_IR_SCAN_STATE:   nstate = tms ? TEST_LOGIC_RESET_STATE : CAPTURE_IR_STATE;
-    CAPTURE_IR_STATE:       nstate = tms ? EXIT1_IR_STATE         : SHIFT_IR_STATE;
-    SHIFT_IR_STATE:         nstate = tms ? EXIT1_IR_STATE         : SHIFT_IR_STATE;
-    EXIT1_IR_STATE:         nstate = tms ? UPDATE_IR_STATE        : PAUSE_IR_STATE;
-    PAUSE_IR_STATE:         nstate = tms ? EXIT2_IR_STATE         : PAUSE_IR_STATE;
-    EXIT2_IR_STATE:         nstate = tms ? UPDATE_IR_STATE        : SHIFT_IR_STATE;
-    UPDATE_IR_STATE:        nstate = tms ? SELECT_DR_SCAN_STATE   : RUN_TEST_IDLE_STATE;
-    default:                nstate = TEST_LOGIC_RESET_STATE;
-    endcase
-end
-
-always @ (posedge tck or negedge trst) begin
-    if(!trst) state <= TEST_LOGIC_RESET_STATE;
-    else state <= nstate;
-end
-
-assign jtag_reset = state == TEST_LOGIC_RESET_STATE;
-assign shift_dr   = state == SHIFT_DR_STATE;
-assign pause_dr   = state == PAUSE_DR_STATE;
-assign update_dr  = state == UPDATE_DR_STATE;
-assign capture_dr = state == CAPTURE_DR_STATE;
-assign shift_ir   = state == SHIFT_IR_STATE;
-assign pause_ir   = state == PAUSE_IR_STATE;
-assign update_ir  = state == UPDATE_IR_STATE;
-assign capture_ir = state == CAPTURE_IR_STATE;
-
-assign tdoEnable = shift_dr | shift_ir;
-
-///////////////////////////////////////////////////////
-//                      IR register
-///////////////////////////////////////////////////////
-
-always @ (negedge tck or negedge trst) begin
-   if (!trst) ir <= 5'b1;
-   else begin
-      if (jtag_reset) ir <= 5'b1;
-      else if (update_ir) ir <= (sr[4:0] == '0) ? 5'h1f :sr[4:0];
-   end
-end
-
-
-assign devid_sel  = ir == 5'b00001;
-assign dr_en[0]   = ir == 5'b10000;
-assign dr_en[1]   = ir == 5'b10001;
-
-///////////////////////////////////////////////////////
-//                      Shift register
-///////////////////////////////////////////////////////
-always @ (posedge tck or negedge trst) begin
-    if(!trst)begin
-        sr <= '0;
-    end
-    else begin
-        sr <= nsr;
-    end
-end
-
-// SR next value
-always_comb begin
-    nsr = sr;
-    case(1)
-    shift_dr:   begin
-                    case(1)
-                    dr_en[1]:   nsr = {tdi, sr[USER_DR_LENGTH-1:1]};
-
-                    dr_en[0],
-                    devid_sel:  nsr = {{USER_DR_LENGTH-32{1'b0}},tdi, sr[31:1]};
-                    default:    nsr = {{USER_DR_LENGTH-1{1'b0}},tdi}; // bypass
-                    endcase
-                end
-    capture_dr: begin
-                    nsr[0] = 1'b0;
-                    case(1)
-                    dr_en[0]:   nsr = {{USER_DR_LENGTH-15{1'b0}}, idle, dmi_stat, abits, version};
-                    dr_en[1]:   nsr = {{AWIDTH{1'b0}}, rd_data, rd_status};
-                    devid_sel:  nsr = {{USER_DR_LENGTH-32{1'b0}}, jtag_id, 1'b1};
-                    endcase
-                end
-    shift_ir:   nsr = {{USER_DR_LENGTH-5{1'b0}},tdi, sr[4:1]};
-    capture_ir: nsr = {{USER_DR_LENGTH-1{1'b0}},1'b1};
-    endcase
-end
-
-// TDO retiming
-always @ (negedge tck ) tdo <= sr[0];
-
-// DMI CS register
-always @ (posedge tck or negedge trst) begin
-    if(!trst) begin
-        dmi_hard_reset <= 1'b0;
-        dmi_reset      <= 1'b0;
-    end
-    else if (update_dr & dr_en[0]) begin
-        dmi_hard_reset <= sr[17];
-        dmi_reset      <= sr[16];
-    end
-    else begin
-        dmi_hard_reset <= 1'b0;
-        dmi_reset      <= 1'b0;
-    end
-end
-
-// DR register
-always @ (posedge tck or negedge trst) begin
-    if(!trst)
-        dr <=  '0;
-    else begin
-        if (update_dr & dr_en[1])
-            dr <= sr;
-        else
-            dr <= {dr[USER_DR_LENGTH-1:2],2'b0};
-    end
-end
-
-assign {wr_addr, wr_data, wr_en, rd_en} = dr;
-
-
-
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/sky130_sram_1kbyte_1rw1r_32x256_8.v b/verilog/rtl/BrqRV_EB1/design/sky130_sram_1kbyte_1rw1r_32x256_8.v
deleted file mode 100644
index 4048ea8..0000000
--- a/verilog/rtl/BrqRV_EB1/design/sky130_sram_1kbyte_1rw1r_32x256_8.v
+++ /dev/null
@@ -1,114 +0,0 @@
-// OpenRAM SRAM model
-// Words: 256
-// Word size: 32
-// Write size: 8
-
-module sky130_sram_1kbyte_1rw1r_32x256_8(
-`ifdef USE_POWER_PINS
-    vccd1,
-    vssd1,
-`endif
-// Port 0: RW
-    clk0,csb0,web0,wmask0,addr0,din0,dout0,
-// Port 1: R
-    clk1,csb1,addr1,dout1
-  );
-
-  parameter NUM_WMASKS = 4 ;
-  parameter DATA_WIDTH = 32 ;
-  parameter ADDR_WIDTH = 8 ;
-  parameter RAM_DEPTH = 1 << ADDR_WIDTH;
-  // FIXME: This delay is arbitrary.
-  parameter DELAY = 3 ;
-  parameter VERBOSE = 1 ; //Set to 0 to only display warnings
-  parameter T_HOLD = 1 ; //Delay to hold dout value after posedge. Value is arbitrary
-
-`ifdef USE_POWER_PINS
-    inout vccd1;
-    inout vssd1;
-`endif
-  input  clk0; // clock
-  input   csb0; // active low chip select
-  input  web0; // active low write control
-  input [NUM_WMASKS-1:0]   wmask0; // write mask
-  input [ADDR_WIDTH-1:0]  addr0;
-  input [DATA_WIDTH-1:0]  din0;
-  output [DATA_WIDTH-1:0] dout0;
-  input  clk1; // clock
-  input   csb1; // active low chip select
-  input [ADDR_WIDTH-1:0]  addr1;
-  output [DATA_WIDTH-1:0] dout1;
-
-  reg  csb0_reg;
-  reg  web0_reg;
-  reg [NUM_WMASKS-1:0]   wmask0_reg;
-  reg [ADDR_WIDTH-1:0]  addr0_reg;
-  reg [DATA_WIDTH-1:0]  din0_reg;
-  reg [DATA_WIDTH-1:0]  dout0;
-
-  // All inputs are registers
-  always @(posedge clk0)
-  begin
-    csb0_reg = csb0;
-    web0_reg = web0;
-    wmask0_reg = wmask0;
-    addr0_reg = addr0;
-    din0_reg = din0;
-    //#(T_HOLD) dout0 = 32'bx;
-    if ( !csb0_reg && web0_reg && VERBOSE ) 
-      $display($time," Reading %m addr0=%b dout0=%b",addr0_reg,mem[addr0_reg]);
-    if ( !csb0_reg && !web0_reg && VERBOSE )
-      $display($time," Writing %m addr0=%b din0=%b wmask0=%b",addr0_reg,din0_reg,wmask0_reg);
-  end
-
-  reg  csb1_reg;
-  reg [ADDR_WIDTH-1:0]  addr1_reg;
-  reg [DATA_WIDTH-1:0]  dout1;
-
-  // All inputs are registers
-  always @(posedge clk1)
-  begin
-    csb1_reg = csb1;
-    addr1_reg = addr1;
-    if (!csb0 && !web0 && !csb1 && (addr0 == addr1))
-         $display($time," WARNING: Writing and reading addr0=%b and addr1=%b simultaneously!",addr0,addr1);
-    //#(T_HOLD) dout1 = 32'bx;
-    if ( !csb1_reg && VERBOSE ) 
-      $display($time," Reading %m addr1=%b dout1=%b",addr1_reg,mem[addr1_reg]);
-  end
-
-reg [DATA_WIDTH-1:0]    mem [0:RAM_DEPTH-1];
-
-  // Memory Write Block Port 0
-  // Write Operation : When web0 = 0, csb0 = 0
-  always @ (negedge clk0)
-  begin : MEM_WRITE0
-    if ( !csb0_reg && !web0_reg ) begin
-        if (wmask0_reg[0])
-                mem[addr0_reg][7:0] = din0_reg[7:0];
-        if (wmask0_reg[1])
-                mem[addr0_reg][15:8] = din0_reg[15:8];
-        if (wmask0_reg[2])
-                mem[addr0_reg][23:16] = din0_reg[23:16];
-        if (wmask0_reg[3])
-                mem[addr0_reg][31:24] = din0_reg[31:24];
-    end
-  end
-
-  // Memory Read Block Port 0
-  // Read Operation : When web0 = 1, csb0 = 0
-  always @ (negedge clk0)
-  begin : MEM_READ0
-    if (!csb0_reg && web0_reg)
-       dout0 <= #(DELAY) mem[addr0_reg];
-  end
-
-  // Memory Read Block Port 1
-  // Read Operation : When web1 = 1, csb1 = 0
-  always @ (negedge clk1)
-  begin : MEM_READ1
-    if (!csb1_reg)
-       dout1 <= #(DELAY) mem[addr1_reg];
-  end
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/soc_files/iccm_controller.v b/verilog/rtl/BrqRV_EB1/design/soc_files/iccm_controller.v
deleted file mode 100644
index c28bc9d..0000000
--- a/verilog/rtl/BrqRV_EB1/design/soc_files/iccm_controller.v
+++ /dev/null
@@ -1,120 +0,0 @@
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-module eb1_iccm_controller (
-	clk_i,
-	rst_ni,
-	rx_dv_i,
-	rx_byte_i,
-	we_o,
-	addr_o,
-	wdata_o,
-	reset_o
-);
-	input wire clk_i;
-	input wire rst_ni;
-	input wire rx_dv_i;
-	input wire [7:0] rx_byte_i;
-	output wire we_o;
-	output wire [13:0] addr_o;
-	output wire [31:0] wdata_o;
-	output wire reset_o;
-	reg [1:0] ctrl_fsm_cs;
-	reg [1:0] ctrl_fsm_ns;
-	wire [7:0] rx_byte_d;
-	reg [7:0] rx_byte_q0;
-	reg [7:0] rx_byte_q1;
-	reg [7:0] rx_byte_q2;
-	reg [7:0] rx_byte_q3;
-	reg we_q;
-	reg we_d;
-	reg [13:0] addr_q;
-	reg [13:0] addr_d;
-	reg reset_q;
-	reg reset_d;
-	reg [1:0] byte_count;
-	localparam [1:0] DONE = 3;
-	localparam [1:0] LOAD = 1;
-	localparam [1:0] PROG = 2;
-	localparam [1:0] RESET = 0;
-	always @(*) begin
-		we_d = we_q;
-		addr_d = addr_q;
-		reset_d = reset_q;
-		ctrl_fsm_ns = ctrl_fsm_cs;
-		case (ctrl_fsm_cs)
-			RESET: begin
-				we_d = 1'b0;
-				reset_d = 1'b0;
-				if (rx_dv_i)
-					ctrl_fsm_ns = LOAD;
-				else
-					ctrl_fsm_ns = RESET;
-			end
-			LOAD:
-				if (((byte_count == 2'b11) && (rx_byte_q2 != 8'h0f)) && (rx_byte_d != 8'hff)) begin
-					we_d = 1'b1;
-					ctrl_fsm_ns = PROG;
-				end
-				else
-					ctrl_fsm_ns = DONE;
-			PROG: begin
-				we_d = 1'b0;
-				ctrl_fsm_ns = DONE;
-			end
-			DONE:
-				if (wdata_o == 32'h00000fff) begin
-					ctrl_fsm_ns = DONE;
-					reset_d = 1'b1;
-				end
-				else if (rx_dv_i)
-					ctrl_fsm_ns = LOAD;
-				else
-					ctrl_fsm_ns = DONE;
-			default: ctrl_fsm_ns = RESET;
-		endcase
-	end
-	assign rx_byte_d = rx_byte_i;
-	assign we_o = we_q;
-	assign addr_o = addr_q;
-	assign wdata_o = {rx_byte_q0, rx_byte_q1, rx_byte_q2, rx_byte_q3};
-	assign reset_o = reset_q;
-	always @(posedge clk_i or negedge rst_ni)
-		if (!rst_ni) begin
-			we_q <= 1'b0;
-			addr_q <= 14'b00000000000000;
-			rx_byte_q0 <= 8'b00000000;
-			rx_byte_q1 <= 8'b00000000;
-			rx_byte_q2 <= 8'b00000000;
-			rx_byte_q3 <= 8'b00000000;
-			reset_q <= 1'b0;
-			byte_count <= 2'b00;
-			ctrl_fsm_cs <= RESET;
-		end
-		else begin
-			we_q <= we_d;
-			if (ctrl_fsm_cs == LOAD) begin
-				if (byte_count == 2'b00) begin
-					rx_byte_q0 <= rx_byte_d;
-					byte_count <= 2'b01;
-				end
-				else if (byte_count == 2'b01) begin
-					rx_byte_q1 <= rx_byte_d;
-					byte_count <= 2'b10;
-				end
-				else if (byte_count == 2'b10) begin
-					rx_byte_q2 <= rx_byte_d;
-					byte_count <= 2'b11;
-				end
-				else begin
-					rx_byte_q3 <= rx_byte_d;
-					byte_count <= 2'b00;
-				end
-				addr_q <= addr_d;
-			end
-			if (ctrl_fsm_cs == PROG)
-				addr_q <= addr_d + 2'h2;
-			reset_q <= reset_d;
-			ctrl_fsm_cs <= ctrl_fsm_ns;
-		end
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/design/soc_files/tb_prog.v b/verilog/rtl/BrqRV_EB1/design/soc_files/tb_prog.v
deleted file mode 100644
index 0416bbf..0000000
--- a/verilog/rtl/BrqRV_EB1/design/soc_files/tb_prog.v
+++ /dev/null
@@ -1,258 +0,0 @@
-`timescale 1ns / 1ps
-
-module uartprog #(
-    parameter FILENAME=""
-)(
-    input clk,
-    input mprj_ready,
-    output reg r_Rx_Serial  // used by task UART_WRITE_BYTE
-);
-
-reg r_Clock = 0;
-parameter c_BIT_PERIOD = 8681; // used by task UART_WRITE_BYTE
-parameter c_CLOCK_PERIOD_NS = 100;
-
-//reg [7:0] mem [31:0];
-reg [7:0] INSTR [16384-1:0];
-integer instr_count = 0;
-reg ready;
-reg test;
-integer count;
-integer uart_counter;
-reg [7:0] data;
-integer tx_count;
-integer state_count;
-parameter [1:0] IDLE = 2'b00, START_TX = 2'b01, DATA_TX = 2'b10, STOP_TX = 2'b11;
-reg [1:0] state, next_state;
-reg valid;
-
-always @ ( posedge r_Clock ) begin
-  if (mprj_ready) begin
-    ready = 1'b1;
-  end else begin
-    ready = 1'b0;
-  end
-end
-
-initial begin
-        test = 1'b1;
-       // #1000 test = 1'b1;
-end
-
-always @(posedge clk) begin
-	count = count + 1;
-	end
-	
-always @(count) begin	
-	if(count > 1740) begin 
-	  	r_Clock = ~r_Clock;
-		count = 0;
-	end
-end
-
-always @(posedge clk or negedge clk) begin
-	if(next_state == IDLE) begin
-   	 state_count = 32'd0;
-  	end
-  	else begin
-  	state_count = state_count + 32'd1;
-  	end
- end
-
-initial begin
-   $readmemh(FILENAME,INSTR);
-end
-
-// State Machine
-always @(posedge clk) begin
-	if(~ready) begin
-	state = IDLE;
-	end
-	else begin
-	state = next_state;
-	end
-end
-
-always @(posedge clk) begin
-	case(state)
-	IDLE	 : begin
-		  // $display("In IDLE State");
-		   r_Rx_Serial <= 1'b1;
-		   next_state = (~valid && (state_count == 32'd00)) ? IDLE : START_TX;
-		   end
-	START_TX : begin
-		  // $display("Sending Start Bit");
-		   r_Rx_Serial <= 1'b0;
-		   next_state = (state_count == 32'd696) ? DATA_TX : START_TX;
-		   state_count = (state_count == 32'd696) ? 32'd0 : state_count;
-       	   end
-        DATA_TX : begin
-        	  // $display("Sending Data Bit");
-        	   r_Rx_Serial <= data[tx_count];
-        	   tx_count = (state_count == 32'd696) ? (tx_count + 32'd1) : tx_count;
-        	   next_state = (tx_count == 32'd8) ? STOP_TX : DATA_TX;
-        	   state_count = (state_count == 32'd696) ? 32'd0 : state_count;
-        	   end
-        STOP_TX : begin
-        	  // $display("Sending End Bit");
-		   r_Rx_Serial <= 1'b1;
-		   next_state = (state_count == 32'd696) ? IDLE : STOP_TX;
-		   state_count = (state_count == 32'd696) ? 32'd0 : state_count;
- 		   tx_count = 32'd0;
-		   valid = 1'b0;//(state_count == 32'd20) ? 1'b0 : valid;
-       	   end
-       endcase
-end		   
-		   
-		   
-/*task UART_WRITE_BYTE;
-    //input r_Clock;
-    input [7:0] i_Data;
-    integer     ii;
-    //integer tx_count = 32'd0;
-    begin
-   	// @ (posedge r_Clock);
-   	// r_Rx_Serial = 1'b0;
-    	//always @(posedge r_Clock) begin
-    		if(tx_count == 32'd0) begin
-        		// Send Start Bit
-        		$display("Sending start bit");
-        		r_Rx_Serial = 1'b0;
-        		#(c_BIT_PERIOD);
-       		#1000;
-       	end
-      // end		//tx_count = tx_count + 32'd1;
-      		//end
-      	//end/
-      		//else if(tx_count == 32'd1) begin
-      		/*	// Send Stop Bit
-        		$display("Sending end bit");
-        		r_Rx_Serial = 1'b1;
-        		#(c_BIT_PERIOD);
-        	end
-      		
-		//else begin
-        	// Send Data Byte
-       	 for (ii=0; ii<8; ii=ii+1) begin
-             	$display("Sending data bit");
-            	r_Rx_Serial = i_Data[ii];
-            	$display("Data bit, %h, %h",ii,i_Data[ii]);
-            	#(c_BIT_PERIOD);
-        	end
-
-        	// Send Stop Bit
-        	$display("Sending end bit");
-        	r_Rx_Serial = 1'b1;
-        	#(c_BIT_PERIOD);
-        	//end
-     end
-endtask // UART_WRITE_BYTE
-*/
-
-
-
-always @(posedge r_Clock)  begin
-	if(~ready && test) begin
-		valid = 1'b0;
-		uart_counter = 32'd0;
-		data = 8'h00;
-    		//r_Rx_Serial <= 1'b1;
-    		//$display("Starting");
-    	end
-    	else if(ready && test) begin
-    		if((instr_count < 16384) && ({INSTR[instr_count],INSTR[instr_count+1],INSTR[instr_count+2],INSTR[instr_count+3]} != 32'h00000FFF)) begin
-    			if(uart_counter == 32'd0) begin
-    				data = INSTR[instr_count];
-    				uart_counter = uart_counter + 32'd1;
-    				valid = 1;
-    			end
-    			else if(uart_counter == 32'd1) begin
-    				data = INSTR[instr_count+1];
-    				uart_counter = uart_counter + 32'd1;
-    				valid = 1;
-    			end
-    			else if(uart_counter == 32'd2) begin
-    				data = INSTR[instr_count+2];
-    				uart_counter = uart_counter + 32'd1;
-    				valid = 1;
-    			end
-    			else if(uart_counter == 32'd3) begin
-    				data = INSTR[instr_count+3];
-    				uart_counter = 32'd0;
-    				instr_count = instr_count + 32'd4;
-    				valid = 1;
-    				//$display("Instruction Count ,%d",instr_count);
-    			end
-    		end
-    		else begin
-    			if(uart_counter == 32'd0) begin
-    				data = 8'h00;
-    				uart_counter = uart_counter + 32'd1;
-    				valid = 1;
-    			end
-    			else if(uart_counter == 32'd1) begin
-    				data = 8'h00;
-    				uart_counter = uart_counter + 32'd1;
-    				valid = 1;
-    			end
-    			else if(uart_counter == 32'd2) begin
-    				data = 8'h0F;
-    				uart_counter = uart_counter + 32'd1;
-    				valid = 1;
-    			end
-    			else if(uart_counter == 32'd3) begin
-    				data = 8'hFF;
-    				uart_counter = uart_counter + 32'd1;
-    				valid = 1;
-    			end
-    			else if(uart_counter == 32'd4) begin
-    				valid = 0;
-    			end
-    		end    		
- end
-end
-
-    	
-    /*while (~mprj_ready && test) begin
-     $display("2nd Step");
-      #(c_CLOCK_PERIOD_NS);
-      //@(posedge r_Clock); 
-      r_Rx_Serial = 1'b1;
-      $display("3rd Step");
-    end*/
-    /*while (instr_count<255 && INSTR[instr_count]!=32'h00000FFF) begin
-      	//@(posedge r_Clock);
-       #100;
-       //UART_WRITE_BYTE(INSTR[instr_count][31:24]);
-       // @(posedge r_Clock);
-       #100;
-       // UART_WRITE_BYTE(INSTR[instr_count][23:16]);
-       // @(posedge r_Clock);
-       #100;
-       // UART_WRITE_BYTE(INSTR[instr_count][15:8]);
-       // @(posedge r_Clock);
-       #100;
-        UART_WRITE_BYTE(INSTR[instr_count][7:0]);
-       // @(posedge r_Clock);
-       #100;
-        instr_count = instr_count + 1'b1;
-    end*/
-    /*#(c_CLOCK_PERIOD_NS);
-   // @(posedge r_Clock);
-    UART_WRITE_BYTE(8'h00);
-    #(c_CLOCK_PERIOD_NS);
-   // @(posedge r_Clock);
-    UART_WRITE_BYTE(8'h00);
-    #(c_CLOCK_PERIOD_NS);
-   // @(posedge r_Clock);
-    UART_WRITE_BYTE(8'h0F);
-    #(c_CLOCK_PERIOD_NS);
-   // @(posedge r_Clock);
-    UART_WRITE_BYTE(8'hFF);
-    #(c_CLOCK_PERIOD_NS);
-   // @(posedge r_Clock);
-   $display("UART END");*/
-
-
-endmodule
-
diff --git a/verilog/rtl/BrqRV_EB1/design/soc_files/uart_rx_prog.v b/verilog/rtl/BrqRV_EB1/design/soc_files/uart_rx_prog.v
deleted file mode 100644
index 7af5031..0000000
--- a/verilog/rtl/BrqRV_EB1/design/soc_files/uart_rx_prog.v
+++ /dev/null
@@ -1,151 +0,0 @@
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-  
-module eb1_uart_rx_prog (
-   input         i_Clock,
-   input         rst_ni,
-   input         i_Rx_Serial,
-   input  [15:0] CLKS_PER_BIT,
-   output        o_Rx_DV,
-   output  [7:0] o_Rx_Byte
-   );
-    
-  parameter s_IDLE         = 3'b000;
-  parameter s_RX_START_BIT = 3'b001;
-  parameter s_RX_DATA_BITS = 3'b010;
-  parameter s_RX_STOP_BIT  = 3'b011;
-  parameter s_CLEANUP      = 3'b100;
-   
-  reg           r_Rx_Data_R;
-  reg           r_Rx_Data;
-   
-  reg [15:0]     r_Clock_Count;
-  reg [2:0]     r_Bit_Index; //8 bits total
-  reg [7:0]     r_Rx_Byte;
-  reg           r_Rx_DV;
-  reg [2:0]     r_SM_Main;
-   
-  // Purpose: Double-register the incoming data.
-  // This allows it to be used in the UART RX Clock Domain.
-  // (It removes problems caused by metastability)
-  always @(posedge i_Clock)
-    if(rst_ni == 1'b0) begin
-    	r_Rx_Data_R <= 1'b1;
-    	r_Rx_Data   <= 1'b1;
-    end
-    else begin
-      r_Rx_Data_R <= i_Rx_Serial;
-      r_Rx_Data   <= r_Rx_Data_R;
-    end
-   
-   
-  // Purpose: Control RX state machine
-  always @(posedge i_Clock or negedge rst_ni)
-    begin
-      if (rst_ni == 1'b0) begin
-        r_SM_Main <= s_IDLE;
-        r_Rx_DV       <= 1'b0;
-        r_Clock_Count <= 16'h0000;
-        r_Bit_Index   <= 3'b000;
-        r_Rx_Byte     <= 8'h00;
-      end else begin       
-      case (r_SM_Main)
-        s_IDLE :
-          begin
-            r_Rx_DV       <= 1'b0;
-            r_Clock_Count <= 0;
-            r_Bit_Index   <= 0;
-             
-            if (r_Rx_Data == 1'b0)          // Start bit detected
-              r_SM_Main <= s_RX_START_BIT;
-            else
-              r_SM_Main <= s_IDLE;
-          end
-         
-        // Check middle of start bit to make sure it's still low
-        s_RX_START_BIT :
-          begin
-            if (r_Clock_Count == ((CLKS_PER_BIT-1)>>1))
-              begin
-                if (r_Rx_Data == 1'b0)
-                  begin
-                    r_Clock_Count <= 0;  // reset counter, found the middle
-                    r_SM_Main     <= s_RX_DATA_BITS;
-                  end
-                else
-                  r_SM_Main <= s_IDLE;
-              end
-            else
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_START_BIT;
-              end
-          end // case: s_RX_START_BIT
-         
-         
-        // Wait CLKS_PER_BIT-1 clock cycles to sample serial data
-        s_RX_DATA_BITS :
-          begin
-            if (r_Clock_Count < CLKS_PER_BIT-1)
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_DATA_BITS;
-              end
-            else
-              begin
-                r_Clock_Count          <= 0;
-                r_Rx_Byte[r_Bit_Index] <= r_Rx_Data;
-                 
-                // Check if we have received all bits
-                if (r_Bit_Index < 7)
-                  begin
-                    r_Bit_Index <= r_Bit_Index + 1;
-                    r_SM_Main   <= s_RX_DATA_BITS;
-                  end
-                else
-                  begin
-                    r_Bit_Index <= 0;
-                    r_SM_Main   <= s_RX_STOP_BIT;
-                  end
-              end
-          end // case: s_RX_DATA_BITS
-     
-     
-        // Receive Stop bit.  Stop bit = 1
-        s_RX_STOP_BIT :
-          begin
-            // Wait CLKS_PER_BIT-1 clock cycles for Stop bit to finish
-            if (r_Clock_Count < CLKS_PER_BIT-1)
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_STOP_BIT;
-              end
-            else
-              begin
-                r_Rx_DV       <= 1'b1;
-                r_Clock_Count <= 0;
-                r_SM_Main     <= s_CLEANUP;
-              end
-          end // case: s_RX_STOP_BIT
-     
-         
-        // Stay here 1 clock
-        s_CLEANUP :
-          begin
-            r_SM_Main <= s_IDLE;
-            r_Rx_DV   <= 1'b0;
-          end
-         
-         
-        default :
-          r_SM_Main <= s_IDLE;
-         
-      endcase
-      end
-    end   
-   
-  assign o_Rx_DV   = r_Rx_DV;
-  assign o_Rx_Byte = r_Rx_Byte;
-   
-endmodule // uart_rx
-
diff --git a/verilog/rtl/BrqRV_EB1/design/uart_rx_prog.v b/verilog/rtl/BrqRV_EB1/design/uart_rx_prog.v
deleted file mode 100644
index 7af5031..0000000
--- a/verilog/rtl/BrqRV_EB1/design/uart_rx_prog.v
+++ /dev/null
@@ -1,151 +0,0 @@
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-  
-module eb1_uart_rx_prog (
-   input         i_Clock,
-   input         rst_ni,
-   input         i_Rx_Serial,
-   input  [15:0] CLKS_PER_BIT,
-   output        o_Rx_DV,
-   output  [7:0] o_Rx_Byte
-   );
-    
-  parameter s_IDLE         = 3'b000;
-  parameter s_RX_START_BIT = 3'b001;
-  parameter s_RX_DATA_BITS = 3'b010;
-  parameter s_RX_STOP_BIT  = 3'b011;
-  parameter s_CLEANUP      = 3'b100;
-   
-  reg           r_Rx_Data_R;
-  reg           r_Rx_Data;
-   
-  reg [15:0]     r_Clock_Count;
-  reg [2:0]     r_Bit_Index; //8 bits total
-  reg [7:0]     r_Rx_Byte;
-  reg           r_Rx_DV;
-  reg [2:0]     r_SM_Main;
-   
-  // Purpose: Double-register the incoming data.
-  // This allows it to be used in the UART RX Clock Domain.
-  // (It removes problems caused by metastability)
-  always @(posedge i_Clock)
-    if(rst_ni == 1'b0) begin
-    	r_Rx_Data_R <= 1'b1;
-    	r_Rx_Data   <= 1'b1;
-    end
-    else begin
-      r_Rx_Data_R <= i_Rx_Serial;
-      r_Rx_Data   <= r_Rx_Data_R;
-    end
-   
-   
-  // Purpose: Control RX state machine
-  always @(posedge i_Clock or negedge rst_ni)
-    begin
-      if (rst_ni == 1'b0) begin
-        r_SM_Main <= s_IDLE;
-        r_Rx_DV       <= 1'b0;
-        r_Clock_Count <= 16'h0000;
-        r_Bit_Index   <= 3'b000;
-        r_Rx_Byte     <= 8'h00;
-      end else begin       
-      case (r_SM_Main)
-        s_IDLE :
-          begin
-            r_Rx_DV       <= 1'b0;
-            r_Clock_Count <= 0;
-            r_Bit_Index   <= 0;
-             
-            if (r_Rx_Data == 1'b0)          // Start bit detected
-              r_SM_Main <= s_RX_START_BIT;
-            else
-              r_SM_Main <= s_IDLE;
-          end
-         
-        // Check middle of start bit to make sure it's still low
-        s_RX_START_BIT :
-          begin
-            if (r_Clock_Count == ((CLKS_PER_BIT-1)>>1))
-              begin
-                if (r_Rx_Data == 1'b0)
-                  begin
-                    r_Clock_Count <= 0;  // reset counter, found the middle
-                    r_SM_Main     <= s_RX_DATA_BITS;
-                  end
-                else
-                  r_SM_Main <= s_IDLE;
-              end
-            else
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_START_BIT;
-              end
-          end // case: s_RX_START_BIT
-         
-         
-        // Wait CLKS_PER_BIT-1 clock cycles to sample serial data
-        s_RX_DATA_BITS :
-          begin
-            if (r_Clock_Count < CLKS_PER_BIT-1)
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_DATA_BITS;
-              end
-            else
-              begin
-                r_Clock_Count          <= 0;
-                r_Rx_Byte[r_Bit_Index] <= r_Rx_Data;
-                 
-                // Check if we have received all bits
-                if (r_Bit_Index < 7)
-                  begin
-                    r_Bit_Index <= r_Bit_Index + 1;
-                    r_SM_Main   <= s_RX_DATA_BITS;
-                  end
-                else
-                  begin
-                    r_Bit_Index <= 0;
-                    r_SM_Main   <= s_RX_STOP_BIT;
-                  end
-              end
-          end // case: s_RX_DATA_BITS
-     
-     
-        // Receive Stop bit.  Stop bit = 1
-        s_RX_STOP_BIT :
-          begin
-            // Wait CLKS_PER_BIT-1 clock cycles for Stop bit to finish
-            if (r_Clock_Count < CLKS_PER_BIT-1)
-              begin
-                r_Clock_Count <= r_Clock_Count + 1;
-                r_SM_Main     <= s_RX_STOP_BIT;
-              end
-            else
-              begin
-                r_Rx_DV       <= 1'b1;
-                r_Clock_Count <= 0;
-                r_SM_Main     <= s_CLEANUP;
-              end
-          end // case: s_RX_STOP_BIT
-     
-         
-        // Stay here 1 clock
-        s_CLEANUP :
-          begin
-            r_SM_Main <= s_IDLE;
-            r_Rx_DV   <= 1'b0;
-          end
-         
-         
-        default :
-          r_SM_Main <= s_IDLE;
-         
-      endcase
-      end
-    end   
-   
-  assign o_Rx_DV   = r_Rx_DV;
-  assign o_Rx_Byte = r_Rx_Byte;
-   
-endmodule // uart_rx
-
diff --git a/verilog/rtl/BrqRV_EB1/testbench/SimJTAG.cc b/verilog/rtl/BrqRV_EB1/testbench/SimJTAG.cc
deleted file mode 100644
index 7179187..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/SimJTAG.cc
+++ /dev/null
@@ -1,26 +0,0 @@
-// See LICENSE.SiFive for license details.
-
-#include <cstdlib>
-#include "remote_bitbang.h"
-
-remote_bitbang_t* jtag;
-extern "C" int jtag_tick
-(
- unsigned char * jtag_TCK,
- unsigned char * jtag_TMS,
- unsigned char * jtag_TDI,
- unsigned char * jtag_TRSTn,
- unsigned char * srstn,
- unsigned char jtag_TDO
-)
-{
-  if (!jtag) {
-    // TODO: Pass in real port number
-    jtag = new remote_bitbang_t(0);
-  }
-
-  jtag->tick(jtag_TCK, jtag_TMS, jtag_TDI, jtag_TRSTn, srstn, jtag_TDO);
-
-  return jtag->done() ? (jtag->exit_code() << 1 | 1) : 0;
-
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/SimJTAG.v b/verilog/rtl/BrqRV_EB1/testbench/SimJTAG.v
deleted file mode 100644
index e7915bd..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/SimJTAG.v
+++ /dev/null
@@ -1,89 +0,0 @@
-// See LICENSE.SiFive for license details.
-//VCS coverage exclude_file
-import "DPI-C" function int jtag_tick
-(
- output bit jtag_TCK,
- output bit jtag_TMS,
- output bit jtag_TDI,
- output bit jtag_TRSTn,
- output bit sysrstn,
-
- input bit  jtag_TDO
-);
-
-module SimJTAG #(
-                 parameter TICK_DELAY = 50
-                 )(
-
-                   input         clock,
-                   input         reset,
-
-                   input         enable,
-                   input         init_done,
-
-                   output        jtag_TCK,
-                   output        jtag_TMS,
-                   output        jtag_TDI,
-                   output        jtag_TRSTn,
-                   output        srstn,
-
-                   input         jtag_TDO_data,
-                   input         jtag_TDO_driven,
-
-                   output [31:0] exit
-                   );
-
-   reg [31:0]                    tickCounterReg;
-   wire [31:0]                   tickCounterNxt;
-
-   assign tickCounterNxt = (tickCounterReg == 0) ? TICK_DELAY :  (tickCounterReg - 1);
-
-   bit          r_reset;
-
-   wire [31:0]  random_bits = $random;
-
-   wire         #0.1 __jtag_TDO = jtag_TDO_driven ?
-                jtag_TDO_data : random_bits[0];
-
-   bit          __jtag_TCK;
-   bit          __jtag_TMS;
-   bit          __jtag_TDI;
-   bit          __jtag_TRSTn;
-   int          __exit;
-   bit          sysrstn=1;
-
-   reg          init_done_sticky;
-
-   assign #0.1 jtag_TCK   = __jtag_TCK;
-   assign #0.1 jtag_TMS   = __jtag_TMS;
-   assign #0.1 jtag_TDI   = __jtag_TDI;
-   assign #0.1 jtag_TRSTn = __jtag_TRSTn;
-   assign srstn = sysrstn;
-
-   assign #0.1 exit = __exit;
-
-   always @(posedge clock) begin
-      r_reset <= reset;
-      if (reset || r_reset) begin
-         __exit = 0;
-         tickCounterReg <= TICK_DELAY;
-         init_done_sticky <= 1'b0;
-         __jtag_TCK = !__jtag_TCK;
-      end else begin
-         init_done_sticky <= init_done | init_done_sticky;
-         if (enable && init_done_sticky) begin
-            tickCounterReg <= tickCounterNxt;
-            if (tickCounterReg == 0) begin
-               __exit = jtag_tick(
-                                  __jtag_TCK,
-                                  __jtag_TMS,
-                                  __jtag_TDI,
-                                  __jtag_TRSTn,
-                                  sysrstn,
-                                  __jtag_TDO);
-            end
-         end // if (enable && init_done_sticky)
-      end // else: !if(reset || r_reset)
-   end // always @ (posedge clock)
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/testbench/ahb_sif.sv b/verilog/rtl/BrqRV_EB1/testbench/ahb_sif.sv
deleted file mode 100644
index 7ace236..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/ahb_sif.sv
+++ /dev/null
@@ -1,225 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-`ifdef RV_BUILD_AHB_LITE
-
-module ahb_sif (
-input logic [63:0] HWDATA,
-input logic HCLK,
-input logic HSEL,
-input logic [3:0] HPROT,
-input logic HWRITE,
-input logic [1:0] HTRANS,
-input logic [2:0] HSIZE,
-input logic HREADY,
-input logic HRESETn,
-input logic [31:0] HADDR,
-input logic [2:0] HBURST,
-
-output logic HREADYOUT,
-output logic HRESP,
-output logic [63:0] HRDATA
-);
-
-parameter MAILBOX_ADDR = 32'hD0580000;
-
-logic write;
-logic [31:0] laddr, addr;
-logic [7:0] strb_lat;
-logic [63:0] rdata;
-
-bit [7:0] mem [bit[31:0]];
-bit [7:0] wscnt;
-int dws = 0;
-int iws = 0;
-bit dws_rand;
-bit iws_rand;
-bit ok;
-
-// Wires
-wire [63:0] WriteData = HWDATA;
-wire [7:0] strb =  HSIZE == 3'b000 ? 8'h1 << HADDR[2:0] :
-                   HSIZE == 3'b001 ? 8'h3 << {HADDR[2:1],1'b0} :
-                   HSIZE == 3'b010 ? 8'hf << {HADDR[2],2'b0} : 8'hff;
-
-
-wire mailbox_write = write && laddr==MAILBOX_ADDR;
-
-
-initial begin
-    if ($value$plusargs("iws=%d", iws));
-    if ($value$plusargs("dws=%d", dws));
-    dws_rand = dws < 0;
-    iws_rand = iws < 0;
-end
-
-
-
-always @ (negedge HCLK ) begin
-    if(HREADY)
-        addr = HADDR;
-    if (write & HREADY) begin
-        if(strb_lat[7]) mem[{laddr[31:3],3'd7}] = HWDATA[63:56];
-        if(strb_lat[6]) mem[{laddr[31:3],3'd6}] = HWDATA[55:48];
-        if(strb_lat[5]) mem[{laddr[31:3],3'd5}] = HWDATA[47:40];
-        if(strb_lat[4]) mem[{laddr[31:3],3'd4}] = HWDATA[39:32];
-        if(strb_lat[3]) mem[{laddr[31:3],3'd3}] = HWDATA[31:24];
-        if(strb_lat[2]) mem[{laddr[31:3],3'd2}] = HWDATA[23:16];
-        if(strb_lat[1]) mem[{laddr[31:3],3'd1}] = HWDATA[15:08];
-        if(strb_lat[0]) mem[{laddr[31:3],3'd0}] = HWDATA[07:00];
-    end
-    if(HREADY & HSEL & |HTRANS) begin
-`ifdef VERILATOR
-        if(iws_rand & ~HPROT[0])
-            iws = $random & 15;
-        if(dws_rand & HPROT[0])
-            dws = $random & 15;
-`else
-        if(iws_rand & ~HPROT[0])
-            ok = std::randomize(iws) with {iws dist {0:=10, [1:3]:/2, [4:15]:/1};};
-        if(dws_rand & HPROT[0])
-            ok = std::randomize(dws) with {dws dist {0:=10, [1:3]:/2, [4:15]:/1};};
-`endif
-    end
-end
-
-
-assign HRDATA = HREADY ? rdata : ~rdata;
-assign HREADYOUT = wscnt == 0;
-assign HRESP = 0;
-
-always @(posedge HCLK or negedge HRESETn) begin
-    if(~HRESETn) begin
-        laddr <= 32'b0;
-        write <= 1'b0;
-        rdata <= '0;
-        wscnt <= 0;
-    end
-    else begin
-        if(HREADY & HSEL) begin
-            laddr <= HADDR;
-            write <= HWRITE & |HTRANS;
-            if(|HTRANS & ~HWRITE)
-                rdata <= {mem[{addr[31:3],3'd7}],
-                          mem[{addr[31:3],3'd6}],
-                          mem[{addr[31:3],3'd5}],
-                          mem[{addr[31:3],3'd4}],
-                          mem[{addr[31:3],3'd3}],
-                          mem[{addr[31:3],3'd2}],
-                          mem[{addr[31:3],3'd1}],
-                          mem[{addr[31:3],3'd0}]};
-            strb_lat <= strb;
-        end
-    end
-    if(HREADY & HSEL & |HTRANS)
-        wscnt <= HPROT[0] ? dws[7:0] : iws[7:0];
-    else if(wscnt != 0)
-        wscnt <= wscnt-1;
-end
-
-
-endmodule
-`endif
-
-`ifdef RV_BUILD_AXI4
-module axi_slv #(TAGW=1) (
-input                   aclk,
-input                   rst_l,
-input                   arvalid,
-output reg              arready,
-input [31:0]            araddr,
-input [TAGW-1:0]        arid,
-input [7:0]             arlen,
-input [1:0]             arburst,
-input [2:0]             arsize,
-
-output reg              rvalid,
-input                   rready,
-output reg [63:0]       rdata,
-output reg [1:0]        rresp,
-output reg [TAGW-1:0]   rid,
-output                  rlast,
-
-input                   awvalid,
-output                  awready,
-input [31:0]            awaddr,
-input [TAGW-1:0]        awid,
-input [7:0]             awlen,
-input [1:0]             awburst,
-input [2:0]             awsize,
-
-input [63:0]            wdata,
-input [7:0]             wstrb,
-input                   wvalid,
-output                  wready,
-
-output  reg             bvalid,
-input                   bready,
-output reg [1:0]        bresp,
-output reg [TAGW-1:0]   bid
-);
-
-parameter MAILBOX_ADDR = 32'hD0580000;
-parameter MEM_SIZE_DW = 8192;
-
-bit [7:0] mem [bit[31:0]];
-bit [63:0] memdata;
-wire [63:0] WriteData;
-wire mailbox_write;
-
-
-assign mailbox_write = awvalid && awaddr>=MAILBOX_ADDR && rst_l;
-assign WriteData = wdata;
-
-always @ ( posedge aclk or negedge rst_l) begin
-    if(!rst_l) begin
-        rvalid  <= 0;
-        bvalid  <= 0;
-    end
-    else begin
-        bid     <= awid;
-        rid     <= arid;
-        rvalid  <= arvalid;
-        bvalid  <= awvalid;
-        rdata   <= memdata;
-    end
-end
-
-always @ ( negedge aclk) begin
-    if(arvalid) memdata <= {mem[araddr+7], mem[araddr+6], mem[araddr+5], mem[araddr+4],
-                            mem[araddr+3], mem[araddr+2], mem[araddr+1], mem[araddr]};
-    if(awvalid) begin
-        if(wstrb[7]) mem[awaddr+7] = wdata[63:56];
-        if(wstrb[6]) mem[awaddr+6] = wdata[55:48];
-        if(wstrb[5]) mem[awaddr+5] = wdata[47:40];
-        if(wstrb[4]) mem[awaddr+4] = wdata[39:32];
-        if(wstrb[3]) mem[awaddr+3] = wdata[31:24];
-        if(wstrb[2]) mem[awaddr+2] = wdata[23:16];
-        if(wstrb[1]) mem[awaddr+1] = wdata[15:08];
-        if(wstrb[0]) mem[awaddr+0] = wdata[07:00];
-    end
-end
-
-
-assign arready = 1'b1;
-assign awready = 1'b1;
-assign wready  = 1'b1;
-assign rresp   = 2'b0;
-assign bresp   = 2'b0;
-assign rlast   = 1'b1;
-
-endmodule
-`endif
-
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark.c b/verilog/rtl/BrqRV_EB1/testbench/asm/cmark.c
deleted file mode 100644
index b366c80..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark.c
+++ /dev/null
@@ -1,2167 +0,0 @@
-#include "defines.h"
-
-#define ITERATIONS 1
-
-
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-
-//#include "/wd/users/jrahmeh/coremark_v1.0/riscv/coremark.h"
-
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-/* Topic: Description
-        This file contains  declarations of the various benchmark functions.
-*/
-
-/* Configuration: TOTAL_DATA_SIZE
-        Define total size for data algorithms will operate on
-*/
-#ifndef TOTAL_DATA_SIZE
-#define TOTAL_DATA_SIZE 2*1000
-#endif
-
-#define SEED_ARG 0
-#define SEED_FUNC 1
-#define SEED_VOLATILE 2
-
-#define MEM_STATIC 0
-#define MEM_MALLOC 1
-#define MEM_STACK 2
-
-/* File : core_portme.h */
-
-/*
-        Author : Shay Gal-On, EEMBC
-        Legal : TODO!
-*/
-/* Topic : Description
-        This file contains configuration constants required to execute on different platforms
-*/
-#ifndef CORE_PORTME_H
-#define CORE_PORTME_H
-/************************/
-/* Data types and settings */
-/************************/
-/* Configuration : HAS_FLOAT
-        Define to 1 if the platform supports floating point.
-*/
-#ifndef HAS_FLOAT
-#define HAS_FLOAT 0
-#endif
-/* Configuration : HAS_TIME_H
-        Define to 1 if platform has the time.h header file,
-        and implementation of functions thereof.
-*/
-#ifndef HAS_TIME_H
-#define HAS_TIME_H 0
-#endif
-/* Configuration : USE_CLOCK
-        Define to 1 if platform has the time.h header file,
-        and implementation of functions thereof.
-*/
-#ifndef USE_CLOCK
-#define USE_CLOCK 0
-#endif
-/* Configuration : HAS_STDIO
-        Define to 1 if the platform has stdio.h.
-*/
-#ifndef HAS_STDIO
-#define HAS_STDIO 0
-#endif
-/* Configuration : HAS_PRINTF
-        Define to 1 if the platform has stdio.h and implements the printf function.
-*/
-#ifndef HAS_PRINTF
-#define HAS_PRINTF 1
-int whisperPrintf(const char* format, ...);
-#define ee_printf whisperPrintf
-#endif
-
-/* Configuration : CORE_TICKS
-        Define type of return from the timing functions.
- */
-#include <time.h>
-typedef clock_t CORE_TICKS;
-
-/* Definitions : COMPILER_VERSION, COMPILER_FLAGS, MEM_LOCATION
-        Initialize these strings per platform
-*/
-#ifndef COMPILER_VERSION
- #ifdef __GNUC__
- #define COMPILER_VERSION "GCC"__VERSION__
- #else
- #define COMPILER_VERSION "Please put compiler version here (e.g. gcc 4.1)"
- #endif
-#endif
-#ifndef COMPILER_FLAGS
- #define COMPILER_FLAGS "-O2"
-#endif
-
-#ifndef MEM_LOCATION
-// #define MEM_LOCATION "STACK"
- #define MEM_LOCATION "STATIC"
-#endif
-
-/* Data Types :
-        To avoid compiler issues, define the data types that need ot be used for 8b, 16b and 32b in <core_portme.h>.
-
-        *Imprtant* :
-        ee_ptr_int needs to be the data type used to hold pointers, otherwise coremark may fail!!!
-*/
-typedef signed short ee_s16;
-typedef unsigned short ee_u16;
-typedef signed int ee_s32;
-typedef double ee_f32;
-typedef unsigned char ee_u8;
-typedef unsigned int ee_u32;
-typedef ee_u32 ee_ptr_int;
-typedef size_t ee_size_t;
-/* align_mem :
-        This macro is used to align an offset to point to a 32b value. It is used in the Matrix algorithm to initialize the input memory blocks.
-*/
-#define align_mem(x) (void *)(4 + (((ee_ptr_int)(x) - 1) & ~3))
-
-/* Configuration : SEED_METHOD
-        Defines method to get seed values that cannot be computed at compile time.
-
-        Valid values :
-        SEED_ARG - from command line.
-        SEED_FUNC - from a system function.
-        SEED_VOLATILE - from volatile variables.
-*/
-#ifndef SEED_METHOD
-#define SEED_METHOD SEED_VOLATILE
-#endif
-
-/* Configuration : MEM_METHOD
-        Defines method to get a block of memry.
-
-        Valid values :
-        MEM_MALLOC - for platforms that implement malloc and have malloc.h.
-        MEM_STATIC - to use a static memory array.
-        MEM_STACK - to allocate the data block on the stack (NYI).
-*/
-#ifndef MEM_METHOD
-//#define MEM_METHOD MEM_STACK
-#define MEM_METHOD MEM_STATIC
-#endif
-
-/* Configuration : MULTITHREAD
-        Define for parallel execution
-
-        Valid values :
-        1 - only one context (default).
-        N>1 - will execute N copies in parallel.
-
-        Note :
-        If this flag is defined to more then 1, an implementation for launching parallel contexts must be defined.
-
-        Two sample implementations are provided. Use <USE_PTHREAD> or <USE_FORK> to enable them.
-
-        It is valid to have a different implementation of <core_start_parallel> and <core_end_parallel> in <core_portme.c>,
-        to fit a particular architecture.
-*/
-#ifndef MULTITHREAD
-#define MULTITHREAD 1
-#define USE_PTHREAD 0
-#define USE_FORK 0
-#define USE_SOCKET 0
-#endif
-
-/* Configuration : MAIN_HAS_NOARGC
-        Needed if platform does not support getting arguments to main.
-
-        Valid values :
-        0 - argc/argv to main is supported
-        1 - argc/argv to main is not supported
-
-        Note :
-        This flag only matters if MULTITHREAD has been defined to a value greater then 1.
-*/
-#ifndef MAIN_HAS_NOARGC
-#define MAIN_HAS_NOARGC 1
-#endif
-
-/* Configuration : MAIN_HAS_NORETURN
-        Needed if platform does not support returning a value from main.
-
-        Valid values :
-        0 - main returns an int, and return value will be 0.
-        1 - platform does not support returning a value from main
-*/
-#ifndef MAIN_HAS_NORETURN
-#define MAIN_HAS_NORETURN 1
-#endif
-
-/* Variable : default_num_contexts
-        Not used for this simple port, must cintain the value 1.
-*/
-extern ee_u32 default_num_contexts;
-
-typedef struct CORE_PORTABLE_S {
-        ee_u8   portable_id;
-} core_portable;
-
-/* target specific init/fini */
-void portable_init(core_portable *p, int *argc, char *argv[]);
-void portable_fini(core_portable *p);
-
-#if !defined(PROFILE_RUN) && !defined(PERFORMANCE_RUN) && !defined(VALIDATION_RUN)
-#if (TOTAL_DATA_SIZE==1200)
-#define PROFILE_RUN 1
-#elif (TOTAL_DATA_SIZE==2000)
-#define PERFORMANCE_RUN 1
-#else
-#define VALIDATION_RUN 1
-#endif
-#endif
-
-#endif /* CORE_PORTME_H */
-
-
-#if HAS_STDIO
-#include <stdio.h>
-#endif
-#if HAS_PRINTF
-#ifndef ee_printf
-#define ee_printf printf
-#endif
-#endif
-
-/* Actual benchmark execution in iterate */
-void *iterate(void *pres);
-
-/* Typedef: secs_ret
-        For machines that have floating point support, get number of seconds as a double.
-        Otherwise an unsigned int.
-*/
-#if HAS_FLOAT
-typedef double secs_ret;
-#else
-typedef ee_u32 secs_ret;
-#endif
-
-#if MAIN_HAS_NORETURN
-#define MAIN_RETURN_VAL
-#define MAIN_RETURN_TYPE void
-#else
-#define MAIN_RETURN_VAL 0
-#define MAIN_RETURN_TYPE int
-#endif
-
-void start_time(void);
-void stop_time(void);
-CORE_TICKS get_time(void);
-secs_ret time_in_secs(CORE_TICKS ticks);
-
-/* Misc useful functions */
-ee_u16 crcu8(ee_u8 data, ee_u16 crc);
-ee_u16 crc16(ee_s16 newval, ee_u16 crc);
-ee_u16 crcu16(ee_u16 newval, ee_u16 crc);
-ee_u16 crcu32(ee_u32 newval, ee_u16 crc);
-ee_u8 check_data_types();
-void *portable_malloc(ee_size_t size);
-void portable_free(void *p);
-ee_s32 parseval(char *valstring);
-
-/* Algorithm IDS */
-#define ID_LIST         (1<<0)
-#define ID_MATRIX       (1<<1)
-#define ID_STATE        (1<<2)
-#define ALL_ALGORITHMS_MASK (ID_LIST|ID_MATRIX|ID_STATE)
-#define NUM_ALGORITHMS 3
-
-/* list data structures */
-typedef struct list_data_s {
-        ee_s16 data16;
-        ee_s16 idx;
-} list_data;
-
-typedef struct list_head_s {
-        struct list_head_s *next;
-        struct list_data_s *info;
-} list_head;
-
-
-/*matrix benchmark related stuff */
-#define MATDAT_INT 1
-#if MATDAT_INT
-typedef ee_s16 MATDAT;
-typedef ee_s32 MATRES;
-#else
-typedef ee_f16 MATDAT;
-typedef ee_f32 MATRES;
-#endif
-
-typedef struct MAT_PARAMS_S {
-        int N;
-        MATDAT *A;
-        MATDAT *B;
-        MATRES *C;
-} mat_params;
-
-/* state machine related stuff */
-/* List of all the possible states for the FSM */
-typedef enum CORE_STATE {
-        CORE_START=0,
-        CORE_INVALID,
-        CORE_S1,
-        CORE_S2,
-        CORE_INT,
-        CORE_FLOAT,
-        CORE_EXPONENT,
-        CORE_SCIENTIFIC,
-        NUM_CORE_STATES
-} core_state_e ;
-
-
-/* Helper structure to hold results */
-typedef struct RESULTS_S {
-        /* inputs */
-        ee_s16  seed1;          /* Initializing seed */
-        ee_s16  seed2;          /* Initializing seed */
-        ee_s16  seed3;          /* Initializing seed */
-        void    *memblock[4];   /* Pointer to safe memory location */
-        ee_u32  size;           /* Size of the data */
-        ee_u32 iterations;              /* Number of iterations to execute */
-        ee_u32  execs;          /* Bitmask of operations to execute */
-        struct list_head_s *list;
-        mat_params mat;
-        /* outputs */
-        ee_u16  crc;
-        ee_u16  crclist;
-        ee_u16  crcmatrix;
-        ee_u16  crcstate;
-        ee_s16  err;
-        /* ultithread specific */
-        core_portable port;
-} core_results;
-
-/* Multicore execution handling */
-#if (MULTITHREAD>1)
-ee_u8 core_start_parallel(core_results *res);
-ee_u8 core_stop_parallel(core_results *res);
-#endif
-
-/* list benchmark functions */
-list_head *core_list_init(ee_u32 blksize, list_head *memblock, ee_s16 seed);
-ee_u16 core_bench_list(core_results *res, ee_s16 finder_idx);
-
-/* state benchmark functions */
-void core_init_state(ee_u32 size, ee_s16 seed, ee_u8 *p);
-ee_u16 core_bench_state(ee_u32 blksize, ee_u8 *memblock,
-                ee_s16 seed1, ee_s16 seed2, ee_s16 step, ee_u16 crc);
-
-/* matrix benchmark functions */
-ee_u32 core_init_matrix(ee_u32 blksize, void *memblk, ee_s32 seed, mat_params *p);
-ee_u16 core_bench_matrix(mat_params *p, ee_s16 seed, ee_u16 crc);
-
-
-
-
-
-/*
-Topic: Description
-        Benchmark using a linked list.
-
-        Linked list is a common data structure used in many applications.
-
-        For our purposes, this will excercise the memory units of the processor.
-        In particular, usage of the list pointers to find and alter data.
-
-        We are not using Malloc since some platforms do not support this library.
-
-        Instead, the memory block being passed in is used to create a list,
-        and the benchmark takes care not to add more items then can be
-        accomodated by the memory block. The porting layer will make sure
-        that we have a valid memory block.
-
-        All operations are done in place, without using any extra memory.
-
-        The list itself contains list pointers and pointers to data items.
-        Data items contain the following:
-
-        idx - An index that captures the initial order of the list.
-        data - Variable data initialized based on the input parameters. The 16b are divided as follows:
-        o Upper 8b are backup of original data.
-        o Bit 7 indicates if the lower 7 bits are to be used as is or calculated.
-        o Bits 0-2 indicate type of operation to perform to get a 7b value.
-        o Bits 3-6 provide input for the operation.
-
-*/
-
-/* local functions */
-
-list_head *core_list_find(list_head *list,list_data *info);
-list_head *core_list_reverse(list_head *list);
-list_head *core_list_remove(list_head *item);
-list_head *core_list_undo_remove(list_head *item_removed, list_head *item_modified);
-list_head *core_list_insert_new(list_head *insert_point
-        , list_data *info, list_head **memblock, list_data **datablock
-        , list_head *memblock_end, list_data *datablock_end);
-typedef ee_s32(*list_cmp)(list_data *a, list_data *b, core_results *res);
-list_head *core_list_mergesort(list_head *list, list_cmp cmp, core_results *res);
-
-ee_s16 calc_func(ee_s16 *pdata, core_results *res) {
-        ee_s16 data=*pdata;
-        ee_s16 retval;
-        ee_u8 optype=(data>>7) & 1; /* bit 7 indicates if the function result has been cached */
-        if (optype) /* if cached, use cache */
-                return (data & 0x007f);
-        else { /* otherwise calculate and cache the result */
-                ee_s16 flag=data & 0x7; /* bits 0-2 is type of function to perform */
-                ee_s16 dtype=((data>>3) & 0xf); /* bits 3-6 is specific data for the operation */
-                dtype |= dtype << 4; /* replicate the lower 4 bits to get an 8b value */
-                switch (flag) {
-                        case 0:
-                                if (dtype<0x22) /* set min period for bit corruption */
-                                        dtype=0x22;
-                                retval=core_bench_state(res->size,res->memblock[3],res->seed1,res->seed2,dtype,res->crc);
-                                if (res->crcstate==0)
-                                        res->crcstate=retval;
-                                break;
-                        case 1:
-                                retval=core_bench_matrix(&(res->mat),dtype,res->crc);
-                                if (res->crcmatrix==0)
-                                        res->crcmatrix=retval;
-                                break;
-                        default:
-                                retval=data;
-                                break;
-                }
-                res->crc=crcu16(retval,res->crc);
-                retval &= 0x007f;
-                *pdata = (data & 0xff00) | 0x0080 | retval; /* cache the result */
-                return retval;
-        }
-}
-/* Function: cmp_complex
-        Compare the data item in a list cell.
-
-        Can be used by mergesort.
-*/
-ee_s32 cmp_complex(list_data *a, list_data *b, core_results *res) {
-        ee_s16 val1=calc_func(&(a->data16),res);
-        ee_s16 val2=calc_func(&(b->data16),res);
-        return val1 - val2;
-}
-
-/* Function: cmp_idx
-        Compare the idx item in a list cell, and regen the data.
-
-        Can be used by mergesort.
-*/
-ee_s32 cmp_idx(list_data *a, list_data *b, core_results *res) {
-        if (res==NULL) {
-                a->data16 = (a->data16 & 0xff00) | (0x00ff & (a->data16>>8));
-                b->data16 = (b->data16 & 0xff00) | (0x00ff & (b->data16>>8));
-        }
-        return a->idx - b->idx;
-}
-
-void copy_info(list_data *to,list_data *from) {
-        to->data16=from->data16;
-        to->idx=from->idx;
-}
-
-/* Benchmark for linked list:
-        - Try to find multiple data items.
-        - List sort
-        - Operate on data from list (crc)
-        - Single remove/reinsert
-        * At the end of this function, the list is back to original state
-*/
-ee_u16 core_bench_list(core_results *res, ee_s16 finder_idx) {
-        ee_u16 retval=0;
-        ee_u16 found=0,missed=0;
-        list_head *list=res->list;
-        ee_s16 find_num=res->seed3;
-        list_head *this_find;
-        list_head *finder, *remover;
-        list_data info;
-        ee_s16 i;
-
-        info.idx=finder_idx;
-        /* find <find_num> values in the list, and change the list each time (reverse and cache if value found) */
-        for (i=0; i<find_num; i++) {
-                info.data16= (i & 0xff) ;
-                this_find=core_list_find(list,&info);
-                list=core_list_reverse(list);
-                if (this_find==NULL) {
-                        missed++;
-                        retval+=(list->next->info->data16 >> 8) & 1;
-                }
-                else {
-                        found++;
-                        if (this_find->info->data16 & 0x1) /* use found value */
-                                retval+=(this_find->info->data16 >> 9) & 1;
-                        /* and cache next item at the head of the list (if any) */
-                        if (this_find->next != NULL) {
-                                finder = this_find->next;
-                                this_find->next = finder->next;
-                                finder->next=list->next;
-                                list->next=finder;
-                        }
-                }
-                if (info.idx>=0)
-                        info.idx++;
-#if CORE_DEBUG
-        ee_printf("List find %d: [%d,%d,%d]\n",i,retval,missed,found);
-#endif
-        }
-        retval+=found*4-missed;
-        /* sort the list by data content and remove one item*/
-        if (finder_idx>0)
-                list=core_list_mergesort(list,cmp_complex,res);
-        remover=core_list_remove(list->next);
-        /* CRC data content of list from location of index N forward, and then undo remove */
-        finder=core_list_find(list,&info);
-        if (!finder)
-                finder=list->next;
-        while (finder) {
-                retval=crc16(list->info->data16,retval);
-                finder=finder->next;
-        }
-#if CORE_DEBUG
-        ee_printf("List sort 1: %04x\n",retval);
-#endif
-        remover=core_list_undo_remove(remover,list->next);
-        /* sort the list by index, in effect returning the list to original state */
-        list=core_list_mergesort(list,cmp_idx,NULL);
-        /* CRC data content of list */
-        finder=list->next;
-        while (finder) {
-                retval=crc16(list->info->data16,retval);
-                finder=finder->next;
-        }
-#if CORE_DEBUG
-        ee_printf("List sort 2: %04x\n",retval);
-#endif
-        return retval;
-}
-/* Function: core_list_init
-        Initialize list with data.
-
-        Parameters:
-        blksize - Size of memory to be initialized.
-        memblock - Pointer to memory block.
-        seed -  Actual values chosen depend on the seed parameter.
-                The seed parameter MUST be supplied from a source that cannot be determined at compile time
-
-        Returns:
-        Pointer to the head of the list.
-
-*/
-list_head *core_list_init(ee_u32 blksize, list_head *memblock, ee_s16 seed) {
-        /* calculated pointers for the list */
-        ee_u32 per_item=16+sizeof(struct list_data_s);
-        ee_u32 size=(blksize/per_item)-2; /* to accomodate systems with 64b pointers, and make sure same code is executed, set max list elements */
-        list_head *memblock_end=memblock+size;
-        list_data *datablock=(list_data *)(memblock_end);
-        list_data *datablock_end=datablock+size;
-        /* some useful variables */
-        ee_u32 i;
-        list_head *finder,*list=memblock;
-        list_data info;
-
-        /* create a fake items for the list head and tail */
-        list->next=NULL;
-        list->info=datablock;
-        list->info->idx=0x0000;
-        list->info->data16=(ee_s16)0x8080;
-        memblock++;
-        datablock++;
-        info.idx=0x7fff;
-        info.data16=(ee_s16)0xffff;
-        core_list_insert_new(list,&info,&memblock,&datablock,memblock_end,datablock_end);
-
-        /* then insert size items */
-        for (i=0; i<size; i++) {
-                ee_u16 datpat=((ee_u16)(seed^i) & 0xf);
-                ee_u16 dat=(datpat<<3) | (i&0x7); /* alternate between algorithms */
-                info.data16=(dat<<8) | dat;             /* fill the data with actual data and upper bits with rebuild value */
-                core_list_insert_new(list,&info,&memblock,&datablock,memblock_end,datablock_end);
-        }
-        /* and now index the list so we know initial seed order of the list */
-        finder=list->next;
-        i=1;
-        while (finder->next!=NULL) {
-                if (i<size/5) /* first 20% of the list in order */
-                        finder->info->idx=i++;
-                else {
-                        ee_u16 pat=(ee_u16)(i++ ^ seed); /* get a pseudo random number */
-                        finder->info->idx=0x3fff & (((i & 0x07) << 8) | pat); /* make sure the mixed items end up after the ones in sequence */
-                }
-                finder=finder->next;
-        }
-        list = core_list_mergesort(list,cmp_idx,NULL);
-#if CORE_DEBUG
-        ee_printf("Initialized list:\n");
-        finder=list;
-        while (finder) {
-                ee_printf("[%04x,%04x]",finder->info->idx,(ee_u16)finder->info->data16);
-                finder=finder->next;
-        }
-        ee_printf("\n");
-#endif
-        return list;
-}
-
-/* Function: core_list_insert
-        Insert an item to the list
-
-        Parameters:
-        insert_point - where to insert the item.
-        info - data for the cell.
-        memblock - pointer for the list header
-        datablock - pointer for the list data
-        memblock_end - end of region for list headers
-        datablock_end - end of region for list data
-
-        Returns:
-        Pointer to new item.
-*/
-list_head *core_list_insert_new(list_head *insert_point, list_data *info, list_head **memblock, list_data **datablock
-        , list_head *memblock_end, list_data *datablock_end) {
-        list_head *newitem;
-
-        if ((*memblock+1) >= memblock_end)
-                return NULL;
-        if ((*datablock+1) >= datablock_end)
-                return NULL;
-
-        newitem=*memblock;
-        (*memblock)++;
-        newitem->next=insert_point->next;
-        insert_point->next=newitem;
-
-        newitem->info=*datablock;
-        (*datablock)++;
-        copy_info(newitem->info,info);
-
-        return newitem;
-}
-
-/* Function: core_list_remove
-        Remove an item from the list.
-
-        Operation:
-        For a singly linked list, remove by copying the data from the next item
-        over to the current cell, and unlinking the next item.
-
-        Note:
-        since there is always a fake item at the end of the list, no need to check for NULL.
-
-        Returns:
-        Removed item.
-*/
-list_head *core_list_remove(list_head *item) {
-        list_data *tmp;
-        list_head *ret=item->next;
-        /* swap data pointers */
-        tmp=item->info;
-        item->info=ret->info;
-        ret->info=tmp;
-        /* and eliminate item */
-        item->next=item->next->next;
-        ret->next=NULL;
-        return ret;
-}
-
-/* Function: core_list_undo_remove
-        Undo a remove operation.
-
-        Operation:
-        Since we want each iteration of the benchmark to be exactly the same,
-        we need to be able to undo a remove.
-        Link the removed item back into the list, and switch the info items.
-
-        Parameters:
-        item_removed - Return value from the <core_list_remove>
-        item_modified - List item that was modified during <core_list_remove>
-
-        Returns:
-        The item that was linked back to the list.
-
-*/
-list_head *core_list_undo_remove(list_head *item_removed, list_head *item_modified) {
-        list_data *tmp;
-        /* swap data pointers */
-        tmp=item_removed->info;
-        item_removed->info=item_modified->info;
-        item_modified->info=tmp;
-        /* and insert item */
-        item_removed->next=item_modified->next;
-        item_modified->next=item_removed;
-        return item_removed;
-}
-
-/* Function: core_list_find
-        Find an item in the list
-
-        Operation:
-        Find an item by idx (if not 0) or specific data value
-
-        Parameters:
-        list - list head
-        info - idx or data to find
-
-        Returns:
-        Found item, or NULL if not found.
-*/
-list_head *core_list_find(list_head *list,list_data *info) {
-        if (info->idx>=0) {
-                while (list && (list->info->idx != info->idx))
-                        list=list->next;
-                return list;
-        } else {
-                while (list && ((list->info->data16 & 0xff) != info->data16))
-                        list=list->next;
-                return list;
-        }
-}
-/* Function: core_list_reverse
-        Reverse a list
-
-        Operation:
-        Rearrange the pointers so the list is reversed.
-
-        Parameters:
-        list - list head
-        info - idx or data to find
-
-        Returns:
-        Found item, or NULL if not found.
-*/
-
-list_head *core_list_reverse(list_head *list) {
-        list_head *next=NULL, *tmp;
-        while (list) {
-                tmp=list->next;
-                list->next=next;
-                next=list;
-                list=tmp;
-        }
-        return next;
-}
-/* Function: core_list_mergesort
-        Sort the list in place without recursion.
-
-        Description:
-        Use mergesort, as for linked list this is a realistic solution.
-        Also, since this is aimed at embedded, care was taken to use iterative rather then recursive algorithm.
-        The sort can either return the list to original order (by idx) ,
-        or use the data item to invoke other other algorithms and change the order of the list.
-
-        Parameters:
-        list - list to be sorted.
-        cmp - cmp function to use
-
-        Returns:
-        New head of the list.
-
-        Note:
-        We have a special header for the list that will always be first,
-        but the algorithm could theoretically modify where the list starts.
-
- */
-list_head *core_list_mergesort(list_head *list, list_cmp cmp, core_results *res) {
-    list_head *p, *q, *e, *tail;
-    ee_s32 insize, nmerges, psize, qsize, i;
-
-    insize = 1;
-
-    while (1) {
-        p = list;
-        list = NULL;
-        tail = NULL;
-
-        nmerges = 0;  /* count number of merges we do in this pass */
-
-        while (p) {
-            nmerges++;  /* there exists a merge to be done */
-            /* step `insize' places along from p */
-            q = p;
-            psize = 0;
-            for (i = 0; i < insize; i++) {
-                psize++;
-                            q = q->next;
-                if (!q) break;
-            }
-
-            /* if q hasn't fallen off end, we have two lists to merge */
-            qsize = insize;
-
-            /* now we have two lists; merge them */
-            while (psize > 0 || (qsize > 0 && q)) {
-
-                                /* decide whether next element of merge comes from p or q */
-                                if (psize == 0) {
-                                    /* p is empty; e must come from q. */
-                                    e = q; q = q->next; qsize--;
-                                } else if (qsize == 0 || !q) {
-                                    /* q is empty; e must come from p. */
-                                    e = p; p = p->next; psize--;
-                                } else if (cmp(p->info,q->info,res) <= 0) {
-                                    /* First element of p is lower (or same); e must come from p. */
-                                    e = p; p = p->next; psize--;
-                                } else {
-                                    /* First element of q is lower; e must come from q. */
-                                    e = q; q = q->next; qsize--;
-                                }
-
-                        /* add the next element to the merged list */
-                                if (tail) {
-                                    tail->next = e;
-                                } else {
-                                    list = e;
-                                }
-                                tail = e;
-                }
-
-                        /* now p has stepped `insize' places along, and q has too */
-                        p = q;
-        }
-
-            tail->next = NULL;
-
-        /* If we have done only one merge, we're finished. */
-        if (nmerges <= 1)   /* allow for nmerges==0, the empty list case */
-            return list;
-
-        /* Otherwise repeat, merging lists twice the size */
-        insize *= 2;
-    }
-#if COMPILER_REQUIRES_SORT_RETURN
-        return list;
-#endif
-}
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-/* File: core_main.c
-        This file contains the framework to acquire a block of memory, seed initial parameters, tun t he benchmark and report the results.
-*/
-//#include "coremark.h"
-
-/* Function: iterate
-        Run the benchmark for a specified number of iterations.
-
-        Operation:
-        For each type of benchmarked algorithm:
-                a - Initialize the data block for the algorithm.
-                b - Execute the algorithm N times.
-
-        Returns:
-        NULL.
-*/
-static ee_u16 list_known_crc[]   =      {(ee_u16)0xd4b0,(ee_u16)0x3340,(ee_u16)0x6a79,(ee_u16)0xe714,(ee_u16)0xe3c1};
-static ee_u16 matrix_known_crc[] =      {(ee_u16)0xbe52,(ee_u16)0x1199,(ee_u16)0x5608,(ee_u16)0x1fd7,(ee_u16)0x0747};
-static ee_u16 state_known_crc[]  =      {(ee_u16)0x5e47,(ee_u16)0x39bf,(ee_u16)0xe5a4,(ee_u16)0x8e3a,(ee_u16)0x8d84};
-void *iterate(void *pres) {
-        ee_u32 i;
-        ee_u16 crc;
-        core_results *res=(core_results *)pres;
-        ee_u32 iterations=res->iterations;
-        res->crc=0;
-        res->crclist=0;
-        res->crcmatrix=0;
-        res->crcstate=0;
-
-        for (i=0; i<iterations; i++) {
-                crc=core_bench_list(res,1);
-                res->crc=crcu16(crc,res->crc);
-                crc=core_bench_list(res,-1);
-                res->crc=crcu16(crc,res->crc);
-                if (i==0) res->crclist=res->crc;
-        }
-        return NULL;
-}
-
-#if (SEED_METHOD==SEED_ARG)
-ee_s32 get_seed_args(int i, int argc, char *argv[]);
-#define get_seed(x) (ee_s16)get_seed_args(x,argc,argv)
-#define get_seed_32(x) get_seed_args(x,argc,argv)
-#else /* via function or volatile */
-ee_s32 get_seed_32(int i);
-#define get_seed(x) (ee_s16)get_seed_32(x)
-#endif
-
-#if (MEM_METHOD==MEM_STATIC)
-ee_u8 static_memblk[TOTAL_DATA_SIZE];
-#endif
-char *mem_name[3] = {"Static","Heap","Stack"};
-/* Function: main
-        Main entry routine for the benchmark.
-        This function is responsible for the following steps:
-
-        1 - Initialize input seeds from a source that cannot be determined at compile time.
-        2 - Initialize memory block for use.
-        3 - Run and time the benchmark.
-        4 - Report results, testing the validity of the output if the seeds are known.
-
-        Arguments:
-        1 - first seed  : Any value
-        2 - second seed : Must be identical to first for iterations to be identical
-        3 - third seed  : Any value, should be at least an order of magnitude less then the input size, but bigger then 32.
-        4 - Iterations  : Special, if set to 0, iterations will be automatically determined such that the benchmark will run between 10 to 100 secs
-
-*/
-
-#if MAIN_HAS_NOARGC
-MAIN_RETURN_TYPE main(void) {
-        int argc=0;
-        char *argv[1];
-#else
-MAIN_RETURN_TYPE main(int argc, char *argv[]) {
-#endif
-        ee_u16 i,j=0,num_algorithms=0;
-        ee_s16 known_id=-1,total_errors=0;
-        ee_u16 seedcrc=0;
-        CORE_TICKS total_time;
-        core_results results[MULTITHREAD];
-#if (MEM_METHOD==MEM_STACK)
-        ee_u8 stack_memblock[TOTAL_DATA_SIZE*MULTITHREAD];
-#endif
-        /* first call any initializations needed */
-        portable_init(&(results[0].port), &argc, argv);
-        /* First some checks to make sure benchmark will run ok */
-        if (sizeof(struct list_head_s)>128) {
-                ee_printf("list_head structure too big for comparable data!\n");
-                return MAIN_RETURN_VAL;
-        }
-        results[0].seed1=get_seed(1);
-        results[0].seed2=get_seed(2);
-        results[0].seed3=get_seed(3);
-        results[0].iterations=get_seed_32(4);
-#if CORE_DEBUG
-        results[0].iterations=1;
-#endif
-        results[0].execs=get_seed_32(5);
-        if (results[0].execs==0) { /* if not supplied, execute all algorithms */
-                results[0].execs=ALL_ALGORITHMS_MASK;
-        }
-                /* put in some default values based on one seed only for easy testing */
-        if ((results[0].seed1==0) && (results[0].seed2==0) && (results[0].seed3==0)) { /* validation run */
-                results[0].seed1=0;
-                results[0].seed2=0;
-                results[0].seed3=0x66;
-        }
-        if ((results[0].seed1==1) && (results[0].seed2==0) && (results[0].seed3==0)) { /* perfromance run */
-                results[0].seed1=0x3415;
-                results[0].seed2=0x3415;
-                results[0].seed3=0x66;
-        }
-#if (MEM_METHOD==MEM_STATIC)
-        results[0].memblock[0]=(void *)static_memblk;
-        results[0].size=TOTAL_DATA_SIZE;
-        results[0].err=0;
-        #if (MULTITHREAD>1)
-        #error "Cannot use a static data area with multiple contexts!"
-        #endif
-#elif (MEM_METHOD==MEM_MALLOC)
-        for (i=0 ; i<MULTITHREAD; i++) {
-                ee_s32 malloc_override=get_seed(7);
-                if (malloc_override != 0)
-                        results[i].size=malloc_override;
-                else
-                        results[i].size=TOTAL_DATA_SIZE;
-                results[i].memblock[0]=portable_malloc(results[i].size);
-                results[i].seed1=results[0].seed1;
-                results[i].seed2=results[0].seed2;
-                results[i].seed3=results[0].seed3;
-                results[i].err=0;
-                results[i].execs=results[0].execs;
-        }
-#elif (MEM_METHOD==MEM_STACK)
-        for (i=0 ; i<MULTITHREAD; i++) {
-                results[i].memblock[0]=stack_memblock+i*TOTAL_DATA_SIZE;
-                results[i].size=TOTAL_DATA_SIZE;
-                results[i].seed1=results[0].seed1;
-                results[i].seed2=results[0].seed2;
-                results[i].seed3=results[0].seed3;
-                results[i].err=0;
-                results[i].execs=results[0].execs;
-        }
-#else
-#error "Please define a way to initialize a memory block."
-#endif
-        /* Data init */
-        /* Find out how space much we have based on number of algorithms */
-        for (i=0; i<NUM_ALGORITHMS; i++) {
-                if ((1<<(ee_u32)i) & results[0].execs)
-                        num_algorithms++;
-        }
-        for (i=0 ; i<MULTITHREAD; i++)
-                results[i].size=results[i].size/num_algorithms;
-        /* Assign pointers */
-        for (i=0; i<NUM_ALGORITHMS; i++) {
-                ee_u32 ctx;
-                if ((1<<(ee_u32)i) & results[0].execs) {
-                        for (ctx=0 ; ctx<MULTITHREAD; ctx++)
-                                results[ctx].memblock[i+1]=(char *)(results[ctx].memblock[0])+results[0].size*j;
-                        j++;
-                }
-        }
-        /* call inits */
-        for (i=0 ; i<MULTITHREAD; i++) {
-                if (results[i].execs & ID_LIST) {
-                        results[i].list=core_list_init(results[0].size,results[i].memblock[1],results[i].seed1);
-                }
-                if (results[i].execs & ID_MATRIX) {
-                        core_init_matrix(results[0].size, results[i].memblock[2], (ee_s32)results[i].seed1 | (((ee_s32)results[i].seed2) << 16), &(results[i].mat) );
-                }
-                if (results[i].execs & ID_STATE) {
-                        core_init_state(results[0].size,results[i].seed1,results[i].memblock[3]);
-                }
-        }
-
-        /* automatically determine number of iterations if not set */
-        if (results[0].iterations==0) {
-                secs_ret secs_passed=0;
-                ee_u32 divisor;
-                results[0].iterations=1;
-                while (secs_passed < (secs_ret)1) {
-                        results[0].iterations*=10;
-                        start_time();
-                        iterate(&results[0]);
-                        stop_time();
-                        secs_passed=time_in_secs(get_time());
-                }
-                /* now we know it executes for at least 1 sec, set actual run time at about 10 secs */
-                divisor=(ee_u32)secs_passed;
-                if (divisor==0) /* some machines cast float to int as 0 since this conversion is not defined by ANSI, but we know at least one second passed */
-                        divisor=1;
-                results[0].iterations*=1+10/divisor;
-        }
-        /* perform actual benchmark */
-        start_time();
-
-        __asm("__perf_start:");
-
-#if (MULTITHREAD>1)
-        if (default_num_contexts>MULTITHREAD) {
-                default_num_contexts=MULTITHREAD;
-        }
-        for (i=0 ; i<default_num_contexts; i++) {
-                results[i].iterations=results[0].iterations;
-                results[i].execs=results[0].execs;
-                core_start_parallel(&results[i]);
-        }
-        for (i=0 ; i<default_num_contexts; i++) {
-                core_stop_parallel(&results[i]);
-        }
-#else
-        iterate(&results[0]);
-#endif
-
-        __asm("__perf_end:");
-
-        stop_time();
-        total_time=get_time();
-        /* get a function of the input to report */
-        seedcrc=crc16(results[0].seed1,seedcrc);
-        seedcrc=crc16(results[0].seed2,seedcrc);
-        seedcrc=crc16(results[0].seed3,seedcrc);
-        seedcrc=crc16(results[0].size,seedcrc);
-
-        switch (seedcrc) { /* test known output for common seeds */
-                case 0x8a02: /* seed1=0, seed2=0, seed3=0x66, size 2000 per algorithm */
-                        known_id=0;
-                        ee_printf("6k performance run parameters for coremark.\n");
-                        break;
-                case 0x7b05: /*  seed1=0x3415, seed2=0x3415, seed3=0x66, size 2000 per algorithm */
-                        known_id=1;
-                        ee_printf("6k validation run parameters for coremark.\n");
-                        break;
-                case 0x4eaf: /* seed1=0x8, seed2=0x8, seed3=0x8, size 400 per algorithm */
-                        known_id=2;
-                        ee_printf("Profile generation run parameters for coremark.\n");
-                        break;
-                case 0xe9f5: /* seed1=0, seed2=0, seed3=0x66, size 666 per algorithm */
-                        known_id=3;
-                        ee_printf("2K performance run parameters for coremark.\n");
-                        break;
-                case 0x18f2: /*  seed1=0x3415, seed2=0x3415, seed3=0x66, size 666 per algorithm */
-                        known_id=4;
-                        ee_printf("2K validation run parameters for coremark.\n");
-                        break;
-                default:
-                        total_errors=-1;
-                        break;
-        }
-        if (known_id>=0) {
-                for (i=0 ; i<default_num_contexts; i++) {
-                        results[i].err=0;
-                        if ((results[i].execs & ID_LIST) &&
-                                (results[i].crclist!=list_known_crc[known_id])) {
-                                ee_printf("[%u]ERROR! list crc 0x%04x - should be 0x%04x\n",i,results[i].crclist,list_known_crc[known_id]);
-                                results[i].err++;
-                        }
-                        if ((results[i].execs & ID_MATRIX) &&
-                                (results[i].crcmatrix!=matrix_known_crc[known_id])) {
-                                ee_printf("[%u]ERROR! matrix crc 0x%04x - should be 0x%04x\n",i,results[i].crcmatrix,matrix_known_crc[known_id]);
-                                results[i].err++;
-                        }
-                        if ((results[i].execs & ID_STATE) &&
-                                (results[i].crcstate!=state_known_crc[known_id])) {
-                                ee_printf("[%u]ERROR! state crc 0x%04x - should be 0x%04x\n",i,results[i].crcstate,state_known_crc[known_id]);
-                                results[i].err++;
-                        }
-                        total_errors+=results[i].err;
-                }
-        }
-        total_errors+=check_data_types();
-        /* and report results */
-        ee_printf("CoreMark Size    : %u\n",(ee_u32)results[0].size);
-        ee_printf("Total ticks      : %u\n",(ee_u32)total_time);
-#if HAS_FLOAT
-        ee_printf("Total time (secs): %f\n",time_in_secs(total_time));
-        if (time_in_secs(total_time) > 0)
-                ee_printf("Iterations/Sec   : %f\n",default_num_contexts*results[0].iterations/time_in_secs(total_time));
-#else
-        ee_printf("Total time (secs): %d\n",time_in_secs(total_time));
-        if (time_in_secs(total_time) > 0)
-//              ee_printf("Iterations/Sec   : %d\n",default_num_contexts*results[0].iterations/time_in_secs(total_time));
-                ee_printf("Iterat/Sec/MHz   : %d.%02d\n",1000*default_num_contexts*results[0].iterations/time_in_secs(total_time),
-                             100000*default_num_contexts*results[0].iterations/time_in_secs(total_time) % 100);
-#endif
-        if (time_in_secs(total_time) < 10) {
-                ee_printf("ERROR! Must execute for at least 10 secs for a valid result!\n");
-                total_errors++;
-        }
-
-        ee_printf("Iterations       : %u\n",(ee_u32)default_num_contexts*results[0].iterations);
-        ee_printf("Compiler version : %s\n",COMPILER_VERSION);
-        ee_printf("Compiler flags   : %s\n",COMPILER_FLAGS);
-#if (MULTITHREAD>1)
-        ee_printf("Parallel %s : %d\n",PARALLEL_METHOD,default_num_contexts);
-#endif
-        ee_printf("Memory location  : %s\n",MEM_LOCATION);
-        /* output for verification */
-        ee_printf("seedcrc          : 0x%04x\n",seedcrc);
-        if (results[0].execs & ID_LIST)
-                for (i=0 ; i<default_num_contexts; i++)
-                        ee_printf("[%d]crclist       : 0x%04x\n",i,results[i].crclist);
-        if (results[0].execs & ID_MATRIX)
-                for (i=0 ; i<default_num_contexts; i++)
-                        ee_printf("[%d]crcmatrix     : 0x%04x\n",i,results[i].crcmatrix);
-        if (results[0].execs & ID_STATE)
-                for (i=0 ; i<default_num_contexts; i++)
-                        ee_printf("[%d]crcstate      : 0x%04x\n",i,results[i].crcstate);
-        for (i=0 ; i<default_num_contexts; i++)
-                ee_printf("[%d]crcfinal      : 0x%04x\n",i,results[i].crc);
-        if (total_errors==0) {
-                ee_printf("Correct operation validated. See readme.txt for run and reporting rules.\n");
-#if HAS_FLOAT
-                if (known_id==3) {
-                        ee_printf("CoreMark 1.0 : %f / %s %s",default_num_contexts*results[0].iterations/time_in_secs(total_time),COMPILER_VERSION,COMPILER_FLAGS);
-#if defined(MEM_LOCATION) && !defined(MEM_LOCATION_UNSPEC)
-                        ee_printf(" / %s",MEM_LOCATION);
-#else
-                        ee_printf(" / %s",mem_name[MEM_METHOD]);
-#endif
-
-#if (MULTITHREAD>1)
-                        ee_printf(" / %d:%s",default_num_contexts,PARALLEL_METHOD);
-#endif
-                        ee_printf("\n");
-                }
-#endif
-        }
-        if (total_errors>0)
-                ee_printf("Errors detected\n");
-        if (total_errors<0)
-                ee_printf("Cannot validate operation for these seed values, please compare with results on a known platform.\n");
-
-#if (MEM_METHOD==MEM_MALLOC)
-        for (i=0 ; i<MULTITHREAD; i++)
-                portable_free(results[i].memblock[0]);
-#endif
-        /* And last call any target specific code for finalizing */
-        portable_fini(&(results[0].port));
-
-        return MAIN_RETURN_VAL;
-}
-
-
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-//#include "coremark.h"
-/*
-Topic: Description
-        Matrix manipulation benchmark
-
-        This very simple algorithm forms the basis of many more complex algorithms.
-
-        The tight inner loop is the focus of many optimizations (compiler as well as hardware based)
-        and is thus relevant for embedded processing.
-
-        The total available data space will be divided to 3 parts:
-        NxN Matrix A - initialized with small values (upper 3/4 of the bits all zero).
-        NxN Matrix B - initialized with medium values (upper half of the bits all zero).
-        NxN Matrix C - used for the result.
-
-        The actual values for A and B must be derived based on input that is not available at compile time.
-*/
-ee_s16 matrix_test(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B, MATDAT val);
-ee_s16 matrix_sum(ee_u32 N, MATRES *C, MATDAT clipval);
-void matrix_mul_const(ee_u32 N, MATRES *C, MATDAT *A, MATDAT val);
-void matrix_mul_vect(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B);
-void matrix_mul_matrix(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B);
-void matrix_mul_matrix_bitextract(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B);
-void matrix_add_const(ee_u32 N, MATDAT *A, MATDAT val);
-
-#define matrix_test_next(x) (x+1)
-#define matrix_clip(x,y) ((y) ? (x) & 0x0ff : (x) & 0x0ffff)
-#define matrix_big(x) (0xf000 | (x))
-#define bit_extract(x,from,to) (((x)>>(from)) & (~(0xffffffff << (to))))
-
-#if CORE_DEBUG
-void printmat(MATDAT *A, ee_u32 N, char *name) {
-        ee_u32 i,j;
-        ee_printf("Matrix %s [%dx%d]:\n",name,N,N);
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        if (j!=0)
-                                ee_printf(",");
-                        ee_printf("%d",A[i*N+j]);
-                }
-                ee_printf("\n");
-        }
-}
-void printmatC(MATRES *C, ee_u32 N, char *name) {
-        ee_u32 i,j;
-        ee_printf("Matrix %s [%dx%d]:\n",name,N,N);
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        if (j!=0)
-                                ee_printf(",");
-                        ee_printf("%d",C[i*N+j]);
-                }
-                ee_printf("\n");
-        }
-}
-#endif
-/* Function: core_bench_matrix
-        Benchmark function
-
-        Iterate <matrix_test> N times,
-        changing the matrix values slightly by a constant amount each time.
-*/
-ee_u16 core_bench_matrix(mat_params *p, ee_s16 seed, ee_u16 crc) {
-        ee_u32 N=p->N;
-        MATRES *C=p->C;
-        MATDAT *A=p->A;
-        MATDAT *B=p->B;
-        MATDAT val=(MATDAT)seed;
-
-        crc=crc16(matrix_test(N,C,A,B,val),crc);
-
-        return crc;
-}
-
-/* Function: matrix_test
-        Perform matrix manipulation.
-
-        Parameters:
-        N - Dimensions of the matrix.
-        C - memory for result matrix.
-        A - input matrix
-        B - operator matrix (not changed during operations)
-
-        Returns:
-        A CRC value that captures all results calculated in the function.
-        In particular, crc of the value calculated on the result matrix
-        after each step by <matrix_sum>.
-
-        Operation:
-
-        1 - Add a constant value to all elements of a matrix.
-        2 - Multiply a matrix by a constant.
-        3 - Multiply a matrix by a vector.
-        4 - Multiply a matrix by a matrix.
-        5 - Add a constant value to all elements of a matrix.
-
-        After the last step, matrix A is back to original contents.
-*/
-ee_s16 matrix_test(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B, MATDAT val) {
-        ee_u16 crc=0;
-        MATDAT clipval=matrix_big(val);
-
-        matrix_add_const(N,A,val); /* make sure data changes  */
-#if CORE_DEBUG
-        printmat(A,N,"matrix_add_const");
-#endif
-        matrix_mul_const(N,C,A,val);
-        crc=crc16(matrix_sum(N,C,clipval),crc);
-#if CORE_DEBUG
-        printmatC(C,N,"matrix_mul_const");
-#endif
-        matrix_mul_vect(N,C,A,B);
-        crc=crc16(matrix_sum(N,C,clipval),crc);
-#if CORE_DEBUG
-        printmatC(C,N,"matrix_mul_vect");
-#endif
-        matrix_mul_matrix(N,C,A,B);
-        crc=crc16(matrix_sum(N,C,clipval),crc);
-#if CORE_DEBUG
-        printmatC(C,N,"matrix_mul_matrix");
-#endif
-        matrix_mul_matrix_bitextract(N,C,A,B);
-        crc=crc16(matrix_sum(N,C,clipval),crc);
-#if CORE_DEBUG
-        printmatC(C,N,"matrix_mul_matrix_bitextract");
-#endif
-
-        matrix_add_const(N,A,-val); /* return matrix to initial value */
-        return crc;
-}
-
-/* Function : matrix_init
-        Initialize the memory block for matrix benchmarking.
-
-        Parameters:
-        blksize - Size of memory to be initialized.
-        memblk - Pointer to memory block.
-        seed - Actual values chosen depend on the seed parameter.
-        p - pointers to <mat_params> containing initialized matrixes.
-
-        Returns:
-        Matrix dimensions.
-
-        Note:
-        The seed parameter MUST be supplied from a source that cannot be determined at compile time
-*/
-ee_u32 core_init_matrix(ee_u32 blksize, void *memblk, ee_s32 seed, mat_params *p) {
-        ee_u32 N=0;
-        MATDAT *A;
-        MATDAT *B;
-        ee_s32 order=1;
-        MATDAT val;
-        ee_u32 i=0,j=0;
-        if (seed==0)
-                seed=1;
-        while (j<blksize) {
-                i++;
-                j=i*i*2*4;
-        }
-        N=i-1;
-        A=(MATDAT *)align_mem(memblk);
-        B=A+N*N;
-
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        seed = ( ( order * seed ) % 65536 );
-                        val = (seed + order);
-                        val=matrix_clip(val,0);
-                        B[i*N+j] = val;
-                        val =  (val + order);
-                        val=matrix_clip(val,1);
-                        A[i*N+j] = val;
-                        order++;
-                }
-        }
-
-        p->A=A;
-        p->B=B;
-        p->C=(MATRES *)align_mem(B+N*N);
-        p->N=N;
-#if CORE_DEBUG
-        printmat(A,N,"A");
-        printmat(B,N,"B");
-#endif
-        return N;
-}
-
-/* Function: matrix_sum
-        Calculate a function that depends on the values of elements in the matrix.
-
-        For each element, accumulate into a temporary variable.
-
-        As long as this value is under the parameter clipval,
-        add 1 to the result if the element is bigger then the previous.
-
-        Otherwise, reset the accumulator and add 10 to the result.
-*/
-ee_s16 matrix_sum(ee_u32 N, MATRES *C, MATDAT clipval) {
-        MATRES tmp=0,prev=0,cur=0;
-        ee_s16 ret=0;
-        ee_u32 i,j;
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        cur=C[i*N+j];
-                        tmp+=cur;
-                        if (tmp>clipval) {
-                                ret+=10;
-                                tmp=0;
-                        } else {
-                                ret += (cur>prev) ? 1 : 0;
-                        }
-                        prev=cur;
-                }
-        }
-        return ret;
-}
-
-/* Function: matrix_mul_const
-        Multiply a matrix by a constant.
-        This could be used as a scaler for instance.
-*/
-void matrix_mul_const(ee_u32 N, MATRES *C, MATDAT *A, MATDAT val) {
-        ee_u32 i,j;
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        C[i*N+j]=(MATRES)A[i*N+j] * (MATRES)val;
-                }
-        }
-}
-
-/* Function: matrix_add_const
-        Add a constant value to all elements of a matrix.
-*/
-void matrix_add_const(ee_u32 N, MATDAT *A, MATDAT val) {
-        ee_u32 i,j;
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        A[i*N+j] += val;
-                }
-        }
-}
-
-/* Function: matrix_mul_vect
-        Multiply a matrix by a vector.
-        This is common in many simple filters (e.g. fir where a vector of coefficients is applied to the matrix.)
-*/
-void matrix_mul_vect(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B) {
-        ee_u32 i,j;
-        for (i=0; i<N; i++) {
-                C[i]=0;
-                for (j=0; j<N; j++) {
-                        C[i]+=(MATRES)A[i*N+j] * (MATRES)B[j];
-                }
-        }
-}
-
-/* Function: matrix_mul_matrix
-        Multiply a matrix by a matrix.
-        Basic code is used in many algorithms, mostly with minor changes such as scaling.
-*/
-void matrix_mul_matrix(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B) {
-        ee_u32 i,j,k;
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        C[i*N+j]=0;
-                        for(k=0;k<N;k++)
-                        {
-                                C[i*N+j]+=(MATRES)A[i*N+k] * (MATRES)B[k*N+j];
-                        }
-                }
-        }
-}
-
-/* Function: matrix_mul_matrix_bitextract
-        Multiply a matrix by a matrix, and extract some bits from the result.
-        Basic code is used in many algorithms, mostly with minor changes such as scaling.
-*/
-void matrix_mul_matrix_bitextract(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B) {
-        ee_u32 i,j,k;
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        C[i*N+j]=0;
-                        for(k=0;k<N;k++)
-                        {
-                                MATRES tmp=(MATRES)A[i*N+k] * (MATRES)B[k*N+j];
-                                C[i*N+j]+=bit_extract(tmp,2,4)*bit_extract(tmp,5,7);
-                        }
-                }
-        }
-}
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-//#include "coremark.h"
-/* local functions */
-enum CORE_STATE core_state_transition( ee_u8 **instr , ee_u32 *transition_count);
-
-/*
-Topic: Description
-        Simple state machines like this one are used in many embedded products.
-
-        For more complex state machines, sometimes a state transition table implementation is used instead,
-        trading speed of direct coding for ease of maintenance.
-
-        Since the main goal of using a state machine in CoreMark is to excercise the switch/if behaviour,
-        we are using a small moore machine.
-
-        In particular, this machine tests type of string input,
-        trying to determine whether the input is a number or something else.
-        (see core_state.png).
-*/
-
-/* Function: core_bench_state
-        Benchmark function
-
-        Go over the input twice, once direct, and once after introducing some corruption.
-*/
-ee_u16 core_bench_state(ee_u32 blksize, ee_u8 *memblock,
-                ee_s16 seed1, ee_s16 seed2, ee_s16 step, ee_u16 crc)
-{
-        ee_u32 final_counts[NUM_CORE_STATES];
-        ee_u32 track_counts[NUM_CORE_STATES];
-        ee_u8 *p=memblock;
-        ee_u32 i;
-
-
-#if CORE_DEBUG
-        ee_printf("State Bench: %d,%d,%d,%04x\n",seed1,seed2,step,crc);
-#endif
-        for (i=0; i<NUM_CORE_STATES; i++) {
-                final_counts[i]=track_counts[i]=0;
-        }
-        /* run the state machine over the input */
-        while (*p!=0) {
-                enum CORE_STATE fstate=core_state_transition(&p,track_counts);
-                final_counts[fstate]++;
-#if CORE_DEBUG
-        ee_printf("%d,",fstate);
-        }
-        ee_printf("\n");
-#else
-        }
-#endif
-        p=memblock;
-        while (p < (memblock+blksize)) { /* insert some corruption */
-                if (*p!=',')
-                        *p^=(ee_u8)seed1;
-                p+=step;
-        }
-        p=memblock;
-        /* run the state machine over the input again */
-        while (*p!=0) {
-                enum CORE_STATE fstate=core_state_transition(&p,track_counts);
-                final_counts[fstate]++;
-#if CORE_DEBUG
-        ee_printf("%d,",fstate);
-        }
-        ee_printf("\n");
-#else
-        }
-#endif
-        p=memblock;
-        while (p < (memblock+blksize)) { /* undo corruption is seed1 and seed2 are equal */
-                if (*p!=',')
-                        *p^=(ee_u8)seed2;
-                p+=step;
-        }
-        /* end timing */
-        for (i=0; i<NUM_CORE_STATES; i++) {
-                crc=crcu32(final_counts[i],crc);
-                crc=crcu32(track_counts[i],crc);
-        }
-        return crc;
-}
-
-/* Default initialization patterns */
-static ee_u8 *intpat[4]  ={(ee_u8 *)"5012",(ee_u8 *)"1234",(ee_u8 *)"-874",(ee_u8 *)"+122"};
-static ee_u8 *floatpat[4]={(ee_u8 *)"35.54400",(ee_u8 *)".1234500",(ee_u8 *)"-110.700",(ee_u8 *)"+0.64400"};
-static ee_u8 *scipat[4]  ={(ee_u8 *)"5.500e+3",(ee_u8 *)"-.123e-2",(ee_u8 *)"-87e+832",(ee_u8 *)"+0.6e-12"};
-static ee_u8 *errpat[4]  ={(ee_u8 *)"T0.3e-1F",(ee_u8 *)"-T.T++Tq",(ee_u8 *)"1T3.4e4z",(ee_u8 *)"34.0e-T^"};
-
-/* Function: core_init_state
-        Initialize the input data for the state machine.
-
-        Populate the input with several predetermined strings, interspersed.
-        Actual patterns chosen depend on the seed parameter.
-
-        Note:
-        The seed parameter MUST be supplied from a source that cannot be determined at compile time
-*/
-void core_init_state(ee_u32 size, ee_s16 seed, ee_u8 *p) {
-        ee_u32 total=0,next=0,i;
-        ee_u8 *buf=0;
-#if CORE_DEBUG
-        ee_u8 *start=p;
-        ee_printf("State: %d,%d\n",size,seed);
-#endif
-        size--;
-        next=0;
-        while ((total+next+1)<size) {
-                if (next>0) {
-                        for(i=0;i<next;i++)
-                                *(p+total+i)=buf[i];
-                        *(p+total+i)=',';
-                        total+=next+1;
-                }
-                seed++;
-                switch (seed & 0x7) {
-                        case 0: /* int */
-                        case 1: /* int */
-                        case 2: /* int */
-                                buf=intpat[(seed>>3) & 0x3];
-                                next=4;
-                        break;
-                        case 3: /* float */
-                        case 4: /* float */
-                                buf=floatpat[(seed>>3) & 0x3];
-                                next=8;
-                        break;
-                        case 5: /* scientific */
-                        case 6: /* scientific */
-                                buf=scipat[(seed>>3) & 0x3];
-                                next=8;
-                        break;
-                        case 7: /* invalid */
-                                buf=errpat[(seed>>3) & 0x3];
-                                next=8;
-                        break;
-                        default: /* Never happen, just to make some compilers happy */
-                        break;
-                }
-        }
-        size++;
-        while (total<size) { /* fill the rest with 0 */
-                *(p+total)=0;
-                total++;
-        }
-#if CORE_DEBUG
-        ee_printf("State Input: %s\n",start);
-#endif
-}
-
-static ee_u8 ee_isdigit(ee_u8 c) {
-        ee_u8 retval;
-        retval = ((c>='0') & (c<='9')) ? 1 : 0;
-        return retval;
-}
-
-/* Function: core_state_transition
-        Actual state machine.
-
-        The state machine will continue scanning until either:
-        1 - an invalid input is detcted.
-        2 - a valid number has been detected.
-
-        The input pointer is updated to point to the end of the token, and the end state is returned (either specific format determined or invalid).
-*/
-
-enum CORE_STATE core_state_transition( ee_u8 **instr , ee_u32 *transition_count) {
-        ee_u8 *str=*instr;
-        ee_u8 NEXT_SYMBOL;
-        enum CORE_STATE state=CORE_START;
-        for( ; *str && state != CORE_INVALID; str++ ) {
-                NEXT_SYMBOL = *str;
-                if (NEXT_SYMBOL==',') /* end of this input */ {
-                        str++;
-                        break;
-                }
-                switch(state) {
-                case CORE_START:
-                        if(ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_INT;
-                        }
-                        else if( NEXT_SYMBOL == '+' || NEXT_SYMBOL == '-' ) {
-                                state = CORE_S1;
-                        }
-                        else if( NEXT_SYMBOL == '.' ) {
-                                state = CORE_FLOAT;
-                        }
-                        else {
-                                state = CORE_INVALID;
-                                transition_count[CORE_INVALID]++;
-                        }
-                        transition_count[CORE_START]++;
-                        break;
-                case CORE_S1:
-                        if(ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_INT;
-                                transition_count[CORE_S1]++;
-                        }
-                        else if( NEXT_SYMBOL == '.' ) {
-                                state = CORE_FLOAT;
-                                transition_count[CORE_S1]++;
-                        }
-                        else {
-                                state = CORE_INVALID;
-                                transition_count[CORE_S1]++;
-                        }
-                        break;
-                case CORE_INT:
-                        if( NEXT_SYMBOL == '.' ) {
-                                state = CORE_FLOAT;
-                                transition_count[CORE_INT]++;
-                        }
-                        else if(!ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_INVALID;
-                                transition_count[CORE_INT]++;
-                        }
-                        break;
-                case CORE_FLOAT:
-                        if( NEXT_SYMBOL == 'E' || NEXT_SYMBOL == 'e' ) {
-                                state = CORE_S2;
-                                transition_count[CORE_FLOAT]++;
-                        }
-                        else if(!ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_INVALID;
-                                transition_count[CORE_FLOAT]++;
-                        }
-                        break;
-                case CORE_S2:
-                        if( NEXT_SYMBOL == '+' || NEXT_SYMBOL == '-' ) {
-                                state = CORE_EXPONENT;
-                                transition_count[CORE_S2]++;
-                        }
-                        else {
-                                state = CORE_INVALID;
-                                transition_count[CORE_S2]++;
-                        }
-                        break;
-                case CORE_EXPONENT:
-                        if(ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_SCIENTIFIC;
-                                transition_count[CORE_EXPONENT]++;
-                        }
-                        else {
-                                state = CORE_INVALID;
-                                transition_count[CORE_EXPONENT]++;
-                        }
-                        break;
-                case CORE_SCIENTIFIC:
-                        if(!ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_INVALID;
-                                transition_count[CORE_INVALID]++;
-                        }
-                        break;
-                default:
-                        break;
-                }
-        }
-        *instr=str;
-        return state;
-}
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-//#include "coremark.h"
-/* Function: get_seed
-        Get a values that cannot be determined at compile time.
-
-        Since different embedded systems and compilers are used, 3 different methods are provided:
-        1 - Using a volatile variable. This method is only valid if the compiler is forced to generate code that
-        reads the value of a volatile variable from memory at run time.
-        Please note, if using this method, you would need to modify core_portme.c to generate training profile.
-        2 - Command line arguments. This is the preferred method if command line arguments are supported.
-        3 - System function. If none of the first 2 methods is available on the platform,
-        a system function which is not a stub can be used.
-
-        e.g. read the value on GPIO pins connected to switches, or invoke special simulator functions.
-*/
-#if (SEED_METHOD==SEED_VOLATILE)
-        extern volatile ee_s32 seed1_volatile;
-        extern volatile ee_s32 seed2_volatile;
-        extern volatile ee_s32 seed3_volatile;
-        extern volatile ee_s32 seed4_volatile;
-        extern volatile ee_s32 seed5_volatile;
-        ee_s32 get_seed_32(int i) {
-                ee_s32 retval;
-                switch (i) {
-                        case 1:
-                                retval=seed1_volatile;
-                                break;
-                        case 2:
-                                retval=seed2_volatile;
-                                break;
-                        case 3:
-                                retval=seed3_volatile;
-                                break;
-                        case 4:
-                                retval=seed4_volatile;
-                                break;
-                        case 5:
-                                retval=seed5_volatile;
-                                break;
-                        default:
-                                retval=0;
-                                break;
-                }
-                return retval;
-        }
-#elif (SEED_METHOD==SEED_ARG)
-ee_s32 parseval(char *valstring) {
-        ee_s32 retval=0;
-        ee_s32 neg=1;
-        int hexmode=0;
-        if (*valstring == '-') {
-                neg=-1;
-                valstring++;
-        }
-        if ((valstring[0] == '0') && (valstring[1] == 'x')) {
-                hexmode=1;
-                valstring+=2;
-        }
-                /* first look for digits */
-        if (hexmode) {
-                while (((*valstring >= '0') && (*valstring <= '9')) || ((*valstring >= 'a') && (*valstring <= 'f'))) {
-                        ee_s32 digit=*valstring-'0';
-                        if (digit>9)
-                                digit=10+*valstring-'a';
-                        retval*=16;
-                        retval+=digit;
-                        valstring++;
-                }
-        } else {
-                while ((*valstring >= '0') && (*valstring <= '9')) {
-                        ee_s32 digit=*valstring-'0';
-                        retval*=10;
-                        retval+=digit;
-                        valstring++;
-                }
-        }
-        /* now add qualifiers */
-        if (*valstring=='K')
-                retval*=1024;
-        if (*valstring=='M')
-                retval*=1024*1024;
-
-        retval*=neg;
-        return retval;
-}
-
-ee_s32 get_seed_args(int i, int argc, char *argv[]) {
-        if (argc>i)
-                return parseval(argv[i]);
-        return 0;
-}
-
-#elif (SEED_METHOD==SEED_FUNC)
-/* If using OS based function, you must define and implement the functions below in core_portme.h and core_portme.c ! */
-ee_s32 get_seed_32(int i) {
-        ee_s32 retval;
-        switch (i) {
-                case 1:
-                        retval=portme_sys1();
-                        break;
-                case 2:
-                        retval=portme_sys2();
-                        break;
-                case 3:
-                        retval=portme_sys3();
-                        break;
-                case 4:
-                        retval=portme_sys4();
-                        break;
-                case 5:
-                        retval=portme_sys5();
-                        break;
-                default:
-                        retval=0;
-                        break;
-        }
-        return retval;
-}
-#endif
-
-/* Function: crc*
-        Service functions to calculate 16b CRC code.
-
-*/
-ee_u16 crcu8(ee_u8 data, ee_u16 crc )
-{
-        ee_u8 i=0,x16=0,carry=0;
-
-        for (i = 0; i < 8; i++)
-    {
-                x16 = (ee_u8)((data & 1) ^ ((ee_u8)crc & 1));
-                data >>= 1;
-
-                if (x16 == 1)
-                {
-                   crc ^= 0x4002;
-                   carry = 1;
-                }
-                else
-                        carry = 0;
-                crc >>= 1;
-                if (carry)
-                   crc |= 0x8000;
-                else
-                   crc &= 0x7fff;
-    }
-        return crc;
-}
-ee_u16 crcu16(ee_u16 newval, ee_u16 crc) {
-        crc=crcu8( (ee_u8) (newval)                             ,crc);
-        crc=crcu8( (ee_u8) ((newval)>>8)        ,crc);
-        return crc;
-}
-ee_u16 crcu32(ee_u32 newval, ee_u16 crc) {
-        crc=crc16((ee_s16) newval               ,crc);
-        crc=crc16((ee_s16) (newval>>16) ,crc);
-        return crc;
-}
-ee_u16 crc16(ee_s16 newval, ee_u16 crc) {
-        return crcu16((ee_u16)newval, crc);
-}
-
-ee_u8 check_data_types() {
-        ee_u8 retval=0;
-        if (sizeof(ee_u8) != 1) {
-                ee_printf("ERROR: ee_u8 is not an 8b datatype!\n");
-                retval++;
-        }
-        if (sizeof(ee_u16) != 2) {
-                ee_printf("ERROR: ee_u16 is not a 16b datatype!\n");
-                retval++;
-        }
-        if (sizeof(ee_s16) != 2) {
-                ee_printf("ERROR: ee_s16 is not a 16b datatype!\n");
-                retval++;
-        }
-        if (sizeof(ee_s32) != 4) {
-                ee_printf("ERROR: ee_s32 is not a 32b datatype!\n");
-                retval++;
-        }
-        if (sizeof(ee_u32) != 4) {
-                ee_printf("ERROR: ee_u32 is not a 32b datatype!\n");
-                retval++;
-        }
-        if (sizeof(ee_ptr_int) != sizeof(int *)) {
-                ee_printf("ERROR: ee_ptr_int is not a datatype that holds an int pointer!\n");
-                retval++;
-        }
-        if (retval>0) {
-                ee_printf("ERROR: Please modify the datatypes in core_portme.h!\n");
-        }
-        return retval;
-}
-/*
-        File : core_portme.c
-*/
-/*
-        Author : Shay Gal-On, EEMBC
-        Legal : TODO!
-*/
-#include <stdio.h>
-#include <stdlib.h>
-//#include "coremark.h"
-
-#if VALIDATION_RUN
-        volatile ee_s32 seed1_volatile=0x3415;
-        volatile ee_s32 seed2_volatile=0x3415;
-        volatile ee_s32 seed3_volatile=0x66;
-#endif
-#if PERFORMANCE_RUN
-        volatile ee_s32 seed1_volatile=0x0;
-        volatile ee_s32 seed2_volatile=0x0;
-        volatile ee_s32 seed3_volatile=0x66;
-#endif
-#if PROFILE_RUN
-        volatile ee_s32 seed1_volatile=0x8;
-        volatile ee_s32 seed2_volatile=0x8;
-        volatile ee_s32 seed3_volatile=0x8;
-#endif
-        volatile ee_s32 seed4_volatile=ITERATIONS;
-        volatile ee_s32 seed5_volatile=0;
-/* Porting : Timing functions
-        How to capture time and convert to seconds must be ported to whatever is supported by the platform.
-        e.g. Read value from on board RTC, read value from cpu clock cycles performance counter etc.
-        Sample implementation for standard time.h and windows.h definitions included.
-*/
-/* Define : TIMER_RES_DIVIDER
-        Divider to trade off timer resolution and total time that can be measured.
-
-        Use lower values to increase resolution, but make sure that overflow does not occur.
-        If there are issues with the return value overflowing, increase this value.
-        */
-//#define NSECS_PER_SEC CLOCKS_PER_SEC
-#define NSECS_PER_SEC 1000000000
-#define CORETIMETYPE clock_t
-//#define GETMYTIME(_t) (*_t=clock())
-#define GETMYTIME(_t) (*_t=0)
-#define MYTIMEDIFF(fin,ini) ((fin)-(ini))
-#define TIMER_RES_DIVIDER 1
-#define SAMPLE_TIME_IMPLEMENTATION 1
-//#define EE_TICKS_PER_SEC (NSECS_PER_SEC / TIMER_RES_DIVIDER)
-
-#define EE_TICKS_PER_SEC 1000
-
-/** Define Host specific (POSIX), or target specific global time variables. */
-static CORETIMETYPE start_time_val, stop_time_val;
-
-/* Function : start_time
-        This function will be called right before starting the timed portion of the benchmark.
-
-        Implementation may be capturing a system timer (as implemented in the example code)
-        or zeroing some system parameters - e.g. setting the cpu clocks cycles to 0.
-*/
-void start_time(void) {
-uint32_t mcyclel;
-        asm volatile ("csrr %0,mcycle"  : "=r" (mcyclel) );
-        start_time_val = mcyclel;
-}
-/* Function : stop_time
-        This function will be called right after ending the timed portion of the benchmark.
-
-        Implementation may be capturing a system timer (as implemented in the example code)
-        or other system parameters - e.g. reading the current value of cpu cycles counter.
-*/
-void stop_time(void) {
-uint32_t mcyclel;
-        asm volatile ("csrr %0,mcycle"  : "=r" (mcyclel) );
-        stop_time_val = mcyclel;
-}
-/* Function : get_time
-        Return an abstract "ticks" number that signifies time on the system.
-
-        Actual value returned may be cpu cycles, milliseconds or any other value,
-        as long as it can be converted to seconds by <time_in_secs>.
-        This methodology is taken to accomodate any hardware or simulated platform.
-        The sample implementation returns millisecs by default,
-        and the resolution is controlled by <TIMER_RES_DIVIDER>
-*/
-CORE_TICKS get_time(void) {
-        CORE_TICKS elapsed=(CORE_TICKS)(MYTIMEDIFF(stop_time_val, start_time_val));
-        return elapsed;
-}
-/* Function : time_in_secs
-        Convert the value returned by get_time to seconds.
-
-        The <secs_ret> type is used to accomodate systems with no support for floating point.
-        Default implementation implemented by the EE_TICKS_PER_SEC macro above.
-*/
-secs_ret time_in_secs(CORE_TICKS ticks) {
-        secs_ret retval=((secs_ret)ticks) / (secs_ret)EE_TICKS_PER_SEC;
-        return retval;
-}
-
-ee_u32 default_num_contexts=1;
-
-/* Function : portable_init
-        Target specific initialization code
-        Test for some common mistakes.
-*/
-void portable_init(core_portable *p, int *argc, char *argv[])
-{
-        if (sizeof(ee_ptr_int) != sizeof(ee_u8 *)) {
-                ee_printf("ERROR! Please define ee_ptr_int to a type that holds a pointer!\n");
-        }
-        if (sizeof(ee_u32) != 4) {
-                ee_printf("ERROR! Please define ee_u32 to a 32b unsigned type!\n");
-        }
-        p->portable_id=1;
-}
-/* Function : portable_fini
-        Target specific final code
-*/
-void portable_fini(core_portable *p)
-{
-        p->portable_id=0;
-}
-
-
-void* memset(void* s, int c, size_t n)
-{
-  asm("mv t0, a0");
-  asm("add a2, a2, a0");  // end = s + n
-  asm(".memset_loop: bge a0, a2, .memset_end");
-  asm("sb a1, 0(a0)");
-  asm("addi a0, a0, 1");
-  asm("j .memset_loop");
-  asm(".memset_end:");
-  asm("mv a0, t0");
-  asm("jr ra");
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark.ld b/verilog/rtl/BrqRV_EB1/testbench/asm/cmark.ld
deleted file mode 120000
index 0d4df6a..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark.ld
+++ /dev/null
@@ -1 +0,0 @@
-hello_world.ld
\ No newline at end of file
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark.mki b/verilog/rtl/BrqRV_EB1/testbench/asm/cmark.mki
deleted file mode 100644
index fa1eb19..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark.mki
+++ /dev/null
@@ -1,2 +0,0 @@
-TEST_CFLAGS = -finline-limit=400 -mbranch-cost=1 -Ofast -fno-code-hoisting -funroll-all-loops
-OFILES = crt0.o printf.o cmark.o
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_dccm.ld b/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_dccm.ld
deleted file mode 120000
index ae51d23..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_dccm.ld
+++ /dev/null
@@ -1 +0,0 @@
-hello_world_dccm.ld
\ No newline at end of file
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_dccm.mki b/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_dccm.mki
deleted file mode 120000
index e4bd4bc..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_dccm.mki
+++ /dev/null
@@ -1 +0,0 @@
-cmark.mki
\ No newline at end of file
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_iccm.ld b/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_iccm.ld
deleted file mode 100644
index d3b816a..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_iccm.ld
+++ /dev/null
@@ -1,18 +0,0 @@
-OUTPUT_ARCH( "riscv" )
-ENTRY(_start)
-
-SECTIONS {
-  .text   : { crt0.o (.text*) }
- _end = .;
-  . = 0xee000000 ;
-  .text.init   : { cmark.o (.text*) }
-  . = 0xd0580000;
-  .data.io .  : { *(.data.io) }
-  . = 0xf0040000;
-  .data  :  { *(.*data) *(.rodata*) *(.sbss) STACK = ALIGN(16) + 0x1000;}
-  .bss : { *(.bss) }
-  . = 0xfffffff0;
-  .iccm.ctl : { LONG(0xee000000); LONG(0xee008000) }
-  . = 0xfffffff8;
-  .data.ctl : { LONG(0xf0040000); LONG(STACK) }
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_iccm.mki b/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_iccm.mki
deleted file mode 100644
index 68f3c67..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/cmark_iccm.mki
+++ /dev/null
@@ -1,2 +0,0 @@
-TEST_CFLAGS = -g -O3 -funroll-all-loops
-OFILES = crt0.o printf.o cmark.o
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/crt0.s b/verilog/rtl/BrqRV_EB1/testbench/asm/crt0.s
deleted file mode 100644
index 82ec1e6..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/crt0.s
+++ /dev/null
@@ -1,48 +0,0 @@
-# SPDX-License-Identifier: Apache-2.0
-# Copyright 2020 MERL Corporation or its affiliates.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-// startup code to support HLL programs
-
-#include "defines.h"
-
-.section .text.init
-.global _start
-_start:
-
-// enable caching, except region 0xd
-        li t0, 0x59555555
-        csrw 0x7c0, t0
-
-        la sp, STACK
-
-        call main
-
-
-.global _finish
-_finish:
-        la t0, tohost
-        li t1, 0xff
-        sb t1, 0(t0) // DemoTB test termination
-        li t1, 1
-        sw t1, 0(t0) // Whisper test termination
-        beq x0, x0, _finish
-        .rept 10
-        nop
-        .endr
-
-.section .data.io
-.global tohost
-tohost: .word 0
-
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/custom.s b/verilog/rtl/BrqRV_EB1/testbench/asm/custom.s
deleted file mode 100644
index d0ea1cb..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/custom.s
+++ /dev/null
@@ -1,76 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 Western Digital Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-// Assembly code for Hello World
-// Not using only ALU ops for creating the string
-
-
-#include "defines.h"
-
-#define STDOUT 0xd0580000
-
-
-// Code to execute
-.section .text
-.global _start
-_start:
-
-    // Clear minstret
-    csrw minstret, zero
-    csrw minstreth, zero
-
-    // Set up MTVEC - not expecting to use it though
-    li x1, 0xee000000
-    csrw mtvec, x1
-
-
-    // Enable Caches in MRAC
-    li x1, 0x5f555555
-    csrw 0x7c0, x1
-    
-    li x1, 4
-    csrw 0x7f9, x1
-
-
-    // Load string from hw_data
-    // and write to stdout address
-
-    li x3, STDOUT
-    la x4, hw_data
-
-loop:
-   lb x5, 0(x4)
-   sb x5, 0(x3)
-   addi x4, x4, 1
-   bnez x5, loop
-   
-
-// Write 0xff to STDOUT for TB to termiate test.
-_finish:
-    li x3, STDOUT
-    addi x5, x0, 0xff
-    sb x5, 0(x3)
-    beq x0, x0, _finish
-.rept 100
-    nop
-.endr
-
-.data
-hw_data:
-.ascii "----------------------------------\n"
-.ascii "Hello World from BrqRV EB1 @WDC !!\n"
-.ascii "----------------------------------\n"
-.byte 0
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/factorial.s b/verilog/rtl/BrqRV_EB1/testbench/asm/factorial.s
deleted file mode 100644
index f75379f..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/factorial.s
+++ /dev/null
@@ -1,88 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 Western Digital Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-// Assembly code for Hello World
-// Not using only ALU ops for creating the string
-
-
-#include "defines.h"
-
-#define STDOUT 0xd0580000
-
-
-// Code to execute
-.section .text
-.global _start
-_start:
-
-    // Clear minstret
-    csrw minstret, zero
-    csrw minstreth, zero
-    li x1, 0x5f555555
-    csrw 0x7c0, x1
-    li x1, 4
-    csrw 0x7f9, x1
-
-    li x8, 0xf0040000 // dccm address
-    li x3, STDOUT	
-    li x13, 0x1      // the number whose factorial needs to be calculated  1 till 10
-    addi x9, x0, 0xA
-    addi x6, x0, 0
-    addi x11, x0, 1 // initial value
-    addi x12, x0, 1 
-    nop
-    
-store:    
-    add x5, x0, x6 
-    sw x5, 0(x8)
-    addi x6, x6, 1
-    addi x8, x8, 4
-    bne x9, x6, store
-    li x8, 0xf0040000
-    j factorial_loop
-    
-next:
-    sw x11, 0(x8) 
-    addi x8, x8, 4
-    sw x11, 0(x3)
-    addi x3, x3, 4
-    beq x13, x9,  _finish
-    addi x13, x13, 1 
-    addi x11, x0, 1  
-    addi x12, x0, 1 
-    
-    
-factorial_loop:
-	mul x11, x11, x12
-	beq x12, x13, next
-	addi x12,x12,1
-	j factorial_loop
-	
-
-
-   
-
-// Write 0xff to STDOUT for TB to termiate test.
-_finish:
-    li x3, STDOUT
-    addi x5, x0, 0xff
-    sb x5, 0(x3)
-    beq x0, x0, _finish
-.rept 100
-    nop
-.endr
-
-
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world.ld b/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world.ld
deleted file mode 100644
index e14adf3..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world.ld
+++ /dev/null
@@ -1,12 +0,0 @@
-OUTPUT_ARCH( "riscv" )
-ENTRY(_start)
-
-SECTIONS {
-    . = 0x80000000;
-  .text   : { *(.text*) }
- _end = .;
-  .data  :  { *(.*data) *(.rodata*) *(.sbss) STACK = ALIGN(16) + 0x1000;}
-  .bss : { *(.bss) }
-  . = 0xd0580000;
-  .data.io .  : { *(.data.io) }
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world.s b/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world.s
deleted file mode 100644
index 0e2d3c5..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world.s
+++ /dev/null
@@ -1,77 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-// Assembly code for Hello World
-// Not using only ALU ops for creating the string
-
-
-#include "defines.h"
-
-#define STDOUT 0xd0580000
-
-
-// Code to execute
-.section .text
-.global _start
-_start:
-
-    // Clear minstret
-    csrw minstret, zero
-    csrw minstreth, zero
-    //vsetvli x1, x0, e32,m1,tu,mu
-
-    // Set up MTVEC - not expecting to use it though
-     //li x1, RV_ICCM_SADR
-     //csrw mtvec, x1
-
-
-    // Enable Caches in MRAC
-    li x1, 0x5f555555
-    csrw 0x7c0, x1
-    li  x3, 4
-    csrw 0x7f9, x3 
-    // Load string from hw_data
-    // and write to stdout address
-
-    li x3, STDOUT
-    la x4, hw_data
-    
-    
-   
-
-loop:
-   lb x5, 0(x4)
-   //vle32.v v1, (x4)
-   sb x5, 0(x3)
-   addi x4, x4, 1
-   bnez x5, loop
-
-// Write 0xff to STDOUT for TB to termiate test.
-_finish:
-    li x3, STDOUT
-    addi x5, x0, 0xff
-    sb x5, 0(x3)
-    beq x0, x0, _finish
-.rept 100
-    nop
-.endr
-
-.data
-hw_data:
-.ascii "----------------------------------\n"
-.ascii "Hello World from brqrv eb1 @WDC !!\n"
-.ascii "----------------------------------\n"
-.byte 0
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_dccm.ld b/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_dccm.ld
deleted file mode 100644
index 2ae09af..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_dccm.ld
+++ /dev/null
@@ -1,14 +0,0 @@
-OUTPUT_ARCH( "riscv" )
-ENTRY(_start)
-
-SECTIONS {
-  .text   : { *(.text*) }
- _end = .;
-  . = 0xd0580000;
-  .data.io .  : { *(.data.io) }
-  . = 0xf0040000;
-  .data  :  { *(.*data) *(.rodata*) *(.sbss) STACK = ALIGN(16) + 0x1000;}
-  .bss : { *(.bss) }
-  . = 0xfffffff8;
-  .data.ctl : { LONG(0xf0040000); LONG(STACK) }
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_dccm.s b/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_dccm.s
deleted file mode 120000
index 3418f77..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_dccm.s
+++ /dev/null
@@ -1 +0,0 @@
-hello_world.s
\ No newline at end of file
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_iccm.ld b/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_iccm.ld
deleted file mode 100644
index 0692d8c..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_iccm.ld
+++ /dev/null
@@ -1,13 +0,0 @@
-OUTPUT_ARCH( "riscv" )
-ENTRY(_start)
-
-SECTIONS {
-  .text  :  { *(.text*) }
-  . = 0x10000;
-  .data  :  { *(.*data) *(.rodata*)}
-  . = ALIGN(4);
-  printf_start = .;
-  . = 0xee000000;
-  .data_load : AT(printf_start) {*(.data_text)}
-  printf_end = printf_start + SIZEOF(.data_load);
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_iccm.s b/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_iccm.s
deleted file mode 100644
index 6d1bb71..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/hello_world_iccm.s
+++ /dev/null
@@ -1,85 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-// Assembly code for Hello World
-// Not using only ALU ops for creating the string
-
-
-#include "defines.h"
-
-#define STDOUT 0xd0580000
-
-    .set    mfdc, 0x7f9
-.extern printf_start, printf_end
-// Code to execute
-.section .text
-.global _start
-_start:
-
-
-
-    // Enable Caches in MRAC
-    li x1, 0x5f555555
-    csrw 0x7c0, x1
-    li  x3, 4
-    csrw    mfdc, x3        // disable store merging
-    li  x3, RV_ICCM_SADR
-    la  x4, printf_start
-    la  x5, printf_end
-
-
-load:
-    lw  x6, 0 (x4)
-    sw  x6, 0 (x3)
-    addi    x4,x4,4
-    addi    x3,x3,4
-    bltu x4, x5, load
-
-    fence.i
-    call printf
-
-// Write 0xff to STDOUT for TB to termiate test.
-_finish:
-    li x3, STDOUT
-    addi x5, x0, 0xff
-    sb x5, 0(x3)
-    beq x0, x0, _finish
-.rept 100
-    nop
-.endr
-
-.data
-hw_data:
-.ascii "----------------------------------------\n"
-.ascii "Hello World from brqrv eb1 ICCM  @WDC !!\n"
-.ascii "----------------------------------------\n"
-.byte 0
-
-.section .data_text, "ax"
-    // Load string from hw_data
-    // and write to stdout address
-
-printf:
-    li x3, STDOUT
-    la x4, hw_data
-
-loop:
-   lb x5, 0(x4)
-   sb x5, 0(x3)
-   addi x4, x4, 1
-   bnez x5, loop
-   ret
-.long   0,1,2,3,4
diff --git a/verilog/rtl/BrqRV_EB1/testbench/asm/printf.c b/verilog/rtl/BrqRV_EB1/testbench/asm/printf.c
deleted file mode 100644
index 1268bd1..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/asm/printf.c
+++ /dev/null
@@ -1,310 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2020 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include <stdarg.h>
-#include <stdint.h>
-extern volatile char tohost;
-
-static int
-whisperPutc(char c)
-{
-  tohost = c;
-  return c;
-}
-
-
-static int
-whisperPuts(const char* s)
-{
-  while (*s)
-    whisperPutc(*s++);
-  return 1;
-}
-
-
-static int
-whisperPrintUnsigned(unsigned value, int width, char pad)
-{
-  char buffer[20];
-  int charCount = 0;
-
-  do
-    {
-      char c = '0' + (value % 10);
-      value = value / 10;
-      buffer[charCount++] = c;
-    }
-  while (value);
-
-  for (int i = charCount; i < width; ++i)
-    whisperPutc(pad);
-
-  char* p = buffer + charCount - 1;
-  for (int i = 0; i < charCount; ++i)
-    whisperPutc(*p--);
-
-  return charCount;
-}
-
-
-static int
-whisperPrintDecimal(int value, int width, char pad)
-{
-  char buffer[20];
-  int charCount = 0;
-
-  unsigned neg = value < 0;
-  if (neg)
-    {
-      value = -value;
-      whisperPutc('-');
-      width--;
-    }
-
-  do
-    {
-      char c = '0' + (value % 10);
-      value = value / 10;
-      buffer[charCount++] = c;
-    }
-  while (value);
-
-  for (int i = charCount; i < width; ++i)
-    whisperPutc(pad);
-
-  char* p = buffer + charCount - 1;
-  for (int i = 0; i < charCount; ++i)
-    whisperPutc(*p--);
-
-  if (neg)
-    charCount++;
-
-  return charCount;
-}
-
-
-static int
-whisperPrintInt(int value, int width, int pad, int base)
-{
-  if (base == 10)
-    return whisperPrintDecimal(value, width, pad);
-
-  char buffer[20];
-  int charCount = 0;
-
-  unsigned uu = value;
-
-  if (base == 8)
-    {
-      do
-        {
-          char c = '0' + (uu & 7);
-          buffer[charCount++] = c;
-          uu >>= 3;
-        }
-      while (uu);
-    }
-  else if (base == 16)
-    {
-      do
-        {
-          int digit = uu & 0xf;
-          char c = digit < 10 ? '0' + digit : 'a' + digit - 10;
-          buffer[charCount++] = c;
-          uu >>= 4;
-        }
-      while (uu);
-    }
-  else
-    return -1;
-
-  char* p = buffer + charCount - 1;
-  for (unsigned i = 0; i < charCount; ++i)
-    whisperPutc(*p--);
-
-  return charCount;
-}
-
-/*
-// Print with g format
-static int
-whisperPrintDoubleG(double value)
-{
-  return 0;
-}
-
-
-// Print with f format
-static int
-whisperPrintDoubleF(double value)
-{
-  return 0;
-}
-*/
-
-int
-whisperPrintfImpl(const char* format, va_list ap)
-{
-  int count = 0;  // Printed character count
-
-  for (const char* fp = format; *fp; fp++)
-    {
-      char pad = ' ';
-      int width = 0;  // Field width
-
-      if (*fp != '%')
-        {
-          whisperPutc(*fp);
-          ++count;
-          continue;
-        }
-
-      ++fp;  // Skip %
-
-      if (*fp == 0)
-        break;
-
-      if (*fp == '%')
-        {
-          whisperPutc('%');
-          continue;
-        }
-
-      while (*fp == '0')
-        {
-          pad = '0';
-          fp++;  // Pad zero not yet implented.
-        }
-
-      if (*fp == '-')
-        {
-          fp++;  // Pad right not yet implemented.
-        }
-
-      if (*fp == '*')
-        {
-          int outWidth = va_arg(ap, int);
-          fp++;  // Width not yet implemented.
-        }
-      else if (*fp >= '0' && *fp <= '9')
-        {    // Width not yet implemented.
-          while (*fp >= '0' && *fp <= '9')
-            width = width * 10 + (*fp++ - '0');
-        }
-
-      switch (*fp)
-        {
-        case 'd':
-          count += whisperPrintDecimal(va_arg(ap, int), width, pad);
-          break;
-
-        case 'u':
-          count += whisperPrintUnsigned((unsigned) va_arg(ap, unsigned), width, pad);
-          break;
-
-        case 'x':
-        case 'X':
-          count += whisperPrintInt(va_arg(ap, int), width, pad, 16);
-          break;
-
-        case 'o':
-          count += whisperPrintInt(va_arg(ap, int), width, pad, 8);
-          break;
-
-        case 'c':
-          whisperPutc(va_arg(ap, int));
-          ++count;
-          break;
-
-        case 's':
-          count += whisperPuts(va_arg(ap, char*));
-          break;
-/*
-        case 'g':
-          count += whisperPrintDoubleG(va_arg(ap, double));
-          break;
-
-        case 'f':
-          count += whisperPrintDoubleF(va_arg(ap, double));
-*/
-        }
-    }
-
-  return count;
-}
-
-
-int
-whisperPrintf(const char* format, ...)
-{
-  va_list ap;
-
-  va_start(ap, format);
-  int code = whisperPrintfImpl(format, ap);
-  va_end(ap);
-
-  return code;
-}
-
-int
-putchar(int c)
-{
-  return whisperPutc(c);
-}
-
-struct FILE;
-
-int
-putc(int c, struct FILE* f)
-{
-  return whisperPutc(c);
-}
-
-
-int
-puts(const char* s)
-{
-  return whisperPuts(s);
-}
-
-int
-printf(const char* format, ...)
-{
-  va_list ap;
-
-  va_start(ap, format);
-  int code = whisperPrintfImpl(format, ap);
-  va_end(ap);
-
-  return code;
-}
-
-// function to read cpu mcycle csr for performance measurements
-// simplified version
-uint64_t get_mcycle(){
-unsigned int mcyclel;
-unsigned int mcycleh0 = 0, mcycleh1=1;
-uint64_t cycles;
-
-while(mcycleh0 != mcycleh1) {
-    asm volatile ("csrr %0,mcycleh"  : "=r" (mcycleh0) );
-    asm volatile ("csrr %0,mcycle"   : "=r" (mcyclel)  );
-    asm volatile ("csrr %0,mcycleh"  : "=r" (mcycleh1) );
-}
-cycles = mcycleh1;
-return (cycles << 32) | mcyclel;
-
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/axi_lsu_dma_bridge.sv b/verilog/rtl/BrqRV_EB1/testbench/axi_lsu_dma_bridge.sv
deleted file mode 100644
index 2c3b844..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/axi_lsu_dma_bridge.sv
+++ /dev/null
@@ -1,201 +0,0 @@
-
-// connects LSI master to external AXI slave and DMA slave
-module axi_lsu_dma_bridge
-#(
-parameter M_ID_WIDTH = 8,
-parameter S0_ID_WIDTH = 8
-)
-(
-input                   clk,
-input                   reset_l,
-
-// master read bus
-input                   m_arvalid,
-input [M_ID_WIDTH-1:0]  m_arid,
-input[31:0]             m_araddr,
-output                  m_arready,
-
-output                  m_rvalid,
-input                   m_rready,
-output [63:0]           m_rdata,
-output [M_ID_WIDTH-1:0] m_rid,
-output [1:0]            m_rresp,
-output                  m_rlast,
-
-// master write bus
-input                   m_awvalid,
-input [M_ID_WIDTH-1:0]  m_awid,
-input[31:0]             m_awaddr,
-output                  m_awready,
-
-input                   m_wvalid,
-output                  m_wready,
-
-output[1:0]             m_bresp,
-output                  m_bvalid,
-output[M_ID_WIDTH-1:0]  m_bid,
-input                   m_bready,
-
-// slave 0 if general ext memory
-output                  s0_arvalid,
-input                   s0_arready,
-
-input                   s0_rvalid,
-input[S0_ID_WIDTH-1:0]  s0_rid,
-input[1:0]              s0_rresp,
-input[63:0]             s0_rdata,
-input                   s0_rlast,
-output                  s0_rready,
-
-output                  s0_awvalid,
-input                   s0_awready,
-
-output                  s0_wvalid,
-input                   s0_wready,
-
-input[1:0]              s0_bresp,
-input                   s0_bvalid,
-input[S0_ID_WIDTH-1:0]  s0_bid,
-output                  s0_bready,
-
-// slave 1 if DMA port
-output                  s1_arvalid,
-input                   s1_arready,
-
-input                   s1_rvalid,
-input[1:0]              s1_rresp,
-input[63:0]             s1_rdata,
-input                   s1_rlast,
-output                  s1_rready,
-
-output                  s1_awvalid,
-input                   s1_awready,
-
-output                  s1_wvalid,
-input                   s1_wready,
-
-input[1:0]              s1_bresp,
-input                   s1_bvalid,
-output                  s1_bready
-);
-
-parameter ICCM_BASE = `RV_ICCM_BITS; // in LSBs
-localparam IDFIFOSZ = $clog2(`RV_DMA_BUF_DEPTH);
-bit[31:0] iccm_real_base_addr = `RV_ICCM_SADR ;
-
-wire ar_slave_select;
-wire aw_slave_select;
-wire w_slave_select;
-
-wire rresp_select;
-wire bresp_select;
-wire ar_iccm_select;
-wire aw_iccm_select;
-
-reg [1:0] wsel_iptr, wsel_optr;
-reg [2:0] wsel_count;
-reg [3:0] wsel;
-
-
-reg [M_ID_WIDTH-1:0] arid [1<<IDFIFOSZ];
-reg [M_ID_WIDTH-1:0] awid [1<<IDFIFOSZ];
-reg [IDFIFOSZ-1:0] arid_cnt;
-reg [IDFIFOSZ-1:0] awid_cnt;
-reg [IDFIFOSZ-1:0] rid_cnt;
-reg [IDFIFOSZ-1:0] bid_cnt;
-
-
-// 1 select slave 1; 0 - slave 0
-assign ar_slave_select = ar_iccm_select;
-assign aw_slave_select = aw_iccm_select;
-
-assign ar_iccm_select = m_araddr[31:ICCM_BASE] == iccm_real_base_addr[31:ICCM_BASE];
-assign aw_iccm_select = m_awaddr[31:ICCM_BASE] == iccm_real_base_addr[31:ICCM_BASE];
-
-assign s0_arvalid = m_arvalid & ~ar_slave_select;
-assign s1_arvalid = m_arvalid &  ar_slave_select;
-assign m_arready = ar_slave_select ? s1_arready : s0_arready;
-
-
-assign s0_awvalid = m_awvalid & ~aw_slave_select;
-assign s1_awvalid = m_awvalid & aw_slave_select;
-assign m_awready = aw_slave_select ? s1_awready : s0_awready;
-
-
-assign s0_wvalid = m_wvalid & ~w_slave_select;
-assign s1_wvalid = m_wvalid &  w_slave_select;
-assign m_wready = w_slave_select ? s1_wready : s0_wready;
-assign w_slave_select = (wsel_count == 0 || wsel_count[2]) ? aw_slave_select : wsel[wsel_optr];
-
-assign m_rvalid = s0_rvalid | s1_rvalid;
-assign s0_rready = m_rready & ~rresp_select;
-assign s1_rready = m_rready &  rresp_select;
-assign m_rdata = rresp_select ? s1_rdata : s0_rdata;
-assign m_rresp = rresp_select ? s1_rresp : s0_rresp;
-assign m_rid = rresp_select ? arid[rid_cnt] : s0_rid;
-assign m_rlast = rresp_select ? s1_rlast : s0_rlast;
-
-assign rresp_select = s1_rvalid & ~s0_rvalid;
-
-assign m_bvalid = s0_bvalid | s1_bvalid;
-assign s0_bready = m_bready & ~bresp_select;
-assign s1_bready = m_bready &  bresp_select;
-assign m_bid = bresp_select ? awid[bid_cnt] : s0_bid;
-assign m_bresp = bresp_select ? s1_bresp : s0_bresp;
-
-
-assign bresp_select = s1_bvalid & ~s0_bvalid;
-
-
-// W-channel select fifo
-always @ (posedge clk or negedge reset_l)
-    if(!reset_l) begin
-        wsel_count <= '0;
-        wsel_iptr <= '0;
-        wsel_optr <= '0;
-    end
-    else begin
-        if(m_awvalid & m_awready) begin
-            wsel[wsel_iptr] <= aw_slave_select;
-            if(!(m_wready & m_wvalid )) wsel_count <= wsel_count + 1;
-            wsel_iptr <= wsel_iptr + 1;
-        end
-        if(m_wvalid & m_wready) begin
-           if(!(m_awready & m_awvalid ) ) wsel_count <= wsel_count - 1;
-           wsel_optr <= wsel_optr + 1;
-        end
-    end
-
-// id replacement for narrow ID slave
-always @ (posedge clk or negedge reset_l)
-    if(!reset_l) begin
-        arid_cnt <= '0;
-        rid_cnt <= '0;
-    end
-    else begin
-        if(ar_slave_select & m_arready & m_arvalid) begin
-            arid[arid_cnt] <= m_arid;
-            arid_cnt <= arid_cnt + 1;
-        end
-        if(rresp_select & m_rready & m_rvalid) begin
-            rid_cnt <= rid_cnt + 1;
-        end
-
-    end
-
-always @ (posedge clk or negedge reset_l)
-    if(!reset_l) begin
-        awid_cnt <= '0;
-        bid_cnt <= '0;
-    end
-    else begin
-        if(aw_slave_select & m_awready & m_awvalid) begin
-            awid[awid_cnt] <= m_awid;
-            awid_cnt <= awid_cnt + 1;
-        end
-        if(bresp_select & m_bready & m_bvalid) begin
-            bid_cnt <= bid_cnt + 1;
-        end
-    end
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/testbench/dasm.svi b/verilog/rtl/BrqRV_EB1/testbench/dasm.svi
deleted file mode 100644
index 59ad83a..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/dasm.svi
+++ /dev/null
@@ -1,374 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-// Run time disassembler functions
-// supports  RISCV extentions I, C, M
-
-bit[31:0] gpr[32];
-
-// main DASM function
-function string dasm(input[31:0] opcode, input[31:0] pc, input[4:0] regn, input[31:0] regv);
-    if(regn) gpr[regn] = regv;
-
-    if( opcode[1:0] == 2'b11 ) return dasm32(opcode, pc);
-    else return dasm16(opcode, pc);
-endfunction
-
-
-///////////////// 16 bits instructions ///////////////////////
-
-function string dasm16( input[31:0] opcode, input[31:0] pc);
-    case(opcode[1:0])
-    0: return dasm16_0(opcode);
-    1: return dasm16_1(opcode, pc);
-    2: return dasm16_2(opcode);
-    endcase
-    return $sformatf(".short 0x%h", opcode[15:0]);
-endfunction
-
-function string dasm16_0( input[31:0] opcode);
-    case(opcode[15:13])
-    3'b000: return dasm16_ciw(opcode);
-    3'b001: return {"c.fld", dasm16_cl(opcode)};
-    3'b010: return {"c.lw",  dasm16_cl(opcode)};
-    3'b011: return {"c.flw", dasm16_cl(opcode)};
-    3'b101: return {"c.fsd", dasm16_cl(opcode)};
-    3'b110: return {"c.sw",  dasm16_cl(opcode)};
-    3'b111: return {"c.fsw", dasm16_cl(opcode)};
-    endcase
-    return $sformatf(".short 0x%h", opcode[15:0]);
-endfunction
-
-function string dasm16_ciw( input[31:0] opcode);
-int imm;
-    imm=0;
-    if(opcode[15:0] == 0) return ".short 0";
-    {imm[5:4],imm[9:6],imm[2],imm[3]} = opcode[12:5];
-    return $sformatf("c.addi4spn %s, 0x%0h", abi_reg[opcode[4:2]+8], imm);
-endfunction
-
-function string dasm16_cl( input[31:0] opcode);
-int imm;
-    imm=0;
-    imm[5:3] = opcode[12:10];
-    imm[7:6] = opcode[6:5];
-
-    return $sformatf(" %s, %0d(%s) [%h]", abi_reg[opcode[4:2]+8], imm, abi_reg[opcode[9:7]+8], gpr[opcode[9:7]+8]+imm);
-endfunction
-
-function string dasm16_1( input[31:0] opcode, input[31:0] pc);
-    case(opcode[15:13])
-    3'b000: return opcode[11:7]==0 ? "c.nop" : {"c.addi",dasm16_ci(opcode)};
-    3'b001: return {"c.jal", dasm16_cj(opcode, pc)};
-    3'b010: return {"c.li",  dasm16_ci(opcode)};
-    3'b011: return dasm16_1_3(opcode);
-    3'b100: return dasm16_cr(opcode);
-    3'b101: return {"c.j", dasm16_cj(opcode, pc)};
-    3'b110: return {"c.beqz", dasm16_cb(opcode, pc)};
-    3'b111: return {"c.bnez", dasm16_cb(opcode, pc)};
-    endcase
-endfunction
-
-function string dasm16_ci( input[31:0] opcode);
-int imm;
-    imm=0;
-    imm[4:0] = opcode[6:2];
-    if(opcode[12]) imm [31:5] = '1;
-    return $sformatf(" %s, %0d", abi_reg[opcode[11:7]], imm);
-endfunction
-
-function string dasm16_cj( input[31:0] opcode, input[31:0] pc);
-bit[31:0] imm;
-    imm=0;
-    {imm[11],imm[4],imm[9:8],imm[10],imm[6], imm[7],imm[3:1], imm[5]} = opcode[12:2];
-    if(opcode[12]) imm [31:12] = '1;
-    return $sformatf(" 0x%h", imm+pc);
-endfunction
-
-function string dasm16_cb( input[31:0] opcode, input[31:0] pc);
-bit[31:0] imm;
-    imm=0;
-    {imm[11],imm[4:3]} = opcode[12:10];
-    {imm[7], imm[6],imm[2:1], imm[5]} = opcode[6:2];
-    if(opcode[12]) imm [31:9] = '1;
-    return $sformatf(" %s, 0x%h",abi_reg[opcode[9:7]+8], imm+pc);
-endfunction
-
-function string dasm16_cr( input[31:0] opcode);
-bit[31:0] imm;
-
-    imm = 0;
-    imm[4:0] = opcode[6:2];
-    if(opcode[5]) imm [31:5] = '1;
-    case(opcode[11:10])
-    0: return $sformatf("c.srli %s, %0d",  abi_reg[opcode[9:7]+8], imm[5:0]);
-    1: return $sformatf("c.srai %s, %0d",  abi_reg[opcode[9:7]+8], imm[5:0]);
-    2: return $sformatf("c.andi %s, 0x%h", abi_reg[opcode[9:7]+8], imm);
-    endcase
-
-    case(opcode[6:5])
-    0: return $sformatf("c.sub %s, %s", abi_reg[opcode[9:7]+8], abi_reg[opcode[4:2]+8]);
-    1: return $sformatf("c.xor %s, %s", abi_reg[opcode[9:7]+8], abi_reg[opcode[4:2]+8]);
-    2: return $sformatf("c.or  %s, %s", abi_reg[opcode[9:7]+8], abi_reg[opcode[4:2]+8]);
-    3: return $sformatf("c.and %s, %s", abi_reg[opcode[9:7]+8], abi_reg[opcode[4:2]+8]);
-    endcase
-endfunction
-
-function string dasm16_1_3( input[31:0] opcode);
-int imm;
-
-    imm=0;
-    if(opcode[11:7] == 2) begin
-        {imm[4], imm[6],imm[8:7], imm[5]} = opcode[6:2];
-        if(opcode[12]) imm [31:9] = '1;
-        return $sformatf("c.addi16sp %0d", imm);
-    end
-    else begin
-    //    {imm[4], imm[6],imm[8:7], imm[5]} = opcode[6:2];
-        imm[16:12] = opcode[6:2];
-        if(opcode[12]) imm [31:17] = '1;
-        return $sformatf("c.lui %3s, 0x%h", abi_reg[opcode[11:7]], imm);
-
-    end
-endfunction
-
-function string dasm16_2( input[31:0] opcode);
-    case(opcode[15:13])
-    3'b000: return {"c.slli",  dasm16_ci(opcode)};
-    3'b001: return {"c.fldsp", dasm16_cls(opcode,1)};
-    3'b010: return {"c.lwsp",  dasm16_cls(opcode)};
-    3'b011: return {"c.flwsp", dasm16_cls(opcode)};
-    3'b101: return {"c.fsdsp", dasm16_css(opcode,1)};
-    3'b110: return {"c.swsp",  dasm16_css(opcode)};
-    3'b111: return {"c.fswsp", dasm16_css(opcode)};
-    endcase
-    if(opcode[12]) begin
-        if(opcode[12:2] == 0) return "c.ebreak";
-        else if(opcode[6:2] == 0) return $sformatf("c.jalr %s", abi_reg[opcode[11:7]]);
-        else return $sformatf("c.add %s, %s", abi_reg[opcode[11:7]], abi_reg[opcode[6:2]]);
-    end
-    else begin
-        if(opcode[6:2] == 0) return $sformatf("c.jr %s", abi_reg[opcode[11:7]]);
-        else return $sformatf("c.mv %s, %s", abi_reg[opcode[11:7]], abi_reg[opcode[6:2]]);
-    end
-endfunction
-
-
-function string dasm16_cls( input[31:0] opcode, input sh1=0);
-bit[31:0] imm;
-    imm=0;
-    if(sh1) {imm[4:3],imm[8:6]} = opcode[6:2];
-    else    {imm[4:2],imm[7:6]} = opcode[6:2];
-    imm[5] = opcode[12];
-    return $sformatf(" %s, 0x%0h [%h]", abi_reg[opcode[11:7]], imm, gpr[2]+imm);
-endfunction
-
-function string dasm16_css( input[31:0] opcode, input sh1=0);
-bit[31:0] imm;
-    imm=0;
-    if(sh1) {imm[5:3],imm[8:6]} = opcode[12:7];
-    else {imm[5:2],imm[7:6]} = opcode[12:7];
-    return $sformatf(" %s, 0x%0h [%h]", abi_reg[opcode[6:2]], imm, gpr[2]+imm);
-endfunction
-
-///////////////// 32 bit instructions ///////////////////////
-
-function string dasm32( input[31:0] opcode, input[31:0] pc);
-    case(opcode[6:0])
-    7'b0110111: return {"lui",   dasm32_u(opcode)};
-    7'b0010111: return {"auipc", dasm32_u(opcode)};
-    7'b1101111: return {"jal",   dasm32_j(opcode,pc)};
-    7'b1100111: return {"jalr",  dasm32_jr(opcode,pc)};
-    7'b1100011: return dasm32_b(opcode,pc);
-    7'b0000011: return dasm32_l(opcode);
-    7'b0100011: return dasm32_s(opcode);
-    7'b0010011: return dasm32_ai(opcode);
-    7'b0110011: return dasm32_ar(opcode);
-    7'b0001111: return {"fence", dasm32_fence(opcode)};
-    7'b1110011: return dasm32_e(opcode);
-
-    endcase
-    return $sformatf(".long 0x%h", opcode);
-endfunction
-
-function string dasm32_u( input[31:0] opcode);
-bit[31:0] imm;
-    imm=0;
-    imm[31:12] = opcode[31:12];
-    return $sformatf(" %s, 0x%0h", abi_reg[opcode[11:7]], imm);
-endfunction
-
-function string dasm32_j( input[31:0] opcode, input[31:0] pc);
-int imm;
-    imm=0;
-    {imm[20], imm[10:1], imm[11], imm[19:12]} = opcode[31:12];
-    if(opcode[31]) imm[31:20] = '1;
-    return $sformatf(" %s, 0x%0h",abi_reg[opcode[11:7]], imm+pc);
-endfunction
-
-function string dasm32_jr( input[31:0] opcode, input[31:0] pc);
-int imm;
-    imm=0;
-    imm[11:1] = opcode[31:19];
-    if(opcode[31]) imm[31:12] = '1;
-    return $sformatf(" %s, %s, 0x%0h",abi_reg[opcode[11:7]], abi_reg[opcode[19:15]], imm+pc);
-endfunction
-
-function string dasm32_b( input[31:0] opcode, input[31:0] pc);
-int imm;
-string mn;
-    imm=0;
-    {imm[12],imm[10:5]} = opcode[31:25];
-    {imm[4:1],imm[11]} = opcode[11:7];
-    if(opcode[31]) imm[31:12] = '1;
-    case(opcode[14:12])
-    0: mn = "beq";
-    1: mn = "bne";
-    2,3 : return $sformatf(".long 0x%h", opcode);
-    4: mn = "blt";
-    5: mn = "bge";
-    6: mn = "bltu";
-    7: mn = "bgeu";
-    endcase
-    return $sformatf("%s %s, %s, 0x%0h", mn, abi_reg[opcode[11:7]], abi_reg[opcode[19:15]], imm+pc);
-endfunction
-
-function string dasm32_l( input[31:0] opcode);
-int imm;
-string mn;
-    imm=0;
-    imm[11:0] = opcode[31:20];
-    if(opcode[31]) imm[31:12] = '1;
-    case(opcode[14:12])
-    0: mn = "lb";
-    1: mn = "lh";
-    2: mn = "lw";
-    4: mn = "lbu";
-    5: mn = "lhu";
-    default : return $sformatf(".long 0x%h", opcode);
-    endcase
-    return $sformatf("%s %s, %0d(%s) [%h]", mn, abi_reg[opcode[11:7]], imm, abi_reg[opcode[19:15]], imm+gpr[opcode[19:15]]);
-endfunction
-
-function string dasm32_s( input[31:0] opcode);
-int imm;
-string mn;
-    imm=0;
-    imm[11:5] = opcode[31:25];
-    imm[4:0] = opcode[11:7];
-    if(opcode[31]) imm[31:12] = '1;
-    case(opcode[14:12])
-    0: mn = "sb";
-    1: mn = "sh";
-    2: mn = "sw";
-    default : return $sformatf(".long 0x%h", opcode);
-    endcase
-    return $sformatf("%s %s, %0d(%s) [%h]", mn, abi_reg[opcode[24:20]], imm, abi_reg[opcode[19:15]], imm+gpr[opcode[19:15]]);
-endfunction
-
-function string dasm32_ai( input[31:0] opcode);
-int imm;
-string mn;
-    imm=0;
-    imm[11:0] = opcode[31:20];
-    if(opcode[31]) imm[31:12] = '1;
-    case(opcode[14:12])
-    0: mn = "addi";
-    2: mn = "slti";
-    3: mn = "sltiu";
-    4: mn = "xori";
-    6: mn = "ori";
-    7: mn = "andi";
-    default: return dasm32_si(opcode);
-endcase
-
-return $sformatf("%s %s, %s, %0d", mn, abi_reg[opcode[11:7]], abi_reg[opcode[19:15]], imm);
-endfunction
-
-function string dasm32_si( input[31:0] opcode);
-int imm;
-string mn;
-    imm = opcode[24:20];
-    case(opcode[14:12])
-    1: mn = "slli";
-    5: mn = opcode[30] ? "srli": "srai";
-    endcase
-
-    return $sformatf("%s %s, %s, %0d", mn, abi_reg[opcode[11:7]], abi_reg[opcode[19:15]], imm);
-endfunction
-
-
-
-function string dasm32_ar( input[31:0] opcode);
-string mn;
-    if(opcode[25])
-        case(opcode[14:12])
-        0: mn = "mul";
-        1: mn = "mulh";
-        2: mn = "mulhsu";
-        3: mn = "mulhu";
-        4: mn = "div";
-        5: mn = "divu";
-        6: mn = "rem";
-        7: mn = "remu";
-        endcase
-    else
-        case(opcode[14:12])
-        0: mn = opcode[30]? "sub":"add";
-        1: mn = "sll";
-        2: mn = "slt";
-        3: mn = "sltu";
-        4: mn = "xor";
-        5: mn = opcode[30]? "sra" :"srl";
-        6: mn = "or";
-        7: mn = "and";
-        endcase
-    return $sformatf("%s %s, %s, %s", mn, abi_reg[opcode[11:7]], abi_reg[opcode[19:15]], abi_reg[opcode[24:20]]);
-endfunction
-
-function string dasm32_fence( input[31:0] opcode);
-    return  opcode[12] ? ".i" : "";
-endfunction
-
-function string dasm32_e(input[31:0] opcode);
-    if(opcode[31:7] == 0) return "ecall";
-    else if({opcode[31:21],opcode [19:7]} == 0) return "ebreak";
-    else
-        case(opcode[14:12])
-        1: return {"csrrw", dasm32_csr(opcode)};
-        2: return {"csrrs", dasm32_csr(opcode)};
-        3: return {"csrrc", dasm32_csr(opcode)};
-        5: return {"csrrwi", dasm32_csr(opcode, 1)};
-        6: return {"csrrsi", dasm32_csr(opcode, 1)};
-        7: return {"csrrci", dasm32_csr(opcode, 1)};
-        endcase
-
-endfunction
-
-
-function string dasm32_csr(input[31:0] opcode, input im=0);
-bit[11:0] csr;
-    csr = opcode[31:20];
-    if(im) begin
-        return $sformatf(" %s, csr_%0h, 0x%h",  abi_reg[opcode[11:7]], csr, opcode[19:15]);
-    end
-    else begin
-        return $sformatf(" %s, csr_%0h, %s",  abi_reg[opcode[11:7]], csr, abi_reg[opcode[19:15]]);
-    end
-
-endfunction
-
-
diff --git a/verilog/rtl/BrqRV_EB1/testbench/flist b/verilog/rtl/BrqRV_EB1/testbench/flist
deleted file mode 100644
index ff4a16d..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/flist
+++ /dev/null
@@ -1,51 +0,0 @@
-+libext+.v+.sv
-//-y $SYNOPSYS_SYN_ROOT/dw/sim_ver
-+define+RV_OPENSOURCE
-+incdir+$RV_ROOT/testbench
-$RV_ROOT/design/soc_files/tb_prog.v
-$RV_ROOT/design/eb1_brqrv_wrapper.sv
-$RV_ROOT/design/eb1_mem.sv
-$RV_ROOT/design/eb1_pic_ctrl.sv
-$RV_ROOT/design/eb1_brqrv.sv
-$RV_ROOT/design/eb1_dma_ctrl.sv
-$RV_ROOT/design/ifu/eb1_ifu_aln_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_compress_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_ifc_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_bp_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_ic_mem.sv
-$RV_ROOT/design/ifu/eb1_ifu_mem_ctl.sv
-$RV_ROOT/design/ifu/eb1_ifu_iccm_mem.sv
-$RV_ROOT/design/ifu/eb1_ifu.sv
-$RV_ROOT/design/dec/eb1_dec_decode_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_gpr_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_ib_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_tlu_ctl.sv
-$RV_ROOT/design/dec/eb1_dec_trigger.sv
-$RV_ROOT/design/dec/eb1_dec.sv
-$RV_ROOT/design/exu/eb1_exu_alu_ctl.sv
-$RV_ROOT/design/exu/eb1_exu_mul_ctl.sv
-$RV_ROOT/design/exu/eb1_exu_div_ctl.sv
-$RV_ROOT/design/exu/eb1_exu.sv
-$RV_ROOT/design/lsu/eb1_lsu.sv
-$RV_ROOT/design/lsu/eb1_lsu_clkdomain.sv
-$RV_ROOT/design/lsu/eb1_lsu_addrcheck.sv
-$RV_ROOT/design/lsu/eb1_lsu_lsc_ctl.sv
-$RV_ROOT/design/lsu/eb1_lsu_stbuf.sv
-$RV_ROOT/design/lsu/eb1_lsu_bus_buffer.sv
-$RV_ROOT/design/lsu/eb1_lsu_bus_intf.sv
-$RV_ROOT/design/lsu/eb1_lsu_ecc.sv
-$RV_ROOT/design/lsu/eb1_lsu_dccm_mem.sv
-$RV_ROOT/design/lsu/eb1_lsu_dccm_ctl.sv
-$RV_ROOT/design/lsu/eb1_lsu_trigger.sv
-$RV_ROOT/design/dbg/eb1_dbg.sv
-$RV_ROOT/design/dmi/dmi_wrapper.v
-$RV_ROOT/design/dmi/dmi_jtag_to_core_sync.v
-$RV_ROOT/design/dmi/rvjtag_tap.v
-$RV_ROOT/design/soc_files/uart_rx_prog.v
-$RV_ROOT/design/soc_files/iccm_controller.v
-$RV_ROOT/design/sky130_sram_1kbyte_1rw1r_32x256_8.v
-$RV_ROOT/design/lib/eb1_lib.sv
--v $RV_ROOT/design/lib/beh_lib.sv
--v $RV_ROOT/design/lib/mem_lib.sv
--y $RV_ROOT/design/lib
--v $RV_ROOT/testbench/axi_lsu_dma_bridge.sv
diff --git a/verilog/rtl/BrqRV_EB1/testbench/hex/cmark.hex b/verilog/rtl/BrqRV_EB1/testbench/hex/cmark.hex
deleted file mode 100755
index 30a105f..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/hex/cmark.hex
+++ /dev/null
@@ -1,2251 +0,0 @@
-@80000000

-B7 52 55 5F 93 82 52 55 73 90 02 7C 17 A1 00 00

-13 01 41 C5 EF 70 D0 11 97 02 58 50 93 82 82 FE

-13 03 F0 0F 23 80 62 00 05 43 23 A0 62 00 E3 05

-00 FE 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 03 47 05 00 E3 09 07 2A 39 71

-B7 82 00 80 22 DE 26 DC 2A 86 4A DA 4E D8 52 D6

-56 D4 5A D2 5E D0 01 45 13 0E 50 02 37 08 58 D0

-93 08 00 03 93 03 D0 02 93 04 A0 02 13 04 00 02

-93 82 42 68 93 0F B1 00 25 4F A9 4E 19 A8 BE 86

-23 00 E8 00 B2 87 05 05 36 86 03 C7 17 00 63 06

-07 20 93 07 16 00 E3 14 C7 FF 03 43 16 00 63 0E

-03 1E 09 06 63 05 C3 1F E3 15 13 23 03 C7 17 00

-3E 86 85 07 BE 86 63 12 17 07 03 C7 17 00 3E 86

-85 07 63 1C 17 05 03 C7 26 00 3E 86 93 87 26 00

-63 15 17 05 03 C7 36 00 3E 86 93 87 36 00 63 1E

-17 03 03 C7 46 00 3E 86 93 87 46 00 63 17 17 03

-03 C7 56 00 3E 86 93 87 56 00 63 10 17 03 03 C7

-66 00 3E 86 93 87 66 00 63 19 17 01 03 C7 76 00

-3E 86 93 87 76 00 E3 0B 17 F9 09 06 63 08 77 02

-63 0C 97 02 93 09 07 FD 13 F9 F9 0F 81 46 63 73

-2F 0B 13 07 87 FA 13 79 F7 0F E3 68 24 F5 13 1A

-29 00 B3 0B 5A 00 83 A9 0B 00 82 89 03 C7 17 00

-B2 87 05 06 E3 18 97 FC 03 C7 17 00 91 05 B2 87

-81 46 05 06 F9 B7 03 47 59 00 13 9B 26 00 B3 0A

-DB 00 93 0B 07 FD 93 96 1A 00 93 F9 FB 0F 3E 86

-D2 96 93 07 59 00 63 62 3F 11 03 47 69 00 13 96

-26 00 33 0B D6 00 13 0A 07 FD 93 16 1B 00 93 7A

-FA 0F 3E 86 DE 96 93 07 69 00 63 60 5F 0F 03 47

-79 00 93 9B 26 00 33 86 DB 00 93 09 07 FD 13 1B

-16 00 93 FA F9 0F 3E 86 B3 06 6A 01 93 07 79 00

-63 6D 5F 0B 03 C7 17 00 13 9A 26 00 B3 0A DA 00

-13 0B 07 FD 3E 86 93 9B 1A 00 85 07 13 7A FB 0F

-3E 89 B3 86 79 01 63 6A 4F 09 03 C7 17 00 93 99

-26 00 CE 96 93 0B 07 FD 13 9A 16 00 93 FA FB 0F

-3E 86 B3 06 4B 01 85 07 63 69 5F 07 03 47 29 00

-13 96 26 00 33 0B D6 00 13 0A 07 FD 93 19 1B 00

-93 7A FA 0F 3E 86 B3 86 3B 01 93 07 29 00 63 66

-5F 05 03 47 39 00 93 9B 26 00 DE 96 13 0B 07 FD

-93 99 16 00 93 7A FB 0F 3E 86 B3 06 3A 01 93 07

-39 00 63 64 5F 03 03 47 49 00 13 96 26 00 B3 0B

-D6 00 13 0A 07 FD 93 96 1B 00 93 79 FA 0F 3E 86

-DA 96 93 07 49 00 E3 70 3F EF 09 06 5D B5 23 00

-C8 01 03 C7 17 00 E3 1E 07 DE 72 54 E2 54 52 59

-C2 59 32 5A A2 5A 12 5B 82 5B 21 61 82 80 98 41

-81 49 91 05 11 A0 B6 89 93 7A F7 00 13 83 7A 05

-63 44 5F 01 13 83 0A 03 93 86 19 00 13 0B C1 00

-33 0A DB 00 A3 0F 6A FE 11 83 71 FF 13 09 C1 00

-33 07 39 01 B3 09 F7 41 93 FA 79 00 63 89 0A 06

-85 4B 63 8F 7A 05 09 43 63 87 6A 04 0D 4B 63 8F

-6A 03 11 4A 63 87 4A 03 15 49 63 8F 2A 01 99 49

-63 87 3A 01 83 4A 07 00 7D 17 23 00 58 01 83 4B

-07 00 7D 17 23 00 78 01 03 43 07 00 7D 17 23 00

-68 00 03 4B 07 00 7D 17 23 00 68 01 03 4A 07 00

-7D 17 23 00 48 01 03 49 07 00 7D 17 23 00 28 01

-83 49 07 00 7D 17 23 00 38 01 63 05 F7 05 83 4A

-07 00 61 17 23 00 58 01 83 4B 77 00 23 00 78 01

-03 43 67 00 23 00 68 00 03 4B 57 00 23 00 68 01

-03 4A 47 00 23 00 48 01 03 49 37 00 23 00 28 01

-83 49 27 00 23 00 38 01 83 4A 17 00 23 00 58 01

-E3 1F F7 FB 36 95 D5 B1 03 C9 05 00 05 05 91 05

-23 00 28 01 D9 B9 03 AA 05 00 01 49 91 05 B3 7A

-DA 03 4A 87 13 0B C1 00 05 09 B3 0B 2B 01 CA 89

-93 8A 0A 03 A3 8F 5B FF B3 5B DA 03 63 78 4F 0F

-4A 87 13 0B C1 00 05 09 B3 0A 2B 01 33 FA DB 03

-13 0A 0A 03 A3 8F 4A FF 33 DA DB 03 63 78 7F 0D

-93 0B C1 00 4A 87 13 89 29 00 33 8B 2B 01 B3 7A

-DA 03 93 8B 0A 03 A3 0F 7B FF B3 5A DA 03 63 77

-4F 0B 13 0A C1 00 4A 87 13 89 39 00 33 0B 2A 01

-B3 FB DA 03 13 8A 0B 03 A3 0F 4B FF B3 DB DA 03

-63 76 5F 09 93 0A C1 00 4A 87 13 89 49 00 33 8B

-2A 01 33 FA DB 03 93 0A 0A 03 A3 0F 5B FF B3 DA

-DB 03 63 75 7F 07 93 0B C1 00 4A 87 13 89 59 00

-33 8B 2B 01 33 FA DA 03 93 0B 0A 03 A3 0F 7B FF

-33 DA DA 03 63 74 5F 05 93 0A C1 00 4A 87 13 89

-69 00 33 8B 2A 01 B3 7B DA 03 93 8A 0B 03 A3 0F

-5B FF 33 5B DA 03 63 73 4F 03 4A 87 13 89 79 00

-93 09 C1 00 33 8A 29 01 B3 7B DB 03 93 8A 0B 03

-A3 0F 5A FF 33 5A DB 03 E3 6B 6F EF CA 89 63 55

-D9 08 33 8B 26 41 93 7B 7B 00 63 8C 0B 04 85 4A

-63 84 5B 05 09 4A 63 8E 4B 03 0D 4B 63 88 6B 03

-91 4A 63 82 5B 03 15 4A 63 8C 4B 01 19 4B 63 86

-6B 01 23 00 68 00 93 09 19 00 23 00 68 00 85 09

-23 00 68 00 85 09 23 00 68 00 85 09 23 00 68 00

-85 09 23 00 68 00 85 09 23 00 68 00 85 09 63 85

-36 03 23 00 68 00 23 00 68 00 23 00 68 00 23 00

-68 00 23 00 68 00 23 00 68 00 23 00 68 00 23 00

-68 00 A1 09 E3 9F 36 FD 13 03 C1 00 1A 97 B3 06

-F7 41 93 FB 76 00 63 89 0B 06 85 4A 63 8F 5B 05

-09 4A 63 87 4B 05 0D 4B 63 8F 6B 03 91 49 63 87

-3B 03 15 43 63 8F 6B 00 99 46 63 87 DB 00 83 4B

-07 00 7D 17 23 00 78 01 83 4A 07 00 7D 17 23 00

-58 01 03 4A 07 00 7D 17 23 00 48 01 03 4B 07 00

-7D 17 23 00 68 01 83 49 07 00 7D 17 23 00 38 01

-03 43 07 00 7D 17 23 00 68 00 83 46 07 00 7D 17

-23 00 D8 00 63 05 F7 05 83 4B 07 00 61 17 23 00

-78 01 83 4A 77 00 23 00 58 01 03 4A 67 00 23 00

-48 01 03 4B 57 00 23 00 68 01 83 49 47 00 23 00

-38 01 03 43 37 00 23 00 68 00 83 46 27 00 23 00

-D8 00 83 4B 17 00 23 00 78 01 E3 1F F7 FB 4A 95

-AD B4 98 41 91 05 83 4B 07 00 63 82 0B 06 23 00

-78 01 03 49 17 00 63 0C 09 04 23 00 28 01 83 4A

-27 00 63 86 0A 04 23 00 58 01 03 4A 37 00 63 00

-0A 04 23 00 48 01 03 4B 47 00 63 0A 0B 02 23 00

-68 01 83 49 57 00 63 84 09 02 23 00 38 01 03 43

-67 00 63 0E 03 00 23 00 68 00 83 46 77 00 81 CA

-21 07 23 00 D8 00 83 4B 07 00 E3 92 0B FA 05 05

-ED BA 03 A3 05 00 01 47 91 05 BA 86 13 79 73 00

-05 07 93 0A C1 00 33 8A EA 00 13 0B 09 03 A3 0F

-6A FF 93 5B 33 00 BA 89 63 88 0B 0E 13 F9 7B 00

-BA 86 93 0A C1 00 05 07 33 8A EA 00 13 0B 09 03

-A3 0F 6A FF 93 5B 63 00 63 88 0B 0C 13 F9 7B 00

-BA 86 93 0A C1 00 13 87 29 00 33 8A EA 00 13 0B

-09 03 A3 0F 6A FF 93 5B 93 00 63 87 0B 0A 13 F9

-7B 00 BA 86 93 0A C1 00 13 87 39 00 33 8A EA 00

-13 0B 09 03 A3 0F 6A FF 93 5B C3 00 63 86 0B 08

-13 F9 7B 00 BA 86 93 0A C1 00 13 87 49 00 33 8A

-EA 00 13 0B 09 03 A3 0F 6A FF 93 5B F3 00 63 85

-0B 06 13 F9 7B 00 BA 86 93 0A C1 00 13 87 59 00

-33 8A EA 00 13 0B 09 03 A3 0F 6A FF 93 5B 23 01

-63 84 0B 04 13 F9 7B 00 BA 86 93 0A C1 00 13 87

-69 00 33 8A EA 00 13 0B 09 03 A3 0F 6A FF 93 5B

-53 01 63 83 0B 02 BA 86 13 F9 7B 00 13 87 79 00

-93 09 C1 00 B3 8A E9 00 13 0A 09 03 A3 8F 4A FF

-13 53 83 01 E3 1B 03 EE 13 0B C1 00 DA 96 B3 8B

-F6 41 93 F9 7B 00 63 89 09 06 05 49 63 8F 29 05

-89 4A 63 87 59 05 0D 4A 63 8F 49 03 11 43 63 87

-69 02 15 4B 63 8F 69 01 99 4B 63 87 79 01 83 C9

-06 00 FD 16 23 00 38 01 03 C9 06 00 FD 16 23 00

-28 01 83 CA 06 00 FD 16 23 00 58 01 03 CA 06 00

-FD 16 23 00 48 01 03 C3 06 00 FD 16 23 00 68 00

-03 CB 06 00 FD 16 23 00 68 01 83 CB 06 00 FD 16

-23 00 78 01 63 85 F6 05 83 C9 06 00 E1 16 23 00

-38 01 03 C9 76 00 23 00 28 01 83 CA 66 00 23 00

-58 01 03 CA 56 00 23 00 48 01 03 C3 46 00 23 00

-68 00 03 CB 36 00 23 00 68 01 83 CB 26 00 23 00

-78 01 83 C9 16 00 23 00 38 01 E3 9F F6 FB 3A 95

-29 B8 83 AA 05 00 91 05 56 87 63 C3 0A 26 01 49

-33 6B D7 03 13 0A C1 00 CA 89 05 09 B3 0B 2A 01

-4A 8A 33 47 D7 03 13 0B 0B 03 A3 8F 6B FF 71 CB

-33 6B D7 03 CA 89 93 0B C1 00 05 09 CA 9B 33 47

-D7 03 13 0B 0B 03 A3 8F 6B FF 45 CF 33 6B D7 03

-CA 89 93 0B C1 00 13 09 2A 00 CA 9B 33 47 D7 03

-13 0B 0B 03 A3 8F 6B FF 49 CF 33 6B D7 03 CA 89

-93 0B C1 00 13 09 3A 00 CA 9B 33 47 D7 03 13 0B

-0B 03 A3 8F 6B FF 35 CF 33 6B D7 03 CA 89 93 0B

-C1 00 13 09 4A 00 CA 9B 33 47 D7 03 13 0B 0B 03

-A3 8F 6B FF 39 CF 33 6B D7 03 CA 89 93 0B C1 00

-13 09 5A 00 CA 9B 33 47 D7 03 13 0B 0B 03 A3 8F

-6B FF 21 C3 33 6B D7 03 CA 89 93 0B C1 00 13 09

-6A 00 CA 9B 33 47 D7 03 13 0B 0B 03 A3 8F 6B FF

-0D C3 33 6B D7 03 CA 89 13 09 7A 00 13 0A C1 00

-B3 0B 2A 01 33 47 D7 03 13 0B 0B 03 A3 8F 6B FF

-01 FB 4A 87 63 55 D9 08 33 8A 26 41 93 7B 7A 00

-63 8C 0B 04 05 4B 63 84 6B 05 09 4A 63 8E 4B 03

-0D 4B 63 88 6B 03 11 4A 63 82 4B 03 15 4B 63 8C

-6B 01 19 4A 63 86 4B 01 23 00 68 00 13 07 19 00

-23 00 68 00 05 07 23 00 68 00 05 07 23 00 68 00

-05 07 23 00 68 00 05 07 23 00 68 00 05 07 23 00

-68 00 05 07 63 05 D7 02 23 00 68 00 23 00 68 00

-23 00 68 00 23 00 68 00 23 00 68 00 23 00 68 00

-23 00 68 00 23 00 68 00 21 07 E3 1F D7 FC 74 00

-33 87 36 01 33 03 F7 41 93 7B 73 00 63 89 0B 06

-05 4B 63 8F 6B 05 09 4A 63 87 4B 05 8D 46 63 8F

-DB 02 11 43 63 87 6B 02 15 4B 63 8F 6B 01 19 4A

-63 87 4B 01 83 4B 07 00 7D 17 23 00 78 01 83 46

-07 00 7D 17 23 00 D8 00 03 43 07 00 7D 17 23 00

-68 00 03 4B 07 00 7D 17 23 00 68 01 03 4A 07 00

-7D 17 23 00 48 01 83 4B 07 00 7D 17 23 00 78 01

-83 46 07 00 7D 17 23 00 D8 00 63 05 F7 05 03 43

-07 00 61 17 23 00 68 00 03 4B 77 00 23 00 68 01

-03 4A 67 00 23 00 48 01 83 4B 57 00 23 00 78 01

-83 46 47 00 23 00 D8 00 03 43 37 00 23 00 68 00

-03 4B 27 00 23 00 68 01 03 4A 17 00 23 00 48 01

-E3 1F F7 FB E3 DD 0A B4 13 89 29 00 4A 95 6F F0

-CF DB 1A 87 13 03 00 02 63 14 77 E4 6F F0 0F E7

-33 07 50 41 23 00 78 00 FD 16 51 BB 01 45 82 80

-39 71 13 03 41 02 2E D2 9A 85 06 CE 32 D4 36 D6

-3A D8 3E DA 42 DC 46 DE 1A C6 EF F0 CF D2 F2 40

-21 61 82 80 39 71 13 03 41 02 2E D2 9A 85 06 CE

-32 D4 36 D6 3A D8 3E DA 42 DC 46 DE 1A C6 EF F0

-8F D0 F2 40 21 61 82 80 19 C6 03 15 25 00 83 95

-25 00 0D 8D 82 80 83 17 05 00 13 97 07 01 93 52

-07 01 13 F3 07 F0 93 D3 82 00 33 66 73 00 23 10

-C5 00 83 96 05 00 03 15 25 00 13 98 06 01 93 58

-08 01 13 FE 06 F0 93 DE 88 00 33 6F DE 01 23 90

-E5 01 83 95 25 00 0D 8D 82 80 03 97 05 00 83 97

-25 00 23 10 E5 00 23 11 F5 00 82 80 D1 48 B3 52

-15 03 61 73 23 A0 05 00 13 07 03 08 93 87 05 01

-93 86 85 00 93 88 E2 FF 13 98 38 00 2E 98 23 A2

-05 01 13 9E 28 00 23 11 08 00 23 10 E8 00 42 9E

-13 05 48 00 63 FB 07 3F 13 07 88 00 63 77 C7 3F

-23 A4 05 00 94 C1 C8 C5 93 43 F3 FF FD 5E 23 12

-D8 01 23 13 78 00 63 8D 08 20 13 1F 06 01 E1 7F

-93 F2 38 00 13 5F 0F 01 01 45 93 CE FF FF 63 8D

-02 0C 05 43 63 84 62 08 89 43 63 8D 72 02 93 82

-87 00 63 F8 02 03 93 0F 47 00 63 F4 CF 03 13 15

-3F 00 94 C3 93 76 85 07 9C C1 13 93 86 00 D8 C3

-B3 63 D3 00 23 10 77 00 23 11 D7 01 BE 86 7E 87

-96 87 05 45 93 82 87 00 63 F1 02 05 93 03 47 00

-63 FD C3 03 93 1F 05 01 93 DF 0F 01 33 C3 EF 01

-0E 03 13 73 83 07 93 FF 7F 00 94 C3 B3 66 F3 01

-9C C1 13 93 86 00 D8 C3 B3 6F D3 00 23 10 F7 01

-23 11 D7 01 BE 86 1E 87 96 87 05 05 93 82 87 00

-63 F1 02 05 93 03 47 00 63 FD C3 03 13 13 05 01

-93 5F 03 01 33 C3 EF 01 0E 03 13 73 83 07 93 FF

-7F 00 94 C3 B3 66 F3 01 9C C1 13 93 86 00 D8 C3

-B3 6F D3 00 23 10 F7 01 23 11 D7 01 BE 86 1E 87

-96 87 05 05 63 86 A8 12 93 82 87 00 63 F1 02 05

-93 03 47 00 63 FD C3 03 13 13 05 01 93 5F 03 01

-33 C3 EF 01 0E 03 13 73 83 07 93 FF 7F 00 94 C3

-B3 66 F3 01 9C C1 13 93 86 00 D8 C3 B3 6F D3 00

-23 10 F7 01 23 11 D7 01 BE 86 1E 87 96 87 93 82

-87 00 05 05 63 F1 02 05 93 03 47 00 63 FD C3 03

-13 13 05 01 93 5F 03 01 33 C3 EF 01 0E 03 13 73

-83 07 93 FF 7F 00 94 C3 B3 66 F3 01 9C C1 13 93

-86 00 D8 C3 B3 6F D3 00 23 10 F7 01 23 11 D7 01

-BE 86 1E 87 96 87 93 82 87 00 13 03 15 00 63 F1

-02 05 93 03 47 00 63 FD C3 03 93 1F 03 01 93 DF

-0F 01 33 C3 EF 01 0E 03 13 73 83 07 93 FF 7F 00

-94 C3 B3 66 F3 01 9C C1 13 93 86 00 D8 C3 B3 6F

-D3 00 23 10 F7 01 23 11 D7 01 BE 86 1E 87 96 87

-93 82 87 00 13 03 25 00 63 F1 02 05 93 03 47 00

-63 FD C3 03 93 1F 03 01 93 DF 0F 01 33 C3 EF 01

-0E 03 13 73 83 07 93 FF 7F 00 94 C3 B3 66 F3 01

-9C C1 13 93 86 00 D8 C3 B3 6F D3 00 23 10 F7 01

-23 11 D7 01 BE 86 1E 87 96 87 0D 05 E3 9E A8 EC

-88 42 29 CD 15 48 33 DF 08 03 91 68 05 47 13 8E

-F8 FF 11 A8 03 28 05 00 23 91 EE 00 05 07 63 0F

-08 02 AA 86 42 85 83 AE 46 00 E3 65 E7 FF 93 12

-07 01 93 D3 02 01 13 83 13 00 93 1F 83 00 93 F7

-0F 70 B3 C6 C3 00 03 28 05 00 B3 E8 D7 00 B3 F2

-C8 01 23 91 5E 00 05 07 E3 15 08 FC 05 48 81 48

-01 45 81 4F 85 42 13 7F 78 00 85 0F AE 87 01 47

-63 0B 0F 04 05 46 63 03 CF 04 09 4E 63 0D CF 03

-8D 4E 63 07 DF 03 91 43 63 01 7F 02 15 43 63 0B

-6F 00 99 46 63 05 DF 00 9C 41 05 47 A5 C7 9C 43

-05 07 AD C3 9C 43 05 07 B1 CF 9C 43 05 07 B9 CB

-9C 43 05 07 A1 CB 9C 43 05 07 A9 C7 9C 43 05 07

-B1 C3 63 02 E8 0C 9C 43 05 07 3A 8F 85 CF 9C 43

-05 07 8D CB 9C 43 13 07 2F 00 8D C7 9C 43 13 07

-3F 00 8D C3 9C 43 13 07 4F 00 89 CF 9C 43 13 07

-5F 00 89 CB 9C 43 13 07 6F 00 89 C7 9C 43 13 07

-7F 00 E1 F3 AE 86 42 86 BE 85 25 C7 51 C2 C9 C1

-83 AE 46 00 03 AE 45 00 83 97 0E 00 83 13 2E 00

-03 93 2E 00 13 9F 07 01 13 5F 0F 01 13 5F 8F 00

-93 F7 07 F0 B3 E7 E7 01 23 90 FE 00 03 1F 0E 00

-33 03 73 40 93 1E 0F 01 93 D3 0E 01 93 77 0F F0

-13 DF 83 00 B3 EE E7 01 23 10 DE 01 63 5A 60 02

-2E 8E 8C 41 7D 16 63 8D 08 00 23 A0 C8 01 F2 88

-51 FF 1D C2 85 C5 2E 8E 7D 16 8C 41 E3 97 08 FE

-72 85 F2 88 F5 B7 AE 86 42 87 42 86 BE 85 B5 BF

-36 8E 7D 17 94 42 C1 BF E3 97 05 EC 23 A0 08 00

-63 89 5F 00 06 08 19 C5 AA 85 81 4F 81 48 01 45

-5D BD 82 80 23 20 00 00 02 90 B6 87 2A 87 81 46

-1D B1 03 28 06 00 93 08 88 00 63 F1 E8 04 98 42

-13 03 47 00 63 7C F3 02 23 20 16 01 1C 41 83 92

-05 00 03 96 25 00 23 20 F8 00 23 20 05 01 23 22

-E8 00 83 A3 06 00 13 85 43 00 88 C2 83 25 48 00

-42 85 23 90 55 00 23 91 C5 00 82 80 01 48 42 85

-82 80 AA 87 08 41 D4 43 50 41 18 41 D0 C3 54 C1

-98 C3 23 20 05 00 82 80 D0 41 54 41 98 41 50 C1

-D4 C1 18 C1 88 C1 82 80 03 96 25 00 63 4D 06 00

-01 E5 05 A8 08 41 05 C5 03 23 45 00 83 13 23 00

-E3 9A C3 FE 82 80 01 CD 03 97 05 00 19 A0 08 41

-01 C9 5C 41 83 C2 07 00 E3 9B E2 FE 82 80 01 45

-82 80 82 80 2D C9 1C 41 81 48 23 20 15 01 AA 86

-BD C3 98 43 94 C3 3E 85 25 C3 83 22 07 00 1C C3

-3A 85 63 8A 02 04 03 A3 02 00 23 A0 E2 00 16 85

-63 03 03 04 83 23 03 00 23 20 53 00 1A 85 63 8C

-03 02 83 A5 03 00 23 A0 63 00 1E 85 8D C5 03 A8

-05 00 23 A0 75 00 2E 85 63 0F 08 00 03 26 08 00

-23 20 B8 00 42 85 C2 88 19 C6 32 85 1C 41 23 20

-15 01 AA 86 D9 FF 82 80 82 80 79 71 22 D4 5A C8

-5E C6 66 C2 6A C0 06 D6 26 D2 4A D0 4E CE 52 CC

-56 CA 62 C4 2A 84 2E 8B 32 8D 85 4B 85 4C 63 01

-04 10 01 4C 81 44 81 4A 13 F7 7B 00 05 0C A2 87

-01 49 31 CB 85 46 63 03 D7 04 89 40 63 0D 17 02

-8D 42 63 07 57 02 11 43 63 01 67 02 95 43 63 0B

-77 00 19 45 63 05 A7 00 1C 40 05 49 A5 C7 9C 43

-05 09 AD C3 9C 43 05 09 B1 CF 9C 43 05 09 B9 CB

-9C 43 05 09 A1 CB 9C 43 05 09 A9 C7 9C 43 05 09

-B1 C3 63 81 2B 05 9C 43 05 09 CA 85 85 CF 9C 43

-05 09 8D CB 9C 43 13 89 25 00 8D C7 9C 43 13 89

-35 00 8D C3 9C 43 13 89 45 00 89 CF 9C 43 13 89

-55 00 89 CB 9C 43 13 89 65 00 89 C7 9C 43 13 89

-75 00 E1 F3 22 8A DE 89 3E 84 63 04 09 02 63 8C

-09 02 15 C8 4C 40 03 25 4A 00 6A 86 02 9B 63 54

-A0 02 22 86 00 40 FD 19 81 CC 90 C0 B2 84 E3 10

-09 FE 63 8F 09 00 11 CC 22 86 FD 19 00 40 F5 F4

-B2 8A B2 84 ED B7 52 86 7D 19 03 2A 0A 00 E9 BF

-01 FC 23 A0 04 00 63 08 9C 01 86 0B 56 84 01 B7

-23 20 00 00 02 90 B2 50 22 54 92 54 02 59 F2 49

-62 4A 42 4B B2 4B 22 4C 92 4C 02 4D 56 85 D2 4A

-45 61 82 80 1D 71 A6 CA CE C6 D2 C4 5E DE FD 74

-13 1A 07 01 86 CE A2 CC CA C8 D6 C2 DA C0 62 DC

-66 DA 6A D8 6E D6 2E C2 32 C6 AA 89 B6 8B D9 8C

-13 5A 0A 01 19 E1 6F 10 70 48 93 18 15 00 33 0F

-A0 40 B2 98 13 13 1F 00 C6 86 01 46 0A 0F 33 05

-D3 00 B3 85 A6 40 93 80 E5 FF 93 D2 10 00 93 83

-12 00 13 F4 73 00 AA 87 59 C4 05 48 63 0C 04 07

-09 49 63 02 24 07 8D 4A 63 08 54 05 11 4B 63 0E

-64 03 15 4C 63 04 84 03 99 4C 63 0A 94 01 03 5D

-05 00 93 07 25 00 33 0E AA 01 23 10 C5 01 83 DE

-07 00 89 07 B3 0F DA 01 23 9F F7 FF 83 DD 07 00

-89 07 B3 05 BA 01 23 9F B7 FE 83 D0 07 00 89 07

-B3 02 1A 00 23 9F 57 FE 83 D3 07 00 89 07 33 04

-7A 00 23 9F 87 FE 03 D8 07 00 89 07 33 09 0A 01

-23 9F 27 FF 83 DA 07 00 89 07 33 0B 5A 01 23 9F

-67 FF 63 85 D7 06 03 DC 07 00 83 DC 27 00 03 DD

-47 00 83 DF 67 00 83 DE 87 00 03 DE A7 00 83 DD

-C7 00 83 D5 E7 00 B3 00 8A 01 B3 03 9A 01 B3 02

-AA 01 33 04 FA 01 33 09 DA 01 B3 0A CA 01 33 08

-BA 01 33 0B BA 00 23 90 17 00 23 91 77 00 23 92

-57 00 23 93 87 00 23 94 27 01 23 95 57 01 23 96

-07 01 23 97 67 01 C1 07 E3 9F D7 F8 93 0E 16 00

-B3 06 E5 41 63 84 D9 01 76 86 D5 B5 92 43 33 08

-30 41 01 4F 81 4F 13 15 28 00 33 8D 68 00 B3 87

-A8 41 13 8C E7 FF 93 5C 1C 00 13 8E 1C 00 93 1D

-2F 00 93 75 7E 00 B3 87 7D 00 EA 86 D1 CD 85 40

-63 82 15 08 89 42 63 87 55 06 0D 44 63 8C 85 04

-11 49 63 81 25 05 95 4A 63 86 55 03 19 4B 63 8B

-65 01 03 1C 0D 00 93 06 2D 00 91 07 B3 0C EC 02

-23 AE 97 FF 03 9E 06 00 91 07 89 06 B3 0D EE 02

-23 AE B7 FF 83 95 06 00 91 07 89 06 B3 80 E5 02

-23 AE 17 FE 83 92 06 00 91 07 89 06 33 84 E2 02

-23 AE 87 FE 03 99 06 00 91 07 89 06 B3 0A E9 02

-23 AE 57 FF 03 9B 06 00 91 07 89 06 33 0C EB 02

-23 AE 87 FF 83 9C 06 00 91 07 89 06 33 8E EC 02

-23 AE C7 FF 63 87 16 07 83 9D 06 00 83 90 26 00

-03 9B 46 00 83 9A 66 00 03 99 86 00 03 94 A6 00

-83 92 C6 00 83 95 E6 00 B3 8C ED 02 C1 06 93 87

-07 02 33 8C E0 02 23 A0 97 FF 33 0E EB 02 23 A2

-87 FF B3 8D EA 02 23 A4 C7 FF B3 00 E9 02 23 A6

-B7 FF 33 0B E4 02 23 A8 17 FE B3 8A E2 02 23 AA

-67 FF 33 89 E5 02 23 AC 57 FF 23 AE 27 FF E3 9D

-16 F9 93 86 1F 00 76 9F B3 08 AD 40 63 84 CF 00

-B6 8F E1 B5 92 4F 13 97 2E 00 81 40 7E 97 01 4E

-81 46 81 45 0E 08 33 0D A7 00 33 03 A7 41 93 03

-C3 FF 93 DE 23 00 13 84 1E 00 93 72 34 00 6A 8F

-63 8C 02 0E 85 4C 63 8A 92 05 09 4C 63 85 82 03

-F2 8D 03 2E 0D 00 93 97 00 01 93 D0 07 01 F2 96

-63 D7 D4 1A 13 8F A0 00 93 18 0F 01 93 D0 08 41

-81 46 13 0F 4D 00 F2 8F 03 2E 0F 00 13 93 00 01

-93 53 03 01 F2 96 63 DB D4 16 93 86 A3 00 93 9C

-06 01 93 D0 0C 41 81 46 11 0F 72 8C 03 2E 0F 00

-93 9D 00 01 93 D7 0D 01 F2 96 63 DC D4 12 93 88

-A7 00 93 9F 08 01 13 93 08 01 93 DE 0F 01 93 50

-03 41 81 46 11 0F 63 19 E7 07 93 8D 15 00 33 07

-0D 41 63 07 B6 14 EE 85 B9 B7 83 22 4F 00 93 8E

-AA 00 13 94 0E 01 93 53 04 41 01 49 13 9E 03 01

-B3 06 59 00 93 5C 0E 01 63 DF D4 08 03 2E 8F 00

-93 87 AC 00 93 9A 07 01 13 DB 0A 41 81 46 13 19

-0B 01 F2 96 93 58 09 01 63 D0 D4 0A 93 82 A8 00

-93 9C 02 01 13 9C 02 01 93 DE 0C 01 93 50 0C 41

-81 46 31 0F E3 0B E7 F9 83 23 0F 00 93 9E 00 01

-13 D4 0E 01 B3 80 76 00 63 C5 14 08 33 2E 7E 00

-B3 02 C4 01 93 9C 02 01 93 DD 0C 41 03 2B 4F 00

-93 97 0D 01 11 0F 33 89 60 01 93 DA 07 01 E3 C6

-24 F7 B3 A8 63 01 83 22 4F 00 B3 8F 1A 01 13 93

-0F 01 93 53 03 41 13 9E 03 01 B3 06 59 00 93 5C

-0E 01 E3 C5 D4 F6 33 2C 5B 00 03 2E 8F 00 B3 8D

-8C 01 93 90 0D 01 13 DB 00 41 13 19 0B 01 F2 96

-93 58 09 01 E3 C4 D4 F6 B3 AF C2 01 33 83 F8 01

-93 13 03 01 13 14 03 01 93 DE 03 01 93 50 04 41

-8D B7 93 06 A4 00 13 9C 06 01 93 5D 0C 41 81 40

-B5 BF B3 20 CC 01 33 8B 17 00 93 1A 0B 01 13 19

-0B 01 93 DE 0A 01 93 50 09 41 E9 B5 B3 AE CF 01

-33 84 D3 01 93 12 04 01 93 D0 02 41 71 B5 33 AB

-CD 01 B3 8A 60 01 13 99 0A 01 93 50 09 41 91 BD

-A9 67 93 F5 10 00 13 FD F0 0F 93 8A 17 00 33 0B

-B0 40 33 FE 6A 01 13 59 1D 00 B3 48 2E 01 93 F6

-18 00 13 D7 8E 00 93 57 2D 00 93 5D 1E 00 91 CA

-E9 7F 13 83 1F 00 B3 C3 6D 00 93 9E 03 01 93 DD

-0E 01 33 C4 B7 01 93 70 14 00 93 D2 17 00 13 D8

-1D 00 63 8B 00 00 E9 7C 13 8C 1C 00 33 4F 88 01

-13 15 0F 01 13 58 05 01 33 C6 02 01 93 75 16 00

-13 DD 27 00 13 59 18 00 91 C9 69 7B 93 0A 1B 00

-B3 4D 59 01 13 9E 0D 01 13 59 0E 01 B3 48 A9 01

-93 F6 18 00 93 DF 37 00 93 50 19 00 91 CA 69 73

-93 03 13 00 B3 CE 70 00 13 94 0E 01 93 50 04 01

-B3 C2 F0 01 93 FC 12 00 13 DC 47 00 93 D5 10 00

-63 8B 0C 00 69 7F 13 05 1F 00 33 C8 A5 00 13 16

-08 01 93 55 06 01 33 4D BC 00 13 7B 1D 00 95 83

-93 D8 15 00 63 0B 0B 00 E9 7A 13 8E 1A 00 B3 CD

-C8 01 13 99 0D 01 93 58 09 01 93 F6 18 00 13 D4

-18 00 63 8B F6 00 E9 7F 13 83 1F 00 B3 43 64 00

-93 9E 03 01 13 D4 0E 01 B3 40 87 00 93 F2 10 00

-93 5C 17 00 13 56 14 00 63 8B 02 00 69 7C 13 0F

-1C 00 33 45 E6 01 13 18 05 01 13 56 08 01 B3 C5

-CC 00 13 FD 15 00 13 5B 27 00 13 59 16 00 63 0B

-0D 00 E9 77 93 8A 17 00 33 4E 59 01 93 1D 0E 01

-13 D9 0D 01 B3 48 69 01 93 FF 18 00 93 56 37 00

-93 50 19 00 63 8B 0F 00 69 73 93 03 13 00 B3 CE

-70 00 13 94 0E 01 93 50 04 01 B3 C2 D0 00 93 FC

-12 00 13 5C 47 00 93 D5 10 00 63 8B 0C 00 69 7F

-13 05 1F 00 33 C8 A5 00 13 16 08 01 93 55 06 01

-33 4D BC 00 13 7B 1D 00 93 5A 57 00 93 D8 15 00

-63 0B 0B 00 E9 77 13 8E 17 00 B3 CD C8 01 13 99

-0D 01 93 58 09 01 B3 CF 1A 01 93 F6 1F 00 13 53

-67 00 93 D2 18 00 91 CA E9 73 93 8E 13 00 33 C4

-D2 01 93 10 04 01 93 D2 00 01 B3 4C 53 00 13 FC

-1C 00 1D 83 93 D5 12 00 63 0B 0C 00 69 7F 13 05

-1F 00 33 C8 A5 00 13 16 08 01 93 55 06 01 13 FD

-15 00 93 DD 15 00 63 0B ED 00 69 7B 93 0A 1B 00

-B3 C7 5D 01 13 9E 07 01 93 5D 0E 01 63 94 09 00

-6F 10 60 5C 92 4C 13 94 29 00 81 45 22 86 66 85

-EF 50 B0 7B 32 4D 93 9F 19 00 66 85 B3 05 94 01

-B3 82 7F 01 81 43 26 C4 B3 84 72 41 13 83 E4 FF

-93 5E 13 00 93 80 1E 00 13 9C 13 00 13 F7 70 00

-B3 06 8D 01 5E 86 81 47 45 C7 05 4F 63 07 E7 09

-09 48 63 0B 07 07 0D 4B 63 0F 67 05 91 4A 63 03

-57 05 15 4E 63 07 C7 03 19 49 63 0B 27 01 83 98

-06 00 83 97 0B 00 89 06 13 86 2B 00 B3 87 F8 02

-03 94 06 00 83 1C 06 00 89 06 09 06 B3 0F 94 03

-FE 97 83 94 06 00 03 13 06 00 89 06 09 06 B3 8E

-64 02 F6 97 83 90 06 00 03 1C 06 00 89 06 09 06

-33 87 80 03 BA 97 03 9F 06 00 03 18 06 00 89 06

-09 06 33 0B 0F 03 DA 97 83 9A 06 00 03 1E 06 00

-89 06 09 06 33 89 CA 03 CA 97 83 98 06 00 03 14

-06 00 09 06 89 06 B3 8C 88 02 E6 97 63 06 56 08

-83 9F 06 00 03 13 06 00 83 90 26 00 83 1A 26 00

-33 87 6F 02 83 94 46 00 03 1C 46 00 83 9E 66 00

-03 1B 66 00 03 9E 86 00 03 19 86 00 83 9C A6 00

-03 14 A6 00 83 98 C6 00 33 83 50 03 B3 80 E7 00

-83 1F C6 00 03 98 E6 00 03 1F E6 00 41 06 C1 06

-B3 87 84 03 B3 8A 60 00 B3 84 6E 03 33 8C FA 00

-B3 0E 2E 03 33 0B 9C 00 33 87 8C 02 33 0E DB 01

-33 89 F8 03 B3 0C EE 00 33 04 E8 03 B3 88 2C 01

-B3 87 88 00 E3 1E 56 F6 1C C1 11 05 CE 93 E3 95

-A5 EA A2 44 B3 02 30 41 13 95 22 00 81 47 01 43

-01 48 81 46 13 96 32 00 33 8D A5 00 B3 8F A5 41

-13 8F CF FF 93 50 2F 00 93 8A 10 00 13 FC 3A 00

-EA 8E 63 02 0C 52 05 4B 63 09 6C 05 09 47 63 04

-EC 02 9A 8E 03 23 0D 00 C2 07 13 DE 07 01 1A 98

-63 DF 04 5D 13 08 AE 00 93 18 08 01 93 D7 08 41

-01 48 93 0E 4D 00 9A 83 03 A3 0E 00 93 92 07 01

-93 DF 02 01 1A 98 63 D3 04 5B 13 8C AF 00 13 1B

-0C 01 93 57 0B 41 01 48 91 0E 1A 87 03 A3 0E 00

-C2 07 13 DE 07 01 1A 98 63 D5 04 57 13 08 AE 00

-93 13 08 01 93 12 08 01 93 D0 03 01 93 D7 02 41

-01 48 91 0E 63 91 D5 4B 85 06 B3 05 CD 40 E3 9D

-D9 F4 93 F8 F7 0F 13 D9 80 00 33 CD B8 01 13 7E

-1D 00 93 DC 18 00 93 D2 1D 00 63 0B 0E 00 69 74

-13 03 14 00 B3 C3 62 00 13 98 03 01 93 52 08 01

-B3 CF 5C 00 13 FF 1F 00 93 D0 28 00 13 D7 12 00

-63 0B 0F 00 E9 7A 13 8C 1A 00 B3 47 87 01 13 9B

-07 01 13 57 0B 01 B3 CE E0 00 13 F5 1E 00 93 DD

-38 00 13 5E 17 00 11 C9 69 76 93 06 16 00 B3 45

-DE 00 13 9D 05 01 13 5E 0D 01 B3 CC CD 01 13 F4

-1C 00 13 D3 48 00 13 5F 1E 00 11 C8 E9 73 13 88

-13 00 B3 42 0F 01 93 9F 02 01 13 DF 0F 01 B3 40

-E3 01 93 FA 10 00 13 DC 58 00 13 55 1F 00 63 8B

-0A 00 69 7B 13 07 1B 00 B3 47 E5 00 93 9E 07 01

-13 D5 0E 01 B3 4D AC 00 93 F6 1D 00 13 D6 68 00

-13 54 15 00 91 CA E9 75 13 8D 15 00 33 4E A4 01

-93 1C 0E 01 13 D4 0C 01 33 43 86 00 93 73 13 00

-93 D8 78 00 93 50 14 00 63 8B 03 00 69 78 93 02

-18 00 B3 CF 50 00 13 9F 0F 01 93 50 0F 01 93 FA

-10 00 93 DE 10 00 63 8B 1A 01 69 7C 13 0B 1C 00

-33 C7 6E 01 93 17 07 01 93 DE 07 01 33 C5 2E 01

-93 7D 15 00 13 56 19 00 93 DC 1E 00 63 8B 0D 00

-E9 76 93 85 16 00 33 CD BC 00 13 1E 0D 01 93 5C

-0E 01 33 C4 CC 00 13 73 14 00 93 53 29 00 13 DF

-1C 00 63 0B 03 00 E9 78 13 88 18 00 B3 42 0F 01

-93 9F 02 01 13 DF 0F 01 B3 40 7F 00 93 FA 10 00

-13 5C 39 00 13 55 1F 00 63 8B 0A 00 69 7B 13 07

-1B 00 B3 47 E5 00 93 9E 07 01 13 D5 0E 01 B3 4D

-AC 00 13 F6 1D 00 93 56 49 00 13 54 15 00 11 CA

-E9 75 13 8D 15 00 33 4E A4 01 93 1C 0E 01 13 D4

-0C 01 33 C3 86 00 93 73 13 00 93 58 59 00 93 50

-14 00 63 8B 03 00 69 78 93 02 18 00 B3 CF 50 00

-13 9F 0F 01 93 50 0F 01 B3 CA 18 00 13 FC 1A 00

-13 5B 69 00 93 DD 10 00 63 0B 0C 00 69 77 93 0E

-17 00 B3 C7 DD 01 13 95 07 01 93 5D 05 01 33 46

-BB 01 93 76 16 00 13 59 79 00 13 D4 1D 00 91 CA

-E9 75 13 8D 15 00 33 4E A4 01 93 1C 0E 01 13 D4

-0C 01 93 53 14 00 13 73 14 00 1E C8 63 0C 23 01

-E9 78 13 88 18 00 B3 C2 03 01 93 9F 02 01 13 DF

-0F 01 7A C8 81 4A 81 42 63 88 09 32 B2 40 13 9C

-29 00 13 94 19 00 01 47 52 CE 5E C4 86 8A 33 09

-14 00 62 CA 01 4B 26 CC 3A 8A E2 8B 92 4E 93 14

-2A 00 5E 86 33 85 D4 01 81 45 EF 50 10 30 A2 4F

-2A 8F 01 45 B3 07 59 41 93 8D E7 FF 13 D6 1D 00

-93 06 16 00 13 FD 76 00 7E 86 D6 86 81 47 63 06

-0D 0A 85 45 63 08 BD 08 09 4E 63 0C CD 07 8D 4C

-63 00 9D 07 11 43 63 04 6D 04 95 43 63 08 7D 02

-99 48 63 0C 1D 01 03 98 0A 00 83 92 0F 00 93 86

-2A 00 33 86 8F 00 B3 07 58 02 83 90 06 00 03 1C

-06 00 89 06 22 96 33 87 80 03 BA 97 83 94 06 00

-83 1E 06 00 89 06 22 96 B3 8D D4 03 EE 97 03 9D

-06 00 83 15 06 00 89 06 22 96 33 0E BD 02 F2 97

-83 9C 06 00 03 13 06 00 89 06 22 96 B3 83 6C 02

-9E 97 83 98 06 00 03 18 06 00 89 06 22 96 B3 82

-08 03 96 97 83 90 06 00 03 1C 06 00 89 06 22 96

-33 87 80 03 BA 97 63 03 D9 0A B3 04 86 00 83 9C

-06 00 03 13 06 00 B3 8E 84 00 03 9E 04 00 03 9D

-26 00 B3 83 8E 00 83 90 46 00 83 9D 0E 00 33 87

-6C 02 B3 85 83 00 83 9E 66 00 83 9C 03 00 33 88

-85 00 03 93 86 00 03 9C 05 00 83 98 A6 00 83 13

-08 00 B3 02 88 00 33 0D CD 03 03 98 C6 00 33 86

-82 00 83 92 02 00 83 95 E6 00 03 1E 06 00 BA 97

-C1 06 22 96 B3 84 B0 03 B3 80 A7 01 B3 8D 9E 03

-B3 8E 90 00 B3 0C 83 03 33 87 BE 01 33 83 78 02

-33 0C 97 01 B3 08 58 02 B3 03 6C 00 33 88 C5 03

-33 8D 13 01 B3 07 0D 01 E3 11 D9 F6 23 20 FF 00

-93 06 15 00 11 0F 89 0F 63 84 D9 12 36 85 59 B5

-33 23 F3 01 03 A9 4E 00 B3 8A 60 00 13 9C 0A 01

-93 57 0C 41 93 9C 07 01 B3 08 2E 01 91 0E 13 D4

-0C 01 63 DE 14 09 83 AA 4E 00 13 0F A4 00 93 10

-0F 01 93 DF 00 41 81 48 13 93 0F 01 33 8B 58 01

-13 5C 03 01 63 DF 64 09 03 A3 8E 00 93 0C AC 00

-13 94 0C 01 13 59 04 41 01 4B 93 18 09 01 33 08

-6B 00 93 D3 08 01 63 D0 04 0B 13 8C A3 00 13 1B

-0C 01 13 17 0C 01 93 50 0B 01 93 57 07 41 01 48

-B1 0E E3 83 D5 B7 83 AF 0E 00 13 9F 07 01 93 50

-0F 01 33 0E F8 01 E3 D5 C4 F7 03 A9 4E 00 13 8B

-A0 00 13 17 0B 01 93 57 07 41 01 4E 93 9C 07 01

-B3 08 2E 01 91 0E 13 D4 0C 01 E3 C6 14 F7 33 A8

-2F 01 83 AA 4E 00 B3 03 04 01 93 92 03 01 93 DF

-02 41 13 93 0F 01 33 8B 58 01 13 5C 03 01 E3 C5

-64 F7 33 27 59 01 03 A3 8E 00 B3 07 EC 00 13 9E

-07 01 13 59 0E 41 93 18 09 01 33 08 6B 00 93 D3

-08 01 E3 C4 04 F7 B3 A2 6A 00 B3 8F 53 00 13 9F

-0F 01 93 9A 0F 01 93 50 0F 01 93 D7 0A 41 8D B7

-13 0F 1B 00 A2 9A 4E 9A 22 99 63 00 AB 7E 7A 8B

-35 BB 33 29 67 00 B3 0C 2E 01 13 94 0C 01 93 98

-0C 01 93 50 04 01 93 D7 08 41 61 BC 33 AF 63 00

-B3 80 EF 01 93 9A 00 01 93 D7 0A 41 B1 BC 33 A9

-6E 00 B3 0C 2E 01 13 94 0C 01 93 57 04 41 15 B4

-93 72 FD 0F 93 DA 8E 00 C2 47 93 DF 12 00 33 C9

-57 00 13 7E 19 00 93 DC 17 00 63 0B 0E 00 E9 76

-93 80 16 00 B3 CD 1C 00 93 9E 0D 01 93 DC 0E 01

-33 CD 9F 01 13 73 1D 00 13 DC 22 00 13 D8 1C 00

-63 0B 03 00 E9 78 13 8F 18 00 33 45 E8 01 93 15

-05 01 13 D8 05 01 B3 43 0C 01 13 F7 13 00 13 D6

-32 00 13 5E 18 00 11 CB 69 7B 93 07 1B 00 33 44

-FE 00 13 19 04 01 13 5E 09 01 B3 4F CE 00 93 F0

-1F 00 93 D6 42 00 13 53 1E 00 63 8B 00 00 E9 7D

-93 8E 1D 00 B3 4C D3 01 13 9D 0C 01 13 53 0D 01

-33 4C D3 00 93 78 1C 00 13 DF 52 00 13 57 13 00

-63 8B 08 00 69 75 93 05 15 00 33 48 B7 00 93 13

-08 01 13 D7 03 01 33 46 E7 01 13 7B 16 00 93 D7

-62 00 93 50 17 00 63 0B 0B 00 69 79 13 0E 19 00

-33 C4 C0 01 93 1F 04 01 93 D0 0F 01 B3 C6 F0 00

-93 FD 16 00 93 D2 72 00 13 DC 10 00 63 8B 0D 00

-E9 7E 93 8C 1E 00 33 4D 9C 01 13 13 0D 01 13 5C

-03 01 93 78 1C 00 93 53 1C 00 63 8B 58 00 69 7F

-13 05 1F 00 B3 C5 A3 00 13 98 05 01 93 53 08 01

-33 C7 53 01 13 76 17 00 13 DB 1A 00 93 DF 13 00

-11 CA E9 77 13 89 17 00 33 CE 2F 01 13 14 0E 01

-93 5F 04 01 B3 40 FB 01 93 F6 10 00 93 DD 2A 00

-13 D3 1F 00 91 CA E9 72 93 8E 12 00 B3 4C D3 01

-13 9D 0C 01 13 53 0D 01 33 4C B3 01 93 78 1C 00

-13 DF 3A 00 13 56 13 00 63 8B 08 00 69 75 93 05

-15 00 33 48 B6 00 93 13 08 01 13 D6 03 01 33 47

-E6 01 13 7B 17 00 93 D7 4A 00 93 50 16 00 63 0B

-0B 00 69 79 13 0E 19 00 33 C4 C0 01 93 1F 04 01

-93 D0 0F 01 B3 C6 17 00 93 FD 16 00 93 D2 5A 00

-13 DC 10 00 63 8B 0D 00 E9 7E 93 8C 1E 00 33 4D

-9C 01 13 13 0D 01 13 5C 03 01 B3 C8 82 01 13 FF

-18 00 13 D5 6A 00 13 5B 1C 00 63 0B 0F 00 E9 75

-13 88 15 00 B3 43 0B 01 13 96 03 01 13 5B 06 01

-33 47 AB 00 13 79 17 00 93 DA 7A 00 93 50 1B 00

-63 0B 09 00 E9 77 13 8E 17 00 33 C4 C0 01 93 1F

-04 01 93 D0 0F 01 93 F6 10 00 13 D4 10 00 63 8B

-56 01 E9 7D 93 82 1D 00 B3 4E 54 00 93 9C 0E 01

-13 D4 0C 01 81 4D 81 46 63 80 09 1A 32 4D 92 4D

-93 9A 19 00 6A 8C 33 8B AA 01 13 99 29 00 81 4C

-01 4D 13 93 2C 00 81 45 33 05 B3 01 4A 86 EF 50

-C0 58 AA 86 81 45 5E 85 B3 08 8B 41 13 8F E8 FF

-13 58 1F 00 93 03 18 00 13 F6 33 00 2A 83 E2 88

-81 4E 59 C2 05 47 63 0C E6 04 89 47 63 06 F6 02

-03 1E 0C 00 83 1F 05 00 93 08 2C 00 33 03 55 01

-B3 00 FE 03 93 DE 50 40 93 D2 20 40 13 FF F2 00

-13 F8 FE 07 B3 0E 0F 03 83 93 08 00 03 16 03 00

-89 08 56 93 B3 87 C3 02 13 D7 27 40 13 DE 57 40

-93 7F F7 00 93 70 FE 07 B3 82 1F 02 96 9E 03 9F

-08 00 03 18 03 00 89 08 56 93 B3 03 0F 03 13 D6

-23 40 93 D7 53 40 13 77 F6 00 13 FE F7 07 B3 0F

-C7 03 FE 9E 63 03 1B 0B B3 00 53 01 03 9F 08 00

-03 18 03 00 33 86 50 01 83 93 28 00 03 97 00 00

-03 1E 06 00 33 03 56 01 83 92 48 00 B3 0F 0F 03

-83 17 03 00 83 90 68 00 A1 08 56 93 33 8F E3 02

-13 D8 5F 40 93 D3 2F 40 13 F7 F3 00 93 73 F8 07

-B3 82 C2 03 13 56 5F 40 13 5E 2F 40 93 7F FE 00

-13 76 F6 07 B3 80 F0 02 13 D8 52 40 93 D7 22 40

-13 FF F7 00 93 72 F8 07 33 07 77 02 13 DE 50 40

-93 D3 20 40 93 F0 F3 00 93 77 FE 07 B3 8F CF 02

-BA 9E 33 06 5F 02 33 88 FE 01 33 8F F0 02 B3 02

-C8 00 B3 8E E2 01 E3 11 1B F7 23 A0 D6 01 93 88

-15 00 91 06 09 05 63 84 19 01 C6 85 75 B5 93 06

-1D 00 56 9C CE 9C 56 9B 63 81 A5 5F 36 8D 51 B5

-93 F6 FA 0F 93 5D 8B 00 B3 C0 86 00 13 F3 10 00

-93 DF 16 00 93 52 14 00 63 0B 03 00 69 7E 93 0E

-1E 00 33 CF D2 01 93 18 0F 01 93 D2 08 01 33 CC

-5F 00 93 7C 1C 00 13 DB 26 00 93 D4 12 00 63 8B

-0C 00 69 77 13 08 17 00 B3 C7 04 01 13 94 07 01

-93 54 04 01 33 45 9B 00 13 76 15 00 93 D5 36 00

-93 DB 14 00 11 CA E9 73 13 8D 13 00 33 C9 AB 01

-93 1A 09 01 93 DB 0A 01 B3 C0 75 01 13 F3 10 00

-93 DF 46 00 93 D2 1B 00 63 0B 03 00 69 7E 93 0E

-1E 00 33 CF D2 01 93 18 0F 01 93 D2 08 01 33 CC

-5F 00 93 7C 1C 00 13 DB 56 00 93 D4 12 00 63 8B

-0C 00 69 77 13 08 17 00 B3 C7 04 01 13 94 07 01

-93 54 04 01 33 C5 64 01 93 75 15 00 13 D6 66 00

-93 DB 14 00 91 C9 E9 73 13 8D 13 00 33 C9 AB 01

-93 1A 09 01 93 DB 0A 01 B3 C0 CB 00 13 F3 10 00

-9D 82 93 D8 1B 00 63 0B 03 00 E9 7F 13 8E 1F 00

-B3 CE C8 01 13 9F 0E 01 93 58 0F 01 93 F2 18 00

-13 D8 18 00 63 8B D2 00 69 7C 93 0C 1C 00 33 4B

-98 01 13 17 0B 01 13 58 07 01 B3 C7 0D 01 13 F4

-17 00 93 D4 1D 00 13 5D 18 00 11 C8 69 75 93 05

-15 00 33 46 BD 00 93 13 06 01 13 DD 03 01 33 C9

-A4 01 93 7A 19 00 93 DB 2D 00 13 5E 1D 00 63 8B

-0A 00 E9 70 13 83 10 00 B3 46 6E 00 93 9F 06 01

-13 DE 0F 01 B3 CE CB 01 13 FF 1E 00 93 D8 3D 00

-13 57 1E 00 63 0B 0F 00 E9 72 13 8C 12 00 B3 4C

-87 01 13 9B 0C 01 13 57 0B 01 33 C8 E8 00 13 74

-18 00 93 D4 4D 00 93 53 17 00 11 C8 69 75 93 05

-15 00 B3 C7 B3 00 13 96 07 01 93 53 06 01 33 CD

-74 00 13 79 1D 00 93 DA 5D 00 93 DF 13 00 63 0B

-09 00 E9 7B 93 80 1B 00 33 C3 1F 00 93 16 03 01

-93 DF 06 01 33 CE 5F 01 93 7E 1E 00 13 DF 6D 00

-13 DB 1F 00 63 8B 0E 00 E9 78 93 82 18 00 33 4C

-5B 00 93 1C 0C 01 13 DB 0C 01 33 47 6F 01 13 78

-17 00 93 DD 7D 00 93 57 1B 00 63 0B 08 00 69 74

-93 04 14 00 33 C5 97 00 93 15 05 01 93 D7 05 01

-13 F6 17 00 13 D5 17 00 63 0B B6 01 E9 73 13 8D

-13 00 33 49 A5 01 93 1A 09 01 13 D5 0A 01 63 8B

-09 12 32 43 B3 0B 30 41 93 90 19 00 B3 06 13 00

-93 92 1B 00 01 4F 93 9F 2B 00 33 8C 56 00 33 8E

-86 41 93 0E EE FF 93 D8 1E 00 93 8C 18 00 13 FB

-7C 00 E2 87 63 08 0B 08 05 47 63 0C EB 06 09 48

-63 02 0B 07 8D 4D 63 08 BB 05 11 44 63 0E 8B 02

-95 44 63 04 9B 02 99 45 63 0A BB 00 03 56 0C 00

-93 07 2C 00 B3 03 46 41 23 10 7C 00 03 DD 07 00

-89 07 33 09 4D 41 23 9F 27 FF 83 DA 07 00 89 07

-B3 8B 4A 41 23 9F 77 FF 83 D0 07 00 89 07 33 83

-40 41 23 9F 67 FE 03 DE 07 00 89 07 B3 0E 4E 41

-23 9F D7 FF 83 D8 07 00 89 07 B3 8C 48 41 23 9F

-97 FF 03 DB 07 00 89 07 33 07 4B 41 23 9F E7 FE

-63 85 D7 06 83 DD 07 00 03 D4 27 00 83 D4 47 00

-03 D6 67 00 03 DD 87 00 03 D8 A7 00 83 D5 C7 00

-03 D9 E7 00 B3 83 4D 41 B3 0A 44 41 B3 8B 44 41

-B3 00 46 41 33 03 4D 41 33 0E 48 41 B3 8E 45 41

-B3 08 49 41 23 90 77 00 23 91 57 01 23 92 77 01

-23 93 17 00 23 94 67 00 23 95 C7 01 23 96 D7 01

-23 97 17 01 C1 07 E3 9F D7 F8 05 0F B3 06 FC 41

-E3 95 E9 EF F6 40 66 44 13 1C 05 01 D6 44 46 49

-B6 49 26 4A 96 4A 06 4B F2 5B D2 5C 42 5D B2 5D

-13 55 0C 41 62 5C 25 61 82 80 12 44 D2 4F E2 44

-72 4A A2 4B 33 0B 30 41 33 07 F4 01 13 18 2B 00

-01 4D 01 4E 81 46 01 46 93 15 3B 00 B3 02 07 01

-B3 00 57 40 93 8D C0 FF 93 DE 2D 00 93 8C 1E 00

-13 F3 3C 00 16 8F 63 0F 03 10 05 4C 63 0A 83 05

-89 48 63 05 13 03 F2 83 03 AE 02 00 93 17 0D 01

-13 DD 07 01 F2 96 63 D1 D4 1C 13 0B AD 00 13 14

-0B 01 13 5D 04 41 81 46 13 8F 42 00 F2 8F 03 2E

-0F 00 93 10 0D 01 93 DD 00 01 F2 96 63 D5 D4 18

-93 86 AD 00 13 9C 06 01 13 5D 0C 41 81 46 11 0F

-F2 88 03 2E 0F 00 93 13 0D 01 93 D7 03 01 F2 96

-63 D6 D4 14 13 84 A7 00 93 1F 04 01 93 10 04 01

-93 DE 0F 01 13 DD 00 41 81 46 11 0F 63 1C E7 09

-93 03 16 00 33 87 B2 40 63 0C C5 F8 1E 86 B9 B7

-33 2E BE 01 83 2A 4F 00 33 83 CC 01 13 1C 03 01

-93 53 0C 41 93 97 03 01 33 0B 5D 01 11 0F 13 D9

-07 01 63 DD 64 09 03 23 4F 00 93 0E A9 00 93 9C

-0E 01 93 DD 0C 41 01 4B 13 9E 0D 01 B3 06 6B 00

-13 5C 0E 01 63 DE D4 08 03 2E 8F 00 93 07 AC 00

-13 99 07 01 93 5A 09 41 81 46 13 9B 0A 01 F2 96

-13 54 0B 01 63 DF D4 08 13 03 A4 00 13 1C 03 01

-93 18 03 01 93 5E 0C 01 13 DD 08 41 81 46 31 0F

-E3 08 E7 F7 83 2D 0F 00 93 1E 0D 01 93 DC 0E 01

-33 8D B6 01 E3 D6 A4 F7 83 2A 4F 00 93 86 AC 00

-93 98 06 01 93 D3 08 41 01 4D 93 97 03 01 33 0B

-5D 01 11 0F 13 D9 07 01 E3 C7 64 F7 33 A4 5D 01

-03 23 4F 00 B3 0F 89 00 93 90 0F 01 93 DD 00 41

-13 9E 0D 01 B3 06 6B 00 13 5C 0E 01 E3 C6 D4 F6

-B3 A8 6A 00 03 2E 8F 00 B3 03 1C 01 13 9D 03 01

-93 5A 0D 41 13 9B 0A 01 F2 96 13 54 0B 01 E3 C5

-D4 F6 B3 2F C3 01 B3 00 F4 01 93 9D 00 01 93 9C

-00 01 93 DE 0D 01 13 DD 0C 41 95 B7 33 AD C8 01

-B3 8A A7 01 13 99 0A 01 13 9B 0A 01 93 5E 09 01

-13 5D 0B 41 5D BD B3 AE CF 01 B3 8C DD 01 13 93

-0C 01 13 5D 03 41 A5 BD 33 AF C3 01 B3 0A ED 01

-13 99 0A 01 13 5D 09 41 81 B5 92 4A B3 0B 30 41

-13 95 2B 00 56 99 01 4E 81 4A 81 48 81 46 13 96

-3B 00 B3 0D A9 00 33 0D B9 41 13 03 CD FF 13 57

-23 00 93 03 17 00 93 F0 73 00 6E 88 63 88 00 24

-85 4F 63 8E F0 0F 89 4E 63 89 D0 0D 0D 4F 63 84

-E0 0B 91 42 63 8F 50 06 15 4C 63 8A 80 05 99 4C

-63 85 90 03 72 88 03 AE 0D 00 93 97 0A 01 13 DB

-07 01 F2 98 63 DB 14 3B 93 08 AB 00 13 93 08 01

-93 5A 03 41 81 48 13 88 4D 00 72 87 03 2E 08 00

-93 93 0A 01 93 D0 03 01 F2 98 63 DF 14 37 93 82

-A0 00 13 9C 02 01 93 5A 0C 41 81 48 11 08 F2 8C

-03 2E 08 00 93 97 0A 01 13 DB 07 01 F2 98 63 D4

-14 35 93 08 AB 00 13 93 08 01 93 5A 03 41 81 48

-11 08 72 87 03 2E 08 00 93 93 0A 01 93 D0 03 01

-F2 98 63 D9 14 31 93 82 A0 00 13 9C 02 01 93 5A

-0C 41 81 48 11 08 F2 8C 03 2E 08 00 93 97 0A 01

-13 DB 07 01 F2 98 63 DE 14 2D 93 08 AB 00 13 93

-08 01 93 5A 03 41 81 48 11 08 72 87 03 2E 08 00

-93 93 0A 01 93 D0 03 01 F2 98 63 D3 14 2B 93 82

-A0 00 13 9C 02 01 93 5A 0C 41 81 48 11 08 F2 8C

-03 2E 08 00 93 97 0A 01 13 DB 07 01 F2 98 63 D4

-14 27 93 08 AB 00 13 93 08 01 93 93 08 01 13 5B

-03 01 93 DA 03 41 81 48 11 08 63 11 28 13 93 83

-16 00 33 89 CD 40 E3 8D D5 8A 9E 86 5D B5 33 2E

-1E 00 83 2B 48 00 33 8F CE 01 93 12 0F 01 93 D7

-02 41 93 9A 07 01 33 07 7B 01 11 08 13 DD 0A 01

-63 D2 E4 12 03 2F 48 00 93 0F AD 00 93 9E 0F 01

-93 D0 0E 41 01 47 13 9E 00 01 33 0C E7 01 93 52

-0E 01 63 D3 84 13 03 27 88 00 93 8A A2 00 13 9D

-0A 01 93 5B 0D 41 01 4C 93 98 0B 01 B3 00 EC 00

-93 D3 08 01 63 D4 14 12 03 2C C8 00 13 8E A3 00

-93 12 0E 01 13 DF 02 41 81 40 93 1C 0F 01 33 8B

-80 01 93 D7 0C 01 63 D5 64 13 83 20 08 01 93 88

-A7 00 93 93 08 01 13 D7 03 41 01 4B 13 13 07 01

-B3 0E 1B 00 93 5F 03 01 63 D6 D4 13 03 2B 48 01

-93 8C AF 00 93 97 0C 01 13 DC 07 41 81 4E 93 1B

-0C 01 33 8D 6E 01 93 DA 0B 01 63 D7 A4 13 03 2E

-88 01 13 83 AA 00 93 1F 03 01 93 D0 0F 41 01 4D

-93 9E 00 01 B3 08 CD 01 13 DF 0E 01 63 D8 14 13

-93 0B AF 00 13 9D 0B 01 13 97 0B 01 13 5B 0D 01

-93 5A 07 41 81 48 71 08 E3 03 28 EF 83 20 08 00

-93 9F 0A 01 93 DE 0F 01 33 8B 18 00 E3 D1 64 EF

-83 2B 48 00 13 8C AE 00 93 1C 0C 01 93 D7 0C 41

-01 4B 93 9A 07 01 33 07 7B 01 11 08 13 DD 0A 01

-E3 C2 E4 EE B3 A8 70 01 03 2F 48 00 33 03 1D 01

-93 13 03 01 93 D0 03 41 13 9E 00 01 33 0C E7 01

-93 52 0E 01 E3 C1 84 EF B3 AC EB 01 03 27 88 00

-B3 87 92 01 13 9B 07 01 93 5B 0B 41 93 98 0B 01

-B3 00 EC 00 93 D3 08 01 E3 C0 14 EE 33 23 EF 00

-03 2C C8 00 B3 8F 63 00 93 9E 0F 01 13 DF 0E 41

-93 1C 0F 01 33 8B 80 01 93 D7 0C 01 E3 CF 64 ED

-B3 2B 87 01 83 20 08 01 B3 8A 77 01 13 9D 0A 01

-13 57 0D 41 13 13 07 01 B3 0E 1B 00 93 5F 03 01

-E3 CE D4 ED 33 2F 1C 00 03 2B 48 01 33 8E EF 01

-93 12 0E 01 13 DC 02 41 93 1B 0C 01 33 8D 6E 01

-93 DA 0B 01 E3 CD A4 ED 33 A7 60 01 B3 88 EA 00

-03 2E 88 01 93 93 08 01 93 D0 03 41 93 9E 00 01

-B3 08 CD 01 13 DF 0E 01 E3 CC 14 ED B3 22 CB 01

-33 0C 5F 00 93 1C 0C 01 93 17 0C 01 13 DB 0C 01

-93 DA 07 41 C9 BD B3 AB CC 01 B3 0A 7B 01 13 9D

-0A 01 13 97 0A 01 13 5B 0D 01 93 5A 07 41 69 BB

-B3 2F C7 01 B3 8E F0 01 13 9F 0E 01 93 5A 0F 41

-B1 BB B3 AB CC 01 B3 0A 7B 01 13 9D 0A 01 93 5A

-0D 41 1D B3 B3 2F C7 01 B3 8E F0 01 13 9F 0E 01

-93 5A 0F 41 C5 B9 B3 AB CC 01 B3 0A 7B 01 13 9D

-0A 01 93 5A 0D 41 6D B9 B3 2F C7 01 B3 8E F0 01

-13 9F 0E 01 93 5A 0F 41 51 B1 B3 2B C8 01 B3 0A

-7B 01 13 9D 0A 01 93 5A 0D 41 B1 B1 81 47 01 47

-81 4D 6F E0 1F 84 01 49 81 48 6F E0 1F C8 41 11

-14 45 2E 87 22 C4 4C 45 32 84 50 41 08 41 06 C6

-EF E0 4F B2 B3 46 A4 00 13 77 F5 0F 93 17 05 01

-93 F2 16 00 13 D3 07 01 13 56 17 00 13 58 14 00

-63 8B 02 00 E9 70 93 83 10 00 33 45 78 00 93 15

-05 01 13 D8 05 01 B3 48 C8 00 13 FE 18 00 93 5E

-27 00 93 52 18 00 63 0B 0E 00 69 7F 93 0F 1F 00

-33 C4 F2 01 93 16 04 01 93 D2 06 01 B3 C7 D2 01

-93 F0 17 00 13 56 37 00 93 D8 12 00 63 8B 00 00

-E9 73 93 85 13 00 33 C5 B8 00 13 18 05 01 93 58

-08 01 33 CE C8 00 93 7E 1E 00 13 5F 47 00 93 D7

-18 00 63 8B 0E 00 E9 7F 13 84 1F 00 B3 C6 87 00

-93 92 06 01 93 D7 02 01 B3 C0 E7 01 93 F3 10 00

-13 56 57 00 13 DE 17 00 63 8B 03 00 E9 75 13 88

-15 00 33 45 0E 01 93 18 05 01 13 DE 08 01 B3 4E

-CE 00 13 FF 1E 00 93 5F 67 00 93 50 1E 00 63 0B

-0F 00 69 74 93 06 14 00 B3 C2 D0 00 93 97 02 01

-93 D0 07 01 B3 C3 F0 01 13 F6 13 00 1D 83 13 DE

-10 00 11 CA E9 75 13 88 15 00 33 45 0E 01 93 18

-05 01 13 DE 08 01 93 7E 1E 00 93 52 1E 00 63 8B

-EE 00 69 7F 93 0F 1F 00 33 C4 F2 01 93 16 04 01

-93 D2 06 01 93 57 83 00 B3 C0 57 00 93 F3 10 00

-13 56 83 00 93 D8 12 00 13 53 93 00 63 8B 03 00

-69 77 93 05 17 00 33 C8 B8 00 13 15 08 01 93 58

-05 01 33 4E 13 01 93 7E 1E 00 13 5F 26 00 93 D0

-18 00 63 8B 0E 00 E9 7F 13 84 1F 00 B3 C6 80 00

-93 92 06 01 93 D0 02 01 B3 C7 E0 01 93 F3 17 00

-13 53 36 00 93 D8 10 00 63 8B 03 00 69 77 93 05

-17 00 33 C8 B8 00 13 15 08 01 93 58 05 01 33 CE

-68 00 93 7E 1E 00 13 5F 46 00 93 D0 18 00 63 8B

-0E 00 E9 7F 13 84 1F 00 B3 C6 80 00 93 92 06 01

-93 D0 02 01 B3 C7 E0 01 93 F3 17 00 13 53 56 00

-93 D8 10 00 63 8B 03 00 69 77 93 05 17 00 33 C8

-B8 00 13 15 08 01 93 58 05 01 33 CE 68 00 93 7E

-1E 00 13 5F 66 00 93 D0 18 00 63 8B 0E 00 E9 7F

-13 84 1F 00 B3 C6 80 00 93 92 06 01 93 D0 02 01

-B3 C7 E0 01 93 F3 17 00 1D 82 13 D5 10 00 63 8B

-03 00 69 73 13 07 13 00 B3 45 E5 00 13 98 05 01

-13 55 08 01 93 78 15 00 05 81 63 8B C8 00 69 7E

-93 0E 1E 00 33 4F D5 01 93 1F 0F 01 13 D5 0F 01

-B2 40 22 44 41 01 82 80 79 71 4A D2 22 D6 26 D4

-4E D0 52 CE 56 CC 5A CA 5E C8 62 C6 66 C4 6A C2

-2A 87 36 89 11 E2 05 46 FD 15 13 F4 C5 FF 13 0A

-44 00 81 47 63 02 07 34 93 82 17 00 B3 86 52 02

-13 88 27 00 13 8E 37 00 13 8F 47 00 93 8E 57 00

-93 88 67 00 13 83 77 00 3E 85 A1 07 93 93 36 00

-63 F3 E3 06 B3 09 08 03 16 85 13 9B 39 00 63 7C

-EB 04 B3 0B CE 03 42 85 13 9C 3B 00 63 75 EC 04

-B3 0C EF 03 72 85 13 9D 3C 00 63 7E ED 02 B3 8F

-DE 03 7A 85 93 95 3F 00 63 F7 E5 02 33 84 18 03

-76 85 93 1A 34 00 63 F0 EA 02 B3 04 63 02 46 85

-93 92 34 00 63 F9 E2 00 33 88 F7 02 1A 85 13 1E

-38 00 E3 6B EE F6 33 07 A5 02 AA 8A 93 14 17 00

-33 04 9A 00 63 06 05 26 C1 6E 81 46 81 43 85 4F

-33 0F 8A 40 FD 1E 93 09 F5 FF 33 06 F6 03 93 98

-0F 01 93 D7 08 01 13 93 16 00 33 0B 83 00 13 0C

-F5 FF 93 7C 3C 00 B3 0B 6F 01 05 4E 13 88 1F 00

-13 5D F6 41 93 52 0D 01 33 07 56 00 33 76 D7 01

-33 06 56 40 B3 88 C7 00 13 93 08 01 13 5C 03 01

-E2 97 23 10 8B 01 13 FD F7 0F 23 90 AB 01 93 05

-2B 00 63 76 AE 1E 63 83 0C 0E 63 8C CC 09 89 4B

-63 86 7C 05 B3 0C 06 03 42 08 93 52 08 01 B3 08

-BF 00 93 05 4B 00 13 88 2F 00 09 4E 13 D7 FC 41

-13 53 07 01 33 86 6C 00 33 7C D6 01 33 06 6C 40

-B3 87 C2 00 13 9D 07 01 93 5B 0D 01 B3 8C 5B 00

-23 11 7B 01 13 FB FC 0F 23 90 68 01 B3 02 06 03

-93 18 08 01 13 D3 08 01 33 0C BF 00 05 0E 05 08

-89 05 13 D7 F2 41 93 57 07 01 33 86 F2 00 33 7D

-D6 01 33 06 FD 40 B3 0B C3 00 93 9C 0B 01 13 DB

-0C 01 B3 02 6B 00 23 9F 65 FF 93 F8 F2 0F 23 10

-1C 01 33 03 06 03 13 1C 08 01 93 57 0C 01 33 0D

-BF 00 89 05 05 0E 05 08 13 57 F3 41 93 5B 07 01

-33 06 73 01 B3 7C D6 01 33 86 7C 41 33 8B C7 00

-93 12 0B 01 93 D8 02 01 33 83 F8 00 23 9F 15 FF

-13 7C F3 0F 23 10 8D 01 63 73 AE 10 33 06 06 03

-93 07 28 00 13 0B 38 00 13 1D 08 01 93 52 0D 01

-93 98 07 01 13 1D 0B 01 13 D3 08 01 93 58 0D 01

-13 07 18 00 13 5D F6 41 13 5D 0D 01 6A 96 33 76

-D6 01 33 0D A6 41 93 1B 07 01 33 07 ED 02 33 86

-A2 01 13 1D 06 01 13 56 0D 01 B2 92 B3 0C BF 00

-23 90 C5 00 13 FD F2 0F 23 90 AC 01 66 8C 66 86

-E6 82 93 5C F7 41 13 DD 0C 01 6A 97 B3 7C D7 01

-33 8D AC 41 B3 07 FD 02 93 DB 0B 01 33 87 AB 01

-93 1C 07 01 13 DD 0C 01 EA 9B 23 91 A5 01 13 F7

-FB 0F 23 11 EC 00 A1 05 13 DC F7 41 93 5C 0C 01

-E6 97 33 FD D7 01 B3 0B 9D 41 33 8B 6B 03 33 07

-73 01 13 1C 07 01 93 5C 0C 01 66 93 23 9E 95 FF

-93 77 F3 0F 23 12 F6 00 11 0E 11 08 13 56 FB 41

-13 5D 06 01 B3 0B AB 01 33 FB DB 01 33 06 AB 41

-33 87 C8 00 13 1C 07 01 93 5C 0C 01 E6 98 23 9F

-95 FF 13 F3 F8 0F 23 93 62 00 E3 61 AE F0 85 0F

-01 4E 11 C1 4E 8E 85 03 F2 9F AA 96 E3 E7 A3 DA

-A2 94 93 86 F4 FF 23 24 89 00 93 F3 C6 FF 32 54

-13 8F 43 00 23 22 49 01 23 20 59 01 23 26 E9 01

-A2 54 12 59 82 59 72 4A E2 4A 52 4B C2 4B 32 4C

-A2 4C 12 4D 45 61 82 80 19 04 FD 5A 7D 55 89 44

-A1 BB 2A 88 63 06 05 3E B3 08 A0 40 13 17 25 00

-2E 97 13 93 28 00 81 45 01 45 81 4F 81 4E 8E 08

-B3 06 E3 00 B3 07 D7 40 93 82 C7 FF 93 D3 22 00

-13 8E 13 00 93 77 7E 00 36 8E 63 80 07 22 05 4F

-63 89 E7 0F 89 42 63 84 57 0C 8D 43 63 81 77 0A

-11 4F 63 8C E7 07 95 42 63 87 57 04 99 43 63 84

-77 02 7E 8E 83 AF 06 00 42 05 13 5F 05 01 FE 9E

-63 57 D6 37 93 0E AF 00 13 9E 0E 01 13 55 0E 41

-81 4E 13 8E 46 00 7E 8F 83 2F 0E 00 42 05 93 52

-05 01 FE 9E 63 5C D6 33 93 8E A2 00 13 95 0E 01

-41 85 81 4E 11 0E FE 82 83 2F 0E 00 93 17 05 01

-93 D3 07 01 FE 9E 63 52 D6 31 93 8E A3 00 93 97

-0E 01 13 D5 07 41 81 4E 11 0E FE 83 83 2F 0E 00

-13 1F 05 01 13 55 0F 01 FE 9E 63 57 D6 2D 93 0E

-A5 00 13 9F 0E 01 13 55 0F 41 81 4E 11 0E FE 82

-83 2F 0E 00 42 05 93 53 05 01 FE 9E 63 5D D6 29

-93 8E A3 00 13 95 0E 01 41 85 81 4E 11 0E FE 83

-83 2F 0E 00 93 17 05 01 13 DF 07 01 FE 9E 63 53

-D6 27 93 0E AF 00 93 97 0E 01 13 D5 07 41 81 4E

-11 0E 7E 8F 83 2F 0E 00 93 12 05 01 13 D5 02 01

-FE 9E 63 58 D6 23 93 0E A5 00 93 92 0E 01 13 D5

-02 41 81 4E 11 0E 63 12 C7 11 85 05 33 87 16 41

-E3 10 B8 EC 82 80 B3 AF 7F 00 B3 07 FF 01 83 2F

-4E 00 93 92 07 01 13 DF 02 41 93 17 0F 01 33 85

-FE 01 11 0E 93 D2 07 01 63 53 A6 10 83 23 4E 00

-A9 02 13 95 02 01 93 57 05 41 01 45 13 9F 07 01

-B3 0E 75 00 93 57 0F 01 63 55 D6 11 83 2F 8E 00

-A9 07 93 9E 07 01 13 DF 0E 41 81 4E 93 12 0F 01

-FE 9E 13 D5 02 01 63 57 D6 11 83 23 CE 00 29 05

-93 1E 05 01 93 D2 0E 41 81 4E 13 9F 02 01 B3 82

-7E 00 93 57 0F 01 63 59 56 10 A9 07 83 2F 0E 01

-93 92 07 01 13 DF 02 41 81 42 13 15 0F 01 B3 8E

-F2 01 93 57 05 01 63 5B D6 11 83 23 4E 01 A9 07

-93 9E 07 01 13 D5 0E 41 81 4E 13 1F 05 01 9E 9E

-93 52 0F 01 63 5D D6 11 83 2F 8E 01 A9 02 93 9E

-02 01 13 DF 0E 41 81 4E 13 15 0F 01 FE 9E 93 57

-05 01 63 5F D6 11 13 85 A7 00 93 17 05 01 13 D5

-07 41 81 4E 71 0E E3 02 C7 F1 83 23 0E 00 42 05

-13 5F 05 01 9E 9E E3 50 D6 F1 93 0E AF 00 83 2F

-4E 00 13 95 0E 01 13 5F 05 41 81 4E 93 17 0F 01

-33 85 FE 01 11 0E 93 D2 07 01 E3 41 A6 F0 B3 A3

-F3 01 33 8F 72 00 83 23 4E 00 93 1E 0F 01 93 D7

-0E 41 13 9F 07 01 B3 0E 75 00 93 57 0F 01 E3 4F

-D6 EF B3 AF 7F 00 B3 82 F7 01 83 2F 8E 00 13 95

-02 01 13 5F 05 41 93 12 0F 01 FE 9E 13 D5 02 01

-E3 4D D6 EF B3 A3 F3 01 33 0F 75 00 83 23 CE 00

-93 17 0F 01 93 D2 07 41 13 9F 02 01 B3 82 7E 00

-93 57 0F 01 E3 4B 56 EE B3 AF 7F 00 33 85 F7 01

-83 2F 0E 01 93 1E 05 01 13 DF 0E 41 13 15 0F 01

-B3 8E F2 01 93 57 05 01 E3 49 D6 EF B3 A3 F3 01

-33 8F 77 00 83 23 4E 01 93 12 0F 01 13 D5 02 41

-13 1F 05 01 9E 9E 93 52 0F 01 E3 47 D6 EF B3 AF

-7F 00 33 85 F2 01 83 2F 8E 01 93 17 05 01 13 DF

-07 41 13 15 0F 01 FE 9E 93 57 05 01 E3 45 D6 EF

-B3 A3 F3 01 33 8F 77 00 93 12 0F 01 13 D5 02 41

-D5 B5 B3 23 FF 01 B3 07 75 00 13 9F 07 01 13 55

-0F 41 C9 BB B3 A2 F3 01 33 05 5F 00 93 13 05 01

-13 D5 03 41 71 BB B3 A7 F2 01 33 8F F3 00 93 12

-0F 01 13 D5 02 41 9D B3 B3 A2 F3 01 B3 07 55 00

-93 93 07 01 13 D5 03 41 15 BB 33 AF F2 01 33 85

-E3 01 93 12 05 01 13 D5 02 41 FD B9 B3 27 FF 01

-B3 83 F2 00 13 9F 03 01 13 55 0F 41 E1 B1 B3 27

-FE 01 B3 02 FF 00 93 93 02 01 13 D5 03 41 51 B9

-01 45 82 80 63 01 05 16 41 11 B3 03 A0 40 13 18

-15 00 22 C6 26 C4 13 94 13 00 4A C2 4E C0 32 98

-81 4F 81 42 8A 03 B3 08 04 01 33 06 18 41 13 03

-E6 FF 93 54 13 00 13 87 14 00 93 97 2F 00 13 79

-77 00 AE 97 46 87 63 0F 09 08 85 49 63 02 39 09

-09 4E 63 07 C9 07 8D 4E 63 0C D9 05 11 4F 63 01

-E9 05 15 46 63 06 C9 02 19 43 63 0B 69 00 83 94

-08 00 13 87 28 00 91 07 33 89 D4 02 23 AE 27 FF

-83 19 07 00 91 07 09 07 33 8E D9 02 23 AE C7 FF

-83 1E 07 00 91 07 09 07 33 8F DE 02 23 AE E7 FF

-03 16 07 00 91 07 09 07 33 03 D6 02 23 AE 67 FE

-83 14 07 00 91 07 09 07 33 89 D4 02 23 AE 27 FF

-83 19 07 00 91 07 09 07 33 8E D9 02 23 AE C7 FF

-83 1E 07 00 91 07 09 07 33 8F DE 02 23 AE E7 FF

-63 07 E8 06 83 19 07 00 03 19 27 00 83 14 47 00

-03 1F 67 00 83 1E 87 00 03 1E A7 00 03 13 C7 00

-03 16 E7 00 B3 89 D9 02 41 07 93 87 07 02 33 09

-D9 02 23 A0 37 FF B3 84 D4 02 23 A2 27 FF 33 0F

-DF 02 23 A4 97 FE B3 8E DE 02 23 A6 E7 FF 33 0E

-DE 02 23 A8 D7 FF 33 03 D3 02 23 AA C7 FF 33 06

-D6 02 23 AC 67 FE 23 AE C7 FE E3 1D E8 F8 85 02

-AA 9F 33 88 78 40 E3 18 55 EC 32 44 A2 44 12 49

-82 49 41 01 82 80 82 80 63 00 05 1E B3 02 A0 40

-93 16 06 01 93 17 15 00 93 93 12 00 C1 82 33 86

-F5 00 81 4F 8A 02 B3 85 C3 00 33 07 B6 40 13 03

-E7 FF 13 58 13 00 93 08 18 00 13 FE 78 00 AE 87

-63 08 0E 08 85 4E 63 0C DE 07 09 4F 63 02 EE 07

-0D 47 63 08 EE 04 11 43 63 0E 6E 02 15 48 63 04

-0E 03 99 48 63 0A 1E 01 03 DE 05 00 93 87 25 00

-B3 8E C6 01 23 90 D5 01 03 DF 07 00 89 07 33 87

-E6 01 23 9F E7 FE 03 D3 07 00 89 07 33 88 66 00

-23 9F 07 FF 83 D8 07 00 89 07 33 8E 16 01 23 9F

-C7 FF 83 DE 07 00 89 07 33 8F D6 01 23 9F E7 FF

-03 D7 07 00 89 07 33 83 E6 00 23 9F 67 FE 03 D8

-07 00 89 07 B3 88 06 01 23 9F 17 FF 63 09 F6 10

-41 11 22 C6 03 D4 07 00 03 DF 27 00 83 DE 47 00

-03 DE 67 00 03 D3 87 00 83 D8 A7 00 03 D8 C7 00

-03 D7 E7 00 36 94 36 9F B6 9E 36 9E 36 93 B6 98

-36 98 36 97 23 90 87 00 23 91 E7 01 23 92 D7 01

-23 93 C7 01 23 94 67 00 23 95 17 01 23 96 07 01

-23 97 E7 00 C1 07 E3 17 F6 FA 85 0F 33 86 55 40

-63 04 F5 0B B3 85 C3 00 B3 07 B6 40 13 84 E7 FF

-13 5F 14 00 93 0E 1F 00 13 FE 7E 00 AE 87 E3 03

-0E F8 05 43 63 04 6E 06 89 48 63 0A 1E 05 0D 48

-63 00 0E 05 11 47 63 06 EE 02 15 44 63 0C 8E 00

-19 4F 63 1C EE 07 03 D3 07 00 89 07 B3 88 66 00

-23 9F 17 FF 03 D8 07 00 89 07 33 87 06 01 23 9F

-E7 FE 03 D4 07 00 89 07 33 8F 86 00 23 9F E7 FF

-83 DE 07 00 89 07 33 8E D6 01 23 9F C7 FF 03 D3

-07 00 89 07 B3 88 66 00 23 9F 17 FF 03 D8 07 00

-89 07 33 87 06 01 23 9F E7 FE E3 15 F6 F0 85 0F

-33 86 55 40 E3 10 F5 F7 32 44 41 01 82 80 85 0F

-33 86 55 40 E3 11 F5 E5 82 80 83 DE 05 00 93 87

-25 00 33 8E D6 01 23 90 C5 01 B5 BF 63 08 05 1A

-79 71 26 D2 AA 84 4E CE 93 99 24 00 4A D0 2E 85

-32 89 81 45 4E 86 22 D4 06 D6 36 84 52 CC 56 CA

-5A C8 5E C6 62 C4 66 C2 EF 30 30 49 93 96 14 00

-AA 85 A2 96 4E 95 01 46 33 83 86 40 93 00 E3 FF

-93 D2 10 00 93 83 12 00 93 17 16 00 93 F8 73 00

-CA 97 22 87 01 4E 63 85 08 0A 05 48 63 87 08 09

-09 4A 63 8B 48 07 8D 4A 63 8F 58 05 11 4B 63 83

-68 05 95 4B 63 87 78 03 19 4C 63 8B 88 01 83 9C

-07 00 03 1E 04 00 89 07 13 07 24 00 33 8E CC 03

-83 9E 07 00 03 1F 07 00 89 07 09 07 B3 8F EE 03

-7E 9E 83 99 07 00 03 13 07 00 89 07 09 07 B3 80

-69 02 06 9E 83 92 07 00 83 13 07 00 89 07 09 07

-B3 88 72 02 46 9E 03 98 07 00 03 1A 07 00 89 07

-09 07 B3 0A 48 03 56 9E 03 9B 07 00 83 1B 07 00

-89 07 09 07 33 0C 7B 03 62 9E 83 9C 07 00 83 1E

-07 00 09 07 89 07 33 8F DC 03 7A 9E 63 85 E6 08

-83 9F 07 00 83 19 07 00 83 90 27 00 83 1A 27 00

-B3 88 3F 03 03 98 47 00 03 1C 47 00 83 92 67 00

-83 1B 67 00 83 9C 87 00 03 1B 87 00 03 9F A7 00

-03 1A A7 00 83 9E C7 00 B3 8F 50 03 83 19 C7 00

-03 93 E7 00 83 13 E7 00 46 9E 41 07 C1 07 B3 00

-88 03 B3 0A FE 01 33 8C 72 03 33 88 1A 00 B3 82

-6C 03 B3 0B 88 01 B3 08 4F 03 B3 8C 5B 00 33 8B

-3E 03 33 8F 1C 01 33 0A 73 02 B3 0E 6F 01 33 8E

-4E 01 E3 9F E6 F6 23 A0 C5 01 91 05 26 96 E3 15

-B5 EA B2 50 22 54 92 54 02 59 F2 49 62 4A D2 4A

-42 4B B2 4B 22 4C 92 4C 45 61 82 80 82 80 5D 71

-86 C6 A2 C4 A6 C2 CA C0 4E DE 52 DC 56 DA 5A D8

-5E D6 62 D4 66 D2 6A D0 6E CE 2E C4 36 C6 63 0F

-05 1A 13 14 15 00 AA 8A B2 89 33 09 86 00 93 14

-25 00 01 4B 81 4B A2 47 13 1F 2B 00 26 86 33 85

-E7 01 81 45 EF 30 70 2C 32 46 2A 8F 81 4F 33 07

-39 41 93 00 E7 FF 93 D2 10 00 13 83 12 00 93 73

-73 00 B2 85 CE 86 81 47 63 86 03 0A 05 48 63 88

-03 09 89 48 63 8C 13 07 0D 4A 63 80 43 07 11 4C

-63 84 83 05 95 4C 63 88 93 03 19 4D 63 8C A3 01

-83 9D 09 00 03 1E 06 00 93 86 29 00 B3 05 86 00

-B3 87 CD 03 83 9E 06 00 03 95 05 00 89 06 A2 95

-33 87 AE 02 BA 97 83 90 06 00 83 92 05 00 89 06

-A2 95 33 83 50 02 9A 97 83 93 06 00 03 98 05 00

-89 06 A2 95 B3 88 03 03 C6 97 03 9A 06 00 03 9C

-05 00 89 06 A2 95 B3 0C 8A 03 E6 97 03 9D 06 00

-83 9D 05 00 89 06 A2 95 33 0E BD 03 F2 97 83 9E

-06 00 03 95 05 00 89 06 A2 95 33 87 AE 02 BA 97

-63 03 D9 0A 03 93 06 00 83 93 05 00 B3 80 85 00

-B3 82 80 00 33 07 73 02 03 9E 00 00 03 9D 26 00

-33 88 82 00 83 9D 02 00 03 9A 46 00 B3 08 88 00

-83 1C 08 00 83 90 66 00 B3 8E 88 00 33 0D CD 03

-03 93 86 00 03 9C 08 00 83 92 A6 00 83 93 0E 00

-33 85 8E 00 03 98 C6 00 B3 05 85 00 83 1E 05 00

-BA 97 33 0A BA 03 03 95 E6 00 03 9E 05 00 B3 8D

-A7 01 C1 06 A2 95 B3 80 90 03 B3 88 4D 01 33 07

-83 03 B3 8C 18 00 33 83 72 02 33 8C EC 00 B3 02

-D8 03 B3 03 6C 00 33 08 C5 03 33 8D 53 00 B3 07

-0D 01 E3 11 D9 F6 23 20 FF 00 93 86 1F 00 11 0F

-09 06 63 84 DA 00 B6 8F 59 B5 13 8F 1B 00 A2 99

-56 9B 22 99 63 84 FB 01 FA 8B B1 BD B6 40 26 44

-96 44 06 49 F2 59 62 5A D2 5A 42 5B B2 5B 22 5C

-92 5C 02 5D F2 4D 61 61 82 80 63 04 05 1C 79 71

-4E CE 93 19 15 00 22 D4 26 D2 4A D0 52 CC 56 CA

-5A C8 5E C6 62 C4 06 D6 2A 8B 2E 84 B6 84 B2 8A

-33 0A 36 01 13 19 25 00 81 4B 01 4C 13 98 2B 00

-33 05 04 01 4A 86 81 45 EF 30 30 0D AA 83 A6 88

-01 43 B3 07 5A 41 93 80 E7 FF 93 D2 10 00 93 85

-12 00 13 F6 35 00 46 85 D6 86 81 4E 59 C2 05 47

-63 0C E6 04 09 4E 63 06 C6 03 83 9E 0A 00 03 9F

-08 00 93 86 2A 00 33 85 38 01 B3 8F EE 03 13 D8

-2F 40 93 D7 5F 40 93 70 F8 00 93 F2 F7 07 B3 8E

-50 02 83 95 06 00 03 16 05 00 89 06 4E 95 33 8E

-C5 02 13 57 2E 40 13 5F 5E 40 93 7F F7 00 13 78

-FF 07 B3 87 0F 03 BE 9E 83 90 06 00 83 12 05 00

-89 06 4E 95 B3 85 50 02 13 D6 25 40 13 DE 55 40

-13 77 F6 00 13 7F FE 07 B3 0F E7 03 FE 9E 63 03

-DA 0A 33 08 35 01 83 90 06 00 83 12 05 00 B3 07

-38 01 03 9E 26 00 03 17 08 00 83 9F 07 00 33 85

-37 01 03 96 46 00 33 8F 50 02 03 18 05 00 83 95

-66 00 A1 06 4E 95 B3 00 EE 02 93 52 2F 40 13 5E

-5F 40 13 F7 F2 00 93 77 FE 07 33 06 F6 03 13 DF

-50 40 93 DF 20 40 93 72 FF 07 93 F0 FF 00 B3 85

-05 03 13 5E 56 40 13 58 26 40 93 7F F8 00 13 76

-FE 07 B3 07 F7 02 13 DF 55 40 13 D7 25 40 13 78

-F7 00 93 75 FF 07 B3 80 50 02 BE 9E B3 82 CF 02

-33 8E 1E 00 B3 0F B8 02 33 06 5E 00 B3 0E F6 01

-E3 11 DA F6 23 A0 D3 01 93 06 13 00 91 03 89 08

-63 04 DB 00 36 83 75 B5 93 03 1C 00 CE 9A DA 9B

-4E 9A 63 04 6C 00 1E 8C 51 B5 B2 50 22 54 92 54

-02 59 F2 49 62 4A D2 4A 42 4B B2 4B 22 4C 45 61

-82 80 82 80 13 03 F5 FF 85 47 B2 88 63 FA 67 16

-85 05 93 92 05 01 93 D5 02 01 37 86 00 80 93 D3

-35 00 9D 4E 93 F6 75 00 01 47 13 06 C6 72 A1 4F

-11 48 05 4E 13 0F C0 02 93 F7 33 00 63 8C D6 11

-63 68 D8 12 93 83 D6 FF 93 92 03 01 8A 07 93 D6

-02 01 B3 03 F6 00 63 68 DE 10 83 A6 03 01 A5 47

-A1 43 B3 02 F7 00 63 F5 62 12 41 11 22 C6 35 A0

-63 66 88 0C 93 06 D4 FF 93 97 06 01 13 94 23 00

-93 D2 07 01 B3 03 86 00 63 65 5E 0A 83 A6 03 01

-A5 42 A1 43 BA 92 63 F3 62 08 03 C4 06 00 B3 87

-E8 00 23 80 87 00 03 C7 16 00 A3 80 E7 00 03 C4

-26 00 23 81 87 00 03 C7 36 00 A3 81 E7 00 63 84

-03 03 03 C4 46 00 23 82 87 00 03 C7 56 00 A3 82

-E7 00 03 C4 66 00 23 83 87 00 63 96 F3 01 83 C6

-76 00 A3 83 D7 00 85 05 BE 93 93 97 05 01 93 D5

-07 01 23 80 E3 01 16 87 13 F4 75 00 93 D2 35 00

-93 F3 32 00 E3 16 D4 F7 93 96 23 00 A5 42 B3 07

-D6 00 BA 92 94 5B A1 43 E3 E1 62 F8 63 79 A7 02

-32 44 33 06 E5 40 81 45 33 85 E8 00 41 01 6F 30

-C0 61 83 A6 03 00 95 42 91 43 A9 BF 13 94 23 00

-B3 03 86 00 83 A6 03 02 A5 42 A1 43 A1 B7 32 44

-41 01 82 80 93 92 27 00 B3 03 56 00 83 A6 03 03

-A5 47 A1 43 FD BD 83 A6 03 00 95 47 91 43 D5 BD

-93 92 27 00 B3 06 56 00 94 52 A5 47 A1 43 D5 B5

-01 47 33 06 E5 40 81 45 33 85 E8 00 6F 30 E0 5B

-E3 69 A7 FE 82 80 1C 41 2A 8E 01 45 03 C7 07 00

-3E 88 61 C3 93 06 C0 02 13 88 17 00 63 07 D7 24

-88 41 13 06 07 FD 93 72 F6 0F A5 48 13 03 15 00

-63 E4 58 0A 23 A0 65 00 83 C8 17 00 63 8A 08 12

-13 87 27 00 63 85 D8 12 13 86 08 FD 13 0F E0 02

-A5 4F 93 07 C0 02 93 76 F6 0F 63 84 E8 03 63 E4

-DF 0A 83 48 18 00 13 05 17 00 3A 88 63 81 08 10

-63 8C F8 20 13 86 08 FD 2A 87 93 76 F6 0F E3 90

-E8 FF 03 A3 05 01 15 45 93 03 13 00 23 A8 75 00

-03 43 18 00 3A 88 63 0E 03 02 13 08 C0 02 93 08

-17 00 63 01 03 1D 93 0E 50 04 25 4F 93 0F C0 02

-93 07 03 FD 13 76 F3 0D 93 F6 F7 0F 63 0C D6 0B

-63 7F DF 14 83 A2 45 01 46 88 05 45 13 87 12 00

-D8 C9 23 20 0E 01 82 80 93 03 B0 02 63 0F 77 02

-93 0E D0 02 63 0B D7 03 13 0F E0 02 63 04 E7 15

-83 AF 45 00 23 A0 65 00 05 45 93 87 1F 00 DC C1

-23 20 0E 01 82 80 83 A2 05 01 3A 88 05 45 13 87

-12 00 98 C9 23 20 0E 01 82 80 23 A0 65 00 03 C6

-17 00 63 0E 06 14 13 88 27 00 63 0A D6 14 94 45

-13 07 06 FD 93 72 F7 0F 25 45 93 88 16 00 63 7C

-55 00 13 03 E0 02 63 03 66 10 23 A4 15 01 05 45

-23 20 0E 01 82 80 23 A4 15 01 83 C8 27 00 63 89

-08 00 93 0E C0 02 13 07 18 00 E3 9F D8 ED 3A 88

-11 45 85 B7 C8 49 93 03 15 00 23 AA 75 00 83 4E

-17 00 63 89 0E 0E 13 0F C0 02 13 88 18 00 63 84

-EE 0F 83 AF C5 00 93 87 5E FD 13 F6 D7 0F 93 86

-1F 00 D4 C5 09 C6 05 45 23 20 0E 01 82 80 83 C2

-18 00 63 84 02 0C 13 88 28 00 63 80 E2 0D 03 A3

-85 01 13 87 02 FD 13 75 F7 0F 93 0E 13 00 A5 43

-23 AC D5 01 E3 E9 A3 FC 83 C2 28 00 63 8A 02 08

-13 87 38 00 63 85 E2 09 A5 48 13 0F C0 02 93 8F

-02 FD 13 F6 FF 0F 63 F9 C8 00 D4 41 3A 88 05 45

-93 87 16 00 DC C1 F1 B5 83 42 18 00 13 03 17 00

-3A 88 63 8E 02 04 63 86 E2 07 1A 87 C9 BF 03 43

-17 00 13 88 18 00 46 87 63 0E 03 02 63 0D F3 03

-C2 88 BD BD 23 A0 65 00 03 C3 17 00 63 05 03 02

-93 88 27 00 63 00 D3 02 42 87 B1 BD 23 A4 15 01

-03 C3 27 00 63 09 03 00 93 03 C0 02 93 08 18 00

-E3 14 73 FE 46 88 15 45 AD B5 01 45 9D B5 3A 88

-1D 45 85 B5 46 88 0D 45 A9 BD 19 45 99 BD 09 45

-89 BD 1A 88 1D 45 B1 B5 2A 88 11 45 99 B5 19 71

-A2 DC A6 DA CA D8 D2 D4 D6 D2 DA D0 DE CE 86 DE

-CE D6 2E 89 83 C5 05 00 4A C6 02 D8 02 C8 02 DA

-02 DC 02 DE 82 C0 82 C2 82 C4 82 C6 02 CA 02 CC

-02 CE 02 D0 02 D2 02 D4 02 D6 04 18 2A 8A B2 8B

-36 8B BA 8A 3E 84 E3 8C 05 1C 93 09 C1 00 A6 85

-4E 85 15 33 AA 87 93 92 27 00 98 08 33 03 57 00

-B2 46 83 23 03 FC A6 85 03 C6 06 00 13 88 13 00

-23 20 03 FD 4E 85 35 CA FD 39 AA 88 13 9E 28 00

-93 0E 01 05 33 8F CE 01 B2 47 83 2F 0F FC A6 85

-83 C2 07 00 13 87 1F 00 23 20 EF FC 4E 85 63 86

-02 04 D1 39 2A 83 93 13 23 00 94 08 33 86 76 00

-B2 48 03 28 06 FC A6 85 03 CE 08 00 93 0E 18 00

-23 20 D6 FD 4E 85 63 02 0E 02 75 31 0A 05 8C 08

-33 8F A5 00 B2 47 83 2F 0F FC 83 C2 07 00 13 87

-1F 00 23 20 EF FC E3 94 02 F6 4A C6 4A 9A 83 45

-09 00 E3 7C 49 13 93 00 C0 02 4A 83 B3 C9 75 01

-63 80 15 02 23 00 33 01 B2 43 33 83 53 01 1A C6

-63 7C 43 01 83 45 03 00 B3 C9 75 01 E3 94 15 FE

-56 93 1A C6 E3 68 43 FF 83 4B 09 00 4A C6 93 09

-C1 00 63 83 0B 0A A6 85 4E 85 35 39 AA 86 13 96

-26 00 13 08 01 05 B3 08 C8 00 B2 4E 03 AE 08 FC

-A6 85 03 CF 0E 00 93 0F 1E 00 23 A0 F8 FD 4E 85

-63 09 0F 06 09 39 AA 87 93 92 27 00 98 08 33 03

-57 00 B2 4B 83 23 03 FC A6 85 83 C6 0B 00 13 86

-13 00 23 20 C3 FC 4E 85 A9 C6 F5 36 2A 88 93 18

-28 00 13 0E 01 05 B3 0E 1E 01 B2 4F 03 AF 0E FC

-A6 85 83 C7 0F 00 93 02 1F 00 23 A0 5E FC 4E 85

-8D C3 D1 36 0A 05 8C 08 33 83 A5 00 32 47 83 23

-03 FC 83 4B 07 00 93 86 13 00 23 20 D3 FC E3 94

-0B F6 4A C6 63 72 49 03 93 00 C0 02 83 49 09 00

-33 C6 69 01 E3 87 19 02 23 00 C9 00 32 48 33 09

-58 01 4A C6 E3 64 49 FF 69 7A 14 08 26 86 13 0E

-1A 00 83 AE 06 00 93 53 14 00 33 C4 8E 00 13 FF

-FE 0F 93 9F 0E 01 93 78 14 00 93 D2 0F 01 13 55

-1F 00 63 88 08 00 B3 C7 C3 01 93 95 07 01 93 D3

-05 01 33 C3 A3 00 13 77 13 00 93 5B 2F 00 93 D0

-13 00 19 C7 B3 CA C0 01 13 9B 0A 01 93 50 0B 01

-B3 C9 70 01 13 F9 19 00 13 58 3F 00 93 DF 10 00

-63 08 09 00 33 CA CF 01 13 14 0A 01 93 5F 04 01

-B3 C8 0F 01 13 F5 18 00 93 55 4F 00 13 D7 1F 00

-19 C5 B3 47 C7 01 93 93 07 01 13 D7 03 01 33 C3

-E5 00 93 7B 13 00 93 5A 5F 00 93 59 17 00 63 88

-0B 00 33 CB C9 01 93 10 0B 01 93 D9 00 01 33 C9

-59 01 13 78 19 00 13 5A 6F 00 13 D5 19 00 63 08

-08 00 33 44 C5 01 93 1F 04 01 13 D5 0F 01 B3 48

-AA 00 93 F5 18 00 13 5F 7F 00 13 57 15 00 99 C5

-B3 47 C7 01 93 93 07 01 13 D7 03 01 13 73 17 00

-13 5B 17 00 63 08 E3 01 B3 4B CB 01 93 9A 0B 01

-13 DB 0A 01 93 D0 82 00 B3 C9 60 01 13 F9 19 00

-13 D8 82 00 93 5F 1B 00 93 D2 92 00 63 08 09 00

-33 CA CF 01 13 14 0A 01 93 5F 04 01 33 C5 F2 01

-93 75 15 00 93 58 28 00 93 D3 1F 00 99 C5 33 CF

-C3 01 93 17 0F 01 93 D3 07 01 33 C7 78 00 13 73

-17 00 93 5B 38 00 93 D0 13 00 63 08 03 00 B3 CA

-C0 01 13 9B 0A 01 93 50 0B 01 B3 C9 1B 00 13 F9

-19 00 93 52 48 00 93 DF 10 00 63 08 09 00 33 CA

-CF 01 13 14 0A 01 93 5F 04 01 33 C5 F2 01 93 75

-15 00 93 58 58 00 93 D3 1F 00 99 C5 33 CF C3 01

-93 17 0F 01 93 D3 07 01 33 C7 78 00 13 73 17 00

-93 5B 68 00 93 D0 13 00 63 08 03 00 B3 CA C0 01

-13 9B 0A 01 93 50 0B 01 B3 C9 1B 00 13 F9 19 00

-13 58 78 00 13 D4 10 00 63 08 09 00 B3 42 C4 01

-13 9A 02 01 13 54 0A 01 93 7F 14 00 13 5F 14 00

-63 88 0F 01 33 45 CF 01 93 15 05 01 13 DF 05 01

-93 D8 0E 01 B3 C7 E8 01 93 F3 F8 0F 13 F7 17 00

-93 DE 0E 01 13 D3 13 00 13 5B 1F 00 19 C7 B3 4B

-CB 01 93 9A 0B 01 13 DB 0A 01 B3 40 63 01 93 F9

-10 00 13 D9 23 00 13 5A 1B 00 63 88 09 00 33 48

-CA 01 93 12 08 01 13 DA 02 01 33 44 49 01 93 7F

-14 00 13 D5 33 00 93 57 1A 00 63 88 0F 00 B3 C5

-C7 01 13 9F 05 01 93 57 0F 01 B3 48 F5 00 13 F7

-18 00 13 D3 43 00 13 DB 17 00 19 C7 B3 4B CB 01

-93 9A 0B 01 13 DB 0A 01 B3 40 63 01 93 F9 10 00

-13 D9 53 00 13 5A 1B 00 63 88 09 00 33 48 CA 01

-93 12 08 01 13 DA 02 01 33 44 49 01 93 7F 14 00

-13 D5 63 00 93 57 1A 00 63 88 0F 00 B3 C5 C7 01

-13 9F 05 01 93 57 0F 01 B3 48 F5 00 13 F7 18 00

-93 D3 73 00 93 DA 17 00 19 C7 33 C3 CA 01 93 1B

-03 01 93 DA 0B 01 13 FB 1A 00 13 D9 1A 00 63 08

-7B 00 B3 40 C9 01 93 99 00 01 13 D9 09 01 13 D8

-8E 00 B3 42 28 01 13 FA 12 00 13 D4 8E 00 13 5F

-19 00 93 DE 9E 00 63 08 0A 00 B3 4F CF 01 13 95

-0F 01 13 5F 05 01 B3 C5 EE 01 93 F8 15 00 13 57

-24 00 13 53 1F 00 63 88 08 00 B3 47 C3 01 93 93

-07 01 13 D3 03 01 B3 4B 67 00 93 FA 1B 00 13 5B

-34 00 13 59 13 00 63 88 0A 00 B3 40 C9 01 93 99

-00 01 13 D9 09 01 33 48 2B 01 93 72 18 00 13 5A

-44 00 13 55 19 00 63 88 02 00 B3 4E C5 01 93 9F

-0E 01 13 D5 0F 01 33 4F AA 00 93 75 1F 00 93 58

-54 00 93 53 15 00 99 C5 33 C7 C3 01 93 17 07 01

-93 D3 07 01 33 C3 78 00 93 7B 13 00 93 5A 64 00

-93 D9 13 00 63 88 0B 00 33 CB C9 01 93 10 0B 01

-93 D9 00 01 33 C9 3A 01 13 78 19 00 1D 80 93 DE

-19 00 63 08 08 00 B3 C2 CE 01 13 9A 02 01 93 5E

-0A 01 93 FF 1E 00 93 D8 1E 00 63 88 8F 00 33 C5

-C8 01 13 1F 05 01 93 58 0F 01 0C 42 93 D9 18 00

-33 C7 15 01 93 F3 F5 0F 13 93 05 01 93 77 17 00

-93 5B 03 01 93 DA 13 00 99 C7 33 CB C9 01 93 10

-0B 01 93 D9 00 01 33 C9 3A 01 13 78 19 00 93 D2

-23 00 93 DE 19 00 63 08 08 00 33 C4 CE 01 13 1A

-04 01 93 5E 0A 01 B3 CF D2 01 13 F5 1F 00 13 DF

-33 00 13 D3 1E 00 19 C5 B3 48 C3 01 13 97 08 01

-13 53 07 01 B3 47 6F 00 93 FA 17 00 13 DB 43 00

-13 59 13 00 63 88 0A 00 B3 40 C9 01 93 99 00 01

-13 D9 09 01 33 48 2B 01 93 72 18 00 13 DA 53 00

-93 5F 19 00 63 88 02 00 33 C4 CF 01 93 1E 04 01

-93 DF 0E 01 33 45 FA 01 13 7F 15 00 93 D8 63 00

-93 DA 1F 00 63 08 0F 00 33 C7 CA 01 13 13 07 01

-93 5A 03 01 B3 C7 58 01 13 FB 17 00 93 D3 73 00

-13 D9 1A 00 63 08 0B 00 B3 40 C9 01 93 99 00 01

-13 D9 09 01 13 78 19 00 13 54 19 00 63 08 78 00

-B3 42 C4 01 13 9A 02 01 13 54 0A 01 93 DE 8B 00

-B3 CF 8E 00 13 FF 1F 00 13 D5 8B 00 13 53 14 00

-93 DB 9B 00 63 08 0F 00 B3 48 C3 01 13 97 08 01

-13 53 07 01 B3 CA 6B 00 93 F7 1A 00 13 5B 25 00

-93 59 13 00 99 C7 B3 C3 C9 01 93 90 03 01 93 D9

-00 01 33 49 3B 01 93 72 19 00 13 58 35 00 93 DE

-19 00 63 88 02 00 33 CA CE 01 13 14 0A 01 93 5E

-04 01 B3 4F D8 01 13 FF 1F 00 93 5B 45 00 13 D3

-1E 00 63 08 0F 00 B3 48 C3 01 13 97 08 01 13 53

-07 01 B3 CA 6B 00 93 F7 1A 00 13 5B 55 00 93 59

-13 00 99 C7 B3 C3 C9 01 93 90 03 01 93 D9 00 01

-33 49 3B 01 93 72 19 00 13 58 65 00 93 DE 19 00

-63 88 02 00 33 CA CE 01 13 14 0A 01 93 5E 04 01

-B3 4F D8 01 13 FF 1F 00 1D 81 13 D7 1E 00 63 08

-0F 00 B3 4B C7 01 93 98 0B 01 13 D7 08 01 13 73

-17 00 13 5B 17 00 63 08 A3 00 B3 4A CB 01 93 97

-0A 01 13 DB 07 01 93 D3 05 01 B3 C0 63 01 93 F9

-F3 0F 13 F9 10 00 C1 81 93 D2 19 00 13 54 1B 00

-63 08 09 00 33 48 C4 01 13 1A 08 01 13 54 0A 01

-B3 CE 82 00 93 FF 1E 00 13 DF 29 00 93 58 14 00

-63 88 0F 00 33 C5 C8 01 93 1B 05 01 93 D8 0B 01

-33 47 1F 01 13 73 17 00 93 DA 39 00 93 D3 18 00

-63 08 03 00 B3 C7 C3 01 13 9B 07 01 93 53 0B 01

-B3 C0 7A 00 13 F9 10 00 93 D2 49 00 13 D4 13 00

-63 08 09 00 33 48 C4 01 13 1A 08 01 13 54 0A 01

-B3 CE 82 00 93 FF 1E 00 13 DF 59 00 93 58 14 00

-63 88 0F 00 33 C5 C8 01 93 1B 05 01 93 D8 0B 01

-33 47 1F 01 13 73 17 00 93 DA 69 00 93 D3 18 00

-63 08 03 00 B3 C7 C3 01 13 9B 07 01 93 53 0B 01

-B3 C0 7A 00 13 F9 10 00 93 D9 79 00 13 DA 13 00

-63 08 09 00 B3 42 CA 01 13 98 02 01 13 5A 08 01

-93 7E 1A 00 13 5F 1A 00 63 88 3E 01 33 44 CF 01

-93 1F 04 01 13 DF 0F 01 13 D5 85 00 B3 4B E5 01

-93 F8 1B 00 13 D7 85 00 93 57 1F 00 A5 81 63 88

-08 00 33 C3 C7 01 93 1A 03 01 93 D7 0A 01 33 CB

-F5 00 93 73 1B 00 93 50 27 00 93 D2 17 00 63 88

-03 00 33 C9 C2 01 93 19 09 01 93 D2 09 01 33 C8

-50 00 13 7A 18 00 93 5E 37 00 13 DF 12 00 63 08

-0A 00 33 44 CF 01 93 1F 04 01 13 DF 0F 01 33 C5

-EE 01 93 7B 15 00 93 58 47 00 93 5A 1F 00 63 88

-0B 00 B3 C5 CA 01 13 93 05 01 93 5A 03 01 B3 C7

-58 01 13 FB 17 00 93 53 57 00 93 D9 1A 00 63 08

-0B 00 B3 C0 C9 01 13 99 00 01 93 59 09 01 B3 C2

-33 01 13 F8 12 00 13 5A 67 00 93 DF 19 00 63 08

-08 00 B3 CE CF 01 13 94 0E 01 93 5F 04 01 33 4F

-FA 01 13 75 1F 00 1D 83 13 D3 1F 00 19 C5 B3 4B

-C3 01 93 98 0B 01 13 D3 08 01 93 75 13 00 13 54

-13 00 63 88 E5 00 B3 4A C4 01 93 97 0A 01 13 D4

-07 01 91 06 11 06 E3 96 D4 80 F6 50 22 85 66 54

-D6 54 46 59 B6 59 26 5A 96 5A 06 5B F6 4B 09 61

-82 80 56 99 4A C6 63 63 49 FD 6F F0 EF FD 33 0A

-A9 00 63 6A 49 ED 6F F0 2F FD 63 96 05 F0 6F F0

-AF FC 01 11 26 CA 83 14 05 00 06 CE 22 CC 93 D7

-74 40 4A C8 4E C6 93 F0 17 00 63 8B 00 00 F2 40

-62 44 42 49 B2 49 13 F5 F4 07 D2 44 05 61 82 80

-13 D7 34 40 93 72 F7 00 13 93 42 00 93 F6 74 00

-03 D4 85 03 AA 89 2E 89 33 67 53 00 63 87 06 50

-05 45 63 83 A6 28 13 95 04 01 41 81 A6 8E B3 CF

-8E 00 93 F0 FE 0F 93 F8 1F 00 13 DF 10 00 93 53

-14 00 63 8B 08 00 69 77 93 02 17 00 B3 C7 53 00

-13 93 07 01 93 53 03 01 33 48 7F 00 93 75 18 00

-93 D6 20 00 93 D8 13 00 91 C9 69 76 13 04 16 00

-33 CE 88 00 93 1F 0E 01 93 D8 0F 01 33 CF 16 01

-13 77 1F 00 93 D2 30 00 93 D6 18 00 11 CB 69 73

-93 03 13 00 B3 C7 76 00 13 98 07 01 93 56 08 01

-B3 C5 D2 00 13 F4 15 00 13 D6 40 00 13 D7 16 00

-11 C8 69 7E 93 0F 1E 00 B3 48 F7 01 13 9F 08 01

-13 57 0F 01 B3 42 C7 00 13 F3 12 00 93 D3 50 00

-13 54 17 00 63 0B 03 00 69 78 93 06 18 00 B3 47

-D4 00 93 95 07 01 13 D4 05 01 33 46 74 00 13 7E

-16 00 93 DF 60 00 13 53 14 00 63 0B 0E 00 E9 78

-13 8F 18 00 33 47 E3 01 93 12 07 01 13 D3 02 01

-B3 43 F3 01 13 F8 13 00 93 D0 70 00 13 5E 13 00

-63 0B 08 00 E9 76 93 85 16 00 B3 47 BE 00 13 94

-07 01 13 5E 04 01 13 76 1E 00 93 52 1E 00 63 0B

-16 00 E9 7F 93 88 1F 00 33 CF 12 01 13 17 0F 01

-93 52 07 01 21 81 33 43 55 00 93 73 F5 0F 13 78

-13 00 93 D0 13 00 13 DE 12 00 63 0B 08 00 E9 76

-93 85 16 00 B3 47 BE 00 13 94 07 01 13 5E 04 01

-33 46 1E 00 93 7F 16 00 93 D8 23 00 13 53 1E 00

-63 8B 0F 00 69 7F 13 07 1F 00 B3 42 E3 00 13 95

-02 01 13 53 05 01 33 C8 68 00 93 70 18 00 93 D5

-33 00 93 5F 13 00 63 8B 00 00 E9 76 13 84 16 00

-B3 C7 8F 00 13 9E 07 01 93 5F 0E 01 33 C6 F5 01

-93 78 16 00 13 DF 43 00 13 D8 1F 00 63 8B 08 00

-69 77 93 02 17 00 33 45 58 00 13 13 05 01 13 58

-03 01 B3 40 0F 01 93 F5 10 00 13 D4 53 00 93 58

-18 00 91 C9 E9 76 13 8E 16 00 B3 C7 C8 01 93 9F

-07 01 93 D8 0F 01 33 46 14 01 13 7F 16 00 13 D7

-63 00 93 D0 18 00 63 0B 0F 00 E9 72 13 85 12 00

-33 C3 A0 00 13 18 03 01 93 50 08 01 B3 45 17 00

-13 F4 15 00 93 D3 73 00 93 D8 10 00 11 C8 E9 76

-13 8E 16 00 B3 C7 C8 01 93 9F 07 01 93 D8 0F 01

-33 C6 13 01 13 7F 16 00 13 D8 18 00 63 0B 0F 00

-69 77 93 02 17 00 33 45 58 00 13 13 05 01 13 58

-03 01 13 F5 FE 07 93 F4 04 F0 F2 40 62 44 B3 6E

-95 00 23 1C 09 03 13 E9 0E 08 23 90 29 01 D2 44

-42 49 B2 49 05 61 82 80 D0 55 94 59 03 25 89 02

-CC 59 EF B0 3F F5 33 46 A4 00 93 78 F5 0F 93 1E

-05 01 13 7E 16 00 13 DF 0E 01 93 DF 18 00 13 53

-14 00 63 0B 0E 00 E9 77 93 80 17 00 33 47 13 00

-93 12 07 01 13 D3 02 01 B3 46 F3 01 93 F3 16 00

-13 D8 28 00 13 5E 13 00 63 8B 03 00 E9 75 13 84

-15 00 33 45 8E 00 13 16 05 01 13 5E 06 01 B3 4E

-0E 01 93 FF 1E 00 93 D7 38 00 93 53 1E 00 63 8B

-0F 00 E9 70 13 87 10 00 B3 C2 E3 00 13 93 02 01

-93 53 03 01 B3 C6 F3 00 13 F8 16 00 93 D5 48 00

-93 DE 13 00 63 0B 08 00 69 74 13 06 14 00 33 C5

-CE 00 13 1E 05 01 93 5E 0E 01 B3 CF BE 00 93 F7

-1F 00 93 D0 58 00 13 D8 1E 00 91 CB 69 77 93 02

-17 00 33 43 58 00 93 13 03 01 13 D8 03 01 B3 46

-18 00 93 F5 16 00 13 D4 68 00 93 5F 18 00 91 C9

-69 76 13 0E 16 00 33 C5 CF 01 93 1E 05 01 93 DF

-0E 01 B3 C7 8F 00 93 F0 17 00 93 D8 78 00 13 D8

-1F 00 63 8B 00 00 69 77 93 02 17 00 33 43 58 00

-93 13 03 01 13 D8 03 01 93 76 18 00 13 55 18 00

-63 8B 16 01 E9 75 13 84 15 00 33 46 85 00 13 1E

-06 01 13 55 0E 01 93 5E 8F 00 B3 4F D5 01 93 F0

-1F 00 93 58 8F 00 93 53 15 00 13 5F 9F 00 63 8B

-00 00 E9 77 13 87 17 00 B3 C2 E3 00 13 93 02 01

-93 53 03 01 33 C8 E3 01 93 75 18 00 93 D6 28 00

-93 DE 13 00 91 C9 69 74 13 06 14 00 33 CE CE 00

-13 15 0E 01 93 5E 05 01 B3 CF DE 00 93 F0 1F 00

-13 DF 38 00 93 D3 1E 00 63 8B 00 00 E9 77 13 87

-17 00 B3 C2 E3 00 13 93 02 01 93 53 03 01 33 C8

-E3 01 93 75 18 00 13 D4 48 00 93 DE 13 00 91 C9

-E9 76 13 86 16 00 33 CE CE 00 13 15 0E 01 93 5E

-05 01 B3 CF 8E 00 93 F0 1F 00 13 DF 58 00 93 D3

-1E 00 63 8B 00 00 E9 77 13 87 17 00 B3 C2 E3 00

-13 93 02 01 93 53 03 01 33 C8 E3 01 93 75 18 00

-13 D4 68 00 93 DE 13 00 91 C9 E9 76 13 86 16 00

-33 CE CE 00 13 15 0E 01 93 5E 05 01 B3 CF 8E 00

-93 F0 1F 00 93 D8 78 00 13 D3 1E 00 63 8B 00 00

-69 7F 93 07 1F 00 33 47 F3 00 93 12 07 01 13 D3

-02 01 93 73 13 00 13 55 13 00 63 8B 13 01 69 78

-93 05 18 00 33 44 B5 00 93 16 04 01 13 D5 06 01

-03 56 C9 03 13 1E 05 01 03 54 89 03 93 5E 0E 41

-E3 17 06 B0 23 1E A9 02 19 B6 93 03 20 02 3A 88

-63 54 77 00 13 08 20 02 83 25 49 01 83 16 29 00

-03 16 09 00 03 25 89 01 A2 87 13 77 F8 0F EF F0

-0F 85 83 55 E9 03 13 14 05 01 93 5E 04 41 03 54

-89 03 E3 96 05 AC 23 1F A9 02 D1 B4 01 11 4A C8

-03 19 05 00 06 CE 22 CC 93 57 79 40 26 CA 52 C4

-4E C6 93 F0 17 00 2E 8A B2 84 13 74 F9 07 63 9E

-00 28 13 57 39 40 93 72 F7 00 93 96 42 00 13 73

-79 00 03 54 86 03 AA 89 33 E7 D2 00 63 00 03 7C

-05 45 63 0D A3 52 13 15 09 01 41 81 CA 8E B3 4F

-D4 01 93 F0 FE 0F 93 F8 1F 00 13 DF 10 00 93 53

-14 00 63 8B 08 00 69 77 93 02 17 00 B3 C7 53 00

-13 93 07 01 93 53 03 01 33 C8 E3 01 93 75 18 00

-93 D6 20 00 93 D8 13 00 91 C9 69 76 13 04 16 00

-33 CE 88 00 93 1F 0E 01 93 D8 0F 01 33 CF D8 00

-13 77 1F 00 93 D2 30 00 93 D6 18 00 11 CB 69 73

-93 03 13 00 B3 C7 76 00 13 98 07 01 93 56 08 01

-B3 C5 56 00 13 F4 15 00 13 D6 40 00 13 D7 16 00

-11 C8 69 7E 93 0F 1E 00 B3 48 F7 01 13 9F 08 01

-13 57 0F 01 B3 42 C7 00 13 F3 12 00 93 D3 50 00

-13 54 17 00 63 0B 03 00 69 78 93 06 18 00 B3 47

-D4 00 93 95 07 01 13 D4 05 01 33 46 74 00 13 7E

-16 00 93 DF 60 00 13 53 14 00 63 0B 0E 00 E9 78

-13 8F 18 00 33 47 E3 01 93 12 07 01 13 D3 02 01

-B3 43 F3 01 13 F8 13 00 93 D0 70 00 13 5E 13 00

-63 0B 08 00 E9 76 93 85 16 00 B3 47 BE 00 13 94

-07 01 13 5E 04 01 13 76 1E 00 93 52 1E 00 63 0B

-16 00 E9 7F 93 88 1F 00 33 CF 12 01 13 17 0F 01

-93 52 07 01 21 81 33 43 55 00 93 73 F5 0F 13 78

-13 00 93 D0 13 00 13 DE 12 00 63 0B 08 00 E9 76

-93 85 16 00 B3 47 BE 00 13 94 07 01 13 5E 04 01

-33 46 1E 00 93 7F 16 00 93 D8 23 00 13 53 1E 00

-63 8B 0F 00 69 7F 13 07 1F 00 B3 42 E3 00 13 95

-02 01 13 53 05 01 33 48 13 01 93 70 18 00 93 D5

-33 00 93 5F 13 00 63 8B 00 00 E9 76 13 84 16 00

-B3 C7 8F 00 13 9E 07 01 93 5F 0E 01 33 C6 BF 00

-93 78 16 00 13 DF 43 00 13 D8 1F 00 63 8B 08 00

-69 77 93 02 17 00 33 45 58 00 13 13 05 01 13 58

-03 01 B3 40 E8 01 93 F5 10 00 13 D4 53 00 93 58

-18 00 91 C9 E9 76 13 8E 16 00 B3 C7 C8 01 93 9F

-07 01 93 D8 0F 01 33 C6 88 00 13 7F 16 00 13 D7

-63 00 93 D0 18 00 63 0B 0F 00 E9 72 13 85 12 00

-33 C3 A0 00 13 18 03 01 93 50 08 01 B3 C5 E0 00

-13 F4 15 00 93 D3 73 00 93 D8 10 00 11 C8 E9 76

-13 8E 16 00 B3 C7 C8 01 93 9F 07 01 93 D8 0F 01

-33 C6 13 01 13 7F 16 00 13 D8 18 00 63 0B 0F 00

-69 77 93 02 17 00 33 45 58 00 13 13 05 01 13 58

-03 01 13 F4 FE 07 13 79 09 F0 B3 6E 24 01 23 9C

-04 03 93 E0 0E 08 23 90 19 00 03 19 0A 00 93 59

-79 40 93 F5 19 00 13 78 F9 07 63 9F 05 28 93 53

-39 40 13 FE F3 00 93 16 4E 00 93 77 79 00 83 D9

-84 03 33 67 DE 00 63 8A 07 54 85 42 63 86 57 58

-13 15 09 01 41 81 4A 88 B3 45 38 01 93 70 F8 0F

-93 FE 15 00 13 D7 10 00 93 D8 19 00 63 8B 0E 00

-E9 73 13 8E 13 00 B3 CF C8 01 93 97 0F 01 93 D8

-07 01 33 4F 17 01 93 72 1F 00 93 D6 20 00 93 DE

-18 00 63 8B 02 00 69 76 93 09 16 00 33 C3 3E 01

-93 15 03 01 93 DE 05 01 33 C7 DE 00 93 73 17 00

-13 DE 30 00 93 D2 1E 00 63 8B 03 00 E9 7F 93 88

-1F 00 B3 C7 12 01 13 9F 07 01 93 52 0F 01 B3 C6

-C2 01 13 F6 16 00 93 D9 40 00 93 D3 12 00 11 CA

-69 73 93 05 13 00 B3 CE B3 00 13 97 0E 01 93 53

-07 01 33 CE 33 01 93 7F 1E 00 93 D8 50 00 13 D6

-13 00 63 8B 0F 00 69 7F 93 02 1F 00 B3 47 56 00

-93 96 07 01 13 D6 06 01 B3 49 16 01 13 F3 19 00

-93 DE 60 00 93 5F 16 00 63 0B 03 00 E9 75 13 87

-15 00 B3 C3 EF 00 13 9E 03 01 93 5F 0E 01 B3 C8

-FE 01 13 FF 18 00 93 D0 70 00 93 D9 1F 00 63 0B

-0F 00 E9 72 93 86 12 00 B3 C7 D9 00 13 96 07 01

-93 59 06 01 13 F3 19 00 13 DE 19 00 63 0B 13 00

-E9 7E 93 85 1E 00 33 47 BE 00 93 13 07 01 13 DE

-03 01 21 81 B3 4F C5 01 93 78 F5 0F 13 FF 1F 00

-93 D0 18 00 93 59 1E 00 63 0B 0F 00 E9 72 93 86

-12 00 B3 C7 D9 00 13 96 07 01 93 59 06 01 33 C3

-19 00 93 7E 13 00 13 D7 28 00 93 DF 19 00 63 8B

-0E 00 E9 75 93 83 15 00 33 CE 7F 00 13 15 0E 01

-93 5F 05 01 33 CF EF 00 93 70 1F 00 93 D2 38 00

-13 D3 1F 00 63 8B 00 00 E9 76 13 86 16 00 B3 47

-C3 00 93 99 07 01 13 D3 09 01 B3 4E 53 00 13 F7

-1E 00 93 D3 48 00 13 5F 13 00 11 CB E9 75 13 8E

-15 00 33 45 CF 01 93 1F 05 01 13 DF 0F 01 B3 C0

-E3 01 93 F2 10 00 93 D6 58 00 93 5E 1F 00 63 8B

-02 00 69 76 93 09 16 00 B3 C7 3E 01 13 93 07 01

-93 5E 03 01 33 C7 D6 01 93 73 17 00 13 DE 68 00

-93 D0 1E 00 63 8B 03 00 E9 75 13 85 15 00 B3 CF

-A0 00 13 9F 0F 01 93 50 0F 01 B3 42 1E 00 13 F6

-12 00 93 D8 78 00 93 DE 10 00 11 CA E9 76 93 89

-16 00 B3 C7 3E 01 13 93 07 01 93 5E 03 01 33 C7

-D8 01 93 73 17 00 13 DF 1E 00 63 8B 03 00 69 7E

-93 05 1E 00 33 45 BF 00 93 1F 05 01 13 DF 0F 01

-13 78 F8 07 13 79 09 F0 B3 60 28 01 23 9C E4 03

-93 E4 00 08 23 10 9A 00 F2 40 33 05 04 41 62 44

-D2 44 42 49 B2 49 22 4A 05 61 82 80 14 5A CC 58

-50 56 88 54 EF B0 0F F1 33 46 A4 00 93 78 F5 0F

-93 1E 05 01 13 7E 16 00 13 DF 0E 01 93 DF 18 00

-13 53 14 00 63 0B 0E 00 E9 77 93 80 17 00 33 47

-13 00 93 12 07 01 13 D3 02 01 B3 46 F3 01 93 F3

-16 00 13 D8 28 00 13 5E 13 00 63 8B 03 00 E9 75

-13 84 15 00 33 45 8E 00 13 16 05 01 13 5E 06 01

-B3 4E 0E 01 93 FF 1E 00 93 D7 38 00 93 53 1E 00

-63 8B 0F 00 E9 70 13 87 10 00 B3 C2 E3 00 13 93

-02 01 93 53 03 01 B3 C6 F3 00 13 F8 16 00 93 D5

-48 00 93 DE 13 00 63 0B 08 00 69 74 13 06 14 00

-33 C5 CE 00 13 1E 05 01 93 5E 0E 01 B3 CF BE 00

-93 F7 1F 00 93 D0 58 00 13 D8 1E 00 91 CB 69 77

-93 02 17 00 33 43 58 00 93 13 03 01 13 D8 03 01

-B3 46 18 00 93 F5 16 00 13 D4 68 00 93 5F 18 00

-91 C9 69 76 13 0E 16 00 33 C5 CF 01 93 1E 05 01

-93 DF 0E 01 B3 C7 8F 00 93 F0 17 00 93 D8 78 00

-13 D8 1F 00 63 8B 00 00 69 77 93 02 17 00 33 43

-58 00 93 13 03 01 13 D8 03 01 93 76 18 00 13 55

-18 00 63 8B 16 01 E9 75 13 84 15 00 33 46 85 00

-13 1E 06 01 13 55 0E 01 93 5E 8F 00 B3 4F D5 01

-93 F0 1F 00 93 58 8F 00 93 53 15 00 13 5F 9F 00

-63 8B 00 00 E9 77 13 87 17 00 B3 C2 E3 00 13 93

-02 01 93 53 03 01 33 C8 E3 01 93 75 18 00 93 D6

-28 00 93 DE 13 00 91 C9 69 74 13 06 14 00 33 CE

-CE 00 13 15 0E 01 93 5E 05 01 B3 CF DE 00 93 F0

-1F 00 13 DF 38 00 93 D3 1E 00 63 8B 00 00 E9 77

-13 87 17 00 B3 C2 E3 00 13 93 02 01 93 53 03 01

-33 C8 E3 01 93 75 18 00 13 D4 48 00 93 DE 13 00

-91 C9 E9 76 13 86 16 00 33 CE CE 00 13 15 0E 01

-93 5E 05 01 B3 CF 8E 00 93 F0 1F 00 13 DF 58 00

-93 D3 1E 00 63 8B 00 00 E9 77 13 87 17 00 B3 C2

-E3 00 13 93 02 01 93 53 03 01 33 C8 E3 01 93 75

-18 00 13 D4 68 00 93 DE 13 00 91 C9 E9 76 13 86

-16 00 33 CE CE 00 13 15 0E 01 93 5E 05 01 B3 CF

-8E 00 93 F0 1F 00 93 D8 78 00 13 D3 1E 00 63 8B

-00 00 69 7F 93 07 1F 00 33 47 F3 00 93 12 07 01

-13 D3 02 01 93 73 13 00 13 55 13 00 63 8B 13 01

-69 78 93 05 18 00 33 44 B5 00 93 16 04 01 13 D5

-06 01 03 D6 C4 03 13 1E 05 01 03 D4 84 03 93 5E

-0E 41 E3 1E 06 84 23 9E A4 02 91 B8 93 03 20 02

-3A 88 63 54 77 00 13 08 20 02 CC 48 83 96 24 00

-03 96 04 00 88 4C A2 87 13 77 F8 0F EF E0 3F 81

-83 D5 E4 03 13 14 05 01 93 5E 04 41 03 D4 84 03

-E3 9F 05 80 23 9F A4 02 19 B8 93 0F 20 02 BA 88

-63 54 F7 01 93 08 20 02 03 96 04 00 83 96 24 00

-CC 48 88 4C CE 87 13 F7 F8 0F EF E0 4F FD 03 D6

-E4 03 13 1F 05 01 83 D9 84 03 13 58 0F 41 E3 15

-06 A8 23 9F A4 02 49 B4 CC 58 94 58 D0 54 88 54

-EF B0 4F C1 33 43 35 01 13 77 F5 0F 13 78 13 00

-42 05 93 5E 05 01 93 55 17 00 93 D7 19 00 63 0B

-08 00 E9 70 93 89 10 00 B3 C3 37 01 13 9E 03 01

-93 57 0E 01 B3 C6 F5 00 93 FF 16 00 93 58 27 00

-13 D8 17 00 63 8B 0F 00 69 76 13 0F 16 00 B3 42

-E8 01 13 93 02 01 13 58 03 01 33 45 18 01 93 75

-15 00 93 50 37 00 93 5F 18 00 91 C9 E9 79 93 83

-19 00 33 CE 7F 00 93 17 0E 01 93 DF 07 01 B3 C6

-F0 01 93 F8 16 00 13 5F 47 00 13 D5 1F 00 63 8B

-08 00 69 76 93 02 16 00 33 43 55 00 13 18 03 01

-13 55 08 01 B3 45 AF 00 93 F0 15 00 93 59 57 00

-93 58 15 00 63 8B 00 00 E9 73 13 8E 13 00 B3 C7

-C8 01 93 9F 07 01 93 D8 0F 01 B3 C6 38 01 13 FF

-16 00 93 52 67 00 93 D5 18 00 63 0B 0F 00 69 76

-13 03 16 00 33 C8 65 00 13 15 08 01 93 55 05 01

-B3 C0 55 00 93 F9 10 00 1D 83 93 D8 15 00 63 8B

-09 00 E9 73 13 8E 13 00 B3 C7 C8 01 93 9F 07 01

-93 D8 0F 01 93 F6 18 00 13 D8 18 00 63 8B E6 00

-69 7F 93 02 1F 00 33 46 58 00 13 13 06 01 13 58

-03 01 13 D5 8E 00 B3 45 05 01 93 F0 15 00 93 D9

-8E 00 93 5F 18 00 93 DE 9E 00 63 8B 00 00 69 77

-93 03 17 00 33 CE 7F 00 93 17 0E 01 93 DF 07 01

-B3 C8 FE 01 13 FF 18 00 93 D6 29 00 13 D5 1F 00

-63 0B 0F 00 E9 72 13 86 12 00 33 43 C5 00 13 18

-03 01 13 55 08 01 B3 C5 A6 00 93 F0 15 00 93 DE

-39 00 93 5F 15 00 63 8B 00 00 69 77 93 03 17 00

-33 CE 7F 00 93 17 0E 01 93 DF 07 01 B3 C8 FE 01

-13 FF 18 00 93 D2 49 00 13 D5 1F 00 63 0B 0F 00

-E9 76 13 86 16 00 33 43 C5 00 13 18 03 01 13 55

-08 01 B3 C5 A2 00 93 F0 15 00 93 DE 59 00 93 5F

-15 00 63 8B 00 00 69 77 93 03 17 00 33 CE 7F 00

-93 17 0E 01 93 DF 07 01 B3 C8 FE 01 13 FF 18 00

-93 D2 69 00 13 D5 1F 00 63 0B 0F 00 E9 76 13 86

-16 00 33 43 C5 00 13 18 03 01 13 55 08 01 B3 C5

-A2 00 93 F0 15 00 93 D9 79 00 93 5F 15 00 63 8B

-00 00 E9 7E 13 87 1E 00 B3 C3 EF 00 13 9E 03 01

-93 5F 0E 01 93 F7 1F 00 13 D5 1F 00 63 8B 37 01

-E9 78 13 8F 18 00 B3 42 E5 01 93 96 02 01 13 D5

-06 01 03 D6 C4 03 13 13 05 01 83 D9 84 03 13 58

-03 41 E3 13 06 80 23 9E A4 02 6F F0 EF FF 03 1E

-45 00 39 71 22 DC 6A C8 06 DE 26 DA 4A D8 4E D6

-52 D4 56 D2 5A D0 5E CE 62 CC 66 CA 6E C6 40 51

-2A 8D E3 52 C0 0B 2E 8B 01 48 81 4E 81 4C 01 4F

-13 7C F8 0F 63 4D 0B 38 E3 0D 04 08 A2 87 19 A0

-9C 43 99 C7 83 A2 47 00 83 93 22 00 E3 9A 63 FF

-22 8A 03 26 0A 00 01 47 23 20 EA 00 52 84 3D C6

-08 42 23 20 46 01 52 87 32 84 2D C1 14 41 10 C1

-32 87 2A 84 A1 CE 84 42 88 C2 2A 87 36 84 B9 C4

-03 A9 04 00 94 C0 36 87 26 84 63 01 09 04 83 28

-09 00 23 20 99 00 26 87 4A 84 63 89 08 02 83 A9

-08 00 23 A0 28 01 4A 87 46 84 63 81 09 02 03 AA

-09 00 23 A0 19 01 46 87 4E 84 63 09 0A 00 03 26

-0A 00 4E 87 23 20 EA 00 52 84 59 FA 63 8E 07 30

-83 AA 47 00 13 83 1C 00 93 1B 03 01 83 9D 0A 00

-93 DC 0B 01 93 FF 1D 00 63 8B 0F 00 13 D7 9D 40

-93 70 17 00 06 9F 93 12 0F 01 13 DF 02 01 83 A3

-07 00 63 8A 03 00 03 A6 03 00 90 C3 1C 40 23 A0

-F3 00 23 20 74 00 63 47 0B 00 05 0B 13 1A 0B 01

-13 5B 0A 41 05 08 93 1A 08 01 13 D8 0A 41 E3 11

-0E F1 13 9E 2C 00 33 03 DE 41 B3 0B 6F 00 93 9C

-0B 01 93 D4 0C 01 63 49 B0 66 03 2D 04 00 A2 8D

-83 2A 0D 00 83 2B 4D 00 83 A7 4A 00 03 A5 0A 00

-23 22 FD 00 23 A2 7A 01 23 20 AD 00 23 A0 0A 00

-63 48 0B 22 03 AC 4D 00 83 AD 0D 00 83 18 2C 00

-63 82 68 25 E3 98 0D FE 03 2B 04 00 83 2D 0B 00

-6E 87 83 29 44 00 69 78 93 00 18 00 03 9E 09 00

-13 13 0E 01 93 5C 03 01 13 DD 8C 00 13 7F FE 0F

-93 15 8E 01 13 15 8D 01 13 5A 1F 00 13 5C 2F 00

-13 59 3F 00 93 53 4F 00 93 52 5F 00 93 5F 6F 00

-13 56 7F 00 93 D7 85 41 93 59 85 41 13 DF 9C 00

-93 DE AC 00 13 DE BC 00 13 D3 CC 00 93 D8 DC 00

-13 D8 EC 00 93 D6 FC 00 B3 CC 97 00 13 FD 1C 00

-13 D5 14 00 63 08 0D 00 B3 44 15 00 93 95 04 01

-13 D5 05 01 B3 4C AA 00 13 FD 1C 00 05 81 63 08

-0D 00 B3 44 15 00 93 95 04 01 13 D5 05 01 B3 4C

-AC 00 13 FD 1C 00 05 81 63 08 0D 00 B3 44 15 00

-93 95 04 01 13 D5 05 01 B3 4C A9 00 13 FD 1C 00

-05 81 63 08 0D 00 B3 44 15 00 93 95 04 01 13 D5

-05 01 B3 CC A3 00 13 FD 1C 00 05 81 63 08 0D 00

-B3 44 15 00 93 95 04 01 13 D5 05 01 B3 CC A2 00

-13 FD 1C 00 05 81 63 08 0D 00 B3 44 15 00 93 95

-04 01 13 D5 05 01 B3 CC AF 00 13 FD 1C 00 05 81

-63 08 0D 00 B3 44 15 00 93 95 04 01 13 D5 05 01

-93 7C 15 00 93 55 15 00 63 88 CC 00 33 CD 15 00

-93 14 0D 01 93 D5 04 01 33 C5 B9 00 93 7C 15 00

-85 81 63 88 0C 00 33 CD 15 00 93 14 0D 01 93 D5

-04 01 33 45 BF 00 93 7C 15 00 85 81 63 88 0C 00

-33 CD 15 00 93 14 0D 01 93 D5 04 01 33 C5 BE 00

-93 7C 15 00 85 81 63 88 0C 00 33 CD 15 00 93 14

-0D 01 93 D5 04 01 33 45 BE 00 93 7C 15 00 85 81

-63 88 0C 00 33 CD 15 00 93 14 0D 01 93 D5 04 01

-33 45 B3 00 93 7C 15 00 85 81 63 88 0C 00 33 CD

-15 00 93 14 0D 01 93 D5 04 01 33 C5 B8 00 93 7C

-15 00 85 81 63 88 0C 00 33 CD 15 00 93 14 0D 01

-93 D5 04 01 33 45 B8 00 93 7C 15 00 85 81 63 88

-0C 00 33 CD 15 00 93 14 0D 01 93 D5 04 01 13 F5

-15 00 93 D4 15 00 63 08 D5 00 B3 CC 14 00 13 9D

-0C 01 93 54 0D 01 63 8A 0D 06 83 AD 0D 00 A9 BD

-83 AE 4D 00 83 AD 0D 00 83 C6 0E 00 63 8C 86 01

-E3 8C 0D DC 83 AE 4D 00 83 AD 0D 00 83 C6 0E 00

-E3 98 86 FF 03 2B 04 00 03 27 0B 00 D9 B3 63 02

-04 50 A2 87 21 A0 9C 43 E3 8C 07 C6 D8 43 83 40

-07 00 E3 9A 80 FF AD B1 48 43 85 0E 93 96 0E 01

-83 04 15 00 93 DE 06 01 13 F9 14 00 B3 08 2F 01

-93 99 08 01 13 DF 09 01 39 B3 83 2D 4B 00 01 4E

-01 43 23 A2 BA 01 23 22 7B 01 23 A0 EA 00 23 20

-5B 01 85 49 81 4C 05 4D 93 FA 79 00 85 0C A2 87

-01 47 63 8B 0A 04 05 4B 63 83 6A 05 89 4B 63 8D

-7A 03 8D 40 63 87 1A 02 11 4A 63 81 4A 03 15 4C

-63 8B 8A 01 19 49 63 85 2A 01 1C 40 05 47 A5 C7

-9C 43 05 07 AD C3 9C 43 05 07 B1 CF 9C 43 05 07

-B9 CB 9C 43 05 07 A1 CB 9C 43 05 07 A9 C7 9C 43

-05 07 B1 C3 63 01 37 05 9C 43 05 07 BA 83 85 CF

-9C 43 05 07 8D CB 9C 43 13 87 23 00 8D C7 9C 43

-13 87 33 00 8D C3 9C 43 13 87 43 00 89 CF 9C 43

-13 87 53 00 89 CB 9C 43 13 87 63 00 89 C7 9C 43

-13 87 73 00 E1 F3 CE 86 25 C7 AD CE A5 CF 83 2D

-44 00 83 AA 47 00 03 9B 0D 00 83 9B 2A 00 83 95

-2D 00 93 10 0B 01 13 DC 00 01 13 75 0B F0 13 59

-8C 00 B3 63 25 01 23 90 7D 00 83 98 0A 00 B3 8E

-75 41 13 98 08 01 13 5A 08 01 93 F2 08 F0 93 5F

-8A 00 33 E6 F2 01 23 90 CA 00 63 55 D0 03 3E 8F

-9C 43 FD 16 63 0D 0E 00 23 20 EE 01 7A 8E 51 FF

-91 CE 85 C3 3E 8F FD 16 9C 43 E3 17 0E FE 7A 83

-7A 8E F5 B7 22 8F 7D 17 00 40 E9 BF 99 C3 3E 84

-E1 BD 23 20 0E 00 63 8E AC 01 86 09 63 08 03 00

-9A 87 01 4E 01 43 81 4C 3E 84 7D BD 23 20 00 00

-02 90 03 27 03 00 63 01 07 22 03 24 43 00 E9 72

-93 8C 12 00 83 1F 04 00 13 96 0F 01 93 56 06 01

-93 DE 86 00 13 FF FF 0F 13 9E 8F 01 13 93 8E 01

-93 55 8E 41 13 5D 1F 00 93 5D 2F 00 93 5A 3F 00

-13 5B 4F 00 93 5B 5F 00 93 50 6F 00 13 5C 7F 00

-13 55 83 41 13 D9 96 00 93 D3 A6 00 93 D7 B6 00

-93 D9 C6 00 93 D8 D6 00 13 D8 E6 00 13 D4 F6 00

-33 CA 95 00 93 72 1A 00 13 D6 14 00 63 88 02 00

-B3 44 96 01 93 9F 04 01 13 D6 0F 01 B3 46 CD 00

-13 FF 16 00 13 53 16 00 63 08 0F 00 B3 4E 93 01

-13 9E 0E 01 13 53 0E 01 33 CA 6D 00 93 72 1A 00

-13 56 13 00 63 88 02 00 B3 44 96 01 93 9F 04 01

-13 D6 0F 01 B3 C6 CA 00 13 FF 16 00 13 53 16 00

-63 08 0F 00 B3 4E 93 01 13 9E 0E 01 13 53 0E 01

-33 4A 6B 00 93 72 1A 00 13 56 13 00 63 88 02 00

-B3 44 96 01 93 9F 04 01 13 D6 0F 01 B3 C6 CB 00

-13 FF 16 00 13 53 16 00 63 08 0F 00 B3 4E 93 01

-13 9E 0E 01 13 53 0E 01 33 CA 60 00 93 72 1A 00

-13 56 13 00 63 88 02 00 B3 44 96 01 93 9F 04 01

-13 D6 0F 01 93 76 16 00 13 5E 16 00 63 88 86 01

-33 4F 9E 01 93 1E 0F 01 13 DE 0E 01 33 43 C5 01

-13 7A 13 00 93 5F 1E 00 63 08 0A 00 B3 C2 9F 01

-93 94 02 01 93 DF 04 01 33 46 F9 01 93 76 16 00

-13 DE 1F 00 99 C6 33 4F 9E 01 93 1E 0F 01 13 DE

-0E 01 33 C3 C3 01 13 7A 13 00 93 5F 1E 00 63 08

-0A 00 B3 C2 9F 01 93 94 02 01 93 DF 04 01 33 C6

-F7 01 93 76 16 00 13 DE 1F 00 99 C6 33 4F 9E 01

-93 1E 0F 01 13 DE 0E 01 33 C3 C9 01 13 7A 13 00

-93 5F 1E 00 63 08 0A 00 B3 C2 9F 01 93 94 02 01

-93 DF 04 01 33 C6 F8 01 93 76 16 00 13 DE 1F 00

-99 C6 33 4F 9E 01 93 1E 0F 01 13 DE 0E 01 33 43

-C8 01 13 7A 13 00 93 5F 1E 00 63 08 0A 00 B3 C2

-9F 01 93 94 02 01 93 DF 04 01 13 F6 1F 00 93 D4

-1F 00 63 08 86 00 B3 C6 94 01 13 9F 06 01 93 54

-0F 01 18 43 E3 16 07 E4 F2 50 62 54 42 59 B2 59

-22 5A 92 5A 02 5B F2 4B 62 4C D2 4C 42 4D B2 4D

-26 85 D2 54 21 61 82 80 05 4A E3 09 04 DA 81 4C

-81 4A 81 4B 93 75 7A 00 85 0B 22 86 01 49 B1 C9

-85 4D 63 83 B5 05 89 4F 63 8D F5 03 0D 47 63 87

-E5 02 91 40 63 81 15 02 95 42 63 8B 55 00 19 4F

-63 85 E5 01 10 40 05 49 25 C6 10 42 05 09 2D C2

-10 42 05 09 31 CE 10 42 05 09 39 CA 10 42 05 09

-21 CA 10 42 05 09 29 C6 10 42 05 09 31 C2 63 01

-49 05 10 42 05 09 CA 83 05 CE 10 42 05 09 0D CA

-10 42 13 89 23 00 0D C6 10 42 13 89 33 00 0D C2

-10 42 13 89 43 00 09 CE 10 42 13 89 53 00 09 CA

-10 42 13 89 63 00 09 C6 10 42 13 89 73 00 61 F2

-A2 89 D2 8D 32 84 63 07 09 02 63 80 0D 04 15 CC

-4C 40 03 A5 49 00 6A 86 EF E0 5F C8 63 57 A0 02

-A2 87 00 40 FD 1D 63 8F 0C 00 23 A0 FC 00 BE 8C

-E3 1D 09 FC 63 80 0D 02 19 CC A2 87 FD 1D 00 40

-E3 95 0C FE BE 8A BE 8C E5 B7 CE 87 7D 19 83 A9

-09 00 D1 BF 01 F8 23 A0 0C 00 05 44 63 89 8B 00

-06 0A 56 84 DD BD 01 4C 2E 8B 81 44 AD B8 56 84

-AD B8 83 27 00 00 02 90 01 11 26 CA 44 4D 22 CC

-4A C8 4E C6 06 CE 69 79 23 2C 05 02 23 2E 05 02

-AA 89 01 44 05 09 63 8E 04 40 85 45 4E 85 EF F0

-0F F0 83 D7 89 03 13 77 F5 0F 13 56 17 00 B3 C6

-A7 00 93 F2 16 00 93 D3 17 00 63 88 02 00 B3 C0

-23 01 13 93 00 01 93 53 03 01 B3 C5 C3 00 13 F8

-15 00 93 58 27 00 13 DF 13 00 63 08 08 00 33 4E

-2F 01 93 1E 0E 01 13 DF 0E 01 B3 4F 1F 01 93 F6

-1F 00 93 52 37 00 93 50 1F 00 99 C6 B3 C7 20 01

-13 96 07 01 93 50 06 01 33 C3 50 00 93 73 13 00

-93 55 47 00 13 DE 10 00 63 88 03 00 33 48 2E 01

-93 18 08 01 13 DE 08 01 B3 4E BE 00 13 FF 1E 00

-93 5F 57 00 93 57 1E 00 63 08 0F 00 B3 C6 27 01

-93 92 06 01 93 D7 02 01 33 C6 F7 01 93 70 16 00

-13 53 67 00 13 D8 17 00 63 88 00 00 B3 43 28 01

-93 95 03 01 13 D8 05 01 B3 48 68 00 13 FE 18 00

-1D 83 93 5F 18 00 63 08 0E 00 B3 CE 2F 01 13 9F

-0E 01 93 5F 0F 01 93 F6 1F 00 13 D6 1F 00 63 88

-E6 00 B3 42 26 01 93 97 02 01 13 D6 07 01 21 81

-B3 40 C5 00 13 73 F5 0F 93 F3 10 00 93 55 13 00

-13 5E 16 00 63 88 03 00 33 48 2E 01 93 18 08 01

-13 DE 08 01 33 47 BE 00 93 7E 17 00 13 5F 23 00

-93 52 1E 00 63 88 0E 00 B3 CF 22 01 93 96 0F 01

-93 D2 06 01 B3 C7 E2 01 13 F6 17 00 13 55 33 00

-93 D5 12 00 19 C6 B3 C0 25 01 93 93 00 01 93 D5

-03 01 33 C8 A5 00 93 78 18 00 13 5E 43 00 13 DF

-15 00 63 88 08 00 33 47 2F 01 93 1E 07 01 13 DF

-0E 01 B3 4F CF 01 93 F2 1F 00 93 56 53 00 13 55

-1F 00 63 88 02 00 B3 47 25 01 13 96 07 01 13 55

-06 01 B3 40 D5 00 93 F3 10 00 93 55 63 00 13 5E

-15 00 63 88 03 00 33 48 2E 01 93 18 08 01 13 DE

-08 01 33 47 BE 00 93 7E 17 00 13 53 73 00 93 52

-1E 00 63 88 0E 00 33 CF 22 01 93 1F 0F 01 93 D2

-0F 01 B3 C6 62 00 13 F6 16 00 93 D0 12 00 19 C6

-B3 C7 20 01 13 95 07 01 93 50 05 01 FD 55 23 9C

-19 02 4E 85 EF F0 AF CF 83 D3 89 03 13 78 F5 0F

-13 5E 18 00 B3 C5 A3 00 93 F8 15 00 13 D3 13 00

-63 88 08 00 33 47 23 01 93 1E 07 01 13 D3 0E 01

-33 4F C3 01 93 7F 1F 00 93 52 28 00 93 57 13 00

-63 88 0F 00 B3 C6 27 01 13 96 06 01 93 57 06 01

-B3 C0 57 00 93 F3 10 00 93 55 38 00 13 D7 17 00

-63 88 03 00 B3 48 27 01 13 9E 08 01 13 57 0E 01

-B3 4E B7 00 13 F3 1E 00 13 5F 48 00 93 57 17 00

-63 08 03 00 B3 CF 27 01 93 92 0F 01 93 D7 02 01

-B3 C6 E7 01 93 F0 16 00 13 56 58 00 93 D8 17 00

-63 88 00 00 B3 C3 28 01 93 95 03 01 93 D8 05 01

-33 CE C8 00 13 77 1E 00 93 5E 68 00 93 DF 18 00

-19 C7 33 C3 2F 01 13 1F 03 01 93 5F 0F 01 B3 C2

-DF 01 93 F6 12 00 13 58 78 00 13 D6 1F 00 99 C6

-B3 47 26 01 93 90 07 01 13 D6 00 01 93 73 16 00

-13 5E 16 00 63 88 03 01 B3 45 2E 01 93 98 05 01

-13 DE 08 01 21 81 33 47 C5 01 93 7E F5 0F 13 73

-17 00 13 DF 1E 00 13 58 1E 00 63 08 03 00 B3 4F

-28 01 93 92 0F 01 13 D8 02 01 B3 46 E8 01 93 F0

-16 00 13 D6 2E 00 93 55 18 00 63 88 00 00 B3 C7

-25 01 93 93 07 01 93 D5 03 01 B3 C8 C5 00 13 FE

-18 00 13 D5 3E 00 13 DF 15 00 63 08 0E 00 33 47

-2F 01 13 13 07 01 13 5F 03 01 B3 4F AF 00 93 F2

-1F 00 13 D8 4E 00 13 56 1F 00 63 88 02 00 B3 46

-26 01 93 90 06 01 13 D6 00 01 B3 47 06 01 93 F3

-17 00 93 D5 5E 00 13 55 16 00 63 88 03 00 B3 48

-25 01 13 9E 08 01 13 55 0E 01 33 47 B5 00 13 73

-17 00 13 DF 6E 00 13 58 15 00 63 08 03 00 B3 4F

-28 01 93 92 0F 01 13 D8 02 01 B3 46 E8 01 93 F0

-16 00 93 DE 7E 00 93 53 18 00 63 88 00 00 33 C6

-23 01 93 17 06 01 93 D3 07 01 B3 C5 D3 01 93 F8

-15 00 13 D7 13 00 63 88 08 00 33 4E 27 01 13 15

-0E 01 13 57 05 01 23 9C E9 02 01 CC 05 04 E3 96

-84 BE F2 40 62 44 D2 44 42 49 B2 49 01 45 05 61

-82 80 23 9D E9 02 05 44 E3 85 84 FE 05 44 F1 B6

-95 47 63 E5 A7 04 B7 82 00 80 0A 05 13 83 42 71

-B3 03 65 00 83 A5 03 00 82 85 37 96 00 80 03 25

-C6 C4 82 80 B7 98 00 80 03 A5 48 C5 82 80 37 98

-00 80 03 25 08 C5 82 80 37 87 00 80 03 25 47 77

-82 80 B7 86 00 80 03 A5 06 77 82 80 01 45 82 80

-B3 46 B5 00 93 F2 16 00 13 57 15 00 13 D6 15 00

-63 8B 02 00 69 73 93 03 13 00 B3 47 76 00 93 95

-07 01 13 D6 05 01 33 48 E6 00 93 78 18 00 13 5E

-25 00 93 52 16 00 63 8B 08 00 E9 7E 13 8F 1E 00

-B3 CF E2 01 93 96 0F 01 93 D2 06 01 33 C7 C2 01

-13 73 17 00 93 53 35 00 93 D8 12 00 63 0B 03 00

-E9 75 13 86 15 00 B3 C7 C8 00 13 98 07 01 93 58

-08 01 33 CE 78 00 93 7E 1E 00 13 5F 45 00 13 D3

-18 00 63 8B 0E 00 E9 7F 93 86 1F 00 B3 42 D3 00

-13 97 02 01 13 53 07 01 B3 43 E3 01 93 F5 13 00

-13 56 55 00 93 5E 13 00 91 C9 69 78 93 08 18 00

-B3 C7 1E 01 13 9E 07 01 93 5E 0E 01 33 CF CE 00

-93 7F 1F 00 93 56 65 00 93 D5 1E 00 63 8B 0F 00

-E9 72 13 87 12 00 33 C3 E5 00 93 13 03 01 93 D5

-03 01 33 C6 D5 00 13 78 16 00 93 58 75 00 13 DF

-15 00 63 0B 08 00 E9 77 13 8E 17 00 33 45 CF 01

-93 1E 05 01 13 DF 0E 01 93 7F 1F 00 13 55 1F 00

-63 8B 1F 01 E9 76 93 82 16 00 33 47 55 00 13 13

-07 01 13 55 03 01 82 80 B3 C6 A5 00 13 77 F5 0F

-93 F2 16 00 AA 87 13 56 17 00 13 D8 15 00 63 8B

-02 00 E9 75 13 83 15 00 B3 43 68 00 13 95 03 01

-13 58 05 01 B3 48 C8 00 13 FE 18 00 93 5E 27 00

-93 55 18 00 63 0B 0E 00 69 7F 93 0F 1F 00 B3 C6

-F5 01 93 92 06 01 93 D5 02 01 33 C6 D5 01 13 73

-16 00 93 53 37 00 93 DE 15 00 63 0B 03 00 69 78

-93 08 18 00 33 C5 1E 01 13 1E 05 01 93 5E 0E 01

-33 CF 7E 00 93 7F 1F 00 93 56 47 00 93 D3 1E 00

-63 8B 0F 00 E9 72 93 85 12 00 33 C6 B3 00 13 13

-06 01 93 53 03 01 33 C8 D3 00 93 78 18 00 13 5E

-57 00 93 D2 13 00 63 8B 08 00 E9 7E 13 8F 1E 00

-33 C5 E2 01 93 1F 05 01 93 D2 0F 01 B3 C6 C2 01

-93 F5 16 00 13 53 67 00 13 DE 12 00 91 C9 69 76

-93 03 16 00 33 48 7E 00 93 18 08 01 13 DE 08 01

-B3 4E 6E 00 13 FF 1E 00 1D 83 93 55 1E 00 63 0B

-0F 00 E9 7F 93 82 1F 00 33 C5 55 00 93 16 05 01

-93 D5 06 01 13 F3 15 00 13 DE 15 00 63 0B E3 00

-69 76 93 03 16 00 33 48 7E 00 93 18 08 01 13 DE

-08 01 93 DE 87 00 33 CF CE 01 93 7F 1F 00 13 D7

-87 00 13 53 1E 00 A5 83 63 8B 0F 00 E9 72 93 86

-12 00 33 45 D3 00 93 15 05 01 13 D3 05 01 33 C6

-67 00 93 73 16 00 13 58 27 00 93 5F 13 00 63 8B

-03 00 E9 78 13 8E 18 00 B3 CE CF 01 13 9F 0E 01

-93 5F 0F 01 B3 C7 0F 01 93 F2 17 00 93 56 37 00

-93 D3 1F 00 63 8B 02 00 E9 75 13 83 15 00 33 C5

-63 00 13 16 05 01 93 53 06 01 33 C8 D3 00 93 78

-18 00 13 5E 47 00 93 D2 13 00 63 8B 08 00 E9 7E

-13 8F 1E 00 B3 CF E2 01 93 97 0F 01 93 D2 07 01

-B3 C6 C2 01 93 F5 16 00 13 53 57 00 93 D8 12 00

-91 C9 69 76 93 03 16 00 33 C5 78 00 13 18 05 01

-93 58 08 01 33 CE 68 00 93 7E 1E 00 13 5F 67 00

-93 D5 18 00 63 8B 0E 00 E9 7F 93 87 1F 00 B3 C2

-F5 00 93 96 02 01 93 D5 06 01 33 C3 E5 01 13 76

-13 00 1D 83 13 DE 15 00 11 CA E9 73 13 88 13 00

-33 45 0E 01 93 18 05 01 13 DE 08 01 93 7E 1E 00

-13 55 1E 00 63 8B EE 00 69 7F 93 0F 1F 00 B3 47

-F5 01 93 92 07 01 13 D5 02 01 82 80 33 C6 A5 00

-93 76 F5 0F 13 17 05 01 93 72 16 00 AA 87 13 53

-07 01 13 D8 16 00 13 DE 15 00 63 8B 02 00 69 75

-93 03 15 00 B3 45 7E 00 93 98 05 01 13 DE 08 01

-B3 4E 0E 01 13 FF 1E 00 93 DF 26 00 13 55 1E 00

-63 0B 0F 00 69 76 93 02 16 00 33 47 55 00 13 18

-07 01 13 55 08 01 B3 43 F5 01 93 F8 13 00 93 D5

-36 00 93 52 15 00 63 8B 08 00 69 7E 93 0E 1E 00

-33 CF D2 01 93 1F 0F 01 93 D2 0F 01 33 C6 B2 00

-13 77 16 00 13 D8 46 00 13 DE 12 00 11 CB E9 73

-93 88 13 00 33 45 1E 01 93 15 05 01 13 DE 05 01

-B3 4E 0E 01 13 FF 1E 00 93 DF 56 00 93 53 1E 00

-63 0B 0F 00 E9 72 13 86 12 00 33 C7 C3 00 13 18

-07 01 93 53 08 01 B3 C8 F3 01 93 F5 18 00 13 DE

-66 00 93 D2 13 00 91 C9 E9 7E 13 8F 1E 00 33 C5

-E2 01 93 1F 05 01 93 D2 0F 01 33 C6 C2 01 13 77

-16 00 9D 82 13 DE 12 00 11 CB 69 78 93 03 18 00

-B3 48 7E 00 93 95 08 01 13 DE 05 01 93 7E 1E 00

-13 58 1E 00 63 94 DE 38 13 56 83 00 33 47 C8 00

-93 73 17 00 93 56 83 00 13 5F 18 00 13 53 93 00

-63 8B 03 00 E9 78 93 85 18 00 33 4E BF 00 93 1E

-0E 01 13 DF 0E 01 B3 4F 6F 00 93 F2 1F 00 13 D8

-26 00 13 53 1F 00 63 8B 02 00 69 76 13 07 16 00

-33 45 E3 00 93 13 05 01 13 D3 03 01 B3 48 03 01

-93 F5 18 00 13 DE 36 00 13 58 13 00 91 C9 E9 7E

-13 8F 1E 00 B3 4F E8 01 93 92 0F 01 13 D8 02 01

-33 46 C8 01 93 73 16 00 13 D7 46 00 13 5E 18 00

-63 8B 03 00 69 73 93 08 13 00 33 45 1E 01 93 15

-05 01 13 DE 05 01 B3 4E EE 00 13 FF 1E 00 93 DF

-56 00 13 53 1E 00 63 0B 0F 00 E9 72 13 88 12 00

-33 46 03 01 93 13 06 01 13 D3 03 01 33 47 F3 01

-93 78 17 00 93 D5 66 00 93 5F 13 00 63 8B 08 00

-69 7E 93 0E 1E 00 33 C5 DF 01 13 1F 05 01 93 5F

-0F 01 B3 C2 BF 00 13 F8 12 00 9D 82 93 D8 1F 00

-63 0B 08 00 69 76 93 03 16 00 33 C3 78 00 13 17

-03 01 93 58 07 01 93 F5 18 00 93 DF 18 00 63 8B

-D5 00 69 7E 93 0E 1E 00 33 C5 DF 01 13 1F 05 01

-93 5F 0F 01 93 D2 07 01 33 C8 5F 00 93 F3 F2 0F

-93 76 18 00 C1 83 13 D6 13 00 13 DE 1F 00 91 CA

-69 73 13 07 13 00 B3 48 EE 00 93 95 08 01 13 DE

-05 01 B3 4E CE 00 13 FF 1E 00 93 DF 23 00 13 53

-1E 00 63 0B 0F 00 E9 72 13 88 12 00 33 45 03 01

-93 16 05 01 13 D3 06 01 33 46 F3 01 13 77 16 00

-93 D8 33 00 93 5F 13 00 11 CB E9 75 13 8E 15 00

-B3 CE CF 01 13 9F 0E 01 93 5F 0F 01 B3 C2 1F 01

-13 F8 12 00 93 D6 43 00 93 D8 1F 00 63 0B 08 00

-69 73 13 06 13 00 33 C5 C8 00 13 17 05 01 93 58

-07 01 B3 C5 D8 00 13 FE 15 00 93 DE 53 00 13 D3

-18 00 63 0B 0E 00 69 7F 93 0F 1F 00 B3 42 F3 01

-13 98 02 01 13 53 08 01 B3 46 D3 01 13 F6 16 00

-13 D7 63 00 93 5E 13 00 11 CA E9 78 93 85 18 00

-33 C5 BE 00 13 1E 05 01 93 5E 0E 01 33 CF EE 00

-93 7F 1F 00 93 D3 73 00 13 D6 1E 00 63 8B 0F 00

-E9 72 13 88 12 00 33 43 06 01 93 16 03 01 13 D6

-06 01 13 77 16 00 93 5E 16 00 63 17 77 12 13 DF

-87 00 B3 4F DF 01 93 F3 1F 00 93 D2 87 00 13 D7

-1E 00 A5 83 63 8B 03 00 69 78 13 03 18 00 B3 46

-67 00 13 96 06 01 13 57 06 01 B3 48 F7 00 93 F5

-18 00 13 DE 22 00 93 53 17 00 91 C9 E9 7E 13 8F

-1E 00 33 C5 E3 01 93 1F 05 01 93 D3 0F 01 B3 47

-7E 00 13 F8 17 00 13 D3 32 00 93 D5 13 00 63 0B

-08 00 E9 76 13 86 16 00 33 C7 C5 00 93 18 07 01

-93 D5 08 01 33 4E B3 00 93 7E 1E 00 13 DF 42 00

-13 D8 15 00 63 8B 0E 00 E9 7F 93 83 1F 00 33 45

-78 00 93 17 05 01 13 D8 07 01 33 43 0F 01 13 76

-13 00 93 D6 52 00 93 5E 18 00 11 CA 69 77 93 08

-17 00 B3 C5 1E 01 13 9E 05 01 93 5E 0E 01 33 CF

-D6 01 93 7F 1F 00 93 D3 62 00 13 D6 1E 00 63 8B

-0F 00 E9 77 13 88 17 00 33 45 06 01 13 13 05 01

-13 56 03 01 B3 C6 C3 00 93 F8 16 00 93 D2 72 00

-13 5F 16 00 63 8B 08 00 69 77 93 05 17 00 33 4E

-BF 00 93 1E 0E 01 13 DF 0E 01 93 7F 1F 00 13 55

-1F 00 63 8A 5F 00 E9 73 93 87 13 00 33 48 F5 00

-13 15 08 01 41 81 82 80 E9 78 93 85 18 00 33 C5

-BE 00 13 1E 05 01 93 5E 0E 01 D1 B5 69 7F 93 0F

-1F 00 33 45 F8 01 93 12 05 01 13 D8 02 01 AD B1

-B3 C6 A5 00 13 77 F5 0F 93 17 05 01 93 F2 16 00

-13 D3 07 01 13 56 17 00 93 D8 15 00 63 8B 02 00

-E9 75 93 83 15 00 33 C5 78 00 13 18 05 01 93 58

-08 01 33 CE C8 00 93 7E 1E 00 13 5F 27 00 93 D5

-18 00 63 8B 0E 00 E9 7F 93 86 1F 00 B3 C2 D5 00

-93 97 02 01 93 D5 07 01 33 C6 E5 01 93 73 16 00

-13 58 37 00 13 DF 15 00 63 8B 03 00 E9 78 13 8E

-18 00 33 45 CF 01 93 1E 05 01 13 DF 0E 01 B3 4F

-0F 01 93 F2 1F 00 93 56 47 00 13 58 1F 00 63 8B

-02 00 E9 77 93 85 17 00 33 46 B8 00 93 13 06 01

-13 D8 03 01 B3 48 D8 00 13 FE 18 00 93 5E 57 00

-93 57 18 00 63 0B 0E 00 69 7F 93 0F 1F 00 33 C5

-F7 01 93 12 05 01 93 D7 02 01 B3 C6 D7 01 93 F5

-16 00 93 53 67 00 93 DE 17 00 91 C9 69 76 13 08

-16 00 B3 C8 0E 01 13 9E 08 01 93 5E 0E 01 33 CF

-7E 00 93 7F 1F 00 1D 83 93 D5 1E 00 63 8B 0F 00

-E9 72 93 87 12 00 33 C5 F5 00 93 16 05 01 93 D5

-06 01 93 F3 15 00 93 DE 15 00 63 8B E3 00 69 76

-13 08 16 00 B3 C8 0E 01 13 9E 08 01 93 5E 0E 01

-13 5F 83 00 B3 4F DF 01 93 F2 1F 00 13 57 83 00

-93 D3 1E 00 13 53 93 00 63 8B 02 00 E9 77 93 86

-17 00 33 C5 D3 00 93 15 05 01 93 D3 05 01 33 46

-73 00 13 78 16 00 93 58 27 00 93 D2 13 00 63 0B

-08 00 69 7E 93 0E 1E 00 33 CF D2 01 93 1F 0F 01

-93 D2 0F 01 33 C3 12 01 93 77 13 00 93 56 37 00

-13 D8 12 00 91 CB E9 75 93 83 15 00 33 45 78 00

-13 16 05 01 13 58 06 01 B3 48 D8 00 13 FE 18 00

-93 5E 47 00 93 55 18 00 63 0B 0E 00 69 7F 93 0F

-1F 00 B3 C2 F5 01 13 93 02 01 93 55 03 01 B3 C7

-D5 01 93 F3 17 00 93 56 57 00 13 DE 15 00 63 8B

-03 00 69 76 13 08 16 00 33 45 0E 01 93 18 05 01

-13 DE 08 01 B3 4E DE 00 13 FF 1E 00 93 5F 67 00

-93 53 1E 00 63 0B 0F 00 E9 72 13 83 12 00 B3 C5

-63 00 93 97 05 01 93 D3 07 01 B3 C6 F3 01 13 F6

-16 00 1D 83 93 DE 13 00 11 CA 69 78 93 08 18 00

-33 C5 1E 01 13 1E 05 01 93 5E 0E 01 13 FF 1E 00

-13 D5 1E 00 63 0B EF 00 E9 7F 93 82 1F 00 33 43

-55 00 93 15 03 01 13 D5 05 01 82 80 01 45 82 80

-73 27 00 B0 B7 97 00 80 23 A4 E7 C4 82 80 73 27

-00 B0 B7 97 00 80 23 A2 E7 C4 82 80 B7 97 00 80

-B7 92 00 80 03 A5 47 C4 03 A3 82 C4 33 05 65 40

-82 80 93 07 80 3E 33 55 F5 02 82 80 85 47 23 00

-F5 00 82 80 23 00 05 00 82 80 AA 82 2A 96 63 56

-C5 00 23 00 B5 00 05 05 DD BF 16 85 82 80 82 80

-75 71 06 C7 B7 97 00 80 B7 90 00 80 B7 82 00 80

-03 A6 47 C5 83 A5 00 C5 03 A3 42 77 37 87 00 80

-83 26 07 77 B7 93 00 80 22 C5 26 C3 13 14 06 01

-93 14 03 01 83 A8 C3 C4 13 56 04 41 13 D8 04 41

-05 45 4A C1 CE DE D2 DC D6 DA DA D8 DE D6 E2 D4

-E6 D2 EA D0 EE CE 23 07 A1 04 23 16 C1 00 23 17

-B1 00 23 18 01 01 36 D4 63 93 08 00 9D 48 32 49

-46 D6 E3 1B 09 3C E3 0F 08 42 B2 59 B7 9C 00 80

-13 8D 8C C5 13 F7 29 00 93 FD 19 00 33 3E E0 00

-6A CA 23 16 01 04 93 FE 49 00 6E 8F B3 85 CD 01

-63 88 0E 00 93 8F 15 00 93 90 0F 01 93 D5 00 01

-93 02 00 7D 33 D5 B2 02 01 44 2A D2 E3 10 0F 3E

-E3 10 07 3C E3 95 0E 3A 63 10 0F 1C 63 17 07 1C

-13 F5 49 00 19 C5 02 56 83 15 C1 00 12 55 EF C0

-6F FC 22 5A 63 0F 0A 6C 37 9C 00 80 B7 9C 00 80

-13 0D C1 00 F3 23 00 B0 23 24 7C C4 6A 85 EF E0

-BF F6 73 2D 00 B0 03 55 C1 00 81 45 23 A2 AC C5

-EF F0 8F D2 AA 85 03 55 E1 00 03 2C 8C C4 EF F0

-AF D1 AA 85 03 55 01 01 B3 0A 8D 41 EF F0 CF D0

-92 54 AA 85 93 9C 04 01 13 D5 0C 01 EF F0 CF CF

-21 68 93 06 58 B0 AA 89 E3 06 D5 3A 63 E6 A6 16

-89 6D 93 82 2D 8F E3 01 55 3C 15 6D 93 00 FD EA

-E3 12 15 3E B7 8C 00 80 13 85 4C 7D EF 90 4F 86

-93 0B 8D 60 39 68 9D 66 13 0A 48 5A 5E 8C 13 8B

-96 A7 B7 8C 00 80 83 A8 CC 76 01 49 01 4D E3 87

-08 3A B7 9D 00 80 89 A8 03 D6 A4 FF 63 03 46 0F

-37 97 00 80 D2 86 EA 85 13 05 87 8C EF 90 4F 82

-83 D7 C4 FF 13 8E 17 00 93 1E 0E 01 93 DF 0E 01

-23 9E F4 FF 05 0D 83 A2 CC 76 7E 99 93 15 0D 01

-13 1F 09 01 13 13 09 01 13 DD 05 01 13 54 0F 01

-13 59 03 41 63 74 5D 10 13 14 4D 00 33 06 A4 01

-13 15 26 00 98 08 B3 04 A7 00 83 A7 C4 FD 23 9E

-04 FE 13 FE 17 00 63 02 0E 02 03 D6 64 FF 63 0E

-66 01 DA 86 EA 85 13 85 4D 86 EF 80 7F FB 83 DE

-C4 FF 93 8F 1E 00 23 9E F4 FF B3 05 A4 01 93 92

-25 00 13 0F 01 05 B3 04 5F 00 83 A8 C4 FD 13 F3

-28 00 63 06 03 02 03 D6 84 FF 63 02 86 03 B7 93

-00 80 DE 86 EA 85 13 85 43 89 EF 80 7F F7 03 D8

-C4 FF 83 A8 C4 FD 93 06 18 00 23 9E D4 FE 6A 94

-13 16 24 00 88 08 93 F0 48 00 B3 04 C5 00 E3 9D

-00 F0 83 DF C4 FF 3D BF E2 45 EF 80 3F FF B2 59

-2A D8 13 F7 29 00 E3 0D 07 E2 83 17 E1 00 03 16

-C1 00 F2 45 12 55 13 99 07 01 54 18 33 66 C9 00

-EF B0 8F DB B2 59 29 BD 25 6A 13 07 2A A0 E3 09

-E5 20 BD 6B 13 84 5B 9F E3 1E 85 26 B7 95 00 80

-89 64 13 85 85 80 93 8B 74 FD 39 6B EF 80 5F EF

-13 0A AA E3 5E 8C 13 0B 4B 71 61 BD 92 54 B7 9B

-00 80 A6 85 13 85 8B 8F EF 80 9F ED 37 9C 00 80

-D6 85 13 05 0C 91 13 0B 80 3E EF 80 7F EC B3 DD

-6A 03 B7 93 00 80 13 85 83 92 EE 85 EF 80 5F EB

-13 08 70 3E 63 6F 58 45 B7 9A 00 80 05 04 13 85

-0A 94 13 1D 04 01 EF 80 BF E9 13 59 0D 41 03 AF

-CC 76 22 53 B7 95 00 80 13 85 C5 99 B3 05 E3 03

-37 9A 00 80 B7 9B 00 80 37 9C 00 80 37 9B 00 80

-B7 9D 00 80 EF 80 DF E6 93 05 4A 9B 13 85 0B 9C

-EF 80 1F E6 93 05 8C 9D 13 05 4B 9F EF 80 5F E5

-B7 93 00 80 93 85 CD A0 13 85 43 A1 EF 80 5F E4

-CE 85 B7 99 00 80 13 85 C9 A2 EF 80 7F E3 32 5A

-13 78 1A 00 63 05 08 0E 83 A8 CC 76 63 81 08 0E

-01 4D B7 94 00 80 93 16 4D 00 B3 80 A6 01 13 96

-20 00 98 08 B3 07 C7 00 03 D6 67 FF EA 85 13 85

-84 A4 EF 80 FF DF 93 0E 1D 00 93 9F 0E 01 93 DA

-0F 01 93 92 4A 00 03 AE CC 76 33 84 52 01 13 1D

-24 00 13 0F 01 05 13 85 84 A4 33 03 AF 01 D6 85

-63 F6 CA 09 03 56 63 FF 93 09 01 05 EF 80 5F DC

-93 85 1A 00 93 9B 05 01 13 DC 0B 01 13 1B 4C 00

-03 AA CC 76 B3 0D 8B 01 93 93 2D 00 13 85 84 A4

-33 88 79 00 E2 85 63 7B 4C 05 03 56 68 FF EF 80

-3F D9 93 06 1C 00 13 96 06 01 93 5A 06 01 13 97

-4A 00 83 A8 CC 76 B3 07 57 01 13 9E 27 00 93 0E

-01 05 13 85 84 A4 B3 8F CE 01 D6 85 63 F0 1A 03

-03 D6 6F FF EF 80 DF D5 93 82 1A 00 03 A5 CC 76

-13 94 02 01 13 5D 04 01 E3 67 AD F2 32 5A 93 74

-2A 00 FD C0 83 A0 CC 76 63 8F 00 1E 01 44 37 9A

-00 80 13 13 44 00 B3 05 83 00 93 9B 25 00 13 0C

-01 05 33 0B 7C 01 03 56 8B FF A2 85 13 05 4A A6

-EF 80 1F D1 93 03 14 00 93 99 03 01 93 DA 09 01

-13 98 4A 00 83 AD CC 76 B3 08 58 01 93 96 28 00

-90 08 13 05 4A A6 33 07 D6 00 D6 85 63 F5 BA 09

-03 56 87 FF 84 08 EF 80 BF CD 93 87 1A 00 93 9E

-07 01 13 D4 0E 01 93 1F 44 00 03 AE CC 76 B3 82

-8F 00 13 9D 22 00 13 05 4A A6 33 8F A4 01 A2 85

-63 7B C4 05 03 56 8F FF 93 09 01 05 EF 80 5F CA

-93 05 14 00 93 9B 05 01 13 DC 0B 01 13 1B 4C 00

-03 A3 CC 76 B3 0D 8B 01 93 93 2D 00 13 05 4A A6

-B3 8A 79 00 E2 85 63 70 6C 02 03 D6 8A FF EF 80

-3F C7 13 08 1C 00 03 A5 CC 76 93 18 08 01 13 D4

-08 01 E3 68 A4 F2 32 5A 93 70 4A 00 63 91 00 12

-83 A0 CC 76 81 44 37 9D 00 80 63 8D 00 0C 93 95

-44 00 33 8B 95 00 93 03 01 05 93 1D 2B 00 B3 89

-B3 01 03 D6 49 FF A6 85 13 05 CD A9 EF 80 5F C2

-13 88 14 00 93 18 08 01 13 D4 08 01 13 1A 44 00

-83 AA CC 76 B3 06 8A 00 13 96 26 00 98 08 13 05

-CD A9 33 0E C7 00 A2 85 63 76 54 09 03 56 4E FF

-EF 80 1F BF 93 07 14 00 93 9E 07 01 93 DB 0E 01

-93 9F 4B 00 83 A4 CC 76 B3 82 7F 01 13 9F 22 00

-13 03 01 05 13 05 CD A9 33 0C E3 01 DE 85 63 FB

-9B 04 03 56 4C FF EF 80 BF BB 93 85 1B 00 93 9D

-05 01 93 D9 0D 01 93 93 49 00 03 AB CC 76 B3 8A

-33 01 13 98 2A 00 93 08 01 05 13 05 CD A9 33 84

-08 01 CE 85 63 F0 69 03 03 56 44 FF 13 8A 19 00

-EF 80 1F B8 03 A5 CC 76 93 16 0A 01 93 D4 06 01

-E3 E7 A4 F2 63 0F 09 64 63 5F 20 63 37 99 00 80

-13 05 49 B0 EF 80 DF B5 BA 40 2A 44 9A 44 0A 49

-F6 59 66 5A D6 5A 46 5B B6 5B 26 5C 96 5C 06 5D

-F6 4D 49 61 82 80 13 7F 4A 00 E3 05 0F FC 83 A6

-CC 76 E9 D2 01 4C 37 9D 00 80 13 16 4C 00 33 07

-86 01 13 1E 27 00 9C 08 B3 8E C7 01 03 D6 AE FF

-E2 85 13 05 0D A8 EF 80 BF B0 93 02 1C 00 93 94

-02 01 93 DB 04 01 13 9F 4B 00 83 AF CC 76 33 03

-7F 01 93 15 23 00 13 0C 01 05 33 0B BC 00 13 05

-0D A8 DE 85 E3 F6 FB E9 03 56 AB FF 13 0A 01 05

-EF 80 1F AD 93 83 1B 00 93 99 03 01 93 DA 09 01

-13 98 4A 00 83 AD CC 76 B3 08 58 01 13 94 28 00

-13 05 0D A8 B3 06 8A 00 D6 85 E3 FB BA E5 03 D6

-A6 FF EF 80 FF A9 13 87 1A 00 13 1E 07 01 93 54

-0E 01 93 97 44 00 03 A6 CC 76 B3 8E 97 00 93 9F

-2E 00 93 02 01 05 13 05 0D A8 B3 8B F2 01 A6 85

-E3 F0 C4 E2 03 D6 AB FF EF 80 9F A6 13 8F 14 00

-03 A5 CC 76 13 13 0F 01 13 5C 03 01 E3 67 AC F2

-01 B5 83 A8 CC 76 A2 56 E1 64 13 87 04 6A B3 80

-16 03 37 96 00 80 93 0F 40 06 13 05 06 98 B3 87

-E0 02 33 DE B7 03 B3 8E 60 03 33 76 FE 03 B3 D5

-BE 03 EF 80 FF A1 09 65 93 02 F5 70 E3 E1 52 B9

-A5 B6 E9 7A 05 44 37 9C 00 80 B7 9C 00 80 13 0D

-C1 00 13 8B 1A 00 93 0D 70 3E 93 1B 24 00 33 8E

-8B 00 13 14 1E 00 22 D4 F3 24 00 B0 23 24 9C C4

-82 C2 82 C4 81 4B 63 0F 04 40 85 45 6A 85 EF D0

-1F F9 83 5E 41 04 13 7F F5 0F 93 52 1F 00 B3 CF

-AE 00 93 F5 1F 00 93 D3 1E 00 99 C5 B3 C0 63 01

-13 93 00 01 93 53 03 01 B3 C6 53 00 13 F8 16 00

-93 58 2F 00 13 D9 13 00 63 08 08 00 33 47 69 01

-93 17 07 01 13 D9 07 01 33 46 19 01 93 79 16 00

-13 5A 3F 00 93 5E 19 00 63 88 09 00 B3 CA 6E 01

-13 9E 0A 01 93 5E 0E 01 B3 CF 4E 01 93 F5 1F 00

-93 52 4F 00 93 D3 1E 00 99 C5 B3 C0 63 01 13 93

-00 01 93 53 03 01 B3 C6 53 00 13 F8 16 00 93 58

-5F 00 13 D9 13 00 63 08 08 00 33 47 69 01 93 17

-07 01 13 D9 07 01 33 46 19 01 93 79 16 00 13 5A

-6F 00 93 5E 19 00 63 88 09 00 B3 CA 6E 01 13 9E

-0A 01 93 5E 0E 01 B3 CF 4E 01 93 F5 1F 00 13 5F

-7F 00 13 D3 1E 00 99 C5 B3 42 63 01 93 90 02 01

-13 D3 00 01 93 73 13 00 93 58 13 00 63 88 E3 01

-B3 C6 68 01 13 98 06 01 93 58 08 01 21 81 33 47

-15 01 13 79 F5 0F 13 76 17 00 93 59 19 00 93 DA

-18 00 19 C6 B3 C7 6A 01 13 9A 07 01 93 5A 0A 01

-33 CE 3A 01 93 7E 1E 00 93 5F 29 00 93 D2 1A 00

-63 88 0E 00 B3 C5 62 01 13 9F 05 01 93 52 0F 01

-B3 C0 F2 01 13 F3 10 00 93 53 39 00 93 D8 12 00

-63 08 03 00 B3 C6 68 01 13 98 06 01 93 58 08 01

-33 C5 78 00 13 76 15 00 13 57 49 00 13 DA 18 00

-19 C6 B3 49 6A 01 93 97 09 01 13 DA 07 01 B3 4A

-EA 00 13 FE 1A 00 93 5E 59 00 13 5F 1A 00 63 08

-0E 00 B3 4F 6F 01 93 95 0F 01 13 DF 05 01 B3 42

-DF 01 93 F0 12 00 13 53 69 00 13 58 1F 00 63 88

-00 00 B3 43 68 01 93 96 03 01 13 D8 06 01 B3 48

-68 00 13 F6 18 00 13 59 79 00 93 59 18 00 19 C6

-33 C5 69 01 13 17 05 01 93 59 07 01 B3 C7 29 01

-13 FA 17 00 93 DE 19 00 63 08 0A 00 B3 CA 6E 01

-13 9E 0A 01 93 5E 0E 01 FD 55 6A 85 23 12 D1 05

-EF D0 FF D8 83 5F 41 04 13 7F F5 0F 13 53 1F 00

-B3 C5 AF 00 93 F2 15 00 13 D8 1F 00 63 88 02 00

-B3 40 68 01 93 93 00 01 13 D8 03 01 B3 46 68 00

-93 F8 16 00 13 56 2F 00 93 59 18 00 63 88 08 00

-33 C9 69 01 13 17 09 01 93 59 07 01 B3 C7 C9 00

-13 FA 17 00 93 5A 3F 00 93 DF 19 00 63 08 0A 00

-33 CE 6F 01 93 1E 0E 01 93 DF 0E 01 B3 C5 5F 01

-93 F2 15 00 13 53 4F 00 13 D8 1F 00 63 88 02 00

-B3 40 68 01 93 93 00 01 13 D8 03 01 B3 46 68 00

-93 F8 16 00 13 56 5F 00 93 59 18 00 63 88 08 00

-33 C9 69 01 13 17 09 01 93 59 07 01 B3 C7 C9 00

-13 FA 17 00 93 5A 6F 00 93 DF 19 00 63 08 0A 00

-33 CE 6F 01 93 1E 0E 01 93 DF 0E 01 B3 C5 5F 01

-93 F2 15 00 13 5F 7F 00 93 D3 1F 00 63 88 02 00

-33 C3 63 01 93 10 03 01 93 D3 00 01 13 F8 13 00

-13 D6 13 00 63 08 E8 01 B3 46 66 01 93 98 06 01

-13 D6 08 01 21 81 33 49 C5 00 93 79 F5 0F 13 77

-19 00 13 DA 19 00 13 5E 16 00 19 C7 B3 47 6E 01

-93 9A 07 01 13 DE 0A 01 B3 4E 4E 01 93 FF 1E 00

-93 D5 29 00 13 53 1E 00 63 88 0F 00 B3 42 63 01

-13 9F 02 01 13 53 0F 01 B3 40 B3 00 93 F3 10 00

-13 D8 39 00 13 56 13 00 63 88 03 00 B3 46 66 01

-93 98 06 01 13 D6 08 01 33 45 06 01 13 79 15 00

-13 D7 49 00 93 5A 16 00 63 08 09 00 33 CA 6A 01

-93 17 0A 01 93 DA 07 01 33 CE EA 00 93 7E 1E 00

-93 DF 59 00 13 DF 1A 00 63 88 0E 00 B3 45 6F 01

-93 92 05 01 13 DF 02 01 33 43 FF 01 93 70 13 00

-93 D3 69 00 93 58 1F 00 63 88 00 00 33 C8 68 01

-93 16 08 01 93 D8 06 01 33 C6 78 00 13 79 16 00

-93 D9 79 00 13 DA 18 00 63 08 09 00 33 45 6A 01

-13 17 05 01 13 5A 07 01 B3 47 3A 01 93 FA 17 00

-93 5F 1A 00 63 88 0A 00 33 CE 6F 01 93 1E 0E 01

-93 DF 0E 01 23 12 F1 05 63 8C 0B 02 85 0B E3 16

-74 BF 22 54 F3 25 00 B0 23 A2 BC C4 B3 84 95 40

-E3 FD 9D BA 13 0B 80 3E B3 DD 64 03 A9 42 33 DF

-B2 03 13 03 1F 00 B3 00 64 02 06 D4 6F F0 8F CB

-23 13 F1 05 85 4B 55 BE 85 49 63 18 39 C3 63 16

-08 C2 37 3A 15 34 93 0A 5A 41 13 0B 60 06 8D 6B

-56 C6 23 18 61 01 13 86 5B 41 6F F0 0F C1 33 08

-A4 02 B3 08 0D 01 46 D0 63 0A 0F C4 6F F0 CF E0

-33 03 A4 02 93 06 14 00 93 93 06 01 13 D4 03 01

-B3 04 6D 00 26 CE 63 89 0E C2 D1 BF 6A CC 05 44

-63 02 07 C2 F1 BF B7 9C 00 80 13 85 8C B1 EF 80

-2F D2 D9 B2 13 0C 60 06 23 18 81 01 01 46 6F F0

-CF BB B7 90 00 80 13 85 80 AB EF 80 6F D0 6D B2

-B7 87 00 80 13 85 87 77 EF 80 8F CF 31 6E 93 0B

-2E E5 99 6E B5 6F 13 8A 7E E4 5E 8C 13 8B 0F 4B

-6F F0 2F C9 B7 88 00 80 13 85 88 7A EF 80 4F CD

-05 66 93 0B 96 19 11 69 0D 65 13 0A F9 9B 5E 8C

-13 0B 05 34 6F F0 EF C6 37 9F 00 80 13 05 8F 83

-EF 80 0F CB 25 63 B9 63 13 0A 43 D8 93 0B 70 74

-13 0C 70 74 13 8B 13 3C 6F F0 AF C4 92 54 01 44

-6F F0 EF DA 41 6A 13 04 FA FF 7D 59 B7 8C 00 80

-6F F0 EF D9

-@80008684

-BE 02 00 80 9A 00 00 80 9A 00 00 80 9A 00 00 80

-9A 00 00 80 9A 00 00 80 9A 00 00 80 9A 00 00 80

-9A 00 00 80 9A 00 00 80 9A 00 00 80 B8 03 00 80

-82 08 00 80 9A 00 00 80 9A 00 00 80 9A 00 00 80

-9A 00 00 80 9A 00 00 80 9A 00 00 80 9A 00 00 80

-9A 00 00 80 9A 00 00 80 9A 00 00 80 A2 06 00 80

-9A 00 00 80 9A 00 00 80 9A 00 00 80 32 06 00 80

-9A 00 00 80 C6 03 00 80 9A 00 00 80 9A 00 00 80

-BE 02 00 80 2C 8C 00 80 34 8C 00 80 3C 8C 00 80

-3C 6E 00 80 14 6E 00 80 1E 6E 00 80 28 6E 00 80

-32 6E 00 80 0A 6E 00 80 0C 8C 00 80 14 8C 00 80

-1C 8C 00 80 24 8C 00 80 DC 8B 00 80 E8 8B 00 80

-F4 8B 00 80 00 8C 00 80 AC 8B 00 80 B8 8B 00 80

-C4 8B 00 80 D0 8B 00 80 7C 8B 00 80 88 8B 00 80

-94 8B 00 80 A0 8B 00 80 01 00 00 00 01 00 00 00

-66 00 00 00 36 6B 20 70 65 72 66 6F 72 6D 61 6E

-63 65 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72

-73 20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A

-00 00 00 00 36 6B 20 76 61 6C 69 64 61 74 69 6F

-6E 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72 73

-20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A 00

-50 72 6F 66 69 6C 65 20 67 65 6E 65 72 61 74 69

-6F 6E 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72

-73 20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A

-00 00 00 00 32 4B 20 70 65 72 66 6F 72 6D 61 6E

-63 65 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72

-73 20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A

-00 00 00 00 32 4B 20 76 61 6C 69 64 61 74 69 6F

-6E 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72 73

-20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A 00

-5B 25 75 5D 45 52 52 4F 52 21 20 6C 69 73 74 20

-63 72 63 20 30 78 25 30 34 78 20 2D 20 73 68 6F

-75 6C 64 20 62 65 20 30 78 25 30 34 78 0A 00 00

-5B 25 75 5D 45 52 52 4F 52 21 20 6D 61 74 72 69

-78 20 63 72 63 20 30 78 25 30 34 78 20 2D 20 73

-68 6F 75 6C 64 20 62 65 20 30 78 25 30 34 78 0A

-00 00 00 00 5B 25 75 5D 45 52 52 4F 52 21 20 73

-74 61 74 65 20 63 72 63 20 30 78 25 30 34 78 20

-2D 20 73 68 6F 75 6C 64 20 62 65 20 30 78 25 30

-34 78 0A 00 43 6F 72 65 4D 61 72 6B 20 53 69 7A

-65 20 20 20 20 3A 20 25 75 0A 00 00 54 6F 74 61

-6C 20 74 69 63 6B 73 20 20 20 20 20 20 3A 20 25

-75 0A 00 00 54 6F 74 61 6C 20 74 69 6D 65 20 28

-73 65 63 73 29 3A 20 25 64 0A 00 00 45 52 52 4F

-52 21 20 4D 75 73 74 20 65 78 65 63 75 74 65 20

-66 6F 72 20 61 74 20 6C 65 61 73 74 20 31 30 20

-73 65 63 73 20 66 6F 72 20 61 20 76 61 6C 69 64

-20 72 65 73 75 6C 74 21 0A 00 00 00 49 74 65 72

-61 74 2F 53 65 63 2F 4D 48 7A 20 20 20 3A 20 25

-64 2E 25 30 32 64 0A 00 49 74 65 72 61 74 69 6F

-6E 73 20 20 20 20 20 20 20 3A 20 25 75 0A 00 00

-47 43 43 39 2E 32 2E 30 00 00 00 00 43 6F 6D 70

-69 6C 65 72 20 76 65 72 73 69 6F 6E 20 3A 20 25

-73 0A 00 00 2D 67 20 2D 4F 33 20 2D 66 75 6E 72

-6F 6C 6C 2D 61 6C 6C 2D 6C 6F 6F 70 73 00 00 00

-43 6F 6D 70 69 6C 65 72 20 66 6C 61 67 73 20 20

-20 3A 20 25 73 0A 00 00 53 54 41 54 49 43 00 00

-4D 65 6D 6F 72 79 20 6C 6F 63 61 74 69 6F 6E 20

-20 3A 20 25 73 0A 00 00 73 65 65 64 63 72 63 20

-20 20 20 20 20 20 20 20 20 3A 20 30 78 25 30 34

-78 0A 00 00 5B 25 64 5D 63 72 63 6C 69 73 74 20

-20 20 20 20 20 20 3A 20 30 78 25 30 34 78 0A 00

-5B 25 64 5D 63 72 63 6D 61 74 72 69 78 20 20 20

-20 20 3A 20 30 78 25 30 34 78 0A 00 5B 25 64 5D

-63 72 63 73 74 61 74 65 20 20 20 20 20 20 3A 20

-30 78 25 30 34 78 0A 00 5B 25 64 5D 63 72 63 66

-69 6E 61 6C 20 20 20 20 20 20 3A 20 30 78 25 30

-34 78 0A 00 43 6F 72 72 65 63 74 20 6F 70 65 72

-61 74 69 6F 6E 20 76 61 6C 69 64 61 74 65 64 2E

-20 53 65 65 20 72 65 61 64 6D 65 2E 74 78 74 20

-66 6F 72 20 72 75 6E 20 61 6E 64 20 72 65 70 6F

-72 74 69 6E 67 20 72 75 6C 65 73 2E 0A 00 00 00

-45 72 72 6F 72 73 20 64 65 74 65 63 74 65 64 0A

-00 00 00 00 43 61 6E 6E 6F 74 20 76 61 6C 69 64

-61 74 65 20 6F 70 65 72 61 74 69 6F 6E 20 66 6F

-72 20 74 68 65 73 65 20 73 65 65 64 20 76 61 6C

-75 65 73 2C 20 70 6C 65 61 73 65 20 63 6F 6D 70

-61 72 65 20 77 69 74 68 20 72 65 73 75 6C 74 73

-20 6F 6E 20 61 20 6B 6E 6F 77 6E 20 70 6C 61 74

-66 6F 72 6D 2E 0A 00 00 54 30 2E 33 65 2D 31 46

-00 00 00 00 2D 54 2E 54 2B 2B 54 71 00 00 00 00

-31 54 33 2E 34 65 34 7A 00 00 00 00 33 34 2E 30

-65 2D 54 5E 00 00 00 00 35 2E 35 30 30 65 2B 33

-00 00 00 00 2D 2E 31 32 33 65 2D 32 00 00 00 00

-2D 38 37 65 2B 38 33 32 00 00 00 00 2B 30 2E 36

-65 2D 31 32 00 00 00 00 33 35 2E 35 34 34 30 30

-00 00 00 00 2E 31 32 33 34 35 30 30 00 00 00 00

-2D 31 31 30 2E 37 30 30 00 00 00 00 2B 30 2E 36

-34 34 30 30 00 00 00 00 35 30 31 32 00 00 00 00

-31 32 33 34 00 00 00 00 2D 38 37 34 00 00 00 00

-2B 31 32 32 00 00 00 00 53 74 61 74 69 63 00 00

-48 65 61 70 00 00 00 00 53 74 61 63 6B 00 00 00

-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

-00 00 00 00

-@D0580000

-00 00 00 00

diff --git a/verilog/rtl/BrqRV_EB1/testbench/hex/cmark_dccm.hex b/verilog/rtl/BrqRV_EB1/testbench/hex/cmark_dccm.hex
deleted file mode 100755
index 119b842..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/hex/cmark_dccm.hex
+++ /dev/null
@@ -1,2251 +0,0 @@
-@00000000

-00 00 00 00 B7 52 55 5F 93 82 52 55 73 90 02 7C

-17 11 04 F0 13 01 01 5D EF 70 F0 11 97 05 00 00

-93 85 45 FE 05 45 88 C1 B7 02 58 D0 13 03 F0 0F

-23 80 62 00 E3 0A 00 FE 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 03 47 05 00

-E3 09 07 2A 39 71 B7 02 04 F0 22 DE 26 DC 2A 86

-4A DA 4E D8 52 D6 56 D4 5A D2 5E D0 01 45 13 0E

-50 02 37 08 58 D0 93 08 00 03 93 03 D0 02 93 04

-A0 02 13 04 00 02 93 82 02 00 93 0F B1 00 25 4F

-A9 4E 19 A8 BE 86 23 00 E8 00 B2 87 05 05 36 86

-03 C7 17 00 63 06 07 20 93 07 16 00 E3 14 C7 FF

-03 43 16 00 63 0E 03 1E 09 06 63 05 C3 1F E3 15

-13 23 03 C7 17 00 3E 86 85 07 BE 86 63 12 17 07

-03 C7 17 00 3E 86 85 07 63 1C 17 05 03 C7 26 00

-3E 86 93 87 26 00 63 15 17 05 03 C7 36 00 3E 86

-93 87 36 00 63 1E 17 03 03 C7 46 00 3E 86 93 87

-46 00 63 17 17 03 03 C7 56 00 3E 86 93 87 56 00

-63 10 17 03 03 C7 66 00 3E 86 93 87 66 00 63 19

-17 01 03 C7 76 00 3E 86 93 87 76 00 E3 0B 17 F9

-09 06 63 08 77 02 63 0C 97 02 93 09 07 FD 13 F9

-F9 0F 81 46 63 73 2F 0B 13 07 87 FA 13 79 F7 0F

-E3 68 24 F5 13 1A 29 00 B3 0B 5A 00 83 A9 0B 00

-82 89 03 C7 17 00 B2 87 05 06 E3 18 97 FC 03 C7

-17 00 91 05 B2 87 81 46 05 06 F9 B7 03 47 59 00

-13 9B 26 00 B3 0A DB 00 93 0B 07 FD 93 96 1A 00

-93 F9 FB 0F 3E 86 D2 96 93 07 59 00 63 62 3F 11

-03 47 69 00 13 96 26 00 33 0B D6 00 13 0A 07 FD

-93 16 1B 00 93 7A FA 0F 3E 86 DE 96 93 07 69 00

-63 60 5F 0F 03 47 79 00 93 9B 26 00 33 86 DB 00

-93 09 07 FD 13 1B 16 00 93 FA F9 0F 3E 86 B3 06

-6A 01 93 07 79 00 63 6D 5F 0B 03 C7 17 00 13 9A

-26 00 B3 0A DA 00 13 0B 07 FD 3E 86 93 9B 1A 00

-85 07 13 7A FB 0F 3E 89 B3 86 79 01 63 6A 4F 09

-03 C7 17 00 93 99 26 00 CE 96 93 0B 07 FD 13 9A

-16 00 93 FA FB 0F 3E 86 B3 06 4B 01 85 07 63 69

-5F 07 03 47 29 00 13 96 26 00 33 0B D6 00 13 0A

-07 FD 93 19 1B 00 93 7A FA 0F 3E 86 B3 86 3B 01

-93 07 29 00 63 66 5F 05 03 47 39 00 93 9B 26 00

-DE 96 13 0B 07 FD 93 99 16 00 93 7A FB 0F 3E 86

-B3 06 3A 01 93 07 39 00 63 64 5F 03 03 47 49 00

-13 96 26 00 B3 0B D6 00 13 0A 07 FD 93 96 1B 00

-93 79 FA 0F 3E 86 DA 96 93 07 49 00 E3 70 3F EF

-09 06 5D B5 23 00 C8 01 03 C7 17 00 E3 1E 07 DE

-72 54 E2 54 52 59 C2 59 32 5A A2 5A 12 5B 82 5B

-21 61 82 80 98 41 81 49 91 05 11 A0 B6 89 93 7A

-F7 00 13 83 7A 05 63 44 5F 01 13 83 0A 03 93 86

-19 00 13 0B C1 00 33 0A DB 00 A3 0F 6A FE 11 83

-71 FF 13 09 C1 00 33 07 39 01 B3 09 F7 41 93 FA

-79 00 63 89 0A 06 85 4B 63 8F 7A 05 09 43 63 87

-6A 04 0D 4B 63 8F 6A 03 11 4A 63 87 4A 03 15 49

-63 8F 2A 01 99 49 63 87 3A 01 83 4A 07 00 7D 17

-23 00 58 01 83 4B 07 00 7D 17 23 00 78 01 03 43

-07 00 7D 17 23 00 68 00 03 4B 07 00 7D 17 23 00

-68 01 03 4A 07 00 7D 17 23 00 48 01 03 49 07 00

-7D 17 23 00 28 01 83 49 07 00 7D 17 23 00 38 01

-63 05 F7 05 83 4A 07 00 61 17 23 00 58 01 83 4B

-77 00 23 00 78 01 03 43 67 00 23 00 68 00 03 4B

-57 00 23 00 68 01 03 4A 47 00 23 00 48 01 03 49

-37 00 23 00 28 01 83 49 27 00 23 00 38 01 83 4A

-17 00 23 00 58 01 E3 1F F7 FB 36 95 D5 B1 03 C9

-05 00 05 05 91 05 23 00 28 01 D9 B9 03 AA 05 00

-01 49 91 05 B3 7A DA 03 4A 87 13 0B C1 00 05 09

-B3 0B 2B 01 CA 89 93 8A 0A 03 A3 8F 5B FF B3 5B

-DA 03 63 78 4F 0F 4A 87 13 0B C1 00 05 09 B3 0A

-2B 01 33 FA DB 03 13 0A 0A 03 A3 8F 4A FF 33 DA

-DB 03 63 78 7F 0D 93 0B C1 00 4A 87 13 89 29 00

-33 8B 2B 01 B3 7A DA 03 93 8B 0A 03 A3 0F 7B FF

-B3 5A DA 03 63 77 4F 0B 13 0A C1 00 4A 87 13 89

-39 00 33 0B 2A 01 B3 FB DA 03 13 8A 0B 03 A3 0F

-4B FF B3 DB DA 03 63 76 5F 09 93 0A C1 00 4A 87

-13 89 49 00 33 8B 2A 01 33 FA DB 03 93 0A 0A 03

-A3 0F 5B FF B3 DA DB 03 63 75 7F 07 93 0B C1 00

-4A 87 13 89 59 00 33 8B 2B 01 33 FA DA 03 93 0B

-0A 03 A3 0F 7B FF 33 DA DA 03 63 74 5F 05 93 0A

-C1 00 4A 87 13 89 69 00 33 8B 2A 01 B3 7B DA 03

-93 8A 0B 03 A3 0F 5B FF 33 5B DA 03 63 73 4F 03

-4A 87 13 89 79 00 93 09 C1 00 33 8A 29 01 B3 7B

-DB 03 93 8A 0B 03 A3 0F 5A FF 33 5A DB 03 E3 6B

-6F EF CA 89 63 55 D9 08 33 8B 26 41 93 7B 7B 00

-63 8C 0B 04 85 4A 63 84 5B 05 09 4A 63 8E 4B 03

-0D 4B 63 88 6B 03 91 4A 63 82 5B 03 15 4A 63 8C

-4B 01 19 4B 63 86 6B 01 23 00 68 00 93 09 19 00

-23 00 68 00 85 09 23 00 68 00 85 09 23 00 68 00

-85 09 23 00 68 00 85 09 23 00 68 00 85 09 23 00

-68 00 85 09 63 85 36 03 23 00 68 00 23 00 68 00

-23 00 68 00 23 00 68 00 23 00 68 00 23 00 68 00

-23 00 68 00 23 00 68 00 A1 09 E3 9F 36 FD 13 03

-C1 00 1A 97 B3 06 F7 41 93 FB 76 00 63 89 0B 06

-85 4A 63 8F 5B 05 09 4A 63 87 4B 05 0D 4B 63 8F

-6B 03 91 49 63 87 3B 03 15 43 63 8F 6B 00 99 46

-63 87 DB 00 83 4B 07 00 7D 17 23 00 78 01 83 4A

-07 00 7D 17 23 00 58 01 03 4A 07 00 7D 17 23 00

-48 01 03 4B 07 00 7D 17 23 00 68 01 83 49 07 00

-7D 17 23 00 38 01 03 43 07 00 7D 17 23 00 68 00

-83 46 07 00 7D 17 23 00 D8 00 63 05 F7 05 83 4B

-07 00 61 17 23 00 78 01 83 4A 77 00 23 00 58 01

-03 4A 67 00 23 00 48 01 03 4B 57 00 23 00 68 01

-83 49 47 00 23 00 38 01 03 43 37 00 23 00 68 00

-83 46 27 00 23 00 D8 00 83 4B 17 00 23 00 78 01

-E3 1F F7 FB 4A 95 AD B4 98 41 91 05 83 4B 07 00

-63 82 0B 06 23 00 78 01 03 49 17 00 63 0C 09 04

-23 00 28 01 83 4A 27 00 63 86 0A 04 23 00 58 01

-03 4A 37 00 63 00 0A 04 23 00 48 01 03 4B 47 00

-63 0A 0B 02 23 00 68 01 83 49 57 00 63 84 09 02

-23 00 38 01 03 43 67 00 63 0E 03 00 23 00 68 00

-83 46 77 00 81 CA 21 07 23 00 D8 00 83 4B 07 00

-E3 92 0B FA 05 05 ED BA 03 A3 05 00 01 47 91 05

-BA 86 13 79 73 00 05 07 93 0A C1 00 33 8A EA 00

-13 0B 09 03 A3 0F 6A FF 93 5B 33 00 BA 89 63 88

-0B 0E 13 F9 7B 00 BA 86 93 0A C1 00 05 07 33 8A

-EA 00 13 0B 09 03 A3 0F 6A FF 93 5B 63 00 63 88

-0B 0C 13 F9 7B 00 BA 86 93 0A C1 00 13 87 29 00

-33 8A EA 00 13 0B 09 03 A3 0F 6A FF 93 5B 93 00

-63 87 0B 0A 13 F9 7B 00 BA 86 93 0A C1 00 13 87

-39 00 33 8A EA 00 13 0B 09 03 A3 0F 6A FF 93 5B

-C3 00 63 86 0B 08 13 F9 7B 00 BA 86 93 0A C1 00

-13 87 49 00 33 8A EA 00 13 0B 09 03 A3 0F 6A FF

-93 5B F3 00 63 85 0B 06 13 F9 7B 00 BA 86 93 0A

-C1 00 13 87 59 00 33 8A EA 00 13 0B 09 03 A3 0F

-6A FF 93 5B 23 01 63 84 0B 04 13 F9 7B 00 BA 86

-93 0A C1 00 13 87 69 00 33 8A EA 00 13 0B 09 03

-A3 0F 6A FF 93 5B 53 01 63 83 0B 02 BA 86 13 F9

-7B 00 13 87 79 00 93 09 C1 00 B3 8A E9 00 13 0A

-09 03 A3 8F 4A FF 13 53 83 01 E3 1B 03 EE 13 0B

-C1 00 DA 96 B3 8B F6 41 93 F9 7B 00 63 89 09 06

-05 49 63 8F 29 05 89 4A 63 87 59 05 0D 4A 63 8F

-49 03 11 43 63 87 69 02 15 4B 63 8F 69 01 99 4B

-63 87 79 01 83 C9 06 00 FD 16 23 00 38 01 03 C9

-06 00 FD 16 23 00 28 01 83 CA 06 00 FD 16 23 00

-58 01 03 CA 06 00 FD 16 23 00 48 01 03 C3 06 00

-FD 16 23 00 68 00 03 CB 06 00 FD 16 23 00 68 01

-83 CB 06 00 FD 16 23 00 78 01 63 85 F6 05 83 C9

-06 00 E1 16 23 00 38 01 03 C9 76 00 23 00 28 01

-83 CA 66 00 23 00 58 01 03 CA 56 00 23 00 48 01

-03 C3 46 00 23 00 68 00 03 CB 36 00 23 00 68 01

-83 CB 26 00 23 00 78 01 83 C9 16 00 23 00 38 01

-E3 9F F6 FB 3A 95 29 B8 83 AA 05 00 91 05 56 87

-63 C3 0A 26 01 49 33 6B D7 03 13 0A C1 00 CA 89

-05 09 B3 0B 2A 01 4A 8A 33 47 D7 03 13 0B 0B 03

-A3 8F 6B FF 71 CB 33 6B D7 03 CA 89 93 0B C1 00

-05 09 CA 9B 33 47 D7 03 13 0B 0B 03 A3 8F 6B FF

-45 CF 33 6B D7 03 CA 89 93 0B C1 00 13 09 2A 00

-CA 9B 33 47 D7 03 13 0B 0B 03 A3 8F 6B FF 49 CF

-33 6B D7 03 CA 89 93 0B C1 00 13 09 3A 00 CA 9B

-33 47 D7 03 13 0B 0B 03 A3 8F 6B FF 35 CF 33 6B

-D7 03 CA 89 93 0B C1 00 13 09 4A 00 CA 9B 33 47

-D7 03 13 0B 0B 03 A3 8F 6B FF 39 CF 33 6B D7 03

-CA 89 93 0B C1 00 13 09 5A 00 CA 9B 33 47 D7 03

-13 0B 0B 03 A3 8F 6B FF 21 C3 33 6B D7 03 CA 89

-93 0B C1 00 13 09 6A 00 CA 9B 33 47 D7 03 13 0B

-0B 03 A3 8F 6B FF 0D C3 33 6B D7 03 CA 89 13 09

-7A 00 13 0A C1 00 B3 0B 2A 01 33 47 D7 03 13 0B

-0B 03 A3 8F 6B FF 01 FB 4A 87 63 55 D9 08 33 8A

-26 41 93 7B 7A 00 63 8C 0B 04 05 4B 63 84 6B 05

-09 4A 63 8E 4B 03 0D 4B 63 88 6B 03 11 4A 63 82

-4B 03 15 4B 63 8C 6B 01 19 4A 63 86 4B 01 23 00

-68 00 13 07 19 00 23 00 68 00 05 07 23 00 68 00

-05 07 23 00 68 00 05 07 23 00 68 00 05 07 23 00

-68 00 05 07 23 00 68 00 05 07 63 05 D7 02 23 00

-68 00 23 00 68 00 23 00 68 00 23 00 68 00 23 00

-68 00 23 00 68 00 23 00 68 00 23 00 68 00 21 07

-E3 1F D7 FC 74 00 33 87 36 01 33 03 F7 41 93 7B

-73 00 63 89 0B 06 05 4B 63 8F 6B 05 09 4A 63 87

-4B 05 8D 46 63 8F DB 02 11 43 63 87 6B 02 15 4B

-63 8F 6B 01 19 4A 63 87 4B 01 83 4B 07 00 7D 17

-23 00 78 01 83 46 07 00 7D 17 23 00 D8 00 03 43

-07 00 7D 17 23 00 68 00 03 4B 07 00 7D 17 23 00

-68 01 03 4A 07 00 7D 17 23 00 48 01 83 4B 07 00

-7D 17 23 00 78 01 83 46 07 00 7D 17 23 00 D8 00

-63 05 F7 05 03 43 07 00 61 17 23 00 68 00 03 4B

-77 00 23 00 68 01 03 4A 67 00 23 00 48 01 83 4B

-57 00 23 00 78 01 83 46 47 00 23 00 D8 00 03 43

-37 00 23 00 68 00 03 4B 27 00 23 00 68 01 03 4A

-17 00 23 00 48 01 E3 1F F7 FB E3 DD 0A B4 13 89

-29 00 4A 95 6F F0 CF DB 1A 87 13 03 00 02 63 14

-77 E4 6F F0 0F E7 33 07 50 41 23 00 78 00 FD 16

-51 BB 01 45 82 80 39 71 13 03 41 02 2E D2 9A 85

-06 CE 32 D4 36 D6 3A D8 3E DA 42 DC 46 DE 1A C6

-EF F0 CF D2 F2 40 21 61 82 80 39 71 13 03 41 02

-2E D2 9A 85 06 CE 32 D4 36 D6 3A D8 3E DA 42 DC

-46 DE 1A C6 EF F0 8F D0 F2 40 21 61 82 80 19 C6

-03 15 25 00 83 95 25 00 0D 8D 82 80 83 17 05 00

-13 97 07 01 93 52 07 01 13 F3 07 F0 93 D3 82 00

-33 66 73 00 23 10 C5 00 83 96 05 00 03 15 25 00

-13 98 06 01 93 58 08 01 13 FE 06 F0 93 DE 88 00

-33 6F DE 01 23 90 E5 01 83 95 25 00 0D 8D 82 80

-03 97 05 00 83 97 25 00 23 10 E5 00 23 11 F5 00

-82 80 D1 48 B3 52 15 03 61 73 23 A0 05 00 13 07

-03 08 93 87 05 01 93 86 85 00 93 88 E2 FF 13 98

-38 00 2E 98 23 A2 05 01 13 9E 28 00 23 11 08 00

-23 10 E8 00 42 9E 13 05 48 00 63 FB 07 3F 13 07

-88 00 63 77 C7 3F 23 A4 05 00 94 C1 C8 C5 93 43

-F3 FF FD 5E 23 12 D8 01 23 13 78 00 63 8D 08 20

-13 1F 06 01 E1 7F 93 F2 38 00 13 5F 0F 01 01 45

-93 CE FF FF 63 8D 02 0C 05 43 63 84 62 08 89 43

-63 8D 72 02 93 82 87 00 63 F8 02 03 93 0F 47 00

-63 F4 CF 03 13 15 3F 00 94 C3 93 76 85 07 9C C1

-13 93 86 00 D8 C3 B3 63 D3 00 23 10 77 00 23 11

-D7 01 BE 86 7E 87 96 87 05 45 93 82 87 00 63 F1

-02 05 93 03 47 00 63 FD C3 03 93 1F 05 01 93 DF

-0F 01 33 C3 EF 01 0E 03 13 73 83 07 93 FF 7F 00

-94 C3 B3 66 F3 01 9C C1 13 93 86 00 D8 C3 B3 6F

-D3 00 23 10 F7 01 23 11 D7 01 BE 86 1E 87 96 87

-05 05 93 82 87 00 63 F1 02 05 93 03 47 00 63 FD

-C3 03 13 13 05 01 93 5F 03 01 33 C3 EF 01 0E 03

-13 73 83 07 93 FF 7F 00 94 C3 B3 66 F3 01 9C C1

-13 93 86 00 D8 C3 B3 6F D3 00 23 10 F7 01 23 11

-D7 01 BE 86 1E 87 96 87 05 05 63 86 A8 12 93 82

-87 00 63 F1 02 05 93 03 47 00 63 FD C3 03 13 13

-05 01 93 5F 03 01 33 C3 EF 01 0E 03 13 73 83 07

-93 FF 7F 00 94 C3 B3 66 F3 01 9C C1 13 93 86 00

-D8 C3 B3 6F D3 00 23 10 F7 01 23 11 D7 01 BE 86

-1E 87 96 87 93 82 87 00 05 05 63 F1 02 05 93 03

-47 00 63 FD C3 03 13 13 05 01 93 5F 03 01 33 C3

-EF 01 0E 03 13 73 83 07 93 FF 7F 00 94 C3 B3 66

-F3 01 9C C1 13 93 86 00 D8 C3 B3 6F D3 00 23 10

-F7 01 23 11 D7 01 BE 86 1E 87 96 87 93 82 87 00

-13 03 15 00 63 F1 02 05 93 03 47 00 63 FD C3 03

-93 1F 03 01 93 DF 0F 01 33 C3 EF 01 0E 03 13 73

-83 07 93 FF 7F 00 94 C3 B3 66 F3 01 9C C1 13 93

-86 00 D8 C3 B3 6F D3 00 23 10 F7 01 23 11 D7 01

-BE 86 1E 87 96 87 93 82 87 00 13 03 25 00 63 F1

-02 05 93 03 47 00 63 FD C3 03 93 1F 03 01 93 DF

-0F 01 33 C3 EF 01 0E 03 13 73 83 07 93 FF 7F 00

-94 C3 B3 66 F3 01 9C C1 13 93 86 00 D8 C3 B3 6F

-D3 00 23 10 F7 01 23 11 D7 01 BE 86 1E 87 96 87

-0D 05 E3 9E A8 EC 88 42 29 CD 15 48 33 DF 08 03

-91 68 05 47 13 8E F8 FF 11 A8 03 28 05 00 23 91

-EE 00 05 07 63 0F 08 02 AA 86 42 85 83 AE 46 00

-E3 65 E7 FF 93 12 07 01 93 D3 02 01 13 83 13 00

-93 1F 83 00 93 F7 0F 70 B3 C6 C3 00 03 28 05 00

-B3 E8 D7 00 B3 F2 C8 01 23 91 5E 00 05 07 E3 15

-08 FC 05 48 81 48 01 45 81 4F 85 42 13 7F 78 00

-85 0F AE 87 01 47 63 0B 0F 04 05 46 63 03 CF 04

-09 4E 63 0D CF 03 8D 4E 63 07 DF 03 91 43 63 01

-7F 02 15 43 63 0B 6F 00 99 46 63 05 DF 00 9C 41

-05 47 A5 C7 9C 43 05 07 AD C3 9C 43 05 07 B1 CF

-9C 43 05 07 B9 CB 9C 43 05 07 A1 CB 9C 43 05 07

-A9 C7 9C 43 05 07 B1 C3 63 02 E8 0C 9C 43 05 07

-3A 8F 85 CF 9C 43 05 07 8D CB 9C 43 13 07 2F 00

-8D C7 9C 43 13 07 3F 00 8D C3 9C 43 13 07 4F 00

-89 CF 9C 43 13 07 5F 00 89 CB 9C 43 13 07 6F 00

-89 C7 9C 43 13 07 7F 00 E1 F3 AE 86 42 86 BE 85

-25 C7 51 C2 C9 C1 83 AE 46 00 03 AE 45 00 83 97

-0E 00 83 13 2E 00 03 93 2E 00 13 9F 07 01 13 5F

-0F 01 13 5F 8F 00 93 F7 07 F0 B3 E7 E7 01 23 90

-FE 00 03 1F 0E 00 33 03 73 40 93 1E 0F 01 93 D3

-0E 01 93 77 0F F0 13 DF 83 00 B3 EE E7 01 23 10

-DE 01 63 5A 60 02 2E 8E 8C 41 7D 16 63 8D 08 00

-23 A0 C8 01 F2 88 51 FF 1D C2 85 C5 2E 8E 7D 16

-8C 41 E3 97 08 FE 72 85 F2 88 F5 B7 AE 86 42 87

-42 86 BE 85 B5 BF 36 8E 7D 17 94 42 C1 BF E3 97

-05 EC 23 A0 08 00 63 89 5F 00 06 08 19 C5 AA 85

-81 4F 81 48 01 45 5D BD 82 80 23 20 00 00 02 90

-B6 87 2A 87 81 46 1D B1 03 28 06 00 93 08 88 00

-63 F1 E8 04 98 42 13 03 47 00 63 7C F3 02 23 20

-16 01 1C 41 83 92 05 00 03 96 25 00 23 20 F8 00

-23 20 05 01 23 22 E8 00 83 A3 06 00 13 85 43 00

-88 C2 83 25 48 00 42 85 23 90 55 00 23 91 C5 00

-82 80 01 48 42 85 82 80 AA 87 08 41 D4 43 50 41

-18 41 D0 C3 54 C1 98 C3 23 20 05 00 82 80 D0 41

-54 41 98 41 50 C1 D4 C1 18 C1 88 C1 82 80 03 96

-25 00 63 4D 06 00 01 E5 05 A8 08 41 05 C5 03 23

-45 00 83 13 23 00 E3 9A C3 FE 82 80 01 CD 03 97

-05 00 19 A0 08 41 01 C9 5C 41 83 C2 07 00 E3 9B

-E2 FE 82 80 01 45 82 80 82 80 2D C9 1C 41 81 48

-23 20 15 01 AA 86 BD C3 98 43 94 C3 3E 85 25 C3

-83 22 07 00 1C C3 3A 85 63 8A 02 04 03 A3 02 00

-23 A0 E2 00 16 85 63 03 03 04 83 23 03 00 23 20

-53 00 1A 85 63 8C 03 02 83 A5 03 00 23 A0 63 00

-1E 85 8D C5 03 A8 05 00 23 A0 75 00 2E 85 63 0F

-08 00 03 26 08 00 23 20 B8 00 42 85 C2 88 19 C6

-32 85 1C 41 23 20 15 01 AA 86 D9 FF 82 80 82 80

-79 71 22 D4 5A C8 5E C6 66 C2 6A C0 06 D6 26 D2

-4A D0 4E CE 52 CC 56 CA 62 C4 2A 84 2E 8B 32 8D

-85 4B 85 4C 63 01 04 10 01 4C 81 44 81 4A 13 F7

-7B 00 05 0C A2 87 01 49 31 CB 85 46 63 03 D7 04

-89 40 63 0D 17 02 8D 42 63 07 57 02 11 43 63 01

-67 02 95 43 63 0B 77 00 19 45 63 05 A7 00 1C 40

-05 49 A5 C7 9C 43 05 09 AD C3 9C 43 05 09 B1 CF

-9C 43 05 09 B9 CB 9C 43 05 09 A1 CB 9C 43 05 09

-A9 C7 9C 43 05 09 B1 C3 63 81 2B 05 9C 43 05 09

-CA 85 85 CF 9C 43 05 09 8D CB 9C 43 13 89 25 00

-8D C7 9C 43 13 89 35 00 8D C3 9C 43 13 89 45 00

-89 CF 9C 43 13 89 55 00 89 CB 9C 43 13 89 65 00

-89 C7 9C 43 13 89 75 00 E1 F3 22 8A DE 89 3E 84

-63 04 09 02 63 8C 09 02 15 C8 4C 40 03 25 4A 00

-6A 86 02 9B 63 54 A0 02 22 86 00 40 FD 19 81 CC

-90 C0 B2 84 E3 10 09 FE 63 8F 09 00 11 CC 22 86

-FD 19 00 40 F5 F4 B2 8A B2 84 ED B7 52 86 7D 19

-03 2A 0A 00 E9 BF 01 FC 23 A0 04 00 63 08 9C 01

-86 0B 56 84 01 B7 23 20 00 00 02 90 B2 50 22 54

-92 54 02 59 F2 49 62 4A 42 4B B2 4B 22 4C 92 4C

-02 4D 56 85 D2 4A 45 61 82 80 1D 71 A6 CA CE C6

-D2 C4 5E DE FD 74 13 1A 07 01 86 CE A2 CC CA C8

-D6 C2 DA C0 62 DC 66 DA 6A D8 6E D6 2E C2 32 C6

-AA 89 B6 8B D9 8C 13 5A 0A 01 19 E1 6F 10 70 48

-93 18 15 00 33 0F A0 40 B2 98 13 13 1F 00 C6 86

-01 46 0A 0F 33 05 D3 00 B3 85 A6 40 93 80 E5 FF

-93 D2 10 00 93 83 12 00 13 F4 73 00 AA 87 59 C4

-05 48 63 0C 04 07 09 49 63 02 24 07 8D 4A 63 08

-54 05 11 4B 63 0E 64 03 15 4C 63 04 84 03 99 4C

-63 0A 94 01 03 5D 05 00 93 07 25 00 33 0E AA 01

-23 10 C5 01 83 DE 07 00 89 07 B3 0F DA 01 23 9F

-F7 FF 83 DD 07 00 89 07 B3 05 BA 01 23 9F B7 FE

-83 D0 07 00 89 07 B3 02 1A 00 23 9F 57 FE 83 D3

-07 00 89 07 33 04 7A 00 23 9F 87 FE 03 D8 07 00

-89 07 33 09 0A 01 23 9F 27 FF 83 DA 07 00 89 07

-33 0B 5A 01 23 9F 67 FF 63 85 D7 06 03 DC 07 00

-83 DC 27 00 03 DD 47 00 83 DF 67 00 83 DE 87 00

-03 DE A7 00 83 DD C7 00 83 D5 E7 00 B3 00 8A 01

-B3 03 9A 01 B3 02 AA 01 33 04 FA 01 33 09 DA 01

-B3 0A CA 01 33 08 BA 01 33 0B BA 00 23 90 17 00

-23 91 77 00 23 92 57 00 23 93 87 00 23 94 27 01

-23 95 57 01 23 96 07 01 23 97 67 01 C1 07 E3 9F

-D7 F8 93 0E 16 00 B3 06 E5 41 63 84 D9 01 76 86

-D5 B5 92 43 33 08 30 41 01 4F 81 4F 13 15 28 00

-33 8D 68 00 B3 87 A8 41 13 8C E7 FF 93 5C 1C 00

-13 8E 1C 00 93 1D 2F 00 93 75 7E 00 B3 87 7D 00

-EA 86 D1 CD 85 40 63 82 15 08 89 42 63 87 55 06

-0D 44 63 8C 85 04 11 49 63 81 25 05 95 4A 63 86

-55 03 19 4B 63 8B 65 01 03 1C 0D 00 93 06 2D 00

-91 07 B3 0C EC 02 23 AE 97 FF 03 9E 06 00 91 07

-89 06 B3 0D EE 02 23 AE B7 FF 83 95 06 00 91 07

-89 06 B3 80 E5 02 23 AE 17 FE 83 92 06 00 91 07

-89 06 33 84 E2 02 23 AE 87 FE 03 99 06 00 91 07

-89 06 B3 0A E9 02 23 AE 57 FF 03 9B 06 00 91 07

-89 06 33 0C EB 02 23 AE 87 FF 83 9C 06 00 91 07

-89 06 33 8E EC 02 23 AE C7 FF 63 87 16 07 83 9D

-06 00 83 90 26 00 03 9B 46 00 83 9A 66 00 03 99

-86 00 03 94 A6 00 83 92 C6 00 83 95 E6 00 B3 8C

-ED 02 C1 06 93 87 07 02 33 8C E0 02 23 A0 97 FF

-33 0E EB 02 23 A2 87 FF B3 8D EA 02 23 A4 C7 FF

-B3 00 E9 02 23 A6 B7 FF 33 0B E4 02 23 A8 17 FE

-B3 8A E2 02 23 AA 67 FF 33 89 E5 02 23 AC 57 FF

-23 AE 27 FF E3 9D 16 F9 93 86 1F 00 76 9F B3 08

-AD 40 63 84 CF 00 B6 8F E1 B5 92 4F 13 97 2E 00

-81 40 7E 97 01 4E 81 46 81 45 0E 08 33 0D A7 00

-33 03 A7 41 93 03 C3 FF 93 DE 23 00 13 84 1E 00

-93 72 34 00 6A 8F 63 8C 02 0E 85 4C 63 8A 92 05

-09 4C 63 85 82 03 F2 8D 03 2E 0D 00 93 97 00 01

-93 D0 07 01 F2 96 63 D7 D4 1A 13 8F A0 00 93 18

-0F 01 93 D0 08 41 81 46 13 0F 4D 00 F2 8F 03 2E

-0F 00 13 93 00 01 93 53 03 01 F2 96 63 DB D4 16

-93 86 A3 00 93 9C 06 01 93 D0 0C 41 81 46 11 0F

-72 8C 03 2E 0F 00 93 9D 00 01 93 D7 0D 01 F2 96

-63 DC D4 12 93 88 A7 00 93 9F 08 01 13 93 08 01

-93 DE 0F 01 93 50 03 41 81 46 11 0F 63 19 E7 07

-93 8D 15 00 33 07 0D 41 63 07 B6 14 EE 85 B9 B7

-83 22 4F 00 93 8E AA 00 13 94 0E 01 93 53 04 41

-01 49 13 9E 03 01 B3 06 59 00 93 5C 0E 01 63 DF

-D4 08 03 2E 8F 00 93 87 AC 00 93 9A 07 01 13 DB

-0A 41 81 46 13 19 0B 01 F2 96 93 58 09 01 63 D0

-D4 0A 93 82 A8 00 93 9C 02 01 13 9C 02 01 93 DE

-0C 01 93 50 0C 41 81 46 31 0F E3 0B E7 F9 83 23

-0F 00 93 9E 00 01 13 D4 0E 01 B3 80 76 00 63 C5

-14 08 33 2E 7E 00 B3 02 C4 01 93 9C 02 01 93 DD

-0C 41 03 2B 4F 00 93 97 0D 01 11 0F 33 89 60 01

-93 DA 07 01 E3 C6 24 F7 B3 A8 63 01 83 22 4F 00

-B3 8F 1A 01 13 93 0F 01 93 53 03 41 13 9E 03 01

-B3 06 59 00 93 5C 0E 01 E3 C5 D4 F6 33 2C 5B 00

-03 2E 8F 00 B3 8D 8C 01 93 90 0D 01 13 DB 00 41

-13 19 0B 01 F2 96 93 58 09 01 E3 C4 D4 F6 B3 AF

-C2 01 33 83 F8 01 93 13 03 01 13 14 03 01 93 DE

-03 01 93 50 04 41 8D B7 93 06 A4 00 13 9C 06 01

-93 5D 0C 41 81 40 B5 BF B3 20 CC 01 33 8B 17 00

-93 1A 0B 01 13 19 0B 01 93 DE 0A 01 93 50 09 41

-E9 B5 B3 AE CF 01 33 84 D3 01 93 12 04 01 93 D0

-02 41 71 B5 33 AB CD 01 B3 8A 60 01 13 99 0A 01

-93 50 09 41 91 BD A9 67 93 F5 10 00 13 FD F0 0F

-93 8A 17 00 33 0B B0 40 33 FE 6A 01 13 59 1D 00

-B3 48 2E 01 93 F6 18 00 13 D7 8E 00 93 57 2D 00

-93 5D 1E 00 91 CA E9 7F 13 83 1F 00 B3 C3 6D 00

-93 9E 03 01 93 DD 0E 01 33 C4 B7 01 93 70 14 00

-93 D2 17 00 13 D8 1D 00 63 8B 00 00 E9 7C 13 8C

-1C 00 33 4F 88 01 13 15 0F 01 13 58 05 01 33 C6

-02 01 93 75 16 00 13 DD 27 00 13 59 18 00 91 C9

-69 7B 93 0A 1B 00 B3 4D 59 01 13 9E 0D 01 13 59

-0E 01 B3 48 A9 01 93 F6 18 00 93 DF 37 00 93 50

-19 00 91 CA 69 73 93 03 13 00 B3 CE 70 00 13 94

-0E 01 93 50 04 01 B3 C2 F0 01 93 FC 12 00 13 DC

-47 00 93 D5 10 00 63 8B 0C 00 69 7F 13 05 1F 00

-33 C8 A5 00 13 16 08 01 93 55 06 01 33 4D BC 00

-13 7B 1D 00 95 83 93 D8 15 00 63 0B 0B 00 E9 7A

-13 8E 1A 00 B3 CD C8 01 13 99 0D 01 93 58 09 01

-93 F6 18 00 13 D4 18 00 63 8B F6 00 E9 7F 13 83

-1F 00 B3 43 64 00 93 9E 03 01 13 D4 0E 01 B3 40

-87 00 93 F2 10 00 93 5C 17 00 13 56 14 00 63 8B

-02 00 69 7C 13 0F 1C 00 33 45 E6 01 13 18 05 01

-13 56 08 01 B3 C5 CC 00 13 FD 15 00 13 5B 27 00

-13 59 16 00 63 0B 0D 00 E9 77 93 8A 17 00 33 4E

-59 01 93 1D 0E 01 13 D9 0D 01 B3 48 69 01 93 FF

-18 00 93 56 37 00 93 50 19 00 63 8B 0F 00 69 73

-93 03 13 00 B3 CE 70 00 13 94 0E 01 93 50 04 01

-B3 C2 D0 00 93 FC 12 00 13 5C 47 00 93 D5 10 00

-63 8B 0C 00 69 7F 13 05 1F 00 33 C8 A5 00 13 16

-08 01 93 55 06 01 33 4D BC 00 13 7B 1D 00 93 5A

-57 00 93 D8 15 00 63 0B 0B 00 E9 77 13 8E 17 00

-B3 CD C8 01 13 99 0D 01 93 58 09 01 B3 CF 1A 01

-93 F6 1F 00 13 53 67 00 93 D2 18 00 91 CA E9 73

-93 8E 13 00 33 C4 D2 01 93 10 04 01 93 D2 00 01

-B3 4C 53 00 13 FC 1C 00 1D 83 93 D5 12 00 63 0B

-0C 00 69 7F 13 05 1F 00 33 C8 A5 00 13 16 08 01

-93 55 06 01 13 FD 15 00 93 DD 15 00 63 0B ED 00

-69 7B 93 0A 1B 00 B3 C7 5D 01 13 9E 07 01 93 5D

-0E 01 63 94 09 00 6F 10 60 5C 92 4C 13 94 29 00

-81 45 22 86 66 85 EF 50 B0 7B 32 4D 93 9F 19 00

-66 85 B3 05 94 01 B3 82 7F 01 81 43 26 C4 B3 84

-72 41 13 83 E4 FF 93 5E 13 00 93 80 1E 00 13 9C

-13 00 13 F7 70 00 B3 06 8D 01 5E 86 81 47 45 C7

-05 4F 63 07 E7 09 09 48 63 0B 07 07 0D 4B 63 0F

-67 05 91 4A 63 03 57 05 15 4E 63 07 C7 03 19 49

-63 0B 27 01 83 98 06 00 83 97 0B 00 89 06 13 86

-2B 00 B3 87 F8 02 03 94 06 00 83 1C 06 00 89 06

-09 06 B3 0F 94 03 FE 97 83 94 06 00 03 13 06 00

-89 06 09 06 B3 8E 64 02 F6 97 83 90 06 00 03 1C

-06 00 89 06 09 06 33 87 80 03 BA 97 03 9F 06 00

-03 18 06 00 89 06 09 06 33 0B 0F 03 DA 97 83 9A

-06 00 03 1E 06 00 89 06 09 06 33 89 CA 03 CA 97

-83 98 06 00 03 14 06 00 09 06 89 06 B3 8C 88 02

-E6 97 63 06 56 08 83 9F 06 00 03 13 06 00 83 90

-26 00 83 1A 26 00 33 87 6F 02 83 94 46 00 03 1C

-46 00 83 9E 66 00 03 1B 66 00 03 9E 86 00 03 19

-86 00 83 9C A6 00 03 14 A6 00 83 98 C6 00 33 83

-50 03 B3 80 E7 00 83 1F C6 00 03 98 E6 00 03 1F

-E6 00 41 06 C1 06 B3 87 84 03 B3 8A 60 00 B3 84

-6E 03 33 8C FA 00 B3 0E 2E 03 33 0B 9C 00 33 87

-8C 02 33 0E DB 01 33 89 F8 03 B3 0C EE 00 33 04

-E8 03 B3 88 2C 01 B3 87 88 00 E3 1E 56 F6 1C C1

-11 05 CE 93 E3 95 A5 EA A2 44 B3 02 30 41 13 95

-22 00 81 47 01 43 01 48 81 46 13 96 32 00 33 8D

-A5 00 B3 8F A5 41 13 8F CF FF 93 50 2F 00 93 8A

-10 00 13 FC 3A 00 EA 8E 63 02 0C 52 05 4B 63 09

-6C 05 09 47 63 04 EC 02 9A 8E 03 23 0D 00 C2 07

-13 DE 07 01 1A 98 63 DF 04 5D 13 08 AE 00 93 18

-08 01 93 D7 08 41 01 48 93 0E 4D 00 9A 83 03 A3

-0E 00 93 92 07 01 93 DF 02 01 1A 98 63 D3 04 5B

-13 8C AF 00 13 1B 0C 01 93 57 0B 41 01 48 91 0E

-1A 87 03 A3 0E 00 C2 07 13 DE 07 01 1A 98 63 D5

-04 57 13 08 AE 00 93 13 08 01 93 12 08 01 93 D0

-03 01 93 D7 02 41 01 48 91 0E 63 91 D5 4B 85 06

-B3 05 CD 40 E3 9D D9 F4 93 F8 F7 0F 13 D9 80 00

-33 CD B8 01 13 7E 1D 00 93 DC 18 00 93 D2 1D 00

-63 0B 0E 00 69 74 13 03 14 00 B3 C3 62 00 13 98

-03 01 93 52 08 01 B3 CF 5C 00 13 FF 1F 00 93 D0

-28 00 13 D7 12 00 63 0B 0F 00 E9 7A 13 8C 1A 00

-B3 47 87 01 13 9B 07 01 13 57 0B 01 B3 CE E0 00

-13 F5 1E 00 93 DD 38 00 13 5E 17 00 11 C9 69 76

-93 06 16 00 B3 45 DE 00 13 9D 05 01 13 5E 0D 01

-B3 CC CD 01 13 F4 1C 00 13 D3 48 00 13 5F 1E 00

-11 C8 E9 73 13 88 13 00 B3 42 0F 01 93 9F 02 01

-13 DF 0F 01 B3 40 E3 01 93 FA 10 00 13 DC 58 00

-13 55 1F 00 63 8B 0A 00 69 7B 13 07 1B 00 B3 47

-E5 00 93 9E 07 01 13 D5 0E 01 B3 4D AC 00 93 F6

-1D 00 13 D6 68 00 13 54 15 00 91 CA E9 75 13 8D

-15 00 33 4E A4 01 93 1C 0E 01 13 D4 0C 01 33 43

-86 00 93 73 13 00 93 D8 78 00 93 50 14 00 63 8B

-03 00 69 78 93 02 18 00 B3 CF 50 00 13 9F 0F 01

-93 50 0F 01 93 FA 10 00 93 DE 10 00 63 8B 1A 01

-69 7C 13 0B 1C 00 33 C7 6E 01 93 17 07 01 93 DE

-07 01 33 C5 2E 01 93 7D 15 00 13 56 19 00 93 DC

-1E 00 63 8B 0D 00 E9 76 93 85 16 00 33 CD BC 00

-13 1E 0D 01 93 5C 0E 01 33 C4 CC 00 13 73 14 00

-93 53 29 00 13 DF 1C 00 63 0B 03 00 E9 78 13 88

-18 00 B3 42 0F 01 93 9F 02 01 13 DF 0F 01 B3 40

-7F 00 93 FA 10 00 13 5C 39 00 13 55 1F 00 63 8B

-0A 00 69 7B 13 07 1B 00 B3 47 E5 00 93 9E 07 01

-13 D5 0E 01 B3 4D AC 00 13 F6 1D 00 93 56 49 00

-13 54 15 00 11 CA E9 75 13 8D 15 00 33 4E A4 01

-93 1C 0E 01 13 D4 0C 01 33 C3 86 00 93 73 13 00

-93 58 59 00 93 50 14 00 63 8B 03 00 69 78 93 02

-18 00 B3 CF 50 00 13 9F 0F 01 93 50 0F 01 B3 CA

-18 00 13 FC 1A 00 13 5B 69 00 93 DD 10 00 63 0B

-0C 00 69 77 93 0E 17 00 B3 C7 DD 01 13 95 07 01

-93 5D 05 01 33 46 BB 01 93 76 16 00 13 59 79 00

-13 D4 1D 00 91 CA E9 75 13 8D 15 00 33 4E A4 01

-93 1C 0E 01 13 D4 0C 01 93 53 14 00 13 73 14 00

-1E C8 63 0C 23 01 E9 78 13 88 18 00 B3 C2 03 01

-93 9F 02 01 13 DF 0F 01 7A C8 81 4A 81 42 63 88

-09 32 B2 40 13 9C 29 00 13 94 19 00 01 47 52 CE

-5E C4 86 8A 33 09 14 00 62 CA 01 4B 26 CC 3A 8A

-E2 8B 92 4E 93 14 2A 00 5E 86 33 85 D4 01 81 45

-EF 50 10 30 A2 4F 2A 8F 01 45 B3 07 59 41 93 8D

-E7 FF 13 D6 1D 00 93 06 16 00 13 FD 76 00 7E 86

-D6 86 81 47 63 06 0D 0A 85 45 63 08 BD 08 09 4E

-63 0C CD 07 8D 4C 63 00 9D 07 11 43 63 04 6D 04

-95 43 63 08 7D 02 99 48 63 0C 1D 01 03 98 0A 00

-83 92 0F 00 93 86 2A 00 33 86 8F 00 B3 07 58 02

-83 90 06 00 03 1C 06 00 89 06 22 96 33 87 80 03

-BA 97 83 94 06 00 83 1E 06 00 89 06 22 96 B3 8D

-D4 03 EE 97 03 9D 06 00 83 15 06 00 89 06 22 96

-33 0E BD 02 F2 97 83 9C 06 00 03 13 06 00 89 06

-22 96 B3 83 6C 02 9E 97 83 98 06 00 03 18 06 00

-89 06 22 96 B3 82 08 03 96 97 83 90 06 00 03 1C

-06 00 89 06 22 96 33 87 80 03 BA 97 63 03 D9 0A

-B3 04 86 00 83 9C 06 00 03 13 06 00 B3 8E 84 00

-03 9E 04 00 03 9D 26 00 B3 83 8E 00 83 90 46 00

-83 9D 0E 00 33 87 6C 02 B3 85 83 00 83 9E 66 00

-83 9C 03 00 33 88 85 00 03 93 86 00 03 9C 05 00

-83 98 A6 00 83 13 08 00 B3 02 88 00 33 0D CD 03

-03 98 C6 00 33 86 82 00 83 92 02 00 83 95 E6 00

-03 1E 06 00 BA 97 C1 06 22 96 B3 84 B0 03 B3 80

-A7 01 B3 8D 9E 03 B3 8E 90 00 B3 0C 83 03 33 87

-BE 01 33 83 78 02 33 0C 97 01 B3 08 58 02 B3 03

-6C 00 33 88 C5 03 33 8D 13 01 B3 07 0D 01 E3 11

-D9 F6 23 20 FF 00 93 06 15 00 11 0F 89 0F 63 84

-D9 12 36 85 59 B5 33 23 F3 01 03 A9 4E 00 B3 8A

-60 00 13 9C 0A 01 93 57 0C 41 93 9C 07 01 B3 08

-2E 01 91 0E 13 D4 0C 01 63 DE 14 09 83 AA 4E 00

-13 0F A4 00 93 10 0F 01 93 DF 00 41 81 48 13 93

-0F 01 33 8B 58 01 13 5C 03 01 63 DF 64 09 03 A3

-8E 00 93 0C AC 00 13 94 0C 01 13 59 04 41 01 4B

-93 18 09 01 33 08 6B 00 93 D3 08 01 63 D0 04 0B

-13 8C A3 00 13 1B 0C 01 13 17 0C 01 93 50 0B 01

-93 57 07 41 01 48 B1 0E E3 83 D5 B7 83 AF 0E 00

-13 9F 07 01 93 50 0F 01 33 0E F8 01 E3 D5 C4 F7

-03 A9 4E 00 13 8B A0 00 13 17 0B 01 93 57 07 41

-01 4E 93 9C 07 01 B3 08 2E 01 91 0E 13 D4 0C 01

-E3 C6 14 F7 33 A8 2F 01 83 AA 4E 00 B3 03 04 01

-93 92 03 01 93 DF 02 41 13 93 0F 01 33 8B 58 01

-13 5C 03 01 E3 C5 64 F7 33 27 59 01 03 A3 8E 00

-B3 07 EC 00 13 9E 07 01 13 59 0E 41 93 18 09 01

-33 08 6B 00 93 D3 08 01 E3 C4 04 F7 B3 A2 6A 00

-B3 8F 53 00 13 9F 0F 01 93 9A 0F 01 93 50 0F 01

-93 D7 0A 41 8D B7 13 0F 1B 00 A2 9A 4E 9A 22 99

-63 00 AB 7E 7A 8B 35 BB 33 29 67 00 B3 0C 2E 01

-13 94 0C 01 93 98 0C 01 93 50 04 01 93 D7 08 41

-61 BC 33 AF 63 00 B3 80 EF 01 93 9A 00 01 93 D7

-0A 41 B1 BC 33 A9 6E 00 B3 0C 2E 01 13 94 0C 01

-93 57 04 41 15 B4 93 72 FD 0F 93 DA 8E 00 C2 47

-93 DF 12 00 33 C9 57 00 13 7E 19 00 93 DC 17 00

-63 0B 0E 00 E9 76 93 80 16 00 B3 CD 1C 00 93 9E

-0D 01 93 DC 0E 01 33 CD 9F 01 13 73 1D 00 13 DC

-22 00 13 D8 1C 00 63 0B 03 00 E9 78 13 8F 18 00

-33 45 E8 01 93 15 05 01 13 D8 05 01 B3 43 0C 01

-13 F7 13 00 13 D6 32 00 13 5E 18 00 11 CB 69 7B

-93 07 1B 00 33 44 FE 00 13 19 04 01 13 5E 09 01

-B3 4F CE 00 93 F0 1F 00 93 D6 42 00 13 53 1E 00

-63 8B 00 00 E9 7D 93 8E 1D 00 B3 4C D3 01 13 9D

-0C 01 13 53 0D 01 33 4C D3 00 93 78 1C 00 13 DF

-52 00 13 57 13 00 63 8B 08 00 69 75 93 05 15 00

-33 48 B7 00 93 13 08 01 13 D7 03 01 33 46 E7 01

-13 7B 16 00 93 D7 62 00 93 50 17 00 63 0B 0B 00

-69 79 13 0E 19 00 33 C4 C0 01 93 1F 04 01 93 D0

-0F 01 B3 C6 F0 00 93 FD 16 00 93 D2 72 00 13 DC

-10 00 63 8B 0D 00 E9 7E 93 8C 1E 00 33 4D 9C 01

-13 13 0D 01 13 5C 03 01 93 78 1C 00 93 53 1C 00

-63 8B 58 00 69 7F 13 05 1F 00 B3 C5 A3 00 13 98

-05 01 93 53 08 01 33 C7 53 01 13 76 17 00 13 DB

-1A 00 93 DF 13 00 11 CA E9 77 13 89 17 00 33 CE

-2F 01 13 14 0E 01 93 5F 04 01 B3 40 FB 01 93 F6

-10 00 93 DD 2A 00 13 D3 1F 00 91 CA E9 72 93 8E

-12 00 B3 4C D3 01 13 9D 0C 01 13 53 0D 01 33 4C

-B3 01 93 78 1C 00 13 DF 3A 00 13 56 13 00 63 8B

-08 00 69 75 93 05 15 00 33 48 B6 00 93 13 08 01

-13 D6 03 01 33 47 E6 01 13 7B 17 00 93 D7 4A 00

-93 50 16 00 63 0B 0B 00 69 79 13 0E 19 00 33 C4

-C0 01 93 1F 04 01 93 D0 0F 01 B3 C6 17 00 93 FD

-16 00 93 D2 5A 00 13 DC 10 00 63 8B 0D 00 E9 7E

-93 8C 1E 00 33 4D 9C 01 13 13 0D 01 13 5C 03 01

-B3 C8 82 01 13 FF 18 00 13 D5 6A 00 13 5B 1C 00

-63 0B 0F 00 E9 75 13 88 15 00 B3 43 0B 01 13 96

-03 01 13 5B 06 01 33 47 AB 00 13 79 17 00 93 DA

-7A 00 93 50 1B 00 63 0B 09 00 E9 77 13 8E 17 00

-33 C4 C0 01 93 1F 04 01 93 D0 0F 01 93 F6 10 00

-13 D4 10 00 63 8B 56 01 E9 7D 93 82 1D 00 B3 4E

-54 00 93 9C 0E 01 13 D4 0C 01 81 4D 81 46 63 80

-09 1A 32 4D 92 4D 93 9A 19 00 6A 8C 33 8B AA 01

-13 99 29 00 81 4C 01 4D 13 93 2C 00 81 45 33 05

-B3 01 4A 86 EF 50 C0 58 AA 86 81 45 5E 85 B3 08

-8B 41 13 8F E8 FF 13 58 1F 00 93 03 18 00 13 F6

-33 00 2A 83 E2 88 81 4E 59 C2 05 47 63 0C E6 04

-89 47 63 06 F6 02 03 1E 0C 00 83 1F 05 00 93 08

-2C 00 33 03 55 01 B3 00 FE 03 93 DE 50 40 93 D2

-20 40 13 FF F2 00 13 F8 FE 07 B3 0E 0F 03 83 93

-08 00 03 16 03 00 89 08 56 93 B3 87 C3 02 13 D7

-27 40 13 DE 57 40 93 7F F7 00 93 70 FE 07 B3 82

-1F 02 96 9E 03 9F 08 00 03 18 03 00 89 08 56 93

-B3 03 0F 03 13 D6 23 40 93 D7 53 40 13 77 F6 00

-13 FE F7 07 B3 0F C7 03 FE 9E 63 03 1B 0B B3 00

-53 01 03 9F 08 00 03 18 03 00 33 86 50 01 83 93

-28 00 03 97 00 00 03 1E 06 00 33 03 56 01 83 92

-48 00 B3 0F 0F 03 83 17 03 00 83 90 68 00 A1 08

-56 93 33 8F E3 02 13 D8 5F 40 93 D3 2F 40 13 F7

-F3 00 93 73 F8 07 B3 82 C2 03 13 56 5F 40 13 5E

-2F 40 93 7F FE 00 13 76 F6 07 B3 80 F0 02 13 D8

-52 40 93 D7 22 40 13 FF F7 00 93 72 F8 07 33 07

-77 02 13 DE 50 40 93 D3 20 40 93 F0 F3 00 93 77

-FE 07 B3 8F CF 02 BA 9E 33 06 5F 02 33 88 FE 01

-33 8F F0 02 B3 02 C8 00 B3 8E E2 01 E3 11 1B F7

-23 A0 D6 01 93 88 15 00 91 06 09 05 63 84 19 01

-C6 85 75 B5 93 06 1D 00 56 9C CE 9C 56 9B 63 81

-A5 5F 36 8D 51 B5 93 F6 FA 0F 93 5D 8B 00 B3 C0

-86 00 13 F3 10 00 93 DF 16 00 93 52 14 00 63 0B

-03 00 69 7E 93 0E 1E 00 33 CF D2 01 93 18 0F 01

-93 D2 08 01 33 CC 5F 00 93 7C 1C 00 13 DB 26 00

-93 D4 12 00 63 8B 0C 00 69 77 13 08 17 00 B3 C7

-04 01 13 94 07 01 93 54 04 01 33 45 9B 00 13 76

-15 00 93 D5 36 00 93 DB 14 00 11 CA E9 73 13 8D

-13 00 33 C9 AB 01 93 1A 09 01 93 DB 0A 01 B3 C0

-75 01 13 F3 10 00 93 DF 46 00 93 D2 1B 00 63 0B

-03 00 69 7E 93 0E 1E 00 33 CF D2 01 93 18 0F 01

-93 D2 08 01 33 CC 5F 00 93 7C 1C 00 13 DB 56 00

-93 D4 12 00 63 8B 0C 00 69 77 13 08 17 00 B3 C7

-04 01 13 94 07 01 93 54 04 01 33 C5 64 01 93 75

-15 00 13 D6 66 00 93 DB 14 00 91 C9 E9 73 13 8D

-13 00 33 C9 AB 01 93 1A 09 01 93 DB 0A 01 B3 C0

-CB 00 13 F3 10 00 9D 82 93 D8 1B 00 63 0B 03 00

-E9 7F 13 8E 1F 00 B3 CE C8 01 13 9F 0E 01 93 58

-0F 01 93 F2 18 00 13 D8 18 00 63 8B D2 00 69 7C

-93 0C 1C 00 33 4B 98 01 13 17 0B 01 13 58 07 01

-B3 C7 0D 01 13 F4 17 00 93 D4 1D 00 13 5D 18 00

-11 C8 69 75 93 05 15 00 33 46 BD 00 93 13 06 01

-13 DD 03 01 33 C9 A4 01 93 7A 19 00 93 DB 2D 00

-13 5E 1D 00 63 8B 0A 00 E9 70 13 83 10 00 B3 46

-6E 00 93 9F 06 01 13 DE 0F 01 B3 CE CB 01 13 FF

-1E 00 93 D8 3D 00 13 57 1E 00 63 0B 0F 00 E9 72

-13 8C 12 00 B3 4C 87 01 13 9B 0C 01 13 57 0B 01

-33 C8 E8 00 13 74 18 00 93 D4 4D 00 93 53 17 00

-11 C8 69 75 93 05 15 00 B3 C7 B3 00 13 96 07 01

-93 53 06 01 33 CD 74 00 13 79 1D 00 93 DA 5D 00

-93 DF 13 00 63 0B 09 00 E9 7B 93 80 1B 00 33 C3

-1F 00 93 16 03 01 93 DF 06 01 33 CE 5F 01 93 7E

-1E 00 13 DF 6D 00 13 DB 1F 00 63 8B 0E 00 E9 78

-93 82 18 00 33 4C 5B 00 93 1C 0C 01 13 DB 0C 01

-33 47 6F 01 13 78 17 00 93 DD 7D 00 93 57 1B 00

-63 0B 08 00 69 74 93 04 14 00 33 C5 97 00 93 15

-05 01 93 D7 05 01 13 F6 17 00 13 D5 17 00 63 0B

-B6 01 E9 73 13 8D 13 00 33 49 A5 01 93 1A 09 01

-13 D5 0A 01 63 8B 09 12 32 43 B3 0B 30 41 93 90

-19 00 B3 06 13 00 93 92 1B 00 01 4F 93 9F 2B 00

-33 8C 56 00 33 8E 86 41 93 0E EE FF 93 D8 1E 00

-93 8C 18 00 13 FB 7C 00 E2 87 63 08 0B 08 05 47

-63 0C EB 06 09 48 63 02 0B 07 8D 4D 63 08 BB 05

-11 44 63 0E 8B 02 95 44 63 04 9B 02 99 45 63 0A

-BB 00 03 56 0C 00 93 07 2C 00 B3 03 46 41 23 10

-7C 00 03 DD 07 00 89 07 33 09 4D 41 23 9F 27 FF

-83 DA 07 00 89 07 B3 8B 4A 41 23 9F 77 FF 83 D0

-07 00 89 07 33 83 40 41 23 9F 67 FE 03 DE 07 00

-89 07 B3 0E 4E 41 23 9F D7 FF 83 D8 07 00 89 07

-B3 8C 48 41 23 9F 97 FF 03 DB 07 00 89 07 33 07

-4B 41 23 9F E7 FE 63 85 D7 06 83 DD 07 00 03 D4

-27 00 83 D4 47 00 03 D6 67 00 03 DD 87 00 03 D8

-A7 00 83 D5 C7 00 03 D9 E7 00 B3 83 4D 41 B3 0A

-44 41 B3 8B 44 41 B3 00 46 41 33 03 4D 41 33 0E

-48 41 B3 8E 45 41 B3 08 49 41 23 90 77 00 23 91

-57 01 23 92 77 01 23 93 17 00 23 94 67 00 23 95

-C7 01 23 96 D7 01 23 97 17 01 C1 07 E3 9F D7 F8

-05 0F B3 06 FC 41 E3 95 E9 EF F6 40 66 44 13 1C

-05 01 D6 44 46 49 B6 49 26 4A 96 4A 06 4B F2 5B

-D2 5C 42 5D B2 5D 13 55 0C 41 62 5C 25 61 82 80

-12 44 D2 4F E2 44 72 4A A2 4B 33 0B 30 41 33 07

-F4 01 13 18 2B 00 01 4D 01 4E 81 46 01 46 93 15

-3B 00 B3 02 07 01 B3 00 57 40 93 8D C0 FF 93 DE

-2D 00 93 8C 1E 00 13 F3 3C 00 16 8F 63 0F 03 10

-05 4C 63 0A 83 05 89 48 63 05 13 03 F2 83 03 AE

-02 00 93 17 0D 01 13 DD 07 01 F2 96 63 D1 D4 1C

-13 0B AD 00 13 14 0B 01 13 5D 04 41 81 46 13 8F

-42 00 F2 8F 03 2E 0F 00 93 10 0D 01 93 DD 00 01

-F2 96 63 D5 D4 18 93 86 AD 00 13 9C 06 01 13 5D

-0C 41 81 46 11 0F F2 88 03 2E 0F 00 93 13 0D 01

-93 D7 03 01 F2 96 63 D6 D4 14 13 84 A7 00 93 1F

-04 01 93 10 04 01 93 DE 0F 01 13 DD 00 41 81 46

-11 0F 63 1C E7 09 93 03 16 00 33 87 B2 40 63 0C

-C5 F8 1E 86 B9 B7 33 2E BE 01 83 2A 4F 00 33 83

-CC 01 13 1C 03 01 93 53 0C 41 93 97 03 01 33 0B

-5D 01 11 0F 13 D9 07 01 63 DD 64 09 03 23 4F 00

-93 0E A9 00 93 9C 0E 01 93 DD 0C 41 01 4B 13 9E

-0D 01 B3 06 6B 00 13 5C 0E 01 63 DE D4 08 03 2E

-8F 00 93 07 AC 00 13 99 07 01 93 5A 09 41 81 46

-13 9B 0A 01 F2 96 13 54 0B 01 63 DF D4 08 13 03

-A4 00 13 1C 03 01 93 18 03 01 93 5E 0C 01 13 DD

-08 41 81 46 31 0F E3 08 E7 F7 83 2D 0F 00 93 1E

-0D 01 93 DC 0E 01 33 8D B6 01 E3 D6 A4 F7 83 2A

-4F 00 93 86 AC 00 93 98 06 01 93 D3 08 41 01 4D

-93 97 03 01 33 0B 5D 01 11 0F 13 D9 07 01 E3 C7

-64 F7 33 A4 5D 01 03 23 4F 00 B3 0F 89 00 93 90

-0F 01 93 DD 00 41 13 9E 0D 01 B3 06 6B 00 13 5C

-0E 01 E3 C6 D4 F6 B3 A8 6A 00 03 2E 8F 00 B3 03

-1C 01 13 9D 03 01 93 5A 0D 41 13 9B 0A 01 F2 96

-13 54 0B 01 E3 C5 D4 F6 B3 2F C3 01 B3 00 F4 01

-93 9D 00 01 93 9C 00 01 93 DE 0D 01 13 DD 0C 41

-95 B7 33 AD C8 01 B3 8A A7 01 13 99 0A 01 13 9B

-0A 01 93 5E 09 01 13 5D 0B 41 5D BD B3 AE CF 01

-B3 8C DD 01 13 93 0C 01 13 5D 03 41 A5 BD 33 AF

-C3 01 B3 0A ED 01 13 99 0A 01 13 5D 09 41 81 B5

-92 4A B3 0B 30 41 13 95 2B 00 56 99 01 4E 81 4A

-81 48 81 46 13 96 3B 00 B3 0D A9 00 33 0D B9 41

-13 03 CD FF 13 57 23 00 93 03 17 00 93 F0 73 00

-6E 88 63 88 00 24 85 4F 63 8E F0 0F 89 4E 63 89

-D0 0D 0D 4F 63 84 E0 0B 91 42 63 8F 50 06 15 4C

-63 8A 80 05 99 4C 63 85 90 03 72 88 03 AE 0D 00

-93 97 0A 01 13 DB 07 01 F2 98 63 DB 14 3B 93 08

-AB 00 13 93 08 01 93 5A 03 41 81 48 13 88 4D 00

-72 87 03 2E 08 00 93 93 0A 01 93 D0 03 01 F2 98

-63 DF 14 37 93 82 A0 00 13 9C 02 01 93 5A 0C 41

-81 48 11 08 F2 8C 03 2E 08 00 93 97 0A 01 13 DB

-07 01 F2 98 63 D4 14 35 93 08 AB 00 13 93 08 01

-93 5A 03 41 81 48 11 08 72 87 03 2E 08 00 93 93

-0A 01 93 D0 03 01 F2 98 63 D9 14 31 93 82 A0 00

-13 9C 02 01 93 5A 0C 41 81 48 11 08 F2 8C 03 2E

-08 00 93 97 0A 01 13 DB 07 01 F2 98 63 DE 14 2D

-93 08 AB 00 13 93 08 01 93 5A 03 41 81 48 11 08

-72 87 03 2E 08 00 93 93 0A 01 93 D0 03 01 F2 98

-63 D3 14 2B 93 82 A0 00 13 9C 02 01 93 5A 0C 41

-81 48 11 08 F2 8C 03 2E 08 00 93 97 0A 01 13 DB

-07 01 F2 98 63 D4 14 27 93 08 AB 00 13 93 08 01

-93 93 08 01 13 5B 03 01 93 DA 03 41 81 48 11 08

-63 11 28 13 93 83 16 00 33 89 CD 40 E3 8D D5 8A

-9E 86 5D B5 33 2E 1E 00 83 2B 48 00 33 8F CE 01

-93 12 0F 01 93 D7 02 41 93 9A 07 01 33 07 7B 01

-11 08 13 DD 0A 01 63 D2 E4 12 03 2F 48 00 93 0F

-AD 00 93 9E 0F 01 93 D0 0E 41 01 47 13 9E 00 01

-33 0C E7 01 93 52 0E 01 63 D3 84 13 03 27 88 00

-93 8A A2 00 13 9D 0A 01 93 5B 0D 41 01 4C 93 98

-0B 01 B3 00 EC 00 93 D3 08 01 63 D4 14 12 03 2C

-C8 00 13 8E A3 00 93 12 0E 01 13 DF 02 41 81 40

-93 1C 0F 01 33 8B 80 01 93 D7 0C 01 63 D5 64 13

-83 20 08 01 93 88 A7 00 93 93 08 01 13 D7 03 41

-01 4B 13 13 07 01 B3 0E 1B 00 93 5F 03 01 63 D6

-D4 13 03 2B 48 01 93 8C AF 00 93 97 0C 01 13 DC

-07 41 81 4E 93 1B 0C 01 33 8D 6E 01 93 DA 0B 01

-63 D7 A4 13 03 2E 88 01 13 83 AA 00 93 1F 03 01

-93 D0 0F 41 01 4D 93 9E 00 01 B3 08 CD 01 13 DF

-0E 01 63 D8 14 13 93 0B AF 00 13 9D 0B 01 13 97

-0B 01 13 5B 0D 01 93 5A 07 41 81 48 71 08 E3 03

-28 EF 83 20 08 00 93 9F 0A 01 93 DE 0F 01 33 8B

-18 00 E3 D1 64 EF 83 2B 48 00 13 8C AE 00 93 1C

-0C 01 93 D7 0C 41 01 4B 93 9A 07 01 33 07 7B 01

-11 08 13 DD 0A 01 E3 C2 E4 EE B3 A8 70 01 03 2F

-48 00 33 03 1D 01 93 13 03 01 93 D0 03 41 13 9E

-00 01 33 0C E7 01 93 52 0E 01 E3 C1 84 EF B3 AC

-EB 01 03 27 88 00 B3 87 92 01 13 9B 07 01 93 5B

-0B 41 93 98 0B 01 B3 00 EC 00 93 D3 08 01 E3 C0

-14 EE 33 23 EF 00 03 2C C8 00 B3 8F 63 00 93 9E

-0F 01 13 DF 0E 41 93 1C 0F 01 33 8B 80 01 93 D7

-0C 01 E3 CF 64 ED B3 2B 87 01 83 20 08 01 B3 8A

-77 01 13 9D 0A 01 13 57 0D 41 13 13 07 01 B3 0E

-1B 00 93 5F 03 01 E3 CE D4 ED 33 2F 1C 00 03 2B

-48 01 33 8E EF 01 93 12 0E 01 13 DC 02 41 93 1B

-0C 01 33 8D 6E 01 93 DA 0B 01 E3 CD A4 ED 33 A7

-60 01 B3 88 EA 00 03 2E 88 01 93 93 08 01 93 D0

-03 41 93 9E 00 01 B3 08 CD 01 13 DF 0E 01 E3 CC

-14 ED B3 22 CB 01 33 0C 5F 00 93 1C 0C 01 93 17

-0C 01 13 DB 0C 01 93 DA 07 41 C9 BD B3 AB CC 01

-B3 0A 7B 01 13 9D 0A 01 13 97 0A 01 13 5B 0D 01

-93 5A 07 41 69 BB B3 2F C7 01 B3 8E F0 01 13 9F

-0E 01 93 5A 0F 41 B1 BB B3 AB CC 01 B3 0A 7B 01

-13 9D 0A 01 93 5A 0D 41 1D B3 B3 2F C7 01 B3 8E

-F0 01 13 9F 0E 01 93 5A 0F 41 C5 B9 B3 AB CC 01

-B3 0A 7B 01 13 9D 0A 01 93 5A 0D 41 6D B9 B3 2F

-C7 01 B3 8E F0 01 13 9F 0E 01 93 5A 0F 41 51 B1

-B3 2B C8 01 B3 0A 7B 01 13 9D 0A 01 93 5A 0D 41

-B1 B1 81 47 01 47 81 4D 6F E0 1F 84 01 49 81 48

-6F E0 1F C8 41 11 14 45 2E 87 22 C4 4C 45 32 84

-50 41 08 41 06 C6 EF E0 4F B2 B3 46 A4 00 13 77

-F5 0F 93 17 05 01 93 F2 16 00 13 D3 07 01 13 56

-17 00 13 58 14 00 63 8B 02 00 E9 70 93 83 10 00

-33 45 78 00 93 15 05 01 13 D8 05 01 B3 48 C8 00

-13 FE 18 00 93 5E 27 00 93 52 18 00 63 0B 0E 00

-69 7F 93 0F 1F 00 33 C4 F2 01 93 16 04 01 93 D2

-06 01 B3 C7 D2 01 93 F0 17 00 13 56 37 00 93 D8

-12 00 63 8B 00 00 E9 73 93 85 13 00 33 C5 B8 00

-13 18 05 01 93 58 08 01 33 CE C8 00 93 7E 1E 00

-13 5F 47 00 93 D7 18 00 63 8B 0E 00 E9 7F 13 84

-1F 00 B3 C6 87 00 93 92 06 01 93 D7 02 01 B3 C0

-E7 01 93 F3 10 00 13 56 57 00 13 DE 17 00 63 8B

-03 00 E9 75 13 88 15 00 33 45 0E 01 93 18 05 01

-13 DE 08 01 B3 4E CE 00 13 FF 1E 00 93 5F 67 00

-93 50 1E 00 63 0B 0F 00 69 74 93 06 14 00 B3 C2

-D0 00 93 97 02 01 93 D0 07 01 B3 C3 F0 01 13 F6

-13 00 1D 83 13 DE 10 00 11 CA E9 75 13 88 15 00

-33 45 0E 01 93 18 05 01 13 DE 08 01 93 7E 1E 00

-93 52 1E 00 63 8B EE 00 69 7F 93 0F 1F 00 33 C4

-F2 01 93 16 04 01 93 D2 06 01 93 57 83 00 B3 C0

-57 00 93 F3 10 00 13 56 83 00 93 D8 12 00 13 53

-93 00 63 8B 03 00 69 77 93 05 17 00 33 C8 B8 00

-13 15 08 01 93 58 05 01 33 4E 13 01 93 7E 1E 00

-13 5F 26 00 93 D0 18 00 63 8B 0E 00 E9 7F 13 84

-1F 00 B3 C6 80 00 93 92 06 01 93 D0 02 01 B3 C7

-E0 01 93 F3 17 00 13 53 36 00 93 D8 10 00 63 8B

-03 00 69 77 93 05 17 00 33 C8 B8 00 13 15 08 01

-93 58 05 01 33 CE 68 00 93 7E 1E 00 13 5F 46 00

-93 D0 18 00 63 8B 0E 00 E9 7F 13 84 1F 00 B3 C6

-80 00 93 92 06 01 93 D0 02 01 B3 C7 E0 01 93 F3

-17 00 13 53 56 00 93 D8 10 00 63 8B 03 00 69 77

-93 05 17 00 33 C8 B8 00 13 15 08 01 93 58 05 01

-33 CE 68 00 93 7E 1E 00 13 5F 66 00 93 D0 18 00

-63 8B 0E 00 E9 7F 13 84 1F 00 B3 C6 80 00 93 92

-06 01 93 D0 02 01 B3 C7 E0 01 93 F3 17 00 1D 82

-13 D5 10 00 63 8B 03 00 69 73 13 07 13 00 B3 45

-E5 00 13 98 05 01 13 55 08 01 93 78 15 00 05 81

-63 8B C8 00 69 7E 93 0E 1E 00 33 4F D5 01 93 1F

-0F 01 13 D5 0F 01 B2 40 22 44 41 01 82 80 79 71

-4A D2 22 D6 26 D4 4E D0 52 CE 56 CC 5A CA 5E C8

-62 C6 66 C4 6A C2 2A 87 36 89 11 E2 05 46 FD 15

-13 F4 C5 FF 13 0A 44 00 81 47 63 02 07 34 93 82

-17 00 B3 86 52 02 13 88 27 00 13 8E 37 00 13 8F

-47 00 93 8E 57 00 93 88 67 00 13 83 77 00 3E 85

-A1 07 93 93 36 00 63 F3 E3 06 B3 09 08 03 16 85

-13 9B 39 00 63 7C EB 04 B3 0B CE 03 42 85 13 9C

-3B 00 63 75 EC 04 B3 0C EF 03 72 85 13 9D 3C 00

-63 7E ED 02 B3 8F DE 03 7A 85 93 95 3F 00 63 F7

-E5 02 33 84 18 03 76 85 93 1A 34 00 63 F0 EA 02

-B3 04 63 02 46 85 93 92 34 00 63 F9 E2 00 33 88

-F7 02 1A 85 13 1E 38 00 E3 6B EE F6 33 07 A5 02

-AA 8A 93 14 17 00 33 04 9A 00 63 06 05 26 C1 6E

-81 46 81 43 85 4F 33 0F 8A 40 FD 1E 93 09 F5 FF

-33 06 F6 03 93 98 0F 01 93 D7 08 01 13 93 16 00

-33 0B 83 00 13 0C F5 FF 93 7C 3C 00 B3 0B 6F 01

-05 4E 13 88 1F 00 13 5D F6 41 93 52 0D 01 33 07

-56 00 33 76 D7 01 33 06 56 40 B3 88 C7 00 13 93

-08 01 13 5C 03 01 E2 97 23 10 8B 01 13 FD F7 0F

-23 90 AB 01 93 05 2B 00 63 76 AE 1E 63 83 0C 0E

-63 8C CC 09 89 4B 63 86 7C 05 B3 0C 06 03 42 08

-93 52 08 01 B3 08 BF 00 93 05 4B 00 13 88 2F 00

-09 4E 13 D7 FC 41 13 53 07 01 33 86 6C 00 33 7C

-D6 01 33 06 6C 40 B3 87 C2 00 13 9D 07 01 93 5B

-0D 01 B3 8C 5B 00 23 11 7B 01 13 FB FC 0F 23 90

-68 01 B3 02 06 03 93 18 08 01 13 D3 08 01 33 0C

-BF 00 05 0E 05 08 89 05 13 D7 F2 41 93 57 07 01

-33 86 F2 00 33 7D D6 01 33 06 FD 40 B3 0B C3 00

-93 9C 0B 01 13 DB 0C 01 B3 02 6B 00 23 9F 65 FF

-93 F8 F2 0F 23 10 1C 01 33 03 06 03 13 1C 08 01

-93 57 0C 01 33 0D BF 00 89 05 05 0E 05 08 13 57

-F3 41 93 5B 07 01 33 06 73 01 B3 7C D6 01 33 86

-7C 41 33 8B C7 00 93 12 0B 01 93 D8 02 01 33 83

-F8 00 23 9F 15 FF 13 7C F3 0F 23 10 8D 01 63 73

-AE 10 33 06 06 03 93 07 28 00 13 0B 38 00 13 1D

-08 01 93 52 0D 01 93 98 07 01 13 1D 0B 01 13 D3

-08 01 93 58 0D 01 13 07 18 00 13 5D F6 41 13 5D

-0D 01 6A 96 33 76 D6 01 33 0D A6 41 93 1B 07 01

-33 07 ED 02 33 86 A2 01 13 1D 06 01 13 56 0D 01

-B2 92 B3 0C BF 00 23 90 C5 00 13 FD F2 0F 23 90

-AC 01 66 8C 66 86 E6 82 93 5C F7 41 13 DD 0C 01

-6A 97 B3 7C D7 01 33 8D AC 41 B3 07 FD 02 93 DB

-0B 01 33 87 AB 01 93 1C 07 01 13 DD 0C 01 EA 9B

-23 91 A5 01 13 F7 FB 0F 23 11 EC 00 A1 05 13 DC

-F7 41 93 5C 0C 01 E6 97 33 FD D7 01 B3 0B 9D 41

-33 8B 6B 03 33 07 73 01 13 1C 07 01 93 5C 0C 01

-66 93 23 9E 95 FF 93 77 F3 0F 23 12 F6 00 11 0E

-11 08 13 56 FB 41 13 5D 06 01 B3 0B AB 01 33 FB

-DB 01 33 06 AB 41 33 87 C8 00 13 1C 07 01 93 5C

-0C 01 E6 98 23 9F 95 FF 13 F3 F8 0F 23 93 62 00

-E3 61 AE F0 85 0F 01 4E 11 C1 4E 8E 85 03 F2 9F

-AA 96 E3 E7 A3 DA A2 94 93 86 F4 FF 23 24 89 00

-93 F3 C6 FF 32 54 13 8F 43 00 23 22 49 01 23 20

-59 01 23 26 E9 01 A2 54 12 59 82 59 72 4A E2 4A

-52 4B C2 4B 32 4C A2 4C 12 4D 45 61 82 80 19 04

-FD 5A 7D 55 89 44 A1 BB 2A 88 63 06 05 3E B3 08

-A0 40 13 17 25 00 2E 97 13 93 28 00 81 45 01 45

-81 4F 81 4E 8E 08 B3 06 E3 00 B3 07 D7 40 93 82

-C7 FF 93 D3 22 00 13 8E 13 00 93 77 7E 00 36 8E

-63 80 07 22 05 4F 63 89 E7 0F 89 42 63 84 57 0C

-8D 43 63 81 77 0A 11 4F 63 8C E7 07 95 42 63 87

-57 04 99 43 63 84 77 02 7E 8E 83 AF 06 00 42 05

-13 5F 05 01 FE 9E 63 57 D6 37 93 0E AF 00 13 9E

-0E 01 13 55 0E 41 81 4E 13 8E 46 00 7E 8F 83 2F

-0E 00 42 05 93 52 05 01 FE 9E 63 5C D6 33 93 8E

-A2 00 13 95 0E 01 41 85 81 4E 11 0E FE 82 83 2F

-0E 00 93 17 05 01 93 D3 07 01 FE 9E 63 52 D6 31

-93 8E A3 00 93 97 0E 01 13 D5 07 41 81 4E 11 0E

-FE 83 83 2F 0E 00 13 1F 05 01 13 55 0F 01 FE 9E

-63 57 D6 2D 93 0E A5 00 13 9F 0E 01 13 55 0F 41

-81 4E 11 0E FE 82 83 2F 0E 00 42 05 93 53 05 01

-FE 9E 63 5D D6 29 93 8E A3 00 13 95 0E 01 41 85

-81 4E 11 0E FE 83 83 2F 0E 00 93 17 05 01 13 DF

-07 01 FE 9E 63 53 D6 27 93 0E AF 00 93 97 0E 01

-13 D5 07 41 81 4E 11 0E 7E 8F 83 2F 0E 00 93 12

-05 01 13 D5 02 01 FE 9E 63 58 D6 23 93 0E A5 00

-93 92 0E 01 13 D5 02 41 81 4E 11 0E 63 12 C7 11

-85 05 33 87 16 41 E3 10 B8 EC 82 80 B3 AF 7F 00

-B3 07 FF 01 83 2F 4E 00 93 92 07 01 13 DF 02 41

-93 17 0F 01 33 85 FE 01 11 0E 93 D2 07 01 63 53

-A6 10 83 23 4E 00 A9 02 13 95 02 01 93 57 05 41

-01 45 13 9F 07 01 B3 0E 75 00 93 57 0F 01 63 55

-D6 11 83 2F 8E 00 A9 07 93 9E 07 01 13 DF 0E 41

-81 4E 93 12 0F 01 FE 9E 13 D5 02 01 63 57 D6 11

-83 23 CE 00 29 05 93 1E 05 01 93 D2 0E 41 81 4E

-13 9F 02 01 B3 82 7E 00 93 57 0F 01 63 59 56 10

-A9 07 83 2F 0E 01 93 92 07 01 13 DF 02 41 81 42

-13 15 0F 01 B3 8E F2 01 93 57 05 01 63 5B D6 11

-83 23 4E 01 A9 07 93 9E 07 01 13 D5 0E 41 81 4E

-13 1F 05 01 9E 9E 93 52 0F 01 63 5D D6 11 83 2F

-8E 01 A9 02 93 9E 02 01 13 DF 0E 41 81 4E 13 15

-0F 01 FE 9E 93 57 05 01 63 5F D6 11 13 85 A7 00

-93 17 05 01 13 D5 07 41 81 4E 71 0E E3 02 C7 F1

-83 23 0E 00 42 05 13 5F 05 01 9E 9E E3 50 D6 F1

-93 0E AF 00 83 2F 4E 00 13 95 0E 01 13 5F 05 41

-81 4E 93 17 0F 01 33 85 FE 01 11 0E 93 D2 07 01

-E3 41 A6 F0 B3 A3 F3 01 33 8F 72 00 83 23 4E 00

-93 1E 0F 01 93 D7 0E 41 13 9F 07 01 B3 0E 75 00

-93 57 0F 01 E3 4F D6 EF B3 AF 7F 00 B3 82 F7 01

-83 2F 8E 00 13 95 02 01 13 5F 05 41 93 12 0F 01

-FE 9E 13 D5 02 01 E3 4D D6 EF B3 A3 F3 01 33 0F

-75 00 83 23 CE 00 93 17 0F 01 93 D2 07 41 13 9F

-02 01 B3 82 7E 00 93 57 0F 01 E3 4B 56 EE B3 AF

-7F 00 33 85 F7 01 83 2F 0E 01 93 1E 05 01 13 DF

-0E 41 13 15 0F 01 B3 8E F2 01 93 57 05 01 E3 49

-D6 EF B3 A3 F3 01 33 8F 77 00 83 23 4E 01 93 12

-0F 01 13 D5 02 41 13 1F 05 01 9E 9E 93 52 0F 01

-E3 47 D6 EF B3 AF 7F 00 33 85 F2 01 83 2F 8E 01

-93 17 05 01 13 DF 07 41 13 15 0F 01 FE 9E 93 57

-05 01 E3 45 D6 EF B3 A3 F3 01 33 8F 77 00 93 12

-0F 01 13 D5 02 41 D5 B5 B3 23 FF 01 B3 07 75 00

-13 9F 07 01 13 55 0F 41 C9 BB B3 A2 F3 01 33 05

-5F 00 93 13 05 01 13 D5 03 41 71 BB B3 A7 F2 01

-33 8F F3 00 93 12 0F 01 13 D5 02 41 9D B3 B3 A2

-F3 01 B3 07 55 00 93 93 07 01 13 D5 03 41 15 BB

-33 AF F2 01 33 85 E3 01 93 12 05 01 13 D5 02 41

-FD B9 B3 27 FF 01 B3 83 F2 00 13 9F 03 01 13 55

-0F 41 E1 B1 B3 27 FE 01 B3 02 FF 00 93 93 02 01

-13 D5 03 41 51 B9 01 45 82 80 63 01 05 16 41 11

-B3 03 A0 40 13 18 15 00 22 C6 26 C4 13 94 13 00

-4A C2 4E C0 32 98 81 4F 81 42 8A 03 B3 08 04 01

-33 06 18 41 13 03 E6 FF 93 54 13 00 13 87 14 00

-93 97 2F 00 13 79 77 00 AE 97 46 87 63 0F 09 08

-85 49 63 02 39 09 09 4E 63 07 C9 07 8D 4E 63 0C

-D9 05 11 4F 63 01 E9 05 15 46 63 06 C9 02 19 43

-63 0B 69 00 83 94 08 00 13 87 28 00 91 07 33 89

-D4 02 23 AE 27 FF 83 19 07 00 91 07 09 07 33 8E

-D9 02 23 AE C7 FF 83 1E 07 00 91 07 09 07 33 8F

-DE 02 23 AE E7 FF 03 16 07 00 91 07 09 07 33 03

-D6 02 23 AE 67 FE 83 14 07 00 91 07 09 07 33 89

-D4 02 23 AE 27 FF 83 19 07 00 91 07 09 07 33 8E

-D9 02 23 AE C7 FF 83 1E 07 00 91 07 09 07 33 8F

-DE 02 23 AE E7 FF 63 07 E8 06 83 19 07 00 03 19

-27 00 83 14 47 00 03 1F 67 00 83 1E 87 00 03 1E

-A7 00 03 13 C7 00 03 16 E7 00 B3 89 D9 02 41 07

-93 87 07 02 33 09 D9 02 23 A0 37 FF B3 84 D4 02

-23 A2 27 FF 33 0F DF 02 23 A4 97 FE B3 8E DE 02

-23 A6 E7 FF 33 0E DE 02 23 A8 D7 FF 33 03 D3 02

-23 AA C7 FF 33 06 D6 02 23 AC 67 FE 23 AE C7 FE

-E3 1D E8 F8 85 02 AA 9F 33 88 78 40 E3 18 55 EC

-32 44 A2 44 12 49 82 49 41 01 82 80 82 80 63 00

-05 1E B3 02 A0 40 93 16 06 01 93 17 15 00 93 93

-12 00 C1 82 33 86 F5 00 81 4F 8A 02 B3 85 C3 00

-33 07 B6 40 13 03 E7 FF 13 58 13 00 93 08 18 00

-13 FE 78 00 AE 87 63 08 0E 08 85 4E 63 0C DE 07

-09 4F 63 02 EE 07 0D 47 63 08 EE 04 11 43 63 0E

-6E 02 15 48 63 04 0E 03 99 48 63 0A 1E 01 03 DE

-05 00 93 87 25 00 B3 8E C6 01 23 90 D5 01 03 DF

-07 00 89 07 33 87 E6 01 23 9F E7 FE 03 D3 07 00

-89 07 33 88 66 00 23 9F 07 FF 83 D8 07 00 89 07

-33 8E 16 01 23 9F C7 FF 83 DE 07 00 89 07 33 8F

-D6 01 23 9F E7 FF 03 D7 07 00 89 07 33 83 E6 00

-23 9F 67 FE 03 D8 07 00 89 07 B3 88 06 01 23 9F

-17 FF 63 09 F6 10 41 11 22 C6 03 D4 07 00 03 DF

-27 00 83 DE 47 00 03 DE 67 00 03 D3 87 00 83 D8

-A7 00 03 D8 C7 00 03 D7 E7 00 36 94 36 9F B6 9E

-36 9E 36 93 B6 98 36 98 36 97 23 90 87 00 23 91

-E7 01 23 92 D7 01 23 93 C7 01 23 94 67 00 23 95

-17 01 23 96 07 01 23 97 E7 00 C1 07 E3 17 F6 FA

-85 0F 33 86 55 40 63 04 F5 0B B3 85 C3 00 B3 07

-B6 40 13 84 E7 FF 13 5F 14 00 93 0E 1F 00 13 FE

-7E 00 AE 87 E3 03 0E F8 05 43 63 04 6E 06 89 48

-63 0A 1E 05 0D 48 63 00 0E 05 11 47 63 06 EE 02

-15 44 63 0C 8E 00 19 4F 63 1C EE 07 03 D3 07 00

-89 07 B3 88 66 00 23 9F 17 FF 03 D8 07 00 89 07

-33 87 06 01 23 9F E7 FE 03 D4 07 00 89 07 33 8F

-86 00 23 9F E7 FF 83 DE 07 00 89 07 33 8E D6 01

-23 9F C7 FF 03 D3 07 00 89 07 B3 88 66 00 23 9F

-17 FF 03 D8 07 00 89 07 33 87 06 01 23 9F E7 FE

-E3 15 F6 F0 85 0F 33 86 55 40 E3 10 F5 F7 32 44

-41 01 82 80 85 0F 33 86 55 40 E3 11 F5 E5 82 80

-83 DE 05 00 93 87 25 00 33 8E D6 01 23 90 C5 01

-B5 BF 63 08 05 1A 79 71 26 D2 AA 84 4E CE 93 99

-24 00 4A D0 2E 85 32 89 81 45 4E 86 22 D4 06 D6

-36 84 52 CC 56 CA 5A C8 5E C6 62 C4 66 C2 EF 30

-30 49 93 96 14 00 AA 85 A2 96 4E 95 01 46 33 83

-86 40 93 00 E3 FF 93 D2 10 00 93 83 12 00 93 17

-16 00 93 F8 73 00 CA 97 22 87 01 4E 63 85 08 0A

-05 48 63 87 08 09 09 4A 63 8B 48 07 8D 4A 63 8F

-58 05 11 4B 63 83 68 05 95 4B 63 87 78 03 19 4C

-63 8B 88 01 83 9C 07 00 03 1E 04 00 89 07 13 07

-24 00 33 8E CC 03 83 9E 07 00 03 1F 07 00 89 07

-09 07 B3 8F EE 03 7E 9E 83 99 07 00 03 13 07 00

-89 07 09 07 B3 80 69 02 06 9E 83 92 07 00 83 13

-07 00 89 07 09 07 B3 88 72 02 46 9E 03 98 07 00

-03 1A 07 00 89 07 09 07 B3 0A 48 03 56 9E 03 9B

-07 00 83 1B 07 00 89 07 09 07 33 0C 7B 03 62 9E

-83 9C 07 00 83 1E 07 00 09 07 89 07 33 8F DC 03

-7A 9E 63 85 E6 08 83 9F 07 00 83 19 07 00 83 90

-27 00 83 1A 27 00 B3 88 3F 03 03 98 47 00 03 1C

-47 00 83 92 67 00 83 1B 67 00 83 9C 87 00 03 1B

-87 00 03 9F A7 00 03 1A A7 00 83 9E C7 00 B3 8F

-50 03 83 19 C7 00 03 93 E7 00 83 13 E7 00 46 9E

-41 07 C1 07 B3 00 88 03 B3 0A FE 01 33 8C 72 03

-33 88 1A 00 B3 82 6C 03 B3 0B 88 01 B3 08 4F 03

-B3 8C 5B 00 33 8B 3E 03 33 8F 1C 01 33 0A 73 02

-B3 0E 6F 01 33 8E 4E 01 E3 9F E6 F6 23 A0 C5 01

-91 05 26 96 E3 15 B5 EA B2 50 22 54 92 54 02 59

-F2 49 62 4A D2 4A 42 4B B2 4B 22 4C 92 4C 45 61

-82 80 82 80 5D 71 86 C6 A2 C4 A6 C2 CA C0 4E DE

-52 DC 56 DA 5A D8 5E D6 62 D4 66 D2 6A D0 6E CE

-2E C4 36 C6 63 0F 05 1A 13 14 15 00 AA 8A B2 89

-33 09 86 00 93 14 25 00 01 4B 81 4B A2 47 13 1F

-2B 00 26 86 33 85 E7 01 81 45 EF 30 70 2C 32 46

-2A 8F 81 4F 33 07 39 41 93 00 E7 FF 93 D2 10 00

-13 83 12 00 93 73 73 00 B2 85 CE 86 81 47 63 86

-03 0A 05 48 63 88 03 09 89 48 63 8C 13 07 0D 4A

-63 80 43 07 11 4C 63 84 83 05 95 4C 63 88 93 03

-19 4D 63 8C A3 01 83 9D 09 00 03 1E 06 00 93 86

-29 00 B3 05 86 00 B3 87 CD 03 83 9E 06 00 03 95

-05 00 89 06 A2 95 33 87 AE 02 BA 97 83 90 06 00

-83 92 05 00 89 06 A2 95 33 83 50 02 9A 97 83 93

-06 00 03 98 05 00 89 06 A2 95 B3 88 03 03 C6 97

-03 9A 06 00 03 9C 05 00 89 06 A2 95 B3 0C 8A 03

-E6 97 03 9D 06 00 83 9D 05 00 89 06 A2 95 33 0E

-BD 03 F2 97 83 9E 06 00 03 95 05 00 89 06 A2 95

-33 87 AE 02 BA 97 63 03 D9 0A 03 93 06 00 83 93

-05 00 B3 80 85 00 B3 82 80 00 33 07 73 02 03 9E

-00 00 03 9D 26 00 33 88 82 00 83 9D 02 00 03 9A

-46 00 B3 08 88 00 83 1C 08 00 83 90 66 00 B3 8E

-88 00 33 0D CD 03 03 93 86 00 03 9C 08 00 83 92

-A6 00 83 93 0E 00 33 85 8E 00 03 98 C6 00 B3 05

-85 00 83 1E 05 00 BA 97 33 0A BA 03 03 95 E6 00

-03 9E 05 00 B3 8D A7 01 C1 06 A2 95 B3 80 90 03

-B3 88 4D 01 33 07 83 03 B3 8C 18 00 33 83 72 02

-33 8C EC 00 B3 02 D8 03 B3 03 6C 00 33 08 C5 03

-33 8D 53 00 B3 07 0D 01 E3 11 D9 F6 23 20 FF 00

-93 86 1F 00 11 0F 09 06 63 84 DA 00 B6 8F 59 B5

-13 8F 1B 00 A2 99 56 9B 22 99 63 84 FB 01 FA 8B

-B1 BD B6 40 26 44 96 44 06 49 F2 59 62 5A D2 5A

-42 5B B2 5B 22 5C 92 5C 02 5D F2 4D 61 61 82 80

-63 04 05 1C 79 71 4E CE 93 19 15 00 22 D4 26 D2

-4A D0 52 CC 56 CA 5A C8 5E C6 62 C4 06 D6 2A 8B

-2E 84 B6 84 B2 8A 33 0A 36 01 13 19 25 00 81 4B

-01 4C 13 98 2B 00 33 05 04 01 4A 86 81 45 EF 30

-30 0D AA 83 A6 88 01 43 B3 07 5A 41 93 80 E7 FF

-93 D2 10 00 93 85 12 00 13 F6 35 00 46 85 D6 86

-81 4E 59 C2 05 47 63 0C E6 04 09 4E 63 06 C6 03

-83 9E 0A 00 03 9F 08 00 93 86 2A 00 33 85 38 01

-B3 8F EE 03 13 D8 2F 40 93 D7 5F 40 93 70 F8 00

-93 F2 F7 07 B3 8E 50 02 83 95 06 00 03 16 05 00

-89 06 4E 95 33 8E C5 02 13 57 2E 40 13 5F 5E 40

-93 7F F7 00 13 78 FF 07 B3 87 0F 03 BE 9E 83 90

-06 00 83 12 05 00 89 06 4E 95 B3 85 50 02 13 D6

-25 40 13 DE 55 40 13 77 F6 00 13 7F FE 07 B3 0F

-E7 03 FE 9E 63 03 DA 0A 33 08 35 01 83 90 06 00

-83 12 05 00 B3 07 38 01 03 9E 26 00 03 17 08 00

-83 9F 07 00 33 85 37 01 03 96 46 00 33 8F 50 02

-03 18 05 00 83 95 66 00 A1 06 4E 95 B3 00 EE 02

-93 52 2F 40 13 5E 5F 40 13 F7 F2 00 93 77 FE 07

-33 06 F6 03 13 DF 50 40 93 DF 20 40 93 72 FF 07

-93 F0 FF 00 B3 85 05 03 13 5E 56 40 13 58 26 40

-93 7F F8 00 13 76 FE 07 B3 07 F7 02 13 DF 55 40

-13 D7 25 40 13 78 F7 00 93 75 FF 07 B3 80 50 02

-BE 9E B3 82 CF 02 33 8E 1E 00 B3 0F B8 02 33 06

-5E 00 B3 0E F6 01 E3 11 DA F6 23 A0 D3 01 93 06

-13 00 91 03 89 08 63 04 DB 00 36 83 75 B5 93 03

-1C 00 CE 9A DA 9B 4E 9A 63 04 6C 00 1E 8C 51 B5

-B2 50 22 54 92 54 02 59 F2 49 62 4A D2 4A 42 4B

-B2 4B 22 4C 45 61 82 80 82 80 13 03 F5 FF 85 47

-B2 88 63 FA 67 16 85 05 93 92 05 01 93 D5 02 01

-37 06 04 F0 93 D3 35 00 9D 4E 93 F6 75 00 01 47

-13 06 86 0A A1 4F 11 48 05 4E 13 0F C0 02 93 F7

-33 00 63 8C D6 11 63 68 D8 12 93 83 D6 FF 93 92

-03 01 8A 07 93 D6 02 01 B3 03 F6 00 63 68 DE 10

-83 A6 03 01 A5 47 A1 43 B3 02 F7 00 63 F5 62 12

-41 11 22 C6 35 A0 63 66 88 0C 93 06 D4 FF 93 97

-06 01 13 94 23 00 93 D2 07 01 B3 03 86 00 63 65

-5E 0A 83 A6 03 01 A5 42 A1 43 BA 92 63 F3 62 08

-03 C4 06 00 B3 87 E8 00 23 80 87 00 03 C7 16 00

-A3 80 E7 00 03 C4 26 00 23 81 87 00 03 C7 36 00

-A3 81 E7 00 63 84 03 03 03 C4 46 00 23 82 87 00

-03 C7 56 00 A3 82 E7 00 03 C4 66 00 23 83 87 00

-63 96 F3 01 83 C6 76 00 A3 83 D7 00 85 05 BE 93

-93 97 05 01 93 D5 07 01 23 80 E3 01 16 87 13 F4

-75 00 93 D2 35 00 93 F3 32 00 E3 16 D4 F7 93 96

-23 00 A5 42 B3 07 D6 00 BA 92 94 5B A1 43 E3 E1

-62 F8 63 79 A7 02 32 44 33 06 E5 40 81 45 33 85

-E8 00 41 01 6F 30 C0 61 83 A6 03 00 95 42 91 43

-A9 BF 13 94 23 00 B3 03 86 00 83 A6 03 02 A5 42

-A1 43 A1 B7 32 44 41 01 82 80 93 92 27 00 B3 03

-56 00 83 A6 03 03 A5 47 A1 43 FD BD 83 A6 03 00

-95 47 91 43 D5 BD 93 92 27 00 B3 06 56 00 94 52

-A5 47 A1 43 D5 B5 01 47 33 06 E5 40 81 45 33 85

-E8 00 6F 30 E0 5B E3 69 A7 FE 82 80 1C 41 2A 8E

-01 45 03 C7 07 00 3E 88 61 C3 93 06 C0 02 13 88

-17 00 63 07 D7 24 88 41 13 06 07 FD 93 72 F6 0F

-A5 48 13 03 15 00 63 E4 58 0A 23 A0 65 00 83 C8

-17 00 63 8A 08 12 13 87 27 00 63 85 D8 12 13 86

-08 FD 13 0F E0 02 A5 4F 93 07 C0 02 93 76 F6 0F

-63 84 E8 03 63 E4 DF 0A 83 48 18 00 13 05 17 00

-3A 88 63 81 08 10 63 8C F8 20 13 86 08 FD 2A 87

-93 76 F6 0F E3 90 E8 FF 03 A3 05 01 15 45 93 03

-13 00 23 A8 75 00 03 43 18 00 3A 88 63 0E 03 02

-13 08 C0 02 93 08 17 00 63 01 03 1D 93 0E 50 04

-25 4F 93 0F C0 02 93 07 03 FD 13 76 F3 0D 93 F6

-F7 0F 63 0C D6 0B 63 7F DF 14 83 A2 45 01 46 88

-05 45 13 87 12 00 D8 C9 23 20 0E 01 82 80 93 03

-B0 02 63 0F 77 02 93 0E D0 02 63 0B D7 03 13 0F

-E0 02 63 04 E7 15 83 AF 45 00 23 A0 65 00 05 45

-93 87 1F 00 DC C1 23 20 0E 01 82 80 83 A2 05 01

-3A 88 05 45 13 87 12 00 98 C9 23 20 0E 01 82 80

-23 A0 65 00 03 C6 17 00 63 0E 06 14 13 88 27 00

-63 0A D6 14 94 45 13 07 06 FD 93 72 F7 0F 25 45

-93 88 16 00 63 7C 55 00 13 03 E0 02 63 03 66 10

-23 A4 15 01 05 45 23 20 0E 01 82 80 23 A4 15 01

-83 C8 27 00 63 89 08 00 93 0E C0 02 13 07 18 00

-E3 9F D8 ED 3A 88 11 45 85 B7 C8 49 93 03 15 00

-23 AA 75 00 83 4E 17 00 63 89 0E 0E 13 0F C0 02

-13 88 18 00 63 84 EE 0F 83 AF C5 00 93 87 5E FD

-13 F6 D7 0F 93 86 1F 00 D4 C5 09 C6 05 45 23 20

-0E 01 82 80 83 C2 18 00 63 84 02 0C 13 88 28 00

-63 80 E2 0D 03 A3 85 01 13 87 02 FD 13 75 F7 0F

-93 0E 13 00 A5 43 23 AC D5 01 E3 E9 A3 FC 83 C2

-28 00 63 8A 02 08 13 87 38 00 63 85 E2 09 A5 48

-13 0F C0 02 93 8F 02 FD 13 F6 FF 0F 63 F9 C8 00

-D4 41 3A 88 05 45 93 87 16 00 DC C1 F1 B5 83 42

-18 00 13 03 17 00 3A 88 63 8E 02 04 63 86 E2 07

-1A 87 C9 BF 03 43 17 00 13 88 18 00 46 87 63 0E

-03 02 63 0D F3 03 C2 88 BD BD 23 A0 65 00 03 C3

-17 00 63 05 03 02 93 88 27 00 63 00 D3 02 42 87

-B1 BD 23 A4 15 01 03 C3 27 00 63 09 03 00 93 03

-C0 02 93 08 18 00 E3 14 73 FE 46 88 15 45 AD B5

-01 45 9D B5 3A 88 1D 45 85 B5 46 88 0D 45 A9 BD

-19 45 99 BD 09 45 89 BD 1A 88 1D 45 B1 B5 2A 88

-11 45 99 B5 19 71 A2 DC A6 DA CA D8 D2 D4 D6 D2

-DA D0 DE CE 86 DE CE D6 2E 89 83 C5 05 00 4A C6

-02 D8 02 C8 02 DA 02 DC 02 DE 82 C0 82 C2 82 C4

-82 C6 02 CA 02 CC 02 CE 02 D0 02 D2 02 D4 02 D6

-04 18 2A 8A B2 8B 36 8B BA 8A 3E 84 E3 8C 05 1C

-93 09 C1 00 A6 85 4E 85 15 33 AA 87 93 92 27 00

-98 08 33 03 57 00 B2 46 83 23 03 FC A6 85 03 C6

-06 00 13 88 13 00 23 20 03 FD 4E 85 35 CA FD 39

-AA 88 13 9E 28 00 93 0E 01 05 33 8F CE 01 B2 47

-83 2F 0F FC A6 85 83 C2 07 00 13 87 1F 00 23 20

-EF FC 4E 85 63 86 02 04 D1 39 2A 83 93 13 23 00

-94 08 33 86 76 00 B2 48 03 28 06 FC A6 85 03 CE

-08 00 93 0E 18 00 23 20 D6 FD 4E 85 63 02 0E 02

-75 31 0A 05 8C 08 33 8F A5 00 B2 47 83 2F 0F FC

-83 C2 07 00 13 87 1F 00 23 20 EF FC E3 94 02 F6

-4A C6 4A 9A 83 45 09 00 E3 7C 49 13 93 00 C0 02

-4A 83 B3 C9 75 01 63 80 15 02 23 00 33 01 B2 43

-33 83 53 01 1A C6 63 7C 43 01 83 45 03 00 B3 C9

-75 01 E3 94 15 FE 56 93 1A C6 E3 68 43 FF 83 4B

-09 00 4A C6 93 09 C1 00 63 83 0B 0A A6 85 4E 85

-35 39 AA 86 13 96 26 00 13 08 01 05 B3 08 C8 00

-B2 4E 03 AE 08 FC A6 85 03 CF 0E 00 93 0F 1E 00

-23 A0 F8 FD 4E 85 63 09 0F 06 09 39 AA 87 93 92

-27 00 98 08 33 03 57 00 B2 4B 83 23 03 FC A6 85

-83 C6 0B 00 13 86 13 00 23 20 C3 FC 4E 85 A9 C6

-F5 36 2A 88 93 18 28 00 13 0E 01 05 B3 0E 1E 01

-B2 4F 03 AF 0E FC A6 85 83 C7 0F 00 93 02 1F 00

-23 A0 5E FC 4E 85 8D C3 D1 36 0A 05 8C 08 33 83

-A5 00 32 47 83 23 03 FC 83 4B 07 00 93 86 13 00

-23 20 D3 FC E3 94 0B F6 4A C6 63 72 49 03 93 00

-C0 02 83 49 09 00 33 C6 69 01 E3 87 19 02 23 00

-C9 00 32 48 33 09 58 01 4A C6 E3 64 49 FF 69 7A

-14 08 26 86 13 0E 1A 00 83 AE 06 00 93 53 14 00

-33 C4 8E 00 13 FF FE 0F 93 9F 0E 01 93 78 14 00

-93 D2 0F 01 13 55 1F 00 63 88 08 00 B3 C7 C3 01

-93 95 07 01 93 D3 05 01 33 C3 A3 00 13 77 13 00

-93 5B 2F 00 93 D0 13 00 19 C7 B3 CA C0 01 13 9B

-0A 01 93 50 0B 01 B3 C9 70 01 13 F9 19 00 13 58

-3F 00 93 DF 10 00 63 08 09 00 33 CA CF 01 13 14

-0A 01 93 5F 04 01 B3 C8 0F 01 13 F5 18 00 93 55

-4F 00 13 D7 1F 00 19 C5 B3 47 C7 01 93 93 07 01

-13 D7 03 01 33 C3 E5 00 93 7B 13 00 93 5A 5F 00

-93 59 17 00 63 88 0B 00 33 CB C9 01 93 10 0B 01

-93 D9 00 01 33 C9 59 01 13 78 19 00 13 5A 6F 00

-13 D5 19 00 63 08 08 00 33 44 C5 01 93 1F 04 01

-13 D5 0F 01 B3 48 AA 00 93 F5 18 00 13 5F 7F 00

-13 57 15 00 99 C5 B3 47 C7 01 93 93 07 01 13 D7

-03 01 13 73 17 00 13 5B 17 00 63 08 E3 01 B3 4B

-CB 01 93 9A 0B 01 13 DB 0A 01 93 D0 82 00 B3 C9

-60 01 13 F9 19 00 13 D8 82 00 93 5F 1B 00 93 D2

-92 00 63 08 09 00 33 CA CF 01 13 14 0A 01 93 5F

-04 01 33 C5 F2 01 93 75 15 00 93 58 28 00 93 D3

-1F 00 99 C5 33 CF C3 01 93 17 0F 01 93 D3 07 01

-33 C7 78 00 13 73 17 00 93 5B 38 00 93 D0 13 00

-63 08 03 00 B3 CA C0 01 13 9B 0A 01 93 50 0B 01

-B3 C9 1B 00 13 F9 19 00 93 52 48 00 93 DF 10 00

-63 08 09 00 33 CA CF 01 13 14 0A 01 93 5F 04 01

-33 C5 F2 01 93 75 15 00 93 58 58 00 93 D3 1F 00

-99 C5 33 CF C3 01 93 17 0F 01 93 D3 07 01 33 C7

-78 00 13 73 17 00 93 5B 68 00 93 D0 13 00 63 08

-03 00 B3 CA C0 01 13 9B 0A 01 93 50 0B 01 B3 C9

-1B 00 13 F9 19 00 13 58 78 00 13 D4 10 00 63 08

-09 00 B3 42 C4 01 13 9A 02 01 13 54 0A 01 93 7F

-14 00 13 5F 14 00 63 88 0F 01 33 45 CF 01 93 15

-05 01 13 DF 05 01 93 D8 0E 01 B3 C7 E8 01 93 F3

-F8 0F 13 F7 17 00 93 DE 0E 01 13 D3 13 00 13 5B

-1F 00 19 C7 B3 4B CB 01 93 9A 0B 01 13 DB 0A 01

-B3 40 63 01 93 F9 10 00 13 D9 23 00 13 5A 1B 00

-63 88 09 00 33 48 CA 01 93 12 08 01 13 DA 02 01

-33 44 49 01 93 7F 14 00 13 D5 33 00 93 57 1A 00

-63 88 0F 00 B3 C5 C7 01 13 9F 05 01 93 57 0F 01

-B3 48 F5 00 13 F7 18 00 13 D3 43 00 13 DB 17 00

-19 C7 B3 4B CB 01 93 9A 0B 01 13 DB 0A 01 B3 40

-63 01 93 F9 10 00 13 D9 53 00 13 5A 1B 00 63 88

-09 00 33 48 CA 01 93 12 08 01 13 DA 02 01 33 44

-49 01 93 7F 14 00 13 D5 63 00 93 57 1A 00 63 88

-0F 00 B3 C5 C7 01 13 9F 05 01 93 57 0F 01 B3 48

-F5 00 13 F7 18 00 93 D3 73 00 93 DA 17 00 19 C7

-33 C3 CA 01 93 1B 03 01 93 DA 0B 01 13 FB 1A 00

-13 D9 1A 00 63 08 7B 00 B3 40 C9 01 93 99 00 01

-13 D9 09 01 13 D8 8E 00 B3 42 28 01 13 FA 12 00

-13 D4 8E 00 13 5F 19 00 93 DE 9E 00 63 08 0A 00

-B3 4F CF 01 13 95 0F 01 13 5F 05 01 B3 C5 EE 01

-93 F8 15 00 13 57 24 00 13 53 1F 00 63 88 08 00

-B3 47 C3 01 93 93 07 01 13 D3 03 01 B3 4B 67 00

-93 FA 1B 00 13 5B 34 00 13 59 13 00 63 88 0A 00

-B3 40 C9 01 93 99 00 01 13 D9 09 01 33 48 2B 01

-93 72 18 00 13 5A 44 00 13 55 19 00 63 88 02 00

-B3 4E C5 01 93 9F 0E 01 13 D5 0F 01 33 4F AA 00

-93 75 1F 00 93 58 54 00 93 53 15 00 99 C5 33 C7

-C3 01 93 17 07 01 93 D3 07 01 33 C3 78 00 93 7B

-13 00 93 5A 64 00 93 D9 13 00 63 88 0B 00 33 CB

-C9 01 93 10 0B 01 93 D9 00 01 33 C9 3A 01 13 78

-19 00 1D 80 93 DE 19 00 63 08 08 00 B3 C2 CE 01

-13 9A 02 01 93 5E 0A 01 93 FF 1E 00 93 D8 1E 00

-63 88 8F 00 33 C5 C8 01 13 1F 05 01 93 58 0F 01

-0C 42 93 D9 18 00 33 C7 15 01 93 F3 F5 0F 13 93

-05 01 93 77 17 00 93 5B 03 01 93 DA 13 00 99 C7

-33 CB C9 01 93 10 0B 01 93 D9 00 01 33 C9 3A 01

-13 78 19 00 93 D2 23 00 93 DE 19 00 63 08 08 00

-33 C4 CE 01 13 1A 04 01 93 5E 0A 01 B3 CF D2 01

-13 F5 1F 00 13 DF 33 00 13 D3 1E 00 19 C5 B3 48

-C3 01 13 97 08 01 13 53 07 01 B3 47 6F 00 93 FA

-17 00 13 DB 43 00 13 59 13 00 63 88 0A 00 B3 40

-C9 01 93 99 00 01 13 D9 09 01 33 48 2B 01 93 72

-18 00 13 DA 53 00 93 5F 19 00 63 88 02 00 33 C4

-CF 01 93 1E 04 01 93 DF 0E 01 33 45 FA 01 13 7F

-15 00 93 D8 63 00 93 DA 1F 00 63 08 0F 00 33 C7

-CA 01 13 13 07 01 93 5A 03 01 B3 C7 58 01 13 FB

-17 00 93 D3 73 00 13 D9 1A 00 63 08 0B 00 B3 40

-C9 01 93 99 00 01 13 D9 09 01 13 78 19 00 13 54

-19 00 63 08 78 00 B3 42 C4 01 13 9A 02 01 13 54

-0A 01 93 DE 8B 00 B3 CF 8E 00 13 FF 1F 00 13 D5

-8B 00 13 53 14 00 93 DB 9B 00 63 08 0F 00 B3 48

-C3 01 13 97 08 01 13 53 07 01 B3 CA 6B 00 93 F7

-1A 00 13 5B 25 00 93 59 13 00 99 C7 B3 C3 C9 01

-93 90 03 01 93 D9 00 01 33 49 3B 01 93 72 19 00

-13 58 35 00 93 DE 19 00 63 88 02 00 33 CA CE 01

-13 14 0A 01 93 5E 04 01 B3 4F D8 01 13 FF 1F 00

-93 5B 45 00 13 D3 1E 00 63 08 0F 00 B3 48 C3 01

-13 97 08 01 13 53 07 01 B3 CA 6B 00 93 F7 1A 00

-13 5B 55 00 93 59 13 00 99 C7 B3 C3 C9 01 93 90

-03 01 93 D9 00 01 33 49 3B 01 93 72 19 00 13 58

-65 00 93 DE 19 00 63 88 02 00 33 CA CE 01 13 14

-0A 01 93 5E 04 01 B3 4F D8 01 13 FF 1F 00 1D 81

-13 D7 1E 00 63 08 0F 00 B3 4B C7 01 93 98 0B 01

-13 D7 08 01 13 73 17 00 13 5B 17 00 63 08 A3 00

-B3 4A CB 01 93 97 0A 01 13 DB 07 01 93 D3 05 01

-B3 C0 63 01 93 F9 F3 0F 13 F9 10 00 C1 81 93 D2

-19 00 13 54 1B 00 63 08 09 00 33 48 C4 01 13 1A

-08 01 13 54 0A 01 B3 CE 82 00 93 FF 1E 00 13 DF

-29 00 93 58 14 00 63 88 0F 00 33 C5 C8 01 93 1B

-05 01 93 D8 0B 01 33 47 1F 01 13 73 17 00 93 DA

-39 00 93 D3 18 00 63 08 03 00 B3 C7 C3 01 13 9B

-07 01 93 53 0B 01 B3 C0 7A 00 13 F9 10 00 93 D2

-49 00 13 D4 13 00 63 08 09 00 33 48 C4 01 13 1A

-08 01 13 54 0A 01 B3 CE 82 00 93 FF 1E 00 13 DF

-59 00 93 58 14 00 63 88 0F 00 33 C5 C8 01 93 1B

-05 01 93 D8 0B 01 33 47 1F 01 13 73 17 00 93 DA

-69 00 93 D3 18 00 63 08 03 00 B3 C7 C3 01 13 9B

-07 01 93 53 0B 01 B3 C0 7A 00 13 F9 10 00 93 D9

-79 00 13 DA 13 00 63 08 09 00 B3 42 CA 01 13 98

-02 01 13 5A 08 01 93 7E 1A 00 13 5F 1A 00 63 88

-3E 01 33 44 CF 01 93 1F 04 01 13 DF 0F 01 13 D5

-85 00 B3 4B E5 01 93 F8 1B 00 13 D7 85 00 93 57

-1F 00 A5 81 63 88 08 00 33 C3 C7 01 93 1A 03 01

-93 D7 0A 01 33 CB F5 00 93 73 1B 00 93 50 27 00

-93 D2 17 00 63 88 03 00 33 C9 C2 01 93 19 09 01

-93 D2 09 01 33 C8 50 00 13 7A 18 00 93 5E 37 00

-13 DF 12 00 63 08 0A 00 33 44 CF 01 93 1F 04 01

-13 DF 0F 01 33 C5 EE 01 93 7B 15 00 93 58 47 00

-93 5A 1F 00 63 88 0B 00 B3 C5 CA 01 13 93 05 01

-93 5A 03 01 B3 C7 58 01 13 FB 17 00 93 53 57 00

-93 D9 1A 00 63 08 0B 00 B3 C0 C9 01 13 99 00 01

-93 59 09 01 B3 C2 33 01 13 F8 12 00 13 5A 67 00

-93 DF 19 00 63 08 08 00 B3 CE CF 01 13 94 0E 01

-93 5F 04 01 33 4F FA 01 13 75 1F 00 1D 83 13 D3

-1F 00 19 C5 B3 4B C3 01 93 98 0B 01 13 D3 08 01

-93 75 13 00 13 54 13 00 63 88 E5 00 B3 4A C4 01

-93 97 0A 01 13 D4 07 01 91 06 11 06 E3 96 D4 80

-F6 50 22 85 66 54 D6 54 46 59 B6 59 26 5A 96 5A

-06 5B F6 4B 09 61 82 80 56 99 4A C6 63 63 49 FD

-6F F0 EF FD 33 0A A9 00 63 6A 49 ED 6F F0 2F FD

-63 96 05 F0 6F F0 AF FC 01 11 26 CA 83 14 05 00

-06 CE 22 CC 93 D7 74 40 4A C8 4E C6 93 F0 17 00

-63 8B 00 00 F2 40 62 44 42 49 B2 49 13 F5 F4 07

-D2 44 05 61 82 80 13 D7 34 40 93 72 F7 00 13 93

-42 00 93 F6 74 00 03 D4 85 03 AA 89 2E 89 33 67

-53 00 63 87 06 50 05 45 63 83 A6 28 13 95 04 01

-41 81 A6 8E B3 CF 8E 00 93 F0 FE 0F 93 F8 1F 00

-13 DF 10 00 93 53 14 00 63 8B 08 00 69 77 93 02

-17 00 B3 C7 53 00 13 93 07 01 93 53 03 01 33 48

-7F 00 93 75 18 00 93 D6 20 00 93 D8 13 00 91 C9

-69 76 13 04 16 00 33 CE 88 00 93 1F 0E 01 93 D8

-0F 01 33 CF 16 01 13 77 1F 00 93 D2 30 00 93 D6

-18 00 11 CB 69 73 93 03 13 00 B3 C7 76 00 13 98

-07 01 93 56 08 01 B3 C5 D2 00 13 F4 15 00 13 D6

-40 00 13 D7 16 00 11 C8 69 7E 93 0F 1E 00 B3 48

-F7 01 13 9F 08 01 13 57 0F 01 B3 42 C7 00 13 F3

-12 00 93 D3 50 00 13 54 17 00 63 0B 03 00 69 78

-93 06 18 00 B3 47 D4 00 93 95 07 01 13 D4 05 01

-33 46 74 00 13 7E 16 00 93 DF 60 00 13 53 14 00

-63 0B 0E 00 E9 78 13 8F 18 00 33 47 E3 01 93 12

-07 01 13 D3 02 01 B3 43 F3 01 13 F8 13 00 93 D0

-70 00 13 5E 13 00 63 0B 08 00 E9 76 93 85 16 00

-B3 47 BE 00 13 94 07 01 13 5E 04 01 13 76 1E 00

-93 52 1E 00 63 0B 16 00 E9 7F 93 88 1F 00 33 CF

-12 01 13 17 0F 01 93 52 07 01 21 81 33 43 55 00

-93 73 F5 0F 13 78 13 00 93 D0 13 00 13 DE 12 00

-63 0B 08 00 E9 76 93 85 16 00 B3 47 BE 00 13 94

-07 01 13 5E 04 01 33 46 1E 00 93 7F 16 00 93 D8

-23 00 13 53 1E 00 63 8B 0F 00 69 7F 13 07 1F 00

-B3 42 E3 00 13 95 02 01 13 53 05 01 33 C8 68 00

-93 70 18 00 93 D5 33 00 93 5F 13 00 63 8B 00 00

-E9 76 13 84 16 00 B3 C7 8F 00 13 9E 07 01 93 5F

-0E 01 33 C6 F5 01 93 78 16 00 13 DF 43 00 13 D8

-1F 00 63 8B 08 00 69 77 93 02 17 00 33 45 58 00

-13 13 05 01 13 58 03 01 B3 40 0F 01 93 F5 10 00

-13 D4 53 00 93 58 18 00 91 C9 E9 76 13 8E 16 00

-B3 C7 C8 01 93 9F 07 01 93 D8 0F 01 33 46 14 01

-13 7F 16 00 13 D7 63 00 93 D0 18 00 63 0B 0F 00

-E9 72 13 85 12 00 33 C3 A0 00 13 18 03 01 93 50

-08 01 B3 45 17 00 13 F4 15 00 93 D3 73 00 93 D8

-10 00 11 C8 E9 76 13 8E 16 00 B3 C7 C8 01 93 9F

-07 01 93 D8 0F 01 33 C6 13 01 13 7F 16 00 13 D8

-18 00 63 0B 0F 00 69 77 93 02 17 00 33 45 58 00

-13 13 05 01 13 58 03 01 13 F5 FE 07 93 F4 04 F0

-F2 40 62 44 B3 6E 95 00 23 1C 09 03 13 E9 0E 08

-23 90 29 01 D2 44 42 49 B2 49 05 61 82 80 D0 55

-94 59 03 25 89 02 CC 59 EF B0 3F F5 33 46 A4 00

-93 78 F5 0F 93 1E 05 01 13 7E 16 00 13 DF 0E 01

-93 DF 18 00 13 53 14 00 63 0B 0E 00 E9 77 93 80

-17 00 33 47 13 00 93 12 07 01 13 D3 02 01 B3 46

-F3 01 93 F3 16 00 13 D8 28 00 13 5E 13 00 63 8B

-03 00 E9 75 13 84 15 00 33 45 8E 00 13 16 05 01

-13 5E 06 01 B3 4E 0E 01 93 FF 1E 00 93 D7 38 00

-93 53 1E 00 63 8B 0F 00 E9 70 13 87 10 00 B3 C2

-E3 00 13 93 02 01 93 53 03 01 B3 C6 F3 00 13 F8

-16 00 93 D5 48 00 93 DE 13 00 63 0B 08 00 69 74

-13 06 14 00 33 C5 CE 00 13 1E 05 01 93 5E 0E 01

-B3 CF BE 00 93 F7 1F 00 93 D0 58 00 13 D8 1E 00

-91 CB 69 77 93 02 17 00 33 43 58 00 93 13 03 01

-13 D8 03 01 B3 46 18 00 93 F5 16 00 13 D4 68 00

-93 5F 18 00 91 C9 69 76 13 0E 16 00 33 C5 CF 01

-93 1E 05 01 93 DF 0E 01 B3 C7 8F 00 93 F0 17 00

-93 D8 78 00 13 D8 1F 00 63 8B 00 00 69 77 93 02

-17 00 33 43 58 00 93 13 03 01 13 D8 03 01 93 76

-18 00 13 55 18 00 63 8B 16 01 E9 75 13 84 15 00

-33 46 85 00 13 1E 06 01 13 55 0E 01 93 5E 8F 00

-B3 4F D5 01 93 F0 1F 00 93 58 8F 00 93 53 15 00

-13 5F 9F 00 63 8B 00 00 E9 77 13 87 17 00 B3 C2

-E3 00 13 93 02 01 93 53 03 01 33 C8 E3 01 93 75

-18 00 93 D6 28 00 93 DE 13 00 91 C9 69 74 13 06

-14 00 33 CE CE 00 13 15 0E 01 93 5E 05 01 B3 CF

-DE 00 93 F0 1F 00 13 DF 38 00 93 D3 1E 00 63 8B

-00 00 E9 77 13 87 17 00 B3 C2 E3 00 13 93 02 01

-93 53 03 01 33 C8 E3 01 93 75 18 00 13 D4 48 00

-93 DE 13 00 91 C9 E9 76 13 86 16 00 33 CE CE 00

-13 15 0E 01 93 5E 05 01 B3 CF 8E 00 93 F0 1F 00

-13 DF 58 00 93 D3 1E 00 63 8B 00 00 E9 77 13 87

-17 00 B3 C2 E3 00 13 93 02 01 93 53 03 01 33 C8

-E3 01 93 75 18 00 13 D4 68 00 93 DE 13 00 91 C9

-E9 76 13 86 16 00 33 CE CE 00 13 15 0E 01 93 5E

-05 01 B3 CF 8E 00 93 F0 1F 00 93 D8 78 00 13 D3

-1E 00 63 8B 00 00 69 7F 93 07 1F 00 33 47 F3 00

-93 12 07 01 13 D3 02 01 93 73 13 00 13 55 13 00

-63 8B 13 01 69 78 93 05 18 00 33 44 B5 00 93 16

-04 01 13 D5 06 01 03 56 C9 03 13 1E 05 01 03 54

-89 03 93 5E 0E 41 E3 17 06 B0 23 1E A9 02 19 B6

-93 03 20 02 3A 88 63 54 77 00 13 08 20 02 83 25

-49 01 83 16 29 00 03 16 09 00 03 25 89 01 A2 87

-13 77 F8 0F EF F0 0F 85 83 55 E9 03 13 14 05 01

-93 5E 04 41 03 54 89 03 E3 96 05 AC 23 1F A9 02

-D1 B4 01 11 4A C8 03 19 05 00 06 CE 22 CC 93 57

-79 40 26 CA 52 C4 4E C6 93 F0 17 00 2E 8A B2 84

-13 74 F9 07 63 9E 00 28 13 57 39 40 93 72 F7 00

-93 96 42 00 13 73 79 00 03 54 86 03 AA 89 33 E7

-D2 00 63 00 03 7C 05 45 63 0D A3 52 13 15 09 01

-41 81 CA 8E B3 4F D4 01 93 F0 FE 0F 93 F8 1F 00

-13 DF 10 00 93 53 14 00 63 8B 08 00 69 77 93 02

-17 00 B3 C7 53 00 13 93 07 01 93 53 03 01 33 C8

-E3 01 93 75 18 00 93 D6 20 00 93 D8 13 00 91 C9

-69 76 13 04 16 00 33 CE 88 00 93 1F 0E 01 93 D8

-0F 01 33 CF D8 00 13 77 1F 00 93 D2 30 00 93 D6

-18 00 11 CB 69 73 93 03 13 00 B3 C7 76 00 13 98

-07 01 93 56 08 01 B3 C5 56 00 13 F4 15 00 13 D6

-40 00 13 D7 16 00 11 C8 69 7E 93 0F 1E 00 B3 48

-F7 01 13 9F 08 01 13 57 0F 01 B3 42 C7 00 13 F3

-12 00 93 D3 50 00 13 54 17 00 63 0B 03 00 69 78

-93 06 18 00 B3 47 D4 00 93 95 07 01 13 D4 05 01

-33 46 74 00 13 7E 16 00 93 DF 60 00 13 53 14 00

-63 0B 0E 00 E9 78 13 8F 18 00 33 47 E3 01 93 12

-07 01 13 D3 02 01 B3 43 F3 01 13 F8 13 00 93 D0

-70 00 13 5E 13 00 63 0B 08 00 E9 76 93 85 16 00

-B3 47 BE 00 13 94 07 01 13 5E 04 01 13 76 1E 00

-93 52 1E 00 63 0B 16 00 E9 7F 93 88 1F 00 33 CF

-12 01 13 17 0F 01 93 52 07 01 21 81 33 43 55 00

-93 73 F5 0F 13 78 13 00 93 D0 13 00 13 DE 12 00

-63 0B 08 00 E9 76 93 85 16 00 B3 47 BE 00 13 94

-07 01 13 5E 04 01 33 46 1E 00 93 7F 16 00 93 D8

-23 00 13 53 1E 00 63 8B 0F 00 69 7F 13 07 1F 00

-B3 42 E3 00 13 95 02 01 13 53 05 01 33 48 13 01

-93 70 18 00 93 D5 33 00 93 5F 13 00 63 8B 00 00

-E9 76 13 84 16 00 B3 C7 8F 00 13 9E 07 01 93 5F

-0E 01 33 C6 BF 00 93 78 16 00 13 DF 43 00 13 D8

-1F 00 63 8B 08 00 69 77 93 02 17 00 33 45 58 00

-13 13 05 01 13 58 03 01 B3 40 E8 01 93 F5 10 00

-13 D4 53 00 93 58 18 00 91 C9 E9 76 13 8E 16 00

-B3 C7 C8 01 93 9F 07 01 93 D8 0F 01 33 C6 88 00

-13 7F 16 00 13 D7 63 00 93 D0 18 00 63 0B 0F 00

-E9 72 13 85 12 00 33 C3 A0 00 13 18 03 01 93 50

-08 01 B3 C5 E0 00 13 F4 15 00 93 D3 73 00 93 D8

-10 00 11 C8 E9 76 13 8E 16 00 B3 C7 C8 01 93 9F

-07 01 93 D8 0F 01 33 C6 13 01 13 7F 16 00 13 D8

-18 00 63 0B 0F 00 69 77 93 02 17 00 33 45 58 00

-13 13 05 01 13 58 03 01 13 F4 FE 07 13 79 09 F0

-B3 6E 24 01 23 9C 04 03 93 E0 0E 08 23 90 19 00

-03 19 0A 00 93 59 79 40 93 F5 19 00 13 78 F9 07

-63 9F 05 28 93 53 39 40 13 FE F3 00 93 16 4E 00

-93 77 79 00 83 D9 84 03 33 67 DE 00 63 8A 07 54

-85 42 63 86 57 58 13 15 09 01 41 81 4A 88 B3 45

-38 01 93 70 F8 0F 93 FE 15 00 13 D7 10 00 93 D8

-19 00 63 8B 0E 00 E9 73 13 8E 13 00 B3 CF C8 01

-93 97 0F 01 93 D8 07 01 33 4F 17 01 93 72 1F 00

-93 D6 20 00 93 DE 18 00 63 8B 02 00 69 76 93 09

-16 00 33 C3 3E 01 93 15 03 01 93 DE 05 01 33 C7

-DE 00 93 73 17 00 13 DE 30 00 93 D2 1E 00 63 8B

-03 00 E9 7F 93 88 1F 00 B3 C7 12 01 13 9F 07 01

-93 52 0F 01 B3 C6 C2 01 13 F6 16 00 93 D9 40 00

-93 D3 12 00 11 CA 69 73 93 05 13 00 B3 CE B3 00

-13 97 0E 01 93 53 07 01 33 CE 33 01 93 7F 1E 00

-93 D8 50 00 13 D6 13 00 63 8B 0F 00 69 7F 93 02

-1F 00 B3 47 56 00 93 96 07 01 13 D6 06 01 B3 49

-16 01 13 F3 19 00 93 DE 60 00 93 5F 16 00 63 0B

-03 00 E9 75 13 87 15 00 B3 C3 EF 00 13 9E 03 01

-93 5F 0E 01 B3 C8 FE 01 13 FF 18 00 93 D0 70 00

-93 D9 1F 00 63 0B 0F 00 E9 72 93 86 12 00 B3 C7

-D9 00 13 96 07 01 93 59 06 01 13 F3 19 00 13 DE

-19 00 63 0B 13 00 E9 7E 93 85 1E 00 33 47 BE 00

-93 13 07 01 13 DE 03 01 21 81 B3 4F C5 01 93 78

-F5 0F 13 FF 1F 00 93 D0 18 00 93 59 1E 00 63 0B

-0F 00 E9 72 93 86 12 00 B3 C7 D9 00 13 96 07 01

-93 59 06 01 33 C3 19 00 93 7E 13 00 13 D7 28 00

-93 DF 19 00 63 8B 0E 00 E9 75 93 83 15 00 33 CE

-7F 00 13 15 0E 01 93 5F 05 01 33 CF EF 00 93 70

-1F 00 93 D2 38 00 13 D3 1F 00 63 8B 00 00 E9 76

-13 86 16 00 B3 47 C3 00 93 99 07 01 13 D3 09 01

-B3 4E 53 00 13 F7 1E 00 93 D3 48 00 13 5F 13 00

-11 CB E9 75 13 8E 15 00 33 45 CF 01 93 1F 05 01

-13 DF 0F 01 B3 C0 E3 01 93 F2 10 00 93 D6 58 00

-93 5E 1F 00 63 8B 02 00 69 76 93 09 16 00 B3 C7

-3E 01 13 93 07 01 93 5E 03 01 33 C7 D6 01 93 73

-17 00 13 DE 68 00 93 D0 1E 00 63 8B 03 00 E9 75

-13 85 15 00 B3 CF A0 00 13 9F 0F 01 93 50 0F 01

-B3 42 1E 00 13 F6 12 00 93 D8 78 00 93 DE 10 00

-11 CA E9 76 93 89 16 00 B3 C7 3E 01 13 93 07 01

-93 5E 03 01 33 C7 D8 01 93 73 17 00 13 DF 1E 00

-63 8B 03 00 69 7E 93 05 1E 00 33 45 BF 00 93 1F

-05 01 13 DF 0F 01 13 78 F8 07 13 79 09 F0 B3 60

-28 01 23 9C E4 03 93 E4 00 08 23 10 9A 00 F2 40

-33 05 04 41 62 44 D2 44 42 49 B2 49 22 4A 05 61

-82 80 14 5A CC 58 50 56 88 54 EF B0 0F F1 33 46

-A4 00 93 78 F5 0F 93 1E 05 01 13 7E 16 00 13 DF

-0E 01 93 DF 18 00 13 53 14 00 63 0B 0E 00 E9 77

-93 80 17 00 33 47 13 00 93 12 07 01 13 D3 02 01

-B3 46 F3 01 93 F3 16 00 13 D8 28 00 13 5E 13 00

-63 8B 03 00 E9 75 13 84 15 00 33 45 8E 00 13 16

-05 01 13 5E 06 01 B3 4E 0E 01 93 FF 1E 00 93 D7

-38 00 93 53 1E 00 63 8B 0F 00 E9 70 13 87 10 00

-B3 C2 E3 00 13 93 02 01 93 53 03 01 B3 C6 F3 00

-13 F8 16 00 93 D5 48 00 93 DE 13 00 63 0B 08 00

-69 74 13 06 14 00 33 C5 CE 00 13 1E 05 01 93 5E

-0E 01 B3 CF BE 00 93 F7 1F 00 93 D0 58 00 13 D8

-1E 00 91 CB 69 77 93 02 17 00 33 43 58 00 93 13

-03 01 13 D8 03 01 B3 46 18 00 93 F5 16 00 13 D4

-68 00 93 5F 18 00 91 C9 69 76 13 0E 16 00 33 C5

-CF 01 93 1E 05 01 93 DF 0E 01 B3 C7 8F 00 93 F0

-17 00 93 D8 78 00 13 D8 1F 00 63 8B 00 00 69 77

-93 02 17 00 33 43 58 00 93 13 03 01 13 D8 03 01

-93 76 18 00 13 55 18 00 63 8B 16 01 E9 75 13 84

-15 00 33 46 85 00 13 1E 06 01 13 55 0E 01 93 5E

-8F 00 B3 4F D5 01 93 F0 1F 00 93 58 8F 00 93 53

-15 00 13 5F 9F 00 63 8B 00 00 E9 77 13 87 17 00

-B3 C2 E3 00 13 93 02 01 93 53 03 01 33 C8 E3 01

-93 75 18 00 93 D6 28 00 93 DE 13 00 91 C9 69 74

-13 06 14 00 33 CE CE 00 13 15 0E 01 93 5E 05 01

-B3 CF DE 00 93 F0 1F 00 13 DF 38 00 93 D3 1E 00

-63 8B 00 00 E9 77 13 87 17 00 B3 C2 E3 00 13 93

-02 01 93 53 03 01 33 C8 E3 01 93 75 18 00 13 D4

-48 00 93 DE 13 00 91 C9 E9 76 13 86 16 00 33 CE

-CE 00 13 15 0E 01 93 5E 05 01 B3 CF 8E 00 93 F0

-1F 00 13 DF 58 00 93 D3 1E 00 63 8B 00 00 E9 77

-13 87 17 00 B3 C2 E3 00 13 93 02 01 93 53 03 01

-33 C8 E3 01 93 75 18 00 13 D4 68 00 93 DE 13 00

-91 C9 E9 76 13 86 16 00 33 CE CE 00 13 15 0E 01

-93 5E 05 01 B3 CF 8E 00 93 F0 1F 00 93 D8 78 00

-13 D3 1E 00 63 8B 00 00 69 7F 93 07 1F 00 33 47

-F3 00 93 12 07 01 13 D3 02 01 93 73 13 00 13 55

-13 00 63 8B 13 01 69 78 93 05 18 00 33 44 B5 00

-93 16 04 01 13 D5 06 01 03 D6 C4 03 13 1E 05 01

-03 D4 84 03 93 5E 0E 41 E3 1E 06 84 23 9E A4 02

-91 B8 93 03 20 02 3A 88 63 54 77 00 13 08 20 02

-CC 48 83 96 24 00 03 96 04 00 88 4C A2 87 13 77

-F8 0F EF E0 3F 81 83 D5 E4 03 13 14 05 01 93 5E

-04 41 03 D4 84 03 E3 9F 05 80 23 9F A4 02 19 B8

-93 0F 20 02 BA 88 63 54 F7 01 93 08 20 02 03 96

-04 00 83 96 24 00 CC 48 88 4C CE 87 13 F7 F8 0F

-EF E0 4F FD 03 D6 E4 03 13 1F 05 01 83 D9 84 03

-13 58 0F 41 E3 15 06 A8 23 9F A4 02 49 B4 CC 58

-94 58 D0 54 88 54 EF B0 4F C1 33 43 35 01 13 77

-F5 0F 13 78 13 00 42 05 93 5E 05 01 93 55 17 00

-93 D7 19 00 63 0B 08 00 E9 70 93 89 10 00 B3 C3

-37 01 13 9E 03 01 93 57 0E 01 B3 C6 F5 00 93 FF

-16 00 93 58 27 00 13 D8 17 00 63 8B 0F 00 69 76

-13 0F 16 00 B3 42 E8 01 13 93 02 01 13 58 03 01

-33 45 18 01 93 75 15 00 93 50 37 00 93 5F 18 00

-91 C9 E9 79 93 83 19 00 33 CE 7F 00 93 17 0E 01

-93 DF 07 01 B3 C6 F0 01 93 F8 16 00 13 5F 47 00

-13 D5 1F 00 63 8B 08 00 69 76 93 02 16 00 33 43

-55 00 13 18 03 01 13 55 08 01 B3 45 AF 00 93 F0

-15 00 93 59 57 00 93 58 15 00 63 8B 00 00 E9 73

-13 8E 13 00 B3 C7 C8 01 93 9F 07 01 93 D8 0F 01

-B3 C6 38 01 13 FF 16 00 93 52 67 00 93 D5 18 00

-63 0B 0F 00 69 76 13 03 16 00 33 C8 65 00 13 15

-08 01 93 55 05 01 B3 C0 55 00 93 F9 10 00 1D 83

-93 D8 15 00 63 8B 09 00 E9 73 13 8E 13 00 B3 C7

-C8 01 93 9F 07 01 93 D8 0F 01 93 F6 18 00 13 D8

-18 00 63 8B E6 00 69 7F 93 02 1F 00 33 46 58 00

-13 13 06 01 13 58 03 01 13 D5 8E 00 B3 45 05 01

-93 F0 15 00 93 D9 8E 00 93 5F 18 00 93 DE 9E 00

-63 8B 00 00 69 77 93 03 17 00 33 CE 7F 00 93 17

-0E 01 93 DF 07 01 B3 C8 FE 01 13 FF 18 00 93 D6

-29 00 13 D5 1F 00 63 0B 0F 00 E9 72 13 86 12 00

-33 43 C5 00 13 18 03 01 13 55 08 01 B3 C5 A6 00

-93 F0 15 00 93 DE 39 00 93 5F 15 00 63 8B 00 00

-69 77 93 03 17 00 33 CE 7F 00 93 17 0E 01 93 DF

-07 01 B3 C8 FE 01 13 FF 18 00 93 D2 49 00 13 D5

-1F 00 63 0B 0F 00 E9 76 13 86 16 00 33 43 C5 00

-13 18 03 01 13 55 08 01 B3 C5 A2 00 93 F0 15 00

-93 DE 59 00 93 5F 15 00 63 8B 00 00 69 77 93 03

-17 00 33 CE 7F 00 93 17 0E 01 93 DF 07 01 B3 C8

-FE 01 13 FF 18 00 93 D2 69 00 13 D5 1F 00 63 0B

-0F 00 E9 76 13 86 16 00 33 43 C5 00 13 18 03 01

-13 55 08 01 B3 C5 A2 00 93 F0 15 00 93 D9 79 00

-93 5F 15 00 63 8B 00 00 E9 7E 13 87 1E 00 B3 C3

-EF 00 13 9E 03 01 93 5F 0E 01 93 F7 1F 00 13 D5

-1F 00 63 8B 37 01 E9 78 13 8F 18 00 B3 42 E5 01

-93 96 02 01 13 D5 06 01 03 D6 C4 03 13 13 05 01

-83 D9 84 03 13 58 03 41 E3 13 06 80 23 9E A4 02

-6F F0 EF FF 03 1E 45 00 39 71 22 DC 6A C8 06 DE

-26 DA 4A D8 4E D6 52 D4 56 D2 5A D0 5E CE 62 CC

-66 CA 6E C6 40 51 2A 8D E3 52 C0 0B 2E 8B 01 48

-81 4E 81 4C 01 4F 13 7C F8 0F 63 4D 0B 38 E3 0D

-04 08 A2 87 19 A0 9C 43 99 C7 83 A2 47 00 83 93

-22 00 E3 9A 63 FF 22 8A 03 26 0A 00 01 47 23 20

-EA 00 52 84 3D C6 08 42 23 20 46 01 52 87 32 84

-2D C1 14 41 10 C1 32 87 2A 84 A1 CE 84 42 88 C2

-2A 87 36 84 B9 C4 03 A9 04 00 94 C0 36 87 26 84

-63 01 09 04 83 28 09 00 23 20 99 00 26 87 4A 84

-63 89 08 02 83 A9 08 00 23 A0 28 01 4A 87 46 84

-63 81 09 02 03 AA 09 00 23 A0 19 01 46 87 4E 84

-63 09 0A 00 03 26 0A 00 4E 87 23 20 EA 00 52 84

-59 FA 63 8E 07 30 83 AA 47 00 13 83 1C 00 93 1B

-03 01 83 9D 0A 00 93 DC 0B 01 93 FF 1D 00 63 8B

-0F 00 13 D7 9D 40 93 70 17 00 06 9F 93 12 0F 01

-13 DF 02 01 83 A3 07 00 63 8A 03 00 03 A6 03 00

-90 C3 1C 40 23 A0 F3 00 23 20 74 00 63 47 0B 00

-05 0B 13 1A 0B 01 13 5B 0A 41 05 08 93 1A 08 01

-13 D8 0A 41 E3 11 0E F1 13 9E 2C 00 33 03 DE 41

-B3 0B 6F 00 93 9C 0B 01 93 D4 0C 01 63 49 B0 66

-03 2D 04 00 A2 8D 83 2A 0D 00 83 2B 4D 00 83 A7

-4A 00 03 A5 0A 00 23 22 FD 00 23 A2 7A 01 23 20

-AD 00 23 A0 0A 00 63 48 0B 22 03 AC 4D 00 83 AD

-0D 00 83 18 2C 00 63 82 68 25 E3 98 0D FE 03 2B

-04 00 83 2D 0B 00 6E 87 83 29 44 00 69 78 93 00

-18 00 03 9E 09 00 13 13 0E 01 93 5C 03 01 13 DD

-8C 00 13 7F FE 0F 93 15 8E 01 13 15 8D 01 13 5A

-1F 00 13 5C 2F 00 13 59 3F 00 93 53 4F 00 93 52

-5F 00 93 5F 6F 00 13 56 7F 00 93 D7 85 41 93 59

-85 41 13 DF 9C 00 93 DE AC 00 13 DE BC 00 13 D3

-CC 00 93 D8 DC 00 13 D8 EC 00 93 D6 FC 00 B3 CC

-97 00 13 FD 1C 00 13 D5 14 00 63 08 0D 00 B3 44

-15 00 93 95 04 01 13 D5 05 01 B3 4C AA 00 13 FD

-1C 00 05 81 63 08 0D 00 B3 44 15 00 93 95 04 01

-13 D5 05 01 B3 4C AC 00 13 FD 1C 00 05 81 63 08

-0D 00 B3 44 15 00 93 95 04 01 13 D5 05 01 B3 4C

-A9 00 13 FD 1C 00 05 81 63 08 0D 00 B3 44 15 00

-93 95 04 01 13 D5 05 01 B3 CC A3 00 13 FD 1C 00

-05 81 63 08 0D 00 B3 44 15 00 93 95 04 01 13 D5

-05 01 B3 CC A2 00 13 FD 1C 00 05 81 63 08 0D 00

-B3 44 15 00 93 95 04 01 13 D5 05 01 B3 CC AF 00

-13 FD 1C 00 05 81 63 08 0D 00 B3 44 15 00 93 95

-04 01 13 D5 05 01 93 7C 15 00 93 55 15 00 63 88

-CC 00 33 CD 15 00 93 14 0D 01 93 D5 04 01 33 C5

-B9 00 93 7C 15 00 85 81 63 88 0C 00 33 CD 15 00

-93 14 0D 01 93 D5 04 01 33 45 BF 00 93 7C 15 00

-85 81 63 88 0C 00 33 CD 15 00 93 14 0D 01 93 D5

-04 01 33 C5 BE 00 93 7C 15 00 85 81 63 88 0C 00

-33 CD 15 00 93 14 0D 01 93 D5 04 01 33 45 BE 00

-93 7C 15 00 85 81 63 88 0C 00 33 CD 15 00 93 14

-0D 01 93 D5 04 01 33 45 B3 00 93 7C 15 00 85 81

-63 88 0C 00 33 CD 15 00 93 14 0D 01 93 D5 04 01

-33 C5 B8 00 93 7C 15 00 85 81 63 88 0C 00 33 CD

-15 00 93 14 0D 01 93 D5 04 01 33 45 B8 00 93 7C

-15 00 85 81 63 88 0C 00 33 CD 15 00 93 14 0D 01

-93 D5 04 01 13 F5 15 00 93 D4 15 00 63 08 D5 00

-B3 CC 14 00 13 9D 0C 01 93 54 0D 01 63 8A 0D 06

-83 AD 0D 00 A9 BD 83 AE 4D 00 83 AD 0D 00 83 C6

-0E 00 63 8C 86 01 E3 8C 0D DC 83 AE 4D 00 83 AD

-0D 00 83 C6 0E 00 E3 98 86 FF 03 2B 04 00 03 27

-0B 00 D9 B3 63 02 04 50 A2 87 21 A0 9C 43 E3 8C

-07 C6 D8 43 83 40 07 00 E3 9A 80 FF AD B1 48 43

-85 0E 93 96 0E 01 83 04 15 00 93 DE 06 01 13 F9

-14 00 B3 08 2F 01 93 99 08 01 13 DF 09 01 39 B3

-83 2D 4B 00 01 4E 01 43 23 A2 BA 01 23 22 7B 01

-23 A0 EA 00 23 20 5B 01 85 49 81 4C 05 4D 93 FA

-79 00 85 0C A2 87 01 47 63 8B 0A 04 05 4B 63 83

-6A 05 89 4B 63 8D 7A 03 8D 40 63 87 1A 02 11 4A

-63 81 4A 03 15 4C 63 8B 8A 01 19 49 63 85 2A 01

-1C 40 05 47 A5 C7 9C 43 05 07 AD C3 9C 43 05 07

-B1 CF 9C 43 05 07 B9 CB 9C 43 05 07 A1 CB 9C 43

-05 07 A9 C7 9C 43 05 07 B1 C3 63 01 37 05 9C 43

-05 07 BA 83 85 CF 9C 43 05 07 8D CB 9C 43 13 87

-23 00 8D C7 9C 43 13 87 33 00 8D C3 9C 43 13 87

-43 00 89 CF 9C 43 13 87 53 00 89 CB 9C 43 13 87

-63 00 89 C7 9C 43 13 87 73 00 E1 F3 CE 86 25 C7

-AD CE A5 CF 83 2D 44 00 83 AA 47 00 03 9B 0D 00

-83 9B 2A 00 83 95 2D 00 93 10 0B 01 13 DC 00 01

-13 75 0B F0 13 59 8C 00 B3 63 25 01 23 90 7D 00

-83 98 0A 00 B3 8E 75 41 13 98 08 01 13 5A 08 01

-93 F2 08 F0 93 5F 8A 00 33 E6 F2 01 23 90 CA 00

-63 55 D0 03 3E 8F 9C 43 FD 16 63 0D 0E 00 23 20

-EE 01 7A 8E 51 FF 91 CE 85 C3 3E 8F FD 16 9C 43

-E3 17 0E FE 7A 83 7A 8E F5 B7 22 8F 7D 17 00 40

-E9 BF 99 C3 3E 84 E1 BD 23 20 0E 00 63 8E AC 01

-86 09 63 08 03 00 9A 87 01 4E 01 43 81 4C 3E 84

-7D BD 23 20 00 00 02 90 03 27 03 00 63 01 07 22

-03 24 43 00 E9 72 93 8C 12 00 83 1F 04 00 13 96

-0F 01 93 56 06 01 93 DE 86 00 13 FF FF 0F 13 9E

-8F 01 13 93 8E 01 93 55 8E 41 13 5D 1F 00 93 5D

-2F 00 93 5A 3F 00 13 5B 4F 00 93 5B 5F 00 93 50

-6F 00 13 5C 7F 00 13 55 83 41 13 D9 96 00 93 D3

-A6 00 93 D7 B6 00 93 D9 C6 00 93 D8 D6 00 13 D8

-E6 00 13 D4 F6 00 33 CA 95 00 93 72 1A 00 13 D6

-14 00 63 88 02 00 B3 44 96 01 93 9F 04 01 13 D6

-0F 01 B3 46 CD 00 13 FF 16 00 13 53 16 00 63 08

-0F 00 B3 4E 93 01 13 9E 0E 01 13 53 0E 01 33 CA

-6D 00 93 72 1A 00 13 56 13 00 63 88 02 00 B3 44

-96 01 93 9F 04 01 13 D6 0F 01 B3 C6 CA 00 13 FF

-16 00 13 53 16 00 63 08 0F 00 B3 4E 93 01 13 9E

-0E 01 13 53 0E 01 33 4A 6B 00 93 72 1A 00 13 56

-13 00 63 88 02 00 B3 44 96 01 93 9F 04 01 13 D6

-0F 01 B3 C6 CB 00 13 FF 16 00 13 53 16 00 63 08

-0F 00 B3 4E 93 01 13 9E 0E 01 13 53 0E 01 33 CA

-60 00 93 72 1A 00 13 56 13 00 63 88 02 00 B3 44

-96 01 93 9F 04 01 13 D6 0F 01 93 76 16 00 13 5E

-16 00 63 88 86 01 33 4F 9E 01 93 1E 0F 01 13 DE

-0E 01 33 43 C5 01 13 7A 13 00 93 5F 1E 00 63 08

-0A 00 B3 C2 9F 01 93 94 02 01 93 DF 04 01 33 46

-F9 01 93 76 16 00 13 DE 1F 00 99 C6 33 4F 9E 01

-93 1E 0F 01 13 DE 0E 01 33 C3 C3 01 13 7A 13 00

-93 5F 1E 00 63 08 0A 00 B3 C2 9F 01 93 94 02 01

-93 DF 04 01 33 C6 F7 01 93 76 16 00 13 DE 1F 00

-99 C6 33 4F 9E 01 93 1E 0F 01 13 DE 0E 01 33 C3

-C9 01 13 7A 13 00 93 5F 1E 00 63 08 0A 00 B3 C2

-9F 01 93 94 02 01 93 DF 04 01 33 C6 F8 01 93 76

-16 00 13 DE 1F 00 99 C6 33 4F 9E 01 93 1E 0F 01

-13 DE 0E 01 33 43 C8 01 13 7A 13 00 93 5F 1E 00

-63 08 0A 00 B3 C2 9F 01 93 94 02 01 93 DF 04 01

-13 F6 1F 00 93 D4 1F 00 63 08 86 00 B3 C6 94 01

-13 9F 06 01 93 54 0F 01 18 43 E3 16 07 E4 F2 50

-62 54 42 59 B2 59 22 5A 92 5A 02 5B F2 4B 62 4C

-D2 4C 42 4D B2 4D 26 85 D2 54 21 61 82 80 05 4A

-E3 09 04 DA 81 4C 81 4A 81 4B 93 75 7A 00 85 0B

-22 86 01 49 B1 C9 85 4D 63 83 B5 05 89 4F 63 8D

-F5 03 0D 47 63 87 E5 02 91 40 63 81 15 02 95 42

-63 8B 55 00 19 4F 63 85 E5 01 10 40 05 49 25 C6

-10 42 05 09 2D C2 10 42 05 09 31 CE 10 42 05 09

-39 CA 10 42 05 09 21 CA 10 42 05 09 29 C6 10 42

-05 09 31 C2 63 01 49 05 10 42 05 09 CA 83 05 CE

-10 42 05 09 0D CA 10 42 13 89 23 00 0D C6 10 42

-13 89 33 00 0D C2 10 42 13 89 43 00 09 CE 10 42

-13 89 53 00 09 CA 10 42 13 89 63 00 09 C6 10 42

-13 89 73 00 61 F2 A2 89 D2 8D 32 84 63 07 09 02

-63 80 0D 04 15 CC 4C 40 03 A5 49 00 6A 86 EF E0

-5F C8 63 57 A0 02 A2 87 00 40 FD 1D 63 8F 0C 00

-23 A0 FC 00 BE 8C E3 1D 09 FC 63 80 0D 02 19 CC

-A2 87 FD 1D 00 40 E3 95 0C FE BE 8A BE 8C E5 B7

-CE 87 7D 19 83 A9 09 00 D1 BF 01 F8 23 A0 0C 00

-05 44 63 89 8B 00 06 0A 56 84 DD BD 01 4C 2E 8B

-81 44 AD B8 56 84 AD B8 83 27 00 00 02 90 01 11

-26 CA 44 4D 22 CC 4A C8 4E C6 06 CE 69 79 23 2C

-05 02 23 2E 05 02 AA 89 01 44 05 09 63 8E 04 40

-85 45 4E 85 EF F0 0F F0 83 D7 89 03 13 77 F5 0F

-13 56 17 00 B3 C6 A7 00 93 F2 16 00 93 D3 17 00

-63 88 02 00 B3 C0 23 01 13 93 00 01 93 53 03 01

-B3 C5 C3 00 13 F8 15 00 93 58 27 00 13 DF 13 00

-63 08 08 00 33 4E 2F 01 93 1E 0E 01 13 DF 0E 01

-B3 4F 1F 01 93 F6 1F 00 93 52 37 00 93 50 1F 00

-99 C6 B3 C7 20 01 13 96 07 01 93 50 06 01 33 C3

-50 00 93 73 13 00 93 55 47 00 13 DE 10 00 63 88

-03 00 33 48 2E 01 93 18 08 01 13 DE 08 01 B3 4E

-BE 00 13 FF 1E 00 93 5F 57 00 93 57 1E 00 63 08

-0F 00 B3 C6 27 01 93 92 06 01 93 D7 02 01 33 C6

-F7 01 93 70 16 00 13 53 67 00 13 D8 17 00 63 88

-00 00 B3 43 28 01 93 95 03 01 13 D8 05 01 B3 48

-68 00 13 FE 18 00 1D 83 93 5F 18 00 63 08 0E 00

-B3 CE 2F 01 13 9F 0E 01 93 5F 0F 01 93 F6 1F 00

-13 D6 1F 00 63 88 E6 00 B3 42 26 01 93 97 02 01

-13 D6 07 01 21 81 B3 40 C5 00 13 73 F5 0F 93 F3

-10 00 93 55 13 00 13 5E 16 00 63 88 03 00 33 48

-2E 01 93 18 08 01 13 DE 08 01 33 47 BE 00 93 7E

-17 00 13 5F 23 00 93 52 1E 00 63 88 0E 00 B3 CF

-22 01 93 96 0F 01 93 D2 06 01 B3 C7 E2 01 13 F6

-17 00 13 55 33 00 93 D5 12 00 19 C6 B3 C0 25 01

-93 93 00 01 93 D5 03 01 33 C8 A5 00 93 78 18 00

-13 5E 43 00 13 DF 15 00 63 88 08 00 33 47 2F 01

-93 1E 07 01 13 DF 0E 01 B3 4F CF 01 93 F2 1F 00

-93 56 53 00 13 55 1F 00 63 88 02 00 B3 47 25 01

-13 96 07 01 13 55 06 01 B3 40 D5 00 93 F3 10 00

-93 55 63 00 13 5E 15 00 63 88 03 00 33 48 2E 01

-93 18 08 01 13 DE 08 01 33 47 BE 00 93 7E 17 00

-13 53 73 00 93 52 1E 00 63 88 0E 00 33 CF 22 01

-93 1F 0F 01 93 D2 0F 01 B3 C6 62 00 13 F6 16 00

-93 D0 12 00 19 C6 B3 C7 20 01 13 95 07 01 93 50

-05 01 FD 55 23 9C 19 02 4E 85 EF F0 AF CF 83 D3

-89 03 13 78 F5 0F 13 5E 18 00 B3 C5 A3 00 93 F8

-15 00 13 D3 13 00 63 88 08 00 33 47 23 01 93 1E

-07 01 13 D3 0E 01 33 4F C3 01 93 7F 1F 00 93 52

-28 00 93 57 13 00 63 88 0F 00 B3 C6 27 01 13 96

-06 01 93 57 06 01 B3 C0 57 00 93 F3 10 00 93 55

-38 00 13 D7 17 00 63 88 03 00 B3 48 27 01 13 9E

-08 01 13 57 0E 01 B3 4E B7 00 13 F3 1E 00 13 5F

-48 00 93 57 17 00 63 08 03 00 B3 CF 27 01 93 92

-0F 01 93 D7 02 01 B3 C6 E7 01 93 F0 16 00 13 56

-58 00 93 D8 17 00 63 88 00 00 B3 C3 28 01 93 95

-03 01 93 D8 05 01 33 CE C8 00 13 77 1E 00 93 5E

-68 00 93 DF 18 00 19 C7 33 C3 2F 01 13 1F 03 01

-93 5F 0F 01 B3 C2 DF 01 93 F6 12 00 13 58 78 00

-13 D6 1F 00 99 C6 B3 47 26 01 93 90 07 01 13 D6

-00 01 93 73 16 00 13 5E 16 00 63 88 03 01 B3 45

-2E 01 93 98 05 01 13 DE 08 01 21 81 33 47 C5 01

-93 7E F5 0F 13 73 17 00 13 DF 1E 00 13 58 1E 00

-63 08 03 00 B3 4F 28 01 93 92 0F 01 13 D8 02 01

-B3 46 E8 01 93 F0 16 00 13 D6 2E 00 93 55 18 00

-63 88 00 00 B3 C7 25 01 93 93 07 01 93 D5 03 01

-B3 C8 C5 00 13 FE 18 00 13 D5 3E 00 13 DF 15 00

-63 08 0E 00 33 47 2F 01 13 13 07 01 13 5F 03 01

-B3 4F AF 00 93 F2 1F 00 13 D8 4E 00 13 56 1F 00

-63 88 02 00 B3 46 26 01 93 90 06 01 13 D6 00 01

-B3 47 06 01 93 F3 17 00 93 D5 5E 00 13 55 16 00

-63 88 03 00 B3 48 25 01 13 9E 08 01 13 55 0E 01

-33 47 B5 00 13 73 17 00 13 DF 6E 00 13 58 15 00

-63 08 03 00 B3 4F 28 01 93 92 0F 01 13 D8 02 01

-B3 46 E8 01 93 F0 16 00 93 DE 7E 00 93 53 18 00

-63 88 00 00 33 C6 23 01 93 17 06 01 93 D3 07 01

-B3 C5 D3 01 93 F8 15 00 13 D7 13 00 63 88 08 00

-33 4E 27 01 13 15 0E 01 13 57 05 01 23 9C E9 02

-01 CC 05 04 E3 96 84 BE F2 40 62 44 D2 44 42 49

-B2 49 01 45 05 61 82 80 23 9D E9 02 05 44 E3 85

-84 FE 05 44 F1 B6 95 47 63 E5 A7 04 B7 02 04 F0

-0A 05 13 83 02 09 B3 03 65 00 83 A5 03 00 82 85

-37 06 04 F0 03 25 86 5C 82 80 B7 08 04 F0 03 A5

-08 5D 82 80 37 08 04 F0 03 25 C8 5C 82 80 37 07

-04 F0 03 25 07 0F 82 80 B7 06 04 F0 03 A5 C6 0E

-82 80 01 45 82 80 B3 46 B5 00 93 F2 16 00 13 57

-15 00 13 D6 15 00 63 8B 02 00 69 73 93 03 13 00

-B3 47 76 00 93 95 07 01 13 D6 05 01 33 48 E6 00

-93 78 18 00 13 5E 25 00 93 52 16 00 63 8B 08 00

-E9 7E 13 8F 1E 00 B3 CF E2 01 93 96 0F 01 93 D2

-06 01 33 C7 C2 01 13 73 17 00 93 53 35 00 93 D8

-12 00 63 0B 03 00 E9 75 13 86 15 00 B3 C7 C8 00

-13 98 07 01 93 58 08 01 33 CE 78 00 93 7E 1E 00

-13 5F 45 00 13 D3 18 00 63 8B 0E 00 E9 7F 93 86

-1F 00 B3 42 D3 00 13 97 02 01 13 53 07 01 B3 43

-E3 01 93 F5 13 00 13 56 55 00 93 5E 13 00 91 C9

-69 78 93 08 18 00 B3 C7 1E 01 13 9E 07 01 93 5E

-0E 01 33 CF CE 00 93 7F 1F 00 93 56 65 00 93 D5

-1E 00 63 8B 0F 00 E9 72 13 87 12 00 33 C3 E5 00

-93 13 03 01 93 D5 03 01 33 C6 D5 00 13 78 16 00

-93 58 75 00 13 DF 15 00 63 0B 08 00 E9 77 13 8E

-17 00 33 45 CF 01 93 1E 05 01 13 DF 0E 01 93 7F

-1F 00 13 55 1F 00 63 8B 1F 01 E9 76 93 82 16 00

-33 47 55 00 13 13 07 01 13 55 03 01 82 80 B3 C6

-A5 00 13 77 F5 0F 93 F2 16 00 AA 87 13 56 17 00

-13 D8 15 00 63 8B 02 00 E9 75 13 83 15 00 B3 43

-68 00 13 95 03 01 13 58 05 01 B3 48 C8 00 13 FE

-18 00 93 5E 27 00 93 55 18 00 63 0B 0E 00 69 7F

-93 0F 1F 00 B3 C6 F5 01 93 92 06 01 93 D5 02 01

-33 C6 D5 01 13 73 16 00 93 53 37 00 93 DE 15 00

-63 0B 03 00 69 78 93 08 18 00 33 C5 1E 01 13 1E

-05 01 93 5E 0E 01 33 CF 7E 00 93 7F 1F 00 93 56

-47 00 93 D3 1E 00 63 8B 0F 00 E9 72 93 85 12 00

-33 C6 B3 00 13 13 06 01 93 53 03 01 33 C8 D3 00

-93 78 18 00 13 5E 57 00 93 D2 13 00 63 8B 08 00

-E9 7E 13 8F 1E 00 33 C5 E2 01 93 1F 05 01 93 D2

-0F 01 B3 C6 C2 01 93 F5 16 00 13 53 67 00 13 DE

-12 00 91 C9 69 76 93 03 16 00 33 48 7E 00 93 18

-08 01 13 DE 08 01 B3 4E 6E 00 13 FF 1E 00 1D 83

-93 55 1E 00 63 0B 0F 00 E9 7F 93 82 1F 00 33 C5

-55 00 93 16 05 01 93 D5 06 01 13 F3 15 00 13 DE

-15 00 63 0B E3 00 69 76 93 03 16 00 33 48 7E 00

-93 18 08 01 13 DE 08 01 93 DE 87 00 33 CF CE 01

-93 7F 1F 00 13 D7 87 00 13 53 1E 00 A5 83 63 8B

-0F 00 E9 72 93 86 12 00 33 45 D3 00 93 15 05 01

-13 D3 05 01 33 C6 67 00 93 73 16 00 13 58 27 00

-93 5F 13 00 63 8B 03 00 E9 78 13 8E 18 00 B3 CE

-CF 01 13 9F 0E 01 93 5F 0F 01 B3 C7 0F 01 93 F2

-17 00 93 56 37 00 93 D3 1F 00 63 8B 02 00 E9 75

-13 83 15 00 33 C5 63 00 13 16 05 01 93 53 06 01

-33 C8 D3 00 93 78 18 00 13 5E 47 00 93 D2 13 00

-63 8B 08 00 E9 7E 13 8F 1E 00 B3 CF E2 01 93 97

-0F 01 93 D2 07 01 B3 C6 C2 01 93 F5 16 00 13 53

-57 00 93 D8 12 00 91 C9 69 76 93 03 16 00 33 C5

-78 00 13 18 05 01 93 58 08 01 33 CE 68 00 93 7E

-1E 00 13 5F 67 00 93 D5 18 00 63 8B 0E 00 E9 7F

-93 87 1F 00 B3 C2 F5 00 93 96 02 01 93 D5 06 01

-33 C3 E5 01 13 76 13 00 1D 83 13 DE 15 00 11 CA

-E9 73 13 88 13 00 33 45 0E 01 93 18 05 01 13 DE

-08 01 93 7E 1E 00 13 55 1E 00 63 8B EE 00 69 7F

-93 0F 1F 00 B3 47 F5 01 93 92 07 01 13 D5 02 01

-82 80 33 C6 A5 00 93 76 F5 0F 13 17 05 01 93 72

-16 00 AA 87 13 53 07 01 13 D8 16 00 13 DE 15 00

-63 8B 02 00 69 75 93 03 15 00 B3 45 7E 00 93 98

-05 01 13 DE 08 01 B3 4E 0E 01 13 FF 1E 00 93 DF

-26 00 13 55 1E 00 63 0B 0F 00 69 76 93 02 16 00

-33 47 55 00 13 18 07 01 13 55 08 01 B3 43 F5 01

-93 F8 13 00 93 D5 36 00 93 52 15 00 63 8B 08 00

-69 7E 93 0E 1E 00 33 CF D2 01 93 1F 0F 01 93 D2

-0F 01 33 C6 B2 00 13 77 16 00 13 D8 46 00 13 DE

-12 00 11 CB E9 73 93 88 13 00 33 45 1E 01 93 15

-05 01 13 DE 05 01 B3 4E 0E 01 13 FF 1E 00 93 DF

-56 00 93 53 1E 00 63 0B 0F 00 E9 72 13 86 12 00

-33 C7 C3 00 13 18 07 01 93 53 08 01 B3 C8 F3 01

-93 F5 18 00 13 DE 66 00 93 D2 13 00 91 C9 E9 7E

-13 8F 1E 00 33 C5 E2 01 93 1F 05 01 93 D2 0F 01

-33 C6 C2 01 13 77 16 00 9D 82 13 DE 12 00 11 CB

-69 78 93 03 18 00 B3 48 7E 00 93 95 08 01 13 DE

-05 01 93 7E 1E 00 13 58 1E 00 63 94 DE 38 13 56

-83 00 33 47 C8 00 93 73 17 00 93 56 83 00 13 5F

-18 00 13 53 93 00 63 8B 03 00 E9 78 93 85 18 00

-33 4E BF 00 93 1E 0E 01 13 DF 0E 01 B3 4F 6F 00

-93 F2 1F 00 13 D8 26 00 13 53 1F 00 63 8B 02 00

-69 76 13 07 16 00 33 45 E3 00 93 13 05 01 13 D3

-03 01 B3 48 03 01 93 F5 18 00 13 DE 36 00 13 58

-13 00 91 C9 E9 7E 13 8F 1E 00 B3 4F E8 01 93 92

-0F 01 13 D8 02 01 33 46 C8 01 93 73 16 00 13 D7

-46 00 13 5E 18 00 63 8B 03 00 69 73 93 08 13 00

-33 45 1E 01 93 15 05 01 13 DE 05 01 B3 4E EE 00

-13 FF 1E 00 93 DF 56 00 13 53 1E 00 63 0B 0F 00

-E9 72 13 88 12 00 33 46 03 01 93 13 06 01 13 D3

-03 01 33 47 F3 01 93 78 17 00 93 D5 66 00 93 5F

-13 00 63 8B 08 00 69 7E 93 0E 1E 00 33 C5 DF 01

-13 1F 05 01 93 5F 0F 01 B3 C2 BF 00 13 F8 12 00

-9D 82 93 D8 1F 00 63 0B 08 00 69 76 93 03 16 00

-33 C3 78 00 13 17 03 01 93 58 07 01 93 F5 18 00

-93 DF 18 00 63 8B D5 00 69 7E 93 0E 1E 00 33 C5

-DF 01 13 1F 05 01 93 5F 0F 01 93 D2 07 01 33 C8

-5F 00 93 F3 F2 0F 93 76 18 00 C1 83 13 D6 13 00

-13 DE 1F 00 91 CA 69 73 13 07 13 00 B3 48 EE 00

-93 95 08 01 13 DE 05 01 B3 4E CE 00 13 FF 1E 00

-93 DF 23 00 13 53 1E 00 63 0B 0F 00 E9 72 13 88

-12 00 33 45 03 01 93 16 05 01 13 D3 06 01 33 46

-F3 01 13 77 16 00 93 D8 33 00 93 5F 13 00 11 CB

-E9 75 13 8E 15 00 B3 CE CF 01 13 9F 0E 01 93 5F

-0F 01 B3 C2 1F 01 13 F8 12 00 93 D6 43 00 93 D8

-1F 00 63 0B 08 00 69 73 13 06 13 00 33 C5 C8 00

-13 17 05 01 93 58 07 01 B3 C5 D8 00 13 FE 15 00

-93 DE 53 00 13 D3 18 00 63 0B 0E 00 69 7F 93 0F

-1F 00 B3 42 F3 01 13 98 02 01 13 53 08 01 B3 46

-D3 01 13 F6 16 00 13 D7 63 00 93 5E 13 00 11 CA

-E9 78 93 85 18 00 33 C5 BE 00 13 1E 05 01 93 5E

-0E 01 33 CF EE 00 93 7F 1F 00 93 D3 73 00 13 D6

-1E 00 63 8B 0F 00 E9 72 13 88 12 00 33 43 06 01

-93 16 03 01 13 D6 06 01 13 77 16 00 93 5E 16 00

-63 17 77 12 13 DF 87 00 B3 4F DF 01 93 F3 1F 00

-93 D2 87 00 13 D7 1E 00 A5 83 63 8B 03 00 69 78

-13 03 18 00 B3 46 67 00 13 96 06 01 13 57 06 01

-B3 48 F7 00 93 F5 18 00 13 DE 22 00 93 53 17 00

-91 C9 E9 7E 13 8F 1E 00 33 C5 E3 01 93 1F 05 01

-93 D3 0F 01 B3 47 7E 00 13 F8 17 00 13 D3 32 00

-93 D5 13 00 63 0B 08 00 E9 76 13 86 16 00 33 C7

-C5 00 93 18 07 01 93 D5 08 01 33 4E B3 00 93 7E

-1E 00 13 DF 42 00 13 D8 15 00 63 8B 0E 00 E9 7F

-93 83 1F 00 33 45 78 00 93 17 05 01 13 D8 07 01

-33 43 0F 01 13 76 13 00 93 D6 52 00 93 5E 18 00

-11 CA 69 77 93 08 17 00 B3 C5 1E 01 13 9E 05 01

-93 5E 0E 01 33 CF D6 01 93 7F 1F 00 93 D3 62 00

-13 D6 1E 00 63 8B 0F 00 E9 77 13 88 17 00 33 45

-06 01 13 13 05 01 13 56 03 01 B3 C6 C3 00 93 F8

-16 00 93 D2 72 00 13 5F 16 00 63 8B 08 00 69 77

-93 05 17 00 33 4E BF 00 93 1E 0E 01 13 DF 0E 01

-93 7F 1F 00 13 55 1F 00 63 8A 5F 00 E9 73 93 87

-13 00 33 48 F5 00 13 15 08 01 41 81 82 80 E9 78

-93 85 18 00 33 C5 BE 00 13 1E 05 01 93 5E 0E 01

-D1 B5 69 7F 93 0F 1F 00 33 45 F8 01 93 12 05 01

-13 D8 02 01 AD B1 B3 C6 A5 00 13 77 F5 0F 93 17

-05 01 93 F2 16 00 13 D3 07 01 13 56 17 00 93 D8

-15 00 63 8B 02 00 E9 75 93 83 15 00 33 C5 78 00

-13 18 05 01 93 58 08 01 33 CE C8 00 93 7E 1E 00

-13 5F 27 00 93 D5 18 00 63 8B 0E 00 E9 7F 93 86

-1F 00 B3 C2 D5 00 93 97 02 01 93 D5 07 01 33 C6

-E5 01 93 73 16 00 13 58 37 00 13 DF 15 00 63 8B

-03 00 E9 78 13 8E 18 00 33 45 CF 01 93 1E 05 01

-13 DF 0E 01 B3 4F 0F 01 93 F2 1F 00 93 56 47 00

-13 58 1F 00 63 8B 02 00 E9 77 93 85 17 00 33 46

-B8 00 93 13 06 01 13 D8 03 01 B3 48 D8 00 13 FE

-18 00 93 5E 57 00 93 57 18 00 63 0B 0E 00 69 7F

-93 0F 1F 00 33 C5 F7 01 93 12 05 01 93 D7 02 01

-B3 C6 D7 01 93 F5 16 00 93 53 67 00 93 DE 17 00

-91 C9 69 76 13 08 16 00 B3 C8 0E 01 13 9E 08 01

-93 5E 0E 01 33 CF 7E 00 93 7F 1F 00 1D 83 93 D5

-1E 00 63 8B 0F 00 E9 72 93 87 12 00 33 C5 F5 00

-93 16 05 01 93 D5 06 01 93 F3 15 00 93 DE 15 00

-63 8B E3 00 69 76 13 08 16 00 B3 C8 0E 01 13 9E

-08 01 93 5E 0E 01 13 5F 83 00 B3 4F DF 01 93 F2

-1F 00 13 57 83 00 93 D3 1E 00 13 53 93 00 63 8B

-02 00 E9 77 93 86 17 00 33 C5 D3 00 93 15 05 01

-93 D3 05 01 33 46 73 00 13 78 16 00 93 58 27 00

-93 D2 13 00 63 0B 08 00 69 7E 93 0E 1E 00 33 CF

-D2 01 93 1F 0F 01 93 D2 0F 01 33 C3 12 01 93 77

-13 00 93 56 37 00 13 D8 12 00 91 CB E9 75 93 83

-15 00 33 45 78 00 13 16 05 01 13 58 06 01 B3 48

-D8 00 13 FE 18 00 93 5E 47 00 93 55 18 00 63 0B

-0E 00 69 7F 93 0F 1F 00 B3 C2 F5 01 13 93 02 01

-93 55 03 01 B3 C7 D5 01 93 F3 17 00 93 56 57 00

-13 DE 15 00 63 8B 03 00 69 76 13 08 16 00 33 45

-0E 01 93 18 05 01 13 DE 08 01 B3 4E DE 00 13 FF

-1E 00 93 5F 67 00 93 53 1E 00 63 0B 0F 00 E9 72

-13 83 12 00 B3 C5 63 00 93 97 05 01 93 D3 07 01

-B3 C6 F3 01 13 F6 16 00 1D 83 93 DE 13 00 11 CA

-69 78 93 08 18 00 33 C5 1E 01 13 1E 05 01 93 5E

-0E 01 13 FF 1E 00 13 D5 1E 00 63 0B EF 00 E9 7F

-93 82 1F 00 33 43 55 00 93 15 03 01 13 D5 05 01

-82 80 01 45 82 80 73 27 00 B0 B7 07 04 F0 23 A2

-E7 5C 82 80 73 27 00 B0 B7 07 04 F0 23 A0 E7 5C

-82 80 B7 07 04 F0 B7 02 04 F0 03 A5 07 5C 03 A3

-42 5C 33 05 65 40 82 80 93 07 80 3E 33 55 F5 02

-82 80 85 47 23 00 F5 00 82 80 23 00 05 00 82 80

-AA 82 2A 96 63 56 C5 00 23 00 B5 00 05 05 DD BF

-16 85 82 80 82 80 75 71 06 C7 B7 07 04 F0 B7 00

-04 F0 B7 02 04 F0 03 A6 07 5D 83 A5 C0 5C 03 A3

-02 0F 37 07 04 F0 83 26 C7 0E B7 03 04 F0 22 C5

-26 C3 13 14 06 01 93 14 03 01 83 A8 83 5C 13 56

-04 41 13 D8 04 41 05 45 4A C1 CE DE D2 DC D6 DA

-DA D8 DE D6 E2 D4 E6 D2 EA D0 EE CE 23 07 A1 04

-23 16 C1 00 23 17 B1 00 23 18 01 01 36 D4 63 93

-08 00 9D 48 32 49 46 D6 E3 1B 09 3C E3 0F 08 42

-B2 59 B7 0C 04 F0 13 8D 4C 5D 13 F7 29 00 93 FD

-19 00 33 3E E0 00 6A CA 23 16 01 04 93 FE 49 00

-6E 8F B3 85 CD 01 63 88 0E 00 93 8F 15 00 93 90

-0F 01 93 D5 00 01 93 02 00 7D 33 D5 B2 02 01 44

-2A D2 E3 10 0F 3E E3 10 07 3C E3 95 0E 3A 63 10

-0F 1C 63 17 07 1C 13 F5 49 00 19 C5 02 56 83 15

-C1 00 12 55 EF C0 6F FC 22 5A 63 0F 0A 6C 37 0C

-04 F0 B7 0C 04 F0 13 0D C1 00 F3 23 00 B0 23 22

-7C 5C 6A 85 EF E0 BF F6 73 2D 00 B0 03 55 C1 00

-81 45 23 A0 AC 5D EF F0 8F D2 AA 85 03 55 E1 00

-03 2C 4C 5C EF F0 AF D1 AA 85 03 55 01 01 B3 0A

-8D 41 EF F0 CF D0 92 54 AA 85 93 9C 04 01 13 D5

-0C 01 EF F0 CF CF 21 68 93 06 58 B0 AA 89 E3 06

-D5 3A 63 E6 A6 16 89 6D 93 82 2D 8F E3 01 55 3C

-15 6D 93 00 FD EA E3 12 15 3E B7 0C 04 F0 13 85

-0C 15 EF 90 4F 86 93 0B 8D 60 39 68 9D 66 13 0A

-48 5A 5E 8C 13 8B 96 A7 B7 0C 04 F0 83 A8 8C 0E

-01 49 01 4D E3 87 08 3A B7 0D 04 F0 89 A8 03 D6

-A4 FF 63 03 46 0F 37 07 04 F0 D2 86 EA 85 13 05

-47 24 EF 90 4F 82 83 D7 C4 FF 13 8E 17 00 93 1E

-0E 01 93 DF 0E 01 23 9E F4 FF 05 0D 83 A2 8C 0E

-7E 99 93 15 0D 01 13 1F 09 01 13 13 09 01 13 DD

-05 01 13 54 0F 01 13 59 03 41 63 74 5D 10 13 14

-4D 00 33 06 A4 01 13 15 26 00 98 08 B3 04 A7 00

-83 A7 C4 FD 23 9E 04 FE 13 FE 17 00 63 02 0E 02

-03 D6 64 FF 63 0E 66 01 DA 86 EA 85 13 85 0D 1E

-EF 80 7F FB 83 DE C4 FF 93 8F 1E 00 23 9E F4 FF

-B3 05 A4 01 93 92 25 00 13 0F 01 05 B3 04 5F 00

-83 A8 C4 FD 13 F3 28 00 63 06 03 02 03 D6 84 FF

-63 02 86 03 B7 03 04 F0 DE 86 EA 85 13 85 03 21

-EF 80 7F F7 03 D8 C4 FF 83 A8 C4 FD 93 06 18 00

-23 9E D4 FE 6A 94 13 16 24 00 88 08 93 F0 48 00

-B3 04 C5 00 E3 9D 00 F0 83 DF C4 FF 3D BF E2 45

-EF 80 3F FF B2 59 2A D8 13 F7 29 00 E3 0D 07 E2

-83 17 E1 00 03 16 C1 00 F2 45 12 55 13 99 07 01

-54 18 33 66 C9 00 EF B0 8F DB B2 59 29 BD 25 6A

-13 07 2A A0 E3 09 E5 20 BD 6B 13 84 5B 9F E3 1E

-85 26 B7 05 04 F0 89 64 13 85 45 18 93 8B 74 FD

-39 6B EF 80 5F EF 13 0A AA E3 5E 8C 13 0B 4B 71

-61 BD 92 54 B7 0B 04 F0 A6 85 13 85 4B 27 EF 80

-9F ED 37 0C 04 F0 D6 85 13 05 CC 28 13 0B 80 3E

-EF 80 7F EC B3 DD 6A 03 B7 03 04 F0 13 85 43 2A

-EE 85 EF 80 5F EB 13 08 70 3E 63 6F 58 45 B7 0A

-04 F0 05 04 13 85 CA 2B 13 1D 04 01 EF 80 BF E9

-13 59 0D 41 03 AF 8C 0E 22 53 B7 05 04 F0 13 85

-85 31 B3 05 E3 03 37 0A 04 F0 B7 0B 04 F0 37 0C

-04 F0 37 0B 04 F0 B7 0D 04 F0 EF 80 DF E6 93 05

-0A 33 13 85 CB 33 EF 80 1F E6 93 05 4C 35 13 05

-0B 37 EF 80 5F E5 B7 03 04 F0 93 85 8D 38 13 85

-03 39 EF 80 5F E4 CE 85 B7 09 04 F0 13 85 89 3A

-EF 80 7F E3 32 5A 13 78 1A 00 63 05 08 0E 83 A8

-8C 0E 63 81 08 0E 01 4D B7 04 04 F0 93 16 4D 00

-B3 80 A6 01 13 96 20 00 98 08 B3 07 C7 00 03 D6

-67 FF EA 85 13 85 44 3C EF 80 FF DF 93 0E 1D 00

-93 9F 0E 01 93 DA 0F 01 93 92 4A 00 03 AE 8C 0E

-33 84 52 01 13 1D 24 00 13 0F 01 05 13 85 44 3C

-33 03 AF 01 D6 85 63 F6 CA 09 03 56 63 FF 93 09

-01 05 EF 80 5F DC 93 85 1A 00 93 9B 05 01 13 DC

-0B 01 13 1B 4C 00 03 AA 8C 0E B3 0D 8B 01 93 93

-2D 00 13 85 44 3C 33 88 79 00 E2 85 63 7B 4C 05

-03 56 68 FF EF 80 3F D9 93 06 1C 00 13 96 06 01

-93 5A 06 01 13 97 4A 00 83 A8 8C 0E B3 07 57 01

-13 9E 27 00 93 0E 01 05 13 85 44 3C B3 8F CE 01

-D6 85 63 F0 1A 03 03 D6 6F FF EF 80 DF D5 93 82

-1A 00 03 A5 8C 0E 13 94 02 01 13 5D 04 01 E3 67

-AD F2 32 5A 93 74 2A 00 FD C0 83 A0 8C 0E 63 8F

-00 1E 01 44 37 0A 04 F0 13 13 44 00 B3 05 83 00

-93 9B 25 00 13 0C 01 05 33 0B 7C 01 03 56 8B FF

-A2 85 13 05 0A 3E EF 80 1F D1 93 03 14 00 93 99

-03 01 93 DA 09 01 13 98 4A 00 83 AD 8C 0E B3 08

-58 01 93 96 28 00 90 08 13 05 0A 3E 33 07 D6 00

-D6 85 63 F5 BA 09 03 56 87 FF 84 08 EF 80 BF CD

-93 87 1A 00 93 9E 07 01 13 D4 0E 01 93 1F 44 00

-03 AE 8C 0E B3 82 8F 00 13 9D 22 00 13 05 0A 3E

-33 8F A4 01 A2 85 63 7B C4 05 03 56 8F FF 93 09

-01 05 EF 80 5F CA 93 05 14 00 93 9B 05 01 13 DC

-0B 01 13 1B 4C 00 03 A3 8C 0E B3 0D 8B 01 93 93

-2D 00 13 05 0A 3E B3 8A 79 00 E2 85 63 70 6C 02

-03 D6 8A FF EF 80 3F C7 13 08 1C 00 03 A5 8C 0E

-93 18 08 01 13 D4 08 01 E3 68 A4 F2 32 5A 93 70

-4A 00 63 91 00 12 83 A0 8C 0E 81 44 37 0D 04 F0

-63 8D 00 0C 93 95 44 00 33 8B 95 00 93 03 01 05

-93 1D 2B 00 B3 89 B3 01 03 D6 49 FF A6 85 13 05

-8D 41 EF 80 5F C2 13 88 14 00 93 18 08 01 13 D4

-08 01 13 1A 44 00 83 AA 8C 0E B3 06 8A 00 13 96

-26 00 98 08 13 05 8D 41 33 0E C7 00 A2 85 63 76

-54 09 03 56 4E FF EF 80 1F BF 93 07 14 00 93 9E

-07 01 93 DB 0E 01 93 9F 4B 00 83 A4 8C 0E B3 82

-7F 01 13 9F 22 00 13 03 01 05 13 05 8D 41 33 0C

-E3 01 DE 85 63 FB 9B 04 03 56 4C FF EF 80 BF BB

-93 85 1B 00 93 9D 05 01 93 D9 0D 01 93 93 49 00

-03 AB 8C 0E B3 8A 33 01 13 98 2A 00 93 08 01 05

-13 05 8D 41 33 84 08 01 CE 85 63 F0 69 03 03 56

-44 FF 13 8A 19 00 EF 80 1F B8 03 A5 8C 0E 93 16

-0A 01 93 D4 06 01 E3 E7 A4 F2 63 0F 09 64 63 5F

-20 63 37 09 04 F0 13 05 09 48 EF 80 DF B5 BA 40

-2A 44 9A 44 0A 49 F6 59 66 5A D6 5A 46 5B B6 5B

-26 5C 96 5C 06 5D F6 4D 49 61 82 80 13 7F 4A 00

-E3 05 0F FC 83 A6 8C 0E E9 D2 01 4C 37 0D 04 F0

-13 16 4C 00 33 07 86 01 13 1E 27 00 9C 08 B3 8E

-C7 01 03 D6 AE FF E2 85 13 05 CD 3F EF 80 BF B0

-93 02 1C 00 93 94 02 01 93 DB 04 01 13 9F 4B 00

-83 AF 8C 0E 33 03 7F 01 93 15 23 00 13 0C 01 05

-33 0B BC 00 13 05 CD 3F DE 85 E3 F6 FB E9 03 56

-AB FF 13 0A 01 05 EF 80 1F AD 93 83 1B 00 93 99

-03 01 93 DA 09 01 13 98 4A 00 83 AD 8C 0E B3 08

-58 01 13 94 28 00 13 05 CD 3F B3 06 8A 00 D6 85

-E3 FB BA E5 03 D6 A6 FF EF 80 FF A9 13 87 1A 00

-13 1E 07 01 93 54 0E 01 93 97 44 00 03 A6 8C 0E

-B3 8E 97 00 93 9F 2E 00 93 02 01 05 13 05 CD 3F

-B3 8B F2 01 A6 85 E3 F0 C4 E2 03 D6 AB FF EF 80

-9F A6 13 8F 14 00 03 A5 8C 0E 13 13 0F 01 13 5C

-03 01 E3 67 AC F2 01 B5 83 A8 8C 0E A2 56 E1 64

-13 87 04 6A B3 80 16 03 37 06 04 F0 93 0F 40 06

-13 05 C6 2F B3 87 E0 02 33 DE B7 03 B3 8E 60 03

-33 76 FE 03 B3 D5 BE 03 EF 80 FF A1 09 65 93 02

-F5 70 E3 E1 52 B9 A5 B6 E9 7A 05 44 37 0C 04 F0

-B7 0C 04 F0 13 0D C1 00 13 8B 1A 00 93 0D 70 3E

-93 1B 24 00 33 8E 8B 00 13 14 1E 00 22 D4 F3 24

-00 B0 23 22 9C 5C 82 C2 82 C4 81 4B 63 0F 04 40

-85 45 6A 85 EF D0 1F F9 83 5E 41 04 13 7F F5 0F

-93 52 1F 00 B3 CF AE 00 93 F5 1F 00 93 D3 1E 00

-99 C5 B3 C0 63 01 13 93 00 01 93 53 03 01 B3 C6

-53 00 13 F8 16 00 93 58 2F 00 13 D9 13 00 63 08

-08 00 33 47 69 01 93 17 07 01 13 D9 07 01 33 46

-19 01 93 79 16 00 13 5A 3F 00 93 5E 19 00 63 88

-09 00 B3 CA 6E 01 13 9E 0A 01 93 5E 0E 01 B3 CF

-4E 01 93 F5 1F 00 93 52 4F 00 93 D3 1E 00 99 C5

-B3 C0 63 01 13 93 00 01 93 53 03 01 B3 C6 53 00

-13 F8 16 00 93 58 5F 00 13 D9 13 00 63 08 08 00

-33 47 69 01 93 17 07 01 13 D9 07 01 33 46 19 01

-93 79 16 00 13 5A 6F 00 93 5E 19 00 63 88 09 00

-B3 CA 6E 01 13 9E 0A 01 93 5E 0E 01 B3 CF 4E 01

-93 F5 1F 00 13 5F 7F 00 13 D3 1E 00 99 C5 B3 42

-63 01 93 90 02 01 13 D3 00 01 93 73 13 00 93 58

-13 00 63 88 E3 01 B3 C6 68 01 13 98 06 01 93 58

-08 01 21 81 33 47 15 01 13 79 F5 0F 13 76 17 00

-93 59 19 00 93 DA 18 00 19 C6 B3 C7 6A 01 13 9A

-07 01 93 5A 0A 01 33 CE 3A 01 93 7E 1E 00 93 5F

-29 00 93 D2 1A 00 63 88 0E 00 B3 C5 62 01 13 9F

-05 01 93 52 0F 01 B3 C0 F2 01 13 F3 10 00 93 53

-39 00 93 D8 12 00 63 08 03 00 B3 C6 68 01 13 98

-06 01 93 58 08 01 33 C5 78 00 13 76 15 00 13 57

-49 00 13 DA 18 00 19 C6 B3 49 6A 01 93 97 09 01

-13 DA 07 01 B3 4A EA 00 13 FE 1A 00 93 5E 59 00

-13 5F 1A 00 63 08 0E 00 B3 4F 6F 01 93 95 0F 01

-13 DF 05 01 B3 42 DF 01 93 F0 12 00 13 53 69 00

-13 58 1F 00 63 88 00 00 B3 43 68 01 93 96 03 01

-13 D8 06 01 B3 48 68 00 13 F6 18 00 13 59 79 00

-93 59 18 00 19 C6 33 C5 69 01 13 17 05 01 93 59

-07 01 B3 C7 29 01 13 FA 17 00 93 DE 19 00 63 08

-0A 00 B3 CA 6E 01 13 9E 0A 01 93 5E 0E 01 FD 55

-6A 85 23 12 D1 05 EF D0 FF D8 83 5F 41 04 13 7F

-F5 0F 13 53 1F 00 B3 C5 AF 00 93 F2 15 00 13 D8

-1F 00 63 88 02 00 B3 40 68 01 93 93 00 01 13 D8

-03 01 B3 46 68 00 93 F8 16 00 13 56 2F 00 93 59

-18 00 63 88 08 00 33 C9 69 01 13 17 09 01 93 59

-07 01 B3 C7 C9 00 13 FA 17 00 93 5A 3F 00 93 DF

-19 00 63 08 0A 00 33 CE 6F 01 93 1E 0E 01 93 DF

-0E 01 B3 C5 5F 01 93 F2 15 00 13 53 4F 00 13 D8

-1F 00 63 88 02 00 B3 40 68 01 93 93 00 01 13 D8

-03 01 B3 46 68 00 93 F8 16 00 13 56 5F 00 93 59

-18 00 63 88 08 00 33 C9 69 01 13 17 09 01 93 59

-07 01 B3 C7 C9 00 13 FA 17 00 93 5A 6F 00 93 DF

-19 00 63 08 0A 00 33 CE 6F 01 93 1E 0E 01 93 DF

-0E 01 B3 C5 5F 01 93 F2 15 00 13 5F 7F 00 93 D3

-1F 00 63 88 02 00 33 C3 63 01 93 10 03 01 93 D3

-00 01 13 F8 13 00 13 D6 13 00 63 08 E8 01 B3 46

-66 01 93 98 06 01 13 D6 08 01 21 81 33 49 C5 00

-93 79 F5 0F 13 77 19 00 13 DA 19 00 13 5E 16 00

-19 C7 B3 47 6E 01 93 9A 07 01 13 DE 0A 01 B3 4E

-4E 01 93 FF 1E 00 93 D5 29 00 13 53 1E 00 63 88

-0F 00 B3 42 63 01 13 9F 02 01 13 53 0F 01 B3 40

-B3 00 93 F3 10 00 13 D8 39 00 13 56 13 00 63 88

-03 00 B3 46 66 01 93 98 06 01 13 D6 08 01 33 45

-06 01 13 79 15 00 13 D7 49 00 93 5A 16 00 63 08

-09 00 33 CA 6A 01 93 17 0A 01 93 DA 07 01 33 CE

-EA 00 93 7E 1E 00 93 DF 59 00 13 DF 1A 00 63 88

-0E 00 B3 45 6F 01 93 92 05 01 13 DF 02 01 33 43

-FF 01 93 70 13 00 93 D3 69 00 93 58 1F 00 63 88

-00 00 33 C8 68 01 93 16 08 01 93 D8 06 01 33 C6

-78 00 13 79 16 00 93 D9 79 00 13 DA 18 00 63 08

-09 00 33 45 6A 01 13 17 05 01 13 5A 07 01 B3 47

-3A 01 93 FA 17 00 93 5F 1A 00 63 88 0A 00 33 CE

-6F 01 93 1E 0E 01 93 DF 0E 01 23 12 F1 05 63 8C

-0B 02 85 0B E3 16 74 BF 22 54 F3 25 00 B0 23 A0

-BC 5C B3 84 95 40 E3 FD 9D BA 13 0B 80 3E B3 DD

-64 03 A9 42 33 DF B2 03 13 03 1F 00 B3 00 64 02

-06 D4 6F F0 8F CB 23 13 F1 05 85 4B 55 BE 85 49

-63 18 39 C3 63 16 08 C2 37 3A 15 34 93 0A 5A 41

-13 0B 60 06 8D 6B 56 C6 23 18 61 01 13 86 5B 41

-6F F0 0F C1 33 08 A4 02 B3 08 0D 01 46 D0 63 0A

-0F C4 6F F0 CF E0 33 03 A4 02 93 06 14 00 93 93

-06 01 13 D4 03 01 B3 04 6D 00 26 CE 63 89 0E C2

-D1 BF 6A CC 05 44 63 02 07 C2 F1 BF B7 0C 04 F0

-13 85 4C 49 EF 80 2F D2 D9 B2 13 0C 60 06 23 18

-81 01 01 46 6F F0 CF BB B7 00 04 F0 13 85 40 43

-EF 80 6F D0 6D B2 B7 07 04 F0 13 85 47 0F EF 80

-8F CF 31 6E 93 0B 2E E5 99 6E B5 6F 13 8A 7E E4

-5E 8C 13 8B 0F 4B 6F F0 2F C9 B7 08 04 F0 13 85

-48 12 EF 80 4F CD 05 66 93 0B 96 19 11 69 0D 65

-13 0A F9 9B 5E 8C 13 0B 05 34 6F F0 EF C6 37 0F

-04 F0 13 05 4F 1B EF 80 0F CB 25 63 B9 63 13 0A

-43 D8 93 0B 70 74 13 0C 70 74 13 8B 13 3C 6F F0

-AF C4 92 54 01 44 6F F0 EF DA 41 6A 13 04 FA FF

-7D 59 B7 0C 04 F0 6F F0 EF D9

-@F0040000

-C4 02 00 00 A0 00 00 00 A0 00 00 00 A0 00 00 00

-A0 00 00 00 A0 00 00 00 A0 00 00 00 A0 00 00 00

-A0 00 00 00 A0 00 00 00 A0 00 00 00 BE 03 00 00

-88 08 00 00 A0 00 00 00 A0 00 00 00 A0 00 00 00

-A0 00 00 00 A0 00 00 00 A0 00 00 00 A0 00 00 00

-A0 00 00 00 A0 00 00 00 A0 00 00 00 A8 06 00 00

-A0 00 00 00 A0 00 00 00 A0 00 00 00 38 06 00 00

-A0 00 00 00 CC 03 00 00 A0 00 00 00 A0 00 00 00

-C4 02 00 00 A8 05 04 F0 B0 05 04 F0 B8 05 04 F0

-42 6E 00 00 1A 6E 00 00 24 6E 00 00 2E 6E 00 00

-38 6E 00 00 10 6E 00 00 88 05 04 F0 90 05 04 F0

-98 05 04 F0 A0 05 04 F0 58 05 04 F0 64 05 04 F0

-70 05 04 F0 7C 05 04 F0 28 05 04 F0 34 05 04 F0

-40 05 04 F0 4C 05 04 F0 F8 04 04 F0 04 05 04 F0

-10 05 04 F0 1C 05 04 F0 01 00 00 00 01 00 00 00

-66 00 00 00 36 6B 20 70 65 72 66 6F 72 6D 61 6E

-63 65 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72

-73 20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A

-00 00 00 00 36 6B 20 76 61 6C 69 64 61 74 69 6F

-6E 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72 73

-20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A 00

-50 72 6F 66 69 6C 65 20 67 65 6E 65 72 61 74 69

-6F 6E 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72

-73 20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A

-00 00 00 00 32 4B 20 70 65 72 66 6F 72 6D 61 6E

-63 65 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72

-73 20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A

-00 00 00 00 32 4B 20 76 61 6C 69 64 61 74 69 6F

-6E 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72 73

-20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A 00

-5B 25 75 5D 45 52 52 4F 52 21 20 6C 69 73 74 20

-63 72 63 20 30 78 25 30 34 78 20 2D 20 73 68 6F

-75 6C 64 20 62 65 20 30 78 25 30 34 78 0A 00 00

-5B 25 75 5D 45 52 52 4F 52 21 20 6D 61 74 72 69

-78 20 63 72 63 20 30 78 25 30 34 78 20 2D 20 73

-68 6F 75 6C 64 20 62 65 20 30 78 25 30 34 78 0A

-00 00 00 00 5B 25 75 5D 45 52 52 4F 52 21 20 73

-74 61 74 65 20 63 72 63 20 30 78 25 30 34 78 20

-2D 20 73 68 6F 75 6C 64 20 62 65 20 30 78 25 30

-34 78 0A 00 43 6F 72 65 4D 61 72 6B 20 53 69 7A

-65 20 20 20 20 3A 20 25 75 0A 00 00 54 6F 74 61

-6C 20 74 69 63 6B 73 20 20 20 20 20 20 3A 20 25

-75 0A 00 00 54 6F 74 61 6C 20 74 69 6D 65 20 28

-73 65 63 73 29 3A 20 25 64 0A 00 00 45 52 52 4F

-52 21 20 4D 75 73 74 20 65 78 65 63 75 74 65 20

-66 6F 72 20 61 74 20 6C 65 61 73 74 20 31 30 20

-73 65 63 73 20 66 6F 72 20 61 20 76 61 6C 69 64

-20 72 65 73 75 6C 74 21 0A 00 00 00 49 74 65 72

-61 74 2F 53 65 63 2F 4D 48 7A 20 20 20 3A 20 25

-64 2E 25 30 32 64 0A 00 49 74 65 72 61 74 69 6F

-6E 73 20 20 20 20 20 20 20 3A 20 25 75 0A 00 00

-47 43 43 39 2E 32 2E 30 00 00 00 00 43 6F 6D 70

-69 6C 65 72 20 76 65 72 73 69 6F 6E 20 3A 20 25

-73 0A 00 00 2D 67 20 2D 4F 33 20 2D 66 75 6E 72

-6F 6C 6C 2D 61 6C 6C 2D 6C 6F 6F 70 73 00 00 00

-43 6F 6D 70 69 6C 65 72 20 66 6C 61 67 73 20 20

-20 3A 20 25 73 0A 00 00 53 54 41 54 49 43 00 00

-4D 65 6D 6F 72 79 20 6C 6F 63 61 74 69 6F 6E 20

-20 3A 20 25 73 0A 00 00 73 65 65 64 63 72 63 20

-20 20 20 20 20 20 20 20 20 3A 20 30 78 25 30 34

-78 0A 00 00 5B 25 64 5D 63 72 63 6C 69 73 74 20

-20 20 20 20 20 20 3A 20 30 78 25 30 34 78 0A 00

-5B 25 64 5D 63 72 63 6D 61 74 72 69 78 20 20 20

-20 20 3A 20 30 78 25 30 34 78 0A 00 5B 25 64 5D

-63 72 63 73 74 61 74 65 20 20 20 20 20 20 3A 20

-30 78 25 30 34 78 0A 00 5B 25 64 5D 63 72 63 66

-69 6E 61 6C 20 20 20 20 20 20 3A 20 30 78 25 30

-34 78 0A 00 43 6F 72 72 65 63 74 20 6F 70 65 72

-61 74 69 6F 6E 20 76 61 6C 69 64 61 74 65 64 2E

-20 53 65 65 20 72 65 61 64 6D 65 2E 74 78 74 20

-66 6F 72 20 72 75 6E 20 61 6E 64 20 72 65 70 6F

-72 74 69 6E 67 20 72 75 6C 65 73 2E 0A 00 00 00

-45 72 72 6F 72 73 20 64 65 74 65 63 74 65 64 0A

-00 00 00 00 43 61 6E 6E 6F 74 20 76 61 6C 69 64

-61 74 65 20 6F 70 65 72 61 74 69 6F 6E 20 66 6F

-72 20 74 68 65 73 65 20 73 65 65 64 20 76 61 6C

-75 65 73 2C 20 70 6C 65 61 73 65 20 63 6F 6D 70

-61 72 65 20 77 69 74 68 20 72 65 73 75 6C 74 73

-20 6F 6E 20 61 20 6B 6E 6F 77 6E 20 70 6C 61 74

-66 6F 72 6D 2E 0A 00 00 54 30 2E 33 65 2D 31 46

-00 00 00 00 2D 54 2E 54 2B 2B 54 71 00 00 00 00

-31 54 33 2E 34 65 34 7A 00 00 00 00 33 34 2E 30

-65 2D 54 5E 00 00 00 00 35 2E 35 30 30 65 2B 33

-00 00 00 00 2D 2E 31 32 33 65 2D 32 00 00 00 00

-2D 38 37 65 2B 38 33 32 00 00 00 00 2B 30 2E 36

-65 2D 31 32 00 00 00 00 33 35 2E 35 34 34 30 30

-00 00 00 00 2E 31 32 33 34 35 30 30 00 00 00 00

-2D 31 31 30 2E 37 30 30 00 00 00 00 2B 30 2E 36

-34 34 30 30 00 00 00 00 35 30 31 32 00 00 00 00

-31 32 33 34 00 00 00 00 2D 38 37 34 00 00 00 00

-2B 31 32 32 00 00 00 00 53 74 61 74 69 63 00 00

-48 65 61 70 00 00 00 00 53 74 61 63 6B 00 00 00

-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

-00 00 00 00

-@FFFFFFF8

-00 00 04 F0 E0 15 04 F0

diff --git a/verilog/rtl/BrqRV_EB1/testbench/hex/cmark_iccm.hex b/verilog/rtl/BrqRV_EB1/testbench/hex/cmark_iccm.hex
deleted file mode 100755
index a4e7257..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/hex/cmark_iccm.hex
+++ /dev/null
@@ -1,2254 +0,0 @@
-@80000000

-B7 52 55 5F 93 82 52 55 73 90 02 7C 17 81 04 70

-13 01 41 5B 97 80 00 6E E7 80 A0 8D 97 05 00 6E

-93 85 45 FE 05 45 88 C1 B7 02 58 D0 13 03 F0 0F

-23 80 62 00 E3 0A 00 FE 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00

-@EE000000

-00 00 00 00 03 47 05 00 E3 09 07 2A 39 71 B7 02

-04 F0 22 DE 26 DC 2A 86 4A DA 4E D8 52 D6 56 D4

-5A D2 5E D0 01 45 13 0E 50 02 37 08 58 D0 93 08

-00 03 93 03 D0 02 93 04 A0 02 13 04 00 02 93 82

-02 00 93 0F B1 00 25 4F A9 4E 19 A8 BE 86 23 00

-E8 00 B2 87 05 05 36 86 03 C7 17 00 63 06 07 20

-93 07 16 00 E3 14 C7 FF 03 43 16 00 63 0E 03 1E

-09 06 63 05 C3 1F E3 15 13 23 03 C7 17 00 3E 86

-85 07 BE 86 63 12 17 07 03 C7 17 00 3E 86 85 07

-63 1C 17 05 03 C7 26 00 3E 86 93 87 26 00 63 15

-17 05 03 C7 36 00 3E 86 93 87 36 00 63 1E 17 03

-03 C7 46 00 3E 86 93 87 46 00 63 17 17 03 03 C7

-56 00 3E 86 93 87 56 00 63 10 17 03 03 C7 66 00

-3E 86 93 87 66 00 63 19 17 01 03 C7 76 00 3E 86

-93 87 76 00 E3 0B 17 F9 09 06 63 08 77 02 63 0C

-97 02 93 09 07 FD 13 F9 F9 0F 81 46 63 73 2F 0B

-13 07 87 FA 13 79 F7 0F E3 68 24 F5 13 1A 29 00

-B3 0B 5A 00 83 A9 0B 00 82 89 03 C7 17 00 B2 87

-05 06 E3 18 97 FC 03 C7 17 00 91 05 B2 87 81 46

-05 06 F9 B7 03 47 59 00 13 9B 26 00 B3 0A DB 00

-93 0B 07 FD 93 96 1A 00 93 F9 FB 0F 3E 86 D2 96

-93 07 59 00 63 62 3F 11 03 47 69 00 13 96 26 00

-33 0B D6 00 13 0A 07 FD 93 16 1B 00 93 7A FA 0F

-3E 86 DE 96 93 07 69 00 63 60 5F 0F 03 47 79 00

-93 9B 26 00 33 86 DB 00 93 09 07 FD 13 1B 16 00

-93 FA F9 0F 3E 86 B3 06 6A 01 93 07 79 00 63 6D

-5F 0B 03 C7 17 00 13 9A 26 00 B3 0A DA 00 13 0B

-07 FD 3E 86 93 9B 1A 00 85 07 13 7A FB 0F 3E 89

-B3 86 79 01 63 6A 4F 09 03 C7 17 00 93 99 26 00

-CE 96 93 0B 07 FD 13 9A 16 00 93 FA FB 0F 3E 86

-B3 06 4B 01 85 07 63 69 5F 07 03 47 29 00 13 96

-26 00 33 0B D6 00 13 0A 07 FD 93 19 1B 00 93 7A

-FA 0F 3E 86 B3 86 3B 01 93 07 29 00 63 66 5F 05

-03 47 39 00 93 9B 26 00 DE 96 13 0B 07 FD 93 99

-16 00 93 7A FB 0F 3E 86 B3 06 3A 01 93 07 39 00

-63 64 5F 03 03 47 49 00 13 96 26 00 B3 0B D6 00

-13 0A 07 FD 93 96 1B 00 93 79 FA 0F 3E 86 DA 96

-93 07 49 00 E3 70 3F EF 09 06 5D B5 23 00 C8 01

-03 C7 17 00 E3 1E 07 DE 72 54 E2 54 52 59 C2 59

-32 5A A2 5A 12 5B 82 5B 21 61 82 80 98 41 81 49

-91 05 11 A0 B6 89 93 7A F7 00 13 83 7A 05 63 44

-5F 01 13 83 0A 03 93 86 19 00 13 0B C1 00 33 0A

-DB 00 A3 0F 6A FE 11 83 71 FF 13 09 C1 00 33 07

-39 01 B3 09 F7 41 93 FA 79 00 63 89 0A 06 85 4B

-63 8F 7A 05 09 43 63 87 6A 04 0D 4B 63 8F 6A 03

-11 4A 63 87 4A 03 15 49 63 8F 2A 01 99 49 63 87

-3A 01 83 4A 07 00 7D 17 23 00 58 01 83 4B 07 00

-7D 17 23 00 78 01 03 43 07 00 7D 17 23 00 68 00

-03 4B 07 00 7D 17 23 00 68 01 03 4A 07 00 7D 17

-23 00 48 01 03 49 07 00 7D 17 23 00 28 01 83 49

-07 00 7D 17 23 00 38 01 63 05 F7 05 83 4A 07 00

-61 17 23 00 58 01 83 4B 77 00 23 00 78 01 03 43

-67 00 23 00 68 00 03 4B 57 00 23 00 68 01 03 4A

-47 00 23 00 48 01 03 49 37 00 23 00 28 01 83 49

-27 00 23 00 38 01 83 4A 17 00 23 00 58 01 E3 1F

-F7 FB 36 95 D5 B1 03 C9 05 00 05 05 91 05 23 00

-28 01 D9 B9 03 AA 05 00 01 49 91 05 B3 7A DA 03

-4A 87 13 0B C1 00 05 09 B3 0B 2B 01 CA 89 93 8A

-0A 03 A3 8F 5B FF B3 5B DA 03 63 78 4F 0F 4A 87

-13 0B C1 00 05 09 B3 0A 2B 01 33 FA DB 03 13 0A

-0A 03 A3 8F 4A FF 33 DA DB 03 63 78 7F 0D 93 0B

-C1 00 4A 87 13 89 29 00 33 8B 2B 01 B3 7A DA 03

-93 8B 0A 03 A3 0F 7B FF B3 5A DA 03 63 77 4F 0B

-13 0A C1 00 4A 87 13 89 39 00 33 0B 2A 01 B3 FB

-DA 03 13 8A 0B 03 A3 0F 4B FF B3 DB DA 03 63 76

-5F 09 93 0A C1 00 4A 87 13 89 49 00 33 8B 2A 01

-33 FA DB 03 93 0A 0A 03 A3 0F 5B FF B3 DA DB 03

-63 75 7F 07 93 0B C1 00 4A 87 13 89 59 00 33 8B

-2B 01 33 FA DA 03 93 0B 0A 03 A3 0F 7B FF 33 DA

-DA 03 63 74 5F 05 93 0A C1 00 4A 87 13 89 69 00

-33 8B 2A 01 B3 7B DA 03 93 8A 0B 03 A3 0F 5B FF

-33 5B DA 03 63 73 4F 03 4A 87 13 89 79 00 93 09

-C1 00 33 8A 29 01 B3 7B DB 03 93 8A 0B 03 A3 0F

-5A FF 33 5A DB 03 E3 6B 6F EF CA 89 63 55 D9 08

-33 8B 26 41 93 7B 7B 00 63 8C 0B 04 85 4A 63 84

-5B 05 09 4A 63 8E 4B 03 0D 4B 63 88 6B 03 91 4A

-63 82 5B 03 15 4A 63 8C 4B 01 19 4B 63 86 6B 01

-23 00 68 00 93 09 19 00 23 00 68 00 85 09 23 00

-68 00 85 09 23 00 68 00 85 09 23 00 68 00 85 09

-23 00 68 00 85 09 23 00 68 00 85 09 63 85 36 03

-23 00 68 00 23 00 68 00 23 00 68 00 23 00 68 00

-23 00 68 00 23 00 68 00 23 00 68 00 23 00 68 00

-A1 09 E3 9F 36 FD 13 03 C1 00 1A 97 B3 06 F7 41

-93 FB 76 00 63 89 0B 06 85 4A 63 8F 5B 05 09 4A

-63 87 4B 05 0D 4B 63 8F 6B 03 91 49 63 87 3B 03

-15 43 63 8F 6B 00 99 46 63 87 DB 00 83 4B 07 00

-7D 17 23 00 78 01 83 4A 07 00 7D 17 23 00 58 01

-03 4A 07 00 7D 17 23 00 48 01 03 4B 07 00 7D 17

-23 00 68 01 83 49 07 00 7D 17 23 00 38 01 03 43

-07 00 7D 17 23 00 68 00 83 46 07 00 7D 17 23 00

-D8 00 63 05 F7 05 83 4B 07 00 61 17 23 00 78 01

-83 4A 77 00 23 00 58 01 03 4A 67 00 23 00 48 01

-03 4B 57 00 23 00 68 01 83 49 47 00 23 00 38 01

-03 43 37 00 23 00 68 00 83 46 27 00 23 00 D8 00

-83 4B 17 00 23 00 78 01 E3 1F F7 FB 4A 95 AD B4

-98 41 91 05 83 4B 07 00 63 82 0B 06 23 00 78 01

-03 49 17 00 63 0C 09 04 23 00 28 01 83 4A 27 00

-63 86 0A 04 23 00 58 01 03 4A 37 00 63 00 0A 04

-23 00 48 01 03 4B 47 00 63 0A 0B 02 23 00 68 01

-83 49 57 00 63 84 09 02 23 00 38 01 03 43 67 00

-63 0E 03 00 23 00 68 00 83 46 77 00 81 CA 21 07

-23 00 D8 00 83 4B 07 00 E3 92 0B FA 05 05 ED BA

-03 A3 05 00 01 47 91 05 BA 86 13 79 73 00 05 07

-93 0A C1 00 33 8A EA 00 13 0B 09 03 A3 0F 6A FF

-93 5B 33 00 BA 89 63 88 0B 0E 13 F9 7B 00 BA 86

-93 0A C1 00 05 07 33 8A EA 00 13 0B 09 03 A3 0F

-6A FF 93 5B 63 00 63 88 0B 0C 13 F9 7B 00 BA 86

-93 0A C1 00 13 87 29 00 33 8A EA 00 13 0B 09 03

-A3 0F 6A FF 93 5B 93 00 63 87 0B 0A 13 F9 7B 00

-BA 86 93 0A C1 00 13 87 39 00 33 8A EA 00 13 0B

-09 03 A3 0F 6A FF 93 5B C3 00 63 86 0B 08 13 F9

-7B 00 BA 86 93 0A C1 00 13 87 49 00 33 8A EA 00

-13 0B 09 03 A3 0F 6A FF 93 5B F3 00 63 85 0B 06

-13 F9 7B 00 BA 86 93 0A C1 00 13 87 59 00 33 8A

-EA 00 13 0B 09 03 A3 0F 6A FF 93 5B 23 01 63 84

-0B 04 13 F9 7B 00 BA 86 93 0A C1 00 13 87 69 00

-33 8A EA 00 13 0B 09 03 A3 0F 6A FF 93 5B 53 01

-63 83 0B 02 BA 86 13 F9 7B 00 13 87 79 00 93 09

-C1 00 B3 8A E9 00 13 0A 09 03 A3 8F 4A FF 13 53

-83 01 E3 1B 03 EE 13 0B C1 00 DA 96 B3 8B F6 41

-93 F9 7B 00 63 89 09 06 05 49 63 8F 29 05 89 4A

-63 87 59 05 0D 4A 63 8F 49 03 11 43 63 87 69 02

-15 4B 63 8F 69 01 99 4B 63 87 79 01 83 C9 06 00

-FD 16 23 00 38 01 03 C9 06 00 FD 16 23 00 28 01

-83 CA 06 00 FD 16 23 00 58 01 03 CA 06 00 FD 16

-23 00 48 01 03 C3 06 00 FD 16 23 00 68 00 03 CB

-06 00 FD 16 23 00 68 01 83 CB 06 00 FD 16 23 00

-78 01 63 85 F6 05 83 C9 06 00 E1 16 23 00 38 01

-03 C9 76 00 23 00 28 01 83 CA 66 00 23 00 58 01

-03 CA 56 00 23 00 48 01 03 C3 46 00 23 00 68 00

-03 CB 36 00 23 00 68 01 83 CB 26 00 23 00 78 01

-83 C9 16 00 23 00 38 01 E3 9F F6 FB 3A 95 29 B8

-83 AA 05 00 91 05 56 87 63 C3 0A 26 01 49 33 6B

-D7 03 13 0A C1 00 CA 89 05 09 B3 0B 2A 01 4A 8A

-33 47 D7 03 13 0B 0B 03 A3 8F 6B FF 71 CB 33 6B

-D7 03 CA 89 93 0B C1 00 05 09 CA 9B 33 47 D7 03

-13 0B 0B 03 A3 8F 6B FF 45 CF 33 6B D7 03 CA 89

-93 0B C1 00 13 09 2A 00 CA 9B 33 47 D7 03 13 0B

-0B 03 A3 8F 6B FF 49 CF 33 6B D7 03 CA 89 93 0B

-C1 00 13 09 3A 00 CA 9B 33 47 D7 03 13 0B 0B 03

-A3 8F 6B FF 35 CF 33 6B D7 03 CA 89 93 0B C1 00

-13 09 4A 00 CA 9B 33 47 D7 03 13 0B 0B 03 A3 8F

-6B FF 39 CF 33 6B D7 03 CA 89 93 0B C1 00 13 09

-5A 00 CA 9B 33 47 D7 03 13 0B 0B 03 A3 8F 6B FF

-21 C3 33 6B D7 03 CA 89 93 0B C1 00 13 09 6A 00

-CA 9B 33 47 D7 03 13 0B 0B 03 A3 8F 6B FF 0D C3

-33 6B D7 03 CA 89 13 09 7A 00 13 0A C1 00 B3 0B

-2A 01 33 47 D7 03 13 0B 0B 03 A3 8F 6B FF 01 FB

-4A 87 63 55 D9 08 33 8A 26 41 93 7B 7A 00 63 8C

-0B 04 05 4B 63 84 6B 05 09 4A 63 8E 4B 03 0D 4B

-63 88 6B 03 11 4A 63 82 4B 03 15 4B 63 8C 6B 01

-19 4A 63 86 4B 01 23 00 68 00 13 07 19 00 23 00

-68 00 05 07 23 00 68 00 05 07 23 00 68 00 05 07

-23 00 68 00 05 07 23 00 68 00 05 07 23 00 68 00

-05 07 63 05 D7 02 23 00 68 00 23 00 68 00 23 00

-68 00 23 00 68 00 23 00 68 00 23 00 68 00 23 00

-68 00 23 00 68 00 21 07 E3 1F D7 FC 74 00 33 87

-36 01 33 03 F7 41 93 7B 73 00 63 89 0B 06 05 4B

-63 8F 6B 05 09 4A 63 87 4B 05 8D 46 63 8F DB 02

-11 43 63 87 6B 02 15 4B 63 8F 6B 01 19 4A 63 87

-4B 01 83 4B 07 00 7D 17 23 00 78 01 83 46 07 00

-7D 17 23 00 D8 00 03 43 07 00 7D 17 23 00 68 00

-03 4B 07 00 7D 17 23 00 68 01 03 4A 07 00 7D 17

-23 00 48 01 83 4B 07 00 7D 17 23 00 78 01 83 46

-07 00 7D 17 23 00 D8 00 63 05 F7 05 03 43 07 00

-61 17 23 00 68 00 03 4B 77 00 23 00 68 01 03 4A

-67 00 23 00 48 01 83 4B 57 00 23 00 78 01 83 46

-47 00 23 00 D8 00 03 43 37 00 23 00 68 00 03 4B

-27 00 23 00 68 01 03 4A 17 00 23 00 48 01 E3 1F

-F7 FB E3 DD 0A B4 13 89 29 00 4A 95 6F F0 CF DB

-1A 87 13 03 00 02 63 14 77 E4 6F F0 0F E7 33 07

-50 41 23 00 78 00 FD 16 51 BB 01 45 82 80 39 71

-13 03 41 02 2E D2 9A 85 06 CE 32 D4 36 D6 3A D8

-3E DA 42 DC 46 DE 1A C6 EF F0 CF D2 F2 40 21 61

-82 80 39 71 13 03 41 02 2E D2 9A 85 06 CE 32 D4

-36 D6 3A D8 3E DA 42 DC 46 DE 1A C6 EF F0 8F D0

-F2 40 21 61 82 80 19 C6 03 15 25 00 83 95 25 00

-0D 8D 82 80 83 17 05 00 13 97 07 01 93 52 07 01

-13 F3 07 F0 93 D3 82 00 33 66 73 00 23 10 C5 00

-83 96 05 00 03 15 25 00 13 98 06 01 93 58 08 01

-13 FE 06 F0 93 DE 88 00 33 6F DE 01 23 90 E5 01

-83 95 25 00 0D 8D 82 80 03 97 05 00 83 97 25 00

-23 10 E5 00 23 11 F5 00 82 80 D1 48 B3 52 15 03

-61 73 23 A0 05 00 13 07 03 08 93 87 05 01 93 86

-85 00 93 88 E2 FF 13 98 38 00 2E 98 23 A2 05 01

-13 9E 28 00 23 11 08 00 23 10 E8 00 42 9E 13 05

-48 00 63 FB 07 3F 13 07 88 00 63 77 C7 3F 23 A4

-05 00 94 C1 C8 C5 93 43 F3 FF FD 5E 23 12 D8 01

-23 13 78 00 63 8D 08 20 13 1F 06 01 E1 7F 93 F2

-38 00 13 5F 0F 01 01 45 93 CE FF FF 63 8D 02 0C

-05 43 63 84 62 08 89 43 63 8D 72 02 93 82 87 00

-63 F8 02 03 93 0F 47 00 63 F4 CF 03 13 15 3F 00

-94 C3 93 76 85 07 9C C1 13 93 86 00 D8 C3 B3 63

-D3 00 23 10 77 00 23 11 D7 01 BE 86 7E 87 96 87

-05 45 93 82 87 00 63 F1 02 05 93 03 47 00 63 FD

-C3 03 93 1F 05 01 93 DF 0F 01 33 C3 EF 01 0E 03

-13 73 83 07 93 FF 7F 00 94 C3 B3 66 F3 01 9C C1

-13 93 86 00 D8 C3 B3 6F D3 00 23 10 F7 01 23 11

-D7 01 BE 86 1E 87 96 87 05 05 93 82 87 00 63 F1

-02 05 93 03 47 00 63 FD C3 03 13 13 05 01 93 5F

-03 01 33 C3 EF 01 0E 03 13 73 83 07 93 FF 7F 00

-94 C3 B3 66 F3 01 9C C1 13 93 86 00 D8 C3 B3 6F

-D3 00 23 10 F7 01 23 11 D7 01 BE 86 1E 87 96 87

-05 05 63 86 A8 12 93 82 87 00 63 F1 02 05 93 03

-47 00 63 FD C3 03 13 13 05 01 93 5F 03 01 33 C3

-EF 01 0E 03 13 73 83 07 93 FF 7F 00 94 C3 B3 66

-F3 01 9C C1 13 93 86 00 D8 C3 B3 6F D3 00 23 10

-F7 01 23 11 D7 01 BE 86 1E 87 96 87 93 82 87 00

-05 05 63 F1 02 05 93 03 47 00 63 FD C3 03 13 13

-05 01 93 5F 03 01 33 C3 EF 01 0E 03 13 73 83 07

-93 FF 7F 00 94 C3 B3 66 F3 01 9C C1 13 93 86 00

-D8 C3 B3 6F D3 00 23 10 F7 01 23 11 D7 01 BE 86

-1E 87 96 87 93 82 87 00 13 03 15 00 63 F1 02 05

-93 03 47 00 63 FD C3 03 93 1F 03 01 93 DF 0F 01

-33 C3 EF 01 0E 03 13 73 83 07 93 FF 7F 00 94 C3

-B3 66 F3 01 9C C1 13 93 86 00 D8 C3 B3 6F D3 00

-23 10 F7 01 23 11 D7 01 BE 86 1E 87 96 87 93 82

-87 00 13 03 25 00 63 F1 02 05 93 03 47 00 63 FD

-C3 03 93 1F 03 01 93 DF 0F 01 33 C3 EF 01 0E 03

-13 73 83 07 93 FF 7F 00 94 C3 B3 66 F3 01 9C C1

-13 93 86 00 D8 C3 B3 6F D3 00 23 10 F7 01 23 11

-D7 01 BE 86 1E 87 96 87 0D 05 E3 9E A8 EC 88 42

-29 CD 15 48 33 DF 08 03 91 68 05 47 13 8E F8 FF

-11 A8 03 28 05 00 23 91 EE 00 05 07 63 0F 08 02

-AA 86 42 85 83 AE 46 00 E3 65 E7 FF 93 12 07 01

-93 D3 02 01 13 83 13 00 93 1F 83 00 93 F7 0F 70

-B3 C6 C3 00 03 28 05 00 B3 E8 D7 00 B3 F2 C8 01

-23 91 5E 00 05 07 E3 15 08 FC 05 48 81 48 01 45

-81 4F 85 42 13 7F 78 00 85 0F AE 87 01 47 63 0B

-0F 04 05 46 63 03 CF 04 09 4E 63 0D CF 03 8D 4E

-63 07 DF 03 91 43 63 01 7F 02 15 43 63 0B 6F 00

-99 46 63 05 DF 00 9C 41 05 47 A5 C7 9C 43 05 07

-AD C3 9C 43 05 07 B1 CF 9C 43 05 07 B9 CB 9C 43

-05 07 A1 CB 9C 43 05 07 A9 C7 9C 43 05 07 B1 C3

-63 02 E8 0C 9C 43 05 07 3A 8F 85 CF 9C 43 05 07

-8D CB 9C 43 13 07 2F 00 8D C7 9C 43 13 07 3F 00

-8D C3 9C 43 13 07 4F 00 89 CF 9C 43 13 07 5F 00

-89 CB 9C 43 13 07 6F 00 89 C7 9C 43 13 07 7F 00

-E1 F3 AE 86 42 86 BE 85 25 C7 51 C2 C9 C1 83 AE

-46 00 03 AE 45 00 83 97 0E 00 83 13 2E 00 03 93

-2E 00 13 9F 07 01 13 5F 0F 01 13 5F 8F 00 93 F7

-07 F0 B3 E7 E7 01 23 90 FE 00 03 1F 0E 00 33 03

-73 40 93 1E 0F 01 93 D3 0E 01 93 77 0F F0 13 DF

-83 00 B3 EE E7 01 23 10 DE 01 63 5A 60 02 2E 8E

-8C 41 7D 16 63 8D 08 00 23 A0 C8 01 F2 88 51 FF

-1D C2 85 C5 2E 8E 7D 16 8C 41 E3 97 08 FE 72 85

-F2 88 F5 B7 AE 86 42 87 42 86 BE 85 B5 BF 36 8E

-7D 17 94 42 C1 BF E3 97 05 EC 23 A0 08 00 63 89

-5F 00 06 08 19 C5 AA 85 81 4F 81 48 01 45 5D BD

-82 80 23 20 00 00 02 90 B6 87 2A 87 81 46 1D B1

-03 28 06 00 93 08 88 00 63 F1 E8 04 98 42 13 03

-47 00 63 7C F3 02 23 20 16 01 1C 41 83 92 05 00

-03 96 25 00 23 20 F8 00 23 20 05 01 23 22 E8 00

-83 A3 06 00 13 85 43 00 88 C2 83 25 48 00 42 85

-23 90 55 00 23 91 C5 00 82 80 01 48 42 85 82 80

-AA 87 08 41 D4 43 50 41 18 41 D0 C3 54 C1 98 C3

-23 20 05 00 82 80 D0 41 54 41 98 41 50 C1 D4 C1

-18 C1 88 C1 82 80 03 96 25 00 63 4D 06 00 01 E5

-05 A8 08 41 05 C5 03 23 45 00 83 13 23 00 E3 9A

-C3 FE 82 80 01 CD 03 97 05 00 19 A0 08 41 01 C9

-5C 41 83 C2 07 00 E3 9B E2 FE 82 80 01 45 82 80

-82 80 2D C9 1C 41 81 48 23 20 15 01 AA 86 BD C3

-98 43 94 C3 3E 85 25 C3 83 22 07 00 1C C3 3A 85

-63 8A 02 04 03 A3 02 00 23 A0 E2 00 16 85 63 03

-03 04 83 23 03 00 23 20 53 00 1A 85 63 8C 03 02

-83 A5 03 00 23 A0 63 00 1E 85 8D C5 03 A8 05 00

-23 A0 75 00 2E 85 63 0F 08 00 03 26 08 00 23 20

-B8 00 42 85 C2 88 19 C6 32 85 1C 41 23 20 15 01

-AA 86 D9 FF 82 80 82 80 79 71 22 D4 5A C8 5E C6

-66 C2 6A C0 06 D6 26 D2 4A D0 4E CE 52 CC 56 CA

-62 C4 2A 84 2E 8B 32 8D 85 4B 85 4C 63 01 04 10

-01 4C 81 44 81 4A 13 F7 7B 00 05 0C A2 87 01 49

-31 CB 85 46 63 03 D7 04 89 40 63 0D 17 02 8D 42

-63 07 57 02 11 43 63 01 67 02 95 43 63 0B 77 00

-19 45 63 05 A7 00 1C 40 05 49 A5 C7 9C 43 05 09

-AD C3 9C 43 05 09 B1 CF 9C 43 05 09 B9 CB 9C 43

-05 09 A1 CB 9C 43 05 09 A9 C7 9C 43 05 09 B1 C3

-63 81 2B 05 9C 43 05 09 CA 85 85 CF 9C 43 05 09

-8D CB 9C 43 13 89 25 00 8D C7 9C 43 13 89 35 00

-8D C3 9C 43 13 89 45 00 89 CF 9C 43 13 89 55 00

-89 CB 9C 43 13 89 65 00 89 C7 9C 43 13 89 75 00

-E1 F3 22 8A DE 89 3E 84 63 04 09 02 63 8C 09 02

-15 C8 4C 40 03 25 4A 00 6A 86 02 9B 63 54 A0 02

-22 86 00 40 FD 19 81 CC 90 C0 B2 84 E3 10 09 FE

-63 8F 09 00 11 CC 22 86 FD 19 00 40 F5 F4 B2 8A

-B2 84 ED B7 52 86 7D 19 03 2A 0A 00 E9 BF 01 FC

-23 A0 04 00 63 08 9C 01 86 0B 56 84 01 B7 23 20

-00 00 02 90 B2 50 22 54 92 54 02 59 F2 49 62 4A

-42 4B B2 4B 22 4C 92 4C 02 4D 56 85 D2 4A 45 61

-82 80 1D 71 A6 CA CE C6 D2 C4 5E DE FD 74 13 1A

-07 01 86 CE A2 CC CA C8 D6 C2 DA C0 62 DC 66 DA

-6A D8 6E D6 2E C2 32 C6 AA 89 B6 8B D9 8C 13 5A

-0A 01 19 E1 6F 10 70 48 93 18 15 00 33 0F A0 40

-B2 98 13 13 1F 00 C6 86 01 46 0A 0F 33 05 D3 00

-B3 85 A6 40 93 80 E5 FF 93 D2 10 00 93 83 12 00

-13 F4 73 00 AA 87 59 C4 05 48 63 0C 04 07 09 49

-63 02 24 07 8D 4A 63 08 54 05 11 4B 63 0E 64 03

-15 4C 63 04 84 03 99 4C 63 0A 94 01 03 5D 05 00

-93 07 25 00 33 0E AA 01 23 10 C5 01 83 DE 07 00

-89 07 B3 0F DA 01 23 9F F7 FF 83 DD 07 00 89 07

-B3 05 BA 01 23 9F B7 FE 83 D0 07 00 89 07 B3 02

-1A 00 23 9F 57 FE 83 D3 07 00 89 07 33 04 7A 00

-23 9F 87 FE 03 D8 07 00 89 07 33 09 0A 01 23 9F

-27 FF 83 DA 07 00 89 07 33 0B 5A 01 23 9F 67 FF

-63 85 D7 06 03 DC 07 00 83 DC 27 00 03 DD 47 00

-83 DF 67 00 83 DE 87 00 03 DE A7 00 83 DD C7 00

-83 D5 E7 00 B3 00 8A 01 B3 03 9A 01 B3 02 AA 01

-33 04 FA 01 33 09 DA 01 B3 0A CA 01 33 08 BA 01

-33 0B BA 00 23 90 17 00 23 91 77 00 23 92 57 00

-23 93 87 00 23 94 27 01 23 95 57 01 23 96 07 01

-23 97 67 01 C1 07 E3 9F D7 F8 93 0E 16 00 B3 06

-E5 41 63 84 D9 01 76 86 D5 B5 92 43 33 08 30 41

-01 4F 81 4F 13 15 28 00 33 8D 68 00 B3 87 A8 41

-13 8C E7 FF 93 5C 1C 00 13 8E 1C 00 93 1D 2F 00

-93 75 7E 00 B3 87 7D 00 EA 86 D1 CD 85 40 63 82

-15 08 89 42 63 87 55 06 0D 44 63 8C 85 04 11 49

-63 81 25 05 95 4A 63 86 55 03 19 4B 63 8B 65 01

-03 1C 0D 00 93 06 2D 00 91 07 B3 0C EC 02 23 AE

-97 FF 03 9E 06 00 91 07 89 06 B3 0D EE 02 23 AE

-B7 FF 83 95 06 00 91 07 89 06 B3 80 E5 02 23 AE

-17 FE 83 92 06 00 91 07 89 06 33 84 E2 02 23 AE

-87 FE 03 99 06 00 91 07 89 06 B3 0A E9 02 23 AE

-57 FF 03 9B 06 00 91 07 89 06 33 0C EB 02 23 AE

-87 FF 83 9C 06 00 91 07 89 06 33 8E EC 02 23 AE

-C7 FF 63 87 16 07 83 9D 06 00 83 90 26 00 03 9B

-46 00 83 9A 66 00 03 99 86 00 03 94 A6 00 83 92

-C6 00 83 95 E6 00 B3 8C ED 02 C1 06 93 87 07 02

-33 8C E0 02 23 A0 97 FF 33 0E EB 02 23 A2 87 FF

-B3 8D EA 02 23 A4 C7 FF B3 00 E9 02 23 A6 B7 FF

-33 0B E4 02 23 A8 17 FE B3 8A E2 02 23 AA 67 FF

-33 89 E5 02 23 AC 57 FF 23 AE 27 FF E3 9D 16 F9

-93 86 1F 00 76 9F B3 08 AD 40 63 84 CF 00 B6 8F

-E1 B5 92 4F 13 97 2E 00 81 40 7E 97 01 4E 81 46

-81 45 0E 08 33 0D A7 00 33 03 A7 41 93 03 C3 FF

-93 DE 23 00 13 84 1E 00 93 72 34 00 6A 8F 63 8C

-02 0E 85 4C 63 8A 92 05 09 4C 63 85 82 03 F2 8D

-03 2E 0D 00 93 97 00 01 93 D0 07 01 F2 96 63 D7

-D4 1A 13 8F A0 00 93 18 0F 01 93 D0 08 41 81 46

-13 0F 4D 00 F2 8F 03 2E 0F 00 13 93 00 01 93 53

-03 01 F2 96 63 DB D4 16 93 86 A3 00 93 9C 06 01

-93 D0 0C 41 81 46 11 0F 72 8C 03 2E 0F 00 93 9D

-00 01 93 D7 0D 01 F2 96 63 DC D4 12 93 88 A7 00

-93 9F 08 01 13 93 08 01 93 DE 0F 01 93 50 03 41

-81 46 11 0F 63 19 E7 07 93 8D 15 00 33 07 0D 41

-63 07 B6 14 EE 85 B9 B7 83 22 4F 00 93 8E AA 00

-13 94 0E 01 93 53 04 41 01 49 13 9E 03 01 B3 06

-59 00 93 5C 0E 01 63 DF D4 08 03 2E 8F 00 93 87

-AC 00 93 9A 07 01 13 DB 0A 41 81 46 13 19 0B 01

-F2 96 93 58 09 01 63 D0 D4 0A 93 82 A8 00 93 9C

-02 01 13 9C 02 01 93 DE 0C 01 93 50 0C 41 81 46

-31 0F E3 0B E7 F9 83 23 0F 00 93 9E 00 01 13 D4

-0E 01 B3 80 76 00 63 C5 14 08 33 2E 7E 00 B3 02

-C4 01 93 9C 02 01 93 DD 0C 41 03 2B 4F 00 93 97

-0D 01 11 0F 33 89 60 01 93 DA 07 01 E3 C6 24 F7

-B3 A8 63 01 83 22 4F 00 B3 8F 1A 01 13 93 0F 01

-93 53 03 41 13 9E 03 01 B3 06 59 00 93 5C 0E 01

-E3 C5 D4 F6 33 2C 5B 00 03 2E 8F 00 B3 8D 8C 01

-93 90 0D 01 13 DB 00 41 13 19 0B 01 F2 96 93 58

-09 01 E3 C4 D4 F6 B3 AF C2 01 33 83 F8 01 93 13

-03 01 13 14 03 01 93 DE 03 01 93 50 04 41 8D B7

-93 06 A4 00 13 9C 06 01 93 5D 0C 41 81 40 B5 BF

-B3 20 CC 01 33 8B 17 00 93 1A 0B 01 13 19 0B 01

-93 DE 0A 01 93 50 09 41 E9 B5 B3 AE CF 01 33 84

-D3 01 93 12 04 01 93 D0 02 41 71 B5 33 AB CD 01

-B3 8A 60 01 13 99 0A 01 93 50 09 41 91 BD A9 67

-93 F5 10 00 13 FD F0 0F 93 8A 17 00 33 0B B0 40

-33 FE 6A 01 13 59 1D 00 B3 48 2E 01 93 F6 18 00

-13 D7 8E 00 93 57 2D 00 93 5D 1E 00 91 CA E9 7F

-13 83 1F 00 B3 C3 6D 00 93 9E 03 01 93 DD 0E 01

-33 C4 B7 01 93 70 14 00 93 D2 17 00 13 D8 1D 00

-63 8B 00 00 E9 7C 13 8C 1C 00 33 4F 88 01 13 15

-0F 01 13 58 05 01 33 C6 02 01 93 75 16 00 13 DD

-27 00 13 59 18 00 91 C9 69 7B 93 0A 1B 00 B3 4D

-59 01 13 9E 0D 01 13 59 0E 01 B3 48 A9 01 93 F6

-18 00 93 DF 37 00 93 50 19 00 91 CA 69 73 93 03

-13 00 B3 CE 70 00 13 94 0E 01 93 50 04 01 B3 C2

-F0 01 93 FC 12 00 13 DC 47 00 93 D5 10 00 63 8B

-0C 00 69 7F 13 05 1F 00 33 C8 A5 00 13 16 08 01

-93 55 06 01 33 4D BC 00 13 7B 1D 00 95 83 93 D8

-15 00 63 0B 0B 00 E9 7A 13 8E 1A 00 B3 CD C8 01

-13 99 0D 01 93 58 09 01 93 F6 18 00 13 D4 18 00

-63 8B F6 00 E9 7F 13 83 1F 00 B3 43 64 00 93 9E

-03 01 13 D4 0E 01 B3 40 87 00 93 F2 10 00 93 5C

-17 00 13 56 14 00 63 8B 02 00 69 7C 13 0F 1C 00

-33 45 E6 01 13 18 05 01 13 56 08 01 B3 C5 CC 00

-13 FD 15 00 13 5B 27 00 13 59 16 00 63 0B 0D 00

-E9 77 93 8A 17 00 33 4E 59 01 93 1D 0E 01 13 D9

-0D 01 B3 48 69 01 93 FF 18 00 93 56 37 00 93 50

-19 00 63 8B 0F 00 69 73 93 03 13 00 B3 CE 70 00

-13 94 0E 01 93 50 04 01 B3 C2 D0 00 93 FC 12 00

-13 5C 47 00 93 D5 10 00 63 8B 0C 00 69 7F 13 05

-1F 00 33 C8 A5 00 13 16 08 01 93 55 06 01 33 4D

-BC 00 13 7B 1D 00 93 5A 57 00 93 D8 15 00 63 0B

-0B 00 E9 77 13 8E 17 00 B3 CD C8 01 13 99 0D 01

-93 58 09 01 B3 CF 1A 01 93 F6 1F 00 13 53 67 00

-93 D2 18 00 91 CA E9 73 93 8E 13 00 33 C4 D2 01

-93 10 04 01 93 D2 00 01 B3 4C 53 00 13 FC 1C 00

-1D 83 93 D5 12 00 63 0B 0C 00 69 7F 13 05 1F 00

-33 C8 A5 00 13 16 08 01 93 55 06 01 13 FD 15 00

-93 DD 15 00 63 0B ED 00 69 7B 93 0A 1B 00 B3 C7

-5D 01 13 9E 07 01 93 5D 0E 01 63 94 09 00 6F 10

-60 5C 92 4C 13 94 29 00 81 45 22 86 66 85 EF 50

-B0 7B 32 4D 93 9F 19 00 66 85 B3 05 94 01 B3 82

-7F 01 81 43 26 C4 B3 84 72 41 13 83 E4 FF 93 5E

-13 00 93 80 1E 00 13 9C 13 00 13 F7 70 00 B3 06

-8D 01 5E 86 81 47 45 C7 05 4F 63 07 E7 09 09 48

-63 0B 07 07 0D 4B 63 0F 67 05 91 4A 63 03 57 05

-15 4E 63 07 C7 03 19 49 63 0B 27 01 83 98 06 00

-83 97 0B 00 89 06 13 86 2B 00 B3 87 F8 02 03 94

-06 00 83 1C 06 00 89 06 09 06 B3 0F 94 03 FE 97

-83 94 06 00 03 13 06 00 89 06 09 06 B3 8E 64 02

-F6 97 83 90 06 00 03 1C 06 00 89 06 09 06 33 87

-80 03 BA 97 03 9F 06 00 03 18 06 00 89 06 09 06

-33 0B 0F 03 DA 97 83 9A 06 00 03 1E 06 00 89 06

-09 06 33 89 CA 03 CA 97 83 98 06 00 03 14 06 00

-09 06 89 06 B3 8C 88 02 E6 97 63 06 56 08 83 9F

-06 00 03 13 06 00 83 90 26 00 83 1A 26 00 33 87

-6F 02 83 94 46 00 03 1C 46 00 83 9E 66 00 03 1B

-66 00 03 9E 86 00 03 19 86 00 83 9C A6 00 03 14

-A6 00 83 98 C6 00 33 83 50 03 B3 80 E7 00 83 1F

-C6 00 03 98 E6 00 03 1F E6 00 41 06 C1 06 B3 87

-84 03 B3 8A 60 00 B3 84 6E 03 33 8C FA 00 B3 0E

-2E 03 33 0B 9C 00 33 87 8C 02 33 0E DB 01 33 89

-F8 03 B3 0C EE 00 33 04 E8 03 B3 88 2C 01 B3 87

-88 00 E3 1E 56 F6 1C C1 11 05 CE 93 E3 95 A5 EA

-A2 44 B3 02 30 41 13 95 22 00 81 47 01 43 01 48

-81 46 13 96 32 00 33 8D A5 00 B3 8F A5 41 13 8F

-CF FF 93 50 2F 00 93 8A 10 00 13 FC 3A 00 EA 8E

-63 02 0C 52 05 4B 63 09 6C 05 09 47 63 04 EC 02

-9A 8E 03 23 0D 00 C2 07 13 DE 07 01 1A 98 63 DF

-04 5D 13 08 AE 00 93 18 08 01 93 D7 08 41 01 48

-93 0E 4D 00 9A 83 03 A3 0E 00 93 92 07 01 93 DF

-02 01 1A 98 63 D3 04 5B 13 8C AF 00 13 1B 0C 01

-93 57 0B 41 01 48 91 0E 1A 87 03 A3 0E 00 C2 07

-13 DE 07 01 1A 98 63 D5 04 57 13 08 AE 00 93 13

-08 01 93 12 08 01 93 D0 03 01 93 D7 02 41 01 48

-91 0E 63 91 D5 4B 85 06 B3 05 CD 40 E3 9D D9 F4

-93 F8 F7 0F 13 D9 80 00 33 CD B8 01 13 7E 1D 00

-93 DC 18 00 93 D2 1D 00 63 0B 0E 00 69 74 13 03

-14 00 B3 C3 62 00 13 98 03 01 93 52 08 01 B3 CF

-5C 00 13 FF 1F 00 93 D0 28 00 13 D7 12 00 63 0B

-0F 00 E9 7A 13 8C 1A 00 B3 47 87 01 13 9B 07 01

-13 57 0B 01 B3 CE E0 00 13 F5 1E 00 93 DD 38 00

-13 5E 17 00 11 C9 69 76 93 06 16 00 B3 45 DE 00

-13 9D 05 01 13 5E 0D 01 B3 CC CD 01 13 F4 1C 00

-13 D3 48 00 13 5F 1E 00 11 C8 E9 73 13 88 13 00

-B3 42 0F 01 93 9F 02 01 13 DF 0F 01 B3 40 E3 01

-93 FA 10 00 13 DC 58 00 13 55 1F 00 63 8B 0A 00

-69 7B 13 07 1B 00 B3 47 E5 00 93 9E 07 01 13 D5

-0E 01 B3 4D AC 00 93 F6 1D 00 13 D6 68 00 13 54

-15 00 91 CA E9 75 13 8D 15 00 33 4E A4 01 93 1C

-0E 01 13 D4 0C 01 33 43 86 00 93 73 13 00 93 D8

-78 00 93 50 14 00 63 8B 03 00 69 78 93 02 18 00

-B3 CF 50 00 13 9F 0F 01 93 50 0F 01 93 FA 10 00

-93 DE 10 00 63 8B 1A 01 69 7C 13 0B 1C 00 33 C7

-6E 01 93 17 07 01 93 DE 07 01 33 C5 2E 01 93 7D

-15 00 13 56 19 00 93 DC 1E 00 63 8B 0D 00 E9 76

-93 85 16 00 33 CD BC 00 13 1E 0D 01 93 5C 0E 01

-33 C4 CC 00 13 73 14 00 93 53 29 00 13 DF 1C 00

-63 0B 03 00 E9 78 13 88 18 00 B3 42 0F 01 93 9F

-02 01 13 DF 0F 01 B3 40 7F 00 93 FA 10 00 13 5C

-39 00 13 55 1F 00 63 8B 0A 00 69 7B 13 07 1B 00

-B3 47 E5 00 93 9E 07 01 13 D5 0E 01 B3 4D AC 00

-13 F6 1D 00 93 56 49 00 13 54 15 00 11 CA E9 75

-13 8D 15 00 33 4E A4 01 93 1C 0E 01 13 D4 0C 01

-33 C3 86 00 93 73 13 00 93 58 59 00 93 50 14 00

-63 8B 03 00 69 78 93 02 18 00 B3 CF 50 00 13 9F

-0F 01 93 50 0F 01 B3 CA 18 00 13 FC 1A 00 13 5B

-69 00 93 DD 10 00 63 0B 0C 00 69 77 93 0E 17 00

-B3 C7 DD 01 13 95 07 01 93 5D 05 01 33 46 BB 01

-93 76 16 00 13 59 79 00 13 D4 1D 00 91 CA E9 75

-13 8D 15 00 33 4E A4 01 93 1C 0E 01 13 D4 0C 01

-93 53 14 00 13 73 14 00 1E C8 63 0C 23 01 E9 78

-13 88 18 00 B3 C2 03 01 93 9F 02 01 13 DF 0F 01

-7A C8 81 4A 81 42 63 88 09 32 B2 40 13 9C 29 00

-13 94 19 00 01 47 52 CE 5E C4 86 8A 33 09 14 00

-62 CA 01 4B 26 CC 3A 8A E2 8B 92 4E 93 14 2A 00

-5E 86 33 85 D4 01 81 45 EF 50 10 30 A2 4F 2A 8F

-01 45 B3 07 59 41 93 8D E7 FF 13 D6 1D 00 93 06

-16 00 13 FD 76 00 7E 86 D6 86 81 47 63 06 0D 0A

-85 45 63 08 BD 08 09 4E 63 0C CD 07 8D 4C 63 00

-9D 07 11 43 63 04 6D 04 95 43 63 08 7D 02 99 48

-63 0C 1D 01 03 98 0A 00 83 92 0F 00 93 86 2A 00

-33 86 8F 00 B3 07 58 02 83 90 06 00 03 1C 06 00

-89 06 22 96 33 87 80 03 BA 97 83 94 06 00 83 1E

-06 00 89 06 22 96 B3 8D D4 03 EE 97 03 9D 06 00

-83 15 06 00 89 06 22 96 33 0E BD 02 F2 97 83 9C

-06 00 03 13 06 00 89 06 22 96 B3 83 6C 02 9E 97

-83 98 06 00 03 18 06 00 89 06 22 96 B3 82 08 03

-96 97 83 90 06 00 03 1C 06 00 89 06 22 96 33 87

-80 03 BA 97 63 03 D9 0A B3 04 86 00 83 9C 06 00

-03 13 06 00 B3 8E 84 00 03 9E 04 00 03 9D 26 00

-B3 83 8E 00 83 90 46 00 83 9D 0E 00 33 87 6C 02

-B3 85 83 00 83 9E 66 00 83 9C 03 00 33 88 85 00

-03 93 86 00 03 9C 05 00 83 98 A6 00 83 13 08 00

-B3 02 88 00 33 0D CD 03 03 98 C6 00 33 86 82 00

-83 92 02 00 83 95 E6 00 03 1E 06 00 BA 97 C1 06

-22 96 B3 84 B0 03 B3 80 A7 01 B3 8D 9E 03 B3 8E

-90 00 B3 0C 83 03 33 87 BE 01 33 83 78 02 33 0C

-97 01 B3 08 58 02 B3 03 6C 00 33 88 C5 03 33 8D

-13 01 B3 07 0D 01 E3 11 D9 F6 23 20 FF 00 93 06

-15 00 11 0F 89 0F 63 84 D9 12 36 85 59 B5 33 23

-F3 01 03 A9 4E 00 B3 8A 60 00 13 9C 0A 01 93 57

-0C 41 93 9C 07 01 B3 08 2E 01 91 0E 13 D4 0C 01

-63 DE 14 09 83 AA 4E 00 13 0F A4 00 93 10 0F 01

-93 DF 00 41 81 48 13 93 0F 01 33 8B 58 01 13 5C

-03 01 63 DF 64 09 03 A3 8E 00 93 0C AC 00 13 94

-0C 01 13 59 04 41 01 4B 93 18 09 01 33 08 6B 00

-93 D3 08 01 63 D0 04 0B 13 8C A3 00 13 1B 0C 01

-13 17 0C 01 93 50 0B 01 93 57 07 41 01 48 B1 0E

-E3 83 D5 B7 83 AF 0E 00 13 9F 07 01 93 50 0F 01

-33 0E F8 01 E3 D5 C4 F7 03 A9 4E 00 13 8B A0 00

-13 17 0B 01 93 57 07 41 01 4E 93 9C 07 01 B3 08

-2E 01 91 0E 13 D4 0C 01 E3 C6 14 F7 33 A8 2F 01

-83 AA 4E 00 B3 03 04 01 93 92 03 01 93 DF 02 41

-13 93 0F 01 33 8B 58 01 13 5C 03 01 E3 C5 64 F7

-33 27 59 01 03 A3 8E 00 B3 07 EC 00 13 9E 07 01

-13 59 0E 41 93 18 09 01 33 08 6B 00 93 D3 08 01

-E3 C4 04 F7 B3 A2 6A 00 B3 8F 53 00 13 9F 0F 01

-93 9A 0F 01 93 50 0F 01 93 D7 0A 41 8D B7 13 0F

-1B 00 A2 9A 4E 9A 22 99 63 00 AB 7E 7A 8B 35 BB

-33 29 67 00 B3 0C 2E 01 13 94 0C 01 93 98 0C 01

-93 50 04 01 93 D7 08 41 61 BC 33 AF 63 00 B3 80

-EF 01 93 9A 00 01 93 D7 0A 41 B1 BC 33 A9 6E 00

-B3 0C 2E 01 13 94 0C 01 93 57 04 41 15 B4 93 72

-FD 0F 93 DA 8E 00 C2 47 93 DF 12 00 33 C9 57 00

-13 7E 19 00 93 DC 17 00 63 0B 0E 00 E9 76 93 80

-16 00 B3 CD 1C 00 93 9E 0D 01 93 DC 0E 01 33 CD

-9F 01 13 73 1D 00 13 DC 22 00 13 D8 1C 00 63 0B

-03 00 E9 78 13 8F 18 00 33 45 E8 01 93 15 05 01

-13 D8 05 01 B3 43 0C 01 13 F7 13 00 13 D6 32 00

-13 5E 18 00 11 CB 69 7B 93 07 1B 00 33 44 FE 00

-13 19 04 01 13 5E 09 01 B3 4F CE 00 93 F0 1F 00

-93 D6 42 00 13 53 1E 00 63 8B 00 00 E9 7D 93 8E

-1D 00 B3 4C D3 01 13 9D 0C 01 13 53 0D 01 33 4C

-D3 00 93 78 1C 00 13 DF 52 00 13 57 13 00 63 8B

-08 00 69 75 93 05 15 00 33 48 B7 00 93 13 08 01

-13 D7 03 01 33 46 E7 01 13 7B 16 00 93 D7 62 00

-93 50 17 00 63 0B 0B 00 69 79 13 0E 19 00 33 C4

-C0 01 93 1F 04 01 93 D0 0F 01 B3 C6 F0 00 93 FD

-16 00 93 D2 72 00 13 DC 10 00 63 8B 0D 00 E9 7E

-93 8C 1E 00 33 4D 9C 01 13 13 0D 01 13 5C 03 01

-93 78 1C 00 93 53 1C 00 63 8B 58 00 69 7F 13 05

-1F 00 B3 C5 A3 00 13 98 05 01 93 53 08 01 33 C7

-53 01 13 76 17 00 13 DB 1A 00 93 DF 13 00 11 CA

-E9 77 13 89 17 00 33 CE 2F 01 13 14 0E 01 93 5F

-04 01 B3 40 FB 01 93 F6 10 00 93 DD 2A 00 13 D3

-1F 00 91 CA E9 72 93 8E 12 00 B3 4C D3 01 13 9D

-0C 01 13 53 0D 01 33 4C B3 01 93 78 1C 00 13 DF

-3A 00 13 56 13 00 63 8B 08 00 69 75 93 05 15 00

-33 48 B6 00 93 13 08 01 13 D6 03 01 33 47 E6 01

-13 7B 17 00 93 D7 4A 00 93 50 16 00 63 0B 0B 00

-69 79 13 0E 19 00 33 C4 C0 01 93 1F 04 01 93 D0

-0F 01 B3 C6 17 00 93 FD 16 00 93 D2 5A 00 13 DC

-10 00 63 8B 0D 00 E9 7E 93 8C 1E 00 33 4D 9C 01

-13 13 0D 01 13 5C 03 01 B3 C8 82 01 13 FF 18 00

-13 D5 6A 00 13 5B 1C 00 63 0B 0F 00 E9 75 13 88

-15 00 B3 43 0B 01 13 96 03 01 13 5B 06 01 33 47

-AB 00 13 79 17 00 93 DA 7A 00 93 50 1B 00 63 0B

-09 00 E9 77 13 8E 17 00 33 C4 C0 01 93 1F 04 01

-93 D0 0F 01 93 F6 10 00 13 D4 10 00 63 8B 56 01

-E9 7D 93 82 1D 00 B3 4E 54 00 93 9C 0E 01 13 D4

-0C 01 81 4D 81 46 63 80 09 1A 32 4D 92 4D 93 9A

-19 00 6A 8C 33 8B AA 01 13 99 29 00 81 4C 01 4D

-13 93 2C 00 81 45 33 05 B3 01 4A 86 EF 50 C0 58

-AA 86 81 45 5E 85 B3 08 8B 41 13 8F E8 FF 13 58

-1F 00 93 03 18 00 13 F6 33 00 2A 83 E2 88 81 4E

-59 C2 05 47 63 0C E6 04 89 47 63 06 F6 02 03 1E

-0C 00 83 1F 05 00 93 08 2C 00 33 03 55 01 B3 00

-FE 03 93 DE 50 40 93 D2 20 40 13 FF F2 00 13 F8

-FE 07 B3 0E 0F 03 83 93 08 00 03 16 03 00 89 08

-56 93 B3 87 C3 02 13 D7 27 40 13 DE 57 40 93 7F

-F7 00 93 70 FE 07 B3 82 1F 02 96 9E 03 9F 08 00

-03 18 03 00 89 08 56 93 B3 03 0F 03 13 D6 23 40

-93 D7 53 40 13 77 F6 00 13 FE F7 07 B3 0F C7 03

-FE 9E 63 03 1B 0B B3 00 53 01 03 9F 08 00 03 18

-03 00 33 86 50 01 83 93 28 00 03 97 00 00 03 1E

-06 00 33 03 56 01 83 92 48 00 B3 0F 0F 03 83 17

-03 00 83 90 68 00 A1 08 56 93 33 8F E3 02 13 D8

-5F 40 93 D3 2F 40 13 F7 F3 00 93 73 F8 07 B3 82

-C2 03 13 56 5F 40 13 5E 2F 40 93 7F FE 00 13 76

-F6 07 B3 80 F0 02 13 D8 52 40 93 D7 22 40 13 FF

-F7 00 93 72 F8 07 33 07 77 02 13 DE 50 40 93 D3

-20 40 93 F0 F3 00 93 77 FE 07 B3 8F CF 02 BA 9E

-33 06 5F 02 33 88 FE 01 33 8F F0 02 B3 02 C8 00

-B3 8E E2 01 E3 11 1B F7 23 A0 D6 01 93 88 15 00

-91 06 09 05 63 84 19 01 C6 85 75 B5 93 06 1D 00

-56 9C CE 9C 56 9B 63 81 A5 5F 36 8D 51 B5 93 F6

-FA 0F 93 5D 8B 00 B3 C0 86 00 13 F3 10 00 93 DF

-16 00 93 52 14 00 63 0B 03 00 69 7E 93 0E 1E 00

-33 CF D2 01 93 18 0F 01 93 D2 08 01 33 CC 5F 00

-93 7C 1C 00 13 DB 26 00 93 D4 12 00 63 8B 0C 00

-69 77 13 08 17 00 B3 C7 04 01 13 94 07 01 93 54

-04 01 33 45 9B 00 13 76 15 00 93 D5 36 00 93 DB

-14 00 11 CA E9 73 13 8D 13 00 33 C9 AB 01 93 1A

-09 01 93 DB 0A 01 B3 C0 75 01 13 F3 10 00 93 DF

-46 00 93 D2 1B 00 63 0B 03 00 69 7E 93 0E 1E 00

-33 CF D2 01 93 18 0F 01 93 D2 08 01 33 CC 5F 00

-93 7C 1C 00 13 DB 56 00 93 D4 12 00 63 8B 0C 00

-69 77 13 08 17 00 B3 C7 04 01 13 94 07 01 93 54

-04 01 33 C5 64 01 93 75 15 00 13 D6 66 00 93 DB

-14 00 91 C9 E9 73 13 8D 13 00 33 C9 AB 01 93 1A

-09 01 93 DB 0A 01 B3 C0 CB 00 13 F3 10 00 9D 82

-93 D8 1B 00 63 0B 03 00 E9 7F 13 8E 1F 00 B3 CE

-C8 01 13 9F 0E 01 93 58 0F 01 93 F2 18 00 13 D8

-18 00 63 8B D2 00 69 7C 93 0C 1C 00 33 4B 98 01

-13 17 0B 01 13 58 07 01 B3 C7 0D 01 13 F4 17 00

-93 D4 1D 00 13 5D 18 00 11 C8 69 75 93 05 15 00

-33 46 BD 00 93 13 06 01 13 DD 03 01 33 C9 A4 01

-93 7A 19 00 93 DB 2D 00 13 5E 1D 00 63 8B 0A 00

-E9 70 13 83 10 00 B3 46 6E 00 93 9F 06 01 13 DE

-0F 01 B3 CE CB 01 13 FF 1E 00 93 D8 3D 00 13 57

-1E 00 63 0B 0F 00 E9 72 13 8C 12 00 B3 4C 87 01

-13 9B 0C 01 13 57 0B 01 33 C8 E8 00 13 74 18 00

-93 D4 4D 00 93 53 17 00 11 C8 69 75 93 05 15 00

-B3 C7 B3 00 13 96 07 01 93 53 06 01 33 CD 74 00

-13 79 1D 00 93 DA 5D 00 93 DF 13 00 63 0B 09 00

-E9 7B 93 80 1B 00 33 C3 1F 00 93 16 03 01 93 DF

-06 01 33 CE 5F 01 93 7E 1E 00 13 DF 6D 00 13 DB

-1F 00 63 8B 0E 00 E9 78 93 82 18 00 33 4C 5B 00

-93 1C 0C 01 13 DB 0C 01 33 47 6F 01 13 78 17 00

-93 DD 7D 00 93 57 1B 00 63 0B 08 00 69 74 93 04

-14 00 33 C5 97 00 93 15 05 01 93 D7 05 01 13 F6

-17 00 13 D5 17 00 63 0B B6 01 E9 73 13 8D 13 00

-33 49 A5 01 93 1A 09 01 13 D5 0A 01 63 8B 09 12

-32 43 B3 0B 30 41 93 90 19 00 B3 06 13 00 93 92

-1B 00 01 4F 93 9F 2B 00 33 8C 56 00 33 8E 86 41

-93 0E EE FF 93 D8 1E 00 93 8C 18 00 13 FB 7C 00

-E2 87 63 08 0B 08 05 47 63 0C EB 06 09 48 63 02

-0B 07 8D 4D 63 08 BB 05 11 44 63 0E 8B 02 95 44

-63 04 9B 02 99 45 63 0A BB 00 03 56 0C 00 93 07

-2C 00 B3 03 46 41 23 10 7C 00 03 DD 07 00 89 07

-33 09 4D 41 23 9F 27 FF 83 DA 07 00 89 07 B3 8B

-4A 41 23 9F 77 FF 83 D0 07 00 89 07 33 83 40 41

-23 9F 67 FE 03 DE 07 00 89 07 B3 0E 4E 41 23 9F

-D7 FF 83 D8 07 00 89 07 B3 8C 48 41 23 9F 97 FF

-03 DB 07 00 89 07 33 07 4B 41 23 9F E7 FE 63 85

-D7 06 83 DD 07 00 03 D4 27 00 83 D4 47 00 03 D6

-67 00 03 DD 87 00 03 D8 A7 00 83 D5 C7 00 03 D9

-E7 00 B3 83 4D 41 B3 0A 44 41 B3 8B 44 41 B3 00

-46 41 33 03 4D 41 33 0E 48 41 B3 8E 45 41 B3 08

-49 41 23 90 77 00 23 91 57 01 23 92 77 01 23 93

-17 00 23 94 67 00 23 95 C7 01 23 96 D7 01 23 97

-17 01 C1 07 E3 9F D7 F8 05 0F B3 06 FC 41 E3 95

-E9 EF F6 40 66 44 13 1C 05 01 D6 44 46 49 B6 49

-26 4A 96 4A 06 4B F2 5B D2 5C 42 5D B2 5D 13 55

-0C 41 62 5C 25 61 82 80 12 44 D2 4F E2 44 72 4A

-A2 4B 33 0B 30 41 33 07 F4 01 13 18 2B 00 01 4D

-01 4E 81 46 01 46 93 15 3B 00 B3 02 07 01 B3 00

-57 40 93 8D C0 FF 93 DE 2D 00 93 8C 1E 00 13 F3

-3C 00 16 8F 63 0F 03 10 05 4C 63 0A 83 05 89 48

-63 05 13 03 F2 83 03 AE 02 00 93 17 0D 01 13 DD

-07 01 F2 96 63 D1 D4 1C 13 0B AD 00 13 14 0B 01

-13 5D 04 41 81 46 13 8F 42 00 F2 8F 03 2E 0F 00

-93 10 0D 01 93 DD 00 01 F2 96 63 D5 D4 18 93 86

-AD 00 13 9C 06 01 13 5D 0C 41 81 46 11 0F F2 88

-03 2E 0F 00 93 13 0D 01 93 D7 03 01 F2 96 63 D6

-D4 14 13 84 A7 00 93 1F 04 01 93 10 04 01 93 DE

-0F 01 13 DD 00 41 81 46 11 0F 63 1C E7 09 93 03

-16 00 33 87 B2 40 63 0C C5 F8 1E 86 B9 B7 33 2E

-BE 01 83 2A 4F 00 33 83 CC 01 13 1C 03 01 93 53

-0C 41 93 97 03 01 33 0B 5D 01 11 0F 13 D9 07 01

-63 DD 64 09 03 23 4F 00 93 0E A9 00 93 9C 0E 01

-93 DD 0C 41 01 4B 13 9E 0D 01 B3 06 6B 00 13 5C

-0E 01 63 DE D4 08 03 2E 8F 00 93 07 AC 00 13 99

-07 01 93 5A 09 41 81 46 13 9B 0A 01 F2 96 13 54

-0B 01 63 DF D4 08 13 03 A4 00 13 1C 03 01 93 18

-03 01 93 5E 0C 01 13 DD 08 41 81 46 31 0F E3 08

-E7 F7 83 2D 0F 00 93 1E 0D 01 93 DC 0E 01 33 8D

-B6 01 E3 D6 A4 F7 83 2A 4F 00 93 86 AC 00 93 98

-06 01 93 D3 08 41 01 4D 93 97 03 01 33 0B 5D 01

-11 0F 13 D9 07 01 E3 C7 64 F7 33 A4 5D 01 03 23

-4F 00 B3 0F 89 00 93 90 0F 01 93 DD 00 41 13 9E

-0D 01 B3 06 6B 00 13 5C 0E 01 E3 C6 D4 F6 B3 A8

-6A 00 03 2E 8F 00 B3 03 1C 01 13 9D 03 01 93 5A

-0D 41 13 9B 0A 01 F2 96 13 54 0B 01 E3 C5 D4 F6

-B3 2F C3 01 B3 00 F4 01 93 9D 00 01 93 9C 00 01

-93 DE 0D 01 13 DD 0C 41 95 B7 33 AD C8 01 B3 8A

-A7 01 13 99 0A 01 13 9B 0A 01 93 5E 09 01 13 5D

-0B 41 5D BD B3 AE CF 01 B3 8C DD 01 13 93 0C 01

-13 5D 03 41 A5 BD 33 AF C3 01 B3 0A ED 01 13 99

-0A 01 13 5D 09 41 81 B5 92 4A B3 0B 30 41 13 95

-2B 00 56 99 01 4E 81 4A 81 48 81 46 13 96 3B 00

-B3 0D A9 00 33 0D B9 41 13 03 CD FF 13 57 23 00

-93 03 17 00 93 F0 73 00 6E 88 63 88 00 24 85 4F

-63 8E F0 0F 89 4E 63 89 D0 0D 0D 4F 63 84 E0 0B

-91 42 63 8F 50 06 15 4C 63 8A 80 05 99 4C 63 85

-90 03 72 88 03 AE 0D 00 93 97 0A 01 13 DB 07 01

-F2 98 63 DB 14 3B 93 08 AB 00 13 93 08 01 93 5A

-03 41 81 48 13 88 4D 00 72 87 03 2E 08 00 93 93

-0A 01 93 D0 03 01 F2 98 63 DF 14 37 93 82 A0 00

-13 9C 02 01 93 5A 0C 41 81 48 11 08 F2 8C 03 2E

-08 00 93 97 0A 01 13 DB 07 01 F2 98 63 D4 14 35

-93 08 AB 00 13 93 08 01 93 5A 03 41 81 48 11 08

-72 87 03 2E 08 00 93 93 0A 01 93 D0 03 01 F2 98

-63 D9 14 31 93 82 A0 00 13 9C 02 01 93 5A 0C 41

-81 48 11 08 F2 8C 03 2E 08 00 93 97 0A 01 13 DB

-07 01 F2 98 63 DE 14 2D 93 08 AB 00 13 93 08 01

-93 5A 03 41 81 48 11 08 72 87 03 2E 08 00 93 93

-0A 01 93 D0 03 01 F2 98 63 D3 14 2B 93 82 A0 00

-13 9C 02 01 93 5A 0C 41 81 48 11 08 F2 8C 03 2E

-08 00 93 97 0A 01 13 DB 07 01 F2 98 63 D4 14 27

-93 08 AB 00 13 93 08 01 93 93 08 01 13 5B 03 01

-93 DA 03 41 81 48 11 08 63 11 28 13 93 83 16 00

-33 89 CD 40 E3 8D D5 8A 9E 86 5D B5 33 2E 1E 00

-83 2B 48 00 33 8F CE 01 93 12 0F 01 93 D7 02 41

-93 9A 07 01 33 07 7B 01 11 08 13 DD 0A 01 63 D2

-E4 12 03 2F 48 00 93 0F AD 00 93 9E 0F 01 93 D0

-0E 41 01 47 13 9E 00 01 33 0C E7 01 93 52 0E 01

-63 D3 84 13 03 27 88 00 93 8A A2 00 13 9D 0A 01

-93 5B 0D 41 01 4C 93 98 0B 01 B3 00 EC 00 93 D3

-08 01 63 D4 14 12 03 2C C8 00 13 8E A3 00 93 12

-0E 01 13 DF 02 41 81 40 93 1C 0F 01 33 8B 80 01

-93 D7 0C 01 63 D5 64 13 83 20 08 01 93 88 A7 00

-93 93 08 01 13 D7 03 41 01 4B 13 13 07 01 B3 0E

-1B 00 93 5F 03 01 63 D6 D4 13 03 2B 48 01 93 8C

-AF 00 93 97 0C 01 13 DC 07 41 81 4E 93 1B 0C 01

-33 8D 6E 01 93 DA 0B 01 63 D7 A4 13 03 2E 88 01

-13 83 AA 00 93 1F 03 01 93 D0 0F 41 01 4D 93 9E

-00 01 B3 08 CD 01 13 DF 0E 01 63 D8 14 13 93 0B

-AF 00 13 9D 0B 01 13 97 0B 01 13 5B 0D 01 93 5A

-07 41 81 48 71 08 E3 03 28 EF 83 20 08 00 93 9F

-0A 01 93 DE 0F 01 33 8B 18 00 E3 D1 64 EF 83 2B

-48 00 13 8C AE 00 93 1C 0C 01 93 D7 0C 41 01 4B

-93 9A 07 01 33 07 7B 01 11 08 13 DD 0A 01 E3 C2

-E4 EE B3 A8 70 01 03 2F 48 00 33 03 1D 01 93 13

-03 01 93 D0 03 41 13 9E 00 01 33 0C E7 01 93 52

-0E 01 E3 C1 84 EF B3 AC EB 01 03 27 88 00 B3 87

-92 01 13 9B 07 01 93 5B 0B 41 93 98 0B 01 B3 00

-EC 00 93 D3 08 01 E3 C0 14 EE 33 23 EF 00 03 2C

-C8 00 B3 8F 63 00 93 9E 0F 01 13 DF 0E 41 93 1C

-0F 01 33 8B 80 01 93 D7 0C 01 E3 CF 64 ED B3 2B

-87 01 83 20 08 01 B3 8A 77 01 13 9D 0A 01 13 57

-0D 41 13 13 07 01 B3 0E 1B 00 93 5F 03 01 E3 CE

-D4 ED 33 2F 1C 00 03 2B 48 01 33 8E EF 01 93 12

-0E 01 13 DC 02 41 93 1B 0C 01 33 8D 6E 01 93 DA

-0B 01 E3 CD A4 ED 33 A7 60 01 B3 88 EA 00 03 2E

-88 01 93 93 08 01 93 D0 03 41 93 9E 00 01 B3 08

-CD 01 13 DF 0E 01 E3 CC 14 ED B3 22 CB 01 33 0C

-5F 00 93 1C 0C 01 93 17 0C 01 13 DB 0C 01 93 DA

-07 41 C9 BD B3 AB CC 01 B3 0A 7B 01 13 9D 0A 01

-13 97 0A 01 13 5B 0D 01 93 5A 07 41 69 BB B3 2F

-C7 01 B3 8E F0 01 13 9F 0E 01 93 5A 0F 41 B1 BB

-B3 AB CC 01 B3 0A 7B 01 13 9D 0A 01 93 5A 0D 41

-1D B3 B3 2F C7 01 B3 8E F0 01 13 9F 0E 01 93 5A

-0F 41 C5 B9 B3 AB CC 01 B3 0A 7B 01 13 9D 0A 01

-93 5A 0D 41 6D B9 B3 2F C7 01 B3 8E F0 01 13 9F

-0E 01 93 5A 0F 41 51 B1 B3 2B C8 01 B3 0A 7B 01

-13 9D 0A 01 93 5A 0D 41 B1 B1 81 47 01 47 81 4D

-6F E0 1F 84 01 49 81 48 6F E0 1F C8 41 11 14 45

-2E 87 22 C4 4C 45 32 84 50 41 08 41 06 C6 EF E0

-4F B2 B3 46 A4 00 13 77 F5 0F 93 17 05 01 93 F2

-16 00 13 D3 07 01 13 56 17 00 13 58 14 00 63 8B

-02 00 E9 70 93 83 10 00 33 45 78 00 93 15 05 01

-13 D8 05 01 B3 48 C8 00 13 FE 18 00 93 5E 27 00

-93 52 18 00 63 0B 0E 00 69 7F 93 0F 1F 00 33 C4

-F2 01 93 16 04 01 93 D2 06 01 B3 C7 D2 01 93 F0

-17 00 13 56 37 00 93 D8 12 00 63 8B 00 00 E9 73

-93 85 13 00 33 C5 B8 00 13 18 05 01 93 58 08 01

-33 CE C8 00 93 7E 1E 00 13 5F 47 00 93 D7 18 00

-63 8B 0E 00 E9 7F 13 84 1F 00 B3 C6 87 00 93 92

-06 01 93 D7 02 01 B3 C0 E7 01 93 F3 10 00 13 56

-57 00 13 DE 17 00 63 8B 03 00 E9 75 13 88 15 00

-33 45 0E 01 93 18 05 01 13 DE 08 01 B3 4E CE 00

-13 FF 1E 00 93 5F 67 00 93 50 1E 00 63 0B 0F 00

-69 74 93 06 14 00 B3 C2 D0 00 93 97 02 01 93 D0

-07 01 B3 C3 F0 01 13 F6 13 00 1D 83 13 DE 10 00

-11 CA E9 75 13 88 15 00 33 45 0E 01 93 18 05 01

-13 DE 08 01 93 7E 1E 00 93 52 1E 00 63 8B EE 00

-69 7F 93 0F 1F 00 33 C4 F2 01 93 16 04 01 93 D2

-06 01 93 57 83 00 B3 C0 57 00 93 F3 10 00 13 56

-83 00 93 D8 12 00 13 53 93 00 63 8B 03 00 69 77

-93 05 17 00 33 C8 B8 00 13 15 08 01 93 58 05 01

-33 4E 13 01 93 7E 1E 00 13 5F 26 00 93 D0 18 00

-63 8B 0E 00 E9 7F 13 84 1F 00 B3 C6 80 00 93 92

-06 01 93 D0 02 01 B3 C7 E0 01 93 F3 17 00 13 53

-36 00 93 D8 10 00 63 8B 03 00 69 77 93 05 17 00

-33 C8 B8 00 13 15 08 01 93 58 05 01 33 CE 68 00

-93 7E 1E 00 13 5F 46 00 93 D0 18 00 63 8B 0E 00

-E9 7F 13 84 1F 00 B3 C6 80 00 93 92 06 01 93 D0

-02 01 B3 C7 E0 01 93 F3 17 00 13 53 56 00 93 D8

-10 00 63 8B 03 00 69 77 93 05 17 00 33 C8 B8 00

-13 15 08 01 93 58 05 01 33 CE 68 00 93 7E 1E 00

-13 5F 66 00 93 D0 18 00 63 8B 0E 00 E9 7F 13 84

-1F 00 B3 C6 80 00 93 92 06 01 93 D0 02 01 B3 C7

-E0 01 93 F3 17 00 1D 82 13 D5 10 00 63 8B 03 00

-69 73 13 07 13 00 B3 45 E5 00 13 98 05 01 13 55

-08 01 93 78 15 00 05 81 63 8B C8 00 69 7E 93 0E

-1E 00 33 4F D5 01 93 1F 0F 01 13 D5 0F 01 B2 40

-22 44 41 01 82 80 79 71 4A D2 22 D6 26 D4 4E D0

-52 CE 56 CC 5A CA 5E C8 62 C6 66 C4 6A C2 2A 87

-36 89 11 E2 05 46 FD 15 13 F4 C5 FF 13 0A 44 00

-81 47 63 02 07 34 93 82 17 00 B3 86 52 02 13 88

-27 00 13 8E 37 00 13 8F 47 00 93 8E 57 00 93 88

-67 00 13 83 77 00 3E 85 A1 07 93 93 36 00 63 F3

-E3 06 B3 09 08 03 16 85 13 9B 39 00 63 7C EB 04

-B3 0B CE 03 42 85 13 9C 3B 00 63 75 EC 04 B3 0C

-EF 03 72 85 13 9D 3C 00 63 7E ED 02 B3 8F DE 03

-7A 85 93 95 3F 00 63 F7 E5 02 33 84 18 03 76 85

-93 1A 34 00 63 F0 EA 02 B3 04 63 02 46 85 93 92

-34 00 63 F9 E2 00 33 88 F7 02 1A 85 13 1E 38 00

-E3 6B EE F6 33 07 A5 02 AA 8A 93 14 17 00 33 04

-9A 00 63 06 05 26 C1 6E 81 46 81 43 85 4F 33 0F

-8A 40 FD 1E 93 09 F5 FF 33 06 F6 03 93 98 0F 01

-93 D7 08 01 13 93 16 00 33 0B 83 00 13 0C F5 FF

-93 7C 3C 00 B3 0B 6F 01 05 4E 13 88 1F 00 13 5D

-F6 41 93 52 0D 01 33 07 56 00 33 76 D7 01 33 06

-56 40 B3 88 C7 00 13 93 08 01 13 5C 03 01 E2 97

-23 10 8B 01 13 FD F7 0F 23 90 AB 01 93 05 2B 00

-63 76 AE 1E 63 83 0C 0E 63 8C CC 09 89 4B 63 86

-7C 05 B3 0C 06 03 42 08 93 52 08 01 B3 08 BF 00

-93 05 4B 00 13 88 2F 00 09 4E 13 D7 FC 41 13 53

-07 01 33 86 6C 00 33 7C D6 01 33 06 6C 40 B3 87

-C2 00 13 9D 07 01 93 5B 0D 01 B3 8C 5B 00 23 11

-7B 01 13 FB FC 0F 23 90 68 01 B3 02 06 03 93 18

-08 01 13 D3 08 01 33 0C BF 00 05 0E 05 08 89 05

-13 D7 F2 41 93 57 07 01 33 86 F2 00 33 7D D6 01

-33 06 FD 40 B3 0B C3 00 93 9C 0B 01 13 DB 0C 01

-B3 02 6B 00 23 9F 65 FF 93 F8 F2 0F 23 10 1C 01

-33 03 06 03 13 1C 08 01 93 57 0C 01 33 0D BF 00

-89 05 05 0E 05 08 13 57 F3 41 93 5B 07 01 33 06

-73 01 B3 7C D6 01 33 86 7C 41 33 8B C7 00 93 12

-0B 01 93 D8 02 01 33 83 F8 00 23 9F 15 FF 13 7C

-F3 0F 23 10 8D 01 63 73 AE 10 33 06 06 03 93 07

-28 00 13 0B 38 00 13 1D 08 01 93 52 0D 01 93 98

-07 01 13 1D 0B 01 13 D3 08 01 93 58 0D 01 13 07

-18 00 13 5D F6 41 13 5D 0D 01 6A 96 33 76 D6 01

-33 0D A6 41 93 1B 07 01 33 07 ED 02 33 86 A2 01

-13 1D 06 01 13 56 0D 01 B2 92 B3 0C BF 00 23 90

-C5 00 13 FD F2 0F 23 90 AC 01 66 8C 66 86 E6 82

-93 5C F7 41 13 DD 0C 01 6A 97 B3 7C D7 01 33 8D

-AC 41 B3 07 FD 02 93 DB 0B 01 33 87 AB 01 93 1C

-07 01 13 DD 0C 01 EA 9B 23 91 A5 01 13 F7 FB 0F

-23 11 EC 00 A1 05 13 DC F7 41 93 5C 0C 01 E6 97

-33 FD D7 01 B3 0B 9D 41 33 8B 6B 03 33 07 73 01

-13 1C 07 01 93 5C 0C 01 66 93 23 9E 95 FF 93 77

-F3 0F 23 12 F6 00 11 0E 11 08 13 56 FB 41 13 5D

-06 01 B3 0B AB 01 33 FB DB 01 33 06 AB 41 33 87

-C8 00 13 1C 07 01 93 5C 0C 01 E6 98 23 9F 95 FF

-13 F3 F8 0F 23 93 62 00 E3 61 AE F0 85 0F 01 4E

-11 C1 4E 8E 85 03 F2 9F AA 96 E3 E7 A3 DA A2 94

-93 86 F4 FF 23 24 89 00 93 F3 C6 FF 32 54 13 8F

-43 00 23 22 49 01 23 20 59 01 23 26 E9 01 A2 54

-12 59 82 59 72 4A E2 4A 52 4B C2 4B 32 4C A2 4C

-12 4D 45 61 82 80 19 04 FD 5A 7D 55 89 44 A1 BB

-2A 88 63 06 05 3E B3 08 A0 40 13 17 25 00 2E 97

-13 93 28 00 81 45 01 45 81 4F 81 4E 8E 08 B3 06

-E3 00 B3 07 D7 40 93 82 C7 FF 93 D3 22 00 13 8E

-13 00 93 77 7E 00 36 8E 63 80 07 22 05 4F 63 89

-E7 0F 89 42 63 84 57 0C 8D 43 63 81 77 0A 11 4F

-63 8C E7 07 95 42 63 87 57 04 99 43 63 84 77 02

-7E 8E 83 AF 06 00 42 05 13 5F 05 01 FE 9E 63 57

-D6 37 93 0E AF 00 13 9E 0E 01 13 55 0E 41 81 4E

-13 8E 46 00 7E 8F 83 2F 0E 00 42 05 93 52 05 01

-FE 9E 63 5C D6 33 93 8E A2 00 13 95 0E 01 41 85

-81 4E 11 0E FE 82 83 2F 0E 00 93 17 05 01 93 D3

-07 01 FE 9E 63 52 D6 31 93 8E A3 00 93 97 0E 01

-13 D5 07 41 81 4E 11 0E FE 83 83 2F 0E 00 13 1F

-05 01 13 55 0F 01 FE 9E 63 57 D6 2D 93 0E A5 00

-13 9F 0E 01 13 55 0F 41 81 4E 11 0E FE 82 83 2F

-0E 00 42 05 93 53 05 01 FE 9E 63 5D D6 29 93 8E

-A3 00 13 95 0E 01 41 85 81 4E 11 0E FE 83 83 2F

-0E 00 93 17 05 01 13 DF 07 01 FE 9E 63 53 D6 27

-93 0E AF 00 93 97 0E 01 13 D5 07 41 81 4E 11 0E

-7E 8F 83 2F 0E 00 93 12 05 01 13 D5 02 01 FE 9E

-63 58 D6 23 93 0E A5 00 93 92 0E 01 13 D5 02 41

-81 4E 11 0E 63 12 C7 11 85 05 33 87 16 41 E3 10

-B8 EC 82 80 B3 AF 7F 00 B3 07 FF 01 83 2F 4E 00

-93 92 07 01 13 DF 02 41 93 17 0F 01 33 85 FE 01

-11 0E 93 D2 07 01 63 53 A6 10 83 23 4E 00 A9 02

-13 95 02 01 93 57 05 41 01 45 13 9F 07 01 B3 0E

-75 00 93 57 0F 01 63 55 D6 11 83 2F 8E 00 A9 07

-93 9E 07 01 13 DF 0E 41 81 4E 93 12 0F 01 FE 9E

-13 D5 02 01 63 57 D6 11 83 23 CE 00 29 05 93 1E

-05 01 93 D2 0E 41 81 4E 13 9F 02 01 B3 82 7E 00

-93 57 0F 01 63 59 56 10 A9 07 83 2F 0E 01 93 92

-07 01 13 DF 02 41 81 42 13 15 0F 01 B3 8E F2 01

-93 57 05 01 63 5B D6 11 83 23 4E 01 A9 07 93 9E

-07 01 13 D5 0E 41 81 4E 13 1F 05 01 9E 9E 93 52

-0F 01 63 5D D6 11 83 2F 8E 01 A9 02 93 9E 02 01

-13 DF 0E 41 81 4E 13 15 0F 01 FE 9E 93 57 05 01

-63 5F D6 11 13 85 A7 00 93 17 05 01 13 D5 07 41

-81 4E 71 0E E3 02 C7 F1 83 23 0E 00 42 05 13 5F

-05 01 9E 9E E3 50 D6 F1 93 0E AF 00 83 2F 4E 00

-13 95 0E 01 13 5F 05 41 81 4E 93 17 0F 01 33 85

-FE 01 11 0E 93 D2 07 01 E3 41 A6 F0 B3 A3 F3 01

-33 8F 72 00 83 23 4E 00 93 1E 0F 01 93 D7 0E 41

-13 9F 07 01 B3 0E 75 00 93 57 0F 01 E3 4F D6 EF

-B3 AF 7F 00 B3 82 F7 01 83 2F 8E 00 13 95 02 01

-13 5F 05 41 93 12 0F 01 FE 9E 13 D5 02 01 E3 4D

-D6 EF B3 A3 F3 01 33 0F 75 00 83 23 CE 00 93 17

-0F 01 93 D2 07 41 13 9F 02 01 B3 82 7E 00 93 57

-0F 01 E3 4B 56 EE B3 AF 7F 00 33 85 F7 01 83 2F

-0E 01 93 1E 05 01 13 DF 0E 41 13 15 0F 01 B3 8E

-F2 01 93 57 05 01 E3 49 D6 EF B3 A3 F3 01 33 8F

-77 00 83 23 4E 01 93 12 0F 01 13 D5 02 41 13 1F

-05 01 9E 9E 93 52 0F 01 E3 47 D6 EF B3 AF 7F 00

-33 85 F2 01 83 2F 8E 01 93 17 05 01 13 DF 07 41

-13 15 0F 01 FE 9E 93 57 05 01 E3 45 D6 EF B3 A3

-F3 01 33 8F 77 00 93 12 0F 01 13 D5 02 41 D5 B5

-B3 23 FF 01 B3 07 75 00 13 9F 07 01 13 55 0F 41

-C9 BB B3 A2 F3 01 33 05 5F 00 93 13 05 01 13 D5

-03 41 71 BB B3 A7 F2 01 33 8F F3 00 93 12 0F 01

-13 D5 02 41 9D B3 B3 A2 F3 01 B3 07 55 00 93 93

-07 01 13 D5 03 41 15 BB 33 AF F2 01 33 85 E3 01

-93 12 05 01 13 D5 02 41 FD B9 B3 27 FF 01 B3 83

-F2 00 13 9F 03 01 13 55 0F 41 E1 B1 B3 27 FE 01

-B3 02 FF 00 93 93 02 01 13 D5 03 41 51 B9 01 45

-82 80 63 01 05 16 41 11 B3 03 A0 40 13 18 15 00

-22 C6 26 C4 13 94 13 00 4A C2 4E C0 32 98 81 4F

-81 42 8A 03 B3 08 04 01 33 06 18 41 13 03 E6 FF

-93 54 13 00 13 87 14 00 93 97 2F 00 13 79 77 00

-AE 97 46 87 63 0F 09 08 85 49 63 02 39 09 09 4E

-63 07 C9 07 8D 4E 63 0C D9 05 11 4F 63 01 E9 05

-15 46 63 06 C9 02 19 43 63 0B 69 00 83 94 08 00

-13 87 28 00 91 07 33 89 D4 02 23 AE 27 FF 83 19

-07 00 91 07 09 07 33 8E D9 02 23 AE C7 FF 83 1E

-07 00 91 07 09 07 33 8F DE 02 23 AE E7 FF 03 16

-07 00 91 07 09 07 33 03 D6 02 23 AE 67 FE 83 14

-07 00 91 07 09 07 33 89 D4 02 23 AE 27 FF 83 19

-07 00 91 07 09 07 33 8E D9 02 23 AE C7 FF 83 1E

-07 00 91 07 09 07 33 8F DE 02 23 AE E7 FF 63 07

-E8 06 83 19 07 00 03 19 27 00 83 14 47 00 03 1F

-67 00 83 1E 87 00 03 1E A7 00 03 13 C7 00 03 16

-E7 00 B3 89 D9 02 41 07 93 87 07 02 33 09 D9 02

-23 A0 37 FF B3 84 D4 02 23 A2 27 FF 33 0F DF 02

-23 A4 97 FE B3 8E DE 02 23 A6 E7 FF 33 0E DE 02

-23 A8 D7 FF 33 03 D3 02 23 AA C7 FF 33 06 D6 02

-23 AC 67 FE 23 AE C7 FE E3 1D E8 F8 85 02 AA 9F

-33 88 78 40 E3 18 55 EC 32 44 A2 44 12 49 82 49

-41 01 82 80 82 80 63 00 05 1E B3 02 A0 40 93 16

-06 01 93 17 15 00 93 93 12 00 C1 82 33 86 F5 00

-81 4F 8A 02 B3 85 C3 00 33 07 B6 40 13 03 E7 FF

-13 58 13 00 93 08 18 00 13 FE 78 00 AE 87 63 08

-0E 08 85 4E 63 0C DE 07 09 4F 63 02 EE 07 0D 47

-63 08 EE 04 11 43 63 0E 6E 02 15 48 63 04 0E 03

-99 48 63 0A 1E 01 03 DE 05 00 93 87 25 00 B3 8E

-C6 01 23 90 D5 01 03 DF 07 00 89 07 33 87 E6 01

-23 9F E7 FE 03 D3 07 00 89 07 33 88 66 00 23 9F

-07 FF 83 D8 07 00 89 07 33 8E 16 01 23 9F C7 FF

-83 DE 07 00 89 07 33 8F D6 01 23 9F E7 FF 03 D7

-07 00 89 07 33 83 E6 00 23 9F 67 FE 03 D8 07 00

-89 07 B3 88 06 01 23 9F 17 FF 63 09 F6 10 41 11

-22 C6 03 D4 07 00 03 DF 27 00 83 DE 47 00 03 DE

-67 00 03 D3 87 00 83 D8 A7 00 03 D8 C7 00 03 D7

-E7 00 36 94 36 9F B6 9E 36 9E 36 93 B6 98 36 98

-36 97 23 90 87 00 23 91 E7 01 23 92 D7 01 23 93

-C7 01 23 94 67 00 23 95 17 01 23 96 07 01 23 97

-E7 00 C1 07 E3 17 F6 FA 85 0F 33 86 55 40 63 04

-F5 0B B3 85 C3 00 B3 07 B6 40 13 84 E7 FF 13 5F

-14 00 93 0E 1F 00 13 FE 7E 00 AE 87 E3 03 0E F8

-05 43 63 04 6E 06 89 48 63 0A 1E 05 0D 48 63 00

-0E 05 11 47 63 06 EE 02 15 44 63 0C 8E 00 19 4F

-63 1C EE 07 03 D3 07 00 89 07 B3 88 66 00 23 9F

-17 FF 03 D8 07 00 89 07 33 87 06 01 23 9F E7 FE

-03 D4 07 00 89 07 33 8F 86 00 23 9F E7 FF 83 DE

-07 00 89 07 33 8E D6 01 23 9F C7 FF 03 D3 07 00

-89 07 B3 88 66 00 23 9F 17 FF 03 D8 07 00 89 07

-33 87 06 01 23 9F E7 FE E3 15 F6 F0 85 0F 33 86

-55 40 E3 10 F5 F7 32 44 41 01 82 80 85 0F 33 86

-55 40 E3 11 F5 E5 82 80 83 DE 05 00 93 87 25 00

-33 8E D6 01 23 90 C5 01 B5 BF 63 08 05 1A 79 71

-26 D2 AA 84 4E CE 93 99 24 00 4A D0 2E 85 32 89

-81 45 4E 86 22 D4 06 D6 36 84 52 CC 56 CA 5A C8

-5E C6 62 C4 66 C2 EF 30 30 49 93 96 14 00 AA 85

-A2 96 4E 95 01 46 33 83 86 40 93 00 E3 FF 93 D2

-10 00 93 83 12 00 93 17 16 00 93 F8 73 00 CA 97

-22 87 01 4E 63 85 08 0A 05 48 63 87 08 09 09 4A

-63 8B 48 07 8D 4A 63 8F 58 05 11 4B 63 83 68 05

-95 4B 63 87 78 03 19 4C 63 8B 88 01 83 9C 07 00

-03 1E 04 00 89 07 13 07 24 00 33 8E CC 03 83 9E

-07 00 03 1F 07 00 89 07 09 07 B3 8F EE 03 7E 9E

-83 99 07 00 03 13 07 00 89 07 09 07 B3 80 69 02

-06 9E 83 92 07 00 83 13 07 00 89 07 09 07 B3 88

-72 02 46 9E 03 98 07 00 03 1A 07 00 89 07 09 07

-B3 0A 48 03 56 9E 03 9B 07 00 83 1B 07 00 89 07

-09 07 33 0C 7B 03 62 9E 83 9C 07 00 83 1E 07 00

-09 07 89 07 33 8F DC 03 7A 9E 63 85 E6 08 83 9F

-07 00 83 19 07 00 83 90 27 00 83 1A 27 00 B3 88

-3F 03 03 98 47 00 03 1C 47 00 83 92 67 00 83 1B

-67 00 83 9C 87 00 03 1B 87 00 03 9F A7 00 03 1A

-A7 00 83 9E C7 00 B3 8F 50 03 83 19 C7 00 03 93

-E7 00 83 13 E7 00 46 9E 41 07 C1 07 B3 00 88 03

-B3 0A FE 01 33 8C 72 03 33 88 1A 00 B3 82 6C 03

-B3 0B 88 01 B3 08 4F 03 B3 8C 5B 00 33 8B 3E 03

-33 8F 1C 01 33 0A 73 02 B3 0E 6F 01 33 8E 4E 01

-E3 9F E6 F6 23 A0 C5 01 91 05 26 96 E3 15 B5 EA

-B2 50 22 54 92 54 02 59 F2 49 62 4A D2 4A 42 4B

-B2 4B 22 4C 92 4C 45 61 82 80 82 80 5D 71 86 C6

-A2 C4 A6 C2 CA C0 4E DE 52 DC 56 DA 5A D8 5E D6

-62 D4 66 D2 6A D0 6E CE 2E C4 36 C6 63 0F 05 1A

-13 14 15 00 AA 8A B2 89 33 09 86 00 93 14 25 00

-01 4B 81 4B A2 47 13 1F 2B 00 26 86 33 85 E7 01

-81 45 EF 30 70 2C 32 46 2A 8F 81 4F 33 07 39 41

-93 00 E7 FF 93 D2 10 00 13 83 12 00 93 73 73 00

-B2 85 CE 86 81 47 63 86 03 0A 05 48 63 88 03 09

-89 48 63 8C 13 07 0D 4A 63 80 43 07 11 4C 63 84

-83 05 95 4C 63 88 93 03 19 4D 63 8C A3 01 83 9D

-09 00 03 1E 06 00 93 86 29 00 B3 05 86 00 B3 87

-CD 03 83 9E 06 00 03 95 05 00 89 06 A2 95 33 87

-AE 02 BA 97 83 90 06 00 83 92 05 00 89 06 A2 95

-33 83 50 02 9A 97 83 93 06 00 03 98 05 00 89 06

-A2 95 B3 88 03 03 C6 97 03 9A 06 00 03 9C 05 00

-89 06 A2 95 B3 0C 8A 03 E6 97 03 9D 06 00 83 9D

-05 00 89 06 A2 95 33 0E BD 03 F2 97 83 9E 06 00

-03 95 05 00 89 06 A2 95 33 87 AE 02 BA 97 63 03

-D9 0A 03 93 06 00 83 93 05 00 B3 80 85 00 B3 82

-80 00 33 07 73 02 03 9E 00 00 03 9D 26 00 33 88

-82 00 83 9D 02 00 03 9A 46 00 B3 08 88 00 83 1C

-08 00 83 90 66 00 B3 8E 88 00 33 0D CD 03 03 93

-86 00 03 9C 08 00 83 92 A6 00 83 93 0E 00 33 85

-8E 00 03 98 C6 00 B3 05 85 00 83 1E 05 00 BA 97

-33 0A BA 03 03 95 E6 00 03 9E 05 00 B3 8D A7 01

-C1 06 A2 95 B3 80 90 03 B3 88 4D 01 33 07 83 03

-B3 8C 18 00 33 83 72 02 33 8C EC 00 B3 02 D8 03

-B3 03 6C 00 33 08 C5 03 33 8D 53 00 B3 07 0D 01

-E3 11 D9 F6 23 20 FF 00 93 86 1F 00 11 0F 09 06

-63 84 DA 00 B6 8F 59 B5 13 8F 1B 00 A2 99 56 9B

-22 99 63 84 FB 01 FA 8B B1 BD B6 40 26 44 96 44

-06 49 F2 59 62 5A D2 5A 42 5B B2 5B 22 5C 92 5C

-02 5D F2 4D 61 61 82 80 63 04 05 1C 79 71 4E CE

-93 19 15 00 22 D4 26 D2 4A D0 52 CC 56 CA 5A C8

-5E C6 62 C4 06 D6 2A 8B 2E 84 B6 84 B2 8A 33 0A

-36 01 13 19 25 00 81 4B 01 4C 13 98 2B 00 33 05

-04 01 4A 86 81 45 EF 30 30 0D AA 83 A6 88 01 43

-B3 07 5A 41 93 80 E7 FF 93 D2 10 00 93 85 12 00

-13 F6 35 00 46 85 D6 86 81 4E 59 C2 05 47 63 0C

-E6 04 09 4E 63 06 C6 03 83 9E 0A 00 03 9F 08 00

-93 86 2A 00 33 85 38 01 B3 8F EE 03 13 D8 2F 40

-93 D7 5F 40 93 70 F8 00 93 F2 F7 07 B3 8E 50 02

-83 95 06 00 03 16 05 00 89 06 4E 95 33 8E C5 02

-13 57 2E 40 13 5F 5E 40 93 7F F7 00 13 78 FF 07

-B3 87 0F 03 BE 9E 83 90 06 00 83 12 05 00 89 06

-4E 95 B3 85 50 02 13 D6 25 40 13 DE 55 40 13 77

-F6 00 13 7F FE 07 B3 0F E7 03 FE 9E 63 03 DA 0A

-33 08 35 01 83 90 06 00 83 12 05 00 B3 07 38 01

-03 9E 26 00 03 17 08 00 83 9F 07 00 33 85 37 01

-03 96 46 00 33 8F 50 02 03 18 05 00 83 95 66 00

-A1 06 4E 95 B3 00 EE 02 93 52 2F 40 13 5E 5F 40

-13 F7 F2 00 93 77 FE 07 33 06 F6 03 13 DF 50 40

-93 DF 20 40 93 72 FF 07 93 F0 FF 00 B3 85 05 03

-13 5E 56 40 13 58 26 40 93 7F F8 00 13 76 FE 07

-B3 07 F7 02 13 DF 55 40 13 D7 25 40 13 78 F7 00

-93 75 FF 07 B3 80 50 02 BE 9E B3 82 CF 02 33 8E

-1E 00 B3 0F B8 02 33 06 5E 00 B3 0E F6 01 E3 11

-DA F6 23 A0 D3 01 93 06 13 00 91 03 89 08 63 04

-DB 00 36 83 75 B5 93 03 1C 00 CE 9A DA 9B 4E 9A

-63 04 6C 00 1E 8C 51 B5 B2 50 22 54 92 54 02 59

-F2 49 62 4A D2 4A 42 4B B2 4B 22 4C 45 61 82 80

-82 80 13 03 F5 FF 85 47 B2 88 63 FA 67 16 85 05

-93 92 05 01 93 D5 02 01 37 06 04 F0 93 D3 35 00

-9D 4E 93 F6 75 00 01 47 13 06 86 0A A1 4F 11 48

-05 4E 13 0F C0 02 93 F7 33 00 63 8C D6 11 63 68

-D8 12 93 83 D6 FF 93 92 03 01 8A 07 93 D6 02 01

-B3 03 F6 00 63 68 DE 10 83 A6 03 01 A5 47 A1 43

-B3 02 F7 00 63 F5 62 12 41 11 22 C6 35 A0 63 66

-88 0C 93 06 D4 FF 93 97 06 01 13 94 23 00 93 D2

-07 01 B3 03 86 00 63 65 5E 0A 83 A6 03 01 A5 42

-A1 43 BA 92 63 F3 62 08 03 C4 06 00 B3 87 E8 00

-23 80 87 00 03 C7 16 00 A3 80 E7 00 03 C4 26 00

-23 81 87 00 03 C7 36 00 A3 81 E7 00 63 84 03 03

-03 C4 46 00 23 82 87 00 03 C7 56 00 A3 82 E7 00

-03 C4 66 00 23 83 87 00 63 96 F3 01 83 C6 76 00

-A3 83 D7 00 85 05 BE 93 93 97 05 01 93 D5 07 01

-23 80 E3 01 16 87 13 F4 75 00 93 D2 35 00 93 F3

-32 00 E3 16 D4 F7 93 96 23 00 A5 42 B3 07 D6 00

-BA 92 94 5B A1 43 E3 E1 62 F8 63 79 A7 02 32 44

-33 06 E5 40 81 45 33 85 E8 00 41 01 6F 30 C0 61

-83 A6 03 00 95 42 91 43 A9 BF 13 94 23 00 B3 03

-86 00 83 A6 03 02 A5 42 A1 43 A1 B7 32 44 41 01

-82 80 93 92 27 00 B3 03 56 00 83 A6 03 03 A5 47

-A1 43 FD BD 83 A6 03 00 95 47 91 43 D5 BD 93 92

-27 00 B3 06 56 00 94 52 A5 47 A1 43 D5 B5 01 47

-33 06 E5 40 81 45 33 85 E8 00 6F 30 E0 5B E3 69

-A7 FE 82 80 1C 41 2A 8E 01 45 03 C7 07 00 3E 88

-61 C3 93 06 C0 02 13 88 17 00 63 07 D7 24 88 41

-13 06 07 FD 93 72 F6 0F A5 48 13 03 15 00 63 E4

-58 0A 23 A0 65 00 83 C8 17 00 63 8A 08 12 13 87

-27 00 63 85 D8 12 13 86 08 FD 13 0F E0 02 A5 4F

-93 07 C0 02 93 76 F6 0F 63 84 E8 03 63 E4 DF 0A

-83 48 18 00 13 05 17 00 3A 88 63 81 08 10 63 8C

-F8 20 13 86 08 FD 2A 87 93 76 F6 0F E3 90 E8 FF

-03 A3 05 01 15 45 93 03 13 00 23 A8 75 00 03 43

-18 00 3A 88 63 0E 03 02 13 08 C0 02 93 08 17 00

-63 01 03 1D 93 0E 50 04 25 4F 93 0F C0 02 93 07

-03 FD 13 76 F3 0D 93 F6 F7 0F 63 0C D6 0B 63 7F

-DF 14 83 A2 45 01 46 88 05 45 13 87 12 00 D8 C9

-23 20 0E 01 82 80 93 03 B0 02 63 0F 77 02 93 0E

-D0 02 63 0B D7 03 13 0F E0 02 63 04 E7 15 83 AF

-45 00 23 A0 65 00 05 45 93 87 1F 00 DC C1 23 20

-0E 01 82 80 83 A2 05 01 3A 88 05 45 13 87 12 00

-98 C9 23 20 0E 01 82 80 23 A0 65 00 03 C6 17 00

-63 0E 06 14 13 88 27 00 63 0A D6 14 94 45 13 07

-06 FD 93 72 F7 0F 25 45 93 88 16 00 63 7C 55 00

-13 03 E0 02 63 03 66 10 23 A4 15 01 05 45 23 20

-0E 01 82 80 23 A4 15 01 83 C8 27 00 63 89 08 00

-93 0E C0 02 13 07 18 00 E3 9F D8 ED 3A 88 11 45

-85 B7 C8 49 93 03 15 00 23 AA 75 00 83 4E 17 00

-63 89 0E 0E 13 0F C0 02 13 88 18 00 63 84 EE 0F

-83 AF C5 00 93 87 5E FD 13 F6 D7 0F 93 86 1F 00

-D4 C5 09 C6 05 45 23 20 0E 01 82 80 83 C2 18 00

-63 84 02 0C 13 88 28 00 63 80 E2 0D 03 A3 85 01

-13 87 02 FD 13 75 F7 0F 93 0E 13 00 A5 43 23 AC

-D5 01 E3 E9 A3 FC 83 C2 28 00 63 8A 02 08 13 87

-38 00 63 85 E2 09 A5 48 13 0F C0 02 93 8F 02 FD

-13 F6 FF 0F 63 F9 C8 00 D4 41 3A 88 05 45 93 87

-16 00 DC C1 F1 B5 83 42 18 00 13 03 17 00 3A 88

-63 8E 02 04 63 86 E2 07 1A 87 C9 BF 03 43 17 00

-13 88 18 00 46 87 63 0E 03 02 63 0D F3 03 C2 88

-BD BD 23 A0 65 00 03 C3 17 00 63 05 03 02 93 88

-27 00 63 00 D3 02 42 87 B1 BD 23 A4 15 01 03 C3

-27 00 63 09 03 00 93 03 C0 02 93 08 18 00 E3 14

-73 FE 46 88 15 45 AD B5 01 45 9D B5 3A 88 1D 45

-85 B5 46 88 0D 45 A9 BD 19 45 99 BD 09 45 89 BD

-1A 88 1D 45 B1 B5 2A 88 11 45 99 B5 19 71 A2 DC

-A6 DA CA D8 D2 D4 D6 D2 DA D0 DE CE 86 DE CE D6

-2E 89 83 C5 05 00 4A C6 02 D8 02 C8 02 DA 02 DC

-02 DE 82 C0 82 C2 82 C4 82 C6 02 CA 02 CC 02 CE

-02 D0 02 D2 02 D4 02 D6 04 18 2A 8A B2 8B 36 8B

-BA 8A 3E 84 E3 8C 05 1C 93 09 C1 00 A6 85 4E 85

-15 33 AA 87 93 92 27 00 98 08 33 03 57 00 B2 46

-83 23 03 FC A6 85 03 C6 06 00 13 88 13 00 23 20

-03 FD 4E 85 35 CA FD 39 AA 88 13 9E 28 00 93 0E

-01 05 33 8F CE 01 B2 47 83 2F 0F FC A6 85 83 C2

-07 00 13 87 1F 00 23 20 EF FC 4E 85 63 86 02 04

-D1 39 2A 83 93 13 23 00 94 08 33 86 76 00 B2 48

-03 28 06 FC A6 85 03 CE 08 00 93 0E 18 00 23 20

-D6 FD 4E 85 63 02 0E 02 75 31 0A 05 8C 08 33 8F

-A5 00 B2 47 83 2F 0F FC 83 C2 07 00 13 87 1F 00

-23 20 EF FC E3 94 02 F6 4A C6 4A 9A 83 45 09 00

-E3 7C 49 13 93 00 C0 02 4A 83 B3 C9 75 01 63 80

-15 02 23 00 33 01 B2 43 33 83 53 01 1A C6 63 7C

-43 01 83 45 03 00 B3 C9 75 01 E3 94 15 FE 56 93

-1A C6 E3 68 43 FF 83 4B 09 00 4A C6 93 09 C1 00

-63 83 0B 0A A6 85 4E 85 35 39 AA 86 13 96 26 00

-13 08 01 05 B3 08 C8 00 B2 4E 03 AE 08 FC A6 85

-03 CF 0E 00 93 0F 1E 00 23 A0 F8 FD 4E 85 63 09

-0F 06 09 39 AA 87 93 92 27 00 98 08 33 03 57 00

-B2 4B 83 23 03 FC A6 85 83 C6 0B 00 13 86 13 00

-23 20 C3 FC 4E 85 A9 C6 F5 36 2A 88 93 18 28 00

-13 0E 01 05 B3 0E 1E 01 B2 4F 03 AF 0E FC A6 85

-83 C7 0F 00 93 02 1F 00 23 A0 5E FC 4E 85 8D C3

-D1 36 0A 05 8C 08 33 83 A5 00 32 47 83 23 03 FC

-83 4B 07 00 93 86 13 00 23 20 D3 FC E3 94 0B F6

-4A C6 63 72 49 03 93 00 C0 02 83 49 09 00 33 C6

-69 01 E3 87 19 02 23 00 C9 00 32 48 33 09 58 01

-4A C6 E3 64 49 FF 69 7A 14 08 26 86 13 0E 1A 00

-83 AE 06 00 93 53 14 00 33 C4 8E 00 13 FF FE 0F

-93 9F 0E 01 93 78 14 00 93 D2 0F 01 13 55 1F 00

-63 88 08 00 B3 C7 C3 01 93 95 07 01 93 D3 05 01

-33 C3 A3 00 13 77 13 00 93 5B 2F 00 93 D0 13 00

-19 C7 B3 CA C0 01 13 9B 0A 01 93 50 0B 01 B3 C9

-70 01 13 F9 19 00 13 58 3F 00 93 DF 10 00 63 08

-09 00 33 CA CF 01 13 14 0A 01 93 5F 04 01 B3 C8

-0F 01 13 F5 18 00 93 55 4F 00 13 D7 1F 00 19 C5

-B3 47 C7 01 93 93 07 01 13 D7 03 01 33 C3 E5 00

-93 7B 13 00 93 5A 5F 00 93 59 17 00 63 88 0B 00

-33 CB C9 01 93 10 0B 01 93 D9 00 01 33 C9 59 01

-13 78 19 00 13 5A 6F 00 13 D5 19 00 63 08 08 00

-33 44 C5 01 93 1F 04 01 13 D5 0F 01 B3 48 AA 00

-93 F5 18 00 13 5F 7F 00 13 57 15 00 99 C5 B3 47

-C7 01 93 93 07 01 13 D7 03 01 13 73 17 00 13 5B

-17 00 63 08 E3 01 B3 4B CB 01 93 9A 0B 01 13 DB

-0A 01 93 D0 82 00 B3 C9 60 01 13 F9 19 00 13 D8

-82 00 93 5F 1B 00 93 D2 92 00 63 08 09 00 33 CA

-CF 01 13 14 0A 01 93 5F 04 01 33 C5 F2 01 93 75

-15 00 93 58 28 00 93 D3 1F 00 99 C5 33 CF C3 01

-93 17 0F 01 93 D3 07 01 33 C7 78 00 13 73 17 00

-93 5B 38 00 93 D0 13 00 63 08 03 00 B3 CA C0 01

-13 9B 0A 01 93 50 0B 01 B3 C9 1B 00 13 F9 19 00

-93 52 48 00 93 DF 10 00 63 08 09 00 33 CA CF 01

-13 14 0A 01 93 5F 04 01 33 C5 F2 01 93 75 15 00

-93 58 58 00 93 D3 1F 00 99 C5 33 CF C3 01 93 17

-0F 01 93 D3 07 01 33 C7 78 00 13 73 17 00 93 5B

-68 00 93 D0 13 00 63 08 03 00 B3 CA C0 01 13 9B

-0A 01 93 50 0B 01 B3 C9 1B 00 13 F9 19 00 13 58

-78 00 13 D4 10 00 63 08 09 00 B3 42 C4 01 13 9A

-02 01 13 54 0A 01 93 7F 14 00 13 5F 14 00 63 88

-0F 01 33 45 CF 01 93 15 05 01 13 DF 05 01 93 D8

-0E 01 B3 C7 E8 01 93 F3 F8 0F 13 F7 17 00 93 DE

-0E 01 13 D3 13 00 13 5B 1F 00 19 C7 B3 4B CB 01

-93 9A 0B 01 13 DB 0A 01 B3 40 63 01 93 F9 10 00

-13 D9 23 00 13 5A 1B 00 63 88 09 00 33 48 CA 01

-93 12 08 01 13 DA 02 01 33 44 49 01 93 7F 14 00

-13 D5 33 00 93 57 1A 00 63 88 0F 00 B3 C5 C7 01

-13 9F 05 01 93 57 0F 01 B3 48 F5 00 13 F7 18 00

-13 D3 43 00 13 DB 17 00 19 C7 B3 4B CB 01 93 9A

-0B 01 13 DB 0A 01 B3 40 63 01 93 F9 10 00 13 D9

-53 00 13 5A 1B 00 63 88 09 00 33 48 CA 01 93 12

-08 01 13 DA 02 01 33 44 49 01 93 7F 14 00 13 D5

-63 00 93 57 1A 00 63 88 0F 00 B3 C5 C7 01 13 9F

-05 01 93 57 0F 01 B3 48 F5 00 13 F7 18 00 93 D3

-73 00 93 DA 17 00 19 C7 33 C3 CA 01 93 1B 03 01

-93 DA 0B 01 13 FB 1A 00 13 D9 1A 00 63 08 7B 00

-B3 40 C9 01 93 99 00 01 13 D9 09 01 13 D8 8E 00

-B3 42 28 01 13 FA 12 00 13 D4 8E 00 13 5F 19 00

-93 DE 9E 00 63 08 0A 00 B3 4F CF 01 13 95 0F 01

-13 5F 05 01 B3 C5 EE 01 93 F8 15 00 13 57 24 00

-13 53 1F 00 63 88 08 00 B3 47 C3 01 93 93 07 01

-13 D3 03 01 B3 4B 67 00 93 FA 1B 00 13 5B 34 00

-13 59 13 00 63 88 0A 00 B3 40 C9 01 93 99 00 01

-13 D9 09 01 33 48 2B 01 93 72 18 00 13 5A 44 00

-13 55 19 00 63 88 02 00 B3 4E C5 01 93 9F 0E 01

-13 D5 0F 01 33 4F AA 00 93 75 1F 00 93 58 54 00

-93 53 15 00 99 C5 33 C7 C3 01 93 17 07 01 93 D3

-07 01 33 C3 78 00 93 7B 13 00 93 5A 64 00 93 D9

-13 00 63 88 0B 00 33 CB C9 01 93 10 0B 01 93 D9

-00 01 33 C9 3A 01 13 78 19 00 1D 80 93 DE 19 00

-63 08 08 00 B3 C2 CE 01 13 9A 02 01 93 5E 0A 01

-93 FF 1E 00 93 D8 1E 00 63 88 8F 00 33 C5 C8 01

-13 1F 05 01 93 58 0F 01 0C 42 93 D9 18 00 33 C7

-15 01 93 F3 F5 0F 13 93 05 01 93 77 17 00 93 5B

-03 01 93 DA 13 00 99 C7 33 CB C9 01 93 10 0B 01

-93 D9 00 01 33 C9 3A 01 13 78 19 00 93 D2 23 00

-93 DE 19 00 63 08 08 00 33 C4 CE 01 13 1A 04 01

-93 5E 0A 01 B3 CF D2 01 13 F5 1F 00 13 DF 33 00

-13 D3 1E 00 19 C5 B3 48 C3 01 13 97 08 01 13 53

-07 01 B3 47 6F 00 93 FA 17 00 13 DB 43 00 13 59

-13 00 63 88 0A 00 B3 40 C9 01 93 99 00 01 13 D9

-09 01 33 48 2B 01 93 72 18 00 13 DA 53 00 93 5F

-19 00 63 88 02 00 33 C4 CF 01 93 1E 04 01 93 DF

-0E 01 33 45 FA 01 13 7F 15 00 93 D8 63 00 93 DA

-1F 00 63 08 0F 00 33 C7 CA 01 13 13 07 01 93 5A

-03 01 B3 C7 58 01 13 FB 17 00 93 D3 73 00 13 D9

-1A 00 63 08 0B 00 B3 40 C9 01 93 99 00 01 13 D9

-09 01 13 78 19 00 13 54 19 00 63 08 78 00 B3 42

-C4 01 13 9A 02 01 13 54 0A 01 93 DE 8B 00 B3 CF

-8E 00 13 FF 1F 00 13 D5 8B 00 13 53 14 00 93 DB

-9B 00 63 08 0F 00 B3 48 C3 01 13 97 08 01 13 53

-07 01 B3 CA 6B 00 93 F7 1A 00 13 5B 25 00 93 59

-13 00 99 C7 B3 C3 C9 01 93 90 03 01 93 D9 00 01

-33 49 3B 01 93 72 19 00 13 58 35 00 93 DE 19 00

-63 88 02 00 33 CA CE 01 13 14 0A 01 93 5E 04 01

-B3 4F D8 01 13 FF 1F 00 93 5B 45 00 13 D3 1E 00

-63 08 0F 00 B3 48 C3 01 13 97 08 01 13 53 07 01

-B3 CA 6B 00 93 F7 1A 00 13 5B 55 00 93 59 13 00

-99 C7 B3 C3 C9 01 93 90 03 01 93 D9 00 01 33 49

-3B 01 93 72 19 00 13 58 65 00 93 DE 19 00 63 88

-02 00 33 CA CE 01 13 14 0A 01 93 5E 04 01 B3 4F

-D8 01 13 FF 1F 00 1D 81 13 D7 1E 00 63 08 0F 00

-B3 4B C7 01 93 98 0B 01 13 D7 08 01 13 73 17 00

-13 5B 17 00 63 08 A3 00 B3 4A CB 01 93 97 0A 01

-13 DB 07 01 93 D3 05 01 B3 C0 63 01 93 F9 F3 0F

-13 F9 10 00 C1 81 93 D2 19 00 13 54 1B 00 63 08

-09 00 33 48 C4 01 13 1A 08 01 13 54 0A 01 B3 CE

-82 00 93 FF 1E 00 13 DF 29 00 93 58 14 00 63 88

-0F 00 33 C5 C8 01 93 1B 05 01 93 D8 0B 01 33 47

-1F 01 13 73 17 00 93 DA 39 00 93 D3 18 00 63 08

-03 00 B3 C7 C3 01 13 9B 07 01 93 53 0B 01 B3 C0

-7A 00 13 F9 10 00 93 D2 49 00 13 D4 13 00 63 08

-09 00 33 48 C4 01 13 1A 08 01 13 54 0A 01 B3 CE

-82 00 93 FF 1E 00 13 DF 59 00 93 58 14 00 63 88

-0F 00 33 C5 C8 01 93 1B 05 01 93 D8 0B 01 33 47

-1F 01 13 73 17 00 93 DA 69 00 93 D3 18 00 63 08

-03 00 B3 C7 C3 01 13 9B 07 01 93 53 0B 01 B3 C0

-7A 00 13 F9 10 00 93 D9 79 00 13 DA 13 00 63 08

-09 00 B3 42 CA 01 13 98 02 01 13 5A 08 01 93 7E

-1A 00 13 5F 1A 00 63 88 3E 01 33 44 CF 01 93 1F

-04 01 13 DF 0F 01 13 D5 85 00 B3 4B E5 01 93 F8

-1B 00 13 D7 85 00 93 57 1F 00 A5 81 63 88 08 00

-33 C3 C7 01 93 1A 03 01 93 D7 0A 01 33 CB F5 00

-93 73 1B 00 93 50 27 00 93 D2 17 00 63 88 03 00

-33 C9 C2 01 93 19 09 01 93 D2 09 01 33 C8 50 00

-13 7A 18 00 93 5E 37 00 13 DF 12 00 63 08 0A 00

-33 44 CF 01 93 1F 04 01 13 DF 0F 01 33 C5 EE 01

-93 7B 15 00 93 58 47 00 93 5A 1F 00 63 88 0B 00

-B3 C5 CA 01 13 93 05 01 93 5A 03 01 B3 C7 58 01

-13 FB 17 00 93 53 57 00 93 D9 1A 00 63 08 0B 00

-B3 C0 C9 01 13 99 00 01 93 59 09 01 B3 C2 33 01

-13 F8 12 00 13 5A 67 00 93 DF 19 00 63 08 08 00

-B3 CE CF 01 13 94 0E 01 93 5F 04 01 33 4F FA 01

-13 75 1F 00 1D 83 13 D3 1F 00 19 C5 B3 4B C3 01

-93 98 0B 01 13 D3 08 01 93 75 13 00 13 54 13 00

-63 88 E5 00 B3 4A C4 01 93 97 0A 01 13 D4 07 01

-91 06 11 06 E3 96 D4 80 F6 50 22 85 66 54 D6 54

-46 59 B6 59 26 5A 96 5A 06 5B F6 4B 09 61 82 80

-56 99 4A C6 63 63 49 FD 6F F0 EF FD 33 0A A9 00

-63 6A 49 ED 6F F0 2F FD 63 96 05 F0 6F F0 AF FC

-01 11 26 CA 83 14 05 00 06 CE 22 CC 93 D7 74 40

-4A C8 4E C6 93 F0 17 00 63 8B 00 00 F2 40 62 44

-42 49 B2 49 13 F5 F4 07 D2 44 05 61 82 80 13 D7

-34 40 93 72 F7 00 13 93 42 00 93 F6 74 00 03 D4

-85 03 AA 89 2E 89 33 67 53 00 63 87 06 50 05 45

-63 83 A6 28 13 95 04 01 41 81 A6 8E B3 CF 8E 00

-93 F0 FE 0F 93 F8 1F 00 13 DF 10 00 93 53 14 00

-63 8B 08 00 69 77 93 02 17 00 B3 C7 53 00 13 93

-07 01 93 53 03 01 33 48 7F 00 93 75 18 00 93 D6

-20 00 93 D8 13 00 91 C9 69 76 13 04 16 00 33 CE

-88 00 93 1F 0E 01 93 D8 0F 01 33 CF 16 01 13 77

-1F 00 93 D2 30 00 93 D6 18 00 11 CB 69 73 93 03

-13 00 B3 C7 76 00 13 98 07 01 93 56 08 01 B3 C5

-D2 00 13 F4 15 00 13 D6 40 00 13 D7 16 00 11 C8

-69 7E 93 0F 1E 00 B3 48 F7 01 13 9F 08 01 13 57

-0F 01 B3 42 C7 00 13 F3 12 00 93 D3 50 00 13 54

-17 00 63 0B 03 00 69 78 93 06 18 00 B3 47 D4 00

-93 95 07 01 13 D4 05 01 33 46 74 00 13 7E 16 00

-93 DF 60 00 13 53 14 00 63 0B 0E 00 E9 78 13 8F

-18 00 33 47 E3 01 93 12 07 01 13 D3 02 01 B3 43

-F3 01 13 F8 13 00 93 D0 70 00 13 5E 13 00 63 0B

-08 00 E9 76 93 85 16 00 B3 47 BE 00 13 94 07 01

-13 5E 04 01 13 76 1E 00 93 52 1E 00 63 0B 16 00

-E9 7F 93 88 1F 00 33 CF 12 01 13 17 0F 01 93 52

-07 01 21 81 33 43 55 00 93 73 F5 0F 13 78 13 00

-93 D0 13 00 13 DE 12 00 63 0B 08 00 E9 76 93 85

-16 00 B3 47 BE 00 13 94 07 01 13 5E 04 01 33 46

-1E 00 93 7F 16 00 93 D8 23 00 13 53 1E 00 63 8B

-0F 00 69 7F 13 07 1F 00 B3 42 E3 00 13 95 02 01

-13 53 05 01 33 C8 68 00 93 70 18 00 93 D5 33 00

-93 5F 13 00 63 8B 00 00 E9 76 13 84 16 00 B3 C7

-8F 00 13 9E 07 01 93 5F 0E 01 33 C6 F5 01 93 78

-16 00 13 DF 43 00 13 D8 1F 00 63 8B 08 00 69 77

-93 02 17 00 33 45 58 00 13 13 05 01 13 58 03 01

-B3 40 0F 01 93 F5 10 00 13 D4 53 00 93 58 18 00

-91 C9 E9 76 13 8E 16 00 B3 C7 C8 01 93 9F 07 01

-93 D8 0F 01 33 46 14 01 13 7F 16 00 13 D7 63 00

-93 D0 18 00 63 0B 0F 00 E9 72 13 85 12 00 33 C3

-A0 00 13 18 03 01 93 50 08 01 B3 45 17 00 13 F4

-15 00 93 D3 73 00 93 D8 10 00 11 C8 E9 76 13 8E

-16 00 B3 C7 C8 01 93 9F 07 01 93 D8 0F 01 33 C6

-13 01 13 7F 16 00 13 D8 18 00 63 0B 0F 00 69 77

-93 02 17 00 33 45 58 00 13 13 05 01 13 58 03 01

-13 F5 FE 07 93 F4 04 F0 F2 40 62 44 B3 6E 95 00

-23 1C 09 03 13 E9 0E 08 23 90 29 01 D2 44 42 49

-B2 49 05 61 82 80 D0 55 94 59 03 25 89 02 CC 59

-EF B0 3F F5 33 46 A4 00 93 78 F5 0F 93 1E 05 01

-13 7E 16 00 13 DF 0E 01 93 DF 18 00 13 53 14 00

-63 0B 0E 00 E9 77 93 80 17 00 33 47 13 00 93 12

-07 01 13 D3 02 01 B3 46 F3 01 93 F3 16 00 13 D8

-28 00 13 5E 13 00 63 8B 03 00 E9 75 13 84 15 00

-33 45 8E 00 13 16 05 01 13 5E 06 01 B3 4E 0E 01

-93 FF 1E 00 93 D7 38 00 93 53 1E 00 63 8B 0F 00

-E9 70 13 87 10 00 B3 C2 E3 00 13 93 02 01 93 53

-03 01 B3 C6 F3 00 13 F8 16 00 93 D5 48 00 93 DE

-13 00 63 0B 08 00 69 74 13 06 14 00 33 C5 CE 00

-13 1E 05 01 93 5E 0E 01 B3 CF BE 00 93 F7 1F 00

-93 D0 58 00 13 D8 1E 00 91 CB 69 77 93 02 17 00

-33 43 58 00 93 13 03 01 13 D8 03 01 B3 46 18 00

-93 F5 16 00 13 D4 68 00 93 5F 18 00 91 C9 69 76

-13 0E 16 00 33 C5 CF 01 93 1E 05 01 93 DF 0E 01

-B3 C7 8F 00 93 F0 17 00 93 D8 78 00 13 D8 1F 00

-63 8B 00 00 69 77 93 02 17 00 33 43 58 00 93 13

-03 01 13 D8 03 01 93 76 18 00 13 55 18 00 63 8B

-16 01 E9 75 13 84 15 00 33 46 85 00 13 1E 06 01

-13 55 0E 01 93 5E 8F 00 B3 4F D5 01 93 F0 1F 00

-93 58 8F 00 93 53 15 00 13 5F 9F 00 63 8B 00 00

-E9 77 13 87 17 00 B3 C2 E3 00 13 93 02 01 93 53

-03 01 33 C8 E3 01 93 75 18 00 93 D6 28 00 93 DE

-13 00 91 C9 69 74 13 06 14 00 33 CE CE 00 13 15

-0E 01 93 5E 05 01 B3 CF DE 00 93 F0 1F 00 13 DF

-38 00 93 D3 1E 00 63 8B 00 00 E9 77 13 87 17 00

-B3 C2 E3 00 13 93 02 01 93 53 03 01 33 C8 E3 01

-93 75 18 00 13 D4 48 00 93 DE 13 00 91 C9 E9 76

-13 86 16 00 33 CE CE 00 13 15 0E 01 93 5E 05 01

-B3 CF 8E 00 93 F0 1F 00 13 DF 58 00 93 D3 1E 00

-63 8B 00 00 E9 77 13 87 17 00 B3 C2 E3 00 13 93

-02 01 93 53 03 01 33 C8 E3 01 93 75 18 00 13 D4

-68 00 93 DE 13 00 91 C9 E9 76 13 86 16 00 33 CE

-CE 00 13 15 0E 01 93 5E 05 01 B3 CF 8E 00 93 F0

-1F 00 93 D8 78 00 13 D3 1E 00 63 8B 00 00 69 7F

-93 07 1F 00 33 47 F3 00 93 12 07 01 13 D3 02 01

-93 73 13 00 13 55 13 00 63 8B 13 01 69 78 93 05

-18 00 33 44 B5 00 93 16 04 01 13 D5 06 01 03 56

-C9 03 13 1E 05 01 03 54 89 03 93 5E 0E 41 E3 17

-06 B0 23 1E A9 02 19 B6 93 03 20 02 3A 88 63 54

-77 00 13 08 20 02 83 25 49 01 83 16 29 00 03 16

-09 00 03 25 89 01 A2 87 13 77 F8 0F EF F0 0F 85

-83 55 E9 03 13 14 05 01 93 5E 04 41 03 54 89 03

-E3 96 05 AC 23 1F A9 02 D1 B4 01 11 4A C8 03 19

-05 00 06 CE 22 CC 93 57 79 40 26 CA 52 C4 4E C6

-93 F0 17 00 2E 8A B2 84 13 74 F9 07 63 9E 00 28

-13 57 39 40 93 72 F7 00 93 96 42 00 13 73 79 00

-03 54 86 03 AA 89 33 E7 D2 00 63 00 03 7C 05 45

-63 0D A3 52 13 15 09 01 41 81 CA 8E B3 4F D4 01

-93 F0 FE 0F 93 F8 1F 00 13 DF 10 00 93 53 14 00

-63 8B 08 00 69 77 93 02 17 00 B3 C7 53 00 13 93

-07 01 93 53 03 01 33 C8 E3 01 93 75 18 00 93 D6

-20 00 93 D8 13 00 91 C9 69 76 13 04 16 00 33 CE

-88 00 93 1F 0E 01 93 D8 0F 01 33 CF D8 00 13 77

-1F 00 93 D2 30 00 93 D6 18 00 11 CB 69 73 93 03

-13 00 B3 C7 76 00 13 98 07 01 93 56 08 01 B3 C5

-56 00 13 F4 15 00 13 D6 40 00 13 D7 16 00 11 C8

-69 7E 93 0F 1E 00 B3 48 F7 01 13 9F 08 01 13 57

-0F 01 B3 42 C7 00 13 F3 12 00 93 D3 50 00 13 54

-17 00 63 0B 03 00 69 78 93 06 18 00 B3 47 D4 00

-93 95 07 01 13 D4 05 01 33 46 74 00 13 7E 16 00

-93 DF 60 00 13 53 14 00 63 0B 0E 00 E9 78 13 8F

-18 00 33 47 E3 01 93 12 07 01 13 D3 02 01 B3 43

-F3 01 13 F8 13 00 93 D0 70 00 13 5E 13 00 63 0B

-08 00 E9 76 93 85 16 00 B3 47 BE 00 13 94 07 01

-13 5E 04 01 13 76 1E 00 93 52 1E 00 63 0B 16 00

-E9 7F 93 88 1F 00 33 CF 12 01 13 17 0F 01 93 52

-07 01 21 81 33 43 55 00 93 73 F5 0F 13 78 13 00

-93 D0 13 00 13 DE 12 00 63 0B 08 00 E9 76 93 85

-16 00 B3 47 BE 00 13 94 07 01 13 5E 04 01 33 46

-1E 00 93 7F 16 00 93 D8 23 00 13 53 1E 00 63 8B

-0F 00 69 7F 13 07 1F 00 B3 42 E3 00 13 95 02 01

-13 53 05 01 33 48 13 01 93 70 18 00 93 D5 33 00

-93 5F 13 00 63 8B 00 00 E9 76 13 84 16 00 B3 C7

-8F 00 13 9E 07 01 93 5F 0E 01 33 C6 BF 00 93 78

-16 00 13 DF 43 00 13 D8 1F 00 63 8B 08 00 69 77

-93 02 17 00 33 45 58 00 13 13 05 01 13 58 03 01

-B3 40 E8 01 93 F5 10 00 13 D4 53 00 93 58 18 00

-91 C9 E9 76 13 8E 16 00 B3 C7 C8 01 93 9F 07 01

-93 D8 0F 01 33 C6 88 00 13 7F 16 00 13 D7 63 00

-93 D0 18 00 63 0B 0F 00 E9 72 13 85 12 00 33 C3

-A0 00 13 18 03 01 93 50 08 01 B3 C5 E0 00 13 F4

-15 00 93 D3 73 00 93 D8 10 00 11 C8 E9 76 13 8E

-16 00 B3 C7 C8 01 93 9F 07 01 93 D8 0F 01 33 C6

-13 01 13 7F 16 00 13 D8 18 00 63 0B 0F 00 69 77

-93 02 17 00 33 45 58 00 13 13 05 01 13 58 03 01

-13 F4 FE 07 13 79 09 F0 B3 6E 24 01 23 9C 04 03

-93 E0 0E 08 23 90 19 00 03 19 0A 00 93 59 79 40

-93 F5 19 00 13 78 F9 07 63 9F 05 28 93 53 39 40

-13 FE F3 00 93 16 4E 00 93 77 79 00 83 D9 84 03

-33 67 DE 00 63 8A 07 54 85 42 63 86 57 58 13 15

-09 01 41 81 4A 88 B3 45 38 01 93 70 F8 0F 93 FE

-15 00 13 D7 10 00 93 D8 19 00 63 8B 0E 00 E9 73

-13 8E 13 00 B3 CF C8 01 93 97 0F 01 93 D8 07 01

-33 4F 17 01 93 72 1F 00 93 D6 20 00 93 DE 18 00

-63 8B 02 00 69 76 93 09 16 00 33 C3 3E 01 93 15

-03 01 93 DE 05 01 33 C7 DE 00 93 73 17 00 13 DE

-30 00 93 D2 1E 00 63 8B 03 00 E9 7F 93 88 1F 00

-B3 C7 12 01 13 9F 07 01 93 52 0F 01 B3 C6 C2 01

-13 F6 16 00 93 D9 40 00 93 D3 12 00 11 CA 69 73

-93 05 13 00 B3 CE B3 00 13 97 0E 01 93 53 07 01

-33 CE 33 01 93 7F 1E 00 93 D8 50 00 13 D6 13 00

-63 8B 0F 00 69 7F 93 02 1F 00 B3 47 56 00 93 96

-07 01 13 D6 06 01 B3 49 16 01 13 F3 19 00 93 DE

-60 00 93 5F 16 00 63 0B 03 00 E9 75 13 87 15 00

-B3 C3 EF 00 13 9E 03 01 93 5F 0E 01 B3 C8 FE 01

-13 FF 18 00 93 D0 70 00 93 D9 1F 00 63 0B 0F 00

-E9 72 93 86 12 00 B3 C7 D9 00 13 96 07 01 93 59

-06 01 13 F3 19 00 13 DE 19 00 63 0B 13 00 E9 7E

-93 85 1E 00 33 47 BE 00 93 13 07 01 13 DE 03 01

-21 81 B3 4F C5 01 93 78 F5 0F 13 FF 1F 00 93 D0

-18 00 93 59 1E 00 63 0B 0F 00 E9 72 93 86 12 00

-B3 C7 D9 00 13 96 07 01 93 59 06 01 33 C3 19 00

-93 7E 13 00 13 D7 28 00 93 DF 19 00 63 8B 0E 00

-E9 75 93 83 15 00 33 CE 7F 00 13 15 0E 01 93 5F

-05 01 33 CF EF 00 93 70 1F 00 93 D2 38 00 13 D3

-1F 00 63 8B 00 00 E9 76 13 86 16 00 B3 47 C3 00

-93 99 07 01 13 D3 09 01 B3 4E 53 00 13 F7 1E 00

-93 D3 48 00 13 5F 13 00 11 CB E9 75 13 8E 15 00

-33 45 CF 01 93 1F 05 01 13 DF 0F 01 B3 C0 E3 01

-93 F2 10 00 93 D6 58 00 93 5E 1F 00 63 8B 02 00

-69 76 93 09 16 00 B3 C7 3E 01 13 93 07 01 93 5E

-03 01 33 C7 D6 01 93 73 17 00 13 DE 68 00 93 D0

-1E 00 63 8B 03 00 E9 75 13 85 15 00 B3 CF A0 00

-13 9F 0F 01 93 50 0F 01 B3 42 1E 00 13 F6 12 00

-93 D8 78 00 93 DE 10 00 11 CA E9 76 93 89 16 00

-B3 C7 3E 01 13 93 07 01 93 5E 03 01 33 C7 D8 01

-93 73 17 00 13 DF 1E 00 63 8B 03 00 69 7E 93 05

-1E 00 33 45 BF 00 93 1F 05 01 13 DF 0F 01 13 78

-F8 07 13 79 09 F0 B3 60 28 01 23 9C E4 03 93 E4

-00 08 23 10 9A 00 F2 40 33 05 04 41 62 44 D2 44

-42 49 B2 49 22 4A 05 61 82 80 14 5A CC 58 50 56

-88 54 EF B0 0F F1 33 46 A4 00 93 78 F5 0F 93 1E

-05 01 13 7E 16 00 13 DF 0E 01 93 DF 18 00 13 53

-14 00 63 0B 0E 00 E9 77 93 80 17 00 33 47 13 00

-93 12 07 01 13 D3 02 01 B3 46 F3 01 93 F3 16 00

-13 D8 28 00 13 5E 13 00 63 8B 03 00 E9 75 13 84

-15 00 33 45 8E 00 13 16 05 01 13 5E 06 01 B3 4E

-0E 01 93 FF 1E 00 93 D7 38 00 93 53 1E 00 63 8B

-0F 00 E9 70 13 87 10 00 B3 C2 E3 00 13 93 02 01

-93 53 03 01 B3 C6 F3 00 13 F8 16 00 93 D5 48 00

-93 DE 13 00 63 0B 08 00 69 74 13 06 14 00 33 C5

-CE 00 13 1E 05 01 93 5E 0E 01 B3 CF BE 00 93 F7

-1F 00 93 D0 58 00 13 D8 1E 00 91 CB 69 77 93 02

-17 00 33 43 58 00 93 13 03 01 13 D8 03 01 B3 46

-18 00 93 F5 16 00 13 D4 68 00 93 5F 18 00 91 C9

-69 76 13 0E 16 00 33 C5 CF 01 93 1E 05 01 93 DF

-0E 01 B3 C7 8F 00 93 F0 17 00 93 D8 78 00 13 D8

-1F 00 63 8B 00 00 69 77 93 02 17 00 33 43 58 00

-93 13 03 01 13 D8 03 01 93 76 18 00 13 55 18 00

-63 8B 16 01 E9 75 13 84 15 00 33 46 85 00 13 1E

-06 01 13 55 0E 01 93 5E 8F 00 B3 4F D5 01 93 F0

-1F 00 93 58 8F 00 93 53 15 00 13 5F 9F 00 63 8B

-00 00 E9 77 13 87 17 00 B3 C2 E3 00 13 93 02 01

-93 53 03 01 33 C8 E3 01 93 75 18 00 93 D6 28 00

-93 DE 13 00 91 C9 69 74 13 06 14 00 33 CE CE 00

-13 15 0E 01 93 5E 05 01 B3 CF DE 00 93 F0 1F 00

-13 DF 38 00 93 D3 1E 00 63 8B 00 00 E9 77 13 87

-17 00 B3 C2 E3 00 13 93 02 01 93 53 03 01 33 C8

-E3 01 93 75 18 00 13 D4 48 00 93 DE 13 00 91 C9

-E9 76 13 86 16 00 33 CE CE 00 13 15 0E 01 93 5E

-05 01 B3 CF 8E 00 93 F0 1F 00 13 DF 58 00 93 D3

-1E 00 63 8B 00 00 E9 77 13 87 17 00 B3 C2 E3 00

-13 93 02 01 93 53 03 01 33 C8 E3 01 93 75 18 00

-13 D4 68 00 93 DE 13 00 91 C9 E9 76 13 86 16 00

-33 CE CE 00 13 15 0E 01 93 5E 05 01 B3 CF 8E 00

-93 F0 1F 00 93 D8 78 00 13 D3 1E 00 63 8B 00 00

-69 7F 93 07 1F 00 33 47 F3 00 93 12 07 01 13 D3

-02 01 93 73 13 00 13 55 13 00 63 8B 13 01 69 78

-93 05 18 00 33 44 B5 00 93 16 04 01 13 D5 06 01

-03 D6 C4 03 13 1E 05 01 03 D4 84 03 93 5E 0E 41

-E3 1E 06 84 23 9E A4 02 91 B8 93 03 20 02 3A 88

-63 54 77 00 13 08 20 02 CC 48 83 96 24 00 03 96

-04 00 88 4C A2 87 13 77 F8 0F EF E0 3F 81 83 D5

-E4 03 13 14 05 01 93 5E 04 41 03 D4 84 03 E3 9F

-05 80 23 9F A4 02 19 B8 93 0F 20 02 BA 88 63 54

-F7 01 93 08 20 02 03 96 04 00 83 96 24 00 CC 48

-88 4C CE 87 13 F7 F8 0F EF E0 4F FD 03 D6 E4 03

-13 1F 05 01 83 D9 84 03 13 58 0F 41 E3 15 06 A8

-23 9F A4 02 49 B4 CC 58 94 58 D0 54 88 54 EF B0

-4F C1 33 43 35 01 13 77 F5 0F 13 78 13 00 42 05

-93 5E 05 01 93 55 17 00 93 D7 19 00 63 0B 08 00

-E9 70 93 89 10 00 B3 C3 37 01 13 9E 03 01 93 57

-0E 01 B3 C6 F5 00 93 FF 16 00 93 58 27 00 13 D8

-17 00 63 8B 0F 00 69 76 13 0F 16 00 B3 42 E8 01

-13 93 02 01 13 58 03 01 33 45 18 01 93 75 15 00

-93 50 37 00 93 5F 18 00 91 C9 E9 79 93 83 19 00

-33 CE 7F 00 93 17 0E 01 93 DF 07 01 B3 C6 F0 01

-93 F8 16 00 13 5F 47 00 13 D5 1F 00 63 8B 08 00

-69 76 93 02 16 00 33 43 55 00 13 18 03 01 13 55

-08 01 B3 45 AF 00 93 F0 15 00 93 59 57 00 93 58

-15 00 63 8B 00 00 E9 73 13 8E 13 00 B3 C7 C8 01

-93 9F 07 01 93 D8 0F 01 B3 C6 38 01 13 FF 16 00

-93 52 67 00 93 D5 18 00 63 0B 0F 00 69 76 13 03

-16 00 33 C8 65 00 13 15 08 01 93 55 05 01 B3 C0

-55 00 93 F9 10 00 1D 83 93 D8 15 00 63 8B 09 00

-E9 73 13 8E 13 00 B3 C7 C8 01 93 9F 07 01 93 D8

-0F 01 93 F6 18 00 13 D8 18 00 63 8B E6 00 69 7F

-93 02 1F 00 33 46 58 00 13 13 06 01 13 58 03 01

-13 D5 8E 00 B3 45 05 01 93 F0 15 00 93 D9 8E 00

-93 5F 18 00 93 DE 9E 00 63 8B 00 00 69 77 93 03

-17 00 33 CE 7F 00 93 17 0E 01 93 DF 07 01 B3 C8

-FE 01 13 FF 18 00 93 D6 29 00 13 D5 1F 00 63 0B

-0F 00 E9 72 13 86 12 00 33 43 C5 00 13 18 03 01

-13 55 08 01 B3 C5 A6 00 93 F0 15 00 93 DE 39 00

-93 5F 15 00 63 8B 00 00 69 77 93 03 17 00 33 CE

-7F 00 93 17 0E 01 93 DF 07 01 B3 C8 FE 01 13 FF

-18 00 93 D2 49 00 13 D5 1F 00 63 0B 0F 00 E9 76

-13 86 16 00 33 43 C5 00 13 18 03 01 13 55 08 01

-B3 C5 A2 00 93 F0 15 00 93 DE 59 00 93 5F 15 00

-63 8B 00 00 69 77 93 03 17 00 33 CE 7F 00 93 17

-0E 01 93 DF 07 01 B3 C8 FE 01 13 FF 18 00 93 D2

-69 00 13 D5 1F 00 63 0B 0F 00 E9 76 13 86 16 00

-33 43 C5 00 13 18 03 01 13 55 08 01 B3 C5 A2 00

-93 F0 15 00 93 D9 79 00 93 5F 15 00 63 8B 00 00

-E9 7E 13 87 1E 00 B3 C3 EF 00 13 9E 03 01 93 5F

-0E 01 93 F7 1F 00 13 D5 1F 00 63 8B 37 01 E9 78

-13 8F 18 00 B3 42 E5 01 93 96 02 01 13 D5 06 01

-03 D6 C4 03 13 13 05 01 83 D9 84 03 13 58 03 41

-E3 13 06 80 23 9E A4 02 6F F0 EF FF 03 1E 45 00

-39 71 22 DC 6A C8 06 DE 26 DA 4A D8 4E D6 52 D4

-56 D2 5A D0 5E CE 62 CC 66 CA 6E C6 40 51 2A 8D

-E3 52 C0 0B 2E 8B 01 48 81 4E 81 4C 01 4F 13 7C

-F8 0F 63 4D 0B 38 E3 0D 04 08 A2 87 19 A0 9C 43

-99 C7 83 A2 47 00 83 93 22 00 E3 9A 63 FF 22 8A

-03 26 0A 00 01 47 23 20 EA 00 52 84 3D C6 08 42

-23 20 46 01 52 87 32 84 2D C1 14 41 10 C1 32 87

-2A 84 A1 CE 84 42 88 C2 2A 87 36 84 B9 C4 03 A9

-04 00 94 C0 36 87 26 84 63 01 09 04 83 28 09 00

-23 20 99 00 26 87 4A 84 63 89 08 02 83 A9 08 00

-23 A0 28 01 4A 87 46 84 63 81 09 02 03 AA 09 00

-23 A0 19 01 46 87 4E 84 63 09 0A 00 03 26 0A 00

-4E 87 23 20 EA 00 52 84 59 FA 63 8E 07 30 83 AA

-47 00 13 83 1C 00 93 1B 03 01 83 9D 0A 00 93 DC

-0B 01 93 FF 1D 00 63 8B 0F 00 13 D7 9D 40 93 70

-17 00 06 9F 93 12 0F 01 13 DF 02 01 83 A3 07 00

-63 8A 03 00 03 A6 03 00 90 C3 1C 40 23 A0 F3 00

-23 20 74 00 63 47 0B 00 05 0B 13 1A 0B 01 13 5B

-0A 41 05 08 93 1A 08 01 13 D8 0A 41 E3 11 0E F1

-13 9E 2C 00 33 03 DE 41 B3 0B 6F 00 93 9C 0B 01

-93 D4 0C 01 63 49 B0 66 03 2D 04 00 A2 8D 83 2A

-0D 00 83 2B 4D 00 83 A7 4A 00 03 A5 0A 00 23 22

-FD 00 23 A2 7A 01 23 20 AD 00 23 A0 0A 00 63 48

-0B 22 03 AC 4D 00 83 AD 0D 00 83 18 2C 00 63 82

-68 25 E3 98 0D FE 03 2B 04 00 83 2D 0B 00 6E 87

-83 29 44 00 69 78 93 00 18 00 03 9E 09 00 13 13

-0E 01 93 5C 03 01 13 DD 8C 00 13 7F FE 0F 93 15

-8E 01 13 15 8D 01 13 5A 1F 00 13 5C 2F 00 13 59

-3F 00 93 53 4F 00 93 52 5F 00 93 5F 6F 00 13 56

-7F 00 93 D7 85 41 93 59 85 41 13 DF 9C 00 93 DE

-AC 00 13 DE BC 00 13 D3 CC 00 93 D8 DC 00 13 D8

-EC 00 93 D6 FC 00 B3 CC 97 00 13 FD 1C 00 13 D5

-14 00 63 08 0D 00 B3 44 15 00 93 95 04 01 13 D5

-05 01 B3 4C AA 00 13 FD 1C 00 05 81 63 08 0D 00

-B3 44 15 00 93 95 04 01 13 D5 05 01 B3 4C AC 00

-13 FD 1C 00 05 81 63 08 0D 00 B3 44 15 00 93 95

-04 01 13 D5 05 01 B3 4C A9 00 13 FD 1C 00 05 81

-63 08 0D 00 B3 44 15 00 93 95 04 01 13 D5 05 01

-B3 CC A3 00 13 FD 1C 00 05 81 63 08 0D 00 B3 44

-15 00 93 95 04 01 13 D5 05 01 B3 CC A2 00 13 FD

-1C 00 05 81 63 08 0D 00 B3 44 15 00 93 95 04 01

-13 D5 05 01 B3 CC AF 00 13 FD 1C 00 05 81 63 08

-0D 00 B3 44 15 00 93 95 04 01 13 D5 05 01 93 7C

-15 00 93 55 15 00 63 88 CC 00 33 CD 15 00 93 14

-0D 01 93 D5 04 01 33 C5 B9 00 93 7C 15 00 85 81

-63 88 0C 00 33 CD 15 00 93 14 0D 01 93 D5 04 01

-33 45 BF 00 93 7C 15 00 85 81 63 88 0C 00 33 CD

-15 00 93 14 0D 01 93 D5 04 01 33 C5 BE 00 93 7C

-15 00 85 81 63 88 0C 00 33 CD 15 00 93 14 0D 01

-93 D5 04 01 33 45 BE 00 93 7C 15 00 85 81 63 88

-0C 00 33 CD 15 00 93 14 0D 01 93 D5 04 01 33 45

-B3 00 93 7C 15 00 85 81 63 88 0C 00 33 CD 15 00

-93 14 0D 01 93 D5 04 01 33 C5 B8 00 93 7C 15 00

-85 81 63 88 0C 00 33 CD 15 00 93 14 0D 01 93 D5

-04 01 33 45 B8 00 93 7C 15 00 85 81 63 88 0C 00

-33 CD 15 00 93 14 0D 01 93 D5 04 01 13 F5 15 00

-93 D4 15 00 63 08 D5 00 B3 CC 14 00 13 9D 0C 01

-93 54 0D 01 63 8A 0D 06 83 AD 0D 00 A9 BD 83 AE

-4D 00 83 AD 0D 00 83 C6 0E 00 63 8C 86 01 E3 8C

-0D DC 83 AE 4D 00 83 AD 0D 00 83 C6 0E 00 E3 98

-86 FF 03 2B 04 00 03 27 0B 00 D9 B3 63 02 04 50

-A2 87 21 A0 9C 43 E3 8C 07 C6 D8 43 83 40 07 00

-E3 9A 80 FF AD B1 48 43 85 0E 93 96 0E 01 83 04

-15 00 93 DE 06 01 13 F9 14 00 B3 08 2F 01 93 99

-08 01 13 DF 09 01 39 B3 83 2D 4B 00 01 4E 01 43

-23 A2 BA 01 23 22 7B 01 23 A0 EA 00 23 20 5B 01

-85 49 81 4C 05 4D 93 FA 79 00 85 0C A2 87 01 47

-63 8B 0A 04 05 4B 63 83 6A 05 89 4B 63 8D 7A 03

-8D 40 63 87 1A 02 11 4A 63 81 4A 03 15 4C 63 8B

-8A 01 19 49 63 85 2A 01 1C 40 05 47 A5 C7 9C 43

-05 07 AD C3 9C 43 05 07 B1 CF 9C 43 05 07 B9 CB

-9C 43 05 07 A1 CB 9C 43 05 07 A9 C7 9C 43 05 07

-B1 C3 63 01 37 05 9C 43 05 07 BA 83 85 CF 9C 43

-05 07 8D CB 9C 43 13 87 23 00 8D C7 9C 43 13 87

-33 00 8D C3 9C 43 13 87 43 00 89 CF 9C 43 13 87

-53 00 89 CB 9C 43 13 87 63 00 89 C7 9C 43 13 87

-73 00 E1 F3 CE 86 25 C7 AD CE A5 CF 83 2D 44 00

-83 AA 47 00 03 9B 0D 00 83 9B 2A 00 83 95 2D 00

-93 10 0B 01 13 DC 00 01 13 75 0B F0 13 59 8C 00

-B3 63 25 01 23 90 7D 00 83 98 0A 00 B3 8E 75 41

-13 98 08 01 13 5A 08 01 93 F2 08 F0 93 5F 8A 00

-33 E6 F2 01 23 90 CA 00 63 55 D0 03 3E 8F 9C 43

-FD 16 63 0D 0E 00 23 20 EE 01 7A 8E 51 FF 91 CE

-85 C3 3E 8F FD 16 9C 43 E3 17 0E FE 7A 83 7A 8E

-F5 B7 22 8F 7D 17 00 40 E9 BF 99 C3 3E 84 E1 BD

-23 20 0E 00 63 8E AC 01 86 09 63 08 03 00 9A 87

-01 4E 01 43 81 4C 3E 84 7D BD 23 20 00 00 02 90

-03 27 03 00 63 01 07 22 03 24 43 00 E9 72 93 8C

-12 00 83 1F 04 00 13 96 0F 01 93 56 06 01 93 DE

-86 00 13 FF FF 0F 13 9E 8F 01 13 93 8E 01 93 55

-8E 41 13 5D 1F 00 93 5D 2F 00 93 5A 3F 00 13 5B

-4F 00 93 5B 5F 00 93 50 6F 00 13 5C 7F 00 13 55

-83 41 13 D9 96 00 93 D3 A6 00 93 D7 B6 00 93 D9

-C6 00 93 D8 D6 00 13 D8 E6 00 13 D4 F6 00 33 CA

-95 00 93 72 1A 00 13 D6 14 00 63 88 02 00 B3 44

-96 01 93 9F 04 01 13 D6 0F 01 B3 46 CD 00 13 FF

-16 00 13 53 16 00 63 08 0F 00 B3 4E 93 01 13 9E

-0E 01 13 53 0E 01 33 CA 6D 00 93 72 1A 00 13 56

-13 00 63 88 02 00 B3 44 96 01 93 9F 04 01 13 D6

-0F 01 B3 C6 CA 00 13 FF 16 00 13 53 16 00 63 08

-0F 00 B3 4E 93 01 13 9E 0E 01 13 53 0E 01 33 4A

-6B 00 93 72 1A 00 13 56 13 00 63 88 02 00 B3 44

-96 01 93 9F 04 01 13 D6 0F 01 B3 C6 CB 00 13 FF

-16 00 13 53 16 00 63 08 0F 00 B3 4E 93 01 13 9E

-0E 01 13 53 0E 01 33 CA 60 00 93 72 1A 00 13 56

-13 00 63 88 02 00 B3 44 96 01 93 9F 04 01 13 D6

-0F 01 93 76 16 00 13 5E 16 00 63 88 86 01 33 4F

-9E 01 93 1E 0F 01 13 DE 0E 01 33 43 C5 01 13 7A

-13 00 93 5F 1E 00 63 08 0A 00 B3 C2 9F 01 93 94

-02 01 93 DF 04 01 33 46 F9 01 93 76 16 00 13 DE

-1F 00 99 C6 33 4F 9E 01 93 1E 0F 01 13 DE 0E 01

-33 C3 C3 01 13 7A 13 00 93 5F 1E 00 63 08 0A 00

-B3 C2 9F 01 93 94 02 01 93 DF 04 01 33 C6 F7 01

-93 76 16 00 13 DE 1F 00 99 C6 33 4F 9E 01 93 1E

-0F 01 13 DE 0E 01 33 C3 C9 01 13 7A 13 00 93 5F

-1E 00 63 08 0A 00 B3 C2 9F 01 93 94 02 01 93 DF

-04 01 33 C6 F8 01 93 76 16 00 13 DE 1F 00 99 C6

-33 4F 9E 01 93 1E 0F 01 13 DE 0E 01 33 43 C8 01

-13 7A 13 00 93 5F 1E 00 63 08 0A 00 B3 C2 9F 01

-93 94 02 01 93 DF 04 01 13 F6 1F 00 93 D4 1F 00

-63 08 86 00 B3 C6 94 01 13 9F 06 01 93 54 0F 01

-18 43 E3 16 07 E4 F2 50 62 54 42 59 B2 59 22 5A

-92 5A 02 5B F2 4B 62 4C D2 4C 42 4D B2 4D 26 85

-D2 54 21 61 82 80 05 4A E3 09 04 DA 81 4C 81 4A

-81 4B 93 75 7A 00 85 0B 22 86 01 49 B1 C9 85 4D

-63 83 B5 05 89 4F 63 8D F5 03 0D 47 63 87 E5 02

-91 40 63 81 15 02 95 42 63 8B 55 00 19 4F 63 85

-E5 01 10 40 05 49 25 C6 10 42 05 09 2D C2 10 42

-05 09 31 CE 10 42 05 09 39 CA 10 42 05 09 21 CA

-10 42 05 09 29 C6 10 42 05 09 31 C2 63 01 49 05

-10 42 05 09 CA 83 05 CE 10 42 05 09 0D CA 10 42

-13 89 23 00 0D C6 10 42 13 89 33 00 0D C2 10 42

-13 89 43 00 09 CE 10 42 13 89 53 00 09 CA 10 42

-13 89 63 00 09 C6 10 42 13 89 73 00 61 F2 A2 89

-D2 8D 32 84 63 07 09 02 63 80 0D 04 15 CC 4C 40

-03 A5 49 00 6A 86 EF E0 5F C8 63 57 A0 02 A2 87

-00 40 FD 1D 63 8F 0C 00 23 A0 FC 00 BE 8C E3 1D

-09 FC 63 80 0D 02 19 CC A2 87 FD 1D 00 40 E3 95

-0C FE BE 8A BE 8C E5 B7 CE 87 7D 19 83 A9 09 00

-D1 BF 01 F8 23 A0 0C 00 05 44 63 89 8B 00 06 0A

-56 84 DD BD 01 4C 2E 8B 81 44 AD B8 56 84 AD B8

-83 27 00 00 02 90 01 11 26 CA 44 4D 22 CC 4A C8

-4E C6 06 CE 69 79 23 2C 05 02 23 2E 05 02 AA 89

-01 44 05 09 63 8E 04 40 85 45 4E 85 EF F0 0F F0

-83 D7 89 03 13 77 F5 0F 13 56 17 00 B3 C6 A7 00

-93 F2 16 00 93 D3 17 00 63 88 02 00 B3 C0 23 01

-13 93 00 01 93 53 03 01 B3 C5 C3 00 13 F8 15 00

-93 58 27 00 13 DF 13 00 63 08 08 00 33 4E 2F 01

-93 1E 0E 01 13 DF 0E 01 B3 4F 1F 01 93 F6 1F 00

-93 52 37 00 93 50 1F 00 99 C6 B3 C7 20 01 13 96

-07 01 93 50 06 01 33 C3 50 00 93 73 13 00 93 55

-47 00 13 DE 10 00 63 88 03 00 33 48 2E 01 93 18

-08 01 13 DE 08 01 B3 4E BE 00 13 FF 1E 00 93 5F

-57 00 93 57 1E 00 63 08 0F 00 B3 C6 27 01 93 92

-06 01 93 D7 02 01 33 C6 F7 01 93 70 16 00 13 53

-67 00 13 D8 17 00 63 88 00 00 B3 43 28 01 93 95

-03 01 13 D8 05 01 B3 48 68 00 13 FE 18 00 1D 83

-93 5F 18 00 63 08 0E 00 B3 CE 2F 01 13 9F 0E 01

-93 5F 0F 01 93 F6 1F 00 13 D6 1F 00 63 88 E6 00

-B3 42 26 01 93 97 02 01 13 D6 07 01 21 81 B3 40

-C5 00 13 73 F5 0F 93 F3 10 00 93 55 13 00 13 5E

-16 00 63 88 03 00 33 48 2E 01 93 18 08 01 13 DE

-08 01 33 47 BE 00 93 7E 17 00 13 5F 23 00 93 52

-1E 00 63 88 0E 00 B3 CF 22 01 93 96 0F 01 93 D2

-06 01 B3 C7 E2 01 13 F6 17 00 13 55 33 00 93 D5

-12 00 19 C6 B3 C0 25 01 93 93 00 01 93 D5 03 01

-33 C8 A5 00 93 78 18 00 13 5E 43 00 13 DF 15 00

-63 88 08 00 33 47 2F 01 93 1E 07 01 13 DF 0E 01

-B3 4F CF 01 93 F2 1F 00 93 56 53 00 13 55 1F 00

-63 88 02 00 B3 47 25 01 13 96 07 01 13 55 06 01

-B3 40 D5 00 93 F3 10 00 93 55 63 00 13 5E 15 00

-63 88 03 00 33 48 2E 01 93 18 08 01 13 DE 08 01

-33 47 BE 00 93 7E 17 00 13 53 73 00 93 52 1E 00

-63 88 0E 00 33 CF 22 01 93 1F 0F 01 93 D2 0F 01

-B3 C6 62 00 13 F6 16 00 93 D0 12 00 19 C6 B3 C7

-20 01 13 95 07 01 93 50 05 01 FD 55 23 9C 19 02

-4E 85 EF F0 AF CF 83 D3 89 03 13 78 F5 0F 13 5E

-18 00 B3 C5 A3 00 93 F8 15 00 13 D3 13 00 63 88

-08 00 33 47 23 01 93 1E 07 01 13 D3 0E 01 33 4F

-C3 01 93 7F 1F 00 93 52 28 00 93 57 13 00 63 88

-0F 00 B3 C6 27 01 13 96 06 01 93 57 06 01 B3 C0

-57 00 93 F3 10 00 93 55 38 00 13 D7 17 00 63 88

-03 00 B3 48 27 01 13 9E 08 01 13 57 0E 01 B3 4E

-B7 00 13 F3 1E 00 13 5F 48 00 93 57 17 00 63 08

-03 00 B3 CF 27 01 93 92 0F 01 93 D7 02 01 B3 C6

-E7 01 93 F0 16 00 13 56 58 00 93 D8 17 00 63 88

-00 00 B3 C3 28 01 93 95 03 01 93 D8 05 01 33 CE

-C8 00 13 77 1E 00 93 5E 68 00 93 DF 18 00 19 C7

-33 C3 2F 01 13 1F 03 01 93 5F 0F 01 B3 C2 DF 01

-93 F6 12 00 13 58 78 00 13 D6 1F 00 99 C6 B3 47

-26 01 93 90 07 01 13 D6 00 01 93 73 16 00 13 5E

-16 00 63 88 03 01 B3 45 2E 01 93 98 05 01 13 DE

-08 01 21 81 33 47 C5 01 93 7E F5 0F 13 73 17 00

-13 DF 1E 00 13 58 1E 00 63 08 03 00 B3 4F 28 01

-93 92 0F 01 13 D8 02 01 B3 46 E8 01 93 F0 16 00

-13 D6 2E 00 93 55 18 00 63 88 00 00 B3 C7 25 01

-93 93 07 01 93 D5 03 01 B3 C8 C5 00 13 FE 18 00

-13 D5 3E 00 13 DF 15 00 63 08 0E 00 33 47 2F 01

-13 13 07 01 13 5F 03 01 B3 4F AF 00 93 F2 1F 00

-13 D8 4E 00 13 56 1F 00 63 88 02 00 B3 46 26 01

-93 90 06 01 13 D6 00 01 B3 47 06 01 93 F3 17 00

-93 D5 5E 00 13 55 16 00 63 88 03 00 B3 48 25 01

-13 9E 08 01 13 55 0E 01 33 47 B5 00 13 73 17 00

-13 DF 6E 00 13 58 15 00 63 08 03 00 B3 4F 28 01

-93 92 0F 01 13 D8 02 01 B3 46 E8 01 93 F0 16 00

-93 DE 7E 00 93 53 18 00 63 88 00 00 33 C6 23 01

-93 17 06 01 93 D3 07 01 B3 C5 D3 01 93 F8 15 00

-13 D7 13 00 63 88 08 00 33 4E 27 01 13 15 0E 01

-13 57 05 01 23 9C E9 02 01 CC 05 04 E3 96 84 BE

-F2 40 62 44 D2 44 42 49 B2 49 01 45 05 61 82 80

-23 9D E9 02 05 44 E3 85 84 FE 05 44 F1 B6 95 47

-63 E5 A7 04 B7 02 04 F0 0A 05 13 83 02 09 B3 03

-65 00 83 A5 03 00 82 85 37 16 04 F0 03 25 86 D9

-82 80 B7 18 04 F0 03 A5 08 DA 82 80 37 18 04 F0

-03 25 C8 D9 82 80 37 07 04 F0 03 25 07 0F 82 80

-B7 06 04 F0 03 A5 C6 0E 82 80 01 45 82 80 B3 46

-B5 00 93 F2 16 00 13 57 15 00 13 D6 15 00 63 8B

-02 00 69 73 93 03 13 00 B3 47 76 00 93 95 07 01

-13 D6 05 01 33 48 E6 00 93 78 18 00 13 5E 25 00

-93 52 16 00 63 8B 08 00 E9 7E 13 8F 1E 00 B3 CF

-E2 01 93 96 0F 01 93 D2 06 01 33 C7 C2 01 13 73

-17 00 93 53 35 00 93 D8 12 00 63 0B 03 00 E9 75

-13 86 15 00 B3 C7 C8 00 13 98 07 01 93 58 08 01

-33 CE 78 00 93 7E 1E 00 13 5F 45 00 13 D3 18 00

-63 8B 0E 00 E9 7F 93 86 1F 00 B3 42 D3 00 13 97

-02 01 13 53 07 01 B3 43 E3 01 93 F5 13 00 13 56

-55 00 93 5E 13 00 91 C9 69 78 93 08 18 00 B3 C7

-1E 01 13 9E 07 01 93 5E 0E 01 33 CF CE 00 93 7F

-1F 00 93 56 65 00 93 D5 1E 00 63 8B 0F 00 E9 72

-13 87 12 00 33 C3 E5 00 93 13 03 01 93 D5 03 01

-33 C6 D5 00 13 78 16 00 93 58 75 00 13 DF 15 00

-63 0B 08 00 E9 77 13 8E 17 00 33 45 CF 01 93 1E

-05 01 13 DF 0E 01 93 7F 1F 00 13 55 1F 00 63 8B

-1F 01 E9 76 93 82 16 00 33 47 55 00 13 13 07 01

-13 55 03 01 82 80 B3 C6 A5 00 13 77 F5 0F 93 F2

-16 00 AA 87 13 56 17 00 13 D8 15 00 63 8B 02 00

-E9 75 13 83 15 00 B3 43 68 00 13 95 03 01 13 58

-05 01 B3 48 C8 00 13 FE 18 00 93 5E 27 00 93 55

-18 00 63 0B 0E 00 69 7F 93 0F 1F 00 B3 C6 F5 01

-93 92 06 01 93 D5 02 01 33 C6 D5 01 13 73 16 00

-93 53 37 00 93 DE 15 00 63 0B 03 00 69 78 93 08

-18 00 33 C5 1E 01 13 1E 05 01 93 5E 0E 01 33 CF

-7E 00 93 7F 1F 00 93 56 47 00 93 D3 1E 00 63 8B

-0F 00 E9 72 93 85 12 00 33 C6 B3 00 13 13 06 01

-93 53 03 01 33 C8 D3 00 93 78 18 00 13 5E 57 00

-93 D2 13 00 63 8B 08 00 E9 7E 13 8F 1E 00 33 C5

-E2 01 93 1F 05 01 93 D2 0F 01 B3 C6 C2 01 93 F5

-16 00 13 53 67 00 13 DE 12 00 91 C9 69 76 93 03

-16 00 33 48 7E 00 93 18 08 01 13 DE 08 01 B3 4E

-6E 00 13 FF 1E 00 1D 83 93 55 1E 00 63 0B 0F 00

-E9 7F 93 82 1F 00 33 C5 55 00 93 16 05 01 93 D5

-06 01 13 F3 15 00 13 DE 15 00 63 0B E3 00 69 76

-93 03 16 00 33 48 7E 00 93 18 08 01 13 DE 08 01

-93 DE 87 00 33 CF CE 01 93 7F 1F 00 13 D7 87 00

-13 53 1E 00 A5 83 63 8B 0F 00 E9 72 93 86 12 00

-33 45 D3 00 93 15 05 01 13 D3 05 01 33 C6 67 00

-93 73 16 00 13 58 27 00 93 5F 13 00 63 8B 03 00

-E9 78 13 8E 18 00 B3 CE CF 01 13 9F 0E 01 93 5F

-0F 01 B3 C7 0F 01 93 F2 17 00 93 56 37 00 93 D3

-1F 00 63 8B 02 00 E9 75 13 83 15 00 33 C5 63 00

-13 16 05 01 93 53 06 01 33 C8 D3 00 93 78 18 00

-13 5E 47 00 93 D2 13 00 63 8B 08 00 E9 7E 13 8F

-1E 00 B3 CF E2 01 93 97 0F 01 93 D2 07 01 B3 C6

-C2 01 93 F5 16 00 13 53 57 00 93 D8 12 00 91 C9

-69 76 93 03 16 00 33 C5 78 00 13 18 05 01 93 58

-08 01 33 CE 68 00 93 7E 1E 00 13 5F 67 00 93 D5

-18 00 63 8B 0E 00 E9 7F 93 87 1F 00 B3 C2 F5 00

-93 96 02 01 93 D5 06 01 33 C3 E5 01 13 76 13 00

-1D 83 13 DE 15 00 11 CA E9 73 13 88 13 00 33 45

-0E 01 93 18 05 01 13 DE 08 01 93 7E 1E 00 13 55

-1E 00 63 8B EE 00 69 7F 93 0F 1F 00 B3 47 F5 01

-93 92 07 01 13 D5 02 01 82 80 33 C6 A5 00 93 76

-F5 0F 13 17 05 01 93 72 16 00 AA 87 13 53 07 01

-13 D8 16 00 13 DE 15 00 63 8B 02 00 69 75 93 03

-15 00 B3 45 7E 00 93 98 05 01 13 DE 08 01 B3 4E

-0E 01 13 FF 1E 00 93 DF 26 00 13 55 1E 00 63 0B

-0F 00 69 76 93 02 16 00 33 47 55 00 13 18 07 01

-13 55 08 01 B3 43 F5 01 93 F8 13 00 93 D5 36 00

-93 52 15 00 63 8B 08 00 69 7E 93 0E 1E 00 33 CF

-D2 01 93 1F 0F 01 93 D2 0F 01 33 C6 B2 00 13 77

-16 00 13 D8 46 00 13 DE 12 00 11 CB E9 73 93 88

-13 00 33 45 1E 01 93 15 05 01 13 DE 05 01 B3 4E

-0E 01 13 FF 1E 00 93 DF 56 00 93 53 1E 00 63 0B

-0F 00 E9 72 13 86 12 00 33 C7 C3 00 13 18 07 01

-93 53 08 01 B3 C8 F3 01 93 F5 18 00 13 DE 66 00

-93 D2 13 00 91 C9 E9 7E 13 8F 1E 00 33 C5 E2 01

-93 1F 05 01 93 D2 0F 01 33 C6 C2 01 13 77 16 00

-9D 82 13 DE 12 00 11 CB 69 78 93 03 18 00 B3 48

-7E 00 93 95 08 01 13 DE 05 01 93 7E 1E 00 13 58

-1E 00 63 94 DE 38 13 56 83 00 33 47 C8 00 93 73

-17 00 93 56 83 00 13 5F 18 00 13 53 93 00 63 8B

-03 00 E9 78 93 85 18 00 33 4E BF 00 93 1E 0E 01

-13 DF 0E 01 B3 4F 6F 00 93 F2 1F 00 13 D8 26 00

-13 53 1F 00 63 8B 02 00 69 76 13 07 16 00 33 45

-E3 00 93 13 05 01 13 D3 03 01 B3 48 03 01 93 F5

-18 00 13 DE 36 00 13 58 13 00 91 C9 E9 7E 13 8F

-1E 00 B3 4F E8 01 93 92 0F 01 13 D8 02 01 33 46

-C8 01 93 73 16 00 13 D7 46 00 13 5E 18 00 63 8B

-03 00 69 73 93 08 13 00 33 45 1E 01 93 15 05 01

-13 DE 05 01 B3 4E EE 00 13 FF 1E 00 93 DF 56 00

-13 53 1E 00 63 0B 0F 00 E9 72 13 88 12 00 33 46

-03 01 93 13 06 01 13 D3 03 01 33 47 F3 01 93 78

-17 00 93 D5 66 00 93 5F 13 00 63 8B 08 00 69 7E

-93 0E 1E 00 33 C5 DF 01 13 1F 05 01 93 5F 0F 01

-B3 C2 BF 00 13 F8 12 00 9D 82 93 D8 1F 00 63 0B

-08 00 69 76 93 03 16 00 33 C3 78 00 13 17 03 01

-93 58 07 01 93 F5 18 00 93 DF 18 00 63 8B D5 00

-69 7E 93 0E 1E 00 33 C5 DF 01 13 1F 05 01 93 5F

-0F 01 93 D2 07 01 33 C8 5F 00 93 F3 F2 0F 93 76

-18 00 C1 83 13 D6 13 00 13 DE 1F 00 91 CA 69 73

-13 07 13 00 B3 48 EE 00 93 95 08 01 13 DE 05 01

-B3 4E CE 00 13 FF 1E 00 93 DF 23 00 13 53 1E 00

-63 0B 0F 00 E9 72 13 88 12 00 33 45 03 01 93 16

-05 01 13 D3 06 01 33 46 F3 01 13 77 16 00 93 D8

-33 00 93 5F 13 00 11 CB E9 75 13 8E 15 00 B3 CE

-CF 01 13 9F 0E 01 93 5F 0F 01 B3 C2 1F 01 13 F8

-12 00 93 D6 43 00 93 D8 1F 00 63 0B 08 00 69 73

-13 06 13 00 33 C5 C8 00 13 17 05 01 93 58 07 01

-B3 C5 D8 00 13 FE 15 00 93 DE 53 00 13 D3 18 00

-63 0B 0E 00 69 7F 93 0F 1F 00 B3 42 F3 01 13 98

-02 01 13 53 08 01 B3 46 D3 01 13 F6 16 00 13 D7

-63 00 93 5E 13 00 11 CA E9 78 93 85 18 00 33 C5

-BE 00 13 1E 05 01 93 5E 0E 01 33 CF EE 00 93 7F

-1F 00 93 D3 73 00 13 D6 1E 00 63 8B 0F 00 E9 72

-13 88 12 00 33 43 06 01 93 16 03 01 13 D6 06 01

-13 77 16 00 93 5E 16 00 63 17 77 12 13 DF 87 00

-B3 4F DF 01 93 F3 1F 00 93 D2 87 00 13 D7 1E 00

-A5 83 63 8B 03 00 69 78 13 03 18 00 B3 46 67 00

-13 96 06 01 13 57 06 01 B3 48 F7 00 93 F5 18 00

-13 DE 22 00 93 53 17 00 91 C9 E9 7E 13 8F 1E 00

-33 C5 E3 01 93 1F 05 01 93 D3 0F 01 B3 47 7E 00

-13 F8 17 00 13 D3 32 00 93 D5 13 00 63 0B 08 00

-E9 76 13 86 16 00 33 C7 C5 00 93 18 07 01 93 D5

-08 01 33 4E B3 00 93 7E 1E 00 13 DF 42 00 13 D8

-15 00 63 8B 0E 00 E9 7F 93 83 1F 00 33 45 78 00

-93 17 05 01 13 D8 07 01 33 43 0F 01 13 76 13 00

-93 D6 52 00 93 5E 18 00 11 CA 69 77 93 08 17 00

-B3 C5 1E 01 13 9E 05 01 93 5E 0E 01 33 CF D6 01

-93 7F 1F 00 93 D3 62 00 13 D6 1E 00 63 8B 0F 00

-E9 77 13 88 17 00 33 45 06 01 13 13 05 01 13 56

-03 01 B3 C6 C3 00 93 F8 16 00 93 D2 72 00 13 5F

-16 00 63 8B 08 00 69 77 93 05 17 00 33 4E BF 00

-93 1E 0E 01 13 DF 0E 01 93 7F 1F 00 13 55 1F 00

-63 8A 5F 00 E9 73 93 87 13 00 33 48 F5 00 13 15

-08 01 41 81 82 80 E9 78 93 85 18 00 33 C5 BE 00

-13 1E 05 01 93 5E 0E 01 D1 B5 69 7F 93 0F 1F 00

-33 45 F8 01 93 12 05 01 13 D8 02 01 AD B1 B3 C6

-A5 00 13 77 F5 0F 93 17 05 01 93 F2 16 00 13 D3

-07 01 13 56 17 00 93 D8 15 00 63 8B 02 00 E9 75

-93 83 15 00 33 C5 78 00 13 18 05 01 93 58 08 01

-33 CE C8 00 93 7E 1E 00 13 5F 27 00 93 D5 18 00

-63 8B 0E 00 E9 7F 93 86 1F 00 B3 C2 D5 00 93 97

-02 01 93 D5 07 01 33 C6 E5 01 93 73 16 00 13 58

-37 00 13 DF 15 00 63 8B 03 00 E9 78 13 8E 18 00

-33 45 CF 01 93 1E 05 01 13 DF 0E 01 B3 4F 0F 01

-93 F2 1F 00 93 56 47 00 13 58 1F 00 63 8B 02 00

-E9 77 93 85 17 00 33 46 B8 00 93 13 06 01 13 D8

-03 01 B3 48 D8 00 13 FE 18 00 93 5E 57 00 93 57

-18 00 63 0B 0E 00 69 7F 93 0F 1F 00 33 C5 F7 01

-93 12 05 01 93 D7 02 01 B3 C6 D7 01 93 F5 16 00

-93 53 67 00 93 DE 17 00 91 C9 69 76 13 08 16 00

-B3 C8 0E 01 13 9E 08 01 93 5E 0E 01 33 CF 7E 00

-93 7F 1F 00 1D 83 93 D5 1E 00 63 8B 0F 00 E9 72

-93 87 12 00 33 C5 F5 00 93 16 05 01 93 D5 06 01

-93 F3 15 00 93 DE 15 00 63 8B E3 00 69 76 13 08

-16 00 B3 C8 0E 01 13 9E 08 01 93 5E 0E 01 13 5F

-83 00 B3 4F DF 01 93 F2 1F 00 13 57 83 00 93 D3

-1E 00 13 53 93 00 63 8B 02 00 E9 77 93 86 17 00

-33 C5 D3 00 93 15 05 01 93 D3 05 01 33 46 73 00

-13 78 16 00 93 58 27 00 93 D2 13 00 63 0B 08 00

-69 7E 93 0E 1E 00 33 CF D2 01 93 1F 0F 01 93 D2

-0F 01 33 C3 12 01 93 77 13 00 93 56 37 00 13 D8

-12 00 91 CB E9 75 93 83 15 00 33 45 78 00 13 16

-05 01 13 58 06 01 B3 48 D8 00 13 FE 18 00 93 5E

-47 00 93 55 18 00 63 0B 0E 00 69 7F 93 0F 1F 00

-B3 C2 F5 01 13 93 02 01 93 55 03 01 B3 C7 D5 01

-93 F3 17 00 93 56 57 00 13 DE 15 00 63 8B 03 00

-69 76 13 08 16 00 33 45 0E 01 93 18 05 01 13 DE

-08 01 B3 4E DE 00 13 FF 1E 00 93 5F 67 00 93 53

-1E 00 63 0B 0F 00 E9 72 13 83 12 00 B3 C5 63 00

-93 97 05 01 93 D3 07 01 B3 C6 F3 01 13 F6 16 00

-1D 83 93 DE 13 00 11 CA 69 78 93 08 18 00 33 C5

-1E 01 13 1E 05 01 93 5E 0E 01 13 FF 1E 00 13 D5

-1E 00 63 0B EF 00 E9 7F 93 82 1F 00 33 43 55 00

-93 15 03 01 13 D5 05 01 82 80 01 45 82 80 73 27

-00 B0 B7 17 04 F0 23 AA E7 D8 82 80 73 27 00 B0

-B7 17 04 F0 23 A8 E7 D8 82 80 B7 17 04 F0 B7 12

-04 F0 03 A5 07 D9 03 A3 42 D9 33 05 65 40 82 80

-93 07 80 3E 33 55 F5 02 82 80 85 47 23 00 F5 00

-82 80 23 00 05 00 82 80 AA 82 2A 96 63 56 C5 00

-23 00 B5 00 05 05 DD BF 16 85 82 80 82 80

-@EE0078EE

-75 71 06 C7 B7 17 04 F0 B7 10 04 F0 B7 02 04 F0

-03 A6 07 DA 83 A5 C0 D9 03 A3 02 0F 37 07 04 F0

-83 26 C7 0E B7 13 04 F0 22 C5 26 C3 13 14 06 01

-93 14 03 01 83 A8 83 D9 13 56 04 41 13 D8 04 41

-05 45 4A C1 CE DE D2 DC D6 DA DA D8 DE D6 E2 D4

-E6 D2 EA D0 EE CE 23 07 A1 04 23 16 C1 00 23 17

-B1 00 23 18 01 01 36 D4 63 93 08 00 9D 48 32 49

-46 D6 E3 1B 09 3C E3 0F 08 42 B2 59 B7 0C 04 F0

-13 8D 0C 5C 13 F7 29 00 93 FD 19 00 33 3E E0 00

-6A CA 23 16 01 04 93 FE 49 00 6E 8F B3 85 CD 01

-63 88 0E 00 93 8F 15 00 93 90 0F 01 93 D5 00 01

-93 02 00 7D 33 D5 B2 02 01 44 2A D2 E3 10 0F 3E

-E3 10 07 3C E3 95 0E 3A 63 10 0F 1C 63 17 07 1C

-13 F5 49 00 19 C5 02 56 83 15 C1 00 12 55 EF C0

-6F FC 22 5A 63 0F 0A 6C 37 1C 04 F0 B7 1C 04 F0

-13 0D C1 00 F3 23 00 B0 23 2A 7C D8 6A 85 EF E0

-BF F6 73 2D 00 B0 03 55 C1 00 81 45 23 A8 AC D9

-EF F0 8F D2 AA 85 03 55 E1 00 03 2C 4C D9 EF F0

-AF D1 AA 85 03 55 01 01 B3 0A 8D 41 EF F0 CF D0

-92 54 AA 85 93 9C 04 01 13 D5 0C 01 EF F0 CF CF

-21 68 93 06 58 B0 AA 89 E3 06 D5 3A 63 E6 A6 16

-89 6D 93 82 2D 8F E3 01 55 3C 15 6D 93 00 FD EA

-E3 12 15 3E B7 0C 04 F0 13 85 0C 15 EF 90 4F 86

-93 0B 8D 60 39 68 9D 66 13 0A 48 5A 5E 8C 13 8B

-96 A7 B7 0C 04 F0 83 A8 8C 0E 01 49 01 4D E3 87

-08 3A B7 0D 04 F0 89 A8 03 D6 A4 FF 63 03 46 0F

-37 07 04 F0 D2 86 EA 85 13 05 47 24 EF 90 4F 82

-83 D7 C4 FF 13 8E 17 00 93 1E 0E 01 93 DF 0E 01

-23 9E F4 FF 05 0D 83 A2 8C 0E 7E 99 93 15 0D 01

-13 1F 09 01 13 13 09 01 13 DD 05 01 13 54 0F 01

-13 59 03 41 63 74 5D 10 13 14 4D 00 33 06 A4 01

-13 15 26 00 98 08 B3 04 A7 00 83 A7 C4 FD 23 9E

-04 FE 13 FE 17 00 63 02 0E 02 03 D6 64 FF 63 0E

-66 01 DA 86 EA 85 13 85 0D 1E EF 80 7F FB 83 DE

-C4 FF 93 8F 1E 00 23 9E F4 FF B3 05 A4 01 93 92

-25 00 13 0F 01 05 B3 04 5F 00 83 A8 C4 FD 13 F3

-28 00 63 06 03 02 03 D6 84 FF 63 02 86 03 B7 03

-04 F0 DE 86 EA 85 13 85 03 21 EF 80 7F F7 03 D8

-C4 FF 83 A8 C4 FD 93 06 18 00 23 9E D4 FE 6A 94

-13 16 24 00 88 08 93 F0 48 00 B3 04 C5 00 E3 9D

-00 F0 83 DF C4 FF 3D BF E2 45 EF 80 3F FF B2 59

-2A D8 13 F7 29 00 E3 0D 07 E2 83 17 E1 00 03 16

-C1 00 F2 45 12 55 13 99 07 01 54 18 33 66 C9 00

-EF B0 8F DB B2 59 29 BD 25 6A 13 07 2A A0 E3 09

-E5 20 BD 6B 13 84 5B 9F E3 1E 85 26 B7 05 04 F0

-89 64 13 85 45 18 93 8B 74 FD 39 6B EF 80 5F EF

-13 0A AA E3 5E 8C 13 0B 4B 71 61 BD 92 54 B7 0B

-04 F0 A6 85 13 85 4B 27 EF 80 9F ED 37 0C 04 F0

-D6 85 13 05 CC 28 13 0B 80 3E EF 80 7F EC B3 DD

-6A 03 B7 03 04 F0 13 85 43 2A EE 85 EF 80 5F EB

-13 08 70 3E 63 6F 58 45 B7 0A 04 F0 05 04 13 85

-CA 2B 13 1D 04 01 EF 80 BF E9 13 59 0D 41 03 AF

-8C 0E 22 53 B7 05 04 F0 13 85 85 31 B3 05 E3 03

-37 0A 04 F0 B7 0B 04 F0 37 0C 04 F0 37 0B 04 F0

-B7 0D 04 F0 EF 80 DF E6 93 05 0A 33 13 85 CB 33

-EF 80 1F E6 93 05 4C 35 13 05 0B 37 EF 80 5F E5

-B7 03 04 F0 93 85 8D 38 13 85 03 39 EF 80 5F E4

-CE 85 B7 09 04 F0 13 85 89 3A EF 80 7F E3 32 5A

-13 78 1A 00 63 05 08 0E 83 A8 8C 0E 63 81 08 0E

-01 4D B7 04 04 F0 93 16 4D 00 B3 80 A6 01 13 96

-20 00 98 08 B3 07 C7 00 03 D6 67 FF EA 85 13 85

-44 3C EF 80 FF DF 93 0E 1D 00 93 9F 0E 01 93 DA

-0F 01 93 92 4A 00 03 AE 8C 0E 33 84 52 01 13 1D

-24 00 13 0F 01 05 13 85 44 3C 33 03 AF 01 D6 85

-63 F6 CA 09 03 56 63 FF 93 09 01 05 EF 80 5F DC

-93 85 1A 00 93 9B 05 01 13 DC 0B 01 13 1B 4C 00

-03 AA 8C 0E B3 0D 8B 01 93 93 2D 00 13 85 44 3C

-33 88 79 00 E2 85 63 7B 4C 05 03 56 68 FF EF 80

-3F D9 93 06 1C 00 13 96 06 01 93 5A 06 01 13 97

-4A 00 83 A8 8C 0E B3 07 57 01 13 9E 27 00 93 0E

-01 05 13 85 44 3C B3 8F CE 01 D6 85 63 F0 1A 03

-03 D6 6F FF EF 80 DF D5 93 82 1A 00 03 A5 8C 0E

-13 94 02 01 13 5D 04 01 E3 67 AD F2 32 5A 93 74

-2A 00 FD C0 83 A0 8C 0E 63 8F 00 1E 01 44 37 0A

-04 F0 13 13 44 00 B3 05 83 00 93 9B 25 00 13 0C

-01 05 33 0B 7C 01 03 56 8B FF A2 85 13 05 0A 3E

-EF 80 1F D1 93 03 14 00 93 99 03 01 93 DA 09 01

-13 98 4A 00 83 AD 8C 0E B3 08 58 01 93 96 28 00

-90 08 13 05 0A 3E 33 07 D6 00 D6 85 63 F5 BA 09

-03 56 87 FF 84 08 EF 80 BF CD 93 87 1A 00 93 9E

-07 01 13 D4 0E 01 93 1F 44 00 03 AE 8C 0E B3 82

-8F 00 13 9D 22 00 13 05 0A 3E 33 8F A4 01 A2 85

-63 7B C4 05 03 56 8F FF 93 09 01 05 EF 80 5F CA

-93 05 14 00 93 9B 05 01 13 DC 0B 01 13 1B 4C 00

-03 A3 8C 0E B3 0D 8B 01 93 93 2D 00 13 05 0A 3E

-B3 8A 79 00 E2 85 63 70 6C 02 03 D6 8A FF EF 80

-3F C7 13 08 1C 00 03 A5 8C 0E 93 18 08 01 13 D4

-08 01 E3 68 A4 F2 32 5A 93 70 4A 00 63 91 00 12

-83 A0 8C 0E 81 44 37 0D 04 F0 63 8D 00 0C 93 95

-44 00 33 8B 95 00 93 03 01 05 93 1D 2B 00 B3 89

-B3 01 03 D6 49 FF A6 85 13 05 8D 41 EF 80 5F C2

-13 88 14 00 93 18 08 01 13 D4 08 01 13 1A 44 00

-83 AA 8C 0E B3 06 8A 00 13 96 26 00 98 08 13 05

-8D 41 33 0E C7 00 A2 85 63 76 54 09 03 56 4E FF

-EF 80 1F BF 93 07 14 00 93 9E 07 01 93 DB 0E 01

-93 9F 4B 00 83 A4 8C 0E B3 82 7F 01 13 9F 22 00

-13 03 01 05 13 05 8D 41 33 0C E3 01 DE 85 63 FB

-9B 04 03 56 4C FF EF 80 BF BB 93 85 1B 00 93 9D

-05 01 93 D9 0D 01 93 93 49 00 03 AB 8C 0E B3 8A

-33 01 13 98 2A 00 93 08 01 05 13 05 8D 41 33 84

-08 01 CE 85 63 F0 69 03 03 56 44 FF 13 8A 19 00

-EF 80 1F B8 03 A5 8C 0E 93 16 0A 01 93 D4 06 01

-E3 E7 A4 F2 63 0F 09 64 63 5F 20 63 37 09 04 F0

-13 05 09 48 EF 80 DF B5 BA 40 2A 44 9A 44 0A 49

-F6 59 66 5A D6 5A 46 5B B6 5B 26 5C 96 5C 06 5D

-F6 4D 49 61 82 80 13 7F 4A 00 E3 05 0F FC 83 A6

-8C 0E E9 D2 01 4C 37 0D 04 F0 13 16 4C 00 33 07

-86 01 13 1E 27 00 9C 08 B3 8E C7 01 03 D6 AE FF

-E2 85 13 05 CD 3F EF 80 BF B0 93 02 1C 00 93 94

-02 01 93 DB 04 01 13 9F 4B 00 83 AF 8C 0E 33 03

-7F 01 93 15 23 00 13 0C 01 05 33 0B BC 00 13 05

-CD 3F DE 85 E3 F6 FB E9 03 56 AB FF 13 0A 01 05

-EF 80 1F AD 93 83 1B 00 93 99 03 01 93 DA 09 01

-13 98 4A 00 83 AD 8C 0E B3 08 58 01 13 94 28 00

-13 05 CD 3F B3 06 8A 00 D6 85 E3 FB BA E5 03 D6

-A6 FF EF 80 FF A9 13 87 1A 00 13 1E 07 01 93 54

-0E 01 93 97 44 00 03 A6 8C 0E B3 8E 97 00 93 9F

-2E 00 93 02 01 05 13 05 CD 3F B3 8B F2 01 A6 85

-E3 F0 C4 E2 03 D6 AB FF EF 80 9F A6 13 8F 14 00

-03 A5 8C 0E 13 13 0F 01 13 5C 03 01 E3 67 AC F2

-01 B5 83 A8 8C 0E A2 56 E1 64 13 87 04 6A B3 80

-16 03 37 06 04 F0 93 0F 40 06 13 05 C6 2F B3 87

-E0 02 33 DE B7 03 B3 8E 60 03 33 76 FE 03 B3 D5

-BE 03 EF 80 FF A1 09 65 93 02 F5 70 E3 E1 52 B9

-A5 B6 E9 7A 05 44 37 1C 04 F0 B7 1C 04 F0 13 0D

-C1 00 13 8B 1A 00 93 0D 70 3E 93 1B 24 00 33 8E

-8B 00 13 14 1E 00 22 D4 F3 24 00 B0 23 2A 9C D8

-82 C2 82 C4 81 4B 63 0F 04 40 85 45 6A 85 EF D0

-1F F9 83 5E 41 04 13 7F F5 0F 93 52 1F 00 B3 CF

-AE 00 93 F5 1F 00 93 D3 1E 00 99 C5 B3 C0 63 01

-13 93 00 01 93 53 03 01 B3 C6 53 00 13 F8 16 00

-93 58 2F 00 13 D9 13 00 63 08 08 00 33 47 69 01

-93 17 07 01 13 D9 07 01 33 46 19 01 93 79 16 00

-13 5A 3F 00 93 5E 19 00 63 88 09 00 B3 CA 6E 01

-13 9E 0A 01 93 5E 0E 01 B3 CF 4E 01 93 F5 1F 00

-93 52 4F 00 93 D3 1E 00 99 C5 B3 C0 63 01 13 93

-00 01 93 53 03 01 B3 C6 53 00 13 F8 16 00 93 58

-5F 00 13 D9 13 00 63 08 08 00 33 47 69 01 93 17

-07 01 13 D9 07 01 33 46 19 01 93 79 16 00 13 5A

-6F 00 93 5E 19 00 63 88 09 00 B3 CA 6E 01 13 9E

-0A 01 93 5E 0E 01 B3 CF 4E 01 93 F5 1F 00 13 5F

-7F 00 13 D3 1E 00 99 C5 B3 42 63 01 93 90 02 01

-13 D3 00 01 93 73 13 00 93 58 13 00 63 88 E3 01

-B3 C6 68 01 13 98 06 01 93 58 08 01 21 81 33 47

-15 01 13 79 F5 0F 13 76 17 00 93 59 19 00 93 DA

-18 00 19 C6 B3 C7 6A 01 13 9A 07 01 93 5A 0A 01

-33 CE 3A 01 93 7E 1E 00 93 5F 29 00 93 D2 1A 00

-63 88 0E 00 B3 C5 62 01 13 9F 05 01 93 52 0F 01

-B3 C0 F2 01 13 F3 10 00 93 53 39 00 93 D8 12 00

-63 08 03 00 B3 C6 68 01 13 98 06 01 93 58 08 01

-33 C5 78 00 13 76 15 00 13 57 49 00 13 DA 18 00

-19 C6 B3 49 6A 01 93 97 09 01 13 DA 07 01 B3 4A

-EA 00 13 FE 1A 00 93 5E 59 00 13 5F 1A 00 63 08

-0E 00 B3 4F 6F 01 93 95 0F 01 13 DF 05 01 B3 42

-DF 01 93 F0 12 00 13 53 69 00 13 58 1F 00 63 88

-00 00 B3 43 68 01 93 96 03 01 13 D8 06 01 B3 48

-68 00 13 F6 18 00 13 59 79 00 93 59 18 00 19 C6

-33 C5 69 01 13 17 05 01 93 59 07 01 B3 C7 29 01

-13 FA 17 00 93 DE 19 00 63 08 0A 00 B3 CA 6E 01

-13 9E 0A 01 93 5E 0E 01 FD 55 6A 85 23 12 D1 05

-EF D0 FF D8 83 5F 41 04 13 7F F5 0F 13 53 1F 00

-B3 C5 AF 00 93 F2 15 00 13 D8 1F 00 63 88 02 00

-B3 40 68 01 93 93 00 01 13 D8 03 01 B3 46 68 00

-93 F8 16 00 13 56 2F 00 93 59 18 00 63 88 08 00

-33 C9 69 01 13 17 09 01 93 59 07 01 B3 C7 C9 00

-13 FA 17 00 93 5A 3F 00 93 DF 19 00 63 08 0A 00

-33 CE 6F 01 93 1E 0E 01 93 DF 0E 01 B3 C5 5F 01

-93 F2 15 00 13 53 4F 00 13 D8 1F 00 63 88 02 00

-B3 40 68 01 93 93 00 01 13 D8 03 01 B3 46 68 00

-93 F8 16 00 13 56 5F 00 93 59 18 00 63 88 08 00

-33 C9 69 01 13 17 09 01 93 59 07 01 B3 C7 C9 00

-13 FA 17 00 93 5A 6F 00 93 DF 19 00 63 08 0A 00

-33 CE 6F 01 93 1E 0E 01 93 DF 0E 01 B3 C5 5F 01

-93 F2 15 00 13 5F 7F 00 93 D3 1F 00 63 88 02 00

-33 C3 63 01 93 10 03 01 93 D3 00 01 13 F8 13 00

-13 D6 13 00 63 08 E8 01 B3 46 66 01 93 98 06 01

-13 D6 08 01 21 81 33 49 C5 00 93 79 F5 0F 13 77

-19 00 13 DA 19 00 13 5E 16 00 19 C7 B3 47 6E 01

-93 9A 07 01 13 DE 0A 01 B3 4E 4E 01 93 FF 1E 00

-93 D5 29 00 13 53 1E 00 63 88 0F 00 B3 42 63 01

-13 9F 02 01 13 53 0F 01 B3 40 B3 00 93 F3 10 00

-13 D8 39 00 13 56 13 00 63 88 03 00 B3 46 66 01

-93 98 06 01 13 D6 08 01 33 45 06 01 13 79 15 00

-13 D7 49 00 93 5A 16 00 63 08 09 00 33 CA 6A 01

-93 17 0A 01 93 DA 07 01 33 CE EA 00 93 7E 1E 00

-93 DF 59 00 13 DF 1A 00 63 88 0E 00 B3 45 6F 01

-93 92 05 01 13 DF 02 01 33 43 FF 01 93 70 13 00

-93 D3 69 00 93 58 1F 00 63 88 00 00 33 C8 68 01

-93 16 08 01 93 D8 06 01 33 C6 78 00 13 79 16 00

-93 D9 79 00 13 DA 18 00 63 08 09 00 33 45 6A 01

-13 17 05 01 13 5A 07 01 B3 47 3A 01 93 FA 17 00

-93 5F 1A 00 63 88 0A 00 33 CE 6F 01 93 1E 0E 01

-93 DF 0E 01 23 12 F1 05 63 8C 0B 02 85 0B E3 16

-74 BF 22 54 F3 25 00 B0 23 A8 BC D8 B3 84 95 40

-E3 FD 9D BA 13 0B 80 3E B3 DD 64 03 A9 42 33 DF

-B2 03 13 03 1F 00 B3 00 64 02 06 D4 6F F0 8F CB

-23 13 F1 05 85 4B 55 BE 85 49 63 18 39 C3 63 16

-08 C2 37 3A 15 34 93 0A 5A 41 13 0B 60 06 8D 6B

-56 C6 23 18 61 01 13 86 5B 41 6F F0 0F C1 33 08

-A4 02 B3 08 0D 01 46 D0 63 0A 0F C4 6F F0 CF E0

-33 03 A4 02 93 06 14 00 93 93 06 01 13 D4 03 01

-B3 04 6D 00 26 CE 63 89 0E C2 D1 BF 6A CC 05 44

-63 02 07 C2 F1 BF B7 0C 04 F0 13 85 4C 49 EF 80

-2F D2 D9 B2 13 0C 60 06 23 18 81 01 01 46 6F F0

-CF BB B7 00 04 F0 13 85 40 43 EF 80 6F D0 6D B2

-B7 07 04 F0 13 85 47 0F EF 80 8F CF 31 6E 93 0B

-2E E5 99 6E B5 6F 13 8A 7E E4 5E 8C 13 8B 0F 4B

-6F F0 2F C9 B7 08 04 F0 13 85 48 12 EF 80 4F CD

-05 66 93 0B 96 19 11 69 0D 65 13 0A F9 9B 5E 8C

-13 0B 05 34 6F F0 EF C6 37 0F 04 F0 13 05 4F 1B

-EF 80 0F CB 25 63 B9 63 13 0A 43 D8 93 0B 70 74

-13 0C 70 74 13 8B 13 3C 6F F0 AF C4 92 54 01 44

-6F F0 EF DA 41 6A 13 04 FA FF 7D 59 B7 0C 04 F0

-6F F0 EF D9

-@F0040000

-7C 02 00 EE 58 00 00 EE 58 00 00 EE 58 00 00 EE

-58 00 00 EE 58 00 00 EE 58 00 00 EE 58 00 00 EE

-58 00 00 EE 58 00 00 EE 58 00 00 EE 76 03 00 EE

-40 08 00 EE 58 00 00 EE 58 00 00 EE 58 00 00 EE

-58 00 00 EE 58 00 00 EE 58 00 00 EE 58 00 00 EE

-58 00 00 EE 58 00 00 EE 58 00 00 EE 60 06 00 EE

-58 00 00 EE 58 00 00 EE 58 00 00 EE F0 05 00 EE

-58 00 00 EE 84 03 00 EE 58 00 00 EE 58 00 00 EE

-7C 02 00 EE A8 05 04 F0 B0 05 04 F0 B8 05 04 F0

-FA 6D 00 EE D2 6D 00 EE DC 6D 00 EE E6 6D 00 EE

-F0 6D 00 EE C8 6D 00 EE 88 05 04 F0 90 05 04 F0

-98 05 04 F0 A0 05 04 F0 58 05 04 F0 64 05 04 F0

-70 05 04 F0 7C 05 04 F0 28 05 04 F0 34 05 04 F0

-40 05 04 F0 4C 05 04 F0 F8 04 04 F0 04 05 04 F0

-10 05 04 F0 1C 05 04 F0 01 00 00 00 01 00 00 00

-66 00 00 00 36 6B 20 70 65 72 66 6F 72 6D 61 6E

-63 65 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72

-73 20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A

-00 00 00 00 36 6B 20 76 61 6C 69 64 61 74 69 6F

-6E 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72 73

-20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A 00

-50 72 6F 66 69 6C 65 20 67 65 6E 65 72 61 74 69

-6F 6E 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72

-73 20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A

-00 00 00 00 32 4B 20 70 65 72 66 6F 72 6D 61 6E

-63 65 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72

-73 20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A

-00 00 00 00 32 4B 20 76 61 6C 69 64 61 74 69 6F

-6E 20 72 75 6E 20 70 61 72 61 6D 65 74 65 72 73

-20 66 6F 72 20 63 6F 72 65 6D 61 72 6B 2E 0A 00

-5B 25 75 5D 45 52 52 4F 52 21 20 6C 69 73 74 20

-63 72 63 20 30 78 25 30 34 78 20 2D 20 73 68 6F

-75 6C 64 20 62 65 20 30 78 25 30 34 78 0A 00 00

-5B 25 75 5D 45 52 52 4F 52 21 20 6D 61 74 72 69

-78 20 63 72 63 20 30 78 25 30 34 78 20 2D 20 73

-68 6F 75 6C 64 20 62 65 20 30 78 25 30 34 78 0A

-00 00 00 00 5B 25 75 5D 45 52 52 4F 52 21 20 73

-74 61 74 65 20 63 72 63 20 30 78 25 30 34 78 20

-2D 20 73 68 6F 75 6C 64 20 62 65 20 30 78 25 30

-34 78 0A 00 43 6F 72 65 4D 61 72 6B 20 53 69 7A

-65 20 20 20 20 3A 20 25 75 0A 00 00 54 6F 74 61

-6C 20 74 69 63 6B 73 20 20 20 20 20 20 3A 20 25

-75 0A 00 00 54 6F 74 61 6C 20 74 69 6D 65 20 28

-73 65 63 73 29 3A 20 25 64 0A 00 00 45 52 52 4F

-52 21 20 4D 75 73 74 20 65 78 65 63 75 74 65 20

-66 6F 72 20 61 74 20 6C 65 61 73 74 20 31 30 20

-73 65 63 73 20 66 6F 72 20 61 20 76 61 6C 69 64

-20 72 65 73 75 6C 74 21 0A 00 00 00 49 74 65 72

-61 74 2F 53 65 63 2F 4D 48 7A 20 20 20 3A 20 25

-64 2E 25 30 32 64 0A 00 49 74 65 72 61 74 69 6F

-6E 73 20 20 20 20 20 20 20 3A 20 25 75 0A 00 00

-47 43 43 39 2E 32 2E 30 00 00 00 00 43 6F 6D 70

-69 6C 65 72 20 76 65 72 73 69 6F 6E 20 3A 20 25

-73 0A 00 00 2D 67 20 2D 4F 33 20 2D 66 75 6E 72

-6F 6C 6C 2D 61 6C 6C 2D 6C 6F 6F 70 73 00 00 00

-43 6F 6D 70 69 6C 65 72 20 66 6C 61 67 73 20 20

-20 3A 20 25 73 0A 00 00 53 54 41 54 49 43 00 00

-4D 65 6D 6F 72 79 20 6C 6F 63 61 74 69 6F 6E 20

-20 3A 20 25 73 0A 00 00 73 65 65 64 63 72 63 20

-20 20 20 20 20 20 20 20 20 3A 20 30 78 25 30 34

-78 0A 00 00 5B 25 64 5D 63 72 63 6C 69 73 74 20

-20 20 20 20 20 20 3A 20 30 78 25 30 34 78 0A 00

-5B 25 64 5D 63 72 63 6D 61 74 72 69 78 20 20 20

-20 20 3A 20 30 78 25 30 34 78 0A 00 5B 25 64 5D

-63 72 63 73 74 61 74 65 20 20 20 20 20 20 3A 20

-30 78 25 30 34 78 0A 00 5B 25 64 5D 63 72 63 66

-69 6E 61 6C 20 20 20 20 20 20 3A 20 30 78 25 30

-34 78 0A 00 43 6F 72 72 65 63 74 20 6F 70 65 72

-61 74 69 6F 6E 20 76 61 6C 69 64 61 74 65 64 2E

-20 53 65 65 20 72 65 61 64 6D 65 2E 74 78 74 20

-66 6F 72 20 72 75 6E 20 61 6E 64 20 72 65 70 6F

-72 74 69 6E 67 20 72 75 6C 65 73 2E 0A 00 00 00

-45 72 72 6F 72 73 20 64 65 74 65 63 74 65 64 0A

-00 00 00 00 43 61 6E 6E 6F 74 20 76 61 6C 69 64

-61 74 65 20 6F 70 65 72 61 74 69 6F 6E 20 66 6F

-72 20 74 68 65 73 65 20 73 65 65 64 20 76 61 6C

-75 65 73 2C 20 70 6C 65 61 73 65 20 63 6F 6D 70

-61 72 65 20 77 69 74 68 20 72 65 73 75 6C 74 73

-20 6F 6E 20 61 20 6B 6E 6F 77 6E 20 70 6C 61 74

-66 6F 72 6D 2E 0A 00 00 54 30 2E 33 65 2D 31 46

-00 00 00 00 2D 54 2E 54 2B 2B 54 71 00 00 00 00

-31 54 33 2E 34 65 34 7A 00 00 00 00 33 34 2E 30

-65 2D 54 5E 00 00 00 00 35 2E 35 30 30 65 2B 33

-00 00 00 00 2D 2E 31 32 33 65 2D 32 00 00 00 00

-2D 38 37 65 2B 38 33 32 00 00 00 00 2B 30 2E 36

-65 2D 31 32 00 00 00 00 33 35 2E 35 34 34 30 30

-00 00 00 00 2E 31 32 33 34 35 30 30 00 00 00 00

-2D 31 31 30 2E 37 30 30 00 00 00 00 2B 30 2E 36

-34 34 30 30 00 00 00 00 35 30 31 32 00 00 00 00

-31 32 33 34 00 00 00 00 2D 38 37 34 00 00 00 00

-2B 31 32 32 00 00 00 00 53 74 61 74 69 63 00 00

-48 65 61 70 00 00 00 00 53 74 61 63 6B 00

-@FFFFFFF0

-00 00 00 EE FF FF 00 EE

-@FFFFFFF8

-00 00 04 F0 C0 85 04 F0

diff --git a/verilog/rtl/BrqRV_EB1/testbench/hex/data.hex b/verilog/rtl/BrqRV_EB1/testbench/hex/data.hex
deleted file mode 100755
index b71d0ef..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/hex/data.hex
+++ /dev/null
@@ -1,8 +0,0 @@
-@00001000

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 

-2D 2D 0A 48 65 6C 6C 6F 20 57 6F 72 6C 64 20 66 

-72 6F 6D 20 53 77 65 52 56 20 45 4C 32 20 40 57 

-44 43 20 21 21 0A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 

-2D 2D 2D 2D 2D 2D 2D 2D 0A 00 

diff --git a/verilog/rtl/BrqRV_EB1/testbench/hex/hello_world.hex b/verilog/rtl/BrqRV_EB1/testbench/hex/hello_world.hex
deleted file mode 100755
index 1d3de9b..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/hex/hello_world.hex
+++ /dev/null
@@ -1,26 +0,0 @@
-@80000000

-73 10 20 B0 73 10 20 B8 B7 00 00 EE 73 90 50 30

-B7 50 55 5F 93 80 50 55 73 90 00 7C B7 01 58 D0

-17 02 00 00 13 02 E2 0E 83 02 02 00 23 80 51 00

-05 02 E3 9B 02 FE B7 01 58 D0 93 02 F0 0F 23 80

-51 00 E3 0A 00 FE 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00

-@8000010E

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 0A 48 65 6C 6C 6F 20 57 6F 72 6C 64 20 66

-72 6F 6D 20 53 77 65 52 56 20 45 4C 32 20 40 57

-44 43 20 21 21 0A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 2D 2D 2D 2D 2D 2D 0A 00

diff --git a/verilog/rtl/BrqRV_EB1/testbench/hex/hello_world_dccm.hex b/verilog/rtl/BrqRV_EB1/testbench/hex/hello_world_dccm.hex
deleted file mode 100755
index a7b38d8..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/hex/hello_world_dccm.hex
+++ /dev/null
@@ -1,28 +0,0 @@
-@00000000

-73 10 20 B0 73 10 20 B8 B7 00 00 EE 73 90 50 30

-B7 50 55 5F 93 80 50 55 73 90 00 7C B7 01 58 D0

-17 02 04 F0 13 02 02 FE 83 02 02 00 23 80 51 00

-05 02 E3 9B 02 FE B7 01 58 D0 93 02 F0 0F 23 80

-51 00 E3 0A 00 FE 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00

-@F0040000

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 0A 48 65 6C 6C 6F 20 57 6F 72 6C 64 20 66

-72 6F 6D 20 53 77 65 52 56 20 45 4C 32 20 40 57

-44 43 20 21 21 0A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 2D 2D 2D 2D 2D 2D 0A 00

-@FFFFFFF8

-00 00 04 F0 70 10 04 F0

diff --git a/verilog/rtl/BrqRV_EB1/testbench/hex/hello_world_iccm.hex b/verilog/rtl/BrqRV_EB1/testbench/hex/hello_world_iccm.hex
deleted file mode 100755
index 657b60f..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/hex/hello_world_iccm.hex
+++ /dev/null
@@ -1,32 +0,0 @@
-@00000000

-B7 50 55 5F 93 80 50 55 73 90 00 7C 91 41 73 90

-91 7F B7 01 00 EE 17 02 01 00 13 02 62 06 97 02

-01 00 93 82 E2 08 03 23 02 00 23 A0 61 00 11 02

-91 01 E3 6A 52 FE 0F 10 00 00 97 00 00 EE E7 80

-60 FC B7 01 58 D0 93 02 F0 0F 23 80 51 00 E3 0A

-00 FE 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00

-01 00 01 00 01 00 01 00 01 00

-@00010000

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 2D 2D 2D 2D 2D 2D 0A 48 65 6C 6C 6F 20 57

-6F 72 6C 64 20 66 72 6F 6D 20 53 77 65 52 56 20

-45 4C 32 20 49 43 43 4D 20 20 40 57 44 43 20 21

-21 0A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

-2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0A 00

-@0001007C

-B7 01 58 D0 17 02 01 12 13 02 C2 FF 83 02 02 00

-23 80 51 00 05 02 E3 9B 02 FE 82 80 00 00 00 00

-01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00

diff --git a/verilog/rtl/BrqRV_EB1/testbench/hex/program.hex b/verilog/rtl/BrqRV_EB1/testbench/hex/program.hex
deleted file mode 100644
index 0e2bf73..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/hex/program.hex
+++ /dev/null
@@ -1,18 +0,0 @@
-@00000000

-73 10 20 B0 73 10 20 B8 B7 00 00 EE 73 90 50 30 

-B7 50 55 5F 93 80 50 55 73 90 00 7C B7 01 58 D0 

-17 12 00 00 13 02 02 FE 83 02 02 00 23 80 51 00 

-05 02 E3 9B 02 FE B7 01 58 D0 93 02 F0 0F 23 80 

-51 00 E3 0A 00 FE 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 

-01 00 01 00 01 00 01 00 01 00 01 00 01 00 

diff --git a/verilog/rtl/BrqRV_EB1/testbench/input.tcl b/verilog/rtl/BrqRV_EB1/testbench/input.tcl
deleted file mode 100644
index b67324d..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/input.tcl
+++ /dev/null
@@ -1,4 +0,0 @@
-database -open waves -into waves.shm -default
-probe -create tb_top -depth all -database waves -memories -all
-run
-exit
diff --git a/verilog/rtl/BrqRV_EB1/testbench/link.ld b/verilog/rtl/BrqRV_EB1/testbench/link.ld
deleted file mode 100644
index de779f8..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/link.ld
+++ /dev/null
@@ -1,12 +0,0 @@
-
-OUTPUT_ARCH( "riscv" )
-ENTRY(_start)
-
-SECTIONS
-{
-    . = 0;
-  .text   : { *(.text*) }
- _end = .;
-  . = 0x10000;
-  .data  :  ALIGN(0x800) { *(.*data) *(.rodata*) STACK = ALIGN(16) + 0x8000; }
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/remote_bitbang.cc b/verilog/rtl/BrqRV_EB1/testbench/remote_bitbang.cc
deleted file mode 100644
index 6ad7867..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/remote_bitbang.cc
+++ /dev/null
@@ -1,209 +0,0 @@
-// See LICENSE.Berkeley for license details.
-
-#include <arpa/inet.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <algorithm>
-#include <cassert>
-#include <cstdio>
-#include <cstdlib>
-
-#include "remote_bitbang.h"
-
-/////////// remote_bitbang_t
-
-remote_bitbang_t::remote_bitbang_t(uint16_t port) :
-  err(0),
-  socket_fd(0),
-  client_fd(0),
-  recv_start(0),
-  recv_end(0)
-{
-  socket_fd = socket(AF_INET, SOCK_STREAM, 0);
-  if (socket_fd == -1) {
-    fprintf(stderr, "remote_bitbang failed to make socket: %s (%d)\n",
-            strerror(errno), errno);
-    abort();
-  }
-
-  fcntl(socket_fd, F_SETFL, O_NONBLOCK);
-  int reuseaddr = 1;
-  if (setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr,
-                 sizeof(int)) == -1) {
-    fprintf(stderr, "remote_bitbang failed setsockopt: %s (%d)\n",
-            strerror(errno), errno);
-    abort();
-  }
-
-  struct sockaddr_in addr;
-  memset(&addr, 0, sizeof(addr));
-  addr.sin_family = AF_INET;
-  addr.sin_addr.s_addr = INADDR_ANY;
-  addr.sin_port = htons(port);
-
-  if (::bind(socket_fd, (struct sockaddr *) &addr, sizeof(addr)) == -1) {
-    fprintf(stderr, "remote_bitbang failed to bind socket: %s (%d)\n",
-            strerror(errno), errno);
-    abort();
-  }
-
-  if (listen(socket_fd, 1) == -1) {
-    fprintf(stderr, "remote_bitbang failed to listen on socket: %s (%d)\n",
-            strerror(errno), errno);
-    abort();
-  }
-
-  socklen_t addrlen = sizeof(addr);
-  if (getsockname(socket_fd, (struct sockaddr *) &addr, &addrlen) == -1) {
-    fprintf(stderr, "remote_bitbang getsockname failed: %s (%d)\n",
-            strerror(errno), errno);
-    abort();
-  }
-
-  tck = 1;
-  tms = 1;
-  tdi = 1;
-  trstn = 1;
-  quit = 0;
-  srstn = 1;
-
-  fprintf(stderr, "This emulator compiled with JTAG Remote Bitbang client. To enable, use +jtag_rbb_enable=1.\n");
-  fprintf(stderr, "Listening on port %d\n",
-         ntohs(addr.sin_port));
-}
-
-void remote_bitbang_t::accept()
-{
-
-  fprintf(stderr,"Attempting to accept client socket\n");
-  int again = 1;
-  while (again != 0) {
-    client_fd = ::accept(socket_fd, NULL, NULL);
-    if (client_fd == -1) {
-      if (errno == EAGAIN) {
-        // No client waiting to connect right now.
-      } else {
-        fprintf(stderr, "failed to accept on socket: %s (%d)\n", strerror(errno),
-                errno);
-        again = 0;
-        abort();
-      }
-    } else {
-      fcntl(client_fd, F_SETFL, O_NONBLOCK);
-      fprintf(stderr, "Accepted successfully.");
-      again = 0;
-    }
-  }
-}
-
-void remote_bitbang_t::tick(
-                            unsigned char * jtag_tck,
-                            unsigned char * jtag_tms,
-                            unsigned char * jtag_tdi,
-                            unsigned char * jtag_trstn,
-                            unsigned char * sysrstn,
-                            unsigned char jtag_tdo
-                            )
-{
-  if (client_fd > 0) {
-    tdo = jtag_tdo;
-    execute_command();
-  } else {
-    this->accept();
-  }
-
-  * jtag_tck = tck;
-  * jtag_tms = tms;
-  * jtag_tdi = tdi;
-  * jtag_trstn = trstn;
-  * sysrstn = srstn;
-
-}
-
-void remote_bitbang_t::reset(char cmd){
-  trstn = ((cmd - 'r') & 2) ? 0 : 1;
-  srstn = ((cmd - 'r') & 1) ? 0 : 1;
-}
-
-void remote_bitbang_t::set_pins(char _tck, char _tms, char _tdi){
-  tck = _tck;
-  tms = _tms;
-  tdi = _tdi;
-}
-
-void remote_bitbang_t::execute_command()
-{
-  char command;
-  int again = 1;
-  while (again) {
-    ssize_t num_read = read(client_fd, &command, sizeof(command));
-    if (num_read == -1) {
-      if (errno == EAGAIN) {
-        // We'll try again the next call.
-        //fprintf(stderr, "Received no command. Will try again on the next call\n");
-      } else {
-        fprintf(stderr, "remote_bitbang failed to read on socket: %s (%d)\n",
-                strerror(errno), errno);
-        again = 0;
-        abort();
-      }
-    } else if (num_read == 0) {
-      fprintf(stderr, "No Command Received.\n");
-      again = 1;
-    } else {
-      again = 0;
-    }
-  }
-
-  //fprintf(stderr, "Received a command %c\n", command);
-
-  int dosend = 0;
-
-  char tosend = '?';
-
-  switch (command) {
-  case 'B': /* fprintf(stderr, "*BLINK*\n"); */ break;
-  case 'b': /* fprintf(stderr, "_______\n"); */ break;
-  case 'r':
-  case 's':
-  case 'u':
-  case 't': reset(command); break;
-  case '0': set_pins(0, 0, 0); break;
-  case '1': set_pins(0, 0, 1); break;
-  case '2': set_pins(0, 1, 0); break;
-  case '3': set_pins(0, 1, 1); break;
-  case '4': set_pins(1, 0, 0); break;
-  case '5': set_pins(1, 0, 1); break;
-  case '6': set_pins(1, 1, 0); break;
-  case '7': set_pins(1, 1, 1); break;
-  case 'R': dosend = 1; tosend = tdo ? '1' : '0'; break;
-  case 'Q': quit = 1; break;
-  default:
-    fprintf(stderr, "remote_bitbang got unsupported command '%c'\n",
-            command);
-  }
-
-  if (dosend){
-    while (1) {
-      ssize_t bytes = write(client_fd, &tosend, sizeof(tosend));
-      if (bytes == -1) {
-        fprintf(stderr, "failed to write to socket: %s (%d)\n", strerror(errno), errno);
-        abort();
-      }
-      if (bytes > 0) {
-        break;
-      }
-    }
-  }
-
-  if (quit) {
-    // The remote disconnected.
-    fprintf(stderr, "Remote end disconnected\n");
-    close(client_fd);
-    client_fd = 0;
-  }
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/remote_bitbang.h b/verilog/rtl/BrqRV_EB1/testbench/remote_bitbang.h
deleted file mode 100644
index 554fee4..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/remote_bitbang.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// See LICENSE.Berkeley for license details.
-
-#ifndef REMOTE_BITBANG_H
-#define REMOTE_BITBANG_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-class remote_bitbang_t
-{
-public:
-  // Create a new server, listening for connections from localhost on the given
-  // port.
-  remote_bitbang_t(uint16_t port);
-
-  // Do a bit of work.
-  void tick(unsigned char * jtag_tck,
-            unsigned char * jtag_tms,
-            unsigned char * jtag_tdi,
-            unsigned char * jtag_trstn,
-            unsigned char * sysrstn,
-            unsigned char jtag_tdo);
-
-  unsigned char done() {return quit;}
-
-  int exit_code() {return err;}
-
- private:
-
-  int err;
-
-  unsigned char tck;
-  unsigned char tms;
-  unsigned char tdi;
-  unsigned char trstn;
-  unsigned char srstn;
-  unsigned char tdo;
-  unsigned char quit;
-
-  int socket_fd;
-  int client_fd;
-
-  static const ssize_t buf_size = 64 * 1024;
-  char recv_buf[buf_size];
-  ssize_t recv_start, recv_end;
-
-  // Check for a client connecting, and accept if there is one.
-  void accept();
-  // Execute any commands the client has for us.
-  // But we only execute 1 because we need time for the
-  // simulation to run.
-  void execute_command();
-
-  // Reset. .
-  void reset(char cmd);
-
-  void set_pins(char _tck, char _tms, char _tdi);
-
-};
-
-#endif
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tb_top.sv b/verilog/rtl/BrqRV_EB1/testbench/tb_top.sv
deleted file mode 100644
index f8a4162..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tb_top.sv
+++ /dev/null
@@ -1,1254 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-`ifndef VERILATOR
-module tb_top;
-`else
-module tb_top ( input bit core_clk );
-`endif
-
-`ifndef VERILATOR
-    bit                         core_clk;
-`endif
-    logic                       rst_l;
-    logic                       porst_l;
-    logic                       nmi_int;
-
-    logic        [31:0]         reset_vector;
-    logic        [31:0]         nmi_vector;
-    logic        [31:1]         jtag_id;
-
-    logic        [31:0]         ic_haddr        ;
-    logic        [2:0]          ic_hburst       ;
-    logic                       ic_hmastlock    ;
-    logic        [3:0]          ic_hprot        ;
-    logic        [2:0]          ic_hsize        ;
-    logic        [1:0]          ic_htrans       ;
-    logic                       ic_hwrite       ;
-    logic        [63:0]         ic_hrdata       ;
-    logic                       ic_hready       ;
-    logic                       ic_hresp        ;
-
-    logic        [31:0]         lsu_haddr       ;
-    logic        [2:0]          lsu_hburst      ;
-    logic                       lsu_hmastlock   ;
-    logic        [3:0]          lsu_hprot       ;
-    logic        [2:0]          lsu_hsize       ;
-    logic        [1:0]          lsu_htrans      ;
-    logic                       lsu_hwrite      ;
-    logic        [63:0]         lsu_hrdata      ;
-    logic        [63:0]         lsu_hwdata      ;
-    logic                       lsu_hready      ;
-    logic                       lsu_hresp        ;
-
-    logic        [31:0]         sb_haddr        ;
-    logic        [2:0]          sb_hburst       ;
-    logic                       sb_hmastlock    ;
-    logic        [3:0]          sb_hprot        ;
-    logic        [2:0]          sb_hsize        ;
-    logic        [1:0]          sb_htrans       ;
-    logic                       sb_hwrite       ;
-
-    logic        [63:0]         sb_hrdata       ;
-    logic        [63:0]         sb_hwdata       ;
-    logic                       sb_hready       ;
-    logic                       sb_hresp        ;
-
-    logic        [31:0]         trace_rv_i_insn_ip;
-    logic        [31:0]         trace_rv_i_address_ip;
-    logic                       trace_rv_i_valid_ip;
-    logic                       trace_rv_i_exception_ip;
-    logic        [4:0]          trace_rv_i_ecause_ip;
-    logic                       trace_rv_i_interrupt_ip;
-    logic        [31:0]         trace_rv_i_tval_ip;
-
-    logic                       o_debug_mode_status;
-
-
-    logic                       jtag_tdo;
-    logic                       o_cpu_halt_ack;
-    logic                       o_cpu_halt_status;
-    logic                       o_cpu_run_ack;
-
-    logic                       mailbox_write;
-    logic        [63:0]         dma_hrdata       ;
-    logic        [63:0]         dma_hwdata       ;
-    logic                       dma_hready       ;
-    logic                       dma_hresp        ;
-
-    logic                       mpc_debug_halt_req;
-    logic                       mpc_debug_run_req;
-    logic                       mpc_reset_run_req;
-    logic                       mpc_debug_halt_ack;
-    logic                       mpc_debug_run_ack;
-    logic                       debug_brkpt_status;
-
-    int                         cycleCnt;
-    logic                       mailbox_data_val;
-
-    wire                        dma_hready_out;
-    int                         commit_count;
-
-    logic                       wb_valid;
-    logic [4:0]                 wb_dest;
-    logic [31:0]                wb_data;
-
-`ifdef RV_BUILD_AXI4
-   //-------------------------- LSU AXI signals--------------------------
-   // AXI Write Channels
-    wire                        lsu_axi_awvalid;
-    wire                        lsu_axi_awready;
-    wire [`RV_LSU_BUS_TAG-1:0]  lsu_axi_awid;
-    wire [31:0]                 lsu_axi_awaddr;
-    wire [3:0]                  lsu_axi_awregion;
-    wire [7:0]                  lsu_axi_awlen;
-    wire [2:0]                  lsu_axi_awsize;
-    wire [1:0]                  lsu_axi_awburst;
-    wire                        lsu_axi_awlock;
-    wire [3:0]                  lsu_axi_awcache;
-    wire [2:0]                  lsu_axi_awprot;
-    wire [3:0]                  lsu_axi_awqos;
-
-    wire                        lsu_axi_wvalid;
-    wire                        lsu_axi_wready;
-    wire [63:0]                 lsu_axi_wdata;
-    wire [7:0]                  lsu_axi_wstrb;
-    wire                        lsu_axi_wlast;
-
-    wire                        lsu_axi_bvalid;
-    wire                        lsu_axi_bready;
-    wire [1:0]                  lsu_axi_bresp;
-    wire [`RV_LSU_BUS_TAG-1:0]  lsu_axi_bid;
-
-    // AXI Read Channels
-    wire                        lsu_axi_arvalid;
-    wire                        lsu_axi_arready;
-    wire [`RV_LSU_BUS_TAG-1:0]  lsu_axi_arid;
-    wire [31:0]                 lsu_axi_araddr;
-    wire [3:0]                  lsu_axi_arregion;
-    wire [7:0]                  lsu_axi_arlen;
-    wire [2:0]                  lsu_axi_arsize;
-    wire [1:0]                  lsu_axi_arburst;
-    wire                        lsu_axi_arlock;
-    wire [3:0]                  lsu_axi_arcache;
-    wire [2:0]                  lsu_axi_arprot;
-    wire [3:0]                  lsu_axi_arqos;
-
-    wire                        lsu_axi_rvalid;
-    wire                        lsu_axi_rready;
-    wire [`RV_LSU_BUS_TAG-1:0]  lsu_axi_rid;
-    wire [63:0]                 lsu_axi_rdata;
-    wire [1:0]                  lsu_axi_rresp;
-    wire                        lsu_axi_rlast;
-
-    //-------------------------- IFU AXI signals--------------------------
-    // AXI Write Channels
-    wire                        ifu_axi_awvalid;
-    wire                        ifu_axi_awready;
-    wire [`RV_IFU_BUS_TAG-1:0]  ifu_axi_awid;
-    wire [31:0]                 ifu_axi_awaddr;
-    wire [3:0]                  ifu_axi_awregion;
-    wire [7:0]                  ifu_axi_awlen;
-    wire [2:0]                  ifu_axi_awsize;
-    wire [1:0]                  ifu_axi_awburst;
-    wire                        ifu_axi_awlock;
-    wire [3:0]                  ifu_axi_awcache;
-    wire [2:0]                  ifu_axi_awprot;
-    wire [3:0]                  ifu_axi_awqos;
-
-    wire                        ifu_axi_wvalid;
-    wire                        ifu_axi_wready;
-    wire [63:0]                 ifu_axi_wdata;
-    wire [7:0]                  ifu_axi_wstrb;
-    wire                        ifu_axi_wlast;
-
-    wire                        ifu_axi_bvalid;
-    wire                        ifu_axi_bready;
-    wire [1:0]                  ifu_axi_bresp;
-    wire [`RV_IFU_BUS_TAG-1:0]  ifu_axi_bid;
-
-    // AXI Read Channels
-    wire                        ifu_axi_arvalid;
-    wire                        ifu_axi_arready;
-    wire [`RV_IFU_BUS_TAG-1:0]  ifu_axi_arid;
-    wire [31:0]                 ifu_axi_araddr;
-    wire [3:0]                  ifu_axi_arregion;
-    wire [7:0]                  ifu_axi_arlen;
-    wire [2:0]                  ifu_axi_arsize;
-    wire [1:0]                  ifu_axi_arburst;
-    wire                        ifu_axi_arlock;
-    wire [3:0]                  ifu_axi_arcache;
-    wire [2:0]                  ifu_axi_arprot;
-    wire [3:0]                  ifu_axi_arqos;
-
-    wire                        ifu_axi_rvalid;
-    wire                        ifu_axi_rready;
-    wire [`RV_IFU_BUS_TAG-1:0]  ifu_axi_rid;
-    wire [63:0]                 ifu_axi_rdata;
-    wire [1:0]                  ifu_axi_rresp;
-    wire                        ifu_axi_rlast;
-
-    //-------------------------- SB AXI signals--------------------------
-    // AXI Write Channels
-    wire                        sb_axi_awvalid;
-    wire                        sb_axi_awready;
-    wire [`RV_SB_BUS_TAG-1:0]   sb_axi_awid;
-    wire [31:0]                 sb_axi_awaddr;
-    wire [3:0]                  sb_axi_awregion;
-    wire [7:0]                  sb_axi_awlen;
-    wire [2:0]                  sb_axi_awsize;
-    wire [1:0]                  sb_axi_awburst;
-    wire                        sb_axi_awlock;
-    wire [3:0]                  sb_axi_awcache;
-    wire [2:0]                  sb_axi_awprot;
-    wire [3:0]                  sb_axi_awqos;
-
-    wire                        sb_axi_wvalid;
-    wire                        sb_axi_wready;
-    wire [63:0]                 sb_axi_wdata;
-    wire [7:0]                  sb_axi_wstrb;
-    wire                        sb_axi_wlast;
-
-    wire                        sb_axi_bvalid;
-    wire                        sb_axi_bready;
-    wire [1:0]                  sb_axi_bresp;
-    wire [`RV_SB_BUS_TAG-1:0]   sb_axi_bid;
-
-    // AXI Read Channels
-    wire                        sb_axi_arvalid;
-    wire                        sb_axi_arready;
-    wire [`RV_SB_BUS_TAG-1:0]   sb_axi_arid;
-    wire [31:0]                 sb_axi_araddr;
-    wire [3:0]                  sb_axi_arregion;
-    wire [7:0]                  sb_axi_arlen;
-    wire [2:0]                  sb_axi_arsize;
-    wire [1:0]                  sb_axi_arburst;
-    wire                        sb_axi_arlock;
-    wire [3:0]                  sb_axi_arcache;
-    wire [2:0]                  sb_axi_arprot;
-    wire [3:0]                  sb_axi_arqos;
-
-    wire                        sb_axi_rvalid;
-    wire                        sb_axi_rready;
-    wire [`RV_SB_BUS_TAG-1:0]   sb_axi_rid;
-    wire [63:0]                 sb_axi_rdata;
-    wire [1:0]                  sb_axi_rresp;
-    wire                        sb_axi_rlast;
-
-   //-------------------------- DMA AXI signals--------------------------
-   // AXI Write Channels
-    wire                        dma_axi_awvalid;
-    wire                        dma_axi_awready;
-    wire [`RV_DMA_BUS_TAG-1:0]  dma_axi_awid;
-    wire [31:0]                 dma_axi_awaddr;
-    wire [2:0]                  dma_axi_awsize;
-    wire [2:0]                  dma_axi_awprot;
-    wire [7:0]                  dma_axi_awlen;
-    wire [1:0]                  dma_axi_awburst;
-
-
-    wire                        dma_axi_wvalid;
-    wire                        dma_axi_wready;
-    wire [63:0]                 dma_axi_wdata;
-    wire [7:0]                  dma_axi_wstrb;
-    wire                        dma_axi_wlast;
-
-    wire                        dma_axi_bvalid;
-    wire                        dma_axi_bready;
-    wire [1:0]                  dma_axi_bresp;
-    wire [`RV_DMA_BUS_TAG-1:0]  dma_axi_bid;
-
-    // AXI Read Channels
-    wire                        dma_axi_arvalid;
-    wire                        dma_axi_arready;
-    wire [`RV_DMA_BUS_TAG-1:0]  dma_axi_arid;
-    wire [31:0]                 dma_axi_araddr;
-    wire [2:0]                  dma_axi_arsize;
-    wire [2:0]                  dma_axi_arprot;
-    wire [7:0]                  dma_axi_arlen;
-    wire [1:0]                  dma_axi_arburst;
-
-    wire                        dma_axi_rvalid;
-    wire                        dma_axi_rready;
-    wire [`RV_DMA_BUS_TAG-1:0]  dma_axi_rid;
-    wire [63:0]                 dma_axi_rdata;
-    wire [1:0]                  dma_axi_rresp;
-    wire                        dma_axi_rlast;
-
-    wire                        lmem_axi_arvalid;
-    wire                        lmem_axi_arready;
-
-    wire                        lmem_axi_rvalid;
-    wire [`RV_LSU_BUS_TAG-1:0]  lmem_axi_rid;
-    wire [1:0]                  lmem_axi_rresp;
-    wire [63:0]                 lmem_axi_rdata;
-    wire                        lmem_axi_rlast;
-    wire                        lmem_axi_rready;
-
-    wire                        lmem_axi_awvalid;
-    wire                        lmem_axi_awready;
-
-    wire                        lmem_axi_wvalid;
-    wire                        lmem_axi_wready;
-
-    wire [1:0]                  lmem_axi_bresp;
-    wire                        lmem_axi_bvalid;
-    wire [`RV_LSU_BUS_TAG-1:0]  lmem_axi_bid;
-    wire                        lmem_axi_bready;
-
-`endif
-    wire[63:0] WriteData;
-    reg [31:0][31:0] scalar_expected;
-    reg [31:0][31:0] scalar_actual; 
-    reg [5:0] scalar_count;
-    //reg [5:0] vector_count;
-    string                      abi_reg[32]; // ABI register names
-
-
-    assign mailbox_write = lmem.mailbox_write;
-    assign WriteData = lmem.WriteData;
-    assign mailbox_data_val = WriteData[7:0] > 8'h5 && WriteData[7:0] < 8'h7f;
-    
-    
-    always @(posedge core_clk) begin
-    	if(mailbox_write & (scalar_count < 6'h20) & ~o_cpu_halt_status) begin
-    		if(scalar_count % 2 == 1'b0) begin
-    			scalar_actual[scalar_count][31:0] = WriteData[31:0];
-    		end
-    		else begin
-    			scalar_actual[scalar_count][31:0] = WriteData[63:32];
-    		end
-    		scalar_count = scalar_count + 1'b1;
-    	end
-    	/*else if(mailbox_write & (vector_count < 6'h20) & o_cpu_halt_status) begin
-    		vector_expected[vector_count][31:0] = WriteData[31:0];
-    		vector_count = vector_count + 1'b1;
-    	end*/
-    end 
-
-    parameter MAX_CYCLES = 2_000_000;
-
-    integer fd, tp, el;
-
-    always @(negedge core_clk) begin
-        cycleCnt <= cycleCnt+1;
-        // Test timeout monitor
-        if(cycleCnt == MAX_CYCLES) begin
-            $display ("Hit max cycle count (%0d) .. stopping",cycleCnt);
-            $finish;
-        end
-        // console Monitor
-        if( mailbox_data_val & mailbox_write) begin
-            $fwrite(fd,"%c", WriteData[7:0]);
-            $write("%c", WriteData[7:0]);
-        end
-        // End Of test monitor
-        if(mailbox_write && WriteData[7:0] == 8'hff) begin
-            if(scalar_expected == scalar_actual) begin
-            		$display("Self Checking TEST Passed");
-            end
-            else begin
-            		$display("Self Checking TEST Failed");
-            end
-            //$display("TEST_PASSED");
-            $display("\nFinished : minstret = %0d, mcycle = %0d", rvtop.brqrv.dec.tlu.minstretl[31:0],rvtop.brqrv.dec.tlu.mcyclel[31:0]);
-            $display("See \"exec.log\" for execution trace with register updates..\n");
-            $finish;
-        end
-      //  else if(mailbox_write && WriteData[7:0] == 8'h1) begin
-      //      $display("TEST_FAILED");
-      //      $finish;
-      //  end
-    end
-
-
-    // trace monitor
-    always @(posedge core_clk) begin
-        wb_valid  <= rvtop.brqrv.dec.dec_i0_wen_r;
-        wb_dest   <= rvtop.brqrv.dec.dec_i0_waddr_r;
-        wb_data   <= rvtop.brqrv.dec.dec_i0_wdata_r;
-        if (trace_rv_i_valid_ip) begin
-           $fwrite(tp,"%b,%h,%h,%0h,%0h,3,%b,%h,%h,%b\n", trace_rv_i_valid_ip, 0, trace_rv_i_address_ip,
-                  0, trace_rv_i_insn_ip,trace_rv_i_exception_ip,trace_rv_i_ecause_ip,
-                  trace_rv_i_tval_ip,trace_rv_i_interrupt_ip);
-           // Basic trace - no exception register updates
-           // #1 0 ee000000 b0201073 c 0b02       00000000
-           commit_count++;
-           $fwrite (el, "%10d : %8s 0 %h %h%13s ; %s\n", cycleCnt, $sformatf("#%0d",commit_count),
-                        trace_rv_i_address_ip, trace_rv_i_insn_ip,
-                        (wb_dest !=0 && wb_valid)?  $sformatf("%s=%h", abi_reg[wb_dest], wb_data) : "             ",
-                        dasm(trace_rv_i_insn_ip, trace_rv_i_address_ip, wb_dest & {5{wb_valid}}, wb_data)
-                   );
-        end
-        if(rvtop.brqrv.dec.dec_nonblock_load_wen)
-           $fwrite (el, "%10d : %32s=%h ; nbL\n", cycleCnt, abi_reg[rvtop.brqrv.dec.dec_nonblock_load_waddr], rvtop.brqrv.dec.lsu_nonblock_load_data);
-        if(rvtop.brqrv.dec.exu_div_wren)
-           $fwrite (el, "%10d : %32s=%h ; nbD\n", cycleCnt, abi_reg[rvtop.brqrv.dec.div_waddr_wb], rvtop.brqrv.dec.exu_div_result);
-    end
-
-
-    initial begin
-        abi_reg[0] = "zero";
-        abi_reg[1] = "ra";
-        abi_reg[2] = "sp";
-        abi_reg[3] = "gp";
-        abi_reg[4] = "tp";
-        abi_reg[5] = "t0";
-        abi_reg[6] = "t1";
-        abi_reg[7] = "t2";
-        abi_reg[8] = "s0";
-        abi_reg[9] = "s1";
-        abi_reg[10] = "a0";
-        abi_reg[11] = "a1";
-        abi_reg[12] = "a2";
-        abi_reg[13] = "a3";
-        abi_reg[14] = "a4";
-        abi_reg[15] = "a5";
-        abi_reg[16] = "a6";
-        abi_reg[17] = "a7";
-        abi_reg[18] = "s2";
-        abi_reg[19] = "s3";
-        abi_reg[20] = "s4";
-        abi_reg[21] = "s5";
-        abi_reg[22] = "s6";
-        abi_reg[23] = "s7";
-        abi_reg[24] = "s8";
-        abi_reg[25] = "s9";
-        abi_reg[26] = "s10";
-        abi_reg[27] = "s11";
-        abi_reg[28] = "t3";
-        abi_reg[29] = "t4";
-        abi_reg[30] = "t5";
-        abi_reg[31] = "t6";
-        
-        // Scalar expected result
-        scalar_expected[0] = 32'd1;
-        scalar_expected[1] = 32'd2;
-        scalar_expected[2] = 32'd6;
-        scalar_expected[3] = 32'd24;
-        scalar_expected[4] = 32'd120;
-        scalar_expected[5] = 32'd720;
-        scalar_expected[6] = 32'd5040;
-        scalar_expected[7] = 32'd40320;
-        scalar_expected[8] = 32'd362880;
-        scalar_expected[9] = 32'd3628800;
-        scalar_expected[10] = 32'd0;
-        scalar_expected[11] = 32'h0;
-        scalar_expected[12] = 32'h0;
-        scalar_expected[13] = 32'h0;
-        scalar_expected[14] = 32'h0;
-        scalar_expected[15] = 32'h0;
-        scalar_expected[16] = 32'h0;
-        scalar_expected[17] = 32'h0;
-        scalar_expected[18] = 32'h0;
-        scalar_expected[19] = 32'h0;
-        scalar_expected[20] = 32'h0;
-        scalar_expected[21] = 32'h0;
-        scalar_expected[22] = 32'h0;
-        scalar_expected[23] = 32'h0;
-        scalar_expected[24] = 32'h0;
-        scalar_expected[25] = 32'h0;
-        scalar_expected[26] = 32'h0;
-        scalar_expected[27] = 32'h0;
-        scalar_expected[28] = 32'h0;
-        scalar_expected[29] = 32'h0;
-        scalar_expected[30] = 32'h0;
-        scalar_expected[31] = 32'h0;
-        
-        
-        
-        
-    // tie offs
-        jtag_id[31:28] = 4'b1;
-        jtag_id[27:12] = '0;
-        jtag_id[11:1]  = 11'h45;
-        reset_vector = `RV_RESET_VEC;
-        nmi_vector   = 32'hee000000;
-        nmi_int   = 0;
-        scalar_count = 6'h00;
-        scalar_actual = {1024{1'b0}};
-        //vector_count = 6'h00;
-        //scalar_actual = {1024{1'b0}};
-        //vector_expected = {1024{1'b0}};
-
-        $readmemh("program.hex",  lmem.mem);
-        $readmemh("program.hex",  imem.mem);
-        //$readmemh("program.hex",  uart_programmer.INSTR);
-        tp = $fopen("trace_port.csv","w");
-        el = $fopen("exec.log","w");
-        $fwrite (el, "//   Cycle : #inst    0    pc    opcode    reg=value   ; mnemonic\n");
-        fd = $fopen("console.log","w");
-        commit_count = 0;
-        //preload_dccm();
-        //preload_iccm();
-
-`ifndef VERILATOR
-        if($test$plusargs("dumpon")) $dumpvars;
-        forever  core_clk = #5 ~core_clk;
-`endif
-    end
-
-
-    assign rst_l = cycleCnt > 5;
-    assign porst_l = cycleCnt > 2;
-
-// UART Testbench
-logic rx_valid;
-wire i_rx;
-assign rx_valid = 1'b1;
-
-// UART Programming Testbench module
-uartprog #(.FILENAME("uart.hex"))
-       uart_programmer (
-       	.clk(core_clk),
-    		.mprj_ready(rx_valid),
-    		.r_Rx_Serial(i_rx) // used by task UART_WRITE_BYTE
-);
-   //=========================================================================-
-   // RTL instance
-   //=========================================================================-
-eb1_brqrv_wrapper rvtop (
-    .vccd1		     (1'b1           ),
-    .vssd1		     (1'b0           ),
-    .rst_l                  ( rst_l         ),
-    .dbg_rst_l              ( porst_l       ),
-    .clk                    ( core_clk      ),
-    .rst_vec                ( reset_vector[31:1]),
-    .nmi_int                ( nmi_int       ),
-    .nmi_vec                ( nmi_vector[31:1]),
-    .jtag_id                ( jtag_id[31:1]),
-    .uart_rx		     (i_rx),
-    .CLKS_PER_BIT           (16'd10),
-
-`ifdef RV_BUILD_AHB_LITE
-    .haddr                  ( ic_haddr      ),
-    .hburst                 ( ic_hburst     ),
-    .hmastlock              ( ic_hmastlock  ),
-    .hprot                  ( ic_hprot      ),
-    .hsize                  ( ic_hsize      ),
-    .htrans                 ( ic_htrans     ),
-    .hwrite                 ( ic_hwrite     ),
-
-    .hrdata                 ( ic_hrdata[63:0]),
-    .hready                 ( ic_hready     ),
-    .hresp                  ( ic_hresp      ),
-
-    //---------------------------------------------------------------
-    // Debug AHB Master
-    //---------------------------------------------------------------
-    .sb_haddr               ( sb_haddr      ),
-    .sb_hburst              ( sb_hburst     ),
-    .sb_hmastlock           ( sb_hmastlock  ),
-    .sb_hprot               ( sb_hprot      ),
-    .sb_hsize               ( sb_hsize      ),
-    .sb_htrans              ( sb_htrans     ),
-    .sb_hwrite              ( sb_hwrite     ),
-    .sb_hwdata              ( sb_hwdata     ),
-
-    .sb_hrdata              ( sb_hrdata     ),
-    .sb_hready              ( sb_hready     ),
-    .sb_hresp               ( sb_hresp      ),
-
-    //---------------------------------------------------------------
-    // LSU AHB Master
-    //---------------------------------------------------------------
-    .lsu_haddr              ( lsu_haddr       ),
-    .lsu_hburst             ( lsu_hburst      ),
-    .lsu_hmastlock          ( lsu_hmastlock   ),
-    .lsu_hprot              ( lsu_hprot       ),
-    .lsu_hsize              ( lsu_hsize       ),
-    .lsu_htrans             ( lsu_htrans      ),
-    .lsu_hwrite             ( lsu_hwrite      ),
-    .lsu_hwdata             ( lsu_hwdata      ),
-
-    .lsu_hrdata             ( lsu_hrdata[63:0]),
-    .lsu_hready             ( lsu_hready      ),
-    .lsu_hresp              ( lsu_hresp       ),
-
-    //---------------------------------------------------------------
-    // DMA Slave
-    //---------------------------------------------------------------
-    .dma_haddr              ( '0 ),
-    .dma_hburst             ( '0 ),
-    .dma_hmastlock          ( '0 ),
-    .dma_hprot              ( '0 ),
-    .dma_hsize              ( '0 ),
-    .dma_htrans             ( '0 ),
-    .dma_hwrite             ( '0 ),
-    .dma_hwdata             ( '0 ),
-
-    .dma_hrdata             ( dma_hrdata    ),
-    .dma_hresp              ( dma_hresp     ),
-    .dma_hsel               ( 1'b1            ),
-    .dma_hreadyin           ( dma_hready_out  ),
-    .dma_hreadyout          ( dma_hready_out  ),
-`endif
-`ifdef RV_BUILD_AXI4
-    //-------------------------- LSU AXI signals--------------------------
-    // AXI Write Channels
-    .lsu_axi_awvalid        (lsu_axi_awvalid),
-    .lsu_axi_awready        (lsu_axi_awready),
-    .lsu_axi_awid           (lsu_axi_awid),
-    .lsu_axi_awaddr         (lsu_axi_awaddr),
-    .lsu_axi_awregion       (lsu_axi_awregion),
-    .lsu_axi_awlen          (lsu_axi_awlen),
-    .lsu_axi_awsize         (lsu_axi_awsize),
-    .lsu_axi_awburst        (lsu_axi_awburst),
-    .lsu_axi_awlock         (lsu_axi_awlock),
-    .lsu_axi_awcache        (lsu_axi_awcache),
-    .lsu_axi_awprot         (lsu_axi_awprot),
-    .lsu_axi_awqos          (lsu_axi_awqos),
-
-    .lsu_axi_wvalid         (lsu_axi_wvalid),
-    .lsu_axi_wready         (lsu_axi_wready),
-    .lsu_axi_wdata          (lsu_axi_wdata),
-    .lsu_axi_wstrb          (lsu_axi_wstrb),
-    .lsu_axi_wlast          (lsu_axi_wlast),
-
-    .lsu_axi_bvalid         (lsu_axi_bvalid),
-    .lsu_axi_bready         (lsu_axi_bready),
-    .lsu_axi_bresp          (lsu_axi_bresp),
-    .lsu_axi_bid            (lsu_axi_bid),
-
-
-    .lsu_axi_arvalid        (lsu_axi_arvalid),
-    .lsu_axi_arready        (lsu_axi_arready),
-    .lsu_axi_arid           (lsu_axi_arid),
-    .lsu_axi_araddr         (lsu_axi_araddr),
-    .lsu_axi_arregion       (lsu_axi_arregion),
-    .lsu_axi_arlen          (lsu_axi_arlen),
-    .lsu_axi_arsize         (lsu_axi_arsize),
-    .lsu_axi_arburst        (lsu_axi_arburst),
-    .lsu_axi_arlock         (lsu_axi_arlock),
-    .lsu_axi_arcache        (lsu_axi_arcache),
-    .lsu_axi_arprot         (lsu_axi_arprot),
-    .lsu_axi_arqos          (lsu_axi_arqos),
-
-    .lsu_axi_rvalid         (lsu_axi_rvalid),
-    .lsu_axi_rready         (lsu_axi_rready),
-    .lsu_axi_rid            (lsu_axi_rid),
-    .lsu_axi_rdata          (lsu_axi_rdata),
-    .lsu_axi_rresp          (lsu_axi_rresp),
-    .lsu_axi_rlast          (lsu_axi_rlast),
-
-    //-------------------------- IFU AXI signals--------------------------
-    // AXI Write Channels
-    .ifu_axi_awvalid        (ifu_axi_awvalid),
-    .ifu_axi_awready        (ifu_axi_awready),
-    .ifu_axi_awid           (ifu_axi_awid),
-    .ifu_axi_awaddr         (ifu_axi_awaddr),
-    .ifu_axi_awregion       (ifu_axi_awregion),
-    .ifu_axi_awlen          (ifu_axi_awlen),
-    .ifu_axi_awsize         (ifu_axi_awsize),
-    .ifu_axi_awburst        (ifu_axi_awburst),
-    .ifu_axi_awlock         (ifu_axi_awlock),
-    .ifu_axi_awcache        (ifu_axi_awcache),
-    .ifu_axi_awprot         (ifu_axi_awprot),
-    .ifu_axi_awqos          (ifu_axi_awqos),
-
-    .ifu_axi_wvalid         (ifu_axi_wvalid),
-    .ifu_axi_wready         (ifu_axi_wready),
-    .ifu_axi_wdata          (ifu_axi_wdata),
-    .ifu_axi_wstrb          (ifu_axi_wstrb),
-    .ifu_axi_wlast          (ifu_axi_wlast),
-
-    .ifu_axi_bvalid         (ifu_axi_bvalid),
-    .ifu_axi_bready         (ifu_axi_bready),
-    .ifu_axi_bresp          (ifu_axi_bresp),
-    .ifu_axi_bid            (ifu_axi_bid),
-
-    .ifu_axi_arvalid        (ifu_axi_arvalid),
-    .ifu_axi_arready        (ifu_axi_arready),
-    .ifu_axi_arid           (ifu_axi_arid),
-    .ifu_axi_araddr         (ifu_axi_araddr),
-    .ifu_axi_arregion       (ifu_axi_arregion),
-    .ifu_axi_arlen          (ifu_axi_arlen),
-    .ifu_axi_arsize         (ifu_axi_arsize),
-    .ifu_axi_arburst        (ifu_axi_arburst),
-    .ifu_axi_arlock         (ifu_axi_arlock),
-    .ifu_axi_arcache        (ifu_axi_arcache),
-    .ifu_axi_arprot         (ifu_axi_arprot),
-    .ifu_axi_arqos          (ifu_axi_arqos),
-
-    .ifu_axi_rvalid         (ifu_axi_rvalid),
-    .ifu_axi_rready         (ifu_axi_rready),
-    .ifu_axi_rid            (ifu_axi_rid),
-    .ifu_axi_rdata          (ifu_axi_rdata),
-    .ifu_axi_rresp          (ifu_axi_rresp),
-    .ifu_axi_rlast          (ifu_axi_rlast),
-
-    //-------------------------- SB AXI signals--------------------------
-    // AXI Write Channels
-    .sb_axi_awvalid         (sb_axi_awvalid),
-    .sb_axi_awready         (sb_axi_awready),
-    .sb_axi_awid            (sb_axi_awid),
-    .sb_axi_awaddr          (sb_axi_awaddr),
-    .sb_axi_awregion        (sb_axi_awregion),
-    .sb_axi_awlen           (sb_axi_awlen),
-    .sb_axi_awsize          (sb_axi_awsize),
-    .sb_axi_awburst         (sb_axi_awburst),
-    .sb_axi_awlock          (sb_axi_awlock),
-    .sb_axi_awcache         (sb_axi_awcache),
-    .sb_axi_awprot          (sb_axi_awprot),
-    .sb_axi_awqos           (sb_axi_awqos),
-
-    .sb_axi_wvalid          (sb_axi_wvalid),
-    .sb_axi_wready          (sb_axi_wready),
-    .sb_axi_wdata           (sb_axi_wdata),
-    .sb_axi_wstrb           (sb_axi_wstrb),
-    .sb_axi_wlast           (sb_axi_wlast),
-
-    .sb_axi_bvalid          (sb_axi_bvalid),
-    .sb_axi_bready          (sb_axi_bready),
-    .sb_axi_bresp           (sb_axi_bresp),
-    .sb_axi_bid             (sb_axi_bid),
-
-
-    .sb_axi_arvalid         (sb_axi_arvalid),
-    .sb_axi_arready         (sb_axi_arready),
-    .sb_axi_arid            (sb_axi_arid),
-    .sb_axi_araddr          (sb_axi_araddr),
-    .sb_axi_arregion        (sb_axi_arregion),
-    .sb_axi_arlen           (sb_axi_arlen),
-    .sb_axi_arsize          (sb_axi_arsize),
-    .sb_axi_arburst         (sb_axi_arburst),
-    .sb_axi_arlock          (sb_axi_arlock),
-    .sb_axi_arcache         (sb_axi_arcache),
-    .sb_axi_arprot          (sb_axi_arprot),
-    .sb_axi_arqos           (sb_axi_arqos),
-
-    .sb_axi_rvalid          (sb_axi_rvalid),
-    .sb_axi_rready          (sb_axi_rready),
-    .sb_axi_rid             (sb_axi_rid),
-    .sb_axi_rdata           (sb_axi_rdata),
-    .sb_axi_rresp           (sb_axi_rresp),
-    .sb_axi_rlast           (sb_axi_rlast),
-
-    //-------------------------- DMA AXI signals--------------------------
-    // AXI Write Channels
-    .dma_axi_awvalid        (dma_axi_awvalid),
-    .dma_axi_awready        (dma_axi_awready),
-    .dma_axi_awid           ('0),
-    .dma_axi_awaddr         (lsu_axi_awaddr),
-    .dma_axi_awsize         (lsu_axi_awsize),
-    .dma_axi_awprot         (lsu_axi_awprot),
-    .dma_axi_awlen          (lsu_axi_awlen),
-    .dma_axi_awburst        (lsu_axi_awburst),
-
-
-    .dma_axi_wvalid         (dma_axi_wvalid),
-    .dma_axi_wready         (dma_axi_wready),
-    .dma_axi_wdata          (lsu_axi_wdata),
-    .dma_axi_wstrb          (lsu_axi_wstrb),
-    .dma_axi_wlast          (lsu_axi_wlast),
-
-    .dma_axi_bvalid         (dma_axi_bvalid),
-    .dma_axi_bready         (dma_axi_bready),
-    .dma_axi_bresp          (dma_axi_bresp),
-    .dma_axi_bid            (),
-
-
-    .dma_axi_arvalid        (dma_axi_arvalid),
-    .dma_axi_arready        (dma_axi_arready),
-    .dma_axi_arid           ('0),
-    .dma_axi_araddr         (lsu_axi_araddr),
-    .dma_axi_arsize         (lsu_axi_arsize),
-    .dma_axi_arprot         (lsu_axi_arprot),
-    .dma_axi_arlen          (lsu_axi_arlen),
-    .dma_axi_arburst        (lsu_axi_arburst),
-
-    .dma_axi_rvalid         (dma_axi_rvalid),
-    .dma_axi_rready         (dma_axi_rready),
-    .dma_axi_rid            (),
-    .dma_axi_rdata          (dma_axi_rdata),
-    .dma_axi_rresp          (dma_axi_rresp),
-    .dma_axi_rlast          (dma_axi_rlast),
-`endif
-    .timer_int              ( 1'b0     ),
-    .extintsrc_req          ( '0  ),
-
-    .lsu_bus_clk_en         ( 1'b1  ),// Clock ratio b/w cpu core clk & AHB master interface
-    .ifu_bus_clk_en         ( 1'b1  ),// Clock ratio b/w cpu core clk & AHB master interface
-    .dbg_bus_clk_en         ( 1'b1  ),// Clock ratio b/w cpu core clk & AHB Debug master interface
-    .dma_bus_clk_en         ( 1'b1  ),// Clock ratio b/w cpu core clk & AHB slave interface
-
-    .trace_rv_i_insn_ip     (trace_rv_i_insn_ip),
-    .trace_rv_i_address_ip  (trace_rv_i_address_ip),
-    .trace_rv_i_valid_ip    (trace_rv_i_valid_ip),
-    .trace_rv_i_exception_ip(trace_rv_i_exception_ip),
-    .trace_rv_i_ecause_ip   (trace_rv_i_ecause_ip),
-    .trace_rv_i_interrupt_ip(trace_rv_i_interrupt_ip),
-    .trace_rv_i_tval_ip     (trace_rv_i_tval_ip),
-
-    .jtag_tck               ( 1'b0  ),
-    .jtag_tms               ( 1'b0  ),
-    .jtag_tdi               ( 1'b0  ),
-    .jtag_trst_n            ( 1'b0  ),
-    .jtag_tdo               ( jtag_tdo ),
-
-    .mpc_debug_halt_ack     ( mpc_debug_halt_ack),
-    .mpc_debug_halt_req     ( 1'b0),
-    .mpc_debug_run_ack      ( mpc_debug_run_ack),
-    .mpc_debug_run_req      ( 1'b1),
-    .mpc_reset_run_req      ( 1'b1),             // Start running after reset
-     .debug_brkpt_status    (debug_brkpt_status),
-
-    .i_cpu_halt_req         ( 1'b0  ),    // Async halt req to CPU
-    .o_cpu_halt_ack         ( o_cpu_halt_ack ),    // core response to halt
-    .o_cpu_halt_status      ( o_cpu_halt_status ), // 1'b1 indicates core is halted
-    .i_cpu_run_req          ( 1'b0  ),     // Async restart req to CPU
-    .o_debug_mode_status    (o_debug_mode_status),
-    .o_cpu_run_ack          ( o_cpu_run_ack ),     // Core response to run req
-
-    .dec_tlu_perfcnt0       (),
-    .dec_tlu_perfcnt1       (),
-    .dec_tlu_perfcnt2       (),
-    .dec_tlu_perfcnt3       (),
-
-// remove mems DFT pins for opensource
-    .dccm_ext_in_pkt        ('0),
-    .iccm_ext_in_pkt        ('0),
-    .ic_data_ext_in_pkt     ('0),
-    .ic_tag_ext_in_pkt      ('0),
-
-    .soft_int               ('0),
-    .core_id                ('0),
-    .scan_mode              ( 1'b0 ),         // To enable scan mode
-    .mbist_mode             ( 1'b0 )        // to enable mbist
-
-);
-
-
-   //=========================================================================-
-   // AHB I$ instance
-   //=========================================================================-
-`ifdef RV_BUILD_AHB_LITE
-
-ahb_sif imem (
-     // Inputs
-     .HWDATA(64'h0),
-     .HCLK(core_clk),
-     .HSEL(1'b1),
-     .HPROT(ic_hprot),
-     .HWRITE(ic_hwrite),
-     .HTRANS(ic_htrans),
-     .HSIZE(ic_hsize),
-     .HREADY(ic_hready),
-     .HRESETn(rst_l),
-     .HADDR(ic_haddr),
-     .HBURST(ic_hburst),
-
-     // Outputs
-     .HREADYOUT(ic_hready),
-     .HRESP(ic_hresp),
-     .HRDATA(ic_hrdata[63:0])
-);
-
-
-ahb_sif lmem (
-     // Inputs
-     .HWDATA(lsu_hwdata),
-     .HCLK(core_clk),
-     .HSEL(1'b1),
-     .HPROT(lsu_hprot),
-     .HWRITE(lsu_hwrite),
-     .HTRANS(lsu_htrans),
-     .HSIZE(lsu_hsize),
-     .HREADY(lsu_hready),
-     .HRESETn(rst_l),
-     .HADDR(lsu_haddr),
-     .HBURST(lsu_hburst),
-
-     // Outputs
-     .HREADYOUT(lsu_hready),
-     .HRESP(lsu_hresp),
-     .HRDATA(lsu_hrdata[63:0])
-);
-
-`endif
-`ifdef RV_BUILD_AXI4
-axi_slv #(.TAGW(`RV_IFU_BUS_TAG)) imem(
-    .aclk(core_clk),
-    .rst_l(rst_l),
-    .arvalid(ifu_axi_arvalid),
-    .arready(ifu_axi_arready),
-    .araddr(ifu_axi_araddr),
-    .arid(ifu_axi_arid),
-    .arlen(ifu_axi_arlen),
-    .arburst(ifu_axi_arburst),
-    .arsize(ifu_axi_arsize),
-
-    .rvalid(ifu_axi_rvalid),
-    .rready(ifu_axi_rready),
-    .rdata(ifu_axi_rdata),
-    .rresp(ifu_axi_rresp),
-    .rid(ifu_axi_rid),
-    .rlast(ifu_axi_rlast),
-
-    .awvalid(1'b0),
-    .awready(),
-    .awaddr('0),
-    .awid('0),
-    .awlen('0),
-    .awburst('0),
-    .awsize('0),
-
-    .wdata('0),
-    .wstrb('0),
-    .wvalid(1'b0),
-    .wready(),
-
-    .bvalid(),
-    .bready(1'b0),
-    .bresp(),
-    .bid()
-);
-
-defparam lmem.TAGW =`RV_LSU_BUS_TAG;
-
-//axi_slv #(.TAGW(`RV_LSU_BUS_TAG)) lmem(
-axi_slv  lmem(
-    .aclk(core_clk),
-    .rst_l(rst_l),
-    .arvalid(lmem_axi_arvalid),
-    .arready(lmem_axi_arready),
-    .araddr(lsu_axi_araddr),
-    .arid(lsu_axi_arid),
-    .arlen(lsu_axi_arlen),
-    .arburst(lsu_axi_arburst),
-    .arsize(lsu_axi_arsize),
-
-    .rvalid(lmem_axi_rvalid),
-    .rready(lmem_axi_rready),
-    .rdata(lmem_axi_rdata),
-    .rresp(lmem_axi_rresp),
-    .rid(lmem_axi_rid),
-    .rlast(lmem_axi_rlast),
-
-    .awvalid(lmem_axi_awvalid),
-    .awready(lmem_axi_awready),
-    .awaddr(lsu_axi_awaddr),
-    .awid(lsu_axi_awid),
-    .awlen(lsu_axi_awlen),
-    .awburst(lsu_axi_awburst),
-    .awsize(lsu_axi_awsize),
-
-    .wdata(lsu_axi_wdata),
-    .wstrb(lsu_axi_wstrb),
-    .wvalid(lmem_axi_wvalid),
-    .wready(lmem_axi_wready),
-
-    .bvalid(lmem_axi_bvalid),
-    .bready(lmem_axi_bready),
-    .bresp(lmem_axi_bresp),
-    .bid(lmem_axi_bid)
-);
-
-axi_lsu_dma_bridge # (`RV_LSU_BUS_TAG,`RV_LSU_BUS_TAG ) bridge(
-    .clk(core_clk),
-    .reset_l(rst_l),
-
-    .m_arvalid(lsu_axi_arvalid),
-    .m_arid(lsu_axi_arid),
-    .m_araddr(lsu_axi_araddr),
-    .m_arready(lsu_axi_arready),
-
-    .m_rvalid(lsu_axi_rvalid),
-    .m_rready(lsu_axi_rready),
-    .m_rdata(lsu_axi_rdata),
-    .m_rid(lsu_axi_rid),
-    .m_rresp(lsu_axi_rresp),
-    .m_rlast(lsu_axi_rlast),
-
-    .m_awvalid(lsu_axi_awvalid),
-    .m_awid(lsu_axi_awid),
-    .m_awaddr(lsu_axi_awaddr),
-    .m_awready(lsu_axi_awready),
-
-    .m_wvalid(lsu_axi_wvalid),
-    .m_wready(lsu_axi_wready),
-
-    .m_bresp(lsu_axi_bresp),
-    .m_bvalid(lsu_axi_bvalid),
-    .m_bid(lsu_axi_bid),
-    .m_bready(lsu_axi_bready),
-
-    .s0_arvalid(lmem_axi_arvalid),
-    .s0_arready(lmem_axi_arready),
-
-    .s0_rvalid(lmem_axi_rvalid),
-    .s0_rid(lmem_axi_rid),
-    .s0_rresp(lmem_axi_rresp),
-    .s0_rdata(lmem_axi_rdata),
-    .s0_rlast(lmem_axi_rlast),
-    .s0_rready(lmem_axi_rready),
-
-    .s0_awvalid(lmem_axi_awvalid),
-    .s0_awready(lmem_axi_awready),
-
-    .s0_wvalid(lmem_axi_wvalid),
-    .s0_wready(lmem_axi_wready),
-
-    .s0_bresp(lmem_axi_bresp),
-    .s0_bvalid(lmem_axi_bvalid),
-    .s0_bid(lmem_axi_bid),
-    .s0_bready(lmem_axi_bready),
-
-
-    .s1_arvalid(dma_axi_arvalid),
-    .s1_arready(dma_axi_arready),
-
-    .s1_rvalid(dma_axi_rvalid),
-    .s1_rresp(dma_axi_rresp),
-    .s1_rdata(dma_axi_rdata),
-    .s1_rlast(dma_axi_rlast),
-    .s1_rready(dma_axi_rready),
-
-    .s1_awvalid(dma_axi_awvalid),
-    .s1_awready(dma_axi_awready),
-
-    .s1_wvalid(dma_axi_wvalid),
-    .s1_wready(dma_axi_wready),
-
-    .s1_bresp(dma_axi_bresp),
-    .s1_bvalid(dma_axi_bvalid),
-    .s1_bready(dma_axi_bready)
-);
-
-
-`endif
-
-
-/*
-task preload_iccm;
-bit[31:0] data;
-bit[31:0] addr, eaddr, saddr;
-
-/*
-addresses:
- 0xfffffff0 - ICCM start address to load
- 0xfffffff4 - ICCM end address to load
-*/
-/*
-addr = 'hffff_fff0;
-saddr = {lmem.mem[addr+3],lmem.mem[addr+2],lmem.mem[addr+1],lmem.mem[addr]};
-if ( (saddr < `RV_ICCM_SADR) || (saddr > `RV_ICCM_EADR)) return;
-`ifndef RV_ICCM_ENABLE
-    $display("********************************************************");
-    $display("ICCM preload: there is no ICCM in brqrv, terminating !!!");
-    $display("********************************************************");
-    $finish;
-`endif
-addr += 4;
-eaddr = {lmem.mem[addr+3],lmem.mem[addr+2],lmem.mem[addr+1],lmem.mem[addr]};
-$display("ICCM pre-load from %h to %h", saddr, eaddr);
-
-for(addr= saddr; addr <= eaddr; addr+=4) begin
-    data = {imem.mem[addr+3],imem.mem[addr+2],imem.mem[addr+1],imem.mem[addr]};
-    slam_iccm_ram(addr, data == 0 ? 0 : {riscv_ecc32(data),data});
-end
-
-endtask
-*/
-/*
-task preload_dccm;
-bit[31:0] data;
-bit[31:0] addr, saddr, eaddr;
-
-/*
-addresses:
- 0xffff_fff8 - DCCM start address to load
- 0xffff_fffc - DCCM end address to load
-*/
-/*
-addr = 'hffff_fff8;
-saddr = {lmem.mem[addr+3],lmem.mem[addr+2],lmem.mem[addr+1],lmem.mem[addr]}; // f0040000
-if (saddr < `RV_DCCM_SADR || saddr > `RV_DCCM_EADR) return;
-`ifndef RV_DCCM_ENABLE
-    $display("********************************************************");
-    $display("DCCM preload: there is no DCCM in brqrv, terminating !!!");
-    $display("********************************************************");
-    $finish;
-`endif
-addr += 4;
-eaddr = {lmem.mem[addr+3],lmem.mem[addr+2],lmem.mem[addr+1],lmem.mem[addr]};
-$display("DCCM pre-load from %h to %h", saddr, eaddr);
-
-for(addr=saddr; addr <= eaddr; addr+=4) begin
-    data = {lmem.mem[addr+3],lmem.mem[addr+2],lmem.mem[addr+1],lmem.mem[addr]};
-    slam_dccm_ram(addr, data == 0 ? 0 : {riscv_ecc32(data),data});
-end
-
-endtask
-
-
-
-//`define ICCM_PATH `RV_TOP.mem.iccm.iccm
-`ifdef VERILATOR
-`define DRAM(bk) rvtop.mem.Gen_dccm_enable.dccm.mem_bank[bk].sram.mem
-//`define IRAM(bk) `ICCM_PATH.mem_bank[bk].iccm_bank.ram_core
-//`define IRAM(bk) `ICCM_PATH.mem_bank[bk].sram.mem
-`else
-`define DRAM(bk) rvtop.mem.Gen_dccm_enable.dccm.mem_bank[bk].dccm.dccm_bank.ram_core
-//`define IRAM(bk) `ICCM_PATH.mem_bank[bk].iccm.iccm_bank.ram_core
-`endif
-
-
-task slam_dccm_ram(input [31:0] addr, input[38:0] data);
-int bank, indx;
-bank = get_dccm_bank(addr, indx);
-`ifdef RV_DCCM_ENABLE
-case(bank)
-0: `DRAM(0)[indx] = data;
-1: `DRAM(1)[indx] = data;
-`ifdef RV_DCCM_NUM_BANKS_4
-2: `DRAM(2)[indx] = data;
-3: `DRAM(3)[indx] = data;
-`endif
-`ifdef RV_DCCM_NUM_BANKS_8
-2: `DRAM(2)[indx] = data;
-3: `DRAM(3)[indx] = data;
-4: `DRAM(4)[indx] = data;
-5: `DRAM(5)[indx] = data;
-6: `DRAM(6)[indx] = data;
-7: `DRAM(7)[indx] = data;
-`endif
-endcase
-`endif
-//$display("Writing bank %0d indx=%0d A=%h, D=%h",bank, indx, addr, data);
-endtask
-
-
-/*task slam_iccm_ram( input[31:0] addr, input[38:0] data);
-int bank, idx;
-
-bank = get_iccm_bank(addr, idx);
-`ifdef RV_ICCM_ENABLE
-case(bank) // {
-  0: `IRAM(0)[idx] = data;
-  1: `IRAM(1)[idx] = data;
- `ifdef RV_ICCM_NUM_BANKS_4
-  2: `IRAM(2)[idx] = data;
-  3: `IRAM(3)[idx] = data;
- `endif
- `ifdef RV_ICCM_NUM_BANKS_8
-  2: `IRAM(2)[idx] = data;
-  3: `IRAM(3)[idx] = data;
-  4: `IRAM(4)[idx] = data;
-  5: `IRAM(5)[idx] = data;
-  6: `IRAM(6)[idx] = data;
-  7: `IRAM(7)[idx] = data;
- `endif
-
- `ifdef RV_ICCM_NUM_BANKS_16
-  2: `IRAM(2)[idx] = data;
-  3: `IRAM(3)[idx] = data;
-  4: `IRAM(4)[idx] = data;
-  5: `IRAM(5)[idx] = data;
-  6: `IRAM(6)[idx] = data;
-  7: `IRAM(7)[idx] = data;
-  8: `IRAM(8)[idx] = data;
-  9: `IRAM(9)[idx] = data;
-  10: `IRAM(10)[idx] = data;
-  11: `IRAM(11)[idx] = data;
-  12: `IRAM(12)[idx] = data;
-  13: `IRAM(13)[idx] = data;
-  14: `IRAM(14)[idx] = data;
-  15: `IRAM(15)[idx] = data;
- `endif
-endcase // }
-`endif
-endtask
-
-task init_iccm;
-`ifdef RV_ICCM_ENABLE
-    `IRAM(0) = '{default:39'h0};
-    `IRAM(1) = '{default:39'h0};
-`ifdef RV_ICCM_NUM_BANKS_4
-    `IRAM(2) = '{default:39'h0};
-    `IRAM(3) = '{default:39'h0};
-`endif
-`ifdef RV_ICCM_NUM_BANKS_8
-    `IRAM(4) = '{default:39'h0};
-    `IRAM(5) = '{default:39'h0};
-    `IRAM(6) = '{default:39'h0};
-    `IRAM(7) = '{default:39'h0};
-`endif
-
-`ifdef RV_ICCM_NUM_BANKS_16
-    `IRAM(4) = '{default:39'h0};
-    `IRAM(5) = '{default:39'h0};
-    `IRAM(6) = '{default:39'h0};
-    `IRAM(7) = '{default:39'h0};
-    `IRAM(8) = '{default:39'h0};
-    `IRAM(9) = '{default:39'h0};
-    `IRAM(10) = '{default:39'h0};
-    `IRAM(11) = '{default:39'h0};
-    `IRAM(12) = '{default:39'h0};
-    `IRAM(13) = '{default:39'h0};
-    `IRAM(14) = '{default:39'h0};
-    `IRAM(15) = '{default:39'h0};
- `endif
-`endif
-endtask
-*/
-/*
-function[6:0] riscv_ecc32(input[31:0] data);
-reg[6:0] synd;
-synd[0] = ^(data & 32'h56aa_ad5b);
-synd[1] = ^(data & 32'h9b33_366d);
-synd[2] = ^(data & 32'he3c3_c78e);
-synd[3] = ^(data & 32'h03fc_07f0);
-synd[4] = ^(data & 32'h03ff_f800);
-synd[5] = ^(data & 32'hfc00_0000);
-synd[6] = ^{data, synd[5:0]};
-return synd;
-endfunction
-
-function int get_dccm_bank(input[31:0] addr,  output int bank_idx);
-`ifdef RV_DCCM_NUM_BANKS_2
-    bank_idx = int'(addr[`RV_DCCM_BITS-1:3]);
-    return int'( addr[2]);
-`elsif RV_DCCM_NUM_BANKS_4
-    bank_idx = int'(addr[`RV_DCCM_BITS-1:4]);
-    return int'(addr[3:2]);
-`elsif RV_DCCM_NUM_BANKS_8
-    bank_idx = int'(addr[`RV_DCCM_BITS-1:5]);
-    return int'( addr[4:2]);
-`endif
-endfunction
-/*
-function int get_iccm_bank(input[31:0] addr,  output int bank_idx);
-`ifdef RV_DCCM_NUM_BANKS_2
-    bank_idx = int'(addr[`RV_DCCM_BITS-1:3]);
-    return int'( addr[2]);
-`elsif RV_ICCM_NUM_BANKS_4
-    bank_idx = int'(addr[`RV_ICCM_BITS-1:4]);
-    return int'(addr[3:2]);
-`elsif RV_ICCM_NUM_BANKS_8
-    bank_idx = int'(addr[`RV_ICCM_BITS-1:5]);
-    return int'( addr[4:2]);
-`elsif RV_ICCM_NUM_BANKS_16
-    bank_idx = int'(addr[`RV_ICCM_BITS-1:6]);
-    return int'( addr[5:2]);
-`endif
-endfunction
-*/
-/* verilator lint_off CASEINCOMPLETE */
-`include "dasm.svi"
-/* verilator lint_on CASEINCOMPLETE */
-
-endmodule
diff --git a/verilog/rtl/BrqRV_EB1/testbench/test_tb_top.cpp b/verilog/rtl/BrqRV_EB1/testbench/test_tb_top.cpp
deleted file mode 100644
index d2aa1c2..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/test_tb_top.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-#include <stdlib.h>
-#include <iostream>
-#include <utility>
-#include <string>
-#include "Vtb_top.h"
-#include "verilated.h"
-#include "verilated_vcd_c.h"
-
-
-vluint64_t main_time = 0;
-
-double sc_time_stamp () {
- return main_time;
-}
-
-
-int main(int argc, char** argv) {
-  std::cout << "\nVerilatorTB: Start of sim\n" << std::endl;
-
-  Verilated::commandArgs(argc, argv);
-
-  Vtb_top* tb = new Vtb_top;
-
-  // init trace dump
-  VerilatedVcdC* tfp = NULL;
-
-#if VM_TRACE
-  Verilated::traceEverOn(true);
-  tfp = new VerilatedVcdC;
-  tb->trace (tfp, 24);
-  tfp->open ("sim.vcd");
-#endif
-  // Simulate
-  while(!Verilated::gotFinish()){
-#if VM_TRACE
-      tfp->dump (main_time);
-#endif
-      main_time += 12.5;
-      tb->core_clk = !tb->core_clk;
-      tb->eval();
-      
-      //if(main_time > 100) {
-     // 	tb->r_clk = !tb->r_clk; 
-     // }
-  }
-
-
-#if VM_TRACE
-  tfp->close();
-#endif
-
-  std::cout << "\nVerilatorTB: End of sim" << std::endl;
-  exit(EXIT_SUCCESS);
-
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/Coremark/Makefile b/verilog/rtl/BrqRV_EB1/testbench/tests/Coremark/Makefile
deleted file mode 100644
index 2313be7..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/Coremark/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-export TEST = cmark
-#export CONF_PARAMS= -set=btb_size=512 -set=bht_size=2048 -set=iccm_size=128
-export CONF_PARAMS= -set=btb_size=512 -set=bht_size=2048 -set=iccm_enable=0
-export OFILES = crt0.o cmark.o printf.o 
-export BUILD_PATH = $(shell pwd)/snapshots/default
-export TEST_CFLAGS = -finline-limit=400 -mbranch-cost=1 -Ofast -fno-code-hoisting -funroll-all-loops
-
-program.hex:
-	$(MAKE) -e -f $(RV_ROOT)/tools/make.common $(BUILD_PATH)/defines.h
-	$(MAKE) -e -f $(RV_ROOT)/tools/make.common $@
-
-.DEFAULT:
-	$(MAKE) -e program.hex
-	$(MAKE) -e -f $(RV_ROOT)/tools/make.common $@
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/Coremark/cmark.c b/verilog/rtl/BrqRV_EB1/testbench/tests/Coremark/cmark.c
deleted file mode 100644
index b366c80..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/Coremark/cmark.c
+++ /dev/null
@@ -1,2167 +0,0 @@
-#include "defines.h"
-
-#define ITERATIONS 1
-
-
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-
-//#include "/wd/users/jrahmeh/coremark_v1.0/riscv/coremark.h"
-
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-/* Topic: Description
-        This file contains  declarations of the various benchmark functions.
-*/
-
-/* Configuration: TOTAL_DATA_SIZE
-        Define total size for data algorithms will operate on
-*/
-#ifndef TOTAL_DATA_SIZE
-#define TOTAL_DATA_SIZE 2*1000
-#endif
-
-#define SEED_ARG 0
-#define SEED_FUNC 1
-#define SEED_VOLATILE 2
-
-#define MEM_STATIC 0
-#define MEM_MALLOC 1
-#define MEM_STACK 2
-
-/* File : core_portme.h */
-
-/*
-        Author : Shay Gal-On, EEMBC
-        Legal : TODO!
-*/
-/* Topic : Description
-        This file contains configuration constants required to execute on different platforms
-*/
-#ifndef CORE_PORTME_H
-#define CORE_PORTME_H
-/************************/
-/* Data types and settings */
-/************************/
-/* Configuration : HAS_FLOAT
-        Define to 1 if the platform supports floating point.
-*/
-#ifndef HAS_FLOAT
-#define HAS_FLOAT 0
-#endif
-/* Configuration : HAS_TIME_H
-        Define to 1 if platform has the time.h header file,
-        and implementation of functions thereof.
-*/
-#ifndef HAS_TIME_H
-#define HAS_TIME_H 0
-#endif
-/* Configuration : USE_CLOCK
-        Define to 1 if platform has the time.h header file,
-        and implementation of functions thereof.
-*/
-#ifndef USE_CLOCK
-#define USE_CLOCK 0
-#endif
-/* Configuration : HAS_STDIO
-        Define to 1 if the platform has stdio.h.
-*/
-#ifndef HAS_STDIO
-#define HAS_STDIO 0
-#endif
-/* Configuration : HAS_PRINTF
-        Define to 1 if the platform has stdio.h and implements the printf function.
-*/
-#ifndef HAS_PRINTF
-#define HAS_PRINTF 1
-int whisperPrintf(const char* format, ...);
-#define ee_printf whisperPrintf
-#endif
-
-/* Configuration : CORE_TICKS
-        Define type of return from the timing functions.
- */
-#include <time.h>
-typedef clock_t CORE_TICKS;
-
-/* Definitions : COMPILER_VERSION, COMPILER_FLAGS, MEM_LOCATION
-        Initialize these strings per platform
-*/
-#ifndef COMPILER_VERSION
- #ifdef __GNUC__
- #define COMPILER_VERSION "GCC"__VERSION__
- #else
- #define COMPILER_VERSION "Please put compiler version here (e.g. gcc 4.1)"
- #endif
-#endif
-#ifndef COMPILER_FLAGS
- #define COMPILER_FLAGS "-O2"
-#endif
-
-#ifndef MEM_LOCATION
-// #define MEM_LOCATION "STACK"
- #define MEM_LOCATION "STATIC"
-#endif
-
-/* Data Types :
-        To avoid compiler issues, define the data types that need ot be used for 8b, 16b and 32b in <core_portme.h>.
-
-        *Imprtant* :
-        ee_ptr_int needs to be the data type used to hold pointers, otherwise coremark may fail!!!
-*/
-typedef signed short ee_s16;
-typedef unsigned short ee_u16;
-typedef signed int ee_s32;
-typedef double ee_f32;
-typedef unsigned char ee_u8;
-typedef unsigned int ee_u32;
-typedef ee_u32 ee_ptr_int;
-typedef size_t ee_size_t;
-/* align_mem :
-        This macro is used to align an offset to point to a 32b value. It is used in the Matrix algorithm to initialize the input memory blocks.
-*/
-#define align_mem(x) (void *)(4 + (((ee_ptr_int)(x) - 1) & ~3))
-
-/* Configuration : SEED_METHOD
-        Defines method to get seed values that cannot be computed at compile time.
-
-        Valid values :
-        SEED_ARG - from command line.
-        SEED_FUNC - from a system function.
-        SEED_VOLATILE - from volatile variables.
-*/
-#ifndef SEED_METHOD
-#define SEED_METHOD SEED_VOLATILE
-#endif
-
-/* Configuration : MEM_METHOD
-        Defines method to get a block of memry.
-
-        Valid values :
-        MEM_MALLOC - for platforms that implement malloc and have malloc.h.
-        MEM_STATIC - to use a static memory array.
-        MEM_STACK - to allocate the data block on the stack (NYI).
-*/
-#ifndef MEM_METHOD
-//#define MEM_METHOD MEM_STACK
-#define MEM_METHOD MEM_STATIC
-#endif
-
-/* Configuration : MULTITHREAD
-        Define for parallel execution
-
-        Valid values :
-        1 - only one context (default).
-        N>1 - will execute N copies in parallel.
-
-        Note :
-        If this flag is defined to more then 1, an implementation for launching parallel contexts must be defined.
-
-        Two sample implementations are provided. Use <USE_PTHREAD> or <USE_FORK> to enable them.
-
-        It is valid to have a different implementation of <core_start_parallel> and <core_end_parallel> in <core_portme.c>,
-        to fit a particular architecture.
-*/
-#ifndef MULTITHREAD
-#define MULTITHREAD 1
-#define USE_PTHREAD 0
-#define USE_FORK 0
-#define USE_SOCKET 0
-#endif
-
-/* Configuration : MAIN_HAS_NOARGC
-        Needed if platform does not support getting arguments to main.
-
-        Valid values :
-        0 - argc/argv to main is supported
-        1 - argc/argv to main is not supported
-
-        Note :
-        This flag only matters if MULTITHREAD has been defined to a value greater then 1.
-*/
-#ifndef MAIN_HAS_NOARGC
-#define MAIN_HAS_NOARGC 1
-#endif
-
-/* Configuration : MAIN_HAS_NORETURN
-        Needed if platform does not support returning a value from main.
-
-        Valid values :
-        0 - main returns an int, and return value will be 0.
-        1 - platform does not support returning a value from main
-*/
-#ifndef MAIN_HAS_NORETURN
-#define MAIN_HAS_NORETURN 1
-#endif
-
-/* Variable : default_num_contexts
-        Not used for this simple port, must cintain the value 1.
-*/
-extern ee_u32 default_num_contexts;
-
-typedef struct CORE_PORTABLE_S {
-        ee_u8   portable_id;
-} core_portable;
-
-/* target specific init/fini */
-void portable_init(core_portable *p, int *argc, char *argv[]);
-void portable_fini(core_portable *p);
-
-#if !defined(PROFILE_RUN) && !defined(PERFORMANCE_RUN) && !defined(VALIDATION_RUN)
-#if (TOTAL_DATA_SIZE==1200)
-#define PROFILE_RUN 1
-#elif (TOTAL_DATA_SIZE==2000)
-#define PERFORMANCE_RUN 1
-#else
-#define VALIDATION_RUN 1
-#endif
-#endif
-
-#endif /* CORE_PORTME_H */
-
-
-#if HAS_STDIO
-#include <stdio.h>
-#endif
-#if HAS_PRINTF
-#ifndef ee_printf
-#define ee_printf printf
-#endif
-#endif
-
-/* Actual benchmark execution in iterate */
-void *iterate(void *pres);
-
-/* Typedef: secs_ret
-        For machines that have floating point support, get number of seconds as a double.
-        Otherwise an unsigned int.
-*/
-#if HAS_FLOAT
-typedef double secs_ret;
-#else
-typedef ee_u32 secs_ret;
-#endif
-
-#if MAIN_HAS_NORETURN
-#define MAIN_RETURN_VAL
-#define MAIN_RETURN_TYPE void
-#else
-#define MAIN_RETURN_VAL 0
-#define MAIN_RETURN_TYPE int
-#endif
-
-void start_time(void);
-void stop_time(void);
-CORE_TICKS get_time(void);
-secs_ret time_in_secs(CORE_TICKS ticks);
-
-/* Misc useful functions */
-ee_u16 crcu8(ee_u8 data, ee_u16 crc);
-ee_u16 crc16(ee_s16 newval, ee_u16 crc);
-ee_u16 crcu16(ee_u16 newval, ee_u16 crc);
-ee_u16 crcu32(ee_u32 newval, ee_u16 crc);
-ee_u8 check_data_types();
-void *portable_malloc(ee_size_t size);
-void portable_free(void *p);
-ee_s32 parseval(char *valstring);
-
-/* Algorithm IDS */
-#define ID_LIST         (1<<0)
-#define ID_MATRIX       (1<<1)
-#define ID_STATE        (1<<2)
-#define ALL_ALGORITHMS_MASK (ID_LIST|ID_MATRIX|ID_STATE)
-#define NUM_ALGORITHMS 3
-
-/* list data structures */
-typedef struct list_data_s {
-        ee_s16 data16;
-        ee_s16 idx;
-} list_data;
-
-typedef struct list_head_s {
-        struct list_head_s *next;
-        struct list_data_s *info;
-} list_head;
-
-
-/*matrix benchmark related stuff */
-#define MATDAT_INT 1
-#if MATDAT_INT
-typedef ee_s16 MATDAT;
-typedef ee_s32 MATRES;
-#else
-typedef ee_f16 MATDAT;
-typedef ee_f32 MATRES;
-#endif
-
-typedef struct MAT_PARAMS_S {
-        int N;
-        MATDAT *A;
-        MATDAT *B;
-        MATRES *C;
-} mat_params;
-
-/* state machine related stuff */
-/* List of all the possible states for the FSM */
-typedef enum CORE_STATE {
-        CORE_START=0,
-        CORE_INVALID,
-        CORE_S1,
-        CORE_S2,
-        CORE_INT,
-        CORE_FLOAT,
-        CORE_EXPONENT,
-        CORE_SCIENTIFIC,
-        NUM_CORE_STATES
-} core_state_e ;
-
-
-/* Helper structure to hold results */
-typedef struct RESULTS_S {
-        /* inputs */
-        ee_s16  seed1;          /* Initializing seed */
-        ee_s16  seed2;          /* Initializing seed */
-        ee_s16  seed3;          /* Initializing seed */
-        void    *memblock[4];   /* Pointer to safe memory location */
-        ee_u32  size;           /* Size of the data */
-        ee_u32 iterations;              /* Number of iterations to execute */
-        ee_u32  execs;          /* Bitmask of operations to execute */
-        struct list_head_s *list;
-        mat_params mat;
-        /* outputs */
-        ee_u16  crc;
-        ee_u16  crclist;
-        ee_u16  crcmatrix;
-        ee_u16  crcstate;
-        ee_s16  err;
-        /* ultithread specific */
-        core_portable port;
-} core_results;
-
-/* Multicore execution handling */
-#if (MULTITHREAD>1)
-ee_u8 core_start_parallel(core_results *res);
-ee_u8 core_stop_parallel(core_results *res);
-#endif
-
-/* list benchmark functions */
-list_head *core_list_init(ee_u32 blksize, list_head *memblock, ee_s16 seed);
-ee_u16 core_bench_list(core_results *res, ee_s16 finder_idx);
-
-/* state benchmark functions */
-void core_init_state(ee_u32 size, ee_s16 seed, ee_u8 *p);
-ee_u16 core_bench_state(ee_u32 blksize, ee_u8 *memblock,
-                ee_s16 seed1, ee_s16 seed2, ee_s16 step, ee_u16 crc);
-
-/* matrix benchmark functions */
-ee_u32 core_init_matrix(ee_u32 blksize, void *memblk, ee_s32 seed, mat_params *p);
-ee_u16 core_bench_matrix(mat_params *p, ee_s16 seed, ee_u16 crc);
-
-
-
-
-
-/*
-Topic: Description
-        Benchmark using a linked list.
-
-        Linked list is a common data structure used in many applications.
-
-        For our purposes, this will excercise the memory units of the processor.
-        In particular, usage of the list pointers to find and alter data.
-
-        We are not using Malloc since some platforms do not support this library.
-
-        Instead, the memory block being passed in is used to create a list,
-        and the benchmark takes care not to add more items then can be
-        accomodated by the memory block. The porting layer will make sure
-        that we have a valid memory block.
-
-        All operations are done in place, without using any extra memory.
-
-        The list itself contains list pointers and pointers to data items.
-        Data items contain the following:
-
-        idx - An index that captures the initial order of the list.
-        data - Variable data initialized based on the input parameters. The 16b are divided as follows:
-        o Upper 8b are backup of original data.
-        o Bit 7 indicates if the lower 7 bits are to be used as is or calculated.
-        o Bits 0-2 indicate type of operation to perform to get a 7b value.
-        o Bits 3-6 provide input for the operation.
-
-*/
-
-/* local functions */
-
-list_head *core_list_find(list_head *list,list_data *info);
-list_head *core_list_reverse(list_head *list);
-list_head *core_list_remove(list_head *item);
-list_head *core_list_undo_remove(list_head *item_removed, list_head *item_modified);
-list_head *core_list_insert_new(list_head *insert_point
-        , list_data *info, list_head **memblock, list_data **datablock
-        , list_head *memblock_end, list_data *datablock_end);
-typedef ee_s32(*list_cmp)(list_data *a, list_data *b, core_results *res);
-list_head *core_list_mergesort(list_head *list, list_cmp cmp, core_results *res);
-
-ee_s16 calc_func(ee_s16 *pdata, core_results *res) {
-        ee_s16 data=*pdata;
-        ee_s16 retval;
-        ee_u8 optype=(data>>7) & 1; /* bit 7 indicates if the function result has been cached */
-        if (optype) /* if cached, use cache */
-                return (data & 0x007f);
-        else { /* otherwise calculate and cache the result */
-                ee_s16 flag=data & 0x7; /* bits 0-2 is type of function to perform */
-                ee_s16 dtype=((data>>3) & 0xf); /* bits 3-6 is specific data for the operation */
-                dtype |= dtype << 4; /* replicate the lower 4 bits to get an 8b value */
-                switch (flag) {
-                        case 0:
-                                if (dtype<0x22) /* set min period for bit corruption */
-                                        dtype=0x22;
-                                retval=core_bench_state(res->size,res->memblock[3],res->seed1,res->seed2,dtype,res->crc);
-                                if (res->crcstate==0)
-                                        res->crcstate=retval;
-                                break;
-                        case 1:
-                                retval=core_bench_matrix(&(res->mat),dtype,res->crc);
-                                if (res->crcmatrix==0)
-                                        res->crcmatrix=retval;
-                                break;
-                        default:
-                                retval=data;
-                                break;
-                }
-                res->crc=crcu16(retval,res->crc);
-                retval &= 0x007f;
-                *pdata = (data & 0xff00) | 0x0080 | retval; /* cache the result */
-                return retval;
-        }
-}
-/* Function: cmp_complex
-        Compare the data item in a list cell.
-
-        Can be used by mergesort.
-*/
-ee_s32 cmp_complex(list_data *a, list_data *b, core_results *res) {
-        ee_s16 val1=calc_func(&(a->data16),res);
-        ee_s16 val2=calc_func(&(b->data16),res);
-        return val1 - val2;
-}
-
-/* Function: cmp_idx
-        Compare the idx item in a list cell, and regen the data.
-
-        Can be used by mergesort.
-*/
-ee_s32 cmp_idx(list_data *a, list_data *b, core_results *res) {
-        if (res==NULL) {
-                a->data16 = (a->data16 & 0xff00) | (0x00ff & (a->data16>>8));
-                b->data16 = (b->data16 & 0xff00) | (0x00ff & (b->data16>>8));
-        }
-        return a->idx - b->idx;
-}
-
-void copy_info(list_data *to,list_data *from) {
-        to->data16=from->data16;
-        to->idx=from->idx;
-}
-
-/* Benchmark for linked list:
-        - Try to find multiple data items.
-        - List sort
-        - Operate on data from list (crc)
-        - Single remove/reinsert
-        * At the end of this function, the list is back to original state
-*/
-ee_u16 core_bench_list(core_results *res, ee_s16 finder_idx) {
-        ee_u16 retval=0;
-        ee_u16 found=0,missed=0;
-        list_head *list=res->list;
-        ee_s16 find_num=res->seed3;
-        list_head *this_find;
-        list_head *finder, *remover;
-        list_data info;
-        ee_s16 i;
-
-        info.idx=finder_idx;
-        /* find <find_num> values in the list, and change the list each time (reverse and cache if value found) */
-        for (i=0; i<find_num; i++) {
-                info.data16= (i & 0xff) ;
-                this_find=core_list_find(list,&info);
-                list=core_list_reverse(list);
-                if (this_find==NULL) {
-                        missed++;
-                        retval+=(list->next->info->data16 >> 8) & 1;
-                }
-                else {
-                        found++;
-                        if (this_find->info->data16 & 0x1) /* use found value */
-                                retval+=(this_find->info->data16 >> 9) & 1;
-                        /* and cache next item at the head of the list (if any) */
-                        if (this_find->next != NULL) {
-                                finder = this_find->next;
-                                this_find->next = finder->next;
-                                finder->next=list->next;
-                                list->next=finder;
-                        }
-                }
-                if (info.idx>=0)
-                        info.idx++;
-#if CORE_DEBUG
-        ee_printf("List find %d: [%d,%d,%d]\n",i,retval,missed,found);
-#endif
-        }
-        retval+=found*4-missed;
-        /* sort the list by data content and remove one item*/
-        if (finder_idx>0)
-                list=core_list_mergesort(list,cmp_complex,res);
-        remover=core_list_remove(list->next);
-        /* CRC data content of list from location of index N forward, and then undo remove */
-        finder=core_list_find(list,&info);
-        if (!finder)
-                finder=list->next;
-        while (finder) {
-                retval=crc16(list->info->data16,retval);
-                finder=finder->next;
-        }
-#if CORE_DEBUG
-        ee_printf("List sort 1: %04x\n",retval);
-#endif
-        remover=core_list_undo_remove(remover,list->next);
-        /* sort the list by index, in effect returning the list to original state */
-        list=core_list_mergesort(list,cmp_idx,NULL);
-        /* CRC data content of list */
-        finder=list->next;
-        while (finder) {
-                retval=crc16(list->info->data16,retval);
-                finder=finder->next;
-        }
-#if CORE_DEBUG
-        ee_printf("List sort 2: %04x\n",retval);
-#endif
-        return retval;
-}
-/* Function: core_list_init
-        Initialize list with data.
-
-        Parameters:
-        blksize - Size of memory to be initialized.
-        memblock - Pointer to memory block.
-        seed -  Actual values chosen depend on the seed parameter.
-                The seed parameter MUST be supplied from a source that cannot be determined at compile time
-
-        Returns:
-        Pointer to the head of the list.
-
-*/
-list_head *core_list_init(ee_u32 blksize, list_head *memblock, ee_s16 seed) {
-        /* calculated pointers for the list */
-        ee_u32 per_item=16+sizeof(struct list_data_s);
-        ee_u32 size=(blksize/per_item)-2; /* to accomodate systems with 64b pointers, and make sure same code is executed, set max list elements */
-        list_head *memblock_end=memblock+size;
-        list_data *datablock=(list_data *)(memblock_end);
-        list_data *datablock_end=datablock+size;
-        /* some useful variables */
-        ee_u32 i;
-        list_head *finder,*list=memblock;
-        list_data info;
-
-        /* create a fake items for the list head and tail */
-        list->next=NULL;
-        list->info=datablock;
-        list->info->idx=0x0000;
-        list->info->data16=(ee_s16)0x8080;
-        memblock++;
-        datablock++;
-        info.idx=0x7fff;
-        info.data16=(ee_s16)0xffff;
-        core_list_insert_new(list,&info,&memblock,&datablock,memblock_end,datablock_end);
-
-        /* then insert size items */
-        for (i=0; i<size; i++) {
-                ee_u16 datpat=((ee_u16)(seed^i) & 0xf);
-                ee_u16 dat=(datpat<<3) | (i&0x7); /* alternate between algorithms */
-                info.data16=(dat<<8) | dat;             /* fill the data with actual data and upper bits with rebuild value */
-                core_list_insert_new(list,&info,&memblock,&datablock,memblock_end,datablock_end);
-        }
-        /* and now index the list so we know initial seed order of the list */
-        finder=list->next;
-        i=1;
-        while (finder->next!=NULL) {
-                if (i<size/5) /* first 20% of the list in order */
-                        finder->info->idx=i++;
-                else {
-                        ee_u16 pat=(ee_u16)(i++ ^ seed); /* get a pseudo random number */
-                        finder->info->idx=0x3fff & (((i & 0x07) << 8) | pat); /* make sure the mixed items end up after the ones in sequence */
-                }
-                finder=finder->next;
-        }
-        list = core_list_mergesort(list,cmp_idx,NULL);
-#if CORE_DEBUG
-        ee_printf("Initialized list:\n");
-        finder=list;
-        while (finder) {
-                ee_printf("[%04x,%04x]",finder->info->idx,(ee_u16)finder->info->data16);
-                finder=finder->next;
-        }
-        ee_printf("\n");
-#endif
-        return list;
-}
-
-/* Function: core_list_insert
-        Insert an item to the list
-
-        Parameters:
-        insert_point - where to insert the item.
-        info - data for the cell.
-        memblock - pointer for the list header
-        datablock - pointer for the list data
-        memblock_end - end of region for list headers
-        datablock_end - end of region for list data
-
-        Returns:
-        Pointer to new item.
-*/
-list_head *core_list_insert_new(list_head *insert_point, list_data *info, list_head **memblock, list_data **datablock
-        , list_head *memblock_end, list_data *datablock_end) {
-        list_head *newitem;
-
-        if ((*memblock+1) >= memblock_end)
-                return NULL;
-        if ((*datablock+1) >= datablock_end)
-                return NULL;
-
-        newitem=*memblock;
-        (*memblock)++;
-        newitem->next=insert_point->next;
-        insert_point->next=newitem;
-
-        newitem->info=*datablock;
-        (*datablock)++;
-        copy_info(newitem->info,info);
-
-        return newitem;
-}
-
-/* Function: core_list_remove
-        Remove an item from the list.
-
-        Operation:
-        For a singly linked list, remove by copying the data from the next item
-        over to the current cell, and unlinking the next item.
-
-        Note:
-        since there is always a fake item at the end of the list, no need to check for NULL.
-
-        Returns:
-        Removed item.
-*/
-list_head *core_list_remove(list_head *item) {
-        list_data *tmp;
-        list_head *ret=item->next;
-        /* swap data pointers */
-        tmp=item->info;
-        item->info=ret->info;
-        ret->info=tmp;
-        /* and eliminate item */
-        item->next=item->next->next;
-        ret->next=NULL;
-        return ret;
-}
-
-/* Function: core_list_undo_remove
-        Undo a remove operation.
-
-        Operation:
-        Since we want each iteration of the benchmark to be exactly the same,
-        we need to be able to undo a remove.
-        Link the removed item back into the list, and switch the info items.
-
-        Parameters:
-        item_removed - Return value from the <core_list_remove>
-        item_modified - List item that was modified during <core_list_remove>
-
-        Returns:
-        The item that was linked back to the list.
-
-*/
-list_head *core_list_undo_remove(list_head *item_removed, list_head *item_modified) {
-        list_data *tmp;
-        /* swap data pointers */
-        tmp=item_removed->info;
-        item_removed->info=item_modified->info;
-        item_modified->info=tmp;
-        /* and insert item */
-        item_removed->next=item_modified->next;
-        item_modified->next=item_removed;
-        return item_removed;
-}
-
-/* Function: core_list_find
-        Find an item in the list
-
-        Operation:
-        Find an item by idx (if not 0) or specific data value
-
-        Parameters:
-        list - list head
-        info - idx or data to find
-
-        Returns:
-        Found item, or NULL if not found.
-*/
-list_head *core_list_find(list_head *list,list_data *info) {
-        if (info->idx>=0) {
-                while (list && (list->info->idx != info->idx))
-                        list=list->next;
-                return list;
-        } else {
-                while (list && ((list->info->data16 & 0xff) != info->data16))
-                        list=list->next;
-                return list;
-        }
-}
-/* Function: core_list_reverse
-        Reverse a list
-
-        Operation:
-        Rearrange the pointers so the list is reversed.
-
-        Parameters:
-        list - list head
-        info - idx or data to find
-
-        Returns:
-        Found item, or NULL if not found.
-*/
-
-list_head *core_list_reverse(list_head *list) {
-        list_head *next=NULL, *tmp;
-        while (list) {
-                tmp=list->next;
-                list->next=next;
-                next=list;
-                list=tmp;
-        }
-        return next;
-}
-/* Function: core_list_mergesort
-        Sort the list in place without recursion.
-
-        Description:
-        Use mergesort, as for linked list this is a realistic solution.
-        Also, since this is aimed at embedded, care was taken to use iterative rather then recursive algorithm.
-        The sort can either return the list to original order (by idx) ,
-        or use the data item to invoke other other algorithms and change the order of the list.
-
-        Parameters:
-        list - list to be sorted.
-        cmp - cmp function to use
-
-        Returns:
-        New head of the list.
-
-        Note:
-        We have a special header for the list that will always be first,
-        but the algorithm could theoretically modify where the list starts.
-
- */
-list_head *core_list_mergesort(list_head *list, list_cmp cmp, core_results *res) {
-    list_head *p, *q, *e, *tail;
-    ee_s32 insize, nmerges, psize, qsize, i;
-
-    insize = 1;
-
-    while (1) {
-        p = list;
-        list = NULL;
-        tail = NULL;
-
-        nmerges = 0;  /* count number of merges we do in this pass */
-
-        while (p) {
-            nmerges++;  /* there exists a merge to be done */
-            /* step `insize' places along from p */
-            q = p;
-            psize = 0;
-            for (i = 0; i < insize; i++) {
-                psize++;
-                            q = q->next;
-                if (!q) break;
-            }
-
-            /* if q hasn't fallen off end, we have two lists to merge */
-            qsize = insize;
-
-            /* now we have two lists; merge them */
-            while (psize > 0 || (qsize > 0 && q)) {
-
-                                /* decide whether next element of merge comes from p or q */
-                                if (psize == 0) {
-                                    /* p is empty; e must come from q. */
-                                    e = q; q = q->next; qsize--;
-                                } else if (qsize == 0 || !q) {
-                                    /* q is empty; e must come from p. */
-                                    e = p; p = p->next; psize--;
-                                } else if (cmp(p->info,q->info,res) <= 0) {
-                                    /* First element of p is lower (or same); e must come from p. */
-                                    e = p; p = p->next; psize--;
-                                } else {
-                                    /* First element of q is lower; e must come from q. */
-                                    e = q; q = q->next; qsize--;
-                                }
-
-                        /* add the next element to the merged list */
-                                if (tail) {
-                                    tail->next = e;
-                                } else {
-                                    list = e;
-                                }
-                                tail = e;
-                }
-
-                        /* now p has stepped `insize' places along, and q has too */
-                        p = q;
-        }
-
-            tail->next = NULL;
-
-        /* If we have done only one merge, we're finished. */
-        if (nmerges <= 1)   /* allow for nmerges==0, the empty list case */
-            return list;
-
-        /* Otherwise repeat, merging lists twice the size */
-        insize *= 2;
-    }
-#if COMPILER_REQUIRES_SORT_RETURN
-        return list;
-#endif
-}
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-/* File: core_main.c
-        This file contains the framework to acquire a block of memory, seed initial parameters, tun t he benchmark and report the results.
-*/
-//#include "coremark.h"
-
-/* Function: iterate
-        Run the benchmark for a specified number of iterations.
-
-        Operation:
-        For each type of benchmarked algorithm:
-                a - Initialize the data block for the algorithm.
-                b - Execute the algorithm N times.
-
-        Returns:
-        NULL.
-*/
-static ee_u16 list_known_crc[]   =      {(ee_u16)0xd4b0,(ee_u16)0x3340,(ee_u16)0x6a79,(ee_u16)0xe714,(ee_u16)0xe3c1};
-static ee_u16 matrix_known_crc[] =      {(ee_u16)0xbe52,(ee_u16)0x1199,(ee_u16)0x5608,(ee_u16)0x1fd7,(ee_u16)0x0747};
-static ee_u16 state_known_crc[]  =      {(ee_u16)0x5e47,(ee_u16)0x39bf,(ee_u16)0xe5a4,(ee_u16)0x8e3a,(ee_u16)0x8d84};
-void *iterate(void *pres) {
-        ee_u32 i;
-        ee_u16 crc;
-        core_results *res=(core_results *)pres;
-        ee_u32 iterations=res->iterations;
-        res->crc=0;
-        res->crclist=0;
-        res->crcmatrix=0;
-        res->crcstate=0;
-
-        for (i=0; i<iterations; i++) {
-                crc=core_bench_list(res,1);
-                res->crc=crcu16(crc,res->crc);
-                crc=core_bench_list(res,-1);
-                res->crc=crcu16(crc,res->crc);
-                if (i==0) res->crclist=res->crc;
-        }
-        return NULL;
-}
-
-#if (SEED_METHOD==SEED_ARG)
-ee_s32 get_seed_args(int i, int argc, char *argv[]);
-#define get_seed(x) (ee_s16)get_seed_args(x,argc,argv)
-#define get_seed_32(x) get_seed_args(x,argc,argv)
-#else /* via function or volatile */
-ee_s32 get_seed_32(int i);
-#define get_seed(x) (ee_s16)get_seed_32(x)
-#endif
-
-#if (MEM_METHOD==MEM_STATIC)
-ee_u8 static_memblk[TOTAL_DATA_SIZE];
-#endif
-char *mem_name[3] = {"Static","Heap","Stack"};
-/* Function: main
-        Main entry routine for the benchmark.
-        This function is responsible for the following steps:
-
-        1 - Initialize input seeds from a source that cannot be determined at compile time.
-        2 - Initialize memory block for use.
-        3 - Run and time the benchmark.
-        4 - Report results, testing the validity of the output if the seeds are known.
-
-        Arguments:
-        1 - first seed  : Any value
-        2 - second seed : Must be identical to first for iterations to be identical
-        3 - third seed  : Any value, should be at least an order of magnitude less then the input size, but bigger then 32.
-        4 - Iterations  : Special, if set to 0, iterations will be automatically determined such that the benchmark will run between 10 to 100 secs
-
-*/
-
-#if MAIN_HAS_NOARGC
-MAIN_RETURN_TYPE main(void) {
-        int argc=0;
-        char *argv[1];
-#else
-MAIN_RETURN_TYPE main(int argc, char *argv[]) {
-#endif
-        ee_u16 i,j=0,num_algorithms=0;
-        ee_s16 known_id=-1,total_errors=0;
-        ee_u16 seedcrc=0;
-        CORE_TICKS total_time;
-        core_results results[MULTITHREAD];
-#if (MEM_METHOD==MEM_STACK)
-        ee_u8 stack_memblock[TOTAL_DATA_SIZE*MULTITHREAD];
-#endif
-        /* first call any initializations needed */
-        portable_init(&(results[0].port), &argc, argv);
-        /* First some checks to make sure benchmark will run ok */
-        if (sizeof(struct list_head_s)>128) {
-                ee_printf("list_head structure too big for comparable data!\n");
-                return MAIN_RETURN_VAL;
-        }
-        results[0].seed1=get_seed(1);
-        results[0].seed2=get_seed(2);
-        results[0].seed3=get_seed(3);
-        results[0].iterations=get_seed_32(4);
-#if CORE_DEBUG
-        results[0].iterations=1;
-#endif
-        results[0].execs=get_seed_32(5);
-        if (results[0].execs==0) { /* if not supplied, execute all algorithms */
-                results[0].execs=ALL_ALGORITHMS_MASK;
-        }
-                /* put in some default values based on one seed only for easy testing */
-        if ((results[0].seed1==0) && (results[0].seed2==0) && (results[0].seed3==0)) { /* validation run */
-                results[0].seed1=0;
-                results[0].seed2=0;
-                results[0].seed3=0x66;
-        }
-        if ((results[0].seed1==1) && (results[0].seed2==0) && (results[0].seed3==0)) { /* perfromance run */
-                results[0].seed1=0x3415;
-                results[0].seed2=0x3415;
-                results[0].seed3=0x66;
-        }
-#if (MEM_METHOD==MEM_STATIC)
-        results[0].memblock[0]=(void *)static_memblk;
-        results[0].size=TOTAL_DATA_SIZE;
-        results[0].err=0;
-        #if (MULTITHREAD>1)
-        #error "Cannot use a static data area with multiple contexts!"
-        #endif
-#elif (MEM_METHOD==MEM_MALLOC)
-        for (i=0 ; i<MULTITHREAD; i++) {
-                ee_s32 malloc_override=get_seed(7);
-                if (malloc_override != 0)
-                        results[i].size=malloc_override;
-                else
-                        results[i].size=TOTAL_DATA_SIZE;
-                results[i].memblock[0]=portable_malloc(results[i].size);
-                results[i].seed1=results[0].seed1;
-                results[i].seed2=results[0].seed2;
-                results[i].seed3=results[0].seed3;
-                results[i].err=0;
-                results[i].execs=results[0].execs;
-        }
-#elif (MEM_METHOD==MEM_STACK)
-        for (i=0 ; i<MULTITHREAD; i++) {
-                results[i].memblock[0]=stack_memblock+i*TOTAL_DATA_SIZE;
-                results[i].size=TOTAL_DATA_SIZE;
-                results[i].seed1=results[0].seed1;
-                results[i].seed2=results[0].seed2;
-                results[i].seed3=results[0].seed3;
-                results[i].err=0;
-                results[i].execs=results[0].execs;
-        }
-#else
-#error "Please define a way to initialize a memory block."
-#endif
-        /* Data init */
-        /* Find out how space much we have based on number of algorithms */
-        for (i=0; i<NUM_ALGORITHMS; i++) {
-                if ((1<<(ee_u32)i) & results[0].execs)
-                        num_algorithms++;
-        }
-        for (i=0 ; i<MULTITHREAD; i++)
-                results[i].size=results[i].size/num_algorithms;
-        /* Assign pointers */
-        for (i=0; i<NUM_ALGORITHMS; i++) {
-                ee_u32 ctx;
-                if ((1<<(ee_u32)i) & results[0].execs) {
-                        for (ctx=0 ; ctx<MULTITHREAD; ctx++)
-                                results[ctx].memblock[i+1]=(char *)(results[ctx].memblock[0])+results[0].size*j;
-                        j++;
-                }
-        }
-        /* call inits */
-        for (i=0 ; i<MULTITHREAD; i++) {
-                if (results[i].execs & ID_LIST) {
-                        results[i].list=core_list_init(results[0].size,results[i].memblock[1],results[i].seed1);
-                }
-                if (results[i].execs & ID_MATRIX) {
-                        core_init_matrix(results[0].size, results[i].memblock[2], (ee_s32)results[i].seed1 | (((ee_s32)results[i].seed2) << 16), &(results[i].mat) );
-                }
-                if (results[i].execs & ID_STATE) {
-                        core_init_state(results[0].size,results[i].seed1,results[i].memblock[3]);
-                }
-        }
-
-        /* automatically determine number of iterations if not set */
-        if (results[0].iterations==0) {
-                secs_ret secs_passed=0;
-                ee_u32 divisor;
-                results[0].iterations=1;
-                while (secs_passed < (secs_ret)1) {
-                        results[0].iterations*=10;
-                        start_time();
-                        iterate(&results[0]);
-                        stop_time();
-                        secs_passed=time_in_secs(get_time());
-                }
-                /* now we know it executes for at least 1 sec, set actual run time at about 10 secs */
-                divisor=(ee_u32)secs_passed;
-                if (divisor==0) /* some machines cast float to int as 0 since this conversion is not defined by ANSI, but we know at least one second passed */
-                        divisor=1;
-                results[0].iterations*=1+10/divisor;
-        }
-        /* perform actual benchmark */
-        start_time();
-
-        __asm("__perf_start:");
-
-#if (MULTITHREAD>1)
-        if (default_num_contexts>MULTITHREAD) {
-                default_num_contexts=MULTITHREAD;
-        }
-        for (i=0 ; i<default_num_contexts; i++) {
-                results[i].iterations=results[0].iterations;
-                results[i].execs=results[0].execs;
-                core_start_parallel(&results[i]);
-        }
-        for (i=0 ; i<default_num_contexts; i++) {
-                core_stop_parallel(&results[i]);
-        }
-#else
-        iterate(&results[0]);
-#endif
-
-        __asm("__perf_end:");
-
-        stop_time();
-        total_time=get_time();
-        /* get a function of the input to report */
-        seedcrc=crc16(results[0].seed1,seedcrc);
-        seedcrc=crc16(results[0].seed2,seedcrc);
-        seedcrc=crc16(results[0].seed3,seedcrc);
-        seedcrc=crc16(results[0].size,seedcrc);
-
-        switch (seedcrc) { /* test known output for common seeds */
-                case 0x8a02: /* seed1=0, seed2=0, seed3=0x66, size 2000 per algorithm */
-                        known_id=0;
-                        ee_printf("6k performance run parameters for coremark.\n");
-                        break;
-                case 0x7b05: /*  seed1=0x3415, seed2=0x3415, seed3=0x66, size 2000 per algorithm */
-                        known_id=1;
-                        ee_printf("6k validation run parameters for coremark.\n");
-                        break;
-                case 0x4eaf: /* seed1=0x8, seed2=0x8, seed3=0x8, size 400 per algorithm */
-                        known_id=2;
-                        ee_printf("Profile generation run parameters for coremark.\n");
-                        break;
-                case 0xe9f5: /* seed1=0, seed2=0, seed3=0x66, size 666 per algorithm */
-                        known_id=3;
-                        ee_printf("2K performance run parameters for coremark.\n");
-                        break;
-                case 0x18f2: /*  seed1=0x3415, seed2=0x3415, seed3=0x66, size 666 per algorithm */
-                        known_id=4;
-                        ee_printf("2K validation run parameters for coremark.\n");
-                        break;
-                default:
-                        total_errors=-1;
-                        break;
-        }
-        if (known_id>=0) {
-                for (i=0 ; i<default_num_contexts; i++) {
-                        results[i].err=0;
-                        if ((results[i].execs & ID_LIST) &&
-                                (results[i].crclist!=list_known_crc[known_id])) {
-                                ee_printf("[%u]ERROR! list crc 0x%04x - should be 0x%04x\n",i,results[i].crclist,list_known_crc[known_id]);
-                                results[i].err++;
-                        }
-                        if ((results[i].execs & ID_MATRIX) &&
-                                (results[i].crcmatrix!=matrix_known_crc[known_id])) {
-                                ee_printf("[%u]ERROR! matrix crc 0x%04x - should be 0x%04x\n",i,results[i].crcmatrix,matrix_known_crc[known_id]);
-                                results[i].err++;
-                        }
-                        if ((results[i].execs & ID_STATE) &&
-                                (results[i].crcstate!=state_known_crc[known_id])) {
-                                ee_printf("[%u]ERROR! state crc 0x%04x - should be 0x%04x\n",i,results[i].crcstate,state_known_crc[known_id]);
-                                results[i].err++;
-                        }
-                        total_errors+=results[i].err;
-                }
-        }
-        total_errors+=check_data_types();
-        /* and report results */
-        ee_printf("CoreMark Size    : %u\n",(ee_u32)results[0].size);
-        ee_printf("Total ticks      : %u\n",(ee_u32)total_time);
-#if HAS_FLOAT
-        ee_printf("Total time (secs): %f\n",time_in_secs(total_time));
-        if (time_in_secs(total_time) > 0)
-                ee_printf("Iterations/Sec   : %f\n",default_num_contexts*results[0].iterations/time_in_secs(total_time));
-#else
-        ee_printf("Total time (secs): %d\n",time_in_secs(total_time));
-        if (time_in_secs(total_time) > 0)
-//              ee_printf("Iterations/Sec   : %d\n",default_num_contexts*results[0].iterations/time_in_secs(total_time));
-                ee_printf("Iterat/Sec/MHz   : %d.%02d\n",1000*default_num_contexts*results[0].iterations/time_in_secs(total_time),
-                             100000*default_num_contexts*results[0].iterations/time_in_secs(total_time) % 100);
-#endif
-        if (time_in_secs(total_time) < 10) {
-                ee_printf("ERROR! Must execute for at least 10 secs for a valid result!\n");
-                total_errors++;
-        }
-
-        ee_printf("Iterations       : %u\n",(ee_u32)default_num_contexts*results[0].iterations);
-        ee_printf("Compiler version : %s\n",COMPILER_VERSION);
-        ee_printf("Compiler flags   : %s\n",COMPILER_FLAGS);
-#if (MULTITHREAD>1)
-        ee_printf("Parallel %s : %d\n",PARALLEL_METHOD,default_num_contexts);
-#endif
-        ee_printf("Memory location  : %s\n",MEM_LOCATION);
-        /* output for verification */
-        ee_printf("seedcrc          : 0x%04x\n",seedcrc);
-        if (results[0].execs & ID_LIST)
-                for (i=0 ; i<default_num_contexts; i++)
-                        ee_printf("[%d]crclist       : 0x%04x\n",i,results[i].crclist);
-        if (results[0].execs & ID_MATRIX)
-                for (i=0 ; i<default_num_contexts; i++)
-                        ee_printf("[%d]crcmatrix     : 0x%04x\n",i,results[i].crcmatrix);
-        if (results[0].execs & ID_STATE)
-                for (i=0 ; i<default_num_contexts; i++)
-                        ee_printf("[%d]crcstate      : 0x%04x\n",i,results[i].crcstate);
-        for (i=0 ; i<default_num_contexts; i++)
-                ee_printf("[%d]crcfinal      : 0x%04x\n",i,results[i].crc);
-        if (total_errors==0) {
-                ee_printf("Correct operation validated. See readme.txt for run and reporting rules.\n");
-#if HAS_FLOAT
-                if (known_id==3) {
-                        ee_printf("CoreMark 1.0 : %f / %s %s",default_num_contexts*results[0].iterations/time_in_secs(total_time),COMPILER_VERSION,COMPILER_FLAGS);
-#if defined(MEM_LOCATION) && !defined(MEM_LOCATION_UNSPEC)
-                        ee_printf(" / %s",MEM_LOCATION);
-#else
-                        ee_printf(" / %s",mem_name[MEM_METHOD]);
-#endif
-
-#if (MULTITHREAD>1)
-                        ee_printf(" / %d:%s",default_num_contexts,PARALLEL_METHOD);
-#endif
-                        ee_printf("\n");
-                }
-#endif
-        }
-        if (total_errors>0)
-                ee_printf("Errors detected\n");
-        if (total_errors<0)
-                ee_printf("Cannot validate operation for these seed values, please compare with results on a known platform.\n");
-
-#if (MEM_METHOD==MEM_MALLOC)
-        for (i=0 ; i<MULTITHREAD; i++)
-                portable_free(results[i].memblock[0]);
-#endif
-        /* And last call any target specific code for finalizing */
-        portable_fini(&(results[0].port));
-
-        return MAIN_RETURN_VAL;
-}
-
-
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-//#include "coremark.h"
-/*
-Topic: Description
-        Matrix manipulation benchmark
-
-        This very simple algorithm forms the basis of many more complex algorithms.
-
-        The tight inner loop is the focus of many optimizations (compiler as well as hardware based)
-        and is thus relevant for embedded processing.
-
-        The total available data space will be divided to 3 parts:
-        NxN Matrix A - initialized with small values (upper 3/4 of the bits all zero).
-        NxN Matrix B - initialized with medium values (upper half of the bits all zero).
-        NxN Matrix C - used for the result.
-
-        The actual values for A and B must be derived based on input that is not available at compile time.
-*/
-ee_s16 matrix_test(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B, MATDAT val);
-ee_s16 matrix_sum(ee_u32 N, MATRES *C, MATDAT clipval);
-void matrix_mul_const(ee_u32 N, MATRES *C, MATDAT *A, MATDAT val);
-void matrix_mul_vect(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B);
-void matrix_mul_matrix(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B);
-void matrix_mul_matrix_bitextract(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B);
-void matrix_add_const(ee_u32 N, MATDAT *A, MATDAT val);
-
-#define matrix_test_next(x) (x+1)
-#define matrix_clip(x,y) ((y) ? (x) & 0x0ff : (x) & 0x0ffff)
-#define matrix_big(x) (0xf000 | (x))
-#define bit_extract(x,from,to) (((x)>>(from)) & (~(0xffffffff << (to))))
-
-#if CORE_DEBUG
-void printmat(MATDAT *A, ee_u32 N, char *name) {
-        ee_u32 i,j;
-        ee_printf("Matrix %s [%dx%d]:\n",name,N,N);
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        if (j!=0)
-                                ee_printf(",");
-                        ee_printf("%d",A[i*N+j]);
-                }
-                ee_printf("\n");
-        }
-}
-void printmatC(MATRES *C, ee_u32 N, char *name) {
-        ee_u32 i,j;
-        ee_printf("Matrix %s [%dx%d]:\n",name,N,N);
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        if (j!=0)
-                                ee_printf(",");
-                        ee_printf("%d",C[i*N+j]);
-                }
-                ee_printf("\n");
-        }
-}
-#endif
-/* Function: core_bench_matrix
-        Benchmark function
-
-        Iterate <matrix_test> N times,
-        changing the matrix values slightly by a constant amount each time.
-*/
-ee_u16 core_bench_matrix(mat_params *p, ee_s16 seed, ee_u16 crc) {
-        ee_u32 N=p->N;
-        MATRES *C=p->C;
-        MATDAT *A=p->A;
-        MATDAT *B=p->B;
-        MATDAT val=(MATDAT)seed;
-
-        crc=crc16(matrix_test(N,C,A,B,val),crc);
-
-        return crc;
-}
-
-/* Function: matrix_test
-        Perform matrix manipulation.
-
-        Parameters:
-        N - Dimensions of the matrix.
-        C - memory for result matrix.
-        A - input matrix
-        B - operator matrix (not changed during operations)
-
-        Returns:
-        A CRC value that captures all results calculated in the function.
-        In particular, crc of the value calculated on the result matrix
-        after each step by <matrix_sum>.
-
-        Operation:
-
-        1 - Add a constant value to all elements of a matrix.
-        2 - Multiply a matrix by a constant.
-        3 - Multiply a matrix by a vector.
-        4 - Multiply a matrix by a matrix.
-        5 - Add a constant value to all elements of a matrix.
-
-        After the last step, matrix A is back to original contents.
-*/
-ee_s16 matrix_test(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B, MATDAT val) {
-        ee_u16 crc=0;
-        MATDAT clipval=matrix_big(val);
-
-        matrix_add_const(N,A,val); /* make sure data changes  */
-#if CORE_DEBUG
-        printmat(A,N,"matrix_add_const");
-#endif
-        matrix_mul_const(N,C,A,val);
-        crc=crc16(matrix_sum(N,C,clipval),crc);
-#if CORE_DEBUG
-        printmatC(C,N,"matrix_mul_const");
-#endif
-        matrix_mul_vect(N,C,A,B);
-        crc=crc16(matrix_sum(N,C,clipval),crc);
-#if CORE_DEBUG
-        printmatC(C,N,"matrix_mul_vect");
-#endif
-        matrix_mul_matrix(N,C,A,B);
-        crc=crc16(matrix_sum(N,C,clipval),crc);
-#if CORE_DEBUG
-        printmatC(C,N,"matrix_mul_matrix");
-#endif
-        matrix_mul_matrix_bitextract(N,C,A,B);
-        crc=crc16(matrix_sum(N,C,clipval),crc);
-#if CORE_DEBUG
-        printmatC(C,N,"matrix_mul_matrix_bitextract");
-#endif
-
-        matrix_add_const(N,A,-val); /* return matrix to initial value */
-        return crc;
-}
-
-/* Function : matrix_init
-        Initialize the memory block for matrix benchmarking.
-
-        Parameters:
-        blksize - Size of memory to be initialized.
-        memblk - Pointer to memory block.
-        seed - Actual values chosen depend on the seed parameter.
-        p - pointers to <mat_params> containing initialized matrixes.
-
-        Returns:
-        Matrix dimensions.
-
-        Note:
-        The seed parameter MUST be supplied from a source that cannot be determined at compile time
-*/
-ee_u32 core_init_matrix(ee_u32 blksize, void *memblk, ee_s32 seed, mat_params *p) {
-        ee_u32 N=0;
-        MATDAT *A;
-        MATDAT *B;
-        ee_s32 order=1;
-        MATDAT val;
-        ee_u32 i=0,j=0;
-        if (seed==0)
-                seed=1;
-        while (j<blksize) {
-                i++;
-                j=i*i*2*4;
-        }
-        N=i-1;
-        A=(MATDAT *)align_mem(memblk);
-        B=A+N*N;
-
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        seed = ( ( order * seed ) % 65536 );
-                        val = (seed + order);
-                        val=matrix_clip(val,0);
-                        B[i*N+j] = val;
-                        val =  (val + order);
-                        val=matrix_clip(val,1);
-                        A[i*N+j] = val;
-                        order++;
-                }
-        }
-
-        p->A=A;
-        p->B=B;
-        p->C=(MATRES *)align_mem(B+N*N);
-        p->N=N;
-#if CORE_DEBUG
-        printmat(A,N,"A");
-        printmat(B,N,"B");
-#endif
-        return N;
-}
-
-/* Function: matrix_sum
-        Calculate a function that depends on the values of elements in the matrix.
-
-        For each element, accumulate into a temporary variable.
-
-        As long as this value is under the parameter clipval,
-        add 1 to the result if the element is bigger then the previous.
-
-        Otherwise, reset the accumulator and add 10 to the result.
-*/
-ee_s16 matrix_sum(ee_u32 N, MATRES *C, MATDAT clipval) {
-        MATRES tmp=0,prev=0,cur=0;
-        ee_s16 ret=0;
-        ee_u32 i,j;
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        cur=C[i*N+j];
-                        tmp+=cur;
-                        if (tmp>clipval) {
-                                ret+=10;
-                                tmp=0;
-                        } else {
-                                ret += (cur>prev) ? 1 : 0;
-                        }
-                        prev=cur;
-                }
-        }
-        return ret;
-}
-
-/* Function: matrix_mul_const
-        Multiply a matrix by a constant.
-        This could be used as a scaler for instance.
-*/
-void matrix_mul_const(ee_u32 N, MATRES *C, MATDAT *A, MATDAT val) {
-        ee_u32 i,j;
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        C[i*N+j]=(MATRES)A[i*N+j] * (MATRES)val;
-                }
-        }
-}
-
-/* Function: matrix_add_const
-        Add a constant value to all elements of a matrix.
-*/
-void matrix_add_const(ee_u32 N, MATDAT *A, MATDAT val) {
-        ee_u32 i,j;
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        A[i*N+j] += val;
-                }
-        }
-}
-
-/* Function: matrix_mul_vect
-        Multiply a matrix by a vector.
-        This is common in many simple filters (e.g. fir where a vector of coefficients is applied to the matrix.)
-*/
-void matrix_mul_vect(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B) {
-        ee_u32 i,j;
-        for (i=0; i<N; i++) {
-                C[i]=0;
-                for (j=0; j<N; j++) {
-                        C[i]+=(MATRES)A[i*N+j] * (MATRES)B[j];
-                }
-        }
-}
-
-/* Function: matrix_mul_matrix
-        Multiply a matrix by a matrix.
-        Basic code is used in many algorithms, mostly with minor changes such as scaling.
-*/
-void matrix_mul_matrix(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B) {
-        ee_u32 i,j,k;
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        C[i*N+j]=0;
-                        for(k=0;k<N;k++)
-                        {
-                                C[i*N+j]+=(MATRES)A[i*N+k] * (MATRES)B[k*N+j];
-                        }
-                }
-        }
-}
-
-/* Function: matrix_mul_matrix_bitextract
-        Multiply a matrix by a matrix, and extract some bits from the result.
-        Basic code is used in many algorithms, mostly with minor changes such as scaling.
-*/
-void matrix_mul_matrix_bitextract(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B) {
-        ee_u32 i,j,k;
-        for (i=0; i<N; i++) {
-                for (j=0; j<N; j++) {
-                        C[i*N+j]=0;
-                        for(k=0;k<N;k++)
-                        {
-                                MATRES tmp=(MATRES)A[i*N+k] * (MATRES)B[k*N+j];
-                                C[i*N+j]+=bit_extract(tmp,2,4)*bit_extract(tmp,5,7);
-                        }
-                }
-        }
-}
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-//#include "coremark.h"
-/* local functions */
-enum CORE_STATE core_state_transition( ee_u8 **instr , ee_u32 *transition_count);
-
-/*
-Topic: Description
-        Simple state machines like this one are used in many embedded products.
-
-        For more complex state machines, sometimes a state transition table implementation is used instead,
-        trading speed of direct coding for ease of maintenance.
-
-        Since the main goal of using a state machine in CoreMark is to excercise the switch/if behaviour,
-        we are using a small moore machine.
-
-        In particular, this machine tests type of string input,
-        trying to determine whether the input is a number or something else.
-        (see core_state.png).
-*/
-
-/* Function: core_bench_state
-        Benchmark function
-
-        Go over the input twice, once direct, and once after introducing some corruption.
-*/
-ee_u16 core_bench_state(ee_u32 blksize, ee_u8 *memblock,
-                ee_s16 seed1, ee_s16 seed2, ee_s16 step, ee_u16 crc)
-{
-        ee_u32 final_counts[NUM_CORE_STATES];
-        ee_u32 track_counts[NUM_CORE_STATES];
-        ee_u8 *p=memblock;
-        ee_u32 i;
-
-
-#if CORE_DEBUG
-        ee_printf("State Bench: %d,%d,%d,%04x\n",seed1,seed2,step,crc);
-#endif
-        for (i=0; i<NUM_CORE_STATES; i++) {
-                final_counts[i]=track_counts[i]=0;
-        }
-        /* run the state machine over the input */
-        while (*p!=0) {
-                enum CORE_STATE fstate=core_state_transition(&p,track_counts);
-                final_counts[fstate]++;
-#if CORE_DEBUG
-        ee_printf("%d,",fstate);
-        }
-        ee_printf("\n");
-#else
-        }
-#endif
-        p=memblock;
-        while (p < (memblock+blksize)) { /* insert some corruption */
-                if (*p!=',')
-                        *p^=(ee_u8)seed1;
-                p+=step;
-        }
-        p=memblock;
-        /* run the state machine over the input again */
-        while (*p!=0) {
-                enum CORE_STATE fstate=core_state_transition(&p,track_counts);
-                final_counts[fstate]++;
-#if CORE_DEBUG
-        ee_printf("%d,",fstate);
-        }
-        ee_printf("\n");
-#else
-        }
-#endif
-        p=memblock;
-        while (p < (memblock+blksize)) { /* undo corruption is seed1 and seed2 are equal */
-                if (*p!=',')
-                        *p^=(ee_u8)seed2;
-                p+=step;
-        }
-        /* end timing */
-        for (i=0; i<NUM_CORE_STATES; i++) {
-                crc=crcu32(final_counts[i],crc);
-                crc=crcu32(track_counts[i],crc);
-        }
-        return crc;
-}
-
-/* Default initialization patterns */
-static ee_u8 *intpat[4]  ={(ee_u8 *)"5012",(ee_u8 *)"1234",(ee_u8 *)"-874",(ee_u8 *)"+122"};
-static ee_u8 *floatpat[4]={(ee_u8 *)"35.54400",(ee_u8 *)".1234500",(ee_u8 *)"-110.700",(ee_u8 *)"+0.64400"};
-static ee_u8 *scipat[4]  ={(ee_u8 *)"5.500e+3",(ee_u8 *)"-.123e-2",(ee_u8 *)"-87e+832",(ee_u8 *)"+0.6e-12"};
-static ee_u8 *errpat[4]  ={(ee_u8 *)"T0.3e-1F",(ee_u8 *)"-T.T++Tq",(ee_u8 *)"1T3.4e4z",(ee_u8 *)"34.0e-T^"};
-
-/* Function: core_init_state
-        Initialize the input data for the state machine.
-
-        Populate the input with several predetermined strings, interspersed.
-        Actual patterns chosen depend on the seed parameter.
-
-        Note:
-        The seed parameter MUST be supplied from a source that cannot be determined at compile time
-*/
-void core_init_state(ee_u32 size, ee_s16 seed, ee_u8 *p) {
-        ee_u32 total=0,next=0,i;
-        ee_u8 *buf=0;
-#if CORE_DEBUG
-        ee_u8 *start=p;
-        ee_printf("State: %d,%d\n",size,seed);
-#endif
-        size--;
-        next=0;
-        while ((total+next+1)<size) {
-                if (next>0) {
-                        for(i=0;i<next;i++)
-                                *(p+total+i)=buf[i];
-                        *(p+total+i)=',';
-                        total+=next+1;
-                }
-                seed++;
-                switch (seed & 0x7) {
-                        case 0: /* int */
-                        case 1: /* int */
-                        case 2: /* int */
-                                buf=intpat[(seed>>3) & 0x3];
-                                next=4;
-                        break;
-                        case 3: /* float */
-                        case 4: /* float */
-                                buf=floatpat[(seed>>3) & 0x3];
-                                next=8;
-                        break;
-                        case 5: /* scientific */
-                        case 6: /* scientific */
-                                buf=scipat[(seed>>3) & 0x3];
-                                next=8;
-                        break;
-                        case 7: /* invalid */
-                                buf=errpat[(seed>>3) & 0x3];
-                                next=8;
-                        break;
-                        default: /* Never happen, just to make some compilers happy */
-                        break;
-                }
-        }
-        size++;
-        while (total<size) { /* fill the rest with 0 */
-                *(p+total)=0;
-                total++;
-        }
-#if CORE_DEBUG
-        ee_printf("State Input: %s\n",start);
-#endif
-}
-
-static ee_u8 ee_isdigit(ee_u8 c) {
-        ee_u8 retval;
-        retval = ((c>='0') & (c<='9')) ? 1 : 0;
-        return retval;
-}
-
-/* Function: core_state_transition
-        Actual state machine.
-
-        The state machine will continue scanning until either:
-        1 - an invalid input is detcted.
-        2 - a valid number has been detected.
-
-        The input pointer is updated to point to the end of the token, and the end state is returned (either specific format determined or invalid).
-*/
-
-enum CORE_STATE core_state_transition( ee_u8 **instr , ee_u32 *transition_count) {
-        ee_u8 *str=*instr;
-        ee_u8 NEXT_SYMBOL;
-        enum CORE_STATE state=CORE_START;
-        for( ; *str && state != CORE_INVALID; str++ ) {
-                NEXT_SYMBOL = *str;
-                if (NEXT_SYMBOL==',') /* end of this input */ {
-                        str++;
-                        break;
-                }
-                switch(state) {
-                case CORE_START:
-                        if(ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_INT;
-                        }
-                        else if( NEXT_SYMBOL == '+' || NEXT_SYMBOL == '-' ) {
-                                state = CORE_S1;
-                        }
-                        else if( NEXT_SYMBOL == '.' ) {
-                                state = CORE_FLOAT;
-                        }
-                        else {
-                                state = CORE_INVALID;
-                                transition_count[CORE_INVALID]++;
-                        }
-                        transition_count[CORE_START]++;
-                        break;
-                case CORE_S1:
-                        if(ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_INT;
-                                transition_count[CORE_S1]++;
-                        }
-                        else if( NEXT_SYMBOL == '.' ) {
-                                state = CORE_FLOAT;
-                                transition_count[CORE_S1]++;
-                        }
-                        else {
-                                state = CORE_INVALID;
-                                transition_count[CORE_S1]++;
-                        }
-                        break;
-                case CORE_INT:
-                        if( NEXT_SYMBOL == '.' ) {
-                                state = CORE_FLOAT;
-                                transition_count[CORE_INT]++;
-                        }
-                        else if(!ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_INVALID;
-                                transition_count[CORE_INT]++;
-                        }
-                        break;
-                case CORE_FLOAT:
-                        if( NEXT_SYMBOL == 'E' || NEXT_SYMBOL == 'e' ) {
-                                state = CORE_S2;
-                                transition_count[CORE_FLOAT]++;
-                        }
-                        else if(!ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_INVALID;
-                                transition_count[CORE_FLOAT]++;
-                        }
-                        break;
-                case CORE_S2:
-                        if( NEXT_SYMBOL == '+' || NEXT_SYMBOL == '-' ) {
-                                state = CORE_EXPONENT;
-                                transition_count[CORE_S2]++;
-                        }
-                        else {
-                                state = CORE_INVALID;
-                                transition_count[CORE_S2]++;
-                        }
-                        break;
-                case CORE_EXPONENT:
-                        if(ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_SCIENTIFIC;
-                                transition_count[CORE_EXPONENT]++;
-                        }
-                        else {
-                                state = CORE_INVALID;
-                                transition_count[CORE_EXPONENT]++;
-                        }
-                        break;
-                case CORE_SCIENTIFIC:
-                        if(!ee_isdigit(NEXT_SYMBOL)) {
-                                state = CORE_INVALID;
-                                transition_count[CORE_INVALID]++;
-                        }
-                        break;
-                default:
-                        break;
-                }
-        }
-        *instr=str;
-        return state;
-}
-/*
-Author : Shay Gal-On, EEMBC
-
-This file is part of  EEMBC(R) and CoreMark(TM), which are Copyright (C) 2009
-All rights reserved.
-
-EEMBC CoreMark Software is a product of EEMBC and is provided under the terms of the
-CoreMark License that is distributed with the official EEMBC COREMARK Software release.
-If you received this EEMBC CoreMark Software without the accompanying CoreMark License,
-you must discontinue use and download the official release from www.coremark.org.
-
-Also, if you are publicly displaying scores generated from the EEMBC CoreMark software,
-make sure that you are in compliance with Run and Reporting rules specified in the accompanying readme.txt file.
-
-EEMBC
-4354 Town Center Blvd. Suite 114-200
-El Dorado Hills, CA, 95762
-*/
-//#include "coremark.h"
-/* Function: get_seed
-        Get a values that cannot be determined at compile time.
-
-        Since different embedded systems and compilers are used, 3 different methods are provided:
-        1 - Using a volatile variable. This method is only valid if the compiler is forced to generate code that
-        reads the value of a volatile variable from memory at run time.
-        Please note, if using this method, you would need to modify core_portme.c to generate training profile.
-        2 - Command line arguments. This is the preferred method if command line arguments are supported.
-        3 - System function. If none of the first 2 methods is available on the platform,
-        a system function which is not a stub can be used.
-
-        e.g. read the value on GPIO pins connected to switches, or invoke special simulator functions.
-*/
-#if (SEED_METHOD==SEED_VOLATILE)
-        extern volatile ee_s32 seed1_volatile;
-        extern volatile ee_s32 seed2_volatile;
-        extern volatile ee_s32 seed3_volatile;
-        extern volatile ee_s32 seed4_volatile;
-        extern volatile ee_s32 seed5_volatile;
-        ee_s32 get_seed_32(int i) {
-                ee_s32 retval;
-                switch (i) {
-                        case 1:
-                                retval=seed1_volatile;
-                                break;
-                        case 2:
-                                retval=seed2_volatile;
-                                break;
-                        case 3:
-                                retval=seed3_volatile;
-                                break;
-                        case 4:
-                                retval=seed4_volatile;
-                                break;
-                        case 5:
-                                retval=seed5_volatile;
-                                break;
-                        default:
-                                retval=0;
-                                break;
-                }
-                return retval;
-        }
-#elif (SEED_METHOD==SEED_ARG)
-ee_s32 parseval(char *valstring) {
-        ee_s32 retval=0;
-        ee_s32 neg=1;
-        int hexmode=0;
-        if (*valstring == '-') {
-                neg=-1;
-                valstring++;
-        }
-        if ((valstring[0] == '0') && (valstring[1] == 'x')) {
-                hexmode=1;
-                valstring+=2;
-        }
-                /* first look for digits */
-        if (hexmode) {
-                while (((*valstring >= '0') && (*valstring <= '9')) || ((*valstring >= 'a') && (*valstring <= 'f'))) {
-                        ee_s32 digit=*valstring-'0';
-                        if (digit>9)
-                                digit=10+*valstring-'a';
-                        retval*=16;
-                        retval+=digit;
-                        valstring++;
-                }
-        } else {
-                while ((*valstring >= '0') && (*valstring <= '9')) {
-                        ee_s32 digit=*valstring-'0';
-                        retval*=10;
-                        retval+=digit;
-                        valstring++;
-                }
-        }
-        /* now add qualifiers */
-        if (*valstring=='K')
-                retval*=1024;
-        if (*valstring=='M')
-                retval*=1024*1024;
-
-        retval*=neg;
-        return retval;
-}
-
-ee_s32 get_seed_args(int i, int argc, char *argv[]) {
-        if (argc>i)
-                return parseval(argv[i]);
-        return 0;
-}
-
-#elif (SEED_METHOD==SEED_FUNC)
-/* If using OS based function, you must define and implement the functions below in core_portme.h and core_portme.c ! */
-ee_s32 get_seed_32(int i) {
-        ee_s32 retval;
-        switch (i) {
-                case 1:
-                        retval=portme_sys1();
-                        break;
-                case 2:
-                        retval=portme_sys2();
-                        break;
-                case 3:
-                        retval=portme_sys3();
-                        break;
-                case 4:
-                        retval=portme_sys4();
-                        break;
-                case 5:
-                        retval=portme_sys5();
-                        break;
-                default:
-                        retval=0;
-                        break;
-        }
-        return retval;
-}
-#endif
-
-/* Function: crc*
-        Service functions to calculate 16b CRC code.
-
-*/
-ee_u16 crcu8(ee_u8 data, ee_u16 crc )
-{
-        ee_u8 i=0,x16=0,carry=0;
-
-        for (i = 0; i < 8; i++)
-    {
-                x16 = (ee_u8)((data & 1) ^ ((ee_u8)crc & 1));
-                data >>= 1;
-
-                if (x16 == 1)
-                {
-                   crc ^= 0x4002;
-                   carry = 1;
-                }
-                else
-                        carry = 0;
-                crc >>= 1;
-                if (carry)
-                   crc |= 0x8000;
-                else
-                   crc &= 0x7fff;
-    }
-        return crc;
-}
-ee_u16 crcu16(ee_u16 newval, ee_u16 crc) {
-        crc=crcu8( (ee_u8) (newval)                             ,crc);
-        crc=crcu8( (ee_u8) ((newval)>>8)        ,crc);
-        return crc;
-}
-ee_u16 crcu32(ee_u32 newval, ee_u16 crc) {
-        crc=crc16((ee_s16) newval               ,crc);
-        crc=crc16((ee_s16) (newval>>16) ,crc);
-        return crc;
-}
-ee_u16 crc16(ee_s16 newval, ee_u16 crc) {
-        return crcu16((ee_u16)newval, crc);
-}
-
-ee_u8 check_data_types() {
-        ee_u8 retval=0;
-        if (sizeof(ee_u8) != 1) {
-                ee_printf("ERROR: ee_u8 is not an 8b datatype!\n");
-                retval++;
-        }
-        if (sizeof(ee_u16) != 2) {
-                ee_printf("ERROR: ee_u16 is not a 16b datatype!\n");
-                retval++;
-        }
-        if (sizeof(ee_s16) != 2) {
-                ee_printf("ERROR: ee_s16 is not a 16b datatype!\n");
-                retval++;
-        }
-        if (sizeof(ee_s32) != 4) {
-                ee_printf("ERROR: ee_s32 is not a 32b datatype!\n");
-                retval++;
-        }
-        if (sizeof(ee_u32) != 4) {
-                ee_printf("ERROR: ee_u32 is not a 32b datatype!\n");
-                retval++;
-        }
-        if (sizeof(ee_ptr_int) != sizeof(int *)) {
-                ee_printf("ERROR: ee_ptr_int is not a datatype that holds an int pointer!\n");
-                retval++;
-        }
-        if (retval>0) {
-                ee_printf("ERROR: Please modify the datatypes in core_portme.h!\n");
-        }
-        return retval;
-}
-/*
-        File : core_portme.c
-*/
-/*
-        Author : Shay Gal-On, EEMBC
-        Legal : TODO!
-*/
-#include <stdio.h>
-#include <stdlib.h>
-//#include "coremark.h"
-
-#if VALIDATION_RUN
-        volatile ee_s32 seed1_volatile=0x3415;
-        volatile ee_s32 seed2_volatile=0x3415;
-        volatile ee_s32 seed3_volatile=0x66;
-#endif
-#if PERFORMANCE_RUN
-        volatile ee_s32 seed1_volatile=0x0;
-        volatile ee_s32 seed2_volatile=0x0;
-        volatile ee_s32 seed3_volatile=0x66;
-#endif
-#if PROFILE_RUN
-        volatile ee_s32 seed1_volatile=0x8;
-        volatile ee_s32 seed2_volatile=0x8;
-        volatile ee_s32 seed3_volatile=0x8;
-#endif
-        volatile ee_s32 seed4_volatile=ITERATIONS;
-        volatile ee_s32 seed5_volatile=0;
-/* Porting : Timing functions
-        How to capture time and convert to seconds must be ported to whatever is supported by the platform.
-        e.g. Read value from on board RTC, read value from cpu clock cycles performance counter etc.
-        Sample implementation for standard time.h and windows.h definitions included.
-*/
-/* Define : TIMER_RES_DIVIDER
-        Divider to trade off timer resolution and total time that can be measured.
-
-        Use lower values to increase resolution, but make sure that overflow does not occur.
-        If there are issues with the return value overflowing, increase this value.
-        */
-//#define NSECS_PER_SEC CLOCKS_PER_SEC
-#define NSECS_PER_SEC 1000000000
-#define CORETIMETYPE clock_t
-//#define GETMYTIME(_t) (*_t=clock())
-#define GETMYTIME(_t) (*_t=0)
-#define MYTIMEDIFF(fin,ini) ((fin)-(ini))
-#define TIMER_RES_DIVIDER 1
-#define SAMPLE_TIME_IMPLEMENTATION 1
-//#define EE_TICKS_PER_SEC (NSECS_PER_SEC / TIMER_RES_DIVIDER)
-
-#define EE_TICKS_PER_SEC 1000
-
-/** Define Host specific (POSIX), or target specific global time variables. */
-static CORETIMETYPE start_time_val, stop_time_val;
-
-/* Function : start_time
-        This function will be called right before starting the timed portion of the benchmark.
-
-        Implementation may be capturing a system timer (as implemented in the example code)
-        or zeroing some system parameters - e.g. setting the cpu clocks cycles to 0.
-*/
-void start_time(void) {
-uint32_t mcyclel;
-        asm volatile ("csrr %0,mcycle"  : "=r" (mcyclel) );
-        start_time_val = mcyclel;
-}
-/* Function : stop_time
-        This function will be called right after ending the timed portion of the benchmark.
-
-        Implementation may be capturing a system timer (as implemented in the example code)
-        or other system parameters - e.g. reading the current value of cpu cycles counter.
-*/
-void stop_time(void) {
-uint32_t mcyclel;
-        asm volatile ("csrr %0,mcycle"  : "=r" (mcyclel) );
-        stop_time_val = mcyclel;
-}
-/* Function : get_time
-        Return an abstract "ticks" number that signifies time on the system.
-
-        Actual value returned may be cpu cycles, milliseconds or any other value,
-        as long as it can be converted to seconds by <time_in_secs>.
-        This methodology is taken to accomodate any hardware or simulated platform.
-        The sample implementation returns millisecs by default,
-        and the resolution is controlled by <TIMER_RES_DIVIDER>
-*/
-CORE_TICKS get_time(void) {
-        CORE_TICKS elapsed=(CORE_TICKS)(MYTIMEDIFF(stop_time_val, start_time_val));
-        return elapsed;
-}
-/* Function : time_in_secs
-        Convert the value returned by get_time to seconds.
-
-        The <secs_ret> type is used to accomodate systems with no support for floating point.
-        Default implementation implemented by the EE_TICKS_PER_SEC macro above.
-*/
-secs_ret time_in_secs(CORE_TICKS ticks) {
-        secs_ret retval=((secs_ret)ticks) / (secs_ret)EE_TICKS_PER_SEC;
-        return retval;
-}
-
-ee_u32 default_num_contexts=1;
-
-/* Function : portable_init
-        Target specific initialization code
-        Test for some common mistakes.
-*/
-void portable_init(core_portable *p, int *argc, char *argv[])
-{
-        if (sizeof(ee_ptr_int) != sizeof(ee_u8 *)) {
-                ee_printf("ERROR! Please define ee_ptr_int to a type that holds a pointer!\n");
-        }
-        if (sizeof(ee_u32) != 4) {
-                ee_printf("ERROR! Please define ee_u32 to a 32b unsigned type!\n");
-        }
-        p->portable_id=1;
-}
-/* Function : portable_fini
-        Target specific final code
-*/
-void portable_fini(core_portable *p)
-{
-        p->portable_id=0;
-}
-
-
-void* memset(void* s, int c, size_t n)
-{
-  asm("mv t0, a0");
-  asm("add a2, a2, a0");  // end = s + n
-  asm(".memset_loop: bge a0, a2, .memset_end");
-  asm("sb a1, 0(a0)");
-  asm("addi a0, a0, 1");
-  asm("j .memset_loop");
-  asm(".memset_end:");
-  asm("mv a0, t0");
-  asm("jr ra");
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/Coremark/printf.c b/verilog/rtl/BrqRV_EB1/testbench/tests/Coremark/printf.c
deleted file mode 100644
index 5ce56a9..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/Coremark/printf.c
+++ /dev/null
@@ -1,262 +0,0 @@
-#include <stdarg.h>
-#include "defines.h"
-
-static int
-whisperPutc(char c)
-{
-//  __whisper_console_io = c;
-//  __whisper_console_io = c;
-  *(volatile char*)(RV_SERIALIO) = c;
-  return c;
-}
-
-
-static int
-whisperPuts(const char* s)
-{
-  while (*s)
-    whisperPutc(*s++);
-  return 1;
-}
-
-
-static int
-whisperPrintUnsigned(unsigned value, int width, char pad)
-{
-  char buffer[20];
-  int charCount = 0;
-
-  do
-    {
-      char c = '0' + (value % 10);
-      value = value / 10;
-      buffer[charCount++] = c;
-    }
-  while (value);
-
-  for (int i = charCount; i < width; ++i)
-    whisperPutc(pad);
-
-  char* p = buffer + charCount - 1;
-  for (int i = 0; i < charCount; ++i)
-    whisperPutc(*p--);
-
-  return charCount;
-}
-
-
-static int
-whisperPrintDecimal(int value, int width, char pad)
-{
-  char buffer[20];
-  int charCount = 0;
-
-  unsigned neg = value < 0;
-  if (neg)
-    {
-      value = -value;
-      whisperPutc('-');
-      width--;
-    }
-
-  do
-    {
-      char c = '0' + (value % 10);
-      value = value / 10;
-      buffer[charCount++] = c;
-    }
-  while (value);
-
-  for (int i = charCount; i < width; ++i)
-    whisperPutc(pad);
-
-  char* p = buffer + charCount - 1;
-  for (int i = 0; i < charCount; ++i)
-    whisperPutc(*p--);
-
-  if (neg)
-    charCount++;
-
-  return charCount;
-}
-
-
-static int
-whisperPrintInt(int value, int width, int pad, int base)
-{
-  if (base == 10)
-    return whisperPrintDecimal(value, width, pad);
-
-  char buffer[20];
-  int charCount = 0;
-
-  unsigned uu = value;
-
-  if (base == 8)
-    {
-      do
-        {
-          char c = '0' + (uu & 7);
-          buffer[charCount++] = c;
-          uu >>= 3;
-        }
-      while (uu);
-    }
-  else if (base == 16)
-    {
-      do
-        {
-          int digit = uu & 0xf;
-          char c = digit < 10 ? '0' + digit : 'a' + digit - 10;
-          buffer[charCount++] = c;
-          uu >>= 4;
-        }
-      while (uu);
-    }
-  else
-    return -1;
-
-  char* p = buffer + charCount - 1;
-  for (unsigned i = 0; i < charCount; ++i)
-    whisperPutc(*p--);
-
-  return charCount;
-}
-
-
-#if 0
-// Print with g format
-static int
-whisperPrintDoubleG(double value)
-{
-  return 0;
-}
-
-
-// Print with f format
-static int
-whisperPrintDoubleF(double value)
-{
-  return 0;
-}
-#endif
-
-
-int
-whisperPrintfImpl(const char* format, va_list ap)
-{
-  int count = 0;  // Printed character count
-
-  for (const char* fp = format; *fp; fp++)
-    {
-      char pad = ' ';
-      int width = 0;  // Field width
-
-      if (*fp != '%')
-        {
-          whisperPutc(*fp);
-          ++count;
-          continue;
-        }
-
-      ++fp;  // Skip %
-
-      if (*fp == 0)
-        break;
-
-      if (*fp == '%')
-        {
-          whisperPutc('%');
-          continue;
-        }
-
-      while (*fp == '0')
-        {
-          pad = '0';
-          fp++;  // Pad zero not yet implented.
-        }
-
-      if (*fp == '-')
-        {
-          fp++;  // Pad right not yet implemented.
-        }
-
-      if (*fp == '*')
-        {
-          int outWidth = va_arg(ap, int);
-          fp++;  // Width not yet implemented.
-        }
-      else if (*fp >= '0' && *fp <= '9')
-        {    // Width not yet implemented.
-          while (*fp >= '0' && *fp <= '9')
-            width = width * 10 + (*fp++ - '0');
-        }
-
-      switch (*fp)
-        {
-        case 'd':
-          count += whisperPrintDecimal(va_arg(ap, int), width, pad);
-          break;
-
-        case 'u':
-          count += whisperPrintUnsigned((unsigned) va_arg(ap, unsigned), width, pad);
-          break;
-
-        case 'x':
-        case 'X':
-          count += whisperPrintInt(va_arg(ap, int), width, pad, 16);
-          break;
-
-        case 'o':
-          count += whisperPrintInt(va_arg(ap, int), width, pad, 8);
-          break;
-
-        case 'c':
-          whisperPutc(va_arg(ap, int));
-          ++count;
-          break;
-
-        case 's':
-          count += whisperPuts(va_arg(ap, char*));
-          break;
-
-#if 0
-        case 'g':
-          count += whisperPrintDoubleG(va_arg(ap, double));
-          break;
-
-        case 'f':
-          count += whisperPrintDoubleF(va_arg(ap, double));
-#endif
-
-        }
-    }
-
-  return count;
-}
-
-
-int
-whisperPrintf(const char* format, ...)
-{
-  va_list ap;
-
-  va_start(ap, format);
-  int code = whisperPrintfImpl(format, ap);
-  va_end(ap);
-
-  return code;
-}
-
-
-int
-printf(const char* format, ...)
-{
-  va_list ap;
-
-  va_start(ap, format);
-  int code = whisperPrintfImpl(format, ap);
-  va_end(ap);
-
-  return code;
-}
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/README b/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/README
deleted file mode 100644
index 9e7b668..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/README
+++ /dev/null
@@ -1,7 +0,0 @@
-This is dhrystone, compiled according to the spec:
- 1. Files dhry_1.c and dhry2_.c compiled separately.
- 2. No inlining.
- to run in demo TB:
-
-  make -f $RV_ROOT/tools/Makefile [<simulator>] TEST=dhry
-
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/crt0.s b/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/crt0.s
deleted file mode 120000
index d09de58..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/crt0.s
+++ /dev/null
@@ -1 +0,0 @@
-../../asm/crt0.s
\ No newline at end of file
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry.h b/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry.h
deleted file mode 100644
index d894ba1..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry.h
+++ /dev/null
@@ -1,437 +0,0 @@
-#pragma once
-
-/*
- ****************************************************************************
- *
- *                   "DHRYSTONE" Benchmark Program
- *                   -----------------------------
- *
- *  Version:    C, Version 2.1
- *
- *  File:       dhry.h (part 1 of 3)
- *
- *  Date:       May 25, 1988
- *
- *  Author:     Reinhold P. Weicker
- *                      Siemens AG, E STE 35
- *                      Postfach 3240
- *                      8520 Erlangen
- *                      Germany (West)
- *                              Phone:  [xxx-49]-9131-7-20330
- *                                      (8-17 Central European Time)
- *                              Usenet: ..!mcvax!unido!estevax!weicker
- *
- *              Original Version (in Ada) published in
- *              "Communications of the ACM" vol. 27., no. 10 (Oct. 1984),
- *              pp. 1013 - 1030, together with the statistics
- *              on which the distribution of statements etc. is based.
- *
- *              In this C version, the following C library functions are used:
- *              - strcpy, strcmp (inside the measurement loop)
- *              - printf, scanf (outside the measurement loop)
- *              In addition, Berkeley UNIX system calls "times ()" or "time ()"
- *              are used for execution time measurement. For measurements
- *              on other systems, these calls have to be changed.
- *
- *  Collection of Results:
- *              Reinhold Weicker (address see above) and
- *
- *              Rick Richardson
- *              PC Research. Inc.
- *              94 Apple Orchard Drive
- *              Tinton Falls, NJ 07724
- *                      Phone:  (201) 389-8963 (9-17 EST)
- *                      Usenet: ...!uunet!pcrat!rick
- *
- *      Please send results to Rick Richardson and/or Reinhold Weicker.
- *      Complete information should be given on hardware and software used.
- *      Hardware information includes: Machine type, CPU, type and size
- *      of caches; for microprocessors: clock frequency, memory speed
- *      (number of wait states).
- *      Software information includes: Compiler (and runtime library)
- *      manufacturer and version, compilation switches, OS version.
- *      The Operating System version may give an indication about the
- *      compiler; Dhrystone itself performs no OS calls in the measurement loop.
- *
- *      The complete output generated by the program should be mailed
- *      such that at least some checks for correctness can be made.
- *
- ***************************************************************************
- *
- *  History:    This version C/2.1 has been made for two reasons:
- *
- *              1) There is an obvious need for a common C version of
- *              Dhrystone, since C is at present the most popular system
- *              programming language for the class of processors
- *              (microcomputers, minicomputers) where Dhrystone is used most.
- *              There should be, as far as possible, only one C version of
- *              Dhrystone such that results can be compared without
- *              restrictions. In the past, the C versions distributed
- *              by Rick Richardson (Version 1.1) and by Reinhold Weicker
- *              had small (though not significant) differences.
- *
- *              2) As far as it is possible without changes to the Dhrystone
- *              statistics, optimizing compilers should be prevented from
- *              removing significant statements.
- *
- *              This C version has been developed in cooperation with
- *              Rick Richardson (Tinton Falls, NJ), it incorporates many
- *              ideas from the "Version 1.1" distributed previously by
- *              him over the UNIX network Usenet.
- *              I also thank Chaim Benedelac (National Semiconductor),
- *              David Ditzel (SUN), Earl Killian and John Mashey (MIPS),
- *              Alan Smith and Rafael Saavedra-Barrera (UC at Berkeley)
- *              for their help with comments on earlier versions of the
- *              benchmark.
- *
- *  Changes:    In the initialization part, this version follows mostly
- *              Rick Richardson's version distributed via Usenet, not the
- *              version distributed earlier via floppy disk by Reinhold Weicker.
- *              As a concession to older compilers, names have been made
- *              unique within the first 8 characters.
- *              Inside the measurement loop, this version follows the
- *              version previously distributed by Reinhold Weicker.
- *
- *              At several places in the benchmark, code has been added,
- *              but within the measurement loop only in branches that
- *              are not executed. The intention is that optimizing compilers
- *              should be prevented from moving code out of the measurement
- *              loop, or from removing code altogether. Since the statements
- *              that are executed within the measurement loop have NOT been
- *              changed, the numbers defining the "Dhrystone distribution"
- *              (distribution of statements, operand types and locality)
- *              still hold. Except for sophisticated optimizing compilers,
- *              execution times for this version should be the same as
- *              for previous versions.
- *
- *              Since it has proven difficult to subtract the time for the
- *              measurement loop overhead in a correct way, the loop check
- *              has been made a part of the benchmark. This does have
- *              an impact - though a very minor one - on the distribution
- *              statistics which have been updated for this version.
- *
- *              All changes within the measurement loop are described
- *              and discussed in the companion paper "Rationale for
- *              Dhrystone version 2".
- *
- *              Because of the self-imposed limitation that the order and
- *              distribution of the executed statements should not be
- *              changed, there are still cases where optimizing compilers
- *              may not generate code for some statements. To a certain
- *              degree, this is unavoidable for small synthetic benchmarks.
- *              Users of the benchmark are advised to check code listings
- *              whether code is generated for all statements of Dhrystone.
- *
- *              Version 2.1 is identical to version 2.0 distributed via
- *              the UNIX network Usenet in March 1988 except that it corrects
- *              some minor deficiencies that were found by users of version 2.0.
- *              The only change within the measurement loop is that a
- *              non-executed "else" part was added to the "if" statement in
- *              Func_3, and a non-executed "else" part removed from Proc_3.
- *
- ***************************************************************************
- *
- * Defines:     The following "Defines" are possible:
- *              -DREG=register          (default: Not defined)
- *                      As an approximation to what an average C programmer
- *                      might do, the "register" storage class is applied
- *                      (if enabled by -DREG=register)
- *                      - for local variables, if they are used (dynamically)
- *                        five or more times
- *                      - for parameters if they are used (dynamically)
- *                        six or more times
- *                      Note that an optimal "register" strategy is
- *                      compiler-dependent, and that "register" declarations
- *                      do not necessarily lead to faster execution.
- *              -DNOSTRUCTASSIGN        (default: Not defined)
- *                      Define if the C compiler does not support
- *                      assignment of structures.
- *              -DNOENUMS               (default: Not defined)
- *                      Define if the C compiler does not support
- *                      enumeration types.
- *              -DTIMES                 (default)
- *              -DTIME
- *                      The "times" function of UNIX (returning process times)
- *                      or the "time" function (returning wallclock time)
- *                      is used for measurement.
- *                      For single user machines, "time ()" is adequate. For
- *                      multi-user machines where you cannot get single-user
- *                      access, use the "times ()" function. If you have
- *                      neither, use a stopwatch in the dead of night.
- *                      "printf"s are provided marking the points "Start Timer"
- *                      and "Stop Timer". DO NOT use the UNIX "time(1)"
- *                      command, as this will measure the total time to
- *                      run this program, which will (erroneously) include
- *                      the time to allocate storage (malloc) and to perform
- *                      the initialization.
- *              -DHZ=nnn
- *                      In Berkeley UNIX, the function "times" returns process
- *                      time in 1/HZ seconds, with HZ = 60 for most systems.
- *                      CHECK YOUR SYSTEM DESCRIPTION BEFORE YOU JUST APPLY
- *                      A VALUE.
- *
- ***************************************************************************
- *
- *  Compilation model and measurement (IMPORTANT):
- *
- *  This C version of Dhrystone consists of three files:
- *  - dhry.h (this file, containing global definitions and comments)
- *  - dhry_1.c (containing the code corresponding to Ada package Pack_1)
- *  - dhry_2.c (containing the code corresponding to Ada package Pack_2)
- *
- *  The following "ground rules" apply for measurements:
- *  - Separate compilation
- *  - No procedure merging
- *  - Otherwise, compiler optimizations are allowed but should be indicated
- *  - Default results are those without register declarations
- *  See the companion paper "Rationale for Dhrystone Version 2" for a more
- *  detailed discussion of these ground rules.
- *
- *  For 16-Bit processors (e.g. 80186, 80286), times for all compilation
- *  models ("small", "medium", "large" etc.) should be given if possible,
- *  together with a definition of these models for the compiler system used.
- *
- **************************************************************************
- *
- *  Dhrystone (C version) statistics:
- *
- *  [Comment from the first distribution, updated for version 2.
- *   Note that because of language differences, the numbers are slightly
- *   different from the Ada version.]
- *
- *  The following program contains statements of a high level programming
- *  language (here: C) in a distribution considered representative:
- *
- *    assignments                  52 (51.0 %)
- *    control statements           33 (32.4 %)
- *    procedure, function calls    17 (16.7 %)
- *
- *  103 statements are dynamically executed. The program is balanced with
- *  respect to the three aspects:
- *
- *    - statement type
- *    - operand type
- *    - operand locality
- *         operand global, local, parameter, or constant.
- *
- *  The combination of these three aspects is balanced only approximately.
- *
- *  1. Statement Type:
- *  -----------------             number
- *
- *     V1 = V2                     9
- *       (incl. V1 = F(..)
- *     V = Constant               12
- *     Assignment,                 7
- *       with array element
- *     Assignment,                 6
- *       with record component
- *                                --
- *                                34       34
- *
- *     X = Y +|-|"&&"|"|" Z        5
- *     X = Y +|-|"==" Constant     6
- *     X = X +|- 1                 3
- *     X = Y *|/ Z                 2
- *     X = Expression,             1
- *           two operators
- *     X = Expression,             1
- *           three operators
- *                                --
- *                                18       18
- *
- *     if ....                    14
- *       with "else"      7
- *       without "else"   7
- *           executed        3
- *           not executed    4
- *     for ...                     7  |  counted every time
- *     while ...                   4  |  the loop condition
- *     do ... while                1  |  is evaluated
- *     switch ...                  1
- *     break                       1
- *     declaration with            1
- *       initialization
- *                                --
- *                                34       34
- *
- *     P (...)  procedure call    11
- *       user procedure      10
- *       library procedure    1
- *     X = F (...)
- *             function  call      6
- *       user function        5
- *       library function     1
- *                                --
- *                                17       17
- *                                        ---
- *                                        103
- *
- *    The average number of parameters in procedure or function calls
- *    is 1.82 (not counting the function values aX *
- *
- *  2. Operators
- *  ------------
- *                          number    approximate
- *                                    percentage
- *
- *    Arithmetic             32          50.8
- *
- *       +                     21          33.3
- *       -                      7          11.1
- *       *                      3           4.8
- *       / (int div)            1           1.6
- *
- *    Comparison             27           42.8
- *
- *       ==                     9           14.3
- *       /=                     4            6.3
- *       >                      1            1.6
- *       <                      3            4.8
- *       >=                     1            1.6
- *       <=                     9           14.3
- *
- *    Logic                   4            6.3
- *
- *       && (AND-THEN)          1            1.6
- *       |  (OR)                1            1.6
- *       !  (NOT)               2            3.2
- *
- *                           --          -----
- *                           63          100.1
- *
- *
- *  3. Operand Type (counted once per operand reference):
- *  ---------------
- *                          number    approximate
- *                                    percentage
- *
- *     Integer               175        72.3 %
- *     Character              45        18.6 %
- *     Pointer                12         5.0 %
- *     String30                6         2.5 %
- *     Array                   2         0.8 %
- *     Record                  2         0.8 %
- *                           ---       -------
- *                           242       100.0 %
- *
- *  When there is an access path leading to the final operand (e.g. a record
- *  component), only the final data type on the access path is counted.
- *
- *
- *  4. Operand Locality:
- *  -------------------
- *                                number    approximate
- *                                          percentage
- *
- *     local variable              114        47.1 %
- *     global variable              22         9.1 %
- *     parameter                    45        18.6 %
- *        value                        23         9.5 %
- *        reference                    22         9.1 %
- *     function result               6         2.5 %
- *     constant                     55        22.7 %
- *                                 ---       -------
- *                                 242       100.0 %
- *
- *
- *  The program does not compute anything meaningful, but it is syntactically
- *  and semantically correct. All variables have a value assigned to them
- *  before they are used as a source operand.
- *
- *  There has been no explicit effort to account for the effects of a
- *  cache, or to balance the use of long or short displacements for code or
- *  data.
- *
- ***************************************************************************
- */
-
-/* Compiler and system dependent definitions: */
-
-#ifndef TIME
-#undef TIMES
-#define TIMES
-#endif
-                /* Use times(2) time function unless    */
-                /* explicitly defined otherwise         */
-
-#ifdef MSC_CLOCK
-#undef HZ
-#undef TIMES
-#include <time.h>
-#define HZ      CLK_TCK
-#endif
-                /* Use Microsoft C hi-res clock */
-
-#ifdef TIMES
-#include <sys/types.h>
-#include <sys/times.h>
-
-#ifndef HZ
-#define HZ      100
-#endif
-                /* for "times" */
-#endif
-
-#define Mic_secs_Per_Second     1000000.0
-                /* Berkeley UNIX C returns process times in seconds/HZ */
-
-#ifdef  NOSTRUCTASSIGN
-#define structassign(d, s)      memcpy(&(d), &(s), sizeof(d))
-#else
-#define structassign(d, s)      d = s
-#endif
-
-#ifdef  NOENUM
-#define Ident_1 0
-#define Ident_2 1
-#define Ident_3 2
-#define Ident_4 3
-#define Ident_5 4
-  typedef int   Enumeration;
-#else
-  typedef       enum    {Ident_1, Ident_2, Ident_3, Ident_4, Ident_5}
-                Enumeration;
-#endif
-        /* for boolean and enumeration types in Ada, Pascal */
-
-/* General definitions: */
-
-//#include <stdio.h>
-                /* for strcpy, strcmp */
-
-#define Null 0
-                /* Value of a Null pointer */
-#define true  1
-#define false 0
-
-typedef int     One_Thirty;
-typedef int     One_Fifty;
-typedef char    Capital_Letter;
-typedef int     Boolean;
-typedef char    Str_30 [31];
-typedef int     Arr_1_Dim [50];
-typedef int     Arr_2_Dim [50] [50];
-
-typedef struct record
-    {
-    struct record *Ptr_Comp;
-    Enumeration    Discr;
-    union {
-          struct {
-                  Enumeration Enum_Comp;
-                  int         Int_Comp;
-                  char        Str_Comp [31];
-                  } var_1;
-          struct {
-                  Enumeration E_Comp_2;
-                  char        Str_2_Comp [31];
-                  } var_2;
-          struct {
-                  char        Ch_1_Comp;
-                  char        Ch_2_Comp;
-                  } var_3;
-          } variant;
-      } Rec_Type, *Rec_Pointer;
-
-
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry.mki b/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry.mki
deleted file mode 100644
index aa1d63c..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry.mki
+++ /dev/null
@@ -1,2 +0,0 @@
-OFILES = crt0.o dhry_1.o dhry_2.o printf.o
-TEST_CFLAGS = -g -O3
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry_1.c b/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry_1.c
deleted file mode 100644
index bd4a290..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry_1.c
+++ /dev/null
@@ -1,462 +0,0 @@
-#define brqrv
-/*
- ****************************************************************************
- *
- *                   "DHRYSTONE" Benchmark Program
- *                   -----------------------------
- *
- *  Version:    C, Version 2.1
- *
- *  File:       dhry_1.c (part 2 of 3)
- *
- *  Date:       May 25, 1988
- *
- *  Author:     Reinhold P. Weicker
- *
- ****************************************************************************
- */
-
-#ifdef brqrv
-#include <stdio.h>
-#include <stdint.h>
-extern uint64_t get_mcycle();
-#endif
-
-#include "dhry.h"
-
-/* Global Variables: */
-
-Rec_Pointer     Ptr_Glob,
-                Next_Ptr_Glob;
-int             Int_Glob;
-Boolean         Bool_Glob;
-char            Ch_1_Glob,
-                Ch_2_Glob;
-int             Arr_1_Glob [50];
-int             Arr_2_Glob [50] [50];
-
-Enumeration     Func_1 ();
-  /* forward declaration necessary since Enumeration may not simply be int */
-
-#ifndef REG
-        Boolean Reg = false;
-#define REG
-        /* REG becomes defined as empty */
-        /* i.e. no register variables   */
-#else
-        Boolean Reg = true;
-#endif
-
-/* variables for time measurement: */
-
-#ifdef TIMES
-struct tms      time_info;
-#define Too_Small_Time (2*HZ)
-                /* Measurements should last at least about 2 seconds */
-#endif
-#ifdef TIME
-extern long     time();
-                /* see library function "time"  */
-#define Too_Small_Time 2
-                /* Measurements should last at least 2 seconds */
-#endif
-#ifdef MSC_CLOCK
-extern clock_t  clock();
-#define Too_Small_Time (2*HZ)
-#endif
-
-long
-                Begin_Time,
-                End_Time,
-                User_Time;
-
-float           Microseconds,
-                Dhrystones_Per_Second;
-
-/* end of variables for time measurement */
-
-
-extern char* strcpy(char*, const char*);
-
-extern Boolean Func_2 (Str_30, Str_30);
-extern void Proc_7 (One_Fifty Int_1_Par_Val, One_Fifty Int_2_Par_Val,
-                    One_Fifty *Int_Par_Ref);
-
-extern void Proc_8 (Arr_1_Dim Arr_1_Par_Ref, Arr_2_Dim Arr_2_Par_Ref,
-                    int Int_1_Par_Val, int Int_2_Par_Val);
-
-extern void Proc_6 (Enumeration Enum_Val_Par,
-                    Enumeration *Enum_Ref_Par);
-
-void Proc_5();
-void Proc_4();
-
-void Proc_1(Rec_Pointer Ptr_Val_Par);
-void Proc_2(One_Fifty *Int_Par_Ref);
-void Proc_3(Rec_Pointer *Ptr_Ref_Par);
-
-
-int
-main ()
-/*****/
-
-  /* main program, corresponds to procedures        */
-  /* Main and Proc_0 in the Ada version             */
-{
-        One_Fifty       Int_1_Loc;
-  REG   One_Fifty       Int_2_Loc;
-        One_Fifty       Int_3_Loc;
-  REG   char            Ch_Index;
-        Enumeration     Enum_Loc;
-        Str_30          Str_1_Loc;
-        Str_30          Str_2_Loc;
-  REG   int             Run_Index;
-  REG   int             Number_Of_Runs;
-
-  /* Initializations */
-
-  Rec_Type rec0;
-  Rec_Type rec1;
-
-  Next_Ptr_Glob = &rec0;
-  Ptr_Glob = &rec1;
-
-  Ptr_Glob->Ptr_Comp                    = Next_Ptr_Glob;
-  Ptr_Glob->Discr                       = Ident_1;
-  Ptr_Glob->variant.var_1.Enum_Comp     = Ident_3;
-  Ptr_Glob->variant.var_1.Int_Comp      = 40;
-  strcpy (Ptr_Glob->variant.var_1.Str_Comp,
-          "DHRYSTONE PROGRAM, SOME STRING");
-  strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
-
-  Arr_2_Glob [8][7] = 10;
-        /* Was missing in published program. Without this statement,    */
-        /* Arr_2_Glob [8][7] would have an undefined value.             */
-        /* Warning: With 16-Bit processors and Number_Of_Runs > 32000,  */
-        /* overflow may occur for this array element.                   */
-
-  printf ("\n");
-  printf ("Dhrystone Benchmark, Version 2.1 (Language: C)\n");
-  printf ("\n");
-  if (Reg)
-  {
-    printf ("Program compiled with 'register' attribute\n");
-    printf ("\n");
-  }
-  else
-  {
-    printf ("Program compiled without 'register' attribute\n");
-    printf ("\n");
-  }
-
-  #ifndef brqrv
-  printf ("Please give the number of runs through the benchmark: ");
-  {
-    int n = 1000;
-    scanf ("%d", &n);
-    Number_Of_Runs = n;
-  }
-  printf ("\n");
-  #else
-  // We do not have scanf.  Hardwire number of runs.
-  Number_Of_Runs = 1000;
-  #endif
-
-  printf ("Execution starts, %d runs through Dhrystone\n", Number_Of_Runs);
-
-  /***************/
-  /* Start timer */
-  /***************/
-
-#ifdef brqrv
-    Begin_Time = get_mcycle();
-#else
-
-#ifdef TIMES
-  times (&time_info);
-  Begin_Time = (long) time_info.tms_utime;
-#endif
-#ifdef TIME
-  Begin_Time = time ( (long *) 0);
-#endif
-#ifdef MSC_CLOCK
-  Begin_Time = clock();
-#endif
-
-#endif
-
-  __asm("__perf_start:");
-
-  for (Run_Index = 1; Run_Index <= Number_Of_Runs; ++Run_Index)
-  {
-    __asm("__loop_start:");
-
-    Proc_5();
-    Proc_4();
-      /* Ch_1_Glob == 'A', Ch_2_Glob == 'B', Bool_Glob == true */
-    Int_1_Loc = 2;
-    Int_2_Loc = 3;
-    strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING");
-    Enum_Loc = Ident_2;
-    Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc);
-      /* Bool_Glob == 1 */
-    while (Int_1_Loc < Int_2_Loc)  /* loop body executed once */
-    {
-      Int_3_Loc = 5 * Int_1_Loc - Int_2_Loc;
-        /* Int_3_Loc == 7 */
-      Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc);
-        /* Int_3_Loc == 7 */
-      Int_1_Loc += 1;
-    } /* while */
-      /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
-    Proc_8 (Arr_1_Glob, Arr_2_Glob, Int_1_Loc, Int_3_Loc);
-      /* Int_Glob == 5 */
-    Proc_1 (Ptr_Glob);
-    for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index)
-                             /* loop body executed twice */
-    {
-      if (Enum_Loc == Func_1 (Ch_Index, 'C'))
-          /* then, not executed */
-        {
-        Proc_6 (Ident_1, &Enum_Loc);
-        strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING");
-        Int_2_Loc = Run_Index;
-        Int_Glob = Run_Index;
-        }
-    }
-      /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
-    Int_2_Loc = Int_2_Loc * Int_1_Loc;
-    Int_1_Loc = Int_2_Loc / Int_3_Loc;
-    Int_2_Loc = 7 * (Int_2_Loc - Int_3_Loc) - Int_1_Loc;
-      /* Int_1_Loc == 1, Int_2_Loc == 13, Int_3_Loc == 7 */
-    Proc_2 (&Int_1_Loc);
-      /* Int_1_Loc == 5 */
-
-  } /* loop "for Run_Index" */
-
-  __asm("__perf_end:");
-
-  /**************/
-  /* Stop timer */
-  /**************/
-
-#ifdef brqrv
-    End_Time = get_mcycle();
-    printf("End_time=%d\n", (int) End_Time);
-#else
-#ifdef TIMES
-  times (&time_info);
-  End_Time = (long) time_info.tms_utime;
-#endif
-#ifdef TIME
-  End_Time = time ( (long *) 0);
-#endif
-#ifdef MSC_CLOCK
-  End_Time = clock();
-#endif
-
-#endif
-
-  printf ("Execution ends\n");
-  printf ("\n");
-  printf ("Final values of the variables used in the benchmark:\n");
-  printf ("\n");
-  printf ("Int_Glob:            %d\n", Int_Glob);
-  printf ("        should be:   %d\n", 5);
-  printf ("Bool_Glob:           %d\n", Bool_Glob);
-  printf ("        should be:   %d\n", 1);
-  printf ("Ch_1_Glob:           %c\n", Ch_1_Glob);
-  printf ("        should be:   %c\n", 'A');
-  printf ("Ch_2_Glob:           %c\n", Ch_2_Glob);
-  printf ("        should be:   %c\n", 'B');
-  printf ("Arr_1_Glob[8]:       %d\n", Arr_1_Glob[8]);
-  printf ("        should be:   %d\n", 7);
-  printf ("Arr_2_Glob[8][7]:    %d\n", Arr_2_Glob[8][7]);
-  printf ("        should be:   Number_Of_Runs + 10\n");
-  printf ("Ptr_Glob->\n");
-  printf ("  Ptr_Comp:          %d\n", (int) Ptr_Glob->Ptr_Comp);
-  printf ("        should be:   (implementation-dependent)\n");
-  printf ("  Discr:             %d\n", Ptr_Glob->Discr);
-  printf ("        should be:   %d\n", 0);
-  printf ("  Enum_Comp:         %d\n", Ptr_Glob->variant.var_1.Enum_Comp);
-  printf ("        should be:   %d\n", 2);
-  printf ("  Int_Comp:          %d\n", Ptr_Glob->variant.var_1.Int_Comp);
-  printf ("        should be:   %d\n", 17);
-  printf ("  Str_Comp:          %s\n", Ptr_Glob->variant.var_1.Str_Comp);
-  printf ("        should be:   DHRYSTONE PROGRAM, SOME STRING\n");
-  printf ("Next_Ptr_Glob->\n");
-  printf ("  Ptr_Comp:          %d\n", (int) Next_Ptr_Glob->Ptr_Comp);
-  printf ("        should be:   (implementation-dependent), same as above\n");
-  printf ("  Discr:             %d\n", Next_Ptr_Glob->Discr);
-  printf ("        should be:   %d\n", 0);
-  printf ("  Enum_Comp:         %d\n", Next_Ptr_Glob->variant.var_1.Enum_Comp);
-  printf ("        should be:   %d\n", 1);
-  printf ("  Int_Comp:          %d\n", Next_Ptr_Glob->variant.var_1.Int_Comp);
-  printf ("        should be:   %d\n", 18);
-  printf ("  Str_Comp:          %s\n",
-                                Next_Ptr_Glob->variant.var_1.Str_Comp);
-  printf ("        should be:   DHRYSTONE PROGRAM, SOME STRING\n");
-  printf ("Int_1_Loc:           %d\n", Int_1_Loc);
-  printf ("        should be:   %d\n", 5);
-  printf ("Int_2_Loc:           %d\n", Int_2_Loc);
-  printf ("        should be:   %d\n", 13);
-  printf ("Int_3_Loc:           %d\n", Int_3_Loc);
-  printf ("        should be:   %d\n", 7);
-  printf ("Enum_Loc:            %d\n", Enum_Loc);
-  printf ("        should be:   %d\n", 1);
-  printf ("Str_1_Loc:           %s\n", Str_1_Loc);
-  printf ("        should be:   DHRYSTONE PROGRAM, 1'ST STRING\n");
-  printf ("Str_2_Loc:           %s\n", Str_2_Loc);
-  printf ("        should be:   DHRYSTONE PROGRAM, 2'ND STRING\n");
-  printf ("\n");
-
-  User_Time = End_Time - Begin_Time;
-
-  if (User_Time < Too_Small_Time)
-  {
-    printf ("User time %d\n", User_Time);
-    printf ("Measured time too small to obtain meaningful results\n");
-    printf ("Please increase number of runs\n");
-    printf ("\n");
-  }
-  else
-  {
-#ifdef brqrv
-    printf ("Run time = %d clocks for %d Dhrystones\n", User_Time, Number_Of_Runs );
-    printf ("Dhrystones per Second per MHz: ");
-    printf ("%d.%02d", 1000000*Number_Of_Runs/User_Time,(100000000*Number_Of_Runs/User_Time) % 100);
-#else
-#ifdef TIME
-    Microseconds = (float) User_Time * Mic_secs_Per_Second
-                        / (float) Number_Of_Runs;
-    Dhrystones_Per_Second = (float) Number_Of_Runs / (float) User_Time;
-#else
-    Microseconds = (float) User_Time * Mic_secs_Per_Second
-                        / ((float) HZ * ((float) Number_Of_Runs));
-    Dhrystones_Per_Second = ((float) HZ * (float) Number_Of_Runs)
-                        / (float) User_Time;
-#endif
-    printf ("Microseconds for one run through Dhrystone: ");
-    printf ("%6.1f \n", Microseconds);
-    printf ("Dhrystones per Second:                      ");
-    printf ("%6.1f \n", Dhrystones_Per_Second);
-
-#endif
-
-    printf ("\n");
-  }
-
-}
-
-
-void
-Proc_1 (Ptr_Val_Par)
-/******************/
-
-REG Rec_Pointer Ptr_Val_Par;
-    /* executed once */
-{
-  REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp;
-                                        /* == Ptr_Glob_Next */
-  /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp,    */
-  /* corresponds to "rename" in Ada, "with" in Pascal           */
-
-  structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
-  Ptr_Val_Par->variant.var_1.Int_Comp = 5;
-  Next_Record->variant.var_1.Int_Comp
-        = Ptr_Val_Par->variant.var_1.Int_Comp;
-  Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp;
-  Proc_3 (&Next_Record->Ptr_Comp);
-    /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp
-                        == Ptr_Glob->Ptr_Comp */
-  if (Next_Record->Discr == Ident_1)
-    /* then, executed */
-  {
-    Next_Record->variant.var_1.Int_Comp = 6;
-    Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp,
-           &Next_Record->variant.var_1.Enum_Comp);
-    Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp;
-    Proc_7 (Next_Record->variant.var_1.Int_Comp, 10,
-           &Next_Record->variant.var_1.Int_Comp);
-  }
-  else /* not executed */
-    structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp);
-} /* Proc_1 */
-
-
-void
-Proc_2 (Int_Par_Ref)
-/******************/
-    /* executed once */
-    /* *Int_Par_Ref == 1, becomes 4 */
-
-One_Fifty   *Int_Par_Ref;
-{
-  One_Fifty  Int_Loc;
-  Enumeration   Enum_Loc;
-
-  Int_Loc = *Int_Par_Ref + 10;
-  do /* executed once */
-    if (Ch_1_Glob == 'A')
-      /* then, executed */
-    {
-      Int_Loc -= 1;
-      *Int_Par_Ref = Int_Loc - Int_Glob;
-      Enum_Loc = Ident_1;
-    } /* if */
-  while (Enum_Loc != Ident_1); /* true */
-} /* Proc_2 */
-
-
-void
-Proc_3 (Ptr_Ref_Par)
-/******************/
-    /* executed once */
-    /* Ptr_Ref_Par becomes Ptr_Glob */
-
-Rec_Pointer *Ptr_Ref_Par;
-
-{
-  if (Ptr_Glob != Null)
-    /* then, executed */
-    *Ptr_Ref_Par = Ptr_Glob->Ptr_Comp;
-  Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp);
-} /* Proc_3 */
-
-
-void
-Proc_4 () /* without parameters */
-/*******/
-    /* executed once */
-{
-  Boolean Bool_Loc;
-
-  Bool_Loc = Ch_1_Glob == 'A';
-  Bool_Glob = Bool_Loc | Bool_Glob;
-  Ch_2_Glob = 'B';
-} /* Proc_4 */
-
-
-void
-Proc_5 () /* without parameters */
-/*******/
-    /* executed once */
-{
-  Ch_1_Glob = 'A';
-  Bool_Glob = false;
-} /* Proc_5 */
-
-
-        /* Procedure for the assignment of structures,          */
-        /* if the C compiler doesn't support this feature       */
-#ifdef  NOSTRUCTASSIGN
-memcpy (d, s, l)
-register char   *d;
-register char   *s;
-register int    l;
-{
-        while (l--) *d++ = *s++;
-}
-#endif
-
-
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry_2.c b/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry_2.c
deleted file mode 100644
index ecf4de3..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/dhry_2.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- ****************************************************************************
- *
- *                   "DHRYSTONE" Benchmark Program
- *                   -----------------------------
- *
- *  Version:    C, Version 2.1
- *
- *  File:       dhry_2.c (part 3 of 3)
- *
- *  Date:       May 25, 1988
- *
- *  Author:     Reinhold P. Weicker
- *
- ****************************************************************************
- */
-
-#include "dhry.h"
-
-#ifndef REG
-#define REG
-        /* REG becomes defined as empty */
-        /* i.e. no register variables   */
-#endif
-
-extern  int     Int_Glob;
-extern  char    Ch_1_Glob;
-
-
-int
-strcmp(const char* s1, const char* s2)
-{
-  while (*s1 && *s1 == *s2)
-    {
-      s1++;
-      s2++;
-    }
-  if (*s1 == *s2)
-    return 0;
-  return *s1 > *s2? 1 : -1;
-}
-
-
-Boolean Func_3 (Enumeration Enum_Par_Val);
-
-
-void
-Proc_6 (Enum_Val_Par, Enum_Ref_Par)
-/*********************************/
-    /* executed once */
-    /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */
-
-Enumeration  Enum_Val_Par;
-Enumeration *Enum_Ref_Par;
-{
-  *Enum_Ref_Par = Enum_Val_Par;
-  if (! Func_3 (Enum_Val_Par))
-    /* then, not executed */
-    *Enum_Ref_Par = Ident_4;
-  switch (Enum_Val_Par)
-  {
-    case Ident_1:
-      *Enum_Ref_Par = Ident_1;
-      break;
-    case Ident_2:
-      if (Int_Glob > 100)
-        /* then */
-      *Enum_Ref_Par = Ident_1;
-      else *Enum_Ref_Par = Ident_4;
-      break;
-    case Ident_3: /* executed */
-      *Enum_Ref_Par = Ident_2;
-      break;
-    case Ident_4: break;
-    case Ident_5:
-      *Enum_Ref_Par = Ident_3;
-      break;
-  } /* switch */
-} /* Proc_6 */
-
-
-void
-Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref)
-/**********************************************/
-    /* executed three times                                      */
-    /* first call:      Int_1_Par_Val == 2, Int_2_Par_Val == 3,  */
-    /*                  Int_Par_Ref becomes 7                    */
-    /* second call:     Int_1_Par_Val == 10, Int_2_Par_Val == 5, */
-    /*                  Int_Par_Ref becomes 17                   */
-    /* third call:      Int_1_Par_Val == 6, Int_2_Par_Val == 10, */
-    /*                  Int_Par_Ref becomes 18                   */
-One_Fifty       Int_1_Par_Val;
-One_Fifty       Int_2_Par_Val;
-One_Fifty      *Int_Par_Ref;
-{
-  One_Fifty Int_Loc;
-
-  Int_Loc = Int_1_Par_Val + 2;
-  *Int_Par_Ref = Int_2_Par_Val + Int_Loc;
-} /* Proc_7 */
-
-
-void
-Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val)
-/*********************************************************************/
-    /* executed once      */
-    /* Int_Par_Val_1 == 3 */
-    /* Int_Par_Val_2 == 7 */
-Arr_1_Dim       Arr_1_Par_Ref;
-Arr_2_Dim       Arr_2_Par_Ref;
-int             Int_1_Par_Val;
-int             Int_2_Par_Val;
-{
-  REG One_Fifty Int_Index;
-  REG One_Fifty Int_Loc;
-
-  Int_Loc = Int_1_Par_Val + 5;
-  Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val;
-  Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc];
-  Arr_1_Par_Ref [Int_Loc+30] = Int_Loc;
-  for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index)
-    Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc;
-  Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1;
-  Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc];
-  Int_Glob = 5;
-} /* Proc_8 */
-
-
-Enumeration Func_1 (Ch_1_Par_Val, Ch_2_Par_Val)
-/*************************************************/
-    /* executed three times                                         */
-    /* first call:      Ch_1_Par_Val == 'H', Ch_2_Par_Val == 'R'    */
-    /* second call:     Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C'    */
-    /* third call:      Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C'    */
-
-Capital_Letter   Ch_1_Par_Val;
-Capital_Letter   Ch_2_Par_Val;
-{
-  Capital_Letter        Ch_1_Loc;
-  Capital_Letter        Ch_2_Loc;
-
-  Ch_1_Loc = Ch_1_Par_Val;
-  Ch_2_Loc = Ch_1_Loc;
-  if (Ch_2_Loc != Ch_2_Par_Val)
-    /* then, executed */
-    return (Ident_1);
-  else  /* not executed */
-  {
-    Ch_1_Glob = Ch_1_Loc;
-    return (Ident_2);
-   }
-} /* Func_1 */
-
-
-Boolean Func_2 (Str_1_Par_Ref, Str_2_Par_Ref)
-/*************************************************/
-    /* executed once */
-    /* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */
-    /* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */
-
-Str_30  Str_1_Par_Ref;
-Str_30  Str_2_Par_Ref;
-{
-  REG One_Thirty        Int_Loc;
-      Capital_Letter    Ch_Loc;
-
-  Int_Loc = 2;
-  while (Int_Loc <= 2) /* loop body executed once */
-    if (Func_1 (Str_1_Par_Ref[Int_Loc],
-                Str_2_Par_Ref[Int_Loc+1]) == Ident_1)
-      /* then, executed */
-    {
-      Ch_Loc = 'A';
-      Int_Loc += 1;
-    } /* if, while */
-  if (Ch_Loc >= 'W' && Ch_Loc < 'Z')
-    /* then, not executed */
-    Int_Loc = 7;
-  if (Ch_Loc == 'R')
-    /* then, not executed */
-    return (true);
-  else /* executed */
-  {
-    if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0)
-      /* then, not executed */
-    {
-      Int_Loc += 7;
-      Int_Glob = Int_Loc;
-      return (true);
-    }
-    else /* executed */
-      return (false);
-  } /* if Ch_Loc */
-} /* Func_2 */
-
-
-Boolean Func_3 (Enum_Par_Val)
-/***************************/
-    /* executed once        */
-    /* Enum_Par_Val == Ident_3 */
-Enumeration Enum_Par_Val;
-{
-  Enumeration Enum_Loc;
-
-  Enum_Loc = Enum_Par_Val;
-  if (Enum_Loc == Ident_3)
-    /* then, executed */
-    return (true);
-  else /* not executed */
-    return (false);
-} /* Func_3 */
-
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/printf.c b/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/printf.c
deleted file mode 120000
index 430ba5d..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/dhry/printf.c
+++ /dev/null
@@ -1 +0,0 @@
-../../asm/printf.c
\ No newline at end of file
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/hello_world/Makefile b/verilog/rtl/BrqRV_EB1/testbench/tests/hello_world/Makefile
deleted file mode 100644
index ef32c88..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/hello_world/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-export TEST = hello_world
-export OFILES = crt0.o hello_world.o
-export BUILD_PATH = $(shell pwd)/snapshots/default
-
-program.hex:
-	$(MAKE) -e -f $(RV_ROOT)/tools/make.common $(BUILD_PATH)/defines.h
-	$(MAKE) -e -f $(RV_ROOT)/tools/make.common $@
-
-.DEFAULT:
-	$(MAKE) -e program.hex
-	$(MAKE) -e -f $(RV_ROOT)/tools/make.common $@
diff --git a/verilog/rtl/BrqRV_EB1/testbench/tests/hello_world/hello_world.s b/verilog/rtl/BrqRV_EB1/testbench/tests/hello_world/hello_world.s
deleted file mode 100644
index bfe8346..0000000
--- a/verilog/rtl/BrqRV_EB1/testbench/tests/hello_world/hello_world.s
+++ /dev/null
@@ -1,42 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright 2019 MERL Corporation or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-// Assembly code for Hello World
-// Not using only ALU ops for creating the string
-
-
-#include "defines.h"
-
-.section .text
-.global main
-
-main:
-    li x3, RV_SERIALIO
-    la x4, hw_data
-
-loop:
-   lb x5, 0(x4)
-   sb x5, 0(x3)
-   addi x4, x4, 1
-   bnez x5, loop
-   ret
-
-.data
-hw_data:
-.ascii "----------------------------------\n"
-.ascii "Hello World from brqrv eb1 @WDC !!\n"
-.ascii "----------------------------------\n"
-.byte 0
diff --git a/verilog/rtl/BrqRV_EB1/tools/JSON.pm b/verilog/rtl/BrqRV_EB1/tools/JSON.pm
deleted file mode 100644
index 6fb7a90..0000000
--- a/verilog/rtl/BrqRV_EB1/tools/JSON.pm
+++ /dev/null
@@ -1,2267 +0,0 @@
-package JSON;
-
-
-use strict;
-use Carp ();
-use base qw(Exporter);
-@JSON::EXPORT = qw(from_json to_json jsonToObj objToJson encode_json decode_json);
-
-BEGIN {
-    $JSON::VERSION = '2.53';
-    $JSON::DEBUG   = 0 unless (defined $JSON::DEBUG);
-    $JSON::DEBUG   = $ENV{ PERL_JSON_DEBUG } if exists $ENV{ PERL_JSON_DEBUG };
-}
-
-my $Module_XS  = 'JSON::XS';
-my $Module_PP  = 'JSON::PP';
-my $Module_bp  = 'JSON::backportPP'; # included in JSON distribution
-my $PP_Version = '2.27200';
-my $XS_Version = '2.27';
-
-
-# XS and PP common methods
-
-my @PublicMethods = qw/
-    ascii latin1 utf8 pretty indent space_before space_after relaxed canonical allow_nonref
-    allow_blessed convert_blessed filter_json_object filter_json_single_key_object
-    shrink max_depth max_size encode decode decode_prefix allow_unknown
-/;
-
-my @Properties = qw/
-    ascii latin1 utf8 indent space_before space_after relaxed canonical allow_nonref
-    allow_blessed convert_blessed shrink max_depth max_size allow_unknown
-/;
-
-my @XSOnlyMethods = qw//; # Currently nothing
-
-my @PPOnlyMethods = qw/
-    indent_length sort_by
-    allow_singlequote allow_bignum loose allow_barekey escape_slash as_nonblessed
-/; # JSON::PP specific
-
-
-# used in _load_xs and _load_pp ($INSTALL_ONLY is not used currently)
-my $_INSTALL_DONT_DIE  = 1; # When _load_xs fails to load XS, don't die.
-my $_INSTALL_ONLY      = 2; # Don't call _set_methods()
-my $_ALLOW_UNSUPPORTED = 0;
-my $_UNIV_CONV_BLESSED = 0;
-my $_USSING_bpPP       = 0;
-
-
-# Check the environment variable to decide worker module.
-
-unless ($JSON::Backend) {
-    $JSON::DEBUG and  Carp::carp("Check used worker module...");
-
-    my $backend = exists $ENV{PERL_JSON_BACKEND} ? $ENV{PERL_JSON_BACKEND} : 1;
-
-    if ($backend eq '1' or $backend =~ /JSON::XS\s*,\s*JSON::PP/) {
-        _load_xs($_INSTALL_DONT_DIE) or _load_pp();
-    }
-    elsif ($backend eq '0' or $backend eq 'JSON::PP') {
-        _load_pp();
-    }
-    elsif ($backend eq '2' or $backend eq 'JSON::XS') {
-        _load_xs();
-    }
-    elsif ($backend eq 'JSON::backportPP') {
-        $_USSING_bpPP = 1;
-        _load_pp();
-    }
-    else {
-        Carp::croak "The value of environmental variable 'PERL_JSON_BACKEND' is invalid.";
-    }
-}
-
-
-sub import {
-    my $pkg = shift;
-    my @what_to_export;
-    my $no_export;
-
-    for my $tag (@_) {
-        if ($tag eq '-support_by_pp') {
-            if (!$_ALLOW_UNSUPPORTED++) {
-                JSON::Backend::XS
-                    ->support_by_pp(@PPOnlyMethods) if ($JSON::Backend eq $Module_XS);
-            }
-            next;
-        }
-        elsif ($tag eq '-no_export') {
-            $no_export++, next;
-        }
-        elsif ( $tag eq '-convert_blessed_universally' ) {
-            eval q|
-                require B;
-                *UNIVERSAL::TO_JSON = sub {
-                    my $b_obj = B::svref_2object( $_[0] );
-                    return    $b_obj->isa('B::HV') ? { %{ $_[0] } }
-                            : $b_obj->isa('B::AV') ? [ @{ $_[0] } ]
-                            : undef
-                            ;
-                }
-            | if ( !$_UNIV_CONV_BLESSED++ );
-            next;
-        }
-        push @what_to_export, $tag;
-    }
-
-    return if ($no_export);
-
-    __PACKAGE__->export_to_level(1, $pkg, @what_to_export);
-}
-
-
-# OBSOLETED
-
-sub jsonToObj {
-    my $alternative = 'from_json';
-    if (defined $_[0] and UNIVERSAL::isa($_[0], 'JSON')) {
-        shift @_; $alternative = 'decode';
-    }
-    Carp::carp "'jsonToObj' will be obsoleted. Please use '$alternative' instead.";
-    return JSON::from_json(@_);
-};
-
-sub objToJson {
-    my $alternative = 'to_json';
-    if (defined $_[0] and UNIVERSAL::isa($_[0], 'JSON')) {
-        shift @_; $alternative = 'encode';
-    }
-    Carp::carp "'objToJson' will be obsoleted. Please use '$alternative' instead.";
-    JSON::to_json(@_);
-};
-
-
-# INTERFACES
-
-sub to_json ($@) {
-    if (
-        ref($_[0]) eq 'JSON'
-        or (@_ > 2 and $_[0] eq 'JSON')
-    ) {
-        Carp::croak "to_json should not be called as a method.";
-    }
-    my $json = new JSON;
-
-    if (@_ == 2 and ref $_[1] eq 'HASH') {
-        my $opt  = $_[1];
-        for my $method (keys %$opt) {
-            $json->$method( $opt->{$method} );
-        }
-    }
-
-    $json->encode($_[0]);
-}
-
-
-sub from_json ($@) {
-    if ( ref($_[0]) eq 'JSON' or $_[0] eq 'JSON' ) {
-        Carp::croak "from_json should not be called as a method.";
-    }
-    my $json = new JSON;
-
-    if (@_ == 2 and ref $_[1] eq 'HASH') {
-        my $opt  = $_[1];
-        for my $method (keys %$opt) {
-            $json->$method( $opt->{$method} );
-        }
-    }
-
-    return $json->decode( $_[0] );
-}
-
-
-sub true  { $JSON::true  }
-
-sub false { $JSON::false }
-
-sub null  { undef; }
-
-
-sub require_xs_version { $XS_Version; }
-
-sub backend {
-    my $proto = shift;
-    $JSON::Backend;
-}
-
-#*module = *backend;
-
-
-sub is_xs {
-    return $_[0]->module eq $Module_XS;
-}
-
-
-sub is_pp {
-    return not $_[0]->xs;
-}
-
-
-sub pureperl_only_methods { @PPOnlyMethods; }
-
-
-sub property {
-    my ($self, $name, $value) = @_;
-
-    if (@_ == 1) {
-        my %props;
-        for $name (@Properties) {
-            my $method = 'get_' . $name;
-            if ($name eq 'max_size') {
-                my $value = $self->$method();
-                $props{$name} = $value == 1 ? 0 : $value;
-                next;
-            }
-            $props{$name} = $self->$method();
-        }
-        return \%props;
-    }
-    elsif (@_ > 3) {
-        Carp::croak('property() can take only the option within 2 arguments.');
-    }
-    elsif (@_ == 2) {
-        if ( my $method = $self->can('get_' . $name) ) {
-            if ($name eq 'max_size') {
-                my $value = $self->$method();
-                return $value == 1 ? 0 : $value;
-            }
-            $self->$method();
-        }
-    }
-    else {
-        $self->$name($value);
-    }
-
-}
-
-
-
-# INTERNAL
-
-sub _load_xs {
-    my $opt = shift;
-
-    $JSON::DEBUG and Carp::carp "Load $Module_XS.";
-
-    # if called after install module, overload is disable.... why?
-    JSON::Boolean::_overrride_overload($Module_XS);
-    JSON::Boolean::_overrride_overload($Module_PP);
-
-    eval qq|
-        use $Module_XS $XS_Version ();
-    |;
-
-    if ($@) {
-        if (defined $opt and $opt & $_INSTALL_DONT_DIE) {
-            $JSON::DEBUG and Carp::carp "Can't load $Module_XS...($@)";
-            return 0;
-        }
-        Carp::croak $@;
-    }
-
-    unless (defined $opt and $opt & $_INSTALL_ONLY) {
-        _set_module( $JSON::Backend = $Module_XS );
-        my $data = join("", <DATA>); # this code is from Jcode 2.xx.
-        close(DATA);
-        eval $data;
-        JSON::Backend::XS->init;
-    }
-
-    return 1;
-};
-
-
-sub _load_pp {
-    my $opt = shift;
-    my $backend = $_USSING_bpPP ? $Module_bp : $Module_PP;
-
-    $JSON::DEBUG and Carp::carp "Load $backend.";
-
-    # if called after install module, overload is disable.... why?
-    JSON::Boolean::_overrride_overload($Module_XS);
-    JSON::Boolean::_overrride_overload($backend);
-
-    if ( $_USSING_bpPP ) {
-        eval qq| require $backend |;
-    }
-    else {
-        eval qq| use $backend $PP_Version () |;
-    }
-
-    if ($@) {
-        if ( $backend eq $Module_PP ) {
-            $JSON::DEBUG and Carp::carp "Can't load $Module_PP ($@), so try to load $Module_bp";
-            $_USSING_bpPP++;
-            $backend = $Module_bp;
-            JSON::Boolean::_overrride_overload($backend);
-            local $^W; # if PP installed but invalid version, backportPP redifines methods.
-            eval qq| require $Module_bp |;
-        }
-        Carp::croak $@ if $@;
-    }
-
-    unless (defined $opt and $opt & $_INSTALL_ONLY) {
-        _set_module( $JSON::Backend = $Module_PP ); # even if backportPP, set $Backend with 'JSON::PP'
-        JSON::Backend::PP->init;
-    }
-};
-
-
-sub _set_module {
-    return if defined $JSON::true;
-
-    my $module = shift;
-
-    local $^W;
-    no strict qw(refs);
-
-    $JSON::true  = ${"$module\::true"};
-    $JSON::false = ${"$module\::false"};
-
-    push @JSON::ISA, $module;
-    push @{"$module\::Boolean::ISA"}, qw(JSON::Boolean);
-
-    *{"JSON::is_bool"} = \&{"$module\::is_bool"};
-
-    for my $method ($module eq $Module_XS ? @PPOnlyMethods : @XSOnlyMethods) {
-        *{"JSON::$method"} = sub {
-            Carp::carp("$method is not supported in $module.");
-            $_[0];
-        };
-    }
-
-    return 1;
-}
-
-
-
-#
-# JSON Boolean
-#
-
-package JSON::Boolean;
-
-my %Installed;
-
-sub _overrride_overload {
-    return if ($Installed{ $_[0] }++);
-
-    my $boolean = $_[0] . '::Boolean';
-
-    eval sprintf(q|
-        package %s;
-        use overload (
-            '""' => sub { ${$_[0]} == 1 ? 'true' : 'false' },
-            'eq' => sub {
-                my ($obj, $op) = ref ($_[0]) ? ($_[0], $_[1]) : ($_[1], $_[0]);
-                if ($op eq 'true' or $op eq 'false') {
-                    return "$obj" eq 'true' ? 'true' eq $op : 'false' eq $op;
-                }
-                else {
-                    return $obj ? 1 == $op : 0 == $op;
-                }
-            },
-        );
-    |, $boolean);
-
-    if ($@) { Carp::croak $@; }
-
-    return 1;
-}
-
-
-#
-# Helper classes for Backend Module (PP)
-#
-
-package JSON::Backend::PP;
-
-sub init {
-    local $^W;
-    no strict qw(refs); # this routine may be called after JSON::Backend::XS init was called.
-    *{"JSON::decode_json"} = \&{"JSON::PP::decode_json"};
-    *{"JSON::encode_json"} = \&{"JSON::PP::encode_json"};
-    *{"JSON::PP::is_xs"}  = sub { 0 };
-    *{"JSON::PP::is_pp"}  = sub { 1 };
-    return 1;
-}
-
-#
-# To save memory, the below lines are read only when XS backend is used.
-#
-
-package JSON;
-
-1;
-__DATA__
-
-
-#
-# Helper classes for Backend Module (XS)
-#
-
-package JSON::Backend::XS;
-
-use constant INDENT_LENGTH_FLAG => 15 << 12;
-
-use constant UNSUPPORTED_ENCODE_FLAG => {
-    ESCAPE_SLASH      => 0x00000010,
-    ALLOW_BIGNUM      => 0x00000020,
-    AS_NONBLESSED     => 0x00000040,
-    EXPANDED          => 0x10000000, # for developer's
-};
-
-use constant UNSUPPORTED_DECODE_FLAG => {
-    LOOSE             => 0x00000001,
-    ALLOW_BIGNUM      => 0x00000002,
-    ALLOW_BAREKEY     => 0x00000004,
-    ALLOW_SINGLEQUOTE => 0x00000008,
-    EXPANDED          => 0x20000000, # for developer's
-};
-
-
-sub init {
-    local $^W;
-    no strict qw(refs);
-    *{"JSON::decode_json"} = \&{"JSON::XS::decode_json"};
-    *{"JSON::encode_json"} = \&{"JSON::XS::encode_json"};
-    *{"JSON::XS::is_xs"}  = sub { 1 };
-    *{"JSON::XS::is_pp"}  = sub { 0 };
-    return 1;
-}
-
-
-sub support_by_pp {
-    my ($class, @methods) = @_;
-
-    local $^W;
-    no strict qw(refs);
-
-    my $JSON_XS_encode_orignal     = \&JSON::XS::encode;
-    my $JSON_XS_decode_orignal     = \&JSON::XS::decode;
-    my $JSON_XS_incr_parse_orignal = \&JSON::XS::incr_parse;
-
-    *JSON::XS::decode     = \&JSON::Backend::XS::Supportable::_decode;
-    *JSON::XS::encode     = \&JSON::Backend::XS::Supportable::_encode;
-    *JSON::XS::incr_parse = \&JSON::Backend::XS::Supportable::_incr_parse;
-
-    *{JSON::XS::_original_decode}     = $JSON_XS_decode_orignal;
-    *{JSON::XS::_original_encode}     = $JSON_XS_encode_orignal;
-    *{JSON::XS::_original_incr_parse} = $JSON_XS_incr_parse_orignal;
-
-    push @JSON::Backend::XS::Supportable::ISA, 'JSON';
-
-    my $pkg = 'JSON::Backend::XS::Supportable';
-
-    *{JSON::new} = sub {
-        my $proto = new JSON::XS; $$proto = 0;
-        bless  $proto, $pkg;
-    };
-
-
-    for my $method (@methods) {
-        my $flag = uc($method);
-        my $type |= (UNSUPPORTED_ENCODE_FLAG->{$flag} || 0);
-           $type |= (UNSUPPORTED_DECODE_FLAG->{$flag} || 0);
-
-        next unless($type);
-
-        $pkg->_make_unsupported_method($method => $type);
-    }
-
-    push @{"JSON::XS::Boolean::ISA"}, qw(JSON::PP::Boolean);
-    push @{"JSON::PP::Boolean::ISA"}, qw(JSON::Boolean);
-
-    $JSON::DEBUG and Carp::carp("set -support_by_pp mode.");
-
-    return 1;
-}
-
-
-
-
-#
-# Helper classes for XS
-#
-
-package JSON::Backend::XS::Supportable;
-
-$Carp::Internal{'JSON::Backend::XS::Supportable'} = 1;
-
-sub _make_unsupported_method {
-    my ($pkg, $method, $type) = @_;
-
-    local $^W;
-    no strict qw(refs);
-
-    *{"$pkg\::$method"} = sub {
-        local $^W;
-        if (defined $_[1] ? $_[1] : 1) {
-            ${$_[0]} |= $type;
-        }
-        else {
-            ${$_[0]} &= ~$type;
-        }
-        $_[0];
-    };
-
-    *{"$pkg\::get_$method"} = sub {
-        ${$_[0]} & $type ? 1 : '';
-    };
-
-}
-
-
-sub _set_for_pp {
-    JSON::_load_pp( $_INSTALL_ONLY );
-
-    my $type  = shift;
-    my $pp    = new JSON::PP;
-    my $prop = $_[0]->property;
-
-    for my $name (keys %$prop) {
-        $pp->$name( $prop->{$name} ? $prop->{$name} : 0 );
-    }
-
-    my $unsupported = $type eq 'encode' ? JSON::Backend::XS::UNSUPPORTED_ENCODE_FLAG
-                                        : JSON::Backend::XS::UNSUPPORTED_DECODE_FLAG;
-    my $flags       = ${$_[0]} || 0;
-
-    for my $name (keys %$unsupported) {
-        next if ($name eq 'EXPANDED'); # for developer's
-        my $enable = ($flags & $unsupported->{$name}) ? 1 : 0;
-        my $method = lc $name;
-        $pp->$method($enable);
-    }
-
-    $pp->indent_length( $_[0]->get_indent_length );
-
-    return $pp;
-}
-
-sub _encode { # using with PP encod
-    if (${$_[0]}) {
-        _set_for_pp('encode' => @_)->encode($_[1]);
-    }
-    else {
-        $_[0]->_original_encode( $_[1] );
-    }
-}
-
-
-sub _decode { # if unsupported-flag is set, use PP
-    if (${$_[0]}) {
-        _set_for_pp('decode' => @_)->decode($_[1]);
-    }
-    else {
-        $_[0]->_original_decode( $_[1] );
-    }
-}
-
-
-sub decode_prefix { # if unsupported-flag is set, use PP
-    _set_for_pp('decode' => @_)->decode_prefix($_[1]);
-}
-
-
-sub _incr_parse {
-    if (${$_[0]}) {
-        _set_for_pp('decode' => @_)->incr_parse($_[1]);
-    }
-    else {
-        $_[0]->_original_incr_parse( $_[1] );
-    }
-}
-
-
-sub get_indent_length {
-    ${$_[0]} << 4 >> 16;
-}
-
-
-sub indent_length {
-    my $length = $_[1];
-
-    if (!defined $length or $length > 15 or $length < 0) {
-        Carp::carp "The acceptable range of indent_length() is 0 to 15.";
-    }
-    else {
-        local $^W;
-        $length <<= 12;
-        ${$_[0]} &= ~ JSON::Backend::XS::INDENT_LENGTH_FLAG;
-        ${$_[0]} |= $length;
-        *JSON::XS::encode = \&JSON::Backend::XS::Supportable::_encode;
-    }
-
-    $_[0];
-}
-
-
-1;
-__END__
-
-=head1 NAME
-
-JSON - JSON (JavaScript Object Notation) encoder/decoder
-
-=head1 SYNOPSIS
-
- use JSON; # imports encode_json, decode_json, to_json and from_json.
-
- # simple and fast interfaces (expect/generate UTF-8)
-
- $utf8_encoded_json_text = encode_json $perl_hash_or_arrayref;
- $perl_hash_or_arrayref  = decode_json $utf8_encoded_json_text;
-
- # OO-interface
-
- $json = JSON->new->allow_nonref;
-
- $json_text   = $json->encode( $perl_scalar );
- $perl_scalar = $json->decode( $json_text );
-
- $pretty_printed = $json->pretty->encode( $perl_scalar ); # pretty-printing
-
- # If you want to use PP only support features, call with '-support_by_pp'
- # When XS unsupported feature is enable, using PP (de|en)code instead of XS ones.
-
- use JSON -support_by_pp;
-
- # option-acceptable interfaces (expect/generate UNICODE by default)
-
- $json_text   = to_json( $perl_scalar, { ascii => 1, pretty => 1 } );
- $perl_scalar = from_json( $json_text, { utf8  => 1 } );
-
- # Between (en|de)code_json and (to|from)_json, if you want to write
- # a code which communicates to an outer world (encoded in UTF-8),
- # recommend to use (en|de)code_json.
-
-=head1 VERSION
-
-    2.53
-
-This version is compatible with JSON::XS B<2.27> and later.
-
-
-=head1 NOTE
-
-JSON::PP was inculded in C<JSON> distribution.
-It comes to be a perl core module in Perl 5.14.
-And L<JSON::PP> will be split away it.
-
-C<JSON> distribution will inculde yet another JSON::PP modules.
-They are JSNO::backportPP and so on. JSON.pm should work as it did at all.
-
-=head1 DESCRIPTION
-
- ************************** CAUTION ********************************
- * This is 'JSON module version 2' and there are many differences  *
- * to version 1.xx                                                 *
- * Please check your applications useing old version.              *
- *   See to 'INCOMPATIBLE CHANGES TO OLD VERSION'                  *
- *******************************************************************
-
-JSON (JavaScript Object Notation) is a simple data format.
-See to L<http://www.json.org/> and C<RFC4627>(L<http://www.ietf.org/rfc/rfc4627.txt>).
-
-This module converts Perl data structures to JSON and vice versa using either
-L<JSON::XS> or L<JSON::PP>.
-
-JSON::XS is the fastest and most proper JSON module on CPAN which must be
-compiled and installed in your environment.
-JSON::PP is a pure-Perl module which is bundled in this distribution and
-has a strong compatibility to JSON::XS.
-
-This module try to use JSON::XS by default and fail to it, use JSON::PP instead.
-So its features completely depend on JSON::XS or JSON::PP.
-
-See to L<BACKEND MODULE DECISION>.
-
-To distinguish the module name 'JSON' and the format type JSON,
-the former is quoted by CE<lt>E<gt> (its results vary with your using media),
-and the latter is left just as it is.
-
-Module name : C<JSON>
-
-Format type : JSON
-
-=head2 FEATURES
-
-=over
-
-=item * correct unicode handling
-
-This module (i.e. backend modules) knows how to handle Unicode, documents
-how and when it does so, and even documents what "correct" means.
-
-Even though there are limitations, this feature is available since Perl version 5.6.
-
-JSON::XS requires Perl 5.8.2 (but works correctly in 5.8.8 or later), so in older versions
-C<JSON> sholud call JSON::PP as the backend which can be used since Perl 5.005.
-
-With Perl 5.8.x JSON::PP works, but from 5.8.0 to 5.8.2, because of a Perl side problem,
-JSON::PP works slower in the versions. And in 5.005, the Unicode handling is not available.
-See to L<JSON::PP/UNICODE HANDLING ON PERLS> for more information.
-
-See also to L<JSON::XS/A FEW NOTES ON UNICODE AND PERL>
-and L<JSON::XS/ENCODING/CODESET_FLAG_NOTES>.
-
-
-=item * round-trip integrity
-
-When you serialise a perl data structure using only data types supported
-by JSON and Perl, the deserialised data structure is identical on the Perl
-level. (e.g. the string "2.0" doesn't suddenly become "2" just because
-it looks like a number). There I<are> minor exceptions to this, read the
-L</MAPPING> section below to learn about those.
-
-
-=item * strict checking of JSON correctness
-
-There is no guessing, no generating of illegal JSON texts by default,
-and only JSON is accepted as input by default (the latter is a security
-feature).
-
-See to L<JSON::XS/FEATURES> and L<JSON::PP/FEATURES>.
-
-=item * fast
-
-This module returns a JSON::XS object itself if available.
-Compared to other JSON modules and other serialisers such as Storable,
-JSON::XS usually compares favourably in terms of speed, too.
-
-If not available, C<JSON> returns a JSON::PP object instead of JSON::XS and
-it is very slow as pure-Perl.
-
-=item * simple to use
-
-This module has both a simple functional interface as well as an
-object oriented interface interface.
-
-=item * reasonably versatile output formats
-
-You can choose between the most compact guaranteed-single-line format possible
-(nice for simple line-based protocols), a pure-ASCII format (for when your transport
-is not 8-bit clean, still supports the whole Unicode range), or a pretty-printed
-format (for when you want to read that stuff). Or you can combine those features
-in whatever way you like.
-
-=back
-
-=head1 FUNCTIONAL INTERFACE
-
-Some documents are copied and modified from L<JSON::XS/FUNCTIONAL INTERFACE>.
-C<to_json> and C<from_json> are additional functions.
-
-=head2 encode_json
-
-    $json_text = encode_json $perl_scalar
-
-Converts the given Perl data structure to a UTF-8 encoded, binary string.
-
-This function call is functionally identical to:
-
-    $json_text = JSON->new->utf8->encode($perl_scalar)
-
-=head2 decode_json
-
-    $perl_scalar = decode_json $json_text
-
-The opposite of C<encode_json>: expects an UTF-8 (binary) string and tries
-to parse that as an UTF-8 encoded JSON text, returning the resulting
-reference.
-
-This function call is functionally identical to:
-
-    $perl_scalar = JSON->new->utf8->decode($json_text)
-
-
-=head2 to_json
-
-   $json_text = to_json($perl_scalar)
-
-Converts the given Perl data structure to a json string.
-
-This function call is functionally identical to:
-
-   $json_text = JSON->new->encode($perl_scalar)
-
-Takes a hash reference as the second.
-
-   $json_text = to_json($perl_scalar, $flag_hashref)
-
-So,
-
-   $json_text = to_json($perl_scalar, {utf8 => 1, pretty => 1})
-
-equivalent to:
-
-   $json_text = JSON->new->utf8(1)->pretty(1)->encode($perl_scalar)
-
-If you want to write a modern perl code which communicates to outer world,
-you should use C<encode_json> (supposed that JSON data are encoded in UTF-8).
-
-=head2 from_json
-
-   $perl_scalar = from_json($json_text)
-
-The opposite of C<to_json>: expects a json string and tries
-to parse it, returning the resulting reference.
-
-This function call is functionally identical to:
-
-    $perl_scalar = JSON->decode($json_text)
-
-Takes a hash reference as the second.
-
-    $perl_scalar = from_json($json_text, $flag_hashref)
-
-So,
-
-    $perl_scalar = from_json($json_text, {utf8 => 1})
-
-equivalent to:
-
-    $perl_scalar = JSON->new->utf8(1)->decode($json_text)
-
-If you want to write a modern perl code which communicates to outer world,
-you should use C<decode_json> (supposed that JSON data are encoded in UTF-8).
-
-=head2 JSON::is_bool
-
-    $is_boolean = JSON::is_bool($scalar)
-
-Returns true if the passed scalar represents either JSON::true or
-JSON::false, two constants that act like C<1> and C<0> respectively
-and are also used to represent JSON C<true> and C<false> in Perl strings.
-
-=head2 JSON::true
-
-Returns JSON true value which is blessed object.
-It C<isa> JSON::Boolean object.
-
-=head2 JSON::false
-
-Returns JSON false value which is blessed object.
-It C<isa> JSON::Boolean object.
-
-=head2 JSON::null
-
-Returns C<undef>.
-
-See L<MAPPING>, below, for more information on how JSON values are mapped to
-Perl.
-
-=head1 HOW DO I DECODE A DATA FROM OUTER AND ENCODE TO OUTER
-
-This section supposes that your perl vresion is 5.8 or later.
-
-If you know a JSON text from an outer world - a network, a file content, and so on,
-is encoded in UTF-8, you should use C<decode_json> or C<JSON> module object
-with C<utf8> enable. And the decoded result will contain UNICODE characters.
-
-  # from network
-  my $json        = JSON->new->utf8;
-  my $json_text   = CGI->new->param( 'json_data' );
-  my $perl_scalar = $json->decode( $json_text );
-
-  # from file content
-  local $/;
-  open( my $fh, '<', 'json.data' );
-  $json_text   = <$fh>;
-  $perl_scalar = decode_json( $json_text );
-
-If an outer data is not encoded in UTF-8, firstly you should C<decode> it.
-
-  use Encode;
-  local $/;
-  open( my $fh, '<', 'json.data' );
-  my $encoding = 'cp932';
-  my $unicode_json_text = decode( $encoding, <$fh> ); # UNICODE
-
-  # or you can write the below code.
-  #
-  # open( my $fh, "<:encoding($encoding)", 'json.data' );
-  # $unicode_json_text = <$fh>;
-
-In this case, C<$unicode_json_text> is of course UNICODE string.
-So you B<cannot> use C<decode_json> nor C<JSON> module object with C<utf8> enable.
-Instead of them, you use C<JSON> module object with C<utf8> disable or C<from_json>.
-
-  $perl_scalar = $json->utf8(0)->decode( $unicode_json_text );
-  # or
-  $perl_scalar = from_json( $unicode_json_text );
-
-Or C<encode 'utf8'> and C<decode_json>:
-
-  $perl_scalar = decode_json( encode( 'utf8', $unicode_json_text ) );
-  # this way is not efficient.
-
-And now, you want to convert your C<$perl_scalar> into JSON data and
-send it to an outer world - a network or a file content, and so on.
-
-Your data usually contains UNICODE strings and you want the converted data to be encoded
-in UTF-8, you should use C<encode_json> or C<JSON> module object with C<utf8> enable.
-
-  print encode_json( $perl_scalar ); # to a network? file? or display?
-  # or
-  print $json->utf8->encode( $perl_scalar );
-
-If C<$perl_scalar> does not contain UNICODE but C<$encoding>-encoded strings
-for some reason, then its characters are regarded as B<latin1> for perl
-(because it does not concern with your $encoding).
-You B<cannot> use C<encode_json> nor C<JSON> module object with C<utf8> enable.
-Instead of them, you use C<JSON> module object with C<utf8> disable or C<to_json>.
-Note that the resulted text is a UNICODE string but no problem to print it.
-
-  # $perl_scalar contains $encoding encoded string values
-  $unicode_json_text = $json->utf8(0)->encode( $perl_scalar );
-  # or
-  $unicode_json_text = to_json( $perl_scalar );
-  # $unicode_json_text consists of characters less than 0x100
-  print $unicode_json_text;
-
-Or C<decode $encoding> all string values and C<encode_json>:
-
-  $perl_scalar->{ foo } = decode( $encoding, $perl_scalar->{ foo } );
-  # ... do it to each string values, then encode_json
-  $json_text = encode_json( $perl_scalar );
-
-This method is a proper way but probably not efficient.
-
-See to L<Encode>, L<perluniintro>.
-
-
-=head1 COMMON OBJECT-ORIENTED INTERFACE
-
-=head2 new
-
-    $json = new JSON
-
-Returns a new C<JSON> object inherited from either JSON::XS or JSON::PP
-that can be used to de/encode JSON strings.
-
-All boolean flags described below are by default I<disabled>.
-
-The mutators for flags all return the JSON object again and thus calls can
-be chained:
-
-   my $json = JSON->new->utf8->space_after->encode({a => [1,2]})
-   => {"a": [1, 2]}
-
-=head2 ascii
-
-    $json = $json->ascii([$enable])
-
-    $enabled = $json->get_ascii
-
-If $enable is true (or missing), then the encode method will not generate characters outside
-the code range 0..127. Any Unicode characters outside that range will be escaped using either
-a single \uXXXX or a double \uHHHH\uLLLLL escape sequence, as per RFC4627.
-
-If $enable is false, then the encode method will not escape Unicode characters unless
-required by the JSON syntax or other flags. This results in a faster and more compact format.
-
-This feature depends on the used Perl version and environment.
-
-See to L<JSON::PP/UNICODE HANDLING ON PERLS> if the backend is PP.
-
-  JSON->new->ascii(1)->encode([chr 0x10401])
-  => ["\ud801\udc01"]
-
-=head2 latin1
-
-    $json = $json->latin1([$enable])
-
-    $enabled = $json->get_latin1
-
-If $enable is true (or missing), then the encode method will encode the resulting JSON
-text as latin1 (or iso-8859-1), escaping any characters outside the code range 0..255.
-
-If $enable is false, then the encode method will not escape Unicode characters
-unless required by the JSON syntax or other flags.
-
-  JSON->new->latin1->encode (["\x{89}\x{abc}"]
-  => ["\x{89}\\u0abc"]    # (perl syntax, U+abc escaped, U+89 not)
-
-=head2 utf8
-
-    $json = $json->utf8([$enable])
-
-    $enabled = $json->get_utf8
-
-If $enable is true (or missing), then the encode method will encode the JSON result
-into UTF-8, as required by many protocols, while the decode method expects to be handled
-an UTF-8-encoded string. Please note that UTF-8-encoded strings do not contain any
-characters outside the range 0..255, they are thus useful for bytewise/binary I/O.
-
-In future versions, enabling this option might enable autodetection of the UTF-16 and UTF-32
-encoding families, as described in RFC4627.
-
-If $enable is false, then the encode method will return the JSON string as a (non-encoded)
-Unicode string, while decode expects thus a Unicode string. Any decoding or encoding
-(e.g. to UTF-8 or UTF-16) needs to be done yourself, e.g. using the Encode module.
-
-
-Example, output UTF-16BE-encoded JSON:
-
-  use Encode;
-  $jsontext = encode "UTF-16BE", JSON::XS->new->encode ($object);
-
-Example, decode UTF-32LE-encoded JSON:
-
-  use Encode;
-  $object = JSON::XS->new->decode (decode "UTF-32LE", $jsontext);
-
-See to L<JSON::PP/UNICODE HANDLING ON PERLS> if the backend is PP.
-
-
-=head2 pretty
-
-    $json = $json->pretty([$enable])
-
-This enables (or disables) all of the C<indent>, C<space_before> and
-C<space_after> (and in the future possibly more) flags in one call to
-generate the most readable (or most compact) form possible.
-
-Equivalent to:
-
-   $json->indent->space_before->space_after
-
-The indent space length is three and JSON::XS cannot change the indent
-space length.
-
-=head2 indent
-
-    $json = $json->indent([$enable])
-
-    $enabled = $json->get_indent
-
-If C<$enable> is true (or missing), then the C<encode> method will use a multiline
-format as output, putting every array member or object/hash key-value pair
-into its own line, identing them properly.
-
-If C<$enable> is false, no newlines or indenting will be produced, and the
-resulting JSON text is guarenteed not to contain any C<newlines>.
-
-This setting has no effect when decoding JSON texts.
-
-The indent space length is three.
-With JSON::PP, you can also access C<indent_length> to change indent space length.
-
-
-=head2 space_before
-
-    $json = $json->space_before([$enable])
-
-    $enabled = $json->get_space_before
-
-If C<$enable> is true (or missing), then the C<encode> method will add an extra
-optional space before the C<:> separating keys from values in JSON objects.
-
-If C<$enable> is false, then the C<encode> method will not add any extra
-space at those places.
-
-This setting has no effect when decoding JSON texts.
-
-Example, space_before enabled, space_after and indent disabled:
-
-   {"key" :"value"}
-
-
-=head2 space_after
-
-    $json = $json->space_after([$enable])
-
-    $enabled = $json->get_space_after
-
-If C<$enable> is true (or missing), then the C<encode> method will add an extra
-optional space after the C<:> separating keys from values in JSON objects
-and extra whitespace after the C<,> separating key-value pairs and array
-members.
-
-If C<$enable> is false, then the C<encode> method will not add any extra
-space at those places.
-
-This setting has no effect when decoding JSON texts.
-
-Example, space_before and indent disabled, space_after enabled:
-
-   {"key": "value"}
-
-
-=head2 relaxed
-
-    $json = $json->relaxed([$enable])
-
-    $enabled = $json->get_relaxed
-
-If C<$enable> is true (or missing), then C<decode> will accept some
-extensions to normal JSON syntax (see below). C<encode> will not be
-affected in anyway. I<Be aware that this option makes you accept invalid
-JSON texts as if they were valid!>. I suggest only to use this option to
-parse application-specific files written by humans (configuration files,
-resource files etc.)
-
-If C<$enable> is false (the default), then C<decode> will only accept
-valid JSON texts.
-
-Currently accepted extensions are:
-
-=over 4
-
-=item * list items can have an end-comma
-
-JSON I<separates> array elements and key-value pairs with commas. This
-can be annoying if you write JSON texts manually and want to be able to
-quickly append elements, so this extension accepts comma at the end of
-such items not just between them:
-
-   [
-      1,
-      2, <- this comma not normally allowed
-   ]
-   {
-      "k1": "v1",
-      "k2": "v2", <- this comma not normally allowed
-   }
-
-=item * shell-style '#'-comments
-
-Whenever JSON allows whitespace, shell-style comments are additionally
-allowed. They are terminated by the first carriage-return or line-feed
-character, after which more white-space and comments are allowed.
-
-  [
-     1, # this comment not allowed in JSON
-        # neither this one...
-  ]
-
-=back
-
-
-=head2 canonical
-
-    $json = $json->canonical([$enable])
-
-    $enabled = $json->get_canonical
-
-If C<$enable> is true (or missing), then the C<encode> method will output JSON objects
-by sorting their keys. This is adding a comparatively high overhead.
-
-If C<$enable> is false, then the C<encode> method will output key-value
-pairs in the order Perl stores them (which will likely change between runs
-of the same script).
-
-This option is useful if you want the same data structure to be encoded as
-the same JSON text (given the same overall settings). If it is disabled,
-the same hash might be encoded differently even if contains the same data,
-as key-value pairs have no inherent ordering in Perl.
-
-This setting has no effect when decoding JSON texts.
-
-=head2 allow_nonref
-
-    $json = $json->allow_nonref([$enable])
-
-    $enabled = $json->get_allow_nonref
-
-If C<$enable> is true (or missing), then the C<encode> method can convert a
-non-reference into its corresponding string, number or null JSON value,
-which is an extension to RFC4627. Likewise, C<decode> will accept those JSON
-values instead of croaking.
-
-If C<$enable> is false, then the C<encode> method will croak if it isn't
-passed an arrayref or hashref, as JSON texts must either be an object
-or array. Likewise, C<decode> will croak if given something that is not a
-JSON object or array.
-
-   JSON->new->allow_nonref->encode ("Hello, World!")
-   => "Hello, World!"
-
-=head2 allow_unknown
-
-    $json = $json->allow_unknown ([$enable])
-
-    $enabled = $json->get_allow_unknown
-
-If $enable is true (or missing), then "encode" will *not* throw an
-exception when it encounters values it cannot represent in JSON (for
-example, filehandles) but instead will encode a JSON "null" value.
-Note that blessed objects are not included here and are handled
-separately by c<allow_nonref>.
-
-If $enable is false (the default), then "encode" will throw an
-exception when it encounters anything it cannot encode as JSON.
-
-This option does not affect "decode" in any way, and it is
-recommended to leave it off unless you know your communications
-partner.
-
-=head2 allow_blessed
-
-    $json = $json->allow_blessed([$enable])
-
-    $enabled = $json->get_allow_blessed
-
-If C<$enable> is true (or missing), then the C<encode> method will not
-barf when it encounters a blessed reference. Instead, the value of the
-B<convert_blessed> option will decide whether C<null> (C<convert_blessed>
-disabled or no C<TO_JSON> method found) or a representation of the
-object (C<convert_blessed> enabled and C<TO_JSON> method found) is being
-encoded. Has no effect on C<decode>.
-
-If C<$enable> is false (the default), then C<encode> will throw an
-exception when it encounters a blessed object.
-
-
-=head2 convert_blessed
-
-    $json = $json->convert_blessed([$enable])
-
-    $enabled = $json->get_convert_blessed
-
-If C<$enable> is true (or missing), then C<encode>, upon encountering a
-blessed object, will check for the availability of the C<TO_JSON> method
-on the object's class. If found, it will be called in scalar context
-and the resulting scalar will be encoded instead of the object. If no
-C<TO_JSON> method is found, the value of C<allow_blessed> will decide what
-to do.
-
-The C<TO_JSON> method may safely call die if it wants. If C<TO_JSON>
-returns other blessed objects, those will be handled in the same
-way. C<TO_JSON> must take care of not causing an endless recursion cycle
-(== crash) in this case. The name of C<TO_JSON> was chosen because other
-methods called by the Perl core (== not by the user of the object) are
-usually in upper case letters and to avoid collisions with the C<to_json>
-function or method.
-
-This setting does not yet influence C<decode> in any way.
-
-If C<$enable> is false, then the C<allow_blessed> setting will decide what
-to do when a blessed object is found.
-
-=over
-
-=item convert_blessed_universally mode
-
-If use C<JSON> with C<-convert_blessed_universally>, the C<UNIVERSAL::TO_JSON>
-subroutine is defined as the below code:
-
-   *UNIVERSAL::TO_JSON = sub {
-       my $b_obj = B::svref_2object( $_[0] );
-       return    $b_obj->isa('B::HV') ? { %{ $_[0] } }
-               : $b_obj->isa('B::AV') ? [ @{ $_[0] } ]
-               : undef
-               ;
-   }
-
-This will cause that C<encode> method converts simple blessed objects into
-JSON objects as non-blessed object.
-
-   JSON -convert_blessed_universally;
-   $json->allow_blessed->convert_blessed->encode( $blessed_object )
-
-This feature is experimental and may be removed in the future.
-
-=back
-
-=head2 filter_json_object
-
-    $json = $json->filter_json_object([$coderef])
-
-When C<$coderef> is specified, it will be called from C<decode> each
-time it decodes a JSON object. The only argument passed to the coderef
-is a reference to the newly-created hash. If the code references returns
-a single scalar (which need not be a reference), this value
-(i.e. a copy of that scalar to avoid aliasing) is inserted into the
-deserialised data structure. If it returns an empty list
-(NOTE: I<not> C<undef>, which is a valid scalar), the original deserialised
-hash will be inserted. This setting can slow down decoding considerably.
-
-When C<$coderef> is omitted or undefined, any existing callback will
-be removed and C<decode> will not change the deserialised hash in any
-way.
-
-Example, convert all JSON objects into the integer 5:
-
-   my $js = JSON->new->filter_json_object (sub { 5 });
-   # returns [5]
-   $js->decode ('[{}]'); # the given subroutine takes a hash reference.
-   # throw an exception because allow_nonref is not enabled
-   # so a lone 5 is not allowed.
-   $js->decode ('{"a":1, "b":2}');
-
-
-=head2 filter_json_single_key_object
-
-    $json = $json->filter_json_single_key_object($key [=> $coderef])
-
-Works remotely similar to C<filter_json_object>, but is only called for
-JSON objects having a single key named C<$key>.
-
-This C<$coderef> is called before the one specified via
-C<filter_json_object>, if any. It gets passed the single value in the JSON
-object. If it returns a single value, it will be inserted into the data
-structure. If it returns nothing (not even C<undef> but the empty list),
-the callback from C<filter_json_object> will be called next, as if no
-single-key callback were specified.
-
-If C<$coderef> is omitted or undefined, the corresponding callback will be
-disabled. There can only ever be one callback for a given key.
-
-As this callback gets called less often then the C<filter_json_object>
-one, decoding speed will not usually suffer as much. Therefore, single-key
-objects make excellent targets to serialise Perl objects into, especially
-as single-key JSON objects are as close to the type-tagged value concept
-as JSON gets (it's basically an ID/VALUE tuple). Of course, JSON does not
-support this in any way, so you need to make sure your data never looks
-like a serialised Perl hash.
-
-Typical names for the single object key are C<__class_whatever__>, or
-C<$__dollars_are_rarely_used__$> or C<}ugly_brace_placement>, or even
-things like C<__class_md5sum(classname)__>, to reduce the risk of clashing
-with real hashes.
-
-Example, decode JSON objects of the form C<< { "__widget__" => <id> } >>
-into the corresponding C<< $WIDGET{<id>} >> object:
-
-   # return whatever is in $WIDGET{5}:
-   JSON
-      ->new
-      ->filter_json_single_key_object (__widget__ => sub {
-            $WIDGET{ $_[0] }
-         })
-      ->decode ('{"__widget__": 5')
-
-   # this can be used with a TO_JSON method in some "widget" class
-   # for serialisation to json:
-   sub WidgetBase::TO_JSON {
-      my ($self) = @_;
-
-      unless ($self->{id}) {
-         $self->{id} = ..get..some..id..;
-         $WIDGET{$self->{id}} = $self;
-      }
-
-      { __widget__ => $self->{id} }
-   }
-
-
-=head2 shrink
-
-    $json = $json->shrink([$enable])
-
-    $enabled = $json->get_shrink
-
-With JSON::XS, this flag resizes strings generated by either
-C<encode> or C<decode> to their minimum size possible. This can save
-memory when your JSON texts are either very very long or you have many
-short strings. It will also try to downgrade any strings to octet-form
-if possible: perl stores strings internally either in an encoding called
-UTF-X or in octet-form. The latter cannot store everything but uses less
-space in general (and some buggy Perl or C code might even rely on that
-internal representation being used).
-
-With JSON::PP, it is noop about resizing strings but tries
-C<utf8::downgrade> to the returned string by C<encode>. See to L<utf8>.
-
-See to L<JSON::XS/OBJECT-ORIENTED INTERFACE> and L<JSON::PP/METHODS>.
-
-=head2 max_depth
-
-    $json = $json->max_depth([$maximum_nesting_depth])
-
-    $max_depth = $json->get_max_depth
-
-Sets the maximum nesting level (default C<512>) accepted while encoding
-or decoding. If a higher nesting level is detected in JSON text or a Perl
-data structure, then the encoder and decoder will stop and croak at that
-point.
-
-Nesting level is defined by number of hash- or arrayrefs that the encoder
-needs to traverse to reach a given point or the number of C<{> or C<[>
-characters without their matching closing parenthesis crossed to reach a
-given character in a string.
-
-If no argument is given, the highest possible setting will be used, which
-is rarely useful.
-
-Note that nesting is implemented by recursion in C. The default value has
-been chosen to be as large as typical operating systems allow without
-crashing. (JSON::XS)
-
-With JSON::PP as the backend, when a large value (100 or more) was set and
-it de/encodes a deep nested object/text, it may raise a warning
-'Deep recursion on subroutin' at the perl runtime phase.
-
-See L<JSON::XS/SECURITY CONSIDERATIONS> for more info on why this is useful.
-
-=head2 max_size
-
-    $json = $json->max_size([$maximum_string_size])
-
-    $max_size = $json->get_max_size
-
-Set the maximum length a JSON text may have (in bytes) where decoding is
-being attempted. The default is C<0>, meaning no limit. When C<decode>
-is called on a string that is longer then this many bytes, it will not
-attempt to decode the string but throw an exception. This setting has no
-effect on C<encode> (yet).
-
-If no argument is given, the limit check will be deactivated (same as when
-C<0> is specified).
-
-See L<JSON::XS/SECURITY CONSIDERATIONS>, below, for more info on why this is useful.
-
-=head2 encode
-
-    $json_text = $json->encode($perl_scalar)
-
-Converts the given Perl data structure (a simple scalar or a reference
-to a hash or array) to its JSON representation. Simple scalars will be
-converted into JSON string or number sequences, while references to arrays
-become JSON arrays and references to hashes become JSON objects. Undefined
-Perl values (e.g. C<undef>) become JSON C<null> values.
-References to the integers C<0> and C<1> are converted into C<true> and C<false>.
-
-=head2 decode
-
-    $perl_scalar = $json->decode($json_text)
-
-The opposite of C<encode>: expects a JSON text and tries to parse it,
-returning the resulting simple scalar or reference. Croaks on error.
-
-JSON numbers and strings become simple Perl scalars. JSON arrays become
-Perl arrayrefs and JSON objects become Perl hashrefs. C<true> becomes
-C<1> (C<JSON::true>), C<false> becomes C<0> (C<JSON::false>) and
-C<null> becomes C<undef>.
-
-=head2 decode_prefix
-
-    ($perl_scalar, $characters) = $json->decode_prefix($json_text)
-
-This works like the C<decode> method, but instead of raising an exception
-when there is trailing garbage after the first JSON object, it will
-silently stop parsing there and return the number of characters consumed
-so far.
-
-   JSON->new->decode_prefix ("[1] the tail")
-   => ([], 3)
-
-See to L<JSON::XS/OBJECT-ORIENTED INTERFACE>
-
-=head2 property
-
-    $boolean = $json->property($property_name)
-
-Returns a boolean value about above some properties.
-
-The available properties are C<ascii>, C<latin1>, C<utf8>,
-C<indent>,C<space_before>, C<space_after>, C<relaxed>, C<canonical>,
-C<allow_nonref>, C<allow_unknown>, C<allow_blessed>, C<convert_blessed>,
-C<shrink>, C<max_depth> and C<max_size>.
-
-   $boolean = $json->property('utf8');
-    => 0
-   $json->utf8;
-   $boolean = $json->property('utf8');
-    => 1
-
-Sets the property with a given boolean value.
-
-    $json = $json->property($property_name => $boolean);
-
-With no argumnt, it returns all the above properties as a hash reference.
-
-    $flag_hashref = $json->property();
-
-=head1 INCREMENTAL PARSING
-
-Most of this section are copied and modified from L<JSON::XS/INCREMENTAL PARSING>.
-
-In some cases, there is the need for incremental parsing of JSON texts.
-This module does allow you to parse a JSON stream incrementally.
-It does so by accumulating text until it has a full JSON object, which
-it then can decode. This process is similar to using C<decode_prefix>
-to see if a full JSON object is available, but is much more efficient
-(and can be implemented with a minimum of method calls).
-
-The backend module will only attempt to parse the JSON text once it is sure it
-has enough text to get a decisive result, using a very simple but
-truly incremental parser. This means that it sometimes won't stop as
-early as the full parser, for example, it doesn't detect parenthese
-mismatches. The only thing it guarantees is that it starts decoding as
-soon as a syntactically valid JSON text has been seen. This means you need
-to set resource limits (e.g. C<max_size>) to ensure the parser will stop
-parsing in the presence if syntax errors.
-
-The following methods implement this incremental parser.
-
-=head2 incr_parse
-
-    $json->incr_parse( [$string] ) # void context
-
-    $obj_or_undef = $json->incr_parse( [$string] ) # scalar context
-
-    @obj_or_empty = $json->incr_parse( [$string] ) # list context
-
-This is the central parsing function. It can both append new text and
-extract objects from the stream accumulated so far (both of these
-functions are optional).
-
-If C<$string> is given, then this string is appended to the already
-existing JSON fragment stored in the C<$json> object.
-
-After that, if the function is called in void context, it will simply
-return without doing anything further. This can be used to add more text
-in as many chunks as you want.
-
-If the method is called in scalar context, then it will try to extract
-exactly I<one> JSON object. If that is successful, it will return this
-object, otherwise it will return C<undef>. If there is a parse error,
-this method will croak just as C<decode> would do (one can then use
-C<incr_skip> to skip the errornous part). This is the most common way of
-using the method.
-
-And finally, in list context, it will try to extract as many objects
-from the stream as it can find and return them, or the empty list
-otherwise. For this to work, there must be no separators between the JSON
-objects or arrays, instead they must be concatenated back-to-back. If
-an error occurs, an exception will be raised as in the scalar context
-case. Note that in this case, any previously-parsed JSON texts will be
-lost.
-
-Example: Parse some JSON arrays/objects in a given string and return them.
-
-    my @objs = JSON->new->incr_parse ("[5][7][1,2]");
-
-=head2 incr_text
-
-    $lvalue_string = $json->incr_text
-
-This method returns the currently stored JSON fragment as an lvalue, that
-is, you can manipulate it. This I<only> works when a preceding call to
-C<incr_parse> in I<scalar context> successfully returned an object. Under
-all other circumstances you must not call this function (I mean it.
-although in simple tests it might actually work, it I<will> fail under
-real world conditions). As a special exception, you can also call this
-method before having parsed anything.
-
-This function is useful in two cases: a) finding the trailing text after a
-JSON object or b) parsing multiple JSON objects separated by non-JSON text
-(such as commas).
-
-    $json->incr_text =~ s/\s*,\s*//;
-
-In Perl 5.005, C<lvalue> attribute is not available.
-You must write codes like the below:
-
-    $string = $json->incr_text;
-    $string =~ s/\s*,\s*//;
-    $json->incr_text( $string );
-
-=head2 incr_skip
-
-    $json->incr_skip
-
-This will reset the state of the incremental parser and will remove the
-parsed text from the input buffer. This is useful after C<incr_parse>
-died, in which case the input buffer and incremental parser state is left
-unchanged, to skip the text parsed so far and to reset the parse state.
-
-=head2 incr_reset
-
-    $json->incr_reset
-
-This completely resets the incremental parser, that is, after this call,
-it will be as if the parser had never parsed anything.
-
-This is useful if you want ot repeatedly parse JSON objects and want to
-ignore any trailing data, which means you have to reset the parser after
-each successful decode.
-
-See to L<JSON::XS/INCREMENTAL PARSING> for examples.
-
-
-=head1 JSON::PP SUPPORT METHODS
-
-The below methods are JSON::PP own methods, so when C<JSON> works
-with JSON::PP (i.e. the created object is a JSON::PP object), available.
-See to L<JSON::PP/JSON::PP OWN METHODS> in detail.
-
-If you use C<JSON> with additonal C<-support_by_pp>, some methods
-are available even with JSON::XS. See to L<USE PP FEATURES EVEN THOUGH XS BACKEND>.
-
-   BEING { $ENV{PERL_JSON_BACKEND} = 'JSON::XS' }
-
-   use JSON -support_by_pp;
-
-   my $json = new JSON;
-   $json->allow_nonref->escape_slash->encode("/");
-
-   # functional interfaces too.
-   print to_json(["/"], {escape_slash => 1});
-   print from_json('["foo"]', {utf8 => 1});
-
-If you do not want to all functions but C<-support_by_pp>,
-use C<-no_export>.
-
-   use JSON -support_by_pp, -no_export;
-   # functional interfaces are not exported.
-
-=head2 allow_singlequote
-
-    $json = $json->allow_singlequote([$enable])
-
-If C<$enable> is true (or missing), then C<decode> will accept
-any JSON strings quoted by single quotations that are invalid JSON
-format.
-
-    $json->allow_singlequote->decode({"foo":'bar'});
-    $json->allow_singlequote->decode({'foo':"bar"});
-    $json->allow_singlequote->decode({'foo':'bar'});
-
-As same as the C<relaxed> option, this option may be used to parse
-application-specific files written by humans.
-
-=head2 allow_barekey
-
-    $json = $json->allow_barekey([$enable])
-
-If C<$enable> is true (or missing), then C<decode> will accept
-bare keys of JSON object that are invalid JSON format.
-
-As same as the C<relaxed> option, this option may be used to parse
-application-specific files written by humans.
-
-    $json->allow_barekey->decode('{foo:"bar"}');
-
-=head2 allow_bignum
-
-    $json = $json->allow_bignum([$enable])
-
-If C<$enable> is true (or missing), then C<decode> will convert
-the big integer Perl cannot handle as integer into a L<Math::BigInt>
-object and convert a floating number (any) into a L<Math::BigFloat>.
-
-On the contary, C<encode> converts C<Math::BigInt> objects and C<Math::BigFloat>
-objects into JSON numbers with C<allow_blessed> enable.
-
-   $json->allow_nonref->allow_blessed->allow_bignum;
-   $bigfloat = $json->decode('2.000000000000000000000000001');
-   print $json->encode($bigfloat);
-   # => 2.000000000000000000000000001
-
-See to L<MAPPING> aboout the conversion of JSON number.
-
-=head2 loose
-
-    $json = $json->loose([$enable])
-
-The unescaped [\x00-\x1f\x22\x2f\x5c] strings are invalid in JSON strings
-and the module doesn't allow to C<decode> to these (except for \x2f).
-If C<$enable> is true (or missing), then C<decode>  will accept these
-unescaped strings.
-
-    $json->loose->decode(qq|["abc
-                                   def"]|);
-
-See to L<JSON::PP/JSON::PP OWN METHODS>.
-
-=head2 escape_slash
-
-    $json = $json->escape_slash([$enable])
-
-According to JSON Grammar, I<slash> (U+002F) is escaped. But by default
-JSON backend modules encode strings without escaping slash.
-
-If C<$enable> is true (or missing), then C<encode> will escape slashes.
-
-=head2 indent_length
-
-    $json = $json->indent_length($length)
-
-With JSON::XS, The indent space length is 3 and cannot be changed.
-With JSON::PP, it sets the indent space length with the given $length.
-The default is 3. The acceptable range is 0 to 15.
-
-=head2 sort_by
-
-    $json = $json->sort_by($function_name)
-    $json = $json->sort_by($subroutine_ref)
-
-If $function_name or $subroutine_ref are set, its sort routine are used.
-
-   $js = $pc->sort_by(sub { $JSON::PP::a cmp $JSON::PP::b })->encode($obj);
-   # is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|);
-
-   $js = $pc->sort_by('own_sort')->encode($obj);
-   # is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|);
-
-   sub JSON::PP::own_sort { $JSON::PP::a cmp $JSON::PP::b }
-
-As the sorting routine runs in the JSON::PP scope, the given
-subroutine name and the special variables C<$a>, C<$b> will begin
-with 'JSON::PP::'.
-
-If $integer is set, then the effect is same as C<canonical> on.
-
-See to L<JSON::PP/JSON::PP OWN METHODS>.
-
-=head1 MAPPING
-
-This section is copied from JSON::XS and modified to C<JSON>.
-JSON::XS and JSON::PP mapping mechanisms are almost equivalent.
-
-See to L<JSON::XS/MAPPING>.
-
-=head2 JSON -> PERL
-
-=over 4
-
-=item object
-
-A JSON object becomes a reference to a hash in Perl. No ordering of object
-keys is preserved (JSON does not preserver object key ordering itself).
-
-=item array
-
-A JSON array becomes a reference to an array in Perl.
-
-=item string
-
-A JSON string becomes a string scalar in Perl - Unicode codepoints in JSON
-are represented by the same codepoints in the Perl string, so no manual
-decoding is necessary.
-
-=item number
-
-A JSON number becomes either an integer, numeric (floating point) or
-string scalar in perl, depending on its range and any fractional parts. On
-the Perl level, there is no difference between those as Perl handles all
-the conversion details, but an integer may take slightly less memory and
-might represent more values exactly than floating point numbers.
-
-If the number consists of digits only, C<JSON> will try to represent
-it as an integer value. If that fails, it will try to represent it as
-a numeric (floating point) value if that is possible without loss of
-precision. Otherwise it will preserve the number as a string value (in
-which case you lose roundtripping ability, as the JSON number will be
-re-encoded toa JSON string).
-
-Numbers containing a fractional or exponential part will always be
-represented as numeric (floating point) values, possibly at a loss of
-precision (in which case you might lose perfect roundtripping ability, but
-the JSON number will still be re-encoded as a JSON number).
-
-Note that precision is not accuracy - binary floating point values cannot
-represent most decimal fractions exactly, and when converting from and to
-floating point, C<JSON> only guarantees precision up to but not including
-the leats significant bit.
-
-If the backend is JSON::PP and C<allow_bignum> is enable, the big integers
-and the numeric can be optionally converted into L<Math::BigInt> and
-L<Math::BigFloat> objects.
-
-=item true, false
-
-These JSON atoms become C<JSON::true> and C<JSON::false>,
-respectively. They are overloaded to act almost exactly like the numbers
-C<1> and C<0>. You can check wether a scalar is a JSON boolean by using
-the C<JSON::is_bool> function.
-
-If C<JSON::true> and C<JSON::false> are used as strings or compared as strings,
-they represent as C<true> and C<false> respectively.
-
-   print JSON::true . "\n";
-    => true
-   print JSON::true + 1;
-    => 1
-
-   ok(JSON::true eq 'true');
-   ok(JSON::true eq  '1');
-   ok(JSON::true == 1);
-
-C<JSON> will install these missing overloading features to the backend modules.
-
-
-=item null
-
-A JSON null atom becomes C<undef> in Perl.
-
-C<JSON::null> returns C<unddef>.
-
-=back
-
-
-=head2 PERL -> JSON
-
-The mapping from Perl to JSON is slightly more difficult, as Perl is a
-truly typeless language, so we can only guess which JSON type is meant by
-a Perl value.
-
-=over 4
-
-=item hash references
-
-Perl hash references become JSON objects. As there is no inherent ordering
-in hash keys (or JSON objects), they will usually be encoded in a
-pseudo-random order that can change between runs of the same program but
-stays generally the same within a single run of a program. C<JSON>
-optionally sort the hash keys (determined by the I<canonical> flag), so
-the same datastructure will serialise to the same JSON text (given same
-settings and version of JSON::XS), but this incurs a runtime overhead
-and is only rarely useful, e.g. when you want to compare some JSON text
-against another for equality.
-
-In future, the ordered object feature will be added to JSON::PP using C<tie> mechanism.
-
-
-=item array references
-
-Perl array references become JSON arrays.
-
-=item other references
-
-Other unblessed references are generally not allowed and will cause an
-exception to be thrown, except for references to the integers C<0> and
-C<1>, which get turned into C<false> and C<true> atoms in JSON. You can
-also use C<JSON::false> and C<JSON::true> to improve readability.
-
-   to_json [\0,JSON::true]      # yields [false,true]
-
-=item JSON::true, JSON::false, JSON::null
-
-These special values become JSON true and JSON false values,
-respectively. You can also use C<\1> and C<\0> directly if you want.
-
-JSON::null returns C<undef>.
-
-=item blessed objects
-
-Blessed objects are not directly representable in JSON. See the
-C<allow_blessed> and C<convert_blessed> methods on various options on
-how to deal with this: basically, you can choose between throwing an
-exception, encoding the reference as if it weren't blessed, or provide
-your own serialiser method.
-
-With C<convert_blessed_universally> mode,  C<encode> converts blessed
-hash references or blessed array references (contains other blessed references)
-into JSON members and arrays.
-
-   use JSON -convert_blessed_universally;
-   JSON->new->allow_blessed->convert_blessed->encode( $blessed_object );
-
-See to L<convert_blessed>.
-
-=item simple scalars
-
-Simple Perl scalars (any scalar that is not a reference) are the most
-difficult objects to encode: JSON::XS and JSON::PP will encode undefined scalars as
-JSON C<null> values, scalars that have last been used in a string context
-before encoding as JSON strings, and anything else as number value:
-
-   # dump as number
-   encode_json [2]                      # yields [2]
-   encode_json [-3.0e17]                # yields [-3e+17]
-   my $value = 5; encode_json [$value]  # yields [5]
-
-   # used as string, so dump as string
-   print $value;
-   encode_json [$value]                 # yields ["5"]
-
-   # undef becomes null
-   encode_json [undef]                  # yields [null]
-
-You can force the type to be a string by stringifying it:
-
-   my $x = 3.1; # some variable containing a number
-   "$x";        # stringified
-   $x .= "";    # another, more awkward way to stringify
-   print $x;    # perl does it for you, too, quite often
-
-You can force the type to be a number by numifying it:
-
-   my $x = "3"; # some variable containing a string
-   $x += 0;     # numify it, ensuring it will be dumped as a number
-   $x *= 1;     # same thing, the choise is yours.
-
-You can not currently force the type in other, less obscure, ways.
-
-Note that numerical precision has the same meaning as under Perl (so
-binary to decimal conversion follows the same rules as in Perl, which
-can differ to other languages). Also, your perl interpreter might expose
-extensions to the floating point numbers of your platform, such as
-infinities or NaN's - these cannot be represented in JSON, and it is an
-error to pass those in.
-
-=item Big Number
-
-If the backend is JSON::PP and C<allow_bignum> is enable,
-C<encode> converts C<Math::BigInt> objects and C<Math::BigFloat>
-objects into JSON numbers.
-
-
-=back
-
-=head1 JSON and ECMAscript
-
-See to L<JSON::XS/JSON and ECMAscript>.
-
-=head1 JSON and YAML
-
-JSON is not a subset of YAML.
-See to L<JSON::XS/JSON and YAML>.
-
-
-=head1 BACKEND MODULE DECISION
-
-When you use C<JSON>, C<JSON> tries to C<use> JSON::XS. If this call failed, it will
-C<uses> JSON::PP. The required JSON::XS version is I<2.2> or later.
-
-The C<JSON> constructor method returns an object inherited from the backend module,
-and JSON::XS object is a blessed scaler reference while JSON::PP is a blessed hash
-reference.
-
-So, your program should not depend on the backend module, especially
-returned objects should not be modified.
-
- my $json = JSON->new; # XS or PP?
- $json->{stash} = 'this is xs object'; # this code may raise an error!
-
-To check the backend module, there are some methods - C<backend>, C<is_pp> and C<is_xs>.
-
-  JSON->backend; # 'JSON::XS' or 'JSON::PP'
-
-  JSON->backend->is_pp: # 0 or 1
-
-  JSON->backend->is_xs: # 1 or 0
-
-  $json->is_xs; # 1 or 0
-
-  $json->is_pp; # 0 or 1
-
-
-If you set an enviornment variable C<PERL_JSON_BACKEND>, The calling action will be changed.
-
-=over
-
-=item PERL_JSON_BACKEND = 0 or PERL_JSON_BACKEND = 'JSON::PP'
-
-Always use JSON::PP
-
-=item PERL_JSON_BACKEND == 1 or PERL_JSON_BACKEND = 'JSON::XS,JSON::PP'
-
-(The default) Use compiled JSON::XS if it is properly compiled & installed,
-otherwise use JSON::PP.
-
-=item PERL_JSON_BACKEND == 2 or PERL_JSON_BACKEND = 'JSON::XS'
-
-Always use compiled JSON::XS, die if it isn't properly compiled & installed.
-
-=item PERL_JSON_BACKEND = 'JSON::backportPP'
-
-Always use JSON::backportPP.
-JSON::backportPP is JSON::PP back port module.
-C<JSON> includs JSON::backportPP instead of JSON::PP.
-
-=back
-
-These ideas come from L<DBI::PurePerl> mechanism.
-
-example:
-
- BEGIN { $ENV{PERL_JSON_BACKEND} = 'JSON::PP' }
- use JSON; # always uses JSON::PP
-
-In future, it may be able to specify another module.
-
-=head1 USE PP FEATURES EVEN THOUGH XS BACKEND
-
-Many methods are available with either JSON::XS or JSON::PP and
-when the backend module is JSON::XS, if any JSON::PP specific (i.e. JSON::XS unspported)
-method is called, it will C<warn> and be noop.
-
-But If you C<use> C<JSON> passing the optional string C<-support_by_pp>,
-it makes a part of those unupported methods available.
-This feature is achieved by using JSON::PP in C<de/encode>.
-
-   BEGIN { $ENV{PERL_JSON_BACKEND} = 2 } # with JSON::XS
-   use JSON -support_by_pp;
-   my $json = new JSON;
-   $json->allow_nonref->escape_slash->encode("/");
-
-At this time, the returned object is a C<JSON::Backend::XS::Supportable>
-object (re-blessed XS object), and  by checking JSON::XS unsupported flags
-in de/encoding, can support some unsupported methods - C<loose>, C<allow_bignum>,
-C<allow_barekey>, C<allow_singlequote>, C<escape_slash> and C<indent_length>.
-
-When any unsupported methods are not enable, C<XS de/encode> will be
-used as is. The switch is achieved by changing the symbolic tables.
-
-C<-support_by_pp> is effective only when the backend module is JSON::XS
-and it makes the de/encoding speed down a bit.
-
-See to L<JSON::PP SUPPORT METHODS>.
-
-=head1 INCOMPATIBLE CHANGES TO OLD VERSION
-
-There are big incompatibility between new version (2.00) and old (1.xx).
-If you use old C<JSON> 1.xx in your code, please check it.
-
-See to L<Transition ways from 1.xx to 2.xx.>
-
-=over
-
-=item jsonToObj and objToJson are obsoleted.
-
-Non Perl-style name C<jsonToObj> and C<objToJson> are obsoleted
-(but not yet deleted from the source).
-If you use these functions in your code, please replace them
-with C<from_json> and C<to_json>.
-
-
-=item Global variables are no longer available.
-
-C<JSON> class variables - C<$JSON::AUTOCONVERT>, C<$JSON::BareKey>, etc...
-- are not available any longer.
-Instead, various features can be used through object methods.
-
-
-=item Package JSON::Converter and JSON::Parser are deleted.
-
-Now C<JSON> bundles with JSON::PP which can handle JSON more properly than them.
-
-=item Package JSON::NotString is deleted.
-
-There was C<JSON::NotString> class which represents JSON value C<true>, C<false>, C<null>
-and numbers. It was deleted and replaced by C<JSON::Boolean>.
-
-C<JSON::Boolean> represents C<true> and C<false>.
-
-C<JSON::Boolean> does not represent C<null>.
-
-C<JSON::null> returns C<undef>.
-
-C<JSON> makes L<JSON::XS::Boolean> and L<JSON::PP::Boolean> is-a relation
-to L<JSON::Boolean>.
-
-=item function JSON::Number is obsoleted.
-
-C<JSON::Number> is now needless because JSON::XS and JSON::PP have
-round-trip integrity.
-
-=item JSONRPC modules are deleted.
-
-Perl implementation of JSON-RPC protocol - C<JSONRPC >, C<JSONRPC::Transport::HTTP>
-and C<Apache::JSONRPC > are deleted in this distribution.
-Instead of them, there is L<JSON::RPC> which supports JSON-RPC protocol version 1.1.
-
-=back
-
-=head2 Transition ways from 1.xx to 2.xx.
-
-You should set C<suport_by_pp> mode firstly, because
-it is always successful for the below codes even with JSON::XS.
-
-    use JSON -support_by_pp;
-
-=over
-
-=item Exported jsonToObj (simple)
-
-  from_json($json_text);
-
-=item Exported objToJson (simple)
-
-  to_json($perl_scalar);
-
-=item Exported jsonToObj (advanced)
-
-  $flags = {allow_barekey => 1, allow_singlequote => 1};
-  from_json($json_text, $flags);
-
-equivalent to:
-
-  $JSON::BareKey = 1;
-  $JSON::QuotApos = 1;
-  jsonToObj($json_text);
-
-=item Exported objToJson (advanced)
-
-  $flags = {allow_blessed => 1, allow_barekey => 1};
-  to_json($perl_scalar, $flags);
-
-equivalent to:
-
-  $JSON::BareKey = 1;
-  objToJson($perl_scalar);
-
-=item jsonToObj as object method
-
-  $json->decode($json_text);
-
-=item objToJson as object method
-
-  $json->encode($perl_scalar);
-
-=item new method with parameters
-
-The C<new> method in 2.x takes any parameters no longer.
-You can set parameters instead;
-
-   $json = JSON->new->pretty;
-
-=item $JSON::Pretty, $JSON::Indent, $JSON::Delimiter
-
-If C<indent> is enable, that means C<$JSON::Pretty> flag set. And
-C<$JSON::Delimiter> was substituted by C<space_before> and C<space_after>.
-In conclusion:
-
-   $json->indent->space_before->space_after;
-
-Equivalent to:
-
-  $json->pretty;
-
-To change indent length, use C<indent_length>.
-
-(Only with JSON::PP, if C<-support_by_pp> is not used.)
-
-  $json->pretty->indent_length(2)->encode($perl_scalar);
-
-=item $JSON::BareKey
-
-(Only with JSON::PP, if C<-support_by_pp> is not used.)
-
-  $json->allow_barekey->decode($json_text)
-
-=item $JSON::ConvBlessed
-
-use C<-convert_blessed_universally>. See to L<convert_blessed>.
-
-=item $JSON::QuotApos
-
-(Only with JSON::PP, if C<-support_by_pp> is not used.)
-
-  $json->allow_singlequote->decode($json_text)
-
-=item $JSON::SingleQuote
-
-Disable. C<JSON> does not make such a invalid JSON string any longer.
-
-=item $JSON::KeySort
-
-  $json->canonical->encode($perl_scalar)
-
-This is the ascii sort.
-
-If you want to use with your own sort routine, check the C<sort_by> method.
-
-(Only with JSON::PP, even if C<-support_by_pp> is used currently.)
-
-  $json->sort_by($sort_routine_ref)->encode($perl_scalar)
-
-  $json->sort_by(sub { $JSON::PP::a <=> $JSON::PP::b })->encode($perl_scalar)
-
-Can't access C<$a> and C<$b> but C<$JSON::PP::a> and C<$JSON::PP::b>.
-
-=item $JSON::SkipInvalid
-
-  $json->allow_unknown
-
-=item $JSON::AUTOCONVERT
-
-Needless. C<JSON> backend modules have the round-trip integrity.
-
-=item $JSON::UTF8
-
-Needless because C<JSON> (JSON::XS/JSON::PP) sets
-the UTF8 flag on properly.
-
-    # With UTF8-flagged strings
-
-    $json->allow_nonref;
-    $str = chr(1000); # UTF8-flagged
-
-    $json_text  = $json->utf8(0)->encode($str);
-    utf8::is_utf8($json_text);
-    # true
-    $json_text  = $json->utf8(1)->encode($str);
-    utf8::is_utf8($json_text);
-    # false
-
-    $str = '"' . chr(1000) . '"'; # UTF8-flagged
-
-    $perl_scalar  = $json->utf8(0)->decode($str);
-    utf8::is_utf8($perl_scalar);
-    # true
-    $perl_scalar  = $json->utf8(1)->decode($str);
-    # died because of 'Wide character in subroutine'
-
-See to L<JSON::XS/A FEW NOTES ON UNICODE AND PERL>.
-
-=item $JSON::UnMapping
-
-Disable. See to L<MAPPING>.
-
-=item $JSON::SelfConvert
-
-This option was deleted.
-Instead of it, if a givien blessed object has the C<TO_JSON> method,
-C<TO_JSON> will be executed with C<convert_blessed>.
-
-  $json->convert_blessed->encode($bleesed_hashref_or_arrayref)
-  # if need, call allow_blessed
-
-Note that it was C<toJson> in old version, but now not C<toJson> but C<TO_JSON>.
-
-=back
-
-=head1 TODO
-
-=over
-
-=item example programs
-
-=back
-
-=head1 THREADS
-
-No test with JSON::PP. If with JSON::XS, See to L<JSON::XS/THREADS>.
-
-
-=head1 BUGS
-
-Please report bugs relevant to C<JSON> to E<lt>makamaka[at]cpan.orgE<gt>.
-
-
-=head1 SEE ALSO
-
-Most of the document is copied and modified from JSON::XS doc.
-
-L<JSON::XS>, L<JSON::PP>
-
-C<RFC4627>(L<http://www.ietf.org/rfc/rfc4627.txt>)
-
-=head1 AUTHOR
-
-Makamaka Hannyaharamitu, E<lt>makamaka[at]cpan.orgE<gt>
-
-JSON::XS was written by  Marc Lehmann <schmorp[at]schmorp.de>
-
-The relese of this new version owes to the courtesy of Marc Lehmann.
-
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 2005-2011 by Makamaka Hannyaharamitu
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-
diff --git a/verilog/rtl/BrqRV_EB1/tools/Makefile b/verilog/rtl/BrqRV_EB1/tools/Makefile
deleted file mode 100755
index 7fba2df..0000000
--- a/verilog/rtl/BrqRV_EB1/tools/Makefile
+++ /dev/null
@@ -1,217 +0,0 @@
-# SPDX-License-Identifier: Apache-2.0
-# Copyright 2020 MERL Corporation or its affiliates.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-CONF_PARAMS = -set build_axi4
-
-TEST_CFLAGS = -g -O3 -funroll-all-loops
-ABI = -mabi=ilp32 -march=rv32gcv
-
-# Check for RV_ROOT
-ifeq (,$(wildcard ${RV_ROOT}/configs/brqrv.config))
-$(error env var RV_ROOT does not point to a valid dir! Exiting!)
-endif
-
-# Allow snapshot override
-target = default
-snapshot = $(target)
-
-# Allow tool override
-brqrv_CONFIG = ${RV_ROOT}/configs/brqrv.config
-IRUN = xrun
-VCS = vcs
-VLOG = qverilog
-VERILATOR = verilator
-RIVEIRA = riviera
-GCC_PREFIX = riscv64-unknown-elf
-BUILD_DIR = snapshots/${snapshot}
-TBDIR = ${RV_ROOT}/testbench
-
-# Define test name
-TEST = hello_world
-
-# Define test name
-ifneq (,$(wildcard $(TBDIR)/asm/$(TEST).s))
-	TEST_DIR = ${TBDIR}/asm
-else
-ifneq (,$(wildcard $(TBDIR)/asm/$(TEST).c))
-	TEST_DIR = ${TBDIR}/asm
-else
-ifneq (,$(wildcard $(TBDIR)/tests/$(TEST)))
-	TEST_DIR = $(TBDIR)/tests/$(TEST)
-else 
-	TEST_DIR = ${TBDIR}/asm
-endif
-endif
-endif
-HEX_DIR = ${TBDIR}/hex
-
-OFILES = $(TEST).o
-
-ifdef debug
- DEBUG_PLUS = +dumpon
- IRUN_DEBUG = -access +rc
- IRUN_DEBUG_RUN = -input ${RV_ROOT}/testbench/input.tcl
- VCS_DEBUG = -debug_access
- VERILATOR_DEBUG = --trace
- RIVIERA_DEBUG = +access +r
-endif
-
-# provide specific link file
-ifeq (,$(wildcard $(TEST_DIR)/$(TEST).ld))
-	LINK = $(BUILD_DIR)/link.ld
-else
-	LINK = $(TEST_DIR)/$(TEST).ld
-endif
-
-VPATH = $(TEST_DIR) $(BUILD_DIR) $(TBDIR)
-
--include $(TEST_DIR)/$(TEST).mki
-
-
-TBFILES = $(TBDIR)/tb_top.sv $(TBDIR)/ahb_sif.sv
-
-defines  = $(BUILD_DIR)/common_defines.vh
-defines += ${RV_ROOT}/design/include/eb1_def.sv
-defines += $(BUILD_DIR)/eb1_pdef.vh
-includes = -I${BUILD_DIR}
-
-# CFLAGS for verilator generated Makefiles. Without -std=c++11 it
-# complains for `auto` variables
-CFLAGS += "-std=c++11"
-
-# Optimization for better performance; alternative is nothing for
-# slower runtime (faster compiles) -O2 for faster runtime (slower
-# compiles), or -O for balance.
-VERILATOR_MAKE_FLAGS = OPT_FAST="-Os"
-
-# Targets
-all: clean verilator
-
-clean:
-	rm -rf *.log *.s *.hex *.dis *.tbl irun* vcs* simv* snapshots brqrv* \
-	verilator* *.exe obj* *.o ucli.key vc_hdrs.h csrc *.csv work\
-	work dataset.asdb  library.cfg vsimsa.cfg  riviera-build wave.asdb
-
-
-
-############ Model Builds ###############################
-
-# If define files do not exist, then run brqrv.config.
-${BUILD_DIR}/defines.h:
-	BUILD_PATH=${BUILD_DIR} ${RV_ROOT}/configs/brqrv.config -target=$(target) $(CONF_PARAMS)
-
-verilator-build: ${TBFILES} ${BUILD_DIR}/defines.h test_tb_top.cpp
-	echo '`undef RV_ASSERT_ON' >> ${BUILD_DIR}/common_defines.vh
-	$(VERILATOR)  --cc -CFLAGS ${CFLAGS} $(defines) \
-	  $(includes) -I${RV_ROOT}/testbench -f ${RV_ROOT}/testbench/flist \
-	  -Wno-WIDTH -Wno-UNOPTFLAT ${TBFILES} --top-module tb_top \
-	  -exe test_tb_top.cpp --autoflush $(VERILATOR_DEBUG)
-	cp ${RV_ROOT}/testbench/test_tb_top.cpp obj_dir/
-	$(MAKE) -j -e -C obj_dir/ -f Vtb_top.mk $(VERILATOR_MAKE_FLAGS)
-	touch verilator-build
-
-vcs-build: ${TBFILES} ${BUILD_DIR}/defines.h
-	$(VCS) -full64 -assert svaext -sverilog +define+RV_OPENSOURCE \
-	  +error+500 +incdir+${RV_ROOT}/design/lib \
-	  +incdir+${RV_ROOT}/design/include ${BUILD_DIR}/common_defines.vh \
-	  +incdir+$(BUILD_DIR)  +libext+.v $(defines) \
-	  -f ${RV_ROOT}/testbench/flist ${TBFILES} -l vcs.log
-	touch vcs-build
-
-irun-build: ${TBFILES} ${BUILD_DIR}/defines.h
-	$(IRUN) -64bit -elaborate $(IRUN_DEBUG) -q -sv -sysv  -nowarn CUVIHR \
-	  -xmlibdirpath . -xmlibdirname brqrv.build \
-	  -incdir ${RV_ROOT}/design/lib -incdir ${RV_ROOT}/design/include \
-	  -vlog_ext +.vh+.h $(defines) -incdir $(BUILD_DIR) \
-	  -f ${RV_ROOT}/testbench/flist -top tb_top  ${TBFILES} \
-	  -I${RV_ROOT}/testbench -elaborate  -snapshot ${snapshot} $(profile)
-	touch irun-build
-
-riviera-build: ${TBFILES} ${BUILD_DIR}/defines.h
-	vlib work
-	vlog -work work \
-		-err VCP2694 W1 \
-		+incdir+${RV_ROOT}/design/lib \
-		+incdir+${RV_ROOT}/design/include \
-		+incdir+${BUILD_DIR} \
-		-y ${RV_ROOT}/design/lib +libext+.v+.vh \
-		$(defines) \
-		-f ${RV_ROOT}/testbench/flist \
-		${TBFILES}
-	touch riviera-build
-
-############ TEST Simulation ###############################
-
-verilator: program.hex verilator-build
-	./obj_dir/Vtb_top
-
-irun: program.hex irun-build
-	$(IRUN) -64bit -abvglobalfailurelimit 1 +lic_queue -licqueue \
-	  -status -xmlibdirpath . -xmlibdirname brqrv.build \
-	  -snapshot ${snapshot} -r $(snapshot) $(IRUN_DEBUG_RUN) $(profile)
-
-vcs: program.hex vcs-build
-	./simv $(DEBUG_PLUS) +vcs+lic+wait  -l vcs.log
-
-vlog: program.hex ${TBFILES} ${BUILD_DIR}/defines.h
-	$(VLOG) -l vlog.log -sv -mfcu +incdir+${BUILD_DIR}+${RV_ROOT}/design/include+${RV_ROOT}/design/lib\
-        $(defines) -f ${RV_ROOT}/testbench/flist ${TBFILES}  -R +nowarn3829 +nowarn2583 ${DEBUG_PLUS}
-
-riviera: program.hex riviera-build
-	vsim -c -lib work ${DEBUG_PLUS} ${RIVIERA_DEBUG} tb_top -do "run -all; exit" -l riviera.log
-
-
-
-############ TEST build ###############################
-    
-ifeq ($(shell which $(GCC_PREFIX)-gcc 2> /dev/null),)
-program.hex: ${BUILD_DIR}/defines.h
-	@echo " !!! No $(GCC_PREFIX)-gcc in path, using canned hex files !!"
-	cp ${HEX_DIR}/$(TEST).hex program.hex
-else
-ifneq (,$(wildcard $(TEST_DIR)/$(TEST).makefile))
-program.hex:
-	@echo Building $(TEST) via $(TEST_DIR)/$(TEST).makefile
-	$(MAKE) -f $(TEST_DIR)/$(TEST).makefile
-else
-program.hex: $(OFILES) $(LINK)
-	@echo Building $(TEST)
-	$(GCC_PREFIX)-gcc -Wl,-m,elf32lriscv -Wl,--discard-none -T$(LINK) -o $(TEST).exe $(OFILES) -nostartfiles -nostdlib $(TEST_LIBS)
-	$(GCC_PREFIX)-objcopy -O verilog $(TEST).exe program.hex
-	$(GCC_PREFIX)-objcopy -O verilog -j ".text" --change-section-lma ".text"=0x0 --reverse-bytes=4 $(TEST).exe uart.hex 
-	echo '00 00 0F FF ' >> uart.hex
-	$(GCC_PREFIX)-objdump -S  $(TEST).exe > $(TEST).dis
-	@echo Completed building $(TEST)
-
-
-%.o : %.s ${BUILD_DIR}/defines.h
-	$(GCC_PREFIX)-cpp -I${BUILD_DIR}  $<  > $*.cpp.s
-	$(GCC_PREFIX)-as ${ABI} $*.cpp.s -o $@
-
-
-%.o : %.c ${BUILD_DIR}/defines.h
-	$(GCC_PREFIX)-gcc ${includes} ${TEST_CFLAGS} -DCOMPILER_FLAGS="\"${TEST_CFLAGS}\"" ${ABI} -nostdlib -c $< -o $@
-
-endif
-endif
-
-
-help:
-	@echo Make sure the environment variable RV_ROOT is set.
-	@echo Possible targets: verilator vcs irun vlog riviera help clean all verilator-build irun-build vcs-build riviera-build program.hex
-
-.PHONY: help clean verilator vcs irun vlog riviera
-
diff --git a/verilog/rtl/BrqRV_EB1/tools/addassign b/verilog/rtl/BrqRV_EB1/tools/addassign
deleted file mode 100755
index c1b9998..0000000
--- a/verilog/rtl/BrqRV_EB1/tools/addassign
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/perl
-
-use Getopt::Long;
-
-$helpusage = "placeholder";
-
-GetOptions ('in=s'      => \$in,
-            'prefix=s'  => \$prefix) || die("$helpusage");
-
-
-
-@in=`cat $in`;
-
-
-foreach $line (@in) {
-
-    if ($line=~/\#/) { next; }
-
-    if ($line=~/([^=]+)=/) {
-        $sig=$1;
-        $sig=~s/\s+//g;
-        printf("logic $sig;\n");
-    }
-}
-
-foreach $line (@in) {
-
-    if ($line=~/\#/) { next; }
-
-    if ($line=~/([^=]+)=\s*;/) {
-        printf("assign ${prefix}$1 = 1'b0;\n");
-        next;
-    }
-
-    if ($line=~/([^=]+)=\s*\(\s*\);/) {
-        printf("assign ${prefix}$1 = 1'b0;\n");
-        next;
-    }
-
-    if ($line =~ /=/) { printf("assign ${prefix}$line"); }
-    else              { printf("$line"); }
-}
-
-
-exit;
-
diff --git a/verilog/rtl/BrqRV_EB1/tools/coredecode b/verilog/rtl/BrqRV_EB1/tools/coredecode
deleted file mode 100755
index 053f813..0000000
--- a/verilog/rtl/BrqRV_EB1/tools/coredecode
+++ /dev/null
@@ -1,198 +0,0 @@
-#!/usr/bin/perl
-
-use Getopt::Long;
-
-$helpusage = "placeholder";
-
-GetOptions ('legal'  => \$legal,
-            'in=s'   => \$in,
-            'out=s'  => \$out,
-            'view=s' => \$view ) || die("$helpusage");
-
-
-if (!defined($in))  { die("must define -in=input"); }
-if (!defined($out)) { $out="${in}.out"; }
-
-if ($in eq "vector_decode")       { $view="rv32v";  }
-elsif ($in eq "cdecode")   { $view="rv32c";  }
-elsif ($in eq "csrdecode") { $view="csr";  }
-
-if (defined($in)) { printf("in=$in\n"); }
-if (defined($out)) { printf("out=$out\n"); }
-if (defined($view)) { printf("view=$view\n"); }
-
-@in=`cat $in`;
-
-$gather=0;
-
-$TIMEOUT=50;
-
-foreach $line (@in) {
-
-    #printf("$pstate: $line");
-
-    if ($line=~/^\s*\#/) { #printf("skip $line");
-                           next; }
-
-    if ($gather==1) {
-        if ($line=~/(\S+)/) {
-            if ($line=~/}/) { $gather=0; $position=0; next; }
-            $label=$1;
-            $label=~s/,//g;
-            if ($pstate==2) {
-                if (defined($INPUT{$CVIEW}{$label})) { die("input $label already defined"); }
-                $INPUT{$CVIEW}{$label}=$position++;
-                $INPUTLEN{$CVIEW}++;
-                $INPUTSTR{$CVIEW}.=" $label";
-            }
-            elsif ($pstate==3) {
-                if (defined($OUTPUT{$CVIEW}{$label})) { die("output $label already defined"); }
-                $OUTPUT{$CVIEW}{$label}=$position++;
-                $OUTPUTLEN{$CVIEW}++;
-                $OUTPUTSTR{$CVIEW}.=" $label";
-            }
-            else { die("unknown pstate $pstate in gather"); }
-        }
-    }
-
-    if ($line=~/^.definition/) {
-        $pstate=1; next;
-    }
-     if ($pstate==1) {  # definition
-        if ($line!~/^.output/) {
-            if ($line=~/(\S+)\s*=\s*(\S+)/) {
-                $key=$1; $value=$2;
-                $value=~s/\./-/g;
-                $value=~s/\[//g;
-                $value=~s/\]//g;
-                $DEFINITION{$key}=$value;
-            }
-        }
-        else { $pstate=2; next; }
-    }
-
-    if ($line=~/^.input/) {
-        $pstate=2; next;
-    }
-
-    if ($pstate==2) {  # input
-        if ($line=~/(\S+)\s*=\s*\{/) {
-            $CVIEW=$1; $gather=1; next;
-        }
-    }
-
-    if ($line=~/^.output/) {
-        $pstate=3; next;
-    }
-
-    if ($pstate==3) {  # output
-        if ($line=~/(\S+)\s*=\s*\{/) {
-            $CVIEW=$1; $gather=1; next;
-        }
-    }
-
-    if ($line=~/^.decode/) {
-        $pstate=4; next;
-    }
-
-   if ($pstate==4) {  # decode
-        if ($line=~/([^\[]+)\[([^\]]+)\]\s*=\s*\{([^\}]+)\}/) {
-            $dview=$1; $inst=$2; $body=$3;
-            $dview=~s/\s+//g;
-            $inst=~s/\s+//g;
-            #printf("$dview $inst $body\n");
-            if ($inst=~/([^\{]+)\{([^-]+)-([^\}]+)\}/) {
-                $base=$1; $lo=$2; $hi=$3;
-                $hi++;
-                for ($i=0; $i<$TIMEOUT && $lo ne $hi; $i++) {
-                    #printf("decode $dview $base$lo\n");
-
-                    $expand=$base.$lo;
-                    if (!defined($DEFINITION{$expand})) { die("could not find instruction definition for inst $expand"); }
-
-                    $DECODE{$dview}{$expand}=$body;
-                    $lo++;
-                }
-                if ($i == $TIMEOUT) { die("timeout in decode expansion"); }
-
-            }
-            else {
-                if (!defined($DEFINITION{$inst})) { die("could not find instruction definition for inst $inst"); }
-                $DECODE{$dview}{$inst}=$body;
-            }
-        }
-   }
-
-}
-
-
-#printf("view $view len %d\n",$OUTPUTLEN{$view});
-
-#printf("$OUTPUTSTR{$view}\n");
-
-
-# need to switch this somehow based on 16/32
-printf(".i %d\n",$INPUTLEN{$view});
-
-if (defined($legal)) {
-    printf(".o 1\n");
-}
-else {
-    printf(".o %d\n",$OUTPUTLEN{$view});
-}
-
-printf(".ilb %s\n",$INPUTSTR{$view});
-
-if (defined($legal)) {
-    printf(".ob legal\n");
-}
-else {
-    printf(".ob %s\n",$OUTPUTSTR{$view});
-}
-
-if (defined($legal)) {
-    printf(".type fd\n");
-}
-else {
-    printf(".type fr\n");
-}
-
-$DEFAULT_TEMPLATE='0'x$OUTPUTLEN{$view};
-
-foreach $inst (sort keys %{ $DECODE{$view} }) {
-
-    $body=$DECODE{$view}{$inst};
-    @sigs=split(' ',$body);
-
-    $template=$DEFAULT_TEMPLATE;
-    foreach $sig (@sigs) {
-        if (!defined($OUTPUT{$view}{$sig})) { die("could not find output definition for sig $sig in view $view"); }
-        $position=$OUTPUT{$view}{$sig};
-        substr($template,$position,1,1);
-    }
-
-#    if (!defined($DEFINITION{$inst})) { die("could not find instruction defintion for inst $inst"); }
-
-    printf("# $inst\n");
-    if (defined($legal)) {
-        printf("$DEFINITION{$inst} 1\n");
-    }
-    else {
-        printf("$DEFINITION{$inst} $template\n");
-    }
-
-}
-
-
-exit;
-
-foreach $inst (sort keys %DEFINITION) {
-    $value=$DEFINITION{$inst};
-    printf("%-10s = $value\n",$inst);
-}
-
-
-foreach $sig (sort keys %{ $OUTPUT{$view} }) {
-    $position=$OUTPUT{$view}{$sig};
-    printf("$sig $position\n");
-}
diff --git a/verilog/rtl/BrqRV_EB1/tools/picmap b/verilog/rtl/BrqRV_EB1/tools/picmap
deleted file mode 100755
index 06df0d5..0000000
--- a/verilog/rtl/BrqRV_EB1/tools/picmap
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/perl
-
-use Getopt::Long;
-
-use integer;
-
-$helpusage = "placeholder";
-
-GetOptions ('total_int=s'       => \$total_int)|| die("$helpusage");
-
-$LEN=15;
-
-#printf("logic [2:0] mask;\n");
-
-printf("// mask[3:0] = { 4'b1000 - 30b mask,4'b0100 - 31b mask, 4'b0010 - 28b mask, 4'b0001 - 32b mask }\n");
-printf("always_comb begin\n");
-printf("  case \(address[14:0]\)\n");
-printf("    15'b011000000000000 : mask[3:0] = 4'b0100;\n");
-for ($i=1; $i<=$total_int; $i++) {
-    $j=hex("4000");
-    printf("    15'b%s : mask[3:0] = 4'b1000;\n",d2b($j+$i*4));
-}
-for ($i=1; $i<=$total_int; $i++) {
-    $j=hex("2000");
-    printf("    15'b%s : mask[3:0] = 4'b0100;\n",d2b($j+$i*4));
-}
-for ($i=1; $i<=$total_int; $i++) {
-    $j=hex("0");
-    printf("    15'b%s : mask[3:0] = 4'b0010;\n",d2b($j+$i*4));
-}
-    printf("    %-17s : mask[3:0] = 4'b0001;\n","default");
-printf("  endcase\n");
-printf("end\n");
-
-
-sub b2d {
-    my ($v) = @_;
-
-    $v = oct("0b" . $v);
-
-    return($v);
-}
-
-sub d2b {
-    my ($v) = @_;
-
-    my $repeat;
-
-    $v = sprintf "%b",$v;
-    if (length($v)<$LEN) {
-        $repeat=$LEN-length($v);
-        $v="0"x$repeat.$v;
-    }
-    elsif (length($v)>$LEN) {
-        $v=substr($v,length($v)-$LEN,$LEN);
-    }
-
-    return($v);
-}
diff --git a/verilog/rtl/BrqRV_EB1/tools/smalldiv b/verilog/rtl/BrqRV_EB1/tools/smalldiv
deleted file mode 100755
index 48495be..0000000
--- a/verilog/rtl/BrqRV_EB1/tools/smalldiv
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/usr/bin/perl
-
-use Getopt::Long;
-
-use integer;
-
-$helpusage = "placeholder";
-
-GetOptions ('len=s'       => \$len,
-            'num=s'       => \$num,
-            'den=s'       => \$den,
-            'skip'   => \$skip)  || die("$helpusage");
-
-if (!defined($len)) { $len=8; }
-$LEN=$len;
-
-$n=d2b($num);  # numerator - quotient
-$m=d2b($den);  # denominator - divisor
-
-
-printf(".i 8\n");
-printf(".o 4\n");
-printf(".ilb q_ff[3] q_ff[2] q_ff[1] q_ff[0] m_ff[3] m_ff[2] m_ff[1] m_ff[0]\n");
-printf(".ob smallnum[3] smallnum[2] smallnum[1] smallnum[0]\n");
-printf(".type fr\n");
-for ($q=0; $q<16; $q++) {
-    for ($m=0; $m<16; $m++) {
-        if ($m==0) { next; }
-        $result=int($q/$m);
-        printf("%s %s %s\n",d2bl($q,4),d2bl($m,4),d2bl($result,4));
-    }
-}
-
-exit;
-
-#$LEN=length($n);
-
-$a="0"x$LEN;
-$q=$n;
-
-#printf("n=%s, m=%s\n",$n,$m);
-#printf("a=%s, q=%s\n",$a,$q);
-
-for ($i=1; $i<=$LEN; $i++) {
-
-    #printf("iteration $n:\n");
-
-    printf("$i: a=%s q=%s\n",$a,$q);
-
-
-    $signa = substr($a,0,1);
-
-
-    $a = substr($a.$q,1,$LEN);  # new a with q shifted in
-
-    if ($signa==0) { $a=b2d($a)-b2d($m); }
-    else           { $a=b2d($a)+b2d($m); }
-
-    $a=d2b($a);
-
-
-    $signa = substr($a,0,1);
-    if ($signa==0) { $q=substr($q,1,$LEN-1)."1"; }
-    else           { $q=substr($q,1,$LEN-1)."0"; }
-
-}
-
-
-#printf("a=$a\n");
-$signa = substr($a,0,1);
-if ($signa==1 && !defined($skip)) {
-    printf("correction:\n");
-    $a=b2d($a)+b2d($m);
-    $a=d2b($a);
-}
-#printf("a=$a\n");
-printf("%d / %d = %d R %d ",b2d($n),b2d($m),b2d($q),b2d($a));
-if ($a eq $n) { printf("-> remainder equal numerator\n"); }
-else          { printf("\n"); }
-
-sub b2d {
-    my ($v) = @_;
-
-    $v = oct("0b" . $v);
-
-    return($v);
-}
-
-sub d2b {
-    my ($v) = @_;
-
-    my $repeat;
-
-    $v = sprintf "%b",$v;
-    if (length($v)<$LEN) {
-        $repeat=$LEN-length($v);
-        $v="0"x$repeat.$v;
-    }
-    elsif (length($v)>$LEN) {
-        $v=substr($v,length($v)-$LEN,$LEN);
-    }
-
-    return($v);
-}
-
-sub d2bl {
-    my ($v,$LEN) = @_;
-
-    my $repeat;
-
-    $v = sprintf "%b",$v;
-    if (length($v)<$LEN) {
-        $repeat=$LEN-length($v);
-        $v="0"x$repeat.$v;
-    }
-    elsif (length($v)>$LEN) {
-        $v=substr($v,length($v)-$LEN,$LEN);
-    }
-
-    return($v);
-}
diff --git a/verilog/rtl/BrqRV_EB1/tools/unrollforverilator b/verilog/rtl/BrqRV_EB1/tools/unrollforverilator
deleted file mode 100755
index 444b7df..0000000
--- a/verilog/rtl/BrqRV_EB1/tools/unrollforverilator
+++ /dev/null
@@ -1,169 +0,0 @@
-#!/usr/bin/perl
-#use strict;
-#use warnings;
-
-my $RV_ROOT = $ENV{RV_ROOT};
-
-my $TOTAL_INT=$ARGV[0];
-print "// argv=".$ARGV[0]."\n";
-my $NUM_LEVELS;
-if($TOTAL_INT==2){$NUM_LEVELS=1;}
-elsif ($TOTAL_INT==4){$NUM_LEVELS=2;}
-elsif ($TOTAL_INT==8){$NUM_LEVELS=3;}
-elsif ($TOTAL_INT==16){$NUM_LEVELS=4;}
-elsif ($TOTAL_INT==32){$NUM_LEVELS=5;}
-elsif ($TOTAL_INT==64){$NUM_LEVELS=6;}
-elsif ($TOTAL_INT==128){$NUM_LEVELS=7;}
-elsif ($TOTAL_INT==256){$NUM_LEVELS=8;}
-elsif ($TOTAL_INT==512){$NUM_LEVELS=9;}
-elsif ($TOTAL_INT==1024){$NUM_LEVELS=10;}
-else {$NUM_LEVELS=int(log($TOTAL_INT)/log(2))+1;}
-print ("// TOTAL_INT=".$TOTAL_INT." NUM_LEVELS=".$NUM_LEVELS."\n");
-$next_level = 1;
-print ("`ifdef RV_PIC_2CYCLE\n");
-if($TOTAL_INT > 2){
-print ("// LEVEL0\n");
-print ("logic [TOTAL_INT+2:0] [INTPRIORITY_BITS-1:0] level_intpend_w_prior_en_".$next_level.";\n");
-print ("logic [TOTAL_INT+2:0] [ID_BITS-1:0] level_intpend_id_".$next_level.";\n");
-print ("    for (m=0; m<=(TOTAL_INT)/(2**(".$next_level.")) ; m++) begin : COMPARE0\n");
-print ("       if ( m == (TOTAL_INT)/(2**(".$next_level."))) begin \n");
-print ("            assign level_intpend_w_prior_en_".$next_level."[m+1] = '0 ;\n");
-print ("            assign level_intpend_id_".$next_level."[m+1]         = '0 ;\n");
-print ("       end\n");
-print ("       cmp_and_mux  #(\n");
-print ("                      .ID_BITS(ID_BITS),\n");
-print ("                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l".$next_level." (\n");
-print ("                      .a_id(level_intpend_id[0][2*m]),\n");
-print ("                      .a_priority(level_intpend_w_prior_en[0][2*m]),\n");
-print ("                      .b_id(level_intpend_id[0][2*m+1]),\n");
-print ("                      .b_priority(level_intpend_w_prior_en[0][2*m+1]),\n");
-print ("                      .out_id(level_intpend_id_".$next_level."[m]),\n");
-print ("                      .out_priority(level_intpend_w_prior_en_".$next_level."[m])) ;\n");
-print ("        \n");
-print (" end\n\n");
-for (my $l=1; $l<int($NUM_LEVELS/2) ; $l++) {
-$next_level = $l+1;
-print ("// LEVEL".$l."\n");
-print ("logic [TOTAL_INT+2:0] [INTPRIORITY_BITS-1:0] level_intpend_w_prior_en_".$next_level.";\n");
-print ("logic [TOTAL_INT+2:0] [ID_BITS-1:0] level_intpend_id_".$next_level.";\n");
-print ("    for (m=0; m<=(TOTAL_INT)/(2**(".$next_level.")) ; m++) begin : COMPARE$l\n");
-print ("       if ( m == (TOTAL_INT)/(2**(".$next_level."))) begin \n");
-print ("            assign level_intpend_w_prior_en_".$next_level."[m+1] = '0 ;\n");
-print ("            assign level_intpend_id_".$next_level."[m+1]         = '0 ;\n");
-print ("       end\n");
-print ("       cmp_and_mux  #(\n");
-print ("                      .ID_BITS(ID_BITS),\n");
-print ("                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l".$next_level." (\n");
-print ("                      .a_id(level_intpend_id_".$l."[2*m]),\n");
-print ("                      .a_priority(level_intpend_w_prior_en_".$l."[2*m]),\n");
-print ("                      .b_id(level_intpend_id_".$l."[2*m+1]),\n");
-print ("                      .b_priority(level_intpend_w_prior_en_".$l."[2*m+1]),\n");
-print ("                      .out_id(level_intpend_id_".$next_level."[m]),\n");
-print ("                      .out_priority(level_intpend_w_prior_en_".$next_level."[m])) ;\n");
-print ("        \n");
-print (" end\n\n");
-}
-### ADD FLOP STAGE
-print ("for (i=0; i<=TOTAL_INT/2**(NUM_LEVELS/2) ; i++) begin : MIDDLE_FLOPS\n");
-print ("  rvdff #(INTPRIORITY_BITS) leveb1_intpend_prior_reg  (.*, .din (level_intpend_w_prior_en_".$next_level."[i]), .dout(l2_intpend_w_prior_en_ff[i]),  .clk(active_clk));\n");
-print ("  rvdff #(ID_BITS)          leveb1_intpend_id_reg     (.*, .din (level_intpend_id_".$next_level."[i]),         .dout(l2_intpend_id_ff[i]),          .clk(active_clk));\n");
-print ("end\n");
-}else{
-print ("for (i=0; i<=TOTAL_INT/2**(NUM_LEVELS/2) ; i++) begin : MIDDLE_FLOPS\n");
-print ("  rvdff #(INTPRIORITY_BITS) leveb1_intpend_prior_reg  (.*, .din (level_intpend_w_prior_en[0][i]), .dout(l2_intpend_w_prior_en_ff[i]),  .clk(active_clk));\n");
-print ("  rvdff #(ID_BITS)          leveb1_intpend_id_reg     (.*, .din (level_intpend_id[0][i]),         .dout(l2_intpend_id_ff[i]),          .clk(active_clk));\n");
-print ("end\n");
-}
-### END FLOP STAGE
-$next_level = int($NUM_LEVELS/2) + 1;
-my $tmp = int($NUM_LEVELS/2);
-print ("// LEVEL".$tmp."\n");
-print ("logic [TOTAL_INT+2:0] [INTPRIORITY_BITS-1:0] levelx_intpend_w_prior_en_".$next_level.";\n");
-print ("logic [TOTAL_INT+2:0] [ID_BITS-1:0] levelx_intpend_id_".$next_level.";\n");
-print ("    for (m=0; m<=(TOTAL_INT)/(2**(".$next_level.")) ; m++) begin : COMPARE$tmp\n");
-print ("       if ( m == (TOTAL_INT)/(2**(".$next_level."))) begin \n");
-print ("            assign levelx_intpend_w_prior_en_".$next_level."[m+1] = '0 ;\n");
-print ("            assign levelx_intpend_id_".$next_level."[m+1]         = '0 ;\n");
-print ("       end\n");
-print ("       cmp_and_mux  #(\n");
-print ("                      .ID_BITS(ID_BITS),\n");
-print ("                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l".$next_level." (\n");
-print ("                      .a_id(levelx_intpend_id[$tmp][2*m]),\n");
-print ("                      .a_priority(levelx_intpend_w_prior_en[$tmp][2*m]),\n");
-print ("                      .b_id(levelx_intpend_id[$tmp][2*m+1]),\n");
-print ("                      .b_priority(levelx_intpend_w_prior_en[$tmp][2*m+1]),\n");
-print ("                      .out_id(levelx_intpend_id_".$next_level."[m]),\n");
-print ("                      .out_priority(levelx_intpend_w_prior_en_".$next_level."[m])) ;\n");
-print ("        \n");
-print (" end\n\n");
-for (my $l=int($NUM_LEVELS/2)+1; $l<$NUM_LEVELS ; $l++) {
-$next_level = $l+1;
-print ("// LEVEL".$l."\n");
-print ("logic [TOTAL_INT+2:0] [INTPRIORITY_BITS-1:0] levelx_intpend_w_prior_en_".$next_level.";\n");
-print ("logic [TOTAL_INT+2:0] [ID_BITS-1:0] levelx_intpend_id_".$next_level.";\n");
-print ("    for (m=0; m<=(TOTAL_INT)/(2**(".$next_level.")) ; m++) begin : COMPARE$l\n");
-print ("       if ( m == (TOTAL_INT)/(2**(".$next_level."))) begin \n");
-print ("            assign levelx_intpend_w_prior_en_".$next_level."[m+1] = '0 ;\n");
-print ("            assign levelx_intpend_id_".$next_level."[m+1]         = '0 ;\n");
-print ("       end\n");
-print ("       cmp_and_mux  #(\n");
-print ("                      .ID_BITS(ID_BITS),\n");
-print ("                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l".$next_level." (\n");
-print ("                      .a_id(levelx_intpend_id_".$l."[2*m]),\n");
-print ("                      .a_priority(levelx_intpend_w_prior_en_".$l."[2*m]),\n");
-print ("                      .b_id(levelx_intpend_id_".$l."[2*m+1]),\n");
-print ("                      .b_priority(levelx_intpend_w_prior_en_".$l."[2*m+1]),\n");
-print ("                      .out_id(levelx_intpend_id_".$next_level."[m]),\n");
-print ("                      .out_priority(levelx_intpend_w_prior_en_".$next_level."[m])) ;\n");
-print ("        \n");
-print (" end\n\n");
-}
-print ("assign claimid_in[ID_BITS-1:0]                      =      levelx_intpend_id_".$next_level."[0] ;   // This is the last level output\n");
-print ("assign selected_int_priority[INTPRIORITY_BITS-1:0]  =      levelx_intpend_w_prior_en_".$next_level."[0] ;\n");
-print ("`else\n");
-$next_level = 1;
-print ("// LEVEL0\n");
-print ("logic [TOTAL_INT+2:0] [INTPRIORITY_BITS-1:0] level_intpend_w_prior_en_".$next_level.";\n");
-print ("logic [TOTAL_INT+2:0] [ID_BITS-1:0] level_intpend_id_".$next_level.";\n");
-print ("    for (m=0; m<=(TOTAL_INT)/(2**(".$next_level.")) ; m++) begin : COMPARE0\n");
-print ("       if ( m == (TOTAL_INT)/(2**(".$next_level."))) begin \n");
-print ("            assign level_intpend_w_prior_en_".$next_level."[m+1] = '0 ;\n");
-print ("            assign level_intpend_id_".$next_level."[m+1]         = '0 ;\n");
-print ("       end\n");
-print ("       cmp_and_mux  #(\n");
-print ("                      .ID_BITS(ID_BITS),\n");
-print ("                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l".$next_level." (\n");
-print ("                      .a_id(level_intpend_id[0][2*m]),\n");
-print ("                      .a_priority(level_intpend_w_prior_en[0][2*m]),\n");
-print ("                      .b_id(level_intpend_id[0][2*m+1]),\n");
-print ("                      .b_priority(level_intpend_w_prior_en[0][2*m+1]),\n");
-print ("                      .out_id(level_intpend_id_".$next_level."[m]),\n");
-print ("                      .out_priority(level_intpend_w_prior_en_".$next_level."[m])) ;\n");
-print ("        \n");
-print (" end\n\n");
-for (my $l=1; $l<$NUM_LEVELS ; $l++) {
-$next_level = $l+1;
-print ("// LEVEL".$l."\n");
-print ("logic [TOTAL_INT+2:0] [INTPRIORITY_BITS-1:0] level_intpend_w_prior_en_".$next_level.";\n");
-print ("logic [TOTAL_INT+2:0] [ID_BITS-1:0] level_intpend_id_".$next_level.";\n");
-print ("    for (m=0; m<=(TOTAL_INT)/(2**(".$next_level.")) ; m++) begin : COMPARE$l\n");
-print ("       if ( m == (TOTAL_INT)/(2**(".$next_level."))) begin \n");
-print ("            assign level_intpend_w_prior_en_".$next_level."[m+1] = '0 ;\n");
-print ("            assign level_intpend_id_".$next_level."[m+1]         = '0 ;\n");
-print ("       end\n");
-print ("       cmp_and_mux  #(\n");
-print ("                      .ID_BITS(ID_BITS),\n");
-print ("                      .INTPRIORITY_BITS(INTPRIORITY_BITS)) cmp_l".$next_level." (\n");
-print ("                      .a_id(level_intpend_id_".$l."[2*m]),\n");
-print ("                      .a_priority(level_intpend_w_prior_en_".$l."[2*m]),\n");
-print ("                      .b_id(level_intpend_id_".$l."[2*m+1]),\n");
-print ("                      .b_priority(level_intpend_w_prior_en_".$l."[2*m+1]),\n");
-print ("                      .out_id(level_intpend_id_".$next_level."[m]),\n");
-print ("                      .out_priority(level_intpend_w_prior_en_".$next_level."[m])) ;\n");
-print ("        \n");
-print (" end\n\n");
-}
-print ("assign claimid_in[ID_BITS-1:0]                      =      level_intpend_id_".$next_level."[0] ;   // This is the last level output\n");
-print ("assign selected_int_priority[INTPRIORITY_BITS-1:0]  =      level_intpend_w_prior_en_".$next_level."[0] ;\n");
-print ("`endif\n");
-
diff --git a/verilog/rtl/BrqRV_EB1/tools/vivado.tcl b/verilog/rtl/BrqRV_EB1/tools/vivado.tcl
deleted file mode 100644
index f3c5ab3..0000000
--- a/verilog/rtl/BrqRV_EB1/tools/vivado.tcl
+++ /dev/null
@@ -1,3 +0,0 @@
-set_property is_global_include true [get_files config/common_defines.vh]
-set_property is_global_include true  [get_files config/eb1_pdef.vh]
-set_property file_type SystemVerilog [get_files config/eb1_pdef.vh]
diff --git a/verilog/rtl/uprj_netlists.v b/verilog/rtl/uprj_netlists.v
index 6742e64..432879e 100644
--- a/verilog/rtl/uprj_netlists.v
+++ b/verilog/rtl/uprj_netlists.v
@@ -23,12 +23,9 @@
     `default_nettype wire
     `include "gl/user_project_wrapper.v"
     `include "gl/user_proj_example.v"
-    //`include "BrqRV_EB1/design/openlane/powered_netlist.v"   
-    //`include "BrqRV_EB1/design/sky130_sram_1kbyte_1rw1r_32x256_8.v"
 `else
     `include "user_project_wrapper.v"
     `include "user_proj_example.v"
-    `include "BrqRV_EB1/design/openlane/BrqRV_EB1.v"
-    //`include "BrqRV_EB1/design/openlane/powered_netlist.v"   
-    `include "BrqRV_EB1/design/sky130_sram_1kbyte_1rw1r_32x256_8.v"
+    `include "BrqRV_EB1/BrqRV_EB1.v"
+    `include "BrqRV_EB1/sky130_sram_1kbyte_1rw1r_32x256_8.v"
 `endif