aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2019-10-11 17:52:57 +0200
committerMiodrag Milanovic <mmicko@gmail.com>2019-10-20 09:41:48 +0200
commit0b4ced96ecfd9ba216bccca5b073d23ed104a89f (patch)
treee1780931845909fc6fa11cc249f11753b89779ba /ecp5
parent3e117ce7925165e1f4ae61011b5444dfc3a78627 (diff)
downloadnextpnr-0b4ced96ecfd9ba216bccca5b073d23ed104a89f.tar.gz
nextpnr-0b4ced96ecfd9ba216bccca5b073d23ed104a89f.tar.bz2
nextpnr-0b4ced96ecfd9ba216bccca5b073d23ed104a89f.zip
draw rest of slice wires and more from switchbox
Diffstat (limited to 'ecp5')
-rw-r--r--ecp5/arch.cc55
-rw-r--r--ecp5/gfx.h58
2 files changed, 106 insertions, 7 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index 818085ad..3c56e057 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -633,8 +633,6 @@ std::vector<GraphicElement> Arch::getDecalGraphics(DecalId decal) const
GraphicElement el;
el.type = GraphicElement::TYPE_LINE;
el.style = decal.active ? GraphicElement::STYLE_ACTIVE : GraphicElement::STYLE_INACTIVE;
- int offset = 0;
- int wire_offset = 0;
if (tilewire >= TILE_WIRE_D7_SLICE && tilewire <=TILE_WIRE_CLK0_SLICE)
{
el.x1 = x + slice_x1 - 0.005f;
@@ -651,7 +649,58 @@ std::vector<GraphicElement> Arch::getDecalGraphics(DecalId decal) const
el.y2 = y + slice_y2 - 0.0017f * (tilewire - TILE_WIRE_DUMMY_100 + 1) + 3*slice_pitch;
ret.push_back(el);
}
- }
+ }
+ if (tilewire >= TILE_WIRE_FCO && tilewire <=TILE_WIRE_FCI)
+ {
+ GraphicElement el;
+ el.type = GraphicElement::TYPE_LINE;
+ el.style = decal.active ? GraphicElement::STYLE_ACTIVE : GraphicElement::STYLE_INACTIVE;
+ el.x1 = x + switchbox_x2;
+ el.x2 = x + slice_x1 - 0.005f;
+ el.y1 = y + slice_y2 - 0.0017f * (tilewire - TILE_WIRE_LSR1 - 5) + 3*slice_pitch;
+ el.y2 = y + slice_y2 - 0.0017f * (tilewire - TILE_WIRE_LSR1 - 5) + 3*slice_pitch;
+ ret.push_back(el);
+ }
+ if (tilewire >= TILE_WIRE_FCO_SLICE && tilewire <=TILE_WIRE_FCOA_SLICE)
+ {
+ GraphicElement el;
+ el.type = GraphicElement::TYPE_LINE;
+ el.style = decal.active ? GraphicElement::STYLE_ACTIVE : GraphicElement::STYLE_INACTIVE;
+ el.x1 = x + slice_x1 + 0.005f;
+ el.x2 = x + slice_x1 + 0.005f;
+ if (tilewire==TILE_WIRE_FCO_SLICE)
+ el.y1 = y + slice_y2 + 0.0017f + (3-(tilewire - TILE_WIRE_FCO_SLICE))*slice_pitch;
+ else
+ el.y1 = y + slice_y2 + 0.00125f + (3-(tilewire - TILE_WIRE_FCO_SLICE))*slice_pitch;
+ el.y2 = y + slice_y2 + (3-(tilewire - TILE_WIRE_FCO_SLICE))*slice_pitch;
+ ret.push_back(el);
+ if (tilewire==TILE_WIRE_FCO_SLICE) {
+ el.x1 = x + slice_x1 - 0.005f;
+ el.x2 = x + slice_x1 + 0.005f;
+ el.y2 = el.y1;
+ ret.push_back(el);
+ }
+ }
+ if (tilewire >= TILE_WIRE_FCID_SLICE && tilewire <=TILE_WIRE_FCI_SLICE)
+ {
+ GraphicElement el;
+ el.type = GraphicElement::TYPE_LINE;
+ el.style = decal.active ? GraphicElement::STYLE_ACTIVE : GraphicElement::STYLE_INACTIVE;
+ el.x1 = x + slice_x1 + 0.005f;
+ el.x2 = x + slice_x1 + 0.005f;
+ if (tilewire==TILE_WIRE_FCI_SLICE)
+ el.y1 = y + slice_y1 - 0.0007f + (3-(tilewire - TILE_WIRE_FCID_SLICE))*slice_pitch;
+ else
+ el.y1 = y + slice_y1 - 0.00125f + (3-(tilewire - TILE_WIRE_FCID_SLICE))*slice_pitch;
+ el.y2 = y + slice_y1 + (3-(tilewire - TILE_WIRE_FCID_SLICE))*slice_pitch;
+ ret.push_back(el);
+ if (tilewire==TILE_WIRE_FCI_SLICE) {
+ el.x1 = x + slice_x1 - 0.005f;
+ el.x2 = x + slice_x1 + 0.005f;
+ el.y2 = el.y1;
+ ret.push_back(el);
+ }
+ }
}
if (decal.type == DecalId::TYPE_BEL) {
BelId bel;
diff --git a/ecp5/gfx.h b/ecp5/gfx.h
index aa8cc398..a5c62508 100644
--- a/ecp5/gfx.h
+++ b/ecp5/gfx.h
@@ -144,12 +144,13 @@ enum GfxTileWireId
TILE_WIRE_CLK0_SLICE,
TILE_WIRE_FCO_SLICE,
- TILE_WIRE_FCID_SLICE,
TILE_WIRE_FCOC_SLICE,
- TILE_WIRE_FCIC_SLICE,
TILE_WIRE_FCOB_SLICE,
- TILE_WIRE_FCIB_SLICE,
TILE_WIRE_FCOA_SLICE,
+
+ TILE_WIRE_FCID_SLICE,
+ TILE_WIRE_FCIC_SLICE,
+ TILE_WIRE_FCIB_SLICE,
TILE_WIRE_FCI_SLICE,
TILE_WIRE_DUMMY_100,
@@ -249,8 +250,8 @@ enum GfxTileWireId
TILE_WIRE_LSR0,
TILE_WIRE_CLK1,
TILE_WIRE_CLK0,
- TILE_WIRE_DUMMY_500,
TILE_WIRE_FCO,
+ TILE_WIRE_DUMMY_500,
TILE_WIRE_D7,
TILE_WIRE_C7,
TILE_WIRE_B7,
@@ -295,7 +296,56 @@ enum GfxTileWireId
TILE_WIRE_DUMMY_510,
TILE_WIRE_DUMMY_511,
+ TILE_WIRE_DUMMY_512,
+ TILE_WIRE_DUMMY_513,
+ TILE_WIRE_DUMMY_514,
+
+ TILE_WIRE_D3,
+ TILE_WIRE_C3,
+ TILE_WIRE_B3,
+ TILE_WIRE_A3,
+ TILE_WIRE_D2,
+ TILE_WIRE_C2,
+ TILE_WIRE_B2,
+ TILE_WIRE_A2,
+ TILE_WIRE_DI3,
+ TILE_WIRE_DI2,
+ TILE_WIRE_M3,
+ TILE_WIRE_M2,
+ TILE_WIRE_FXBB,
+ TILE_WIRE_FXAB,
+ TILE_WIRE_DUMMY_515,
+ TILE_WIRE_DUMMY_516,
+ TILE_WIRE_CE1,
+ TILE_WIRE_DUMMY_517,
+ TILE_WIRE_DUMMY_518,
+
+ TILE_WIRE_DUMMY_519,
+ TILE_WIRE_DUMMY_520,
+ TILE_WIRE_DUMMY_521,
+
+ TILE_WIRE_D1,
+ TILE_WIRE_C1,
+ TILE_WIRE_B1,
+ TILE_WIRE_A1,
+ TILE_WIRE_D0,
+ TILE_WIRE_C0,
+ TILE_WIRE_B0,
+ TILE_WIRE_A0,
+ TILE_WIRE_DI1,
+ TILE_WIRE_DI0,
+ TILE_WIRE_M1,
+ TILE_WIRE_M0,
+ TILE_WIRE_FXBA,
+ TILE_WIRE_FXAA,
+ TILE_WIRE_DUMMY_522,
+ TILE_WIRE_DUMMY_523,
+ TILE_WIRE_CE0,
+ TILE_WIRE_DUMMY_524,
+ TILE_WIRE_DUMMY_525,
+ TILE_WIRE_DUMMY_526,
+ TILE_WIRE_FCI,
};
NEXTPNR_NAMESPACE_END