diff options
author | David Shah <davey1576@gmail.com> | 2018-07-09 14:53:20 +0200 |
---|---|---|
committer | David Shah <davey1576@gmail.com> | 2018-07-09 14:53:20 +0200 |
commit | a1cd9fcf73685a5b0c4e721d405550096d85d566 (patch) | |
tree | 93f1eafeb0eb383e7318f6836fb46294b8dee9db /ice40 | |
parent | f4c62e233cfc3e626501c4dbe30e596fa9e43d77 (diff) | |
download | nextpnr-a1cd9fcf73685a5b0c4e721d405550096d85d566.tar.gz nextpnr-a1cd9fcf73685a5b0c4e721d405550096d85d566.tar.bz2 nextpnr-a1cd9fcf73685a5b0c4e721d405550096d85d566.zip |
Reduce line width, adding some switchboxes
Signed-off-by: David Shah <davey1576@gmail.com>
Diffstat (limited to 'ice40')
-rw-r--r-- | ice40/arch.cc | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/ice40/arch.cc b/ice40/arch.cc index 72f9c1f3..aed99b7b 100644 --- a/ice40/arch.cc +++ b/ice40/arch.cc @@ -424,12 +424,36 @@ std::vector<GraphicElement> Arch::getBelGraphics(BelId bel) const if (bel_type == TYPE_ICESTORM_LC) { GraphicElement el; el.type = GraphicElement::G_BOX; - el.x1 = chip_info->bel_data[bel.index].x + 0.1; - el.x2 = chip_info->bel_data[bel.index].x + 0.9; - el.y1 = chip_info->bel_data[bel.index].y + 0.10 + (chip_info->bel_data[bel.index].z) * (0.8 / 8); - el.y2 = chip_info->bel_data[bel.index].y + 0.18 + (chip_info->bel_data[bel.index].z) * (0.8 / 8); + el.x1 = chip_info->bel_data[bel.index].x + 0.82; + el.x2 = chip_info->bel_data[bel.index].x + 0.92; + el.y1 = chip_info->bel_data[bel.index].y + 0.30 + (chip_info->bel_data[bel.index].z) * (0.6 / 8); + el.y2 = chip_info->bel_data[bel.index].y + 0.35 + (chip_info->bel_data[bel.index].z) * (0.6 / 8); el.z = 0; ret.push_back(el); + + if (chip_info->bel_data[bel.index].z == 0) { + int tx = chip_info->bel_data[bel.index].x; + int ty = chip_info->bel_data[bel.index].y; + // Local tracks to LUT input switchbox + GraphicElement lc_lut_sw; + lc_lut_sw.type = GraphicElement::G_BOX; + lc_lut_sw.x1 = tx + 0.75; + lc_lut_sw.x2 = tx + 0.8; + lc_lut_sw.y1 = ty + 0.30; + lc_lut_sw.y2 = ty + 0.875; + lc_lut_sw.z = 0; + ret.push_back(lc_lut_sw); + // Local tracks switchbox + GraphicElement lc_sw; + lc_sw.type = GraphicElement::G_BOX; + lc_sw.x1 = tx + 0.6; + lc_sw.x2 = tx + 0.7; + lc_sw.y1 = ty + 0.65; + lc_sw.y2 = ty + 0.75; + ret.push_back(lc_sw); + + + } } if (bel_type == TYPE_SB_IO) { |