From c9ead39bcd0ff7bcc3c43e5d059a20bcd27e0c78 Mon Sep 17 00:00:00 2001
From: "Wesley W. Terpstra" <w.terpstra@gsi.de>
Date: Fri, 10 Feb 2012 08:56:59 +0000
Subject: [PATCH] Test address compaction of writes

---
 api/v2/test/loopback.cpp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/api/v2/test/loopback.cpp b/api/v2/test/loopback.cpp
index 4beb89c..14d2fb8 100644
--- a/api/v2/test/loopback.cpp
+++ b/api/v2/test/loopback.cpp
@@ -71,13 +71,13 @@ struct Record {
 Record::Record() 
  : address(random()),
    data(random()) {
+  static address_t prev = 0;
   long seed = random();
   
   address = (address << 1) | (seed&1);
   seed >>= 1;
   data = (data << 1) | (seed&1);
   seed >>= 1;
-  // !!! make it likely to do fifo/seq
   
   switch (seed & 3) {
   case 0: type = READ_BUS; break;
@@ -101,6 +101,13 @@ Record::Record()
   } else {
     error = (address & 3) == 1;
   }
+  
+  /* Introduce a high chance for FIFO/seq access */
+  if ((seed&3) != 3 && (type == WRITE_BUS || type == WRITE_CFG)) {
+    address = prev & 0x7FFF;
+  } else {
+    prev = address;
+  }
 }
 
 list<Record> expect;
@@ -240,7 +247,7 @@ void test_query(Device device, int len, int requests) {
   ++serial;
   
 #if 0
-  if (serial == 128854) {
+  if (serial == 13043) {
     printf("Enabling debug\n");
     loud = true;
   }
-- 
GitLab