Merge "Update systemc library build file"
diff --git a/tests/verilator_sim/BUILD b/tests/verilator_sim/BUILD
index 5820f32..b0216ce 100644
--- a/tests/verilator_sim/BUILD
+++ b/tests/verilator_sim/BUILD
@@ -39,7 +39,21 @@
 )
 
 cc_binary(
+    name = "kelvin_tb",
+    srcs = [
+        "matcha/kelvin_if.h",
+        "matcha/kelvin_tb.cc",
+    ],
+    deps = [
+        ":kelvin_if",
+        ":sim_libs",
+        "//hdl/chisel:kelvin_cc_library",
+    ],
+)
+
+cc_test(
     name = "dbus2axi_tb",
+    size = "small",
     srcs = [
         "kelvin/dbus2axi_tb.cc",
     ],
@@ -49,7 +63,7 @@
     ],
 )
 
-cc_binary(
+cc_test(
     name = "l1dcache_tb",
     srcs = [
         "kelvin/l1dcache_tb.cc",
@@ -61,8 +75,9 @@
     ],
 )
 
-cc_binary(
+cc_test(
     name = "l1icache_tb",
+    size = "small",
     srcs = [
         "kelvin/l1icache_tb.cc",
     ],
@@ -100,8 +115,9 @@
     ],
 )
 
-cc_binary(
+cc_test(
     name = "vcmdq_tb",
+    size = "small",
     srcs = [
         "kelvin/vcmdq_tb.cc",
     ],
@@ -113,8 +129,9 @@
     ],
 )
 
-cc_binary(
+cc_test(
     name = "vconvalu_tb",
+    size = "small",
     srcs = [
         "kelvin/vconvalu_tb.cc",
     ],
@@ -127,6 +144,7 @@
 
 cc_test(
     name = "vconvctrl_tb",
+    size = "small",
     srcs = [
         "kelvin/vconvctrl_tb.cc",
     ],
@@ -140,6 +158,7 @@
 
 cc_test(
     name = "vdecodeinstruction_tb",
+    size = "small",
     srcs = [
         "kelvin/vdecodeinstruction_tb.cc",
     ],
@@ -153,6 +172,7 @@
 
 cc_test(
     name = "vdecode_tb",
+    size = "small",
     srcs = [
         "kelvin/vdecode_tb.cc",
     ],
@@ -166,6 +186,7 @@
 
 cc_test(
     name = "vldst_tb",
+    size = "small",
     srcs = [
         "kelvin/vldst_tb.cc",
     ],
@@ -179,6 +200,7 @@
 
 cc_test(
     name = "vld_tb",
+    size = "small",
     srcs = [
         "kelvin/vld_tb.cc",
     ],
@@ -190,8 +212,9 @@
     ],
 )
 
-cc_binary(
+cc_test(
     name = "vregfilesegment_tb",
+    size = "small",
     srcs = [
         "kelvin/vregfilesegment_tb.cc",
     ],
@@ -202,7 +225,7 @@
     ],
 )
 
-cc_binary(
+cc_test(
     name = "vregfile_tb",
     srcs = [
         "kelvin/vregfile_tb.cc",
@@ -216,6 +239,7 @@
 
 cc_test(
     name = "vst_tb",
+    size = "small",
     srcs = [
         "kelvin/vst_tb.cc",
     ],
@@ -226,16 +250,3 @@
         "//hdl/chisel:vst_cc_library",
     ],
 )
-
-cc_binary(
-    name = "kelvin_tb",
-    srcs = [
-        "matcha/kelvin_if.h",
-        "matcha/kelvin_tb.cc",
-    ],
-    deps = [
-        ":kelvin_if",
-        ":sim_libs",
-        "//hdl/chisel:kelvin_cc_library",
-    ],
-)
diff --git a/tests/verilator_sim/kelvin/l1dcache_tb.cc b/tests/verilator_sim/kelvin/l1dcache_tb.cc
index 3fea867..88ffec4 100644
--- a/tests/verilator_sim/kelvin/l1dcache_tb.cc
+++ b/tests/verilator_sim/kelvin/l1dcache_tb.cc
@@ -14,11 +14,12 @@
 constexpr int kLineSize = kVector / 8;
 constexpr int kLineBase = ~(kLineSize - 1);
 constexpr int kLineOffset = kLineSize - 1;
+constexpr int kVLenB = kVector / 8;
+constexpr int kVLenW = kVLenB / sizeof(int32_t);
 
-struct L1DCache_tb : Sysc_tb
-{
+struct L1DCache_tb : Sysc_tb {
   sc_out<bool> io_flush_valid;
-  sc_in<bool>  io_flush_ready;
+  sc_in<bool> io_flush_ready;
   sc_out<bool> io_flush_all;
   sc_out<bool> io_flush_clean;
 
@@ -69,12 +70,13 @@
     if (dbus_resp_pipeline_) {
       dbus_resp_pipeline_ = false;
       uint32_t addr = dbus_resp_addr_;
-      int size = dbus_resp_size_;
-      for (int i = 0; i < vlenb_ && size; ++i) {
+      uint32_t size = dbus_resp_size_;
+      for (uint32_t i = 0; i < kVLenB && size; ++i) {
         uint8_t ref = dbus_resp_data_[i];
         uint8_t dut = io_dbus_rdata.read().get_word(i / 4) >> (8 * i);
         if (ref != dut) {
-          printf("DDD(%d) %08x : %02x %02x\n", i, (addr & ~(vlenb_ - 1)) + i, ref, dut);
+          printf("DDD(%u) %08x : %02x %02x\n", i, (addr & ~(kVLenB - 1)) + i,
+                 ref, dut);
         }
         check(ref == dut, "dbus read data");
       }
@@ -83,9 +85,9 @@
     if (dbus_resp_pipeline_) {
       dbus_resp_pipeline_ = false;
       uint32_t addr = dbus_resp_addr_;
-      int size = dbus_resp_size_;
-      for (int j = addr; j < addr + size; ++j) {
-        int i = j & (vlenb_ - 1);
+      uint32_t size = dbus_resp_size_;
+      for (uint32_t j = addr; j < addr + size; ++j) {
+        uint32_t i = j & (kVLenB - 1);
         uint8_t ref = dbus_resp_data_[i];
         uint8_t dut = io_dbus_rdata.read().get_word(i / 4) >> (8 * i);
         check(ref == dut, "dbus read data");
@@ -99,9 +101,9 @@
       dbus_resp_addr_ = io_dbus_addr.read().get_word(0);
       dbus_resp_size_ = io_dbus_size.read().get_word(0);
 #ifdef L1DCACHEBANK
-      ReadBus(dbus_resp_addr_ & kLineBase, vlenb_, dbus_resp_data_);
+      ReadBus(dbus_resp_addr_ & kLineBase, kVLenB, dbus_resp_data_);
 #else
-      ReadBus(dbus_resp_addr_, vlenb_, dbus_resp_data_);
+      ReadBus(dbus_resp_addr_, kVLenB, dbus_resp_data_);
 #endif
       history_t cmd({dbus_resp_addr_});
       history_.write(cmd);
@@ -115,17 +117,17 @@
 
       uint32_t addr = io_dbus_addr.read().get_word(0);
       int size = io_dbus_size.read().get_word(0);
-      uint8_t wdata[vlenb_];
-      uint32_t* p_wdata = (uint32_t*) wdata;
-      for (int i = 0; i < vlenw_; ++i) {
+      uint8_t wdata[kVLenB];
+      uint32_t* p_wdata = reinterpret_cast<uint32_t*>(wdata);
+      for (int i = 0; i < kVLenW; ++i) {
         p_wdata[i] = io_dbus_wdata.read().get_word(i);
       }
-      const uint32_t linemask = vlenb_ - 1;
-      const uint32_t linebase = addr & ~linemask;
+      const uint32_t linemask = kVLenB - 1;
       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]);
@@ -144,12 +146,12 @@
       // Flush controls must not change during handshake.
       flush_count_ = 0;
       flush_valid_ = true;
-      flush_all_   = rand_bool();
+      flush_all_ = rand_bool();
       flush_clean_ = rand_bool();
     }
 
     io_flush_valid = flush_valid_;
-    io_flush_all   = flush_all_;
+    io_flush_all = flush_all_;
     io_flush_clean = flush_clean_;
 
     history_t dbus;
@@ -157,8 +159,10 @@
       bool valid = rand_bool() && !flush_valid_;
       bool write = rand_int(0, 3) == 0;
       bool newaddr = rand_int(0, 3) == 0 || !history_.rand(dbus);
-      uint32_t addr = newaddr ? rand_uint32() : (dbus.addr + rand_int(-vlenb_, vlenb_));
-      addr = std::min(0xffffff00u, addr);  // TODO: avoids a raxi() crash.
+      uint32_t addr =
+          newaddr ? rand_uint32() : (dbus.addr + rand_int(-kVLenB, kVLenB));
+      // TODO(b/295973540): avoids a raxi() crash.
+      addr = std::min(0xffffff00u, addr);
       if (kDBusBankAdj) {
         addr &= 0x7fffffff;
       }
@@ -166,14 +170,14 @@
         addr &= 0x3fff;
       }
 #ifdef L1DCACHEBANK
-      int size = rand_int(1, vlenb_);
+      int size = rand_int(1, kVLenB);
 #else
-      int size = rand_int(0, vlenb_);
+      int size = rand_int(0, kVLenB);
 #endif
       io_dbus_valid = valid;
       io_dbus_write = write;
       io_dbus_addr = addr;
-      io_dbus_adrx = addr + vlenb_;
+      io_dbus_adrx = addr + kVLenB;
       io_dbus_size = size;
       if (valid) {
         dbus_active_ = true;
@@ -184,10 +188,10 @@
       sc_bv<kVector / 8> wmask = 0;
 
       if (write) {
-        for (int i = 0; i < vlenw_; ++i) {
+        for (int i = 0; i < kVLenW; ++i) {
           wdata.set_word(i, rand_uint32());
         }
-        const uint32_t linemask = vlenb_ - 1;
+        const uint32_t linemask = kVLenB - 1;
         const uint32_t lineoffset = addr & linemask;
         const bool all = rand_bool();
         for (int i = 0; i < size; ++i) {
@@ -232,7 +236,7 @@
       sc_bv<kL1DAxiBits> out;
       for (int i = 0; i < axiw_; ++i) {
         uint32_t data;
-        ReadAxi(addr, 4, (uint8_t*) &data);
+        ReadAxi(addr, 4, reinterpret_cast<uint8_t*>(&data));
         out.set_word(i, data);
         addr += 4;
       }
@@ -256,7 +260,7 @@
 
     if (io_axi_write_data_valid && io_axi_write_data_ready) {
       axiwdata_t p;
-      uint32_t* ptr = (uint32_t*) p.data;
+      uint32_t* ptr = reinterpret_cast<uint32_t*>(p.data);
       for (int i = 0; i < axiw_; ++i, ++ptr) {
         ptr[0] = io_axi_write_data_bits_data.read().get_word(i);
       }
@@ -292,7 +296,7 @@
     }
   }
 
-private:
+ private:
   struct history_t {
     uint32_t addr;
   };
@@ -309,11 +313,9 @@
 
   struct axiwdata_t {
     uint8_t data[kL1DAxiBits / 8];
-    bool    mask[kL1DAxiBits / 8];
+    bool mask[kL1DAxiBits / 8];
   };
 
-  const int vlenb_ = kVector / 8;
-  const int vlenw_ = kVector / 32;
   const int axib_ = kL1DAxiBits / 8;
   const int axiw_ = kL1DAxiBits / 32;
 
@@ -334,7 +336,6 @@
   fifo_t<axiwdata_t> wdata_;
   fifo_t<axiwaddr_t> wresp_;
 
-private:
   std::map<uint32_t, uint8_t[kLineSize]> mem_bus_;
   std::map<uint32_t, uint8_t[kLineSize]> mem_axi_;
 
@@ -342,10 +343,9 @@
     const uint32_t paddr = addr & kLineBase;
     if (mem_bus_.find(paddr) == mem_bus_.end()) {
       uint8_t data[kLineSize];
-      uint32_t* p_data = (uint32_t*) data;
+      uint32_t* p_data = reinterpret_cast<uint32_t*>(data);
       for (int i = 0; i < kLineSize / 4; ++i) {
-        p_data[i] = rand();
-        // p_data[i] = paddr + 4 * i;  // debug
+        p_data[i] = rand();  // NOLINT(runtime/threadsafe_fn)
       }
       memcpy(mem_bus_[paddr], data, kLineSize);
       memcpy(mem_axi_[paddr], data, kLineSize);
@@ -354,11 +354,10 @@
 
   void CheckAddr(uint32_t addr, uint8_t size) {
     _CheckAddr(addr, size);
-    // if ((addr & kLineBase) == ((addr + size) & kLineBase)) return;
     _CheckAddr(addr + kLineSize, size);
   }
 
-  template<int outsz>
+  template <int outsz>
   void _Read(uint32_t addr, uint8_t size, uint8_t* data,
              std::map<uint32_t, uint8_t[kLineSize]>& m) {
     const uint32_t laddr = addr & kLineBase;
@@ -396,13 +395,9 @@
     _Read<4>(addr, size, data, mem_axi_);
   }
 
-  void WriteBus(uint32_t addr, uint8_t data) {
-    _Write(addr, data, mem_bus_);
-  }
+  void WriteBus(uint32_t addr, uint8_t data) { _Write(addr, data, mem_bus_); }
 
-  void WriteAxi(uint32_t addr, uint8_t data) {
-    _Write(addr, data, mem_axi_);
-  }
+  void WriteAxi(uint32_t addr, uint8_t data) { _Write(addr, data, mem_axi_); }
 };
 
 static void L1DCache_test(char* name, int loops, bool trace) {
@@ -512,7 +507,7 @@
   tb.start();
 }
 
-int sc_main(int argc, char *argv[]) {
+int sc_main(int argc, char* argv[]) {
   L1DCache_test(Sysc_tb::get_name(argv[0]), 1000000, false);
   return 0;
 }