diff --git a/utils/dbfixup.py b/utils/dbfixup.py
index 859375c..4159c56 100644
--- a/utils/dbfixup.py
+++ b/utils/dbfixup.py
@@ -87,7 +87,7 @@
             print(line, file=f)
 
 
-def update_mask(mask_db, *src_dbs):
+def update_mask(mask_db, *src_dbs, offset=0):
     bits = set()
     mask_db_file = "%s/%s/mask_%s.db" % (
         os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE"), mask_db)
@@ -111,8 +111,12 @@
             for line in f:
                 line = line.split()
                 for bit in line[1:]:
-                    if bit[0] != "!":
-                        bits.add(bit)
+                    if bit[0] == "!":
+                        continue
+                    if offset != 0:
+                        m = re.match(r"(\d+)_(\d+)", bit)
+                        bit = "%02d_%02d" % (int(m.group(1)), int(m.group(2)) + offset)
+                    bits.add(bit)
 
     if len(bits) > 0:
         with open(mask_db_file, "w") as f:
@@ -134,8 +138,13 @@
 update_mask("hclk_l", "hclk_l")
 update_mask("hclk_r", "hclk_r")
 
+update_mask("bram_l", "bram_l")
+update_mask("bram_r", "bram_r")
+update_mask("dsp_l", "dsp_l")
+update_mask("dsp_r", "dsp_r")
+
 for k in range(5):
-    update_mask("bram%d_l" % k, "bram%d_l" % k, "int_l")
-    update_mask("bram%d_r" % k, "bram%d_r" % k, "int_r")
-    update_mask("dsp%d_l" % k, "dsp%d_l" % k, "int_l")
-    update_mask("dsp%d_r" % k, "dsp%d_r" % k, "int_r")
+    update_mask("bram_l", "int_l", offset=64*k)
+    update_mask("bram_r", "int_r", offset=64*k)
+    update_mask("dsp_l", "int_l", offset=64*k)
+    update_mask("dsp_r", "int_r", offset=64*k)
diff --git a/utils/mergedb.sh b/utils/mergedb.sh
index a873560..94014ac 100644
--- a/utils/mergedb.sh
+++ b/utils/mergedb.sh
@@ -27,6 +27,16 @@
 			-e 's/^CLB\.SLICE_X0\./CLBLM_R.SLICEM_X0./' \
 			-e 's/^CLB\.SLICE_X1\./CLBLM_R.SLICEL_X1./' ;;
 
+	dsp_l)
+		sed < "$2" > "$tmp1" -e 's/^DSP\./DSP_L./' ;;
+	dsp_r)
+		sed < "$2" > "$tmp1" -e 's/^DSP\./DSP_R./' ;;
+
+	bram_l)
+		sed < "$2" > "$tmp1" -e 's/^BRAM\./BRAM_L./' ;;
+	bram_r)
+		sed < "$2" > "$tmp1" -e 's/^BRAM\./BRAM_R./' ;;
+
 	int_l)
 		sed < "$2" > "$tmp1" -e 's/^INT\./INT_L./' ;;
 	int_r)
