summaryrefslogtreecommitdiff
path: root/libs/subcircuit/subcircuit.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-03-03 21:19:55 +0100
committerClifford Wolf <clifford@clifford.at>2013-03-03 21:19:55 +0100
commitbc8d94b4aeb43fd7cc6b77725bb379650a0575a3 (patch)
treeec34178961e33e8b4729eec62de0e9b5141ab212 /libs/subcircuit/subcircuit.cc
parent3ebc365c096ee062516bdbfd903fea14e4aa6185 (diff)
Added "shared nodes" feature to the subcircuit library
Diffstat (limited to 'libs/subcircuit/subcircuit.cc')
-rw-r--r--libs/subcircuit/subcircuit.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/libs/subcircuit/subcircuit.cc b/libs/subcircuit/subcircuit.cc
index 73152c3b..f05aeaa2 100644
--- a/libs/subcircuit/subcircuit.cc
+++ b/libs/subcircuit/subcircuit.cc
@@ -100,7 +100,7 @@ bool SubCircuit::Graph::BitRef::operator < (const BitRef &other) const
return bitIdx < other.bitIdx;
}
-void SubCircuit::Graph::createNode(std::string nodeId, std::string typeId, void *userData)
+void SubCircuit::Graph::createNode(std::string nodeId, std::string typeId, void *userData, bool shared)
{
assert(nodeMap.count(nodeId) == 0);
nodeMap[nodeId] = nodes.size();
@@ -110,6 +110,7 @@ void SubCircuit::Graph::createNode(std::string nodeId, std::string typeId, void
newNode.nodeId = nodeId;
newNode.typeId = typeId;
newNode.userData = userData;
+ newNode.shared = shared;
}
void SubCircuit::Graph::createPort(std::string nodeId, std::string portId, int width, int minWidth)
@@ -1074,7 +1075,8 @@ class SubCircuit::SolverWorker
}
for (int j = 0; j < int(enumerationMatrix.size()); j++)
- haystack.usedNodes[*enumerationMatrix[j].begin()] = true;
+ if (!haystack.graph.nodes[*enumerationMatrix[j].begin()].shared)
+ haystack.usedNodes[*enumerationMatrix[j].begin()] = true;
if (verbose) {
my_printf("\nSolution:\n");