aboutsummaryrefslogtreecommitdiffstats
path: root/passes/memory/memory_share.cc
diff options
context:
space:
mode:
authorMarcelina Koƛcielnicka <mwk@0x04.net>2021-05-25 01:55:44 +0200
committerMarcelina Koƛcielnicka <mwk@0x04.net>2021-05-25 02:57:32 +0200
commit47f958ce4592a42e26f074c88063ac17c843ea71 (patch)
treecc9c686aa505c006b8f0d4a2e26aa8818190f21c /passes/memory/memory_share.cc
parent9d5d5a48b14832b3cc38d78e7e1960b14269ff4a (diff)
downloadyosys-47f958ce4592a42e26f074c88063ac17c843ea71.tar.gz
yosys-47f958ce4592a42e26f074c88063ac17c843ea71.tar.bz2
yosys-47f958ce4592a42e26f074c88063ac17c843ea71.zip
memory_share: Add wide port support.
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 d5a44f20c..98637720c 100644
--- a/passes/memory/memory_share.cc
+++ b/passes/memory/memory_share.cc
@@ -143,6 +143,7 @@ struct MemoryShareWorker
bool cache_clk_enable = false;
bool cache_clk_polarity = false;
RTLIL::SigSpec cache_clk;
+ int cache_wide_log2 = 0;
bool changed = false;
@@ -152,12 +153,14 @@ struct MemoryShareWorker
RTLIL::SigSpec addr = sigmap_xmux(port.addr);
if (port.clk_enable != cache_clk_enable ||
+ port.wide_log2 != cache_wide_log2 ||
(cache_clk_enable && (sigmap(port.clk) != cache_clk ||
port.clk_polarity != cache_clk_polarity)))
{
cache_clk_enable = port.clk_enable;
cache_clk_polarity = port.clk_polarity;
cache_clk = sigmap(port.clk);
+ cache_wide_log2 = port.wide_log2;
last_port_by_addr.clear();
if (cache_clk_enable)
@@ -290,18 +293,21 @@ struct MemoryShareWorker
bool cache_clk_enable = false;
bool cache_clk_polarity = false;
RTLIL::SigSpec cache_clk;
+ int cache_wide_log2 = 0;
for (int i = 0; i < GetSize(mem.wr_ports); i++)
{
auto &port = mem.wr_ports[i];
if (port.clk_enable != cache_clk_enable ||
+ port.wide_log2 != cache_wide_log2 ||
(cache_clk_enable && (sigmap(port.clk) != cache_clk ||
port.clk_polarity != cache_clk_polarity)))
{
cache_clk_enable = port.clk_enable;
cache_clk_polarity = port.clk_polarity;
cache_clk = sigmap(port.clk);
+ cache_wide_log2 = port.wide_log2;
}
else if (i > 0 && considered_ports.count(i-1) && considered_ports.count(i))
considered_port_pairs.insert(i);