router2: Improve flow and log output
Signed-off-by: David Shah <dave@ds0.me>
This commit is contained in:
parent
a8206ed170
commit
2248e07b66
@ -36,6 +36,7 @@
|
|||||||
#include <thread>
|
#include <thread>
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "nextpnr.h"
|
#include "nextpnr.h"
|
||||||
|
#include "router1.h"
|
||||||
#include "timing.h"
|
#include "timing.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
@ -1018,6 +1019,9 @@ struct Router2
|
|||||||
|
|
||||||
void operator()()
|
void operator()()
|
||||||
{
|
{
|
||||||
|
log_info("Running router2...\n");
|
||||||
|
log_info("Setting up routing resources...\n");
|
||||||
|
auto rstart = std::chrono::high_resolution_clock::now();
|
||||||
setup_nets();
|
setup_nets();
|
||||||
setup_wires();
|
setup_wires();
|
||||||
find_all_reserved_wires();
|
find_all_reserved_wires();
|
||||||
@ -1031,7 +1035,7 @@ struct Router2
|
|||||||
route_queue.push_back(i);
|
route_queue.push_back(i);
|
||||||
|
|
||||||
bool timing_driven = ctx->setting<bool>("timing_driven");
|
bool timing_driven = ctx->setting<bool>("timing_driven");
|
||||||
|
log_info("Running main router loop...\n");
|
||||||
do {
|
do {
|
||||||
ctx->sorted_shuffle(route_queue);
|
ctx->sorted_shuffle(route_queue);
|
||||||
|
|
||||||
@ -1093,6 +1097,12 @@ struct Router2
|
|||||||
nets_by_runtime.at(i).first / 1000.0);
|
nets_by_runtime.at(i).first / 1000.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
auto rend = std::chrono::high_resolution_clock::now();
|
||||||
|
log_info("Router2 time %.02fs\n", std::chrono::duration<float>(rend - rstart).count());
|
||||||
|
|
||||||
|
log_info("Running router1 to check that route is legal...\n");
|
||||||
|
|
||||||
|
router1(ctx, Router1Cfg(ctx));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
@ -1101,10 +1111,7 @@ void router2(Context *ctx, const Router2Cfg &cfg)
|
|||||||
{
|
{
|
||||||
Router2 rt(ctx, cfg);
|
Router2 rt(ctx, cfg);
|
||||||
rt.ctx = ctx;
|
rt.ctx = ctx;
|
||||||
auto rstart = std::chrono::high_resolution_clock::now();
|
|
||||||
rt();
|
rt();
|
||||||
auto rend = std::chrono::high_resolution_clock::now();
|
|
||||||
log_info("Router2 time %.02fs\n", std::chrono::duration<float>(rend - rstart).count());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Router2Cfg::Router2Cfg(Context *ctx)
|
Router2Cfg::Router2Cfg(Context *ctx)
|
||||||
|
@ -633,7 +633,7 @@ bool Arch::route()
|
|||||||
result = router1(getCtx(), Router1Cfg(getCtx()));
|
result = router1(getCtx(), Router1Cfg(getCtx()));
|
||||||
} else if (router == "router2") {
|
} else if (router == "router2") {
|
||||||
router2(getCtx(), Router2Cfg(getCtx()));
|
router2(getCtx(), Router2Cfg(getCtx()));
|
||||||
result = router1(getCtx(), Router1Cfg(getCtx()));
|
result = true;
|
||||||
} else {
|
} else {
|
||||||
log_error("ECP5 architecture does not support router '%s'\n", router.c_str());
|
log_error("ECP5 architecture does not support router '%s'\n", router.c_str());
|
||||||
}
|
}
|
||||||
|
@ -560,7 +560,7 @@ bool Arch::route()
|
|||||||
result = router1(getCtx(), Router1Cfg(getCtx()));
|
result = router1(getCtx(), Router1Cfg(getCtx()));
|
||||||
} else if (router == "router2") {
|
} else if (router == "router2") {
|
||||||
router2(getCtx(), Router2Cfg(getCtx()));
|
router2(getCtx(), Router2Cfg(getCtx()));
|
||||||
result = router1(getCtx(), Router1Cfg(getCtx()));
|
result = true;
|
||||||
} else {
|
} else {
|
||||||
log_error("iCE40 architecture does not support router '%s'\n", router.c_str());
|
log_error("iCE40 architecture does not support router '%s'\n", router.c_str());
|
||||||
}
|
}
|
||||||
|
@ -703,7 +703,7 @@ bool Arch::route()
|
|||||||
result = router1(getCtx(), Router1Cfg(getCtx()));
|
result = router1(getCtx(), Router1Cfg(getCtx()));
|
||||||
} else if (router == "router2") {
|
} else if (router == "router2") {
|
||||||
router2(getCtx(), Router2Cfg(getCtx()));
|
router2(getCtx(), Router2Cfg(getCtx()));
|
||||||
result = router1(getCtx(), Router1Cfg(getCtx()));
|
result = true;
|
||||||
} else {
|
} else {
|
||||||
log_error("iCE40 architecture does not support router '%s'\n", router.c_str());
|
log_error("iCE40 architecture does not support router '%s'\n", router.c_str());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user