/* * nextpnr -- Next Generation Place and Route * * Copyright (C) 2018 David Shah * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ #ifndef ECP5_GFX_H #define ECP5_GFX_H #include "nextpnr.h" NEXTPNR_NAMESPACE_BEGIN const float switchbox_x1 = 0.51; const float switchbox_x2 = 0.90; const float switchbox_y1 = 0.51; const float switchbox_y2 = 0.90; const float slice_x1 = 0.92; const float slice_x2 = 0.94; const float slice_y1 = 0.71; const float slice_y2 = 0.745 + 0.0068; const float slice_pitch = 0.0374 +0.0068; const float io_cell_v_x1 = 0.76; const float io_cell_v_x2 = 0.95; const float io_cell_v_y1 = 0.05; const float io_cell_v_y2 = 0.15; const float io_cell_v_pitch = 0.125; const float io_cell_h_x1 = 0.05; const float io_cell_h_x2 = 0.14; const float io_cell_h_y1 = 0.05; const float io_cell_h_y2 = 0.24; const float io_cell_h_pitch = 0.125; enum GfxTileWireId { TILE_WIRE_NONE, TILE_WIRE_FCO_SLICE, TILE_WIRE_D7_SLICE, TILE_WIRE_C7_SLICE, TILE_WIRE_B7_SLICE, TILE_WIRE_A7_SLICE, TILE_WIRE_D6_SLICE, TILE_WIRE_C6_SLICE, TILE_WIRE_B6_SLICE, TILE_WIRE_A6_SLICE, TILE_WIRE_DI7_SLICE, TILE_WIRE_DI6_SLICE, TILE_WIRE_M7_SLICE, TILE_WIRE_M6_SLICE, TILE_WIRE_FXBD_SLICE, TILE_WIRE_FXAD_SLICE, TILE_WIRE_DUMMY_D1, TILE_WIRE_FXD_SLICE, TILE_WIRE_F7_SLICE, TILE_WIRE_Q7_SLICE, TILE_WIRE_Q6_SLICE, TILE_WIRE_F6_SLICE, TILE_WIRE_F5D_SLICE, TILE_WIRE_CE3_SLICE, TILE_WIRE_FCID_SLICE, TILE_WIRE_FCOC_SLICE, TILE_WIRE_D5_SLICE, TILE_WIRE_C5_SLICE, TILE_WIRE_B5_SLICE, TILE_WIRE_A5_SLICE, TILE_WIRE_D4_SLICE, TILE_WIRE_C4_SLICE, TILE_WIRE_B4_SLICE, TILE_WIRE_A4_SLICE, TILE_WIRE_DI5_SLICE, TILE_WIRE_DI4_SLICE, TILE_WIRE_M5_SLICE, TILE_WIRE_M4_SLICE, TILE_WIRE_FXBC_SLICE, TILE_WIRE_FXAC_SLICE, TILE_WIRE_DUMMY_C1, TILE_WIRE_FXC_SLICE, TILE_WIRE_F5_SLICE, TILE_WIRE_Q5_SLICE, TILE_WIRE_Q4_SLICE, TILE_WIRE_F4_SLICE, TILE_WIRE_F5C_SLICE, TILE_WIRE_CE2_SLICE, TILE_WIRE_FCIC_SLICE, TILE_WIRE_FCOB_SLICE, TILE_WIRE_D3_SLICE, TILE_WIRE_C3_SLICE, TILE_WIRE_B3_SLICE, TILE_WIRE_A3_SLICE, TILE_WIRE_D2_SLICE, TILE_WIRE_C2_SLICE, TILE_WIRE_B2_SLICE, TILE_WIRE_A2_SLICE, TILE_WIRE_DI3_SLICE, TILE_WIRE_DI2_SLICE, TILE_WIRE_M3_SLICE, TILE_WIRE_M2_SLICE, TILE_WIRE_FXBB_SLICE, TILE_WIRE_FXAB_SLICE, TILE_WIRE_DUMMY_B1, TILE_WIRE_FXB_SLICE, TILE_WIRE_F3_SLICE, TILE_WIRE_Q3_SLICE, TILE_WIRE_Q2_SLICE, TILE_WIRE_F2_SLICE, TILE_WIRE_F5B_SLICE, TILE_WIRE_CE1_SLICE, TILE_WIRE_FCIB_SLICE, TILE_WIRE_FCOA_SLICE, TILE_WIRE_D1_SLICE, TILE_WIRE_C1_SLICE, TILE_WIRE_B1_SLICE, TILE_WIRE_A1_SLICE, TILE_WIRE_D0_SLICE, TILE_WIRE_C0_SLICE, TILE_WIRE_B0_SLICE, TILE_WIRE_A0_SLICE, TILE_WIRE_DI1_SLICE, TILE_WIRE_DI0_SLICE, TILE_WIRE_M1_SLICE, TILE_WIRE_M0_SLICE, TILE_WIRE_FXBA_SLICE, TILE_WIRE_FXAA_SLICE, TILE_WIRE_DUMMY_A1, TILE_WIRE_FXA_SLICE, TILE_WIRE_F1_SLICE, TILE_WIRE_Q1_SLICE, TILE_WIRE_Q0_SLICE, TILE_WIRE_F0_SLICE, TILE_WIRE_F5A_SLICE, TILE_WIRE_CE0_SLICE, TILE_WIRE_FCI_SLICE, TILE_WIRE_CLK0, TILE_WIRE_CLK1, TILE_WIRE_LSR0, TILE_WIRE_LSR1, TILE_WIRE_FCO, TILE_WIRE_D7, TILE_WIRE_C7, TILE_WIRE_B7, TILE_WIRE_A7, TILE_WIRE_D6, TILE_WIRE_C6, TILE_WIRE_B6, TILE_WIRE_A6, TILE_WIRE_DI7, TILE_WIRE_DI6, TILE_WIRE_M7, TILE_WIRE_M6, TILE_WIRE_FXBD, TILE_WIRE_FXAD, TILE_WIRE_DUMMY_SWB1, TILE_WIRE_DUMMY_SWB2, TILE_WIRE_F7, TILE_WIRE_Q7, TILE_WIRE_Q6, TILE_WIRE_F6, TILE_WIRE_DUMMY_SWB3, TILE_WIRE_CE3, TILE_WIRE_DUMMY_SWB4, TILE_WIRE_DUMMY_SWB5, TILE_WIRE_D5, TILE_WIRE_C5, TILE_WIRE_B5, TILE_WIRE_A5, TILE_WIRE_D4, TILE_WIRE_C4, TILE_WIRE_B4, TILE_WIRE_A4, TILE_WIRE_DI5, TILE_WIRE_DI4, TILE_WIRE_M5, TILE_WIRE_M4, TILE_WIRE_FXBC, TILE_WIRE_FXAC, TILE_WIRE_DUMMY_SWB6, TILE_WIRE_DUMMY_SWB7, TILE_WIRE_F5, TILE_WIRE_Q5, TILE_WIRE_Q4, TILE_WIRE_F4, TILE_WIRE_DUMMY_SWB8, TILE_WIRE_CE2, TILE_WIRE_DUMMY_SWB9, TILE_WIRE_DUMMY_SWB10, 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_SWB11, TILE_WIRE_DUMMY_SWB12, TILE_WIRE_F3, TILE_WIRE_Q3, TILE_WIRE_Q2, TILE_WIRE_F2, TILE_WIRE_DUMMY_SWB13, TILE_WIRE_CE1, TILE_WIRE_DUMMY_SWB14, TILE_WIRE_DUMMY_SWB15, 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_SWB16, TILE_WIRE_DUMMY_SWB17, TILE_WIRE_F1, TILE_WIRE_Q1, TILE_WIRE_Q0, TILE_WIRE_F0, TILE_WIRE_DUMMY_SWB18, TILE_WIRE_CE0, TILE_WIRE_FCI, TILE_WIRE_MUXCLK3, TILE_WIRE_MUXLSR3, TILE_WIRE_MUXCLK2, TILE_WIRE_MUXLSR2, TILE_WIRE_MUXCLK1, TILE_WIRE_MUXLSR1, TILE_WIRE_MUXCLK0, TILE_WIRE_MUXLSR0, TILE_WIRE_WD3, TILE_WIRE_WD2, TILE_WIRE_WD1, TILE_WIRE_WD0, TILE_WIRE_WAD3, TILE_WIRE_WAD2, TILE_WIRE_WAD1, TILE_WIRE_WAD0, TILE_WIRE_DUMMY_D2, TILE_WIRE_DUMMY_D3, TILE_WIRE_CLK3_SLICE, TILE_WIRE_LSR3_SLICE, TILE_WIRE_DUMMY_D4, TILE_WIRE_DUMMY_D5, TILE_WIRE_DUMMY_D6, TILE_WIRE_DUMMY_D7, TILE_WIRE_DUMMY_D8, TILE_WIRE_DUMMY_D9, TILE_WIRE_DUMMY_D10, TILE_WIRE_DUMMY_D11, TILE_WIRE_DUMMY_C2, TILE_WIRE_DUMMY_C3, TILE_WIRE_CLK2_SLICE, TILE_WIRE_LSR2_SLICE, TILE_WIRE_WDO3C_SLICE, TILE_WIRE_WDO2C_SLICE, TILE_WIRE_WDO1C_SLICE, TILE_WIRE_WDO0C_SLICE, TILE_WIRE_WADO3C_SLICE, TILE_WIRE_WADO2C_SLICE, TILE_WIRE_WADO1C_SLICE, TILE_WIRE_WADO0C_SLICE, TILE_WIRE_WCK1_SLICE, TILE_WIRE_WRE1_SLICE, TILE_WIRE_CLK1_SLICE, TILE_WIRE_LSR1_SLICE, TILE_WIRE_DUMMY_B2, TILE_WIRE_DUMMY_B3, TILE_WIRE_WD1B_SLICE, TILE_WIRE_WD0B_SLICE, TILE_WIRE_WAD3B_SLICE, TILE_WIRE_WAD2B_SLICE, TILE_WIRE_WAD1B_SLICE, TILE_WIRE_WAD0B_SLICE, TILE_WIRE_WCK0_SLICE, TILE_WIRE_WRE0_SLICE, TILE_WIRE_CLK0_SLICE, TILE_WIRE_LSR0_SLICE, TILE_WIRE_DUMMY_A2, TILE_WIRE_DUMMY_A3, TILE_WIRE_WD1A_SLICE, TILE_WIRE_WD0A_SLICE, TILE_WIRE_WAD3A_SLICE, TILE_WIRE_WAD2A_SLICE, TILE_WIRE_WAD1A_SLICE, TILE_WIRE_WAD0A_SLICE, TILE_WIRE_V01N0001, TILE_WIRE_V01N0101, TILE_WIRE_V01S0000, TILE_WIRE_V01S0100, TILE_WIRE_H01E0001, TILE_WIRE_H01E0101, TILE_WIRE_H01W0000, TILE_WIRE_H01W0100, TILE_WIRE_HFIE0000, TILE_WIRE_HL7W0001, TILE_WIRE_V00T0000, TILE_WIRE_V00T0100, TILE_WIRE_V00B0000, TILE_WIRE_V00B0100, TILE_WIRE_H00L0000, TILE_WIRE_H00L0100, TILE_WIRE_H00R0000, TILE_WIRE_H00R0100, TILE_WIRE_NBOUNCE, TILE_WIRE_SBOUNCE, TILE_WIRE_WBOUNCE, TILE_WIRE_EBOUNCE, TILE_WIRE_V02N0701, TILE_WIRE_V02S0701, TILE_WIRE_V02N0601, TILE_WIRE_V02S0601, TILE_WIRE_V02N0501, TILE_WIRE_V02S0501, TILE_WIRE_V02N0401, TILE_WIRE_V02S0401, TILE_WIRE_V02N0301, TILE_WIRE_V02S0301, TILE_WIRE_V02N0201, TILE_WIRE_V02S0201, TILE_WIRE_V02N0101, TILE_WIRE_V02S0101, TILE_WIRE_V02N0001, TILE_WIRE_V02S0001, TILE_WIRE_V06N0303, TILE_WIRE_V06S0303, TILE_WIRE_V06N0203, TILE_WIRE_V06S0203, TILE_WIRE_V06N0103, TILE_WIRE_V06S0103, TILE_WIRE_V06N0003, TILE_WIRE_V06S0003, TILE_WIRE_H02W0701, TILE_WIRE_H02E0701, TILE_WIRE_H02W0601, TILE_WIRE_H02E0601, TILE_WIRE_H02W0501, TILE_WIRE_H02E0501, TILE_WIRE_H02W0401, TILE_WIRE_H02E0401, TILE_WIRE_H02W0301, TILE_WIRE_H02E0301, TILE_WIRE_H02W0201, TILE_WIRE_H02E0201, TILE_WIRE_H02W0101, TILE_WIRE_H02E0101, TILE_WIRE_H02W0001, TILE_WIRE_H02E0001, TILE_WIRE_H06W0303, TILE_WIRE_H06E0303, TILE_WIRE_H06W0203, TILE_WIRE_H06E0203, TILE_WIRE_H06W0103, TILE_WIRE_H06E0103, TILE_WIRE_H06W0003, TILE_WIRE_H06E0003, TILE_WIRE_G_HPBX0000, TILE_WIRE_G_HPBX0100, TILE_WIRE_G_HPBX0200, TILE_WIRE_G_HPBX0300, TILE_WIRE_G_HPBX0400, TILE_WIRE_G_HPBX0500, TILE_WIRE_G_HPBX0600, TILE_WIRE_G_HPBX0700, TILE_WIRE_G_HPBX0800, TILE_WIRE_G_HPBX0900, TILE_WIRE_G_HPBX1000, TILE_WIRE_G_HPBX1100, TILE_WIRE_G_HPBX1200, TILE_WIRE_G_HPBX1300, TILE_WIRE_G_HPBX1400, TILE_WIRE_G_HPBX1500, }; void gfxTileWire(std::vector &g, int x, int y, IdString wire_type, GfxTileWireId tilewire, GraphicElement::style_t style); NEXTPNR_NAMESPACE_END #endif