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"
NEXTPNR_NAMESPACE_BEGIN
@ -138,6 +139,42 @@ const std::vector<PipId> &Chip::getWireAliases(WireId wire) const
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
{
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 PortPin;
@ -108,9 +113,10 @@ struct Chip
const std::vector<PipId> &getPipsUphill(WireId wire) const;
const std::vector<PipId> &getWireAliases(WireId wire) const;
void getBelPosition(BelId bel, float &x, float &y) const;
void getWirePosition(WireId wire, float &x, float &y) const;
void getPipPosition(PipId pip, float &x, float &y) const;
PosInfo getBelPosition(BelId bel) const;
PosInfo getWirePosition(WireId wire) const;
PosInfo getPipPosition(PipId pip) const;
float estimateDelay(PosInfo src, PosInfo dst) const;
std::vector<GraphicElement> getBelGraphics(BelId bel) const;
std::vector<GraphicElement> getWireGraphics(WireId wire) const;

View File

@ -17,6 +17,7 @@
*
*/
#include <math.h>
#include "log.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());
x = chip_info.bel_data[bel.index].x;
y = chip_info.bel_data[bel.index].y;
pos.x = chip_info.bel_data[bel.index].x;
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());
x = chip_info.wire_data[wire.index].x;
y = chip_info.wire_data[wire.index].y;
pos.x = chip_info.wire_data[wire.index].x;
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());
x = chip_info.pip_data[pip.index].x;
y = chip_info.pip_data[pip.index].y;
pos.x = chip_info.pip_data[pip.index].x;
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> ret;

View File

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