Add pybindings for new APIs.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
This commit is contained in:
parent
9fe546f279
commit
9089ee2d16
@ -110,3 +110,19 @@ fn_wrapper_0a<Context, decltype(&Context::archId), &Context::archId, conv_to_str
|
||||
|
||||
fn_wrapper_2a_v<Context, decltype(&Context::writeSVG), &Context::writeSVG, pass_through<std::string>,
|
||||
pass_through<std::string>>::def_wrap(ctx_cls, "writeSVG");
|
||||
|
||||
// const\_range\<BelBucketId\> getBelBuckets() const
|
||||
fn_wrapper_0a<Context, decltype(&Context::getBelBuckets), &Context::getBelBuckets, wrap_context<BelBucketRange>>::def_wrap(ctx_cls,
|
||||
"getBelBuckets");
|
||||
// BelBucketId getBelBucketForBel(BelId bel) const
|
||||
fn_wrapper_1a<Context, decltype(&Context::getBelBucketForBel), &Context::getBelBucketForBel, conv_to_str<BelBucketId>,
|
||||
conv_from_str<BelId>>::def_wrap(ctx_cls, "getBelBucketForBel");
|
||||
// BelBucketId getBelBucketForCellType(IdString cell\_type) const
|
||||
fn_wrapper_1a<Context, decltype(&Context::getBelBucketForCellType), &Context::getBelBucketForCellType, conv_to_str<BelBucketId>,
|
||||
conv_from_str<IdString>>::def_wrap(ctx_cls, "getBelBucketForCellType");
|
||||
// const\_range\<BelId\> getBelsInBucket(BelBucketId bucket) const
|
||||
fn_wrapper_1a<Context, decltype(&Context::getBelsInBucket), &Context::getBelsInBucket, wrap_context<BelRangeForBelBucket>,
|
||||
conv_from_str<BelBucketId>>::def_wrap(ctx_cls, "getBelsInBucket");
|
||||
// bool isValidBelForCellType(IdString cell\_type, BelId bel) const
|
||||
fn_wrapper_2a<Context, decltype(&Context::isValidBelForCellType), &Context::isValidBelForCellType, pass_through<bool>,
|
||||
conv_from_str<IdString>, conv_from_str<BelId>>::def_wrap(ctx_cls, "isValidBelForCellType");
|
||||
|
@ -59,6 +59,8 @@ void arch_wrap_python(py::module &m)
|
||||
typedef const PipRange UphillPipRange;
|
||||
typedef const PipRange DownhillPipRange;
|
||||
|
||||
typedef const std::vector<BelBucketId> & BelBucketRange;
|
||||
typedef const std::vector<BelId> & BelRangeForBelBucket;
|
||||
#include "arch_pybindings_shared.h"
|
||||
|
||||
WRAP_RANGE(m, Bel, conv_to_str<BelId>);
|
||||
|
@ -76,6 +76,18 @@ template <> struct string_converter<PipId>
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct string_converter<BelBucketId>
|
||||
{
|
||||
BelBucketId from_str(Context *ctx, std::string name) { return ctx->getBelBucketByName(ctx->id(name)); }
|
||||
|
||||
std::string to_str(Context *ctx, BelBucketId id)
|
||||
{
|
||||
if (id == BelBucketId())
|
||||
throw bad_wrap();
|
||||
return ctx->getBelBucketName(id).str(ctx);
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct string_converter<BelPin>
|
||||
{
|
||||
BelPin from_str(Context *ctx, std::string name)
|
||||
|
@ -226,6 +226,32 @@ void arch_wrap_python(py::module &m)
|
||||
pass_through<DelayInfo>>::def_wrap(ctx_cls, "addCellTimingClockToOut", "cell"_a, "port"_a,
|
||||
"clock"_a, "clktoq"_a);
|
||||
|
||||
// const\_range\<BelBucketId\> getBelBuckets() const
|
||||
fn_wrapper_0a<Context, decltype(&Context::getBelBuckets),
|
||||
&Context::getBelBuckets,
|
||||
wrap_context<const std::vector<BelBucketId> &>>::def_wrap(ctx_cls, "getBelBuckets");
|
||||
|
||||
// BelBucketId getBelBucketForBel(BelId bel) const
|
||||
fn_wrapper_1a<Context, decltype(&Context::getBelBucketForBel),
|
||||
&Context::getBelBucketForBel, conv_to_str<BelBucketId>,
|
||||
conv_from_str<BelId>>::def_wrap(ctx_cls, "getBelBucketForBel");
|
||||
|
||||
// BelBucketId getBelBucketForCellType(IdString cell\_type) const
|
||||
fn_wrapper_1a<Context, decltype(&Context::getBelBucketForCellType),
|
||||
&Context::getBelBucketForCellType, conv_to_str<BelBucketId>,
|
||||
conv_from_str<IdString>>::def_wrap(ctx_cls, "getBelBucketForCellType");
|
||||
|
||||
// const\_range\<BelId\> getBelsInBucket(BelBucketId bucket) const
|
||||
fn_wrapper_1a<Context, decltype(&Context::getBelsInBucket),
|
||||
&Context::getBelsInBucket, wrap_context<const std::vector<BelId> &>,
|
||||
conv_from_str<BelBucketId>>::def_wrap(ctx_cls, "getBelsInBucket");
|
||||
|
||||
// bool isValidBelForCellType(IdString cell\_type, BelId bel) const
|
||||
fn_wrapper_2a<Context, decltype(&Context::isValidBelForCellType),
|
||||
&Context::isValidBelForCellType, pass_through<bool>,
|
||||
conv_from_str<IdString>, conv_from_str<BelId>>::def_wrap(
|
||||
ctx_cls, "isValidBelForCellType");
|
||||
|
||||
WRAP_MAP_UPTR(m, CellMap, "IdCellMap");
|
||||
WRAP_MAP_UPTR(m, NetMap, "IdNetMap");
|
||||
WRAP_MAP(m, HierarchyMap, wrap_context<HierarchicalCell &>, "HierarchyMap");
|
||||
|
@ -75,6 +75,8 @@ void arch_wrap_python(py::module &m)
|
||||
typedef const PipRange UphillPipRange;
|
||||
typedef const PipRange DownhillPipRange;
|
||||
|
||||
typedef const std::vector<BelBucketId> & BelBucketRange;
|
||||
typedef const std::vector<BelId> & BelRangeForBelBucket;
|
||||
#include "arch_pybindings_shared.h"
|
||||
|
||||
WRAP_RANGE(m, Bel, conv_to_str<BelId>);
|
||||
|
@ -76,6 +76,18 @@ template <> struct string_converter<PipId>
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct string_converter<BelBucketId>
|
||||
{
|
||||
BelBucketId from_str(Context *ctx, std::string name) { return ctx->getBelBucketByName(ctx->id(name)); }
|
||||
|
||||
std::string to_str(Context *ctx, BelBucketId id)
|
||||
{
|
||||
if (id == BelBucketId())
|
||||
throw bad_wrap();
|
||||
return ctx->getBelBucketName(id).str(ctx);
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct string_converter<BelPin>
|
||||
{
|
||||
BelPin from_str(Context *ctx, std::string name)
|
||||
|
@ -55,6 +55,9 @@ void arch_wrap_python(py::module &m)
|
||||
typedef UpDownhillPipRange DownhillPipRange;
|
||||
typedef WireBelPinRange BelPinRange;
|
||||
|
||||
typedef const std::vector<BelBucketId> & BelBucketRange;
|
||||
typedef const std::vector<BelId> & BelRangeForBelBucket;
|
||||
|
||||
#include "arch_pybindings_shared.h"
|
||||
|
||||
WRAP_RANGE(m, Bel, conv_to_str<BelId>);
|
||||
|
@ -76,6 +76,18 @@ template <> struct string_converter<PipId>
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct string_converter<BelBucketId>
|
||||
{
|
||||
BelBucketId from_str(Context *ctx, std::string name) { return ctx->getBelBucketByName(ctx->id(name)); }
|
||||
|
||||
std::string to_str(Context *ctx, BelBucketId id)
|
||||
{
|
||||
if (id == BelBucketId())
|
||||
throw bad_wrap();
|
||||
return ctx->getBelBucketName(id).str(ctx);
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct string_converter<BelPin>
|
||||
{
|
||||
BelPin from_str(Context *ctx, std::string name)
|
||||
|
Loading…
Reference in New Issue
Block a user