add_subdirectory(layouts)
add_subdirectory(top-routing-virt)

function(DEFINE_ICE40_DEVICE)
  set(options)
  set(oneValueArgs DEVICE DEVICE_TYPE PACKAGES)
  set(multiValueArgs)
  cmake_parse_arguments(
    DEFINE_ICE40_DEVICE
    "${options}"
    "${oneValueArgs}"
    "${multiValueArgs}"
    ${ARGN}
  )

  define_device(
    DEVICE ${DEFINE_ICE40_DEVICE_DEVICE}
    ARCH ice40
    DEVICE_TYPE ${DEFINE_ICE40_DEVICE_DEVICE_TYPE}
    PACKAGES ${DEFINE_ICE40_DEVICE_PACKAGES}
    CACHE_PLACE_DELAY
    CACHE_ARGS
      --route_chan_width 100
      --clock_modeling route
      --allow_unrelated_clustering off
      --target_ext_pin_util 0.7
      --router_init_wirelength_abort_threshold 2
      --congested_routing_iteration_threshold 0.8
  )

  add_icebox_layouts(
    DEVICE
    ${DEFINE_ICE40_DEVICE_DEVICE}
    PACKAGES
    ${DEFINE_ICE40_DEVICE_PACKAGES}
  )
endfunction()


define_ice40_device(
  DEVICE
  hx1k
  DEVICE_TYPE
  top-routing-virt
  PACKAGES
  tq144;ct256
)

define_ice40_device(DEVICE lp1k DEVICE_TYPE top-routing-virt PACKAGES qn84)

if (NOT LIGHT_BUILD)
define_ice40_device(DEVICE hx8k DEVICE_TYPE top-routing-virt PACKAGES ct256)
define_ice40_device(DEVICE lp8k DEVICE_TYPE top-routing-virt PACKAGES cm81)
define_ice40_device(DEVICE up5k DEVICE_TYPE top-routing-virt PACKAGES sg48)
endif (NOT LIGHT_BUILD)
