diff options
| -rw-r--r-- | CMakeLists.txt | 9 | ||||
| -rw-r--r-- | ecp5/family.cmake | 12 | ||||
| -rw-r--r-- | ice40/family.cmake | 12 | 
3 files changed, 25 insertions, 8 deletions
| diff --git a/CMakeLists.txt b/CMakeLists.txt index ade76d60..9ec078e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,7 @@ option(USE_OPENMP "Use OpenMP to accelerate analytic placer" OFF)  option(COVERAGE "Add code coverage info" OFF)  option(STATIC_BUILD "Create static build" OFF)  option(EXTERNAL_CHIPDB "Create build with pre-built chipdb binaries" OFF) +option(SERIALIZE_CHIPDB "Never build chipdb in parallel to reduce peak memory use" ON)  set(link_param "")  if (STATIC_BUILD) @@ -209,7 +210,7 @@ include(bba/bba.cmake)  foreach (family ${ARCH})      message(STATUS "Configuring architecture : ${family}")      string(TOUPPER ${family} ufamily) -    aux_source_directory(${family}/ ${ufamily}_FILES)     +    aux_source_directory(${family}/ ${ufamily}_FILES)      if (BUILD_GUI)         add_subdirectory(gui ${CMAKE_CURRENT_BINARY_DIR}/generated/gui/${family} EXCLUDE_FROM_ALL) @@ -219,14 +220,14 @@ foreach (family ${ARCH})      add_executable(nextpnr-${family} ${COMMON_FILES} ${${ufamily}_FILES})      install(TARGETS nextpnr-${family} RUNTIME DESTINATION bin)      target_compile_definitions(nextpnr-${family} PRIVATE MAIN_EXECUTABLE) -         +      # Add any new per-architecture targets here      if (BUILD_TESTS)          if (COVERAGE)              APPEND_COVERAGE_COMPILER_FLAGS()              set(COVERAGE_LCOV_EXCLUDES '/usr/include/*' '3rdparty/*' 'generated/*' 'bba/*' 'tests/*')              SETUP_TARGET_FOR_COVERAGE_LCOV( -                NAME ${family}-coverage  +                NAME ${family}-coverage                  EXECUTABLE nextpnr-${family}-test                  DEPENDENCIES nextpnr-${family}-test              ) @@ -247,7 +248,7 @@ foreach (family ${ARCH})      # Set ${family_targets} to the list of targets being build for this family      set(family_targets nextpnr-${family}) -     +      if (BUILD_TESTS)          set(family_targets ${family_targets} nextpnr-${family}-test)      endif() diff --git a/ecp5/family.cmake b/ecp5/family.cmake index 22ded412..596f0924 100644 --- a/ecp5/family.cmake +++ b/ecp5/family.cmake @@ -35,18 +35,22 @@ if (NOT EXTERNAL_CHIPDB)      if (MSVC)          target_sources(ecp5_chipdb PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/ecp5/resource/embed.cc)          set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/ecp5/resources/chipdb.rc PROPERTIES LANGUAGE RC) +        set(PREV_DEV_CC_BBA_DB)          foreach (dev ${devices})              set(DEV_CC_DB ${CMAKE_CURRENT_SOURCE_DIR}/ecp5/chipdbs/chipdb-${dev}.bin)              set(DEV_CC_BBA_DB ${CMAKE_CURRENT_SOURCE_DIR}/ecp5/chipdbs/chipdb-${dev}.bba)              set(DEV_CONSTIDS_INC ${CMAKE_CURRENT_SOURCE_DIR}/ecp5/constids.inc)              add_custom_command(OUTPUT ${DEV_CC_BBA_DB}                  COMMAND ${ENV_CMD} python3 ${DB_PY} -p ${DEV_CONSTIDS_INC} ${dev} > ${DEV_CC_BBA_DB} -                DEPENDS ${DB_PY} +                DEPENDS ${DB_PY} ${PREV_DEV_CC_BBA_DB}                  )              add_custom_command(OUTPUT ${DEV_CC_DB}                  COMMAND bbasm ${DEV_CC_BBA_DB} ${DEV_CC_DB}                  DEPENDS bbasm ${DEV_CC_BBA_DB}                  ) +            if (SERIALIZE_CHIPDB) +                set(PREV_DEV_CC_BBA_DB ${DEV_CC_BBA_DB}) +            endif()              target_sources(ecp5_chipdb PRIVATE ${DEV_CC_DB})              set_source_files_properties(${DEV_CC_DB} PROPERTIES HEADER_FILE_ONLY TRUE)              foreach (target ${family_targets}) @@ -55,6 +59,7 @@ if (NOT EXTERNAL_CHIPDB)          endforeach()      else()          target_compile_options(ecp5_chipdb PRIVATE -g0 -O0 -w) +        set(PREV_DEV_CC_BBA_DB)          foreach (dev ${devices})              set(DEV_CC_DB ${CMAKE_CURRENT_SOURCE_DIR}/ecp5/chipdbs/chipdb-${dev}.cc)              set(DEV_CC_BBA_DB ${CMAKE_CURRENT_SOURCE_DIR}/ecp5/chipdbs/chipdb-${dev}.bba) @@ -62,13 +67,16 @@ if (NOT EXTERNAL_CHIPDB)              add_custom_command(OUTPUT ${DEV_CC_BBA_DB}                  COMMAND ${ENV_CMD} python3 ${DB_PY} -p ${DEV_CONSTIDS_INC} ${dev} > ${DEV_CC_BBA_DB}.new                  COMMAND mv ${DEV_CC_BBA_DB}.new ${DEV_CC_BBA_DB} -                DEPENDS ${DB_PY} +                DEPENDS ${DB_PY} ${PREV_DEV_CC_BBA_DB}                  )              add_custom_command(OUTPUT ${DEV_CC_DB}                  COMMAND bbasm --c ${DEV_CC_BBA_DB} ${DEV_CC_DB}.new                  COMMAND mv ${DEV_CC_DB}.new ${DEV_CC_DB}                  DEPENDS bbasm ${DEV_CC_BBA_DB}                  ) +            if (SERIALIZE_CHIPDB) +                set(PREV_DEV_CC_BBA_DB ${DEV_CC_BBA_DB}) +            endif()              target_sources(ecp5_chipdb PRIVATE ${DEV_CC_DB})              foreach (target ${family_targets})                  target_sources(${target} PRIVATE $<TARGET_OBJECTS:ecp5_chipdb>) diff --git a/ice40/family.cmake b/ice40/family.cmake index ddf99139..6c46f459 100644 --- a/ice40/family.cmake +++ b/ice40/family.cmake @@ -19,6 +19,7 @@ if (NOT EXTERNAL_CHIPDB)      if (MSVC)          target_sources(ice40_chipdb PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/ice40/resource/embed.cc)          set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/ice40/resources/chipdb.rc PROPERTIES LANGUAGE RC) +        set(PREV_DEV_CC_BBA_DB)          foreach (dev ${devices})              if (dev STREQUAL "5k")                  set(OPT_FAST "") @@ -40,12 +41,15 @@ if (NOT EXTERNAL_CHIPDB)              set(DEV_GFXH ${CMAKE_CURRENT_SOURCE_DIR}/ice40/gfx.h)              add_custom_command(OUTPUT ${DEV_CC_BBA_DB}                  COMMAND ${PYTHON_EXECUTABLE} ${DB_PY} -p ${DEV_CONSTIDS_INC} -g ${DEV_GFXH} ${OPT_FAST} ${OPT_SLOW} ${DEV_TXT_DB} > ${DEV_CC_BBA_DB} -                DEPENDS ${DEV_CONSTIDS_INC} ${DEV_GFXH} ${DEV_TXT_DB} ${DB_PY} +                DEPENDS ${DEV_CONSTIDS_INC} ${DEV_GFXH} ${DEV_TXT_DB} ${DB_PY} ${PREV_DEV_CC_BBA_DB}                  )              add_custom_command(OUTPUT ${DEV_CC_DB}                  COMMAND bbasm ${DEV_CC_BBA_DB} ${DEV_CC_DB}                  DEPENDS bbasm ${DEV_CC_BBA_DB}                  ) +            if (SERIALIZE_CHIPDB) +                set(PREV_DEV_CC_BBA_DB ${DEV_CC_BBA_DB}) +            endif()              target_sources(ice40_chipdb PRIVATE ${DEV_CC_DB})              set_source_files_properties(${DEV_CC_DB} PROPERTIES HEADER_FILE_ONLY TRUE)              foreach (target ${family_targets}) @@ -54,6 +58,7 @@ if (NOT EXTERNAL_CHIPDB)          endforeach()      else()          target_compile_options(ice40_chipdb PRIVATE -g0 -O0 -w) +        set(PREV_DEV_CC_BBA_DB)          foreach (dev ${devices})              if (dev STREQUAL "5k")                  set(OPT_FAST "") @@ -76,13 +81,16 @@ if (NOT EXTERNAL_CHIPDB)              add_custom_command(OUTPUT ${DEV_CC_BBA_DB}                  COMMAND ${PYTHON_EXECUTABLE} ${DB_PY} -p ${DEV_CONSTIDS_INC} -g ${DEV_GFXH} ${OPT_FAST} ${OPT_SLOW} ${DEV_TXT_DB} > ${DEV_CC_BBA_DB}.new                  COMMAND mv ${DEV_CC_BBA_DB}.new ${DEV_CC_BBA_DB} -                DEPENDS ${DEV_CONSTIDS_INC} ${DEV_GFXH} ${DEV_TXT_DB} ${DB_PY} +                DEPENDS ${DEV_CONSTIDS_INC} ${DEV_GFXH} ${DEV_TXT_DB} ${DB_PY} ${PREV_DEV_CC_BBA_DB}                  )              add_custom_command(OUTPUT ${DEV_CC_DB}                  COMMAND bbasm --c ${DEV_CC_BBA_DB} ${DEV_CC_DB}.new                  COMMAND mv ${DEV_CC_DB}.new ${DEV_CC_DB}                  DEPENDS bbasm ${DEV_CC_BBA_DB}                  ) +            if (SERIALIZE_CHIPDB) +                set(PREV_DEV_CC_BBA_DB ${DEV_CC_BBA_DB}) +            endif()              target_sources(ice40_chipdb PRIVATE ${DEV_CC_DB})              foreach (target ${family_targets})                  target_sources(${target} PRIVATE $<TARGET_OBJECTS:ice40_chipdb>) | 
