aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/arch.cc
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2019-12-07 17:41:22 +0100
committerMiodrag Milanovic <mmicko@gmail.com>2019-12-07 17:41:22 +0100
commit76d2a3f0dbe3ce8349787bf3a2d8fa0d32a1706a (patch)
treee587163859cc0ead626c408741c470a6758b3faa /ecp5/arch.cc
parentb764f9b13a6bdc00ee3965448786c3e060430516 (diff)
downloadnextpnr-76d2a3f0dbe3ce8349787bf3a2d8fa0d32a1706a.tar.gz
nextpnr-76d2a3f0dbe3ce8349787bf3a2d8fa0d32a1706a.tar.bz2
nextpnr-76d2a3f0dbe3ce8349787bf3a2d8fa0d32a1706a.zip
add dcca bels and dummy parts for other bels
Diffstat (limited to 'ecp5/arch.cc')
-rw-r--r--ecp5/arch.cc63
1 files changed, 54 insertions, 9 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index e80c9438..a5740c82 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -618,8 +618,7 @@ std::vector<GraphicElement> Arch::getDecalGraphics(DecalId decal) const
el.y2 = y + switchbox_y2;
ret.push_back(el);
}
- }
- if (decal.type == DecalId::TYPE_WIRE) {
+ } else if (decal.type == DecalId::TYPE_WIRE) {
WireId wire;
wire.index = decal.z;
wire.location = decal.location;
@@ -631,8 +630,7 @@ std::vector<GraphicElement> Arch::getDecalGraphics(DecalId decal) const
GfxTileWireId tilewire = GfxTileWireId(locInfo(wire)->wire_data[wire.index].tile_wire);
gfxTileWire(ret, x, y, chip_info->width, chip_info->height, wire_type, tilewire, style);
- }
- if (decal.type == DecalId::TYPE_PIP) {
+ } else if (decal.type == DecalId::TYPE_PIP) {
PipId pip;
pip.index = decal.z;
pip.location = decal.location;
@@ -644,8 +642,7 @@ std::vector<GraphicElement> Arch::getDecalGraphics(DecalId decal) const
GfxTileWireId dst_id = GfxTileWireId(locInfo(dst_wire)->wire_data[dst_wire.index].tile_wire);
GraphicElement::style_t style = decal.active ? GraphicElement::STYLE_ACTIVE : GraphicElement::STYLE_HIDDEN;
gfxTilePip(ret, x, y, chip_info->width, chip_info->height, src_wire, getWireType(src_wire), src_id, dst_wire, getWireType(dst_wire), dst_id, style);
- }
- if (decal.type == DecalId::TYPE_BEL) {
+ } else if (decal.type == DecalId::TYPE_BEL) {
BelId bel;
bel.index = decal.z;
bel.location = decal.location;
@@ -670,9 +667,7 @@ std::vector<GraphicElement> Arch::getDecalGraphics(DecalId decal) const
el.y1 = y + slice_y2 - 0.0017f * (TILE_WIRE_CLK3_SLICE - TILE_WIRE_DUMMY_D2 + 5 + z*26) + 3*slice_pitch - 0.0007f;
el.y2 = el.y1 + 0.0017f * 5;
ret.push_back(el);
- }
-
- if (bel_type == id_TRELLIS_IO) {
+ } else if (bel_type == id_TRELLIS_IO) {
bool top_bottom = (y==0 || y==(chip_info->height-1));
GraphicElement el;
el.type = GraphicElement::TYPE_BOX;
@@ -689,6 +684,56 @@ std::vector<GraphicElement> Arch::getDecalGraphics(DecalId decal) const
el.y2 = y + io_cell_v_y2 + (2 * z + 0.5f) * io_cell_v_pitch;
}
ret.push_back(el);
+ } else if (bel_type == id_DCCA) {
+ //printf("%d,%d id_DCCA\n",x,y);
+ GraphicElement el;
+ el.type = GraphicElement::TYPE_BOX;
+ el.style = decal.active ? GraphicElement::STYLE_ACTIVE : GraphicElement::STYLE_INACTIVE;
+ el.x1 = x + switchbox_x1 + (z)*0.025;
+ el.y1 = y + 0.14;
+ el.x2 = x + switchbox_x1 + (z)*0.025 + 0.020;
+ el.y2 = y + 0.18;
+ ret.push_back(el);
+ } else if (bel_type == id_DP16KD) {
+ //printf("%d,%d id_DP16KD\n",x,y);
+ } else if (bel_type == id_MULT18X18D) {
+ //printf("%d,%d id_MULT18X18D\n",x,y);
+ } else if (bel_type == id_ALU54B) {
+ //printf("%d,%d id_ALU54B\n",x,y);
+ } else if (bel_type == id_EHXPLLL) {
+ //printf("%d,%d id_EHXPLLL\n",x,y);
+ } else if (bel_type == id_DCUA) {
+ //printf("%d,%d id_DCUA\n",x,y);
+ } else if (bel_type == id_EXTREFB) {
+ //printf("%d,%d id_EXTREFB\n",x,y);
+ } else if (bel_type == id_PCSCLKDIV) {
+ //printf("%d,%d id_PCSCLKDIV\n",x,y);
+ } else if (bel_type == id_IOLOGIC) {
+ //printf("%d,%d id_IOLOGIC\n",x,y);
+ } else if (bel_type == id_SIOLOGIC) {
+ //printf("%d,%d id_SIOLOGIC\n",x,y);
+ } else if (bel_type == id_DTR) {
+ //printf("%d,%d id_DTR\n",x,y);
+ } else if (bel_type == id_USRMCLK) {
+ //printf("%d,%d id_USRMCLK\n",x,y);
+ } else if (bel_type == id_SEDGA) {
+ //printf("%d,%d id_SEDGA\n",x,y);
+ } else if (bel_type == id_GSR) {
+ //printf("%d,%d id_GSR\n",x,y);
+ } else if (bel_type == id_JTAGG) {
+ //printf("%d,%d id_JTAGG\n",x,y);
+ } else if (bel_type == id_OSCG) {
+ //printf("%d,%d id_OSCG\n",x,y);
+ } else if (bel_type == id_CLKDIVF) {
+ //printf("%d,%d id_CLKDIVF\n",x,y);
+ } else if (bel_type == id_DQSBUFM) {
+ //printf("%d,%d id_DQSBUFM\n",x,y);
+ } else if (bel_type == id_DDRDLL) {
+ //printf("%d,%d id_DDRDLL\n",x,y);
+ } else if (bel_type == id_ECLKSYNCB) {
+ //printf("%d,%d id_ECLKSYNCB\n",x,y);
+ } else if (bel_type == id_ECLKBRIDGECS) {
+ //printf("%d,%d id_ECLKBRIDGECS\n",x,y);
}
}