Redesign PosInfo API

Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
Clifford Wolf 2018-06-13 12:37:23 +02:00
parent 301136db03
commit 4d7f18dd98
4 changed files with 80 additions and 15 deletions

View File

@ -17,6 +17,7 @@
* *
*/ */
#include <math.h>
#include "nextpnr.h" #include "nextpnr.h"
NEXTPNR_NAMESPACE_BEGIN NEXTPNR_NAMESPACE_BEGIN
@ -138,6 +139,42 @@ const std::vector<PipId> &Chip::getWireAliases(WireId wire) const
return ret; return ret;
} }
// ---------------------------------------------------------------
PosInfo Chip::getBelPosition(BelId bel) const
{
PosInfo pos;
assert(bel != BelId());
// pos.x = ...;
// pos.y = ...;
return pos;
}
PosInfo Chip::getWirePosition(WireId wire) const
{
PosInfo pos;
assert(wire != WireId());
// pos.x = ...;
// pos.y = ...;
return pos;
}
PosInfo Chip::getPipPosition(PipId pip) const
{
PosInfo pos;
assert(pip != PipId());
// pos.x = ...;
// pos.y = ...;
return pos;
}
float Chip::estimateDelay(PosInfo src, PosInfo dst) const
{
return fabsf(src.x - dst.x) + fabsf(src.x - dst.x);
}
// ---------------------------------------------------------------
std::vector<GraphicElement> Chip::getBelGraphics(BelId bel) const std::vector<GraphicElement> Chip::getBelGraphics(BelId bel) const
{ {
static std::vector<GraphicElement> ret; static std::vector<GraphicElement> ret;

View File

@ -42,6 +42,11 @@ struct DelayInfo
} }
}; };
struct PosInfo
{
float x = 0, y = 0;
};
typedef IdString BelType; typedef IdString BelType;
typedef IdString PortPin; typedef IdString PortPin;
@ -108,9 +113,10 @@ struct Chip
const std::vector<PipId> &getPipsUphill(WireId wire) const; const std::vector<PipId> &getPipsUphill(WireId wire) const;
const std::vector<PipId> &getWireAliases(WireId wire) const; const std::vector<PipId> &getWireAliases(WireId wire) const;
void getBelPosition(BelId bel, float &x, float &y) const; PosInfo getBelPosition(BelId bel) const;
void getWirePosition(WireId wire, float &x, float &y) const; PosInfo getWirePosition(WireId wire) const;
void getPipPosition(PipId pip, float &x, float &y) const; PosInfo getPipPosition(PipId pip) const;
float estimateDelay(PosInfo src, PosInfo dst) const;
std::vector<GraphicElement> getBelGraphics(BelId bel) const; std::vector<GraphicElement> getBelGraphics(BelId bel) const;
std::vector<GraphicElement> getWireGraphics(WireId wire) const; std::vector<GraphicElement> getWireGraphics(WireId wire) const;

View File

@ -17,6 +17,7 @@
* *
*/ */
#include <math.h>
#include "log.h" #include "log.h"
#include "nextpnr.h" #include "nextpnr.h"
@ -230,27 +231,40 @@ PipId Chip::getPipByName(IdString name) const
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
void Chip::getBelPosition(BelId bel, float &x, float &y) const PosInfo Chip::getBelPosition(BelId bel) const
{ {
PosInfo pos;
assert(bel != BelId()); assert(bel != BelId());
x = chip_info.bel_data[bel.index].x; pos.x = chip_info.bel_data[bel.index].x;
y = chip_info.bel_data[bel.index].y; pos.y = chip_info.bel_data[bel.index].y;
return pos;
} }
void Chip::getWirePosition(WireId wire, float &x, float &y) const PosInfo Chip::getWirePosition(WireId wire) const
{ {
PosInfo pos;
assert(wire != WireId()); assert(wire != WireId());
x = chip_info.wire_data[wire.index].x; pos.x = chip_info.wire_data[wire.index].x;
y = chip_info.wire_data[wire.index].y; pos.y = chip_info.wire_data[wire.index].y;
return pos;
} }
void Chip::getPipPosition(PipId pip, float &x, float &y) const PosInfo Chip::getPipPosition(PipId pip) const
{ {
PosInfo pos;
assert(pip != PipId()); assert(pip != PipId());
x = chip_info.pip_data[pip.index].x; pos.x = chip_info.pip_data[pip.index].x;
y = chip_info.pip_data[pip.index].y; pos.y = chip_info.pip_data[pip.index].y;
return pos;
} }
float Chip::estimateDelay(PosInfo src, PosInfo dst) const
{
return fabsf(src.x - dst.x) + fabsf(src.x - dst.x);
}
// -----------------------------------------------------------------------
std::vector<GraphicElement> Chip::getBelGraphics(BelId bel) const std::vector<GraphicElement> Chip::getBelGraphics(BelId bel) const
{ {
std::vector<GraphicElement> ret; std::vector<GraphicElement> ret;

View File

@ -42,6 +42,11 @@ struct DelayInfo
} }
}; };
struct PosInfo
{
float x = 0, y = 0;
};
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
enum BelType enum BelType
@ -679,9 +684,12 @@ struct Chip
// ------------------------------------------------- // -------------------------------------------------
void getBelPosition(BelId bel, float &x, float &y) const; PosInfo getBelPosition(BelId bel) const;
void getWirePosition(WireId wire, float &x, float &y) const; PosInfo getWirePosition(WireId wire) const;
void getPipPosition(PipId pip, float &x, float &y) const; PosInfo getPipPosition(PipId pip) const;
float estimateDelay(PosInfo src, PosInfo dst) const;
// -------------------------------------------------
std::vector<GraphicElement> getBelGraphics(BelId bel) const; std::vector<GraphicElement> getBelGraphics(BelId bel) const;
std::vector<GraphicElement> getWireGraphics(WireId wire) const; std::vector<GraphicElement> getWireGraphics(WireId wire) const;