aboutsummaryrefslogtreecommitdiffstats
path: root/passes/memory/memory_share.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2016-08-22 14:26:33 +0200
committerClifford Wolf <clifford@clifford.at>2016-08-22 14:26:33 +0200
commitcad40fc87449e69a086a627bfb25aa49ae400753 (patch)
tree48d127797c67d4af110fa3b0fc937ec2adb96816 /passes/memory/memory_share.cc
parent7a33b9892a7a542ca1ac0b503c4368a1721a9afb (diff)
downloadyosys-cad40fc87449e69a086a627bfb25aa49ae400753.tar.gz
yosys-cad40fc87449e69a086a627bfb25aa49ae400753.tar.bz2
yosys-cad40fc87449e69a086a627bfb25aa49ae400753.zip
Fixed bug in memory_share for memory ports with different ABITS
Diffstat (limited to 'passes/memory/memory_share.cc')
-rw-r--r--passes/memory/memory_share.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/passes/memory/memory_share.cc b/passes/memory/memory_share.cc
index f298169de..bcb7433a2 100644
--- a/passes/memory/memory_share.cc
+++ b/passes/memory/memory_share.cc
@@ -619,6 +619,12 @@ struct MemoryShareWorker
RTLIL::SigBit this_en_active = module->ReduceOr(NEW_ID, this_en);
+ if (GetSize(last_addr) < GetSize(this_addr))
+ last_addr.extend_u0(GetSize(this_addr));
+ else
+ this_addr.extend_u0(GetSize(last_addr));
+
+ wr_ports[i]->setParam("\\ABITS", GetSize(this_addr));
wr_ports[i]->setPort("\\ADDR", module->Mux(NEW_ID, last_addr, this_addr, this_en_active));
wr_ports[i]->setPort("\\DATA", module->Mux(NEW_ID, last_data, this_data, this_en_active));