diff --git a/mpact/sim/util/memory/cache.cc b/mpact/sim/util/memory/cache.cc
index 6b9af5d..defa1b3 100644
--- a/mpact/sim/util/memory/cache.cc
+++ b/mpact/sim/util/memory/cache.cc
@@ -286,7 +286,7 @@
   } else {
     size = db->size<uint8_t>();
   }
-  int latency = (db == nullptr) ? 0 : db->latency();
+  int latency = (db != nullptr) ? db->latency() : tags->latency();
 
   (void)CacheLookup(address, size, /*is_read=*/true);
   if (tagged_memory_ == nullptr) return;
diff --git a/mpact/sim/util/memory/test/cache_test.cc b/mpact/sim/util/memory/test/cache_test.cc
index bff1111..f6067a1 100644
--- a/mpact/sim/util/memory/test/cache_test.cc
+++ b/mpact/sim/util/memory/test/cache_test.cc
@@ -42,6 +42,7 @@
     // Create a cache 16kB, 16B blocks, direct mapped.
     cache_ = new Cache("cache");
     db_ = db_factory_.Allocate<uint32_t>(1);
+    db_->set_latency(0);
     read_hits_ = reinterpret_cast<SimpleCounter<uint64_t> *>(
         cache_->GetCounter("read_hit"));
     read_misses_ = reinterpret_cast<SimpleCounter<uint64_t> *>(
@@ -215,6 +216,11 @@
   DataBuffer *ld_db4 = db_factory_.Allocate<uint32_t>(1);
   DataBuffer *ld_db8 = db_factory_.Allocate<uint64_t>(1);
 
+  ld_db1->set_latency(0);
+  ld_db2->set_latency(0);
+  ld_db4->set_latency(0);
+  ld_db8->set_latency(0);
+
   cache_->Load(0x1000, ld_db1, nullptr, nullptr);
   cache_->Load(0x1002, ld_db2, nullptr, nullptr);
   cache_->Load(0x1004, ld_db4, nullptr, nullptr);
@@ -245,6 +251,9 @@
   DataBuffer *ld_tag_db = db_factory_.Allocate<uint8_t>(16);
   DataBuffer *st_data_db = db_factory_.Allocate<uint8_t>(kTagGranule * 16);
   DataBuffer *st_tag_db = db_factory_.Allocate<uint8_t>(16);
+  ld_data_db->set_latency(0);
+  ld_tag_db->set_latency(0);
+
   cache_->Load(0x1000, ld_data_db, ld_tag_db, nullptr, nullptr);
   // The loaded data should be all zeros.
   for (int i = 0; i < 16; i++) {
diff --git a/mpact/sim/util/memory/test/flat_demand_memory_test.cc b/mpact/sim/util/memory/test/flat_demand_memory_test.cc
index 1b82e25..c432cf9 100644
--- a/mpact/sim/util/memory/test/flat_demand_memory_test.cc
+++ b/mpact/sim/util/memory/test/flat_demand_memory_test.cc
@@ -23,7 +23,6 @@
 #include "googletest/include/gtest/gtest.h"
 #include "mpact/sim/generic/arch_state.h"
 #include "mpact/sim/generic/data_buffer.h"
-#include "mpact/sim/generic/instruction.h"
 
 namespace {
 
@@ -67,6 +66,10 @@
   DataBuffer *ld_db2 = arch_state_->db_factory()->Allocate<uint16_t>(1);
   DataBuffer *ld_db4 = arch_state_->db_factory()->Allocate<uint32_t>(1);
   DataBuffer *ld_db8 = arch_state_->db_factory()->Allocate<uint64_t>(1);
+  ld_db1->set_latency(0);
+  ld_db2->set_latency(0);
+  ld_db4->set_latency(0);
+  ld_db8->set_latency(0);
 
   mem->Load(0x1000, ld_db1, nullptr, nullptr);
   mem->Load(0x1002, ld_db2, nullptr, nullptr);
@@ -101,6 +104,10 @@
   DataBuffer *ld_db2 = arch_state_->db_factory()->Allocate<uint16_t>(1);
   DataBuffer *ld_db4 = arch_state_->db_factory()->Allocate<uint32_t>(1);
   DataBuffer *ld_db8 = arch_state_->db_factory()->Allocate<uint64_t>(1);
+  ld_db1->set_latency(0);
+  ld_db2->set_latency(0);
+  ld_db4->set_latency(0);
+  ld_db8->set_latency(0);
 
   st_db1->Set<uint8_t>(0, 0x0F);
   st_db2->Set<uint16_t>(0, 0xA5A5);
@@ -138,6 +145,7 @@
   DataBuffer *address_db = arch_state_->db_factory()->Allocate<uint64_t>(1);
   DataBuffer *mask_db = arch_state_->db_factory()->Allocate<bool>(4);
   DataBuffer *ld_db = arch_state_->db_factory()->Allocate<uint32_t>(4);
+  ld_db->set_latency(0);
   DataBuffer *st_db = arch_state_->db_factory()->Allocate<uint32_t>(4);
   auto ld_span = ld_db->Get<uint32_t>();
   auto st_span = st_db->Get<uint32_t>();
@@ -173,6 +181,9 @@
   DataBuffer *ld_db2 = arch_state_->db_factory()->Allocate<uint16_t>(1);
   DataBuffer *ld_db4 = arch_state_->db_factory()->Allocate<uint32_t>(1);
   DataBuffer *ld_db8 = arch_state_->db_factory()->Allocate<uint64_t>(1);
+  ld_db2->set_latency(0);
+  ld_db4->set_latency(0);
+  ld_db8->set_latency(0);
 
   mem->Load(0x1000, ld_db2, nullptr, nullptr);
   mem->Load(0x1001, ld_db4, nullptr, nullptr);
@@ -195,13 +206,14 @@
   auto mem = std::make_unique<FlatDemandMemory>();
   DataBuffer *ld_db = arch_state_->db_factory()->Allocate<uint8_t>(
       FlatDemandMemory::kAllocationSize * 2);
+  ld_db->set_latency(0);
   DataBuffer *st_db = arch_state_->db_factory()->Allocate<uint8_t>(
       FlatDemandMemory::kAllocationSize * 2);
   // Set the store data to known value.
-  std::memset(st_db->raw_ptr(), 0xbe, FlatDemandMemory::kAllocationSize);
+  std::memset(st_db->raw_ptr(), 0xbe, FlatDemandMemory::kAllocationSize * 2);
   mem->Store(0x1234, st_db);
   // Set the load data buffer to a different value.
-  std::memset(ld_db->raw_ptr(), 0xff, FlatDemandMemory::kAllocationSize);
+  std::memset(ld_db->raw_ptr(), 0xff, FlatDemandMemory::kAllocationSize * 2);
   mem->Load(0x1234, ld_db, nullptr, nullptr);
   // Compare the values loaded to the store data.
   EXPECT_THAT(ld_db->Get<uint8_t>(),
diff --git a/mpact/sim/util/memory/test/tagged_flat_demand_memory_test.cc b/mpact/sim/util/memory/test/tagged_flat_demand_memory_test.cc
index d905252..5a40ba9 100644
--- a/mpact/sim/util/memory/test/tagged_flat_demand_memory_test.cc
+++ b/mpact/sim/util/memory/test/tagged_flat_demand_memory_test.cc
@@ -77,6 +77,10 @@
   DataBuffer *ld_db2 = arch_state_->db_factory()->Allocate<uint16_t>(1);
   DataBuffer *ld_db4 = arch_state_->db_factory()->Allocate<uint32_t>(1);
   DataBuffer *ld_db8 = arch_state_->db_factory()->Allocate<uint64_t>(1);
+  ld_db1->set_latency(0);
+  ld_db2->set_latency(0);
+  ld_db4->set_latency(0);
+  ld_db8->set_latency(0);
 
   mem->Load(0x1000, ld_db1, nullptr, nullptr);
   mem->Load(0x1002, ld_db2, nullptr, nullptr);
@@ -111,6 +115,10 @@
   DataBuffer *ld_db2 = arch_state_->db_factory()->Allocate<uint16_t>(1);
   DataBuffer *ld_db4 = arch_state_->db_factory()->Allocate<uint32_t>(1);
   DataBuffer *ld_db8 = arch_state_->db_factory()->Allocate<uint64_t>(1);
+  ld_db1->set_latency(0);
+  ld_db2->set_latency(0);
+  ld_db4->set_latency(0);
+  ld_db8->set_latency(0);
 
   st_db1->Set<uint8_t>(0, 0x0F);
   st_db2->Set<uint16_t>(0, 0xA5A5);
@@ -153,6 +161,7 @@
   DataBuffer *address_db = arch_state_->db_factory()->Allocate<uint64_t>(1);
   DataBuffer *mask_db = arch_state_->db_factory()->Allocate<bool>(4);
   DataBuffer *ld_db = arch_state_->db_factory()->Allocate<uint32_t>(4);
+  ld_db->set_latency(0);
   DataBuffer *st_db = arch_state_->db_factory()->Allocate<uint32_t>(4);
   auto ld_span = ld_db->Get<uint32_t>();
   auto st_span = st_db->Get<uint32_t>();
@@ -189,6 +198,9 @@
   DataBuffer *ld_db2 = arch_state_->db_factory()->Allocate<uint16_t>(1);
   DataBuffer *ld_db4 = arch_state_->db_factory()->Allocate<uint32_t>(1);
   DataBuffer *ld_db8 = arch_state_->db_factory()->Allocate<uint64_t>(1);
+  ld_db2->set_latency(0);
+  ld_db4->set_latency(0);
+  ld_db8->set_latency(0);
 
   mem->Load(0x1000, ld_db2, nullptr, nullptr);
   mem->Load(0x1001, ld_db4, nullptr, nullptr);
@@ -214,10 +226,12 @@
   DataBuffer *st_db = arch_state_->db_factory()->Allocate<uint8_t>(
       TaggedFlatDemandMemory::kAllocationSize * 2);
   // Set the store data to known value.
-  std::memset(st_db->raw_ptr(), 0xbe, TaggedFlatDemandMemory::kAllocationSize);
+  std::memset(st_db->raw_ptr(), 0xbe,
+              TaggedFlatDemandMemory::kAllocationSize * 2);
   mem->Store(0x1234, st_db);
   // Set the load data buffer to a different value.
-  std::memset(ld_db->raw_ptr(), 0xff, TaggedFlatDemandMemory::kAllocationSize);
+  std::memset(ld_db->raw_ptr(), 0xff,
+              TaggedFlatDemandMemory::kAllocationSize * 2);
   mem->Load(0x1234, ld_db, nullptr, nullptr);
   // Compare the values loaded to the store data.
   EXPECT_THAT(ld_db->Get<uint8_t>(),
@@ -235,6 +249,8 @@
   DataBuffer *data_db =
       arch_state_->db_factory()->Allocate<uint8_t>(kTagGranule * 16);
   DataBuffer *tag_db = arch_state_->db_factory()->Allocate<uint8_t>(16);
+  data_db->set_latency(0);
+  tag_db->set_latency(0);
   int expected_err_count = 0;
   for (uint64_t address = 0x1000; address < 0x1010; address++) {
     // Only expect errors when the address is not aligned with kTagGranule.
@@ -261,6 +277,10 @@
       arch_state_->db_factory()->Allocate<uint8_t>(kTagGranule * 16 - 1);
   DataBuffer *long_data_db =
       arch_state_->db_factory()->Allocate<uint8_t>(kTagGranule * 16 + 1);
+  data_db->set_latency(0);
+  tag_db->set_latency(0);
+  short_data_db->set_latency(0);
+  long_data_db->set_latency(0);
 
   // The correct data and tag db's will work.
   mem->Load(0x1000, data_db, tag_db, nullptr, nullptr);
@@ -288,6 +308,10 @@
   DataBuffer *tag_db = arch_state_->db_factory()->Allocate<uint8_t>(16);
   DataBuffer *short_tag_db = arch_state_->db_factory()->Allocate<uint8_t>(8);
   DataBuffer *long_tag_db = arch_state_->db_factory()->Allocate<uint8_t>(18);
+  data_db->set_latency(0);
+  tag_db->set_latency(0);
+  short_tag_db->set_latency(0);
+  long_tag_db->set_latency(0);
 
   // The correct data and tag db's will work.
   mem->Load(0x1000, data_db, tag_db, nullptr, nullptr);
@@ -311,6 +335,8 @@
   DataBuffer *ld_data_db =
       arch_state_->db_factory()->Allocate<uint8_t>(kTagGranule * 16);
   DataBuffer *ld_tag_db = arch_state_->db_factory()->Allocate<uint8_t>(16);
+  ld_data_db->set_latency(0);
+  ld_tag_db->set_latency(0);
   DataBuffer *st_data_db =
       arch_state_->db_factory()->Allocate<uint8_t>(kTagGranule * 16);
   DataBuffer *st_tag_db = arch_state_->db_factory()->Allocate<uint8_t>(16);
@@ -364,6 +390,8 @@
   DataBuffer *ld_data_db =
       arch_state_->db_factory()->Allocate<uint8_t>(kTagGranule * 16);
   DataBuffer *ld_tag_db = arch_state_->db_factory()->Allocate<uint8_t>(16);
+  ld_data_db->set_latency(0);
+  ld_tag_db->set_latency(0);
   DataBuffer *st_data_db =
       arch_state_->db_factory()->Allocate<uint8_t>(kTagGranule * 16);
   DataBuffer *st_tag_db = arch_state_->db_factory()->Allocate<uint8_t>(16);
