Merge "OSS copyright header cleanup"
diff --git a/hdl/chisel/BUILD b/hdl/chisel/BUILD
index fb0f1ee..11c0dcd 100644
--- a/hdl/chisel/BUILD
+++ b/hdl/chisel/BUILD
@@ -73,6 +73,16 @@
 )
 
 chisel_cc_library(
+    name = "l1dcachebank_cc_library",
+    chisel_lib = ":kelvin",
+    emit_class = "kelvin.EmitL1DCacheBank",
+    module_name = "L1DCacheBank",
+    verilog_deps = [
+        "//hdl/verilog:sram_1rw_256x288",
+    ],
+)
+
+chisel_cc_library(
     name = "l1icache_cc_library",
     chisel_lib = ":kelvin",
     emit_class = "kelvin.EmitL1ICache",
diff --git a/tests/verilator_sim/BUILD b/tests/verilator_sim/BUILD
index f5139c2..c47127e 100644
--- a/tests/verilator_sim/BUILD
+++ b/tests/verilator_sim/BUILD
@@ -92,6 +92,21 @@
 )
 
 cc_test(
+    name = "l1dcachebank_tb",
+    srcs = [
+        "kelvin/l1dcache_tb.cc",
+    ],
+    defines = [
+        "L1DCACHEBANK",
+    ],
+    deps = [
+        ":kelvin_if",
+        ":sim_libs",
+        "//hdl/chisel:l1dcachebank_cc_library",
+    ],
+)
+
+cc_test(
     name = "l1icache_tb",
     srcs = [
         "kelvin/l1icache_tb.cc",
diff --git a/tests/verilator_sim/kelvin/l1dcache_tb.cc b/tests/verilator_sim/kelvin/l1dcache_tb.cc
index cb901d1..c305fbf 100644
--- a/tests/verilator_sim/kelvin/l1dcache_tb.cc
+++ b/tests/verilator_sim/kelvin/l1dcache_tb.cc
@@ -18,6 +18,7 @@
 #include "VL1DCache.h"
 constexpr int kDBusBankAdj = 0;
 #else
+#include "VL1DCacheBank.h"
 constexpr int kDBusBankAdj = 1;
 #endif
 
@@ -135,11 +136,13 @@
         p_wdata[i] = io_dbus_wdata.read().get_word(i);
       }
       const uint32_t linemask = kVLenB - 1;
+#ifdef L1DCACHEBANK
+      const uint32_t linebase = addr & ~linemask;
+#endif
       for (int i = 0; i < size; ++i, ++addr) {
         const uint32_t lineoffset = addr & linemask;
         if (io_dbus_wmask.read().get_bit(lineoffset)) {
 #ifdef L1DCACHEBANK
-          const uint32_t linebase = addr & ~linemask;
           WriteBus(linebase + lineoffset, wdata[lineoffset]);
 #else
           WriteBus(addr, wdata[lineoffset]);
@@ -375,10 +378,12 @@
     const uint32_t laddr = addr & kLineBase;
     const uint32_t loffset = addr & kLineOffset;
     const uint32_t doffset = addr & (outsz - 1);
+#ifndef L1DCACHEBANK
     uint32_t start = addr;
     uint32_t end = std::min(addr + size, laddr + kLineSize);
     int size0 = end - start;
     int size1 = size - size0;
+#endif
 
     memset(data, 0xCC, outsz);
 #ifdef L1DCACHEBANK