From 0b4ced96ecfd9ba216bccca5b073d23ed104a89f Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 11 Oct 2019 17:52:57 +0200 Subject: [PATCH] draw rest of slice wires and more from switchbox --- ecp5/arch.cc | 55 ++++++++++++++++++++++++++++++++++++++++++++++--- ecp5/gfx.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++---- 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 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 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