ice40: Refactor PortPin and add Python binding
Signed-off-by: David Shah <davey1576@gmail.com>
This commit is contained in:
parent
efd8722fd9
commit
547d4fe3ee
212
ice40/chip.cc
212
ice40/chip.cc
@ -51,111 +51,7 @@ IdString PortPinToId(PortPin type)
|
|||||||
if (type == PIN_##t) \
|
if (type == PIN_##t) \
|
||||||
return #t;
|
return #t;
|
||||||
|
|
||||||
X(IN_0)
|
#include "portpins.inc"
|
||||||
X(IN_1)
|
|
||||||
X(IN_2)
|
|
||||||
X(IN_3)
|
|
||||||
X(O)
|
|
||||||
X(LO)
|
|
||||||
X(CIN)
|
|
||||||
X(COUT)
|
|
||||||
X(CEN)
|
|
||||||
X(CLK)
|
|
||||||
X(SR)
|
|
||||||
|
|
||||||
X(MASK_0)
|
|
||||||
X(MASK_1)
|
|
||||||
X(MASK_2)
|
|
||||||
X(MASK_3)
|
|
||||||
X(MASK_4)
|
|
||||||
X(MASK_5)
|
|
||||||
X(MASK_6)
|
|
||||||
X(MASK_7)
|
|
||||||
X(MASK_8)
|
|
||||||
X(MASK_9)
|
|
||||||
X(MASK_10)
|
|
||||||
X(MASK_11)
|
|
||||||
X(MASK_12)
|
|
||||||
X(MASK_13)
|
|
||||||
X(MASK_14)
|
|
||||||
X(MASK_15)
|
|
||||||
|
|
||||||
X(RDATA_0)
|
|
||||||
X(RDATA_1)
|
|
||||||
X(RDATA_2)
|
|
||||||
X(RDATA_3)
|
|
||||||
X(RDATA_4)
|
|
||||||
X(RDATA_5)
|
|
||||||
X(RDATA_6)
|
|
||||||
X(RDATA_7)
|
|
||||||
X(RDATA_8)
|
|
||||||
X(RDATA_9)
|
|
||||||
X(RDATA_10)
|
|
||||||
X(RDATA_11)
|
|
||||||
X(RDATA_12)
|
|
||||||
X(RDATA_13)
|
|
||||||
X(RDATA_14)
|
|
||||||
X(RDATA_15)
|
|
||||||
|
|
||||||
X(WDATA_0)
|
|
||||||
X(WDATA_1)
|
|
||||||
X(WDATA_2)
|
|
||||||
X(WDATA_3)
|
|
||||||
X(WDATA_4)
|
|
||||||
X(WDATA_5)
|
|
||||||
X(WDATA_6)
|
|
||||||
X(WDATA_7)
|
|
||||||
X(WDATA_8)
|
|
||||||
X(WDATA_9)
|
|
||||||
X(WDATA_10)
|
|
||||||
X(WDATA_11)
|
|
||||||
X(WDATA_12)
|
|
||||||
X(WDATA_13)
|
|
||||||
X(WDATA_14)
|
|
||||||
X(WDATA_15)
|
|
||||||
|
|
||||||
X(WADDR_0)
|
|
||||||
X(WADDR_1)
|
|
||||||
X(WADDR_2)
|
|
||||||
X(WADDR_3)
|
|
||||||
X(WADDR_4)
|
|
||||||
X(WADDR_5)
|
|
||||||
X(WADDR_6)
|
|
||||||
X(WADDR_7)
|
|
||||||
X(WADDR_8)
|
|
||||||
X(WADDR_9)
|
|
||||||
X(WADDR_10)
|
|
||||||
|
|
||||||
X(RADDR_0)
|
|
||||||
X(RADDR_1)
|
|
||||||
X(RADDR_2)
|
|
||||||
X(RADDR_3)
|
|
||||||
X(RADDR_4)
|
|
||||||
X(RADDR_5)
|
|
||||||
X(RADDR_6)
|
|
||||||
X(RADDR_7)
|
|
||||||
X(RADDR_8)
|
|
||||||
X(RADDR_9)
|
|
||||||
X(RADDR_10)
|
|
||||||
|
|
||||||
X(WCLK)
|
|
||||||
X(WCLKE)
|
|
||||||
X(WE)
|
|
||||||
|
|
||||||
X(RCLK)
|
|
||||||
X(RCLKE)
|
|
||||||
X(RE)
|
|
||||||
|
|
||||||
X(PACKAGE_PIN)
|
|
||||||
X(LATCH_INPUT_VALUE)
|
|
||||||
X(CLOCK_ENABLE)
|
|
||||||
X(INPUT_CLK)
|
|
||||||
X(OUTPUT_CLK)
|
|
||||||
X(OUTPUT_ENABLE)
|
|
||||||
X(D_OUT_0)
|
|
||||||
X(D_OUT_1)
|
|
||||||
X(D_IN_0)
|
|
||||||
X(D_IN_1)
|
|
||||||
|
|
||||||
#undef X
|
#undef X
|
||||||
return IdString();
|
return IdString();
|
||||||
@ -167,111 +63,7 @@ PortPin PortPinFromId(IdString id)
|
|||||||
if (id == #t) \
|
if (id == #t) \
|
||||||
return PIN_##t;
|
return PIN_##t;
|
||||||
|
|
||||||
X(IN_0)
|
#include "portpins.inc"
|
||||||
X(IN_1)
|
|
||||||
X(IN_2)
|
|
||||||
X(IN_3)
|
|
||||||
X(O)
|
|
||||||
X(LO)
|
|
||||||
X(CIN)
|
|
||||||
X(COUT)
|
|
||||||
X(CEN)
|
|
||||||
X(CLK)
|
|
||||||
X(SR)
|
|
||||||
|
|
||||||
X(MASK_0)
|
|
||||||
X(MASK_1)
|
|
||||||
X(MASK_2)
|
|
||||||
X(MASK_3)
|
|
||||||
X(MASK_4)
|
|
||||||
X(MASK_5)
|
|
||||||
X(MASK_6)
|
|
||||||
X(MASK_7)
|
|
||||||
X(MASK_8)
|
|
||||||
X(MASK_9)
|
|
||||||
X(MASK_10)
|
|
||||||
X(MASK_11)
|
|
||||||
X(MASK_12)
|
|
||||||
X(MASK_13)
|
|
||||||
X(MASK_14)
|
|
||||||
X(MASK_15)
|
|
||||||
|
|
||||||
X(RDATA_0)
|
|
||||||
X(RDATA_1)
|
|
||||||
X(RDATA_2)
|
|
||||||
X(RDATA_3)
|
|
||||||
X(RDATA_4)
|
|
||||||
X(RDATA_5)
|
|
||||||
X(RDATA_6)
|
|
||||||
X(RDATA_7)
|
|
||||||
X(RDATA_8)
|
|
||||||
X(RDATA_9)
|
|
||||||
X(RDATA_10)
|
|
||||||
X(RDATA_11)
|
|
||||||
X(RDATA_12)
|
|
||||||
X(RDATA_13)
|
|
||||||
X(RDATA_14)
|
|
||||||
X(RDATA_15)
|
|
||||||
|
|
||||||
X(WDATA_0)
|
|
||||||
X(WDATA_1)
|
|
||||||
X(WDATA_2)
|
|
||||||
X(WDATA_3)
|
|
||||||
X(WDATA_4)
|
|
||||||
X(WDATA_5)
|
|
||||||
X(WDATA_6)
|
|
||||||
X(WDATA_7)
|
|
||||||
X(WDATA_8)
|
|
||||||
X(WDATA_9)
|
|
||||||
X(WDATA_10)
|
|
||||||
X(WDATA_11)
|
|
||||||
X(WDATA_12)
|
|
||||||
X(WDATA_13)
|
|
||||||
X(WDATA_14)
|
|
||||||
X(WDATA_15)
|
|
||||||
|
|
||||||
X(WADDR_0)
|
|
||||||
X(WADDR_1)
|
|
||||||
X(WADDR_2)
|
|
||||||
X(WADDR_3)
|
|
||||||
X(WADDR_4)
|
|
||||||
X(WADDR_5)
|
|
||||||
X(WADDR_6)
|
|
||||||
X(WADDR_7)
|
|
||||||
X(WADDR_8)
|
|
||||||
X(WADDR_9)
|
|
||||||
X(WADDR_10)
|
|
||||||
|
|
||||||
X(RADDR_0)
|
|
||||||
X(RADDR_1)
|
|
||||||
X(RADDR_2)
|
|
||||||
X(RADDR_3)
|
|
||||||
X(RADDR_4)
|
|
||||||
X(RADDR_5)
|
|
||||||
X(RADDR_6)
|
|
||||||
X(RADDR_7)
|
|
||||||
X(RADDR_8)
|
|
||||||
X(RADDR_9)
|
|
||||||
X(RADDR_10)
|
|
||||||
|
|
||||||
X(WCLK)
|
|
||||||
X(WCLKE)
|
|
||||||
X(WE)
|
|
||||||
|
|
||||||
X(RCLK)
|
|
||||||
X(RCLKE)
|
|
||||||
X(RE)
|
|
||||||
|
|
||||||
X(PACKAGE_PIN)
|
|
||||||
X(LATCH_INPUT_VALUE)
|
|
||||||
X(CLOCK_ENABLE)
|
|
||||||
X(INPUT_CLK)
|
|
||||||
X(OUTPUT_CLK)
|
|
||||||
X(OUTPUT_ENABLE)
|
|
||||||
X(D_OUT_0)
|
|
||||||
X(D_OUT_1)
|
|
||||||
X(D_IN_0)
|
|
||||||
X(D_IN_1)
|
|
||||||
|
|
||||||
#undef X
|
#undef X
|
||||||
return PIN_NIL;
|
return PIN_NIL;
|
||||||
|
111
ice40/chip.h
111
ice40/chip.h
@ -46,112 +46,9 @@ BelType belTypeFromId(IdString id);
|
|||||||
enum PortPin
|
enum PortPin
|
||||||
{
|
{
|
||||||
PIN_NIL,
|
PIN_NIL,
|
||||||
|
#define X(t) PIN_##t,
|
||||||
PIN_IN_0,
|
#include "portpins.inc"
|
||||||
PIN_IN_1,
|
#undef X
|
||||||
PIN_IN_2,
|
|
||||||
PIN_IN_3,
|
|
||||||
PIN_O,
|
|
||||||
PIN_LO,
|
|
||||||
PIN_CIN,
|
|
||||||
PIN_COUT,
|
|
||||||
PIN_CEN,
|
|
||||||
PIN_CLK,
|
|
||||||
PIN_SR,
|
|
||||||
|
|
||||||
PIN_MASK_0,
|
|
||||||
PIN_MASK_1,
|
|
||||||
PIN_MASK_2,
|
|
||||||
PIN_MASK_3,
|
|
||||||
PIN_MASK_4,
|
|
||||||
PIN_MASK_5,
|
|
||||||
PIN_MASK_6,
|
|
||||||
PIN_MASK_7,
|
|
||||||
PIN_MASK_8,
|
|
||||||
PIN_MASK_9,
|
|
||||||
PIN_MASK_10,
|
|
||||||
PIN_MASK_11,
|
|
||||||
PIN_MASK_12,
|
|
||||||
PIN_MASK_13,
|
|
||||||
PIN_MASK_14,
|
|
||||||
PIN_MASK_15,
|
|
||||||
|
|
||||||
PIN_RDATA_0,
|
|
||||||
PIN_RDATA_1,
|
|
||||||
PIN_RDATA_2,
|
|
||||||
PIN_RDATA_3,
|
|
||||||
PIN_RDATA_4,
|
|
||||||
PIN_RDATA_5,
|
|
||||||
PIN_RDATA_6,
|
|
||||||
PIN_RDATA_7,
|
|
||||||
PIN_RDATA_8,
|
|
||||||
PIN_RDATA_9,
|
|
||||||
PIN_RDATA_10,
|
|
||||||
PIN_RDATA_11,
|
|
||||||
PIN_RDATA_12,
|
|
||||||
PIN_RDATA_13,
|
|
||||||
PIN_RDATA_14,
|
|
||||||
PIN_RDATA_15,
|
|
||||||
|
|
||||||
PIN_WDATA_0,
|
|
||||||
PIN_WDATA_1,
|
|
||||||
PIN_WDATA_2,
|
|
||||||
PIN_WDATA_3,
|
|
||||||
PIN_WDATA_4,
|
|
||||||
PIN_WDATA_5,
|
|
||||||
PIN_WDATA_6,
|
|
||||||
PIN_WDATA_7,
|
|
||||||
PIN_WDATA_8,
|
|
||||||
PIN_WDATA_9,
|
|
||||||
PIN_WDATA_10,
|
|
||||||
PIN_WDATA_11,
|
|
||||||
PIN_WDATA_12,
|
|
||||||
PIN_WDATA_13,
|
|
||||||
PIN_WDATA_14,
|
|
||||||
PIN_WDATA_15,
|
|
||||||
|
|
||||||
PIN_WADDR_0,
|
|
||||||
PIN_WADDR_1,
|
|
||||||
PIN_WADDR_2,
|
|
||||||
PIN_WADDR_3,
|
|
||||||
PIN_WADDR_4,
|
|
||||||
PIN_WADDR_5,
|
|
||||||
PIN_WADDR_6,
|
|
||||||
PIN_WADDR_7,
|
|
||||||
PIN_WADDR_8,
|
|
||||||
PIN_WADDR_9,
|
|
||||||
PIN_WADDR_10,
|
|
||||||
|
|
||||||
PIN_RADDR_0,
|
|
||||||
PIN_RADDR_1,
|
|
||||||
PIN_RADDR_2,
|
|
||||||
PIN_RADDR_3,
|
|
||||||
PIN_RADDR_4,
|
|
||||||
PIN_RADDR_5,
|
|
||||||
PIN_RADDR_6,
|
|
||||||
PIN_RADDR_7,
|
|
||||||
PIN_RADDR_8,
|
|
||||||
PIN_RADDR_9,
|
|
||||||
PIN_RADDR_10,
|
|
||||||
|
|
||||||
PIN_WCLK,
|
|
||||||
PIN_WCLKE,
|
|
||||||
PIN_WE,
|
|
||||||
|
|
||||||
PIN_RCLK,
|
|
||||||
PIN_RCLKE,
|
|
||||||
PIN_RE,
|
|
||||||
|
|
||||||
PIN_PACKAGE_PIN,
|
|
||||||
PIN_LATCH_INPUT_VALUE,
|
|
||||||
PIN_CLOCK_ENABLE,
|
|
||||||
PIN_INPUT_CLK,
|
|
||||||
PIN_OUTPUT_CLK,
|
|
||||||
PIN_OUTPUT_ENABLE,
|
|
||||||
PIN_D_OUT_0,
|
|
||||||
PIN_D_OUT_1,
|
|
||||||
PIN_D_IN_0,
|
|
||||||
PIN_D_IN_1
|
|
||||||
};
|
};
|
||||||
|
|
||||||
IdString PortPinToId(PortPin type);
|
IdString PortPinToId(PortPin type);
|
||||||
@ -268,7 +165,7 @@ template <> struct hash<PipId>
|
|||||||
return wire.index;
|
return wire.index;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
} // namespace std
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -22,10 +22,10 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "design.h"
|
#include "design.h"
|
||||||
#include "jsonparse.h"
|
#include "jsonparse.h"
|
||||||
|
#include "log.h"
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "pybindings.h"
|
#include "pybindings.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "log.h"
|
|
||||||
|
|
||||||
void svg_dump_el(const GraphicElement &el)
|
void svg_dump_el(const GraphicElement &el)
|
||||||
{
|
{
|
||||||
|
105
ice40/portpins.inc
Normal file
105
ice40/portpins.inc
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
X(IN_0)
|
||||||
|
X(IN_1)
|
||||||
|
X(IN_2)
|
||||||
|
X(IN_3)
|
||||||
|
X(O)
|
||||||
|
X(LO)
|
||||||
|
X(CIN)
|
||||||
|
X(COUT)
|
||||||
|
X(CEN)
|
||||||
|
X(CLK)
|
||||||
|
X(SR)
|
||||||
|
|
||||||
|
X(MASK_0)
|
||||||
|
X(MASK_1)
|
||||||
|
X(MASK_2)
|
||||||
|
X(MASK_3)
|
||||||
|
X(MASK_4)
|
||||||
|
X(MASK_5)
|
||||||
|
X(MASK_6)
|
||||||
|
X(MASK_7)
|
||||||
|
X(MASK_8)
|
||||||
|
X(MASK_9)
|
||||||
|
X(MASK_10)
|
||||||
|
X(MASK_11)
|
||||||
|
X(MASK_12)
|
||||||
|
X(MASK_13)
|
||||||
|
X(MASK_14)
|
||||||
|
X(MASK_15)
|
||||||
|
|
||||||
|
X(RDATA_0)
|
||||||
|
X(RDATA_1)
|
||||||
|
X(RDATA_2)
|
||||||
|
X(RDATA_3)
|
||||||
|
X(RDATA_4)
|
||||||
|
X(RDATA_5)
|
||||||
|
X(RDATA_6)
|
||||||
|
X(RDATA_7)
|
||||||
|
X(RDATA_8)
|
||||||
|
X(RDATA_9)
|
||||||
|
X(RDATA_10)
|
||||||
|
X(RDATA_11)
|
||||||
|
X(RDATA_12)
|
||||||
|
X(RDATA_13)
|
||||||
|
X(RDATA_14)
|
||||||
|
X(RDATA_15)
|
||||||
|
|
||||||
|
X(WDATA_0)
|
||||||
|
X(WDATA_1)
|
||||||
|
X(WDATA_2)
|
||||||
|
X(WDATA_3)
|
||||||
|
X(WDATA_4)
|
||||||
|
X(WDATA_5)
|
||||||
|
X(WDATA_6)
|
||||||
|
X(WDATA_7)
|
||||||
|
X(WDATA_8)
|
||||||
|
X(WDATA_9)
|
||||||
|
X(WDATA_10)
|
||||||
|
X(WDATA_11)
|
||||||
|
X(WDATA_12)
|
||||||
|
X(WDATA_13)
|
||||||
|
X(WDATA_14)
|
||||||
|
X(WDATA_15)
|
||||||
|
|
||||||
|
X(WADDR_0)
|
||||||
|
X(WADDR_1)
|
||||||
|
X(WADDR_2)
|
||||||
|
X(WADDR_3)
|
||||||
|
X(WADDR_4)
|
||||||
|
X(WADDR_5)
|
||||||
|
X(WADDR_6)
|
||||||
|
X(WADDR_7)
|
||||||
|
X(WADDR_8)
|
||||||
|
X(WADDR_9)
|
||||||
|
X(WADDR_10)
|
||||||
|
|
||||||
|
X(RADDR_0)
|
||||||
|
X(RADDR_1)
|
||||||
|
X(RADDR_2)
|
||||||
|
X(RADDR_3)
|
||||||
|
X(RADDR_4)
|
||||||
|
X(RADDR_5)
|
||||||
|
X(RADDR_6)
|
||||||
|
X(RADDR_7)
|
||||||
|
X(RADDR_8)
|
||||||
|
X(RADDR_9)
|
||||||
|
X(RADDR_10)
|
||||||
|
|
||||||
|
X(WCLK)
|
||||||
|
X(WCLKE)
|
||||||
|
X(WE)
|
||||||
|
|
||||||
|
X(RCLK)
|
||||||
|
X(RCLKE)
|
||||||
|
X(RE)
|
||||||
|
|
||||||
|
X(PACKAGE_PIN)
|
||||||
|
X(LATCH_INPUT_VALUE)
|
||||||
|
X(CLOCK_ENABLE)
|
||||||
|
X(INPUT_CLK)
|
||||||
|
X(OUTPUT_CLK)
|
||||||
|
X(OUTPUT_ENABLE)
|
||||||
|
X(D_OUT_0)
|
||||||
|
X(D_OUT_1)
|
||||||
|
X(D_IN_0)
|
||||||
|
X(D_IN_1)
|
@ -46,6 +46,20 @@ void arch_wrap_python()
|
|||||||
.def_readwrite("index", &WireId::index)
|
.def_readwrite("index", &WireId::index)
|
||||||
.def("nil", &WireId::nil);
|
.def("nil", &WireId::nil);
|
||||||
|
|
||||||
|
class_<PipId>("PipId")
|
||||||
|
.def_readwrite("index", &PipId::index)
|
||||||
|
.def("nil", &WireId::nil);
|
||||||
|
|
||||||
|
class_<BelPin>("BelPin")
|
||||||
|
.def_readwrite("bel", &BelPin::bel)
|
||||||
|
.def_readwrite("pin", &BelPin::pin);
|
||||||
|
|
||||||
|
enum_<PortPin>("PortPin")
|
||||||
|
#define X(t) .value("PIN_" #t, PIN_##t)
|
||||||
|
#include "portpins.inc"
|
||||||
|
;
|
||||||
|
#undef X
|
||||||
|
|
||||||
class_<Chip>("Chip", init<ChipArgs>())
|
class_<Chip>("Chip", init<ChipArgs>())
|
||||||
.def("getBelByName", &Chip::getBelByName)
|
.def("getBelByName", &Chip::getBelByName)
|
||||||
.def("getWireByName", &Chip::getWireByName)
|
.def("getWireByName", &Chip::getWireByName)
|
||||||
|
Loading…
Reference in New Issue
Block a user