Change DelayInfo semantics to what we actually need
Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
parent
c556242976
commit
78f40ca0af
@ -143,12 +143,12 @@ struct Router
|
|||||||
thisVisitCntLimit = (thisVisitCnt * 3) / 2;
|
thisVisitCntLimit = (thisVisitCnt * 3) / 2;
|
||||||
|
|
||||||
for (auto pip : ctx->getPipsDownhill(qw.wire)) {
|
for (auto pip : ctx->getPipsDownhill(qw.wire)) {
|
||||||
delay_t next_delay = qw.delay + ctx->getPipDelay(pip).avgDelay();
|
delay_t next_delay = qw.delay + ctx->getPipDelay(pip).maxDelay();
|
||||||
WireId next_wire = ctx->getPipDstWire(pip);
|
WireId next_wire = ctx->getPipDstWire(pip);
|
||||||
bool foundRipupNet = false;
|
bool foundRipupNet = false;
|
||||||
thisVisitCnt++;
|
thisVisitCnt++;
|
||||||
|
|
||||||
next_delay += ctx->getWireDelay(next_wire).avgDelay();
|
next_delay += ctx->getWireDelay(next_wire).maxDelay();
|
||||||
|
|
||||||
if (!ctx->checkWireAvail(next_wire)) {
|
if (!ctx->checkWireAvail(next_wire)) {
|
||||||
if (!ripup)
|
if (!ripup)
|
||||||
@ -228,7 +228,7 @@ struct Router
|
|||||||
: ctx(ctx), scores(scores), ripup(ripup), ripup_penalty(ripup_penalty)
|
: ctx(ctx), scores(scores), ripup(ripup), ripup_penalty(ripup_penalty)
|
||||||
{
|
{
|
||||||
std::unordered_map<WireId, delay_t> src_wires;
|
std::unordered_map<WireId, delay_t> src_wires;
|
||||||
src_wires[src_wire] = ctx->getWireDelay(src_wire).avgDelay();
|
src_wires[src_wire] = ctx->getWireDelay(src_wire).maxDelay();
|
||||||
route(src_wires, dst_wire);
|
route(src_wires, dst_wire);
|
||||||
routedOkay = visited.count(dst_wire);
|
routedOkay = visited.count(dst_wire);
|
||||||
|
|
||||||
@ -286,7 +286,7 @@ struct Router
|
|||||||
log(" Source wire: %s\n", ctx->getWireName(src_wire).c_str(ctx));
|
log(" Source wire: %s\n", ctx->getWireName(src_wire).c_str(ctx));
|
||||||
|
|
||||||
std::unordered_map<WireId, delay_t> src_wires;
|
std::unordered_map<WireId, delay_t> src_wires;
|
||||||
src_wires[src_wire] = ctx->getWireDelay(src_wire).avgDelay();
|
src_wires[src_wire] = ctx->getWireDelay(src_wire).maxDelay();
|
||||||
|
|
||||||
ripup_net(ctx, net_name);
|
ripup_net(ctx, net_name);
|
||||||
ctx->bindWire(src_wire, net_name, STRENGTH_WEAK);
|
ctx->bindWire(src_wire, net_name, STRENGTH_WEAK);
|
||||||
|
@ -32,9 +32,14 @@ struct DelayInfo
|
|||||||
{
|
{
|
||||||
delay_t delay = 0;
|
delay_t delay = 0;
|
||||||
|
|
||||||
delay_t raiseDelay() const { return delay; }
|
delay_t minRaiseDelay() const { return delay; }
|
||||||
delay_t fallDelay() const { return delay; }
|
delay_t maxRaiseDelay() const { return delay; }
|
||||||
delay_t avgDelay() const { return delay; }
|
|
||||||
|
delay_t minFallDelay() const { return delay; }
|
||||||
|
delay_t maxFallDelay() const { return delay; }
|
||||||
|
|
||||||
|
delay_t minDelay() const { return delay; }
|
||||||
|
delay_t maxDelay() const { return delay; }
|
||||||
|
|
||||||
DelayInfo operator+(const DelayInfo &other) const
|
DelayInfo operator+(const DelayInfo &other) const
|
||||||
{
|
{
|
||||||
|
@ -29,11 +29,14 @@ struct DelayInfo
|
|||||||
{
|
{
|
||||||
delay_t delay = 0;
|
delay_t delay = 0;
|
||||||
|
|
||||||
delay_t raiseDelay() const { return delay; }
|
delay_t minRaiseDelay() const { return delay; }
|
||||||
|
delay_t maxRaiseDelay() const { return delay; }
|
||||||
|
|
||||||
delay_t fallDelay() const { return delay; }
|
delay_t minFallDelay() const { return delay; }
|
||||||
|
delay_t maxFallDelay() const { return delay; }
|
||||||
|
|
||||||
delay_t avgDelay() const { return delay; }
|
delay_t minDelay() const { return delay; }
|
||||||
|
delay_t maxDelay() const { return delay; }
|
||||||
|
|
||||||
DelayInfo operator+(const DelayInfo &other) const
|
DelayInfo operator+(const DelayInfo &other) const
|
||||||
{
|
{
|
||||||
|
@ -507,6 +507,14 @@ void DesignWidget::onItemSelectionChanged()
|
|||||||
addProperty(topItem, QVariant::String, "Conflicting Net", ctx->getConflictingWireNet(wire).c_str(ctx),
|
addProperty(topItem, QVariant::String, "Conflicting Net", ctx->getConflictingWireNet(wire).c_str(ctx),
|
||||||
ElementType::NET);
|
ElementType::NET);
|
||||||
|
|
||||||
|
DelayInfo delay = ctx->getWireDelay(wire);
|
||||||
|
|
||||||
|
QtProperty *delayItem = addSubGroup(topItem, "Delay");
|
||||||
|
addProperty(delayItem, QVariant::Double, "Min Raise", delay.minRaiseDelay());
|
||||||
|
addProperty(delayItem, QVariant::Double, "Max Raise", delay.maxRaiseDelay());
|
||||||
|
addProperty(delayItem, QVariant::Double, "Min Fall", delay.minFallDelay());
|
||||||
|
addProperty(delayItem, QVariant::Double, "Max Fall", delay.maxFallDelay());
|
||||||
|
|
||||||
QtProperty *belpinItem = addSubGroup(topItem, "BelPin Uphill");
|
QtProperty *belpinItem = addSubGroup(topItem, "BelPin Uphill");
|
||||||
BelPin uphill = ctx->getBelPinUphill(wire);
|
BelPin uphill = ctx->getBelPinUphill(wire);
|
||||||
if (uphill.bel != BelId())
|
if (uphill.bel != BelId())
|
||||||
@ -566,9 +574,10 @@ void DesignWidget::onItemSelectionChanged()
|
|||||||
DelayInfo delay = ctx->getPipDelay(pip);
|
DelayInfo delay = ctx->getPipDelay(pip);
|
||||||
|
|
||||||
QtProperty *delayItem = addSubGroup(topItem, "Delay");
|
QtProperty *delayItem = addSubGroup(topItem, "Delay");
|
||||||
addProperty(delayItem, QVariant::Double, "Raise", delay.raiseDelay());
|
addProperty(delayItem, QVariant::Double, "Min Raise", delay.minRaiseDelay());
|
||||||
addProperty(delayItem, QVariant::Double, "Fall", delay.fallDelay());
|
addProperty(delayItem, QVariant::Double, "Max Raise", delay.maxRaiseDelay());
|
||||||
addProperty(delayItem, QVariant::Double, "Average", delay.avgDelay());
|
addProperty(delayItem, QVariant::Double, "Min Fall", delay.minFallDelay());
|
||||||
|
addProperty(delayItem, QVariant::Double, "Max Fall", delay.maxFallDelay());
|
||||||
} else if (type == ElementType::NET) {
|
} else if (type == ElementType::NET) {
|
||||||
NetInfo *net = ctx->nets.at(c).get();
|
NetInfo *net = ctx->nets.at(c).get();
|
||||||
|
|
||||||
|
@ -29,9 +29,14 @@ struct DelayInfo
|
|||||||
{
|
{
|
||||||
delay_t delay = 0;
|
delay_t delay = 0;
|
||||||
|
|
||||||
delay_t raiseDelay() const { return delay; }
|
delay_t minRaiseDelay() const { return delay; }
|
||||||
delay_t fallDelay() const { return delay; }
|
delay_t maxRaiseDelay() const { return delay; }
|
||||||
delay_t avgDelay() const { return delay; }
|
|
||||||
|
delay_t minFallDelay() const { return delay; }
|
||||||
|
delay_t maxFallDelay() const { return delay; }
|
||||||
|
|
||||||
|
delay_t minDelay() const { return delay; }
|
||||||
|
delay_t maxDelay() const { return delay; }
|
||||||
|
|
||||||
DelayInfo operator+(const DelayInfo &other) const
|
DelayInfo operator+(const DelayInfo &other) const
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user