mirror of
https://github.com/verilator/verilator.git
synced 2026-09-04 08:33:38 +02:00
Streamline dump control options
- Rename `--dump-treei` option to `--dumpi-tree`, which itself is now a special case of `--dumpi-<tag>` where tag can be a magic word, or a filename - Control dumping via static `dump*()` functions, analogous to `debug()` - Make dumping independent of the value of `debug()` (so dumping always works even without the debug flag) - Add separate `--dumpi-graph` for dumping V3Graphs, which is again a special case of `--dumpi-<tag>` - Alias `--dump-<tag>` to `--dumpi-<tag> 3` as before
This commit is contained in:
+8
-8
@@ -24,6 +24,8 @@
|
||||
#include <list>
|
||||
#include <vector>
|
||||
|
||||
VL_DEFINE_DEBUG_FUNCTIONS;
|
||||
|
||||
//######################################################################
|
||||
//######################################################################
|
||||
// Algorithms - acyclic
|
||||
@@ -104,8 +106,6 @@ private:
|
||||
m_origEdgeFuncp; // Function that says we follow this edge (in original graph)
|
||||
uint32_t m_placeStep = 0; // Number that user() must be equal to to indicate processing
|
||||
|
||||
static int debug() { return V3Graph::debug(); }
|
||||
|
||||
// METHODS
|
||||
void buildGraph(V3Graph* origGraphp);
|
||||
void buildGraphIterate(V3GraphVertex* overtexp, GraphAcycVertex* avertexp);
|
||||
@@ -544,28 +544,28 @@ void GraphAcyc::main() {
|
||||
// edges (and thus can't represent loops - if we did the unbreakable
|
||||
// marking right, anyways)
|
||||
buildGraph(m_origGraphp);
|
||||
if (debug() >= 6) m_breakGraph.dumpDotFilePrefixed("acyc_pre");
|
||||
if (dumpGraph() >= 6) m_breakGraph.dumpDotFilePrefixed("acyc_pre");
|
||||
|
||||
// Perform simple optimizations before any cuttings
|
||||
simplify(false);
|
||||
if (debug() >= 5) m_breakGraph.dumpDotFilePrefixed("acyc_simp");
|
||||
if (dumpGraph() >= 5) m_breakGraph.dumpDotFilePrefixed("acyc_simp");
|
||||
|
||||
UINFO(4, " Cutting trivial loops\n");
|
||||
simplify(true);
|
||||
if (debug() >= 6) m_breakGraph.dumpDotFilePrefixed("acyc_mid");
|
||||
if (dumpGraph() >= 6) m_breakGraph.dumpDotFilePrefixed("acyc_mid");
|
||||
|
||||
UINFO(4, " Ranking\n");
|
||||
m_breakGraph.rank(&V3GraphEdge::followNotCutable);
|
||||
if (debug() >= 6) m_breakGraph.dumpDotFilePrefixed("acyc_rank");
|
||||
if (dumpGraph() >= 6) m_breakGraph.dumpDotFilePrefixed("acyc_rank");
|
||||
|
||||
UINFO(4, " Placement\n");
|
||||
place();
|
||||
if (debug() >= 6) m_breakGraph.dumpDotFilePrefixed("acyc_place");
|
||||
if (dumpGraph() >= 6) m_breakGraph.dumpDotFilePrefixed("acyc_place");
|
||||
|
||||
UINFO(4, " Final Ranking\n");
|
||||
// Only needed to assert there are no loops in completed graph
|
||||
m_breakGraph.rank(&V3GraphEdge::followAlwaysTrue);
|
||||
if (debug() >= 6) m_breakGraph.dumpDotFilePrefixed("acyc_done");
|
||||
if (dumpGraph() >= 6) m_breakGraph.dumpDotFilePrefixed("acyc_done");
|
||||
}
|
||||
|
||||
void V3Graph::acyclic(V3EdgeFuncP edgeFuncp) {
|
||||
|
||||
Reference in New Issue
Block a user