| 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) |