Commit 1102231b by Yijun Tan

bugs

parent 3e30c3de
......@@ -13,11 +13,14 @@ file(GLOB_RECURSE SRC
src/*
)
add_compile_definitions(cimg_display=0)
# add_compile_definitions(USE_FFT2D_PTHREADS=1 FFT2D_MAX_THREADS=4 FFT2D_THREADS_BEGIN_N=1024)
add_executable(ppPlace main.cpp ${SRC})
target_include_directories(ppPlace PUBLIC ${CMAKE_SOURCE_DIR}/include/)
target_include_directories(ppPlace PUBLIC ${CMAKE_SOURCE_DIR}/module/CImg)
#target_link_libraries(ppPlace X11 pthread)
target_link_libraries(ppPlace pthread)
#target_link_libraries(ppPlace pthread)
target_link_libraries(ppPlace)
#cmake .. -G "MinGW Makefiles"
\ No newline at end of file
......@@ -20,22 +20,23 @@ CMAKE_ADDR2LINE:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6
//Path to a program.
CMAKE_AR:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ar.exe
//No help, variable specified on the command line.
CMAKE_BUILD_TYPE:STRING=Debug
//Choose the type of build, options are: None Debug Release RelWithDebInfo
// MinSizeRel ...
CMAKE_BUILD_TYPE:STRING=
//Enable/Disable color output during build.
CMAKE_COLOR_MAKEFILE:BOOL=ON
//No help, variable specified on the command line.
CMAKE_CXX_COMPILER:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-g++.exe
//CXX compiler
CMAKE_CXX_COMPILER:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe
//A wrapper around 'ar' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_CXX_COMPILER_AR:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-gcc-ar.exe
CMAKE_CXX_COMPILER_AR:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc-ar.exe
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-gcc-ranlib.exe
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc-ranlib.exe
//Flags used by the CXX compiler during all build types.
CMAKE_CXX_FLAGS:STRING=
......@@ -55,16 +56,16 @@ CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
//Libraries linked by default with all C++ applications.
CMAKE_CXX_STANDARD_LIBRARIES:STRING=-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
//No help, variable specified on the command line.
CMAKE_C_COMPILER:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-gcc.exe
//C compiler
CMAKE_C_COMPILER:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc.exe
//A wrapper around 'ar' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_C_COMPILER_AR:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-gcc-ar.exe
CMAKE_C_COMPILER_AR:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc-ar.exe
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_C_COMPILER_RANLIB:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-gcc-ranlib.exe
CMAKE_C_COMPILER_RANLIB:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc-ranlib.exe
//Flags used by the C compiler during all build types.
CMAKE_C_FLAGS:STRING=
......@@ -102,9 +103,6 @@ CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during RELWITHDEBINFO builds.
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//No help, variable specified on the command line.
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE
//Convert GNU import libraries to MS format (requires Visual Studio)
CMAKE_GNUtoMS:BOOL=OFF
......@@ -114,8 +112,8 @@ CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/ppPlace
//Path to a program.
CMAKE_LINKER:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ld.exe
//make program
CMAKE_MAKE_PROGRAM:FILEPATH=C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/bin/make.exe
//Path to a program.
CMAKE_MAKE_PROGRAM:FILEPATH=C:/MinGW/bin/mingw32-make.exe
//Flags used by the linker during the creation of modules during
// all build types.
......@@ -159,7 +157,7 @@ CMAKE_PROJECT_NAME:STATIC=ppPlace
CMAKE_RANLIB:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ranlib.exe
//RC compiler
CMAKE_RC_COMPILER:FILEPATH=x86_64-w64-mingw32-windres
CMAKE_RC_COMPILER:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/windres.exe
//Flags for Windows Resource Compiler during all build types.
CMAKE_RC_FLAGS:STRING=
......@@ -324,7 +322,7 @@ CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//Name of external makefile project generator.
CMAKE_EXTRA_GENERATOR:INTERNAL=
//Name of generator.
CMAKE_GENERATOR:INTERNAL=Unix Makefiles
CMAKE_GENERATOR:INTERNAL=MinGW Makefiles
//Generator instance identifier.
CMAKE_GENERATOR_INSTANCE:INTERNAL=
//Name of generator platform.
......
set(CMAKE_C_COMPILER "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-gcc.exe")
set(CMAKE_C_COMPILER "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc.exe")
set(CMAKE_C_COMPILER_ARG1 "")
set(CMAKE_C_COMPILER_ID "GNU")
set(CMAKE_C_COMPILER_VERSION "8.1.0")
......@@ -22,9 +22,9 @@ set(CMAKE_C_SIMULATE_VERSION "")
set(CMAKE_AR "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ar.exe")
set(CMAKE_C_COMPILER_AR "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-gcc-ar.exe")
set(CMAKE_C_COMPILER_AR "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc-ar.exe")
set(CMAKE_RANLIB "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ranlib.exe")
set(CMAKE_C_COMPILER_RANLIB "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-gcc-ranlib.exe")
set(CMAKE_C_COMPILER_RANLIB "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc-ranlib.exe")
set(CMAKE_LINKER "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ld.exe")
set(CMAKE_MT "")
set(CMAKE_COMPILER_IS_GNUCC 1)
......@@ -67,6 +67,6 @@ endif()
set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include")
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "")
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "mingw32;gcc;moldname;mingwex;pthread;advapi32;shell32;user32;kernel32;iconv;mingw32;gcc;moldname;mingwex")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/lib;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib")
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
set(CMAKE_CXX_COMPILER "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-g++.exe")
set(CMAKE_CXX_COMPILER "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe")
set(CMAKE_CXX_COMPILER_ARG1 "")
set(CMAKE_CXX_COMPILER_ID "GNU")
set(CMAKE_CXX_COMPILER_VERSION "8.1.0")
......@@ -23,9 +23,9 @@ set(CMAKE_CXX_SIMULATE_VERSION "")
set(CMAKE_AR "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ar.exe")
set(CMAKE_CXX_COMPILER_AR "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-gcc-ar.exe")
set(CMAKE_CXX_COMPILER_AR "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc-ar.exe")
set(CMAKE_RANLIB "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ranlib.exe")
set(CMAKE_CXX_COMPILER_RANLIB "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-gcc-ranlib.exe")
set(CMAKE_CXX_COMPILER_RANLIB "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc-ranlib.exe")
set(CMAKE_LINKER "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ld.exe")
set(CMAKE_MT "")
set(CMAKE_COMPILER_IS_GNUCXX 1)
......@@ -78,6 +78,6 @@ endif()
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include")
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "")
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;mingw32;gcc_s;gcc;moldname;mingwex;pthread;advapi32;shell32;user32;kernel32;iconv;mingw32;gcc_s;gcc;moldname;mingwex")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/lib;C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib")
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
set(CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres")
set(CMAKE_RC_COMPILER "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/windres.exe")
set(CMAKE_RC_COMPILER_ARG1 "")
set(CMAKE_RC_COMPILER_LOADED 1)
set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC)
set(CMAKE_RC_OUTPUT_EXTENSION .res)
set(CMAKE_RC_OUTPUT_EXTENSION .obj)
set(CMAKE_RC_COMPILER_ENV_VAR "RC")
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.22
# Generated by "MinGW Makefiles" Generator, CMake Version 3.22
# Relative path conversion top directories.
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "E:/iccad2023/ppp")
......
This source diff could not be displayed because it is too large. You can view the blob instead.
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.22
# Generated by "MinGW Makefiles" Generator, CMake Version 3.22
# The generator used is:
set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
set(CMAKE_DEPENDS_GENERATOR "MinGW Makefiles")
# The top level Makefile was generated from the following files:
set(CMAKE_MAKEFILE_DEPENDS
"CMakeCache.txt"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeCCompilerABI.c"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeCInformation.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeCXXInformation.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeDetermineRCCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeGenericSystem.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeMinGWFindMake.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeRCCompiler.cmake.in"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeRCInformation.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeSystem.cmake.in"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeTestRCCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/GNU-C.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/GNU-CXX.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/GNU-FindBinUtils.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/GNU.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Platform/Windows-Determine-CXX.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Platform/Windows-GNU-C-ABI.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Platform/Windows-GNU-C.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Platform/Windows-GNU-CXX-ABI.cmake"
......@@ -43,6 +116,12 @@ set(CMAKE_MAKEFILE_OUTPUTS
# Byproducts of CMake generate step:
set(CMAKE_MAKEFILE_PRODUCTS
"CMakeFiles/3.22.0-rc2/CMakeSystem.cmake"
"CMakeFiles/3.22.0-rc2/CMakeCCompiler.cmake"
"CMakeFiles/3.22.0-rc2/CMakeCXXCompiler.cmake"
"CMakeFiles/3.22.0-rc2/CMakeRCCompiler.cmake"
"CMakeFiles/3.22.0-rc2/CMakeCCompiler.cmake"
"CMakeFiles/3.22.0-rc2/CMakeCXXCompiler.cmake"
"CMakeFiles/CMakeDirectoryInformation.cmake"
)
......
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.22
# Generated by "MinGW Makefiles" Generator, CMake Version 3.22
# Default target executed when no arguments are given to make.
default_target: all
......@@ -41,23 +41,22 @@ cmake_force:
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
SHELL = cmd.exe
# The CMake executable.
CMAKE_COMMAND = "C:/Program Files/CMake/bin/cmake.exe"
CMAKE_COMMAND = "C:\Program Files\CMake\bin\cmake.exe"
# The command to remove a file.
RM = "C:/Program Files/CMake/bin/cmake.exe" -E rm -f
RM = "C:\Program Files\CMake\bin\cmake.exe" -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = E:/iccad2023/ppp
CMAKE_SOURCE_DIR = E:\iccad2023\ppp
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = E:/iccad2023/ppp/build
CMAKE_BINARY_DIR = E:\iccad2023\ppp\build
#=============================================================================
# Directory level rules for the build root directory
......@@ -79,16 +78,16 @@ clean: CMakeFiles/ppPlace.dir/clean
# All Build rule for target.
CMakeFiles/ppPlace.dir/all:
$(MAKE) $(MAKESILENT) -f CMakeFiles/ppPlace.dir/build.make CMakeFiles/ppPlace.dir/depend
$(MAKE) $(MAKESILENT) -f CMakeFiles/ppPlace.dir/build.make CMakeFiles/ppPlace.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=E:/iccad2023/ppp/build/CMakeFiles --progress-num=1,2,3,4,5,6,7 "Built target ppPlace"
$(MAKE) $(MAKESILENT) -f CMakeFiles\ppPlace.dir\build.make CMakeFiles/ppPlace.dir/depend
$(MAKE) $(MAKESILENT) -f CMakeFiles\ppPlace.dir\build.make CMakeFiles/ppPlace.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=E:\iccad2023\ppp\build\CMakeFiles --progress-num=1,2,3,4,5,6,7,8 "Built target ppPlace"
.PHONY : CMakeFiles/ppPlace.dir/all
# Build rule for subdir invocation for target.
CMakeFiles/ppPlace.dir/rule: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start E:/iccad2023/ppp/build/CMakeFiles 7
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ppPlace.dir/all
$(CMAKE_COMMAND) -E cmake_progress_start E:/iccad2023/ppp/build/CMakeFiles 0
$(CMAKE_COMMAND) -E cmake_progress_start E:\iccad2023\ppp\build\CMakeFiles 8
$(MAKE) $(MAKESILENT) -f CMakeFiles\Makefile2 CMakeFiles/ppPlace.dir/all
$(CMAKE_COMMAND) -E cmake_progress_start E:\iccad2023\ppp\build\CMakeFiles 0
.PHONY : CMakeFiles/ppPlace.dir/rule
# Convenience name for target.
......@@ -97,7 +96,7 @@ ppPlace: CMakeFiles/ppPlace.dir/rule
# clean rule for target.
CMakeFiles/ppPlace.dir/clean:
$(MAKE) $(MAKESILENT) -f CMakeFiles/ppPlace.dir/build.make CMakeFiles/ppPlace.dir/clean
$(MAKE) $(MAKESILENT) -f CMakeFiles\ppPlace.dir\build.make CMakeFiles/ppPlace.dir/clean
.PHONY : CMakeFiles/ppPlace.dir/clean
#=============================================================================
......@@ -107,6 +106,6 @@ CMakeFiles/ppPlace.dir/clean:
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 0
.PHONY : cmake_check_build_system
......@@ -14,6 +14,7 @@ set(CMAKE_DEPENDS_DEPENDENCY_FILES
"E:/iccad2023/ppp/src/FFTBin.cpp" "CMakeFiles/ppPlace.dir/src/FFTBin.cpp.obj" "gcc" "CMakeFiles/ppPlace.dir/src/FFTBin.cpp.obj.d"
"E:/iccad2023/ppp/src/FFT_calculator.cpp" "CMakeFiles/ppPlace.dir/src/FFT_calculator.cpp.obj" "gcc" "CMakeFiles/ppPlace.dir/src/FFT_calculator.cpp.obj.d"
"E:/iccad2023/ppp/src/Legalizer.cpp" "CMakeFiles/ppPlace.dir/src/Legalizer.cpp.obj" "gcc" "CMakeFiles/ppPlace.dir/src/Legalizer.cpp.obj.d"
"E:/iccad2023/ppp/src/Param.cpp" "CMakeFiles/ppPlace.dir/src/Param.cpp.obj" "gcc" "CMakeFiles/ppPlace.dir/src/Param.cpp.obj.d"
)
# Targets to which this target links.
......
......@@ -11,6 +11,8 @@ file(REMOVE_RECURSE
"CMakeFiles/ppPlace.dir/src/FFT_calculator.cpp.obj.d"
"CMakeFiles/ppPlace.dir/src/Legalizer.cpp.obj"
"CMakeFiles/ppPlace.dir/src/Legalizer.cpp.obj.d"
"CMakeFiles/ppPlace.dir/src/Param.cpp.obj"
"CMakeFiles/ppPlace.dir/src/Param.cpp.obj.d"
"libppPlace.dll.a"
"ppPlace.exe"
"ppPlace.exe.manifest"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.22
# Generated by "MinGW Makefiles" Generator, CMake Version 3.22
# compile CXX with C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/x86_64-w64-mingw32-g++.exe
CXX_DEFINES =
# compile CXX with C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe
CXX_DEFINES = -Dcimg_display=0
CXX_INCLUDES = @CMakeFiles/ppPlace.dir/includes_CXX.rsp
CXX_FLAGS = -g -O0
CXX_FLAGS =
-lpthread -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
CMakeFiles/ppPlace.dir/main.cpp.obj CMakeFiles/ppPlace.dir/src/Circuit.cpp.obj CMakeFiles/ppPlace.dir/src/Database.cpp.obj CMakeFiles/ppPlace.dir/src/FFTBin.cpp.obj CMakeFiles/ppPlace.dir/src/FFT_calculator.cpp.obj CMakeFiles/ppPlace.dir/src/Legalizer.cpp.obj
CMakeFiles/ppPlace.dir/main.cpp.obj CMakeFiles/ppPlace.dir/src/Circuit.cpp.obj CMakeFiles/ppPlace.dir/src/Database.cpp.obj CMakeFiles/ppPlace.dir/src/FFTBin.cpp.obj CMakeFiles/ppPlace.dir/src/FFT_calculator.cpp.obj CMakeFiles/ppPlace.dir/src/Legalizer.cpp.obj CMakeFiles/ppPlace.dir/src/Param.cpp.obj
......@@ -5,4 +5,5 @@ CMAKE_PROGRESS_4 = 4
CMAKE_PROGRESS_5 = 5
CMAKE_PROGRESS_6 = 6
CMAKE_PROGRESS_7 = 7
CMAKE_PROGRESS_8 = 8
CMakeFiles/ppPlace.dir/src/FFT_calculator.cpp.obj: \
E:/iccad2023/ppp/src/FFT_calculator.cpp \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/cmath \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32/bits/c++config.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32/bits/os_defines.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32/bits/cpu_defines.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/cpp_type_traits.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/ext/type_traits.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/math.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/crtdefs.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/_mingw.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/vadefs.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/std_abs.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/stdlib.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed/limits.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed/syslimits.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/limits.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/stdlib.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/malloc.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/stdio.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/_mingw_print_push.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/_mingw_print_pop.h \
C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/cstdlib \
E:\iccad2023\ppp\src\FFT_calculator.cpp \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/cmath \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32/bits/c++config.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32/bits/os_defines.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32/bits/cpu_defines.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/cpp_type_traits.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/ext/type_traits.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/math.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/crtdefs.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/_mingw.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/vadefs.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/std_abs.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/stdlib.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed/limits.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed/syslimits.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/limits.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/stdlib.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/malloc.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/stdio.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/_mingw_print_push.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/x86_64-w64-mingw32/include/_mingw_print_pop.h \
C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/cstdlib \
E:/iccad2023/ppp/include/FFT_calculator.h
......@@ -12,7 +12,7 @@ if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
else()
set(CMAKE_INSTALL_CONFIG_NAME "Debug")
set(CMAKE_INSTALL_CONFIG_NAME "")
endif()
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
endif()
......
No preview for this file type
{
"mid_width": 10,
"densityScale": 1e-1,
"time_step": 0.02,
"wireLengthCoefficient": 10,
"frictionCoefficient": 50,
"initWireLengthCoef": 0.25,
"minWireLengthForceBar": -300,
"minPreconditioner": 1.0,
"initDensityPenalty": 1,
"initialPrevCoordiUpdateCoef": 100,
"targetOverflow": 0.1,
"referenceHpwl": 446000000,
"maxPhiCoef": 1.05,
"minPhiCoef": 0.95,
"maxNesterovIter": 50,
"maxBackTrack": 10,
"minDensityPenalty": 0.01,
"minStepLength": 0.01,
"maxSAtime" : 1
}
\ No newline at end of file
......@@ -20,7 +20,7 @@ Pin P1 2 12
Pin P2 3 3
Pin P3 15 7
DieSize 0 0 40 30
DieSize 0 0 40 60
TopDieMaxUtil 80
BottomDieMaxUtil 90
......
2 2 3
1 1
1 2
2 1
......@@ -8,12 +8,13 @@
#include "Legalizer.h"
#include "Terminal.h"
#include "Param.h"
#include "SA.h"
class Bin{
public:
int x, y, lx, ly, ux, uy;
int64_t macroArea, instArea, fillerArea;
float macroArea, instArea, fillerArea;
float density, targetDensity;
float electroPhi, electroForceX, electroForceY;
......@@ -42,18 +43,21 @@ public:
int binSizeX, binSizeY;
int binCntx, binCnty;
int binCnt;
float scale; //visualizer scale
float targetDensity;
int64_t overflowArea;
float targetDensity_top, targetDensity_bot;
int64_t overflowArea_top, overflowArea_bot;
float sumPhi;
float baseWireLengthCoef;
float sumOverflow;
float sumOverflow_top, sumOverflow_bot;
float maxPhiCoef;
std::vector<Bin*> bins;
std::vector<Bin*> bins_top, bins_bot;
Clock cl;
public:
void init(int);
......@@ -78,10 +82,10 @@ public:
*/
//void finish();
//void legalize();
void finish();
void legalize();
//void terminalAssignment();
void terminalAssignment();
......@@ -106,13 +110,13 @@ public:
Int2d getInterIdy(Instance *);
static float Overlap(Bin*, Instance*);
void updateWireLengthCoef(float);
void updateWireLengthForceWA(float, float);
void updateWireLengthCoef(float, float);
void updateWireLengthForceWA(float, float, float, float);
void updateGradients(std::vector<Float2d>&, std::vector<Float2d>&, std::vector<Float2d>&);
void updateInitialPrevSLPCoordi();
void updateNextIter();
Float2d getWireLengthGradientWA(Instance*, float, float);
Float2d getWireLengthGradientWA(Instance*);
Float2d getWireLengthGradientPinWA(Pin*, float, float);
Float2d getDensityGradient(Instance*);
Float2d getDensityCoordiLayoutInside(Instance*, float, float);
......
......@@ -39,23 +39,35 @@ class Net
{
public:
int pin_num;
std::vector<Pin*> pins;
int lx, ly, ux, uy;
float waExpMinSumX_;
float waXExpMinSumX_;
float waExpMaxSumX_;
float waXExpMaxSumX_;
float waExpMinSumY_;
float waYExpMinSumY_;
float waExpMaxSumY_;
float waYExpMaxSumY_;
std::vector<Pin*> pins[2];
int tlx, tly, tux, tuy;
int blx, bly, bux, buy;
bool has_terminal;
int ter_x, ter_y;
float waExpMinSumX_top;
float waXExpMinSumX_top;
float waExpMaxSumX_top;
float waXExpMaxSumX_top;
float waExpMinSumY_top;
float waYExpMinSumY_top;
float waExpMaxSumY_top;
float waYExpMaxSumY_top;
float waExpMinSumX_bot;
float waXExpMinSumX_bot;
float waExpMaxSumX_bot;
float waXExpMaxSumX_bot;
float waExpMinSumY_bot;
float waYExpMinSumY_bot;
float waExpMaxSumY_bot;
float waYExpMaxSumY_bot;
public:
Net() = default;
Net(int pn):pin_num(pn) {pins.reserve(pn);}
void addPin(Pin *);
void updateBox();
Net(int pn):pin_num(pn) {pins[0].reserve(pn);pins[1].reserve(pn);}
void addPin(Pin *, int);
void updateBox(bool crosslayer=true);
int64_t hpwl();
};
......@@ -86,6 +98,7 @@ public:
long area;
bool is_macro;
bool is_filler;
bool is_fixed;
std::vector<Pin*> pins;
Float2d pos;
Float2d cent;
......@@ -96,7 +109,7 @@ public:
public:
Instance() = default;
Instance(Cell* c): w(c->w), h(c->h), area(c->area), is_macro(c->is_macro), is_filler(c->is_filler) {
Instance(Cell* c): w(c->w), h(c->h), area(c->area), is_macro(c->is_macro), is_filler(c->is_filler), is_fixed(false) {
/*
int ps = c->pins.size();
pins.resize(ps);
......@@ -119,12 +132,14 @@ public:
void setPos(Float2d p) {
pos = p;
cent = std::make_pair(p.first + h/2, p.second + w/2);
dpos = std::make_pair(cent.first - dx/2, cent.second - dy/2);
updatePins();
}
void setCent(Float2d p) {
cent = p;
pos = std::make_pair(p.first - h/2, p.second - w/2);
dpos = std::make_pair(p.first - dx/2, p.second - dy/2);
updatePins();
}
......@@ -246,7 +261,7 @@ public:
std::vector<std::pair<int, int>> term_pos;
int64_t macroArea, stdArea;
int64_t macroArea_top, stdArea_top, macroArea_bot, stdArea_bot;
// SLP is Step Length Prediction.
......@@ -286,8 +301,10 @@ public:
//float baseWireLengthCoef_;
// wlen_cof
float wireLengthCoefX_;
float wireLengthCoefY_;
float wireLengthCoefX_top;
float wireLengthCoefY_top;
float wireLengthCoefX_bot;
float wireLengthCoefY_bot;
// phi is described in ePlace paper.
//float sumPhi_;
......
#ifndef PPP_FFTBIN_H
#define PPP_FFTBIN_h
#include "param.h"
#include "Param.h"
#include "FFT_calculator.h"
class fftBin : public FFT_calculator {
......@@ -19,17 +19,17 @@ public:
std::vector<float*> electricField_x_top;
std::vector<float*> electricField_y_top;
std::vector<float*> electricDensity_bottom;
std::vector<float*> electricPotential_bottom;
std::vector<float*> electricField_x_bottom;
std::vector<float*> electricField_y_bottom;
std::vector<float*> electricDensity_bot;
std::vector<float*> electricPotential_bot;
std::vector<float*> electricField_x_bot;
std::vector<float*> electricField_y_bot;
std::vector<std::vector<float>> stdArea_top, fillerArea_top;
std::vector<std::vector<std::vector<int>>> correspondCells_top;
std::vector<std::vector<float>> stdArea_bottom, fillerArea_bottom;
std::vector<std::vector<std::vector<int>>> correspondCells_bottom;
std::vector<std::vector<float>> stdArea_bot, fillerArea_bot;
std::vector<std::vector<std::vector<int>>> correspondCells_bot;
......@@ -37,8 +37,8 @@ public:
std::vector<float> wx_top, wy_top;
std::vector<float> wx_sq_top, wy_sq_top;
std::vector<float> wx_bottom, wy_bottom;
std::vector<float> wx_sq_bottom, wy_sq_bottom;
std::vector<float> wx_bot, wy_bot;
std::vector<float> wx_sq_bot, wy_sq_bot;
std::vector<float> cosTable;
......
......@@ -7,57 +7,67 @@ class FFT_calculator {
// http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html
// 1D fftsg
void cdft(int n, int isgn, float *a, int *ip, float *w);
void rdft(int n, int isgn, float *a, int *ip, float *w);
void ddct(int n, int isgn, float *a, int *ip, float *w);
void ddst(int n, int isgn, float *a, int *ip, float *w);
void dfct(int n, float *a, float *t, int *ip, float *w);
void dfst(int n, float *a, float *t, int *ip, float *w);
static void cdft(int n, int isgn, float *a, int *ip, float *w);
static void rdft(int n, int isgn, float *a, int *ip, float *w);
static void ddct(int n, int isgn, float *a, int *ip, float *w);
static void ddst(int n, int isgn, float *a, int *ip, float *w);
static void dfct(int n, float *a, float *t, int *ip, float *w);
static void dfst(int n, float *a, float *t, int *ip, float *w);
void makewt(int nw, int *ip, float *w);
void makeipt(int nw, int *ip);
void makect(int nc, int *ip, float *c);
static void makewt(int nw, int *ip, float *w);
static void makeipt(int nw, int *ip);
static void makect(int nc, int *ip, float *c);
void cftfsub(int n, float *a, int *ip, int nw, float *w);
void cftbsub(int n, float *a, int *ip, int nw, float *w);
void bitrv2(int n, int *ip, float *a);
void bitrv2conj(int n, int *ip, float *a);
void bitrv216(float *a);
void bitrv216neg(float *a);
void bitrv208(float *a);
void bitrv208neg(float *a);
void cftf1st(int n, float *a, float *w);
void cftb1st(int n, float *a, float *w);
static void cftfsub(int n, float *a, int *ip, int nw, float *w);
static void cftbsub(int n, float *a, int *ip, int nw, float *w);
static void bitrv2(int n, int *ip, float *a);
static void bitrv2conj(int n, int *ip, float *a);
static void bitrv216(float *a);
static void bitrv216neg(float *a);
static void bitrv208(float *a);
static void bitrv208neg(float *a);
static void cftf1st(int n, float *a, float *w);
static void cftb1st(int n, float *a, float *w);
void cftrec4(int n, float *a, int nw, float *w);
int cfttree(int n, int j, int k, float *a, int nw, float *w);
void cftleaf(int n, int isplt, float *a, int nw, float *w);
void cftmdl1(int n, float *a, float *w);
void cftmdl2(int n, float *a, float *w);
void cftfx41(int n, float *a, int nw, float *w);
void cftf161(float *a, float *w);
void cftf162(float *a, float *w);
void cftf081(float *a, float *w);
void cftf082(float *a, float *w);
void cftf040(float *a);
void cftb040(float *a);
void cftx020(float *a);
void rftfsub(int n, float *a, int nc, float *c);
void rftbsub(int n, float *a, int nc, float *c);
void dctsub(int n, float *a, int nc, float *c);
void dstsub(int n, float *a, int nc, float *c);
static void cftrec4(int n, float *a, int nw, float *w);
static int cfttree(int n, int j, int k, float *a, int nw, float *w);
static void cftleaf(int n, int isplt, float *a, int nw, float *w);
static void cftmdl1(int n, float *a, float *w);
static void cftmdl2(int n, float *a, float *w);
static void cftfx41(int n, float *a, int nw, float *w);
static void cftf161(float *a, float *w);
static void cftf162(float *a, float *w);
static void cftf081(float *a, float *w);
static void cftf082(float *a, float *w);
static void cftf040(float *a);
static void cftb040(float *a);
static void cftx020(float *a);
static void rftfsub(int n, float *a, int nc, float *c);
static void rftbsub(int n, float *a, int nc, float *c);
static void dctsub(int n, float *a, int nc, float *c);
static void dstsub(int n, float *a, int nc, float *c);
// 2D fftsg
void cdft2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
void rdft2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
void rdft2dsort(int n1, int n2, int isgn, float **a);
void ddcst2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
void ddsct2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
void ddct2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
void ddst2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
void cdft2d_sub(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
void rdft2d_sub(int n1, int isgn, float **a);
void ddxt2d_sub(int n1, int n2, int ics, int isgn, float **a, float *t, int *ip, float *w);
static void cdft2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
static void rdft2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
static void rdft2dsort(int n1, int n2, int isgn, float **a);
static void ddcst2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
static void ddsct2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
static void ddct2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
static void ddst2d(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
static void cdft2d_sub(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
static void rdft2d_sub(int n1, int isgn, float **a);
static void ddxt2d_sub(int n1, int n2, int ics, int isgn, float **a, float *t, int *ip, float *w);
// void xdft2d0_subth(int n1, int n2, int icr, int isgn, float **a, int *ip, float *w);
// void cdft2d_subth(int n1, int n2, int isgn, float **a, float *t, int *ip, float *w);
// void ddxt2d0_subth(int n1, int n2, int ics, int isgn, float **a, int *ip, float *w);
// void ddxt2d_subth(int n1, int n2, int ics, int isgn, float **a, float *t, int *ip, float *w);
public:
static void *xdft2d0_th(void *p);
static void *cdft2d_th(void *p);
static void *ddxt2d0_th(void *p);
static void *ddxt2d_th(void *p);
};
......
......@@ -11,7 +11,8 @@
#include <vector>
#include <random>
#include <algorithm>
#include <ctime>
#include <cmath>
#include <math.h>
#define _USE_MATH_DEFINES
......@@ -47,28 +48,60 @@ namespace Color {
const static float sqrt2 = 1.414213562373095048801L;
const static int inf=0x7fffffff;
const static int mid_width = 10;
// const static int mid_width = 10;
// const static float densityScale = 1e-1; //1e-4; // variable for preventing the overflow of binDensity
// const static float time_step = 0.02;
// const static float wireLengthCoefficient = 10; //1e-1;
// const static float frictionCoefficient = 50;
// const static float initWireLengthCoef = 0.25;
// const static float minWireLengthForceBar = -300;
// const static float minPreconditioner = 1.0;
// const static float initDensityPenalty = 10; //0.00008;
// const static float initialPrevCoordiUpdateCoef = 100;
// const static float targetOverflow = 0.1;
// const static float referenceHpwl = 446000000;
// const static float maxPhiCoef = 1.05;
// const static float minPhiCoef = 0.95;
// const static int maxNesterovIter = 100;
// const static int maxBackTrack = 10;
const static float densityScale = 1e-1; //1e-4; // variable for preventing the overflow of binDensity
const static float time_step = 0.02;
const static float wireLengthCoefficient = 10; //1e-1;
const static float frictionCoefficient = 50;
namespace Param {
extern int mid_width;
extern float densityScale;
extern float time_step;
extern float wireLengthCoefficient;
extern float frictionCoefficient;
const static float initWireLengthCoef = 0.25;
const static float minWireLengthForceBar = -300;
const static float minPreconditioner = 1.0;
const static float initDensityPenalty = 10; //0.00008;
const static float initialPrevCoordiUpdateCoef = 100;
const static float targetOverflow = 0.1;
const static float referenceHpwl = 446000000;
const static float maxPhiCoef = 1.05;
const static float minPhiCoef = 0.95;
extern float initWireLengthCoef;
extern float minWireLengthForceBar;
extern float minPreconditioner;
extern float initDensityPenalty;
extern float initialPrevCoordiUpdateCoef;
extern float targetOverflow;
extern float minDensityPenalty;
extern float minStepLength;
extern float referenceHpwl;
extern float maxPhiCoef;
extern float minPhiCoef;
const static int maxNesterovIter = 100;
const static int maxBackTrack = 10;
extern int maxNesterovIter;
extern int maxBackTrack;
extern double maxSAtime;
void init(const std::string& config_file_path);
}
static float
fastExp(float a) {
......@@ -104,5 +137,18 @@ static float getSecondNorm(std::vector<Float2d>& a) {
return sqrt( norm / (2.0*a.size()) );
}
class Clock {
public:
clock_t last_time;
public:
Clock():last_time(0) {}
double time() {
clock_t cur_time = clock();
double duration = (double)(cur_time - last_time) / CLOCKS_PER_SEC;
last_time = cur_time;
return duration;
}
};
#endif
\ No newline at end of file
#ifndef PPP_SA_H
#define PPP_SA_H
#include "Param.h"
static double Rand() { return (double)rand() / RAND_MAX; }
class SSA{
public:
int H, W, T;
class Rect{
public:
int id;
double h, w;
double lx, ly;
double ux, uy;
public:
Rect(int h_, int w_, int lx_, int ly_) {h=h_, w=w_, lx=lx_, ly = ly_, ux = lx+h, uy = ly+w;}
void setPos(double x, double y) {lx = x; ly = y; ux = lx + h; uy = ly + w;}
void move(int x, int y) {lx += x; ly += y; ux += x; uy += y;}
void set(double h_, double w_, double lx_, double ly_) {h=h_, w=w_, lx=lx_, ly = ly_, ux = lx+h, uy = ly+w;}
};
public:
std::vector<Rect> rect;
std::vector<Rect> ans;
double ansx, ansy, dis, diss;
public:
SSA(int h, int w):H(h), W(w), dis(1e8), diss(1e8){}
double Overlap(Rect a, Rect b) {
double llx = std::max(a.lx, b.lx);
double lly = std::max(a.ly, b.ly);
double urx = std::min(a.ux, b.ux);
double ury = std::min(a.uy, b.uy);
double overlapWidth = urx - llx;
double overlapHeight = ury - lly;
if (overlapWidth < 0 || overlapHeight < 0) {
return 0;
} else {
return overlapWidth * overlapHeight;
}
}
double calc(Rect r, int j) {
double res = 0;
for (int i = 0; i < rect.size(); ++i) {
if (i != j)
res += Overlap(r, rect[i]);
}
//if (res < dis) dis = res, ansx = xx, ansy = yy;
return res;
}
double calc_all() {
double res = 0;
for (int i = 0; i < rect.size() - 1; ++i) {
for (int j = i+1; j < rect.size(); ++j) {
//printf("%d %d %f\n", i, j, Overlap(rect[i], rect[j]));
res += Overlap(rect[i], rect[j]);
}
}
if (res < 0.1) {
//printf("no overlap!\n");
double ress = 0;
for (int i = 0; i < rect.size(); ++i){
ress += std::min(rect[i].lx, H - rect[i].ux);
ress += std::min(rect[i].ly, W - rect[i].uy);
}
if (ress < diss) {
dis = res, diss = ress, ans = rect;
//printf("zero overlap: %f distance: %f distance(edge): %f \n", res, dis, diss);
//printf("rect: %f %f %f %f %f %f \n", rect[0].lx, rect[0].ly, rect[1].lx, rect[1].ly, rect[2].lx, rect[2].ly);//, rect[3].lx, rect[3].ly);
}
return res;
}
if (res < dis) {
dis = res, ans = rect;
//printf("rect: %f %f %f %f %f %f %f %f\n", rect[0].lx, rect[0].ly, rect[1].lx, rect[1].ly, rect[2].lx, rect[2].ly, rect[3].lx, rect[3].ly);
//printf("update overlap: %f distance: %f distance(edge): %f \n", res, dis, diss);
}
return res;
}
void check(Rect& r) {
if (r.lx <= 0) r.lx = 0, r.ux = r.h;
if (r.ly <= 0) r.ly = 0, r.uy = r.w;
if (r.ux >= H) r.lx = H - r.h, r.ux = H;
if (r.uy >= W) r.ly = W - r.w, r.uy = W;
}
void simulateAnneal() {
//for (int i = 0; i < rect.size(); ++i) {
// printf("rect: %d %f %f %f %f\n", rect[i].id, rect[i].h, rect[i].w, rect[i].lx, rect[i].ly);
//}
//printf("SA initial overlap: %f\n", calc_all());
double t = 10;//std::max(H, W)/4;
double decay = 0.99;
if (t > 100) {
decay = 0.95;
}
while (t > 1) {
/*
double nxtx = nowx + t * (Rand() * 2 - 1);
double nxty = nowy + t * (Rand() * 2 - 1);
double delta = calc(nxtx, nxty) - calc(nowx, nowy);
printf("delta: %f %f %f %f\n ", delta, t, exp(-delta / t), Rand());
if (exp(-delta / t) > Rand()) nowx = nxtx, nowy = nxty;
t *= 0.97;*/
//printf("t: %f\n", t);
for (int i = 0; i < rect.size(); ++i) {
Rect tmp = rect[i];
tmp.move(round(t * (Rand() * 2 - 1)), round(t * (Rand() * 2 - 1)));
//printf("%f, %f, %f %f\n", t * (Rand() * 2 - 1), t * (Rand() * 2 - 1), tmp.lx, tmp.ly);
check(tmp);
double delta = calc(tmp, i) - calc(rect[i], i);
if (exp(-delta / t) > Rand()) rect[i] = tmp;
}
//printf("rect: %f %f %f %f %f %f \n", rect[0].lx, rect[0].ly, rect[1].lx, rect[1].ly, rect[2].lx, rect[2].ly);//, rect[3].lx, rect[3].ly);
//printf("overlap: %f %f %f %f %f\n", calc(rect[0], 0), calc(rect[1], 1), calc(rect[2], 2), calc(rect[3], 3), calc_all());
calc_all();
//if (calc_all() <= 1.0001f) scanf("%f", ansx);
t *= decay;
}
//printf("SA after overlap: %f\n", calc_all());
/*
for (int i = 1; i <= 1000; ++i) {
double nxtx = ansx + t * (Rand() * 2 - 1);
double nxty = ansy + t * (Rand() * 2 - 1);
calc(nxtx, nxty);
}*/
}
};
#endif //PPP_SA_H
......@@ -3,144 +3,87 @@
#include "Param.h"
class Terminal{
class Terminal {
public:
//const int maxn=10005;
const int inf=0x7fffffff;
int n, m;
std::vector<int> wx, wy, cx, cy, slack;
std::vector<bool> visx, visy;
//int Map[maxn][maxn];
//int minz;
std::vector<std::vector<int>> index;
std::vector<std::vector<int>> value;
Terminal(int x, int y): n(x), m(y) {
index.resize(n);
value.resize(m);
std::vector<std::vector<int> > g;
std::vector<int> pa; // 匹配
std::vector<int> pb;
std::vector<int> vis; // 访问
int n, m; // 顶点和边的数量
int dfn; // 时间戳记
int res; // 匹配数
Terminal(int _n, int _m) : n(_n), m(_m) {
assert(0 <= n && 0 <= m);
pa = std::vector<int>(n, -1);
pb = std::vector<int>(m, -1);
vis = std::vector<int>(n);
g.resize(n);
res = 0;
dfn = 0;
}
void add(int i, int x, int y) {
index[i].push_back(x);
value[i].push_back(y);
void add(int from, int to) {
//std::cout << from << " " << to << " " << n << " " << m << std::endl;
assert(0 <= from && from < n && 0 <= to && to < m);
g[from].push_back(to);
}
int BinarySearch(std::vector<int> &array, int key)
{
int aSize = array.size();
if ( array.empty() || aSize == 0 )
return -1;
int low = 0;
int high = aSize - 1;
int mid = 0;
while ( low <= high )
{
mid = (low + high )/2;
if ( array[mid] < key)
low = mid + 1;
else if ( array[mid] > key )
high = mid - 1;
else
return mid;
}
return -1;
}
bool find(int u)
{
visx[u]=1;
int l = index[u].size();
for(int j = 0; j < l; ++j)
{
int v = index[u][j];
if(visy[v]) continue;
int t = wx[u] + wy[v] - value[u][j];
if(t == 0)
{
visy[v]=1;
if(cy[v]==-1||find(cy[v]))
{
cx[u]=v;
cy[v]=u;
return 1;
}
}
else if(t<0)
{
slack[v]=std::max(slack[v],t);
}
bool dfs(int v) {
vis[v] = dfn;
for (int u : g[v]) {
if (pb[u] == -1) {
pb[u] = v;
pa[v] = u;
return true;
}
}
for (int u : g[v]) {
if (vis[pb[u]] != dfn && dfs(pb[u])) {
pa[v] = u;
pb[u] = v;
return true;
}
}
return false;
}
int run()
{
slack.resize(m, 0);
cx.resize(n, -1);
cy.resize(m, -1);
wx.resize(n, 0);
wy.resize(m, 0);
visx.resize(n);
visy.resize(m);
for(int i = 0; i < n; ++i)
{
int l = index[i].size();
for(int j = 0; j < l; ++j)
{
wx[i]=std::min(wx[i],value[i][j]);
int solve() {
while (true) {
dfn++;
int cnt = 0;
for (int i = 0; i < n; i++) {
if (pa[i] == -1 && dfs(i)) {
cnt++;
}
std::cout << wx[i] << std::endl;
}
for(int i = 0; i < n; ++i)
{
for(;;)
{
//minz=-inf;
std::fill(slack.begin(), slack.end(), -inf);
std::fill(visx.begin(), visx.end(), 0);
std::fill(visy.begin(), visy.end(), 0);
if(find(i)) break;
int d = -inf;
for (int j = 0; j < m; ++j)
if (!visy[j]) d = std::max(d, slack[j]);
for(int j = 0; j < m; ++j)
{
if(visx[j]) wx[j]-=d;
if(visy[j]) wy[j]+=d;
else slack[j] -= d;
}
}
//for (int j = 0; j < cntx; ++j)
// std::cout << cx[j] << " " << cy[j] << " " << wx[j] << " " << wy[j] << " " << slack[j] << std::endl;
//return 1;
if (cnt == 0) {
break;
}
int ans=0;
for(int i = 0; i < n; ++i)
{
if(cx[i]!=-1)
{
int ind = BinarySearch(index[i], cx[i]);
ans+=value[i][ind];
}
res += cnt;
}
return ans;
return res;
}
};
#endif //PPP_TERMINAL_H
\ No newline at end of file
/*
int main() {
int n, m, e;
std::cin >> n >> m >> e;
Terminal solver(n, m);
int u, v;
for (int i = 0; i < e; i++) {
std::cin >> u >> v;
u--, v--;
solver.add(u, v);
}
std::cout << solver.solve() << "\n";
for (int i = 0; i < n; i++) {
std::cout << solver.pa[i] + 1 << " ";
}
std::cout << "\n";
}*/
#endif
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
#include "Circuit.h"
#include "Param.h"
int main() {
int main(int argc, char* argv[]) {
std::ios::sync_with_stdio(false);
// Set default values for config file and input file paths
std::string config_file_path = "../config/config.json";
std::string input_file_path = "../data/ProblemB_case1.txt";
// Parse command-line arguments
if (argc >= 2) {
input_file_path = argv[1];
}
if (argc >= 3) {
config_file_path = argv[2];
}
// Initialize the configuration values
Param::init(config_file_path);
std::cout << "Use config file " << config_file_path << std::endl;
Circuit* circuit = new Circuit();
circuit->readcase("../data/ProblemB_case2.txt");
circuit->readcase(input_file_path);
std::cout << "Reading case from " << input_file_path << "..." << std::endl;
std::cout << "Reading case..." << std::endl;
// std::cout << "Reading case..." << std::endl;
std::string picname;
......@@ -38,14 +60,14 @@ int main() {
}
}
*/
circuit->finish();
picname = "after.bmp";
circuit->draw(picname);
*/
std::cout << "Progress End." << std::endl;
......
from PIL import Image
import imageio
import os
image_list = []
for i in range(0, 200):
filename = './images/Nesterov_Iter' + str(i) + '.bmp'
im = Image.open(filename)
image_list.append(im)
imageio.mimsave('place.gif', image_list)
This diff is collapsed. Click to expand it.
del ./images/*
cd build
# cmake ../
make
time ./ppPlace
# orig
# real 0m9.972s
# user 0m9.842s
# sys 0m0.056s
# real 0m22.129s
# user 0m16.195s
# sys 0m1.343s
# real 0m21.727s
# user 0m15.780s
# sys 0m1.532s
\ No newline at end of file
......@@ -5,24 +5,66 @@ void Pin::updatePos() {
cy = pcell->pos.second + py;
}
void Net::addPin(Pin* p) {
pins.push_back(p);
void Net::addPin(Pin* p, int l) {
pins[l].push_back(p);
}
void Net::updateBox() {
lx = ly = INT_MAX;
ux = uy = INT_MIN;
for (int i = 0; i < pin_num; ++i) {
lx = std::min(pins[i]->cx, lx);
ly = std::min(pins[i]->cy, ly);
ux = std::max(pins[i]->cx, ux);
uy = std::max(pins[i]->cy, uy);
void Net::updateBox(bool crosslayer) {
has_terminal = false;
tlx = tly = blx = bly = INT_MAX;
tux = tuy = bux = buy = INT_MIN;
int top_num = pins[0].size();
int bot_num = pins[1].size();
for (int i = 0; i < top_num; ++i) {
tlx = std::min(pins[0][i]->cx, tlx);
tly = std::min(pins[0][i]->cy, tly);
tux = std::max(pins[0][i]->cx, tux);
tuy = std::max(pins[0][i]->cy, tuy);
}
for (int i = 0; i < bot_num; ++i) {
blx = std::min(pins[1][i]->cx, blx);
bly = std::min(pins[1][i]->cy, bly);
bux = std::max(pins[1][i]->cx, bux);
buy = std::max(pins[1][i]->cy, buy);
}
if (top_num > 0 && bot_num > 0) {
has_terminal = true;
}
if (crosslayer) {
float rectLx = std::max(tlx, blx);
float rectLy = std::max(tly, bly);
float rectUx = std::min(tux, bux);
float rectUy = std::min(tuy, buy);
if (rectUx - rectLx > 0) {
ter_x = (rectUx + rectLx) / 2;
tlx = std::min(ter_x, tlx);
tux = std::max(ter_x, tux);
blx = std::min(ter_x, blx);
bux = std::max(ter_x, bux);
}
if (rectUy - rectLy > 0) {
ter_y = (rectUy + rectLy) / 2;
tly = std::min(ter_y, tly);
tuy = std::max(ter_y, tuy);
bly = std::min(ter_y, bly);
buy = std::max(ter_y, buy);
}
}
}
int64_t Net::hpwl() {
return static_cast<int64_t>((ux - lx) + (uy - ly));
int64_t res = 0;
if (pins[0].size() > 0)
res += static_cast<int64_t>((tux - tlx) + (tuy - tly));
if (pins[1].size() > 0)
res += static_cast<int64_t>((bux - blx) + (buy - bly));
return res;
}
void Database::readcase(std::string inputfilename)
......
......@@ -104,39 +104,39 @@ void fftBin::doFFT() {
);
/*
ddct2d(binsize_x,
binsize_y,
-1,
electricDensity_bottom.data(),
electricDensity_bot.data(),
NULL,
workArea.data(),
cosTable.data()
);
for (int i = 0; i < binsize_x; ++i) {
electricDensity_bottom[i][0] *= 0.5;
electricDensity_bot[i][0] *= 0.5;
}
for (int i = 0; i < binsize_y; ++i) {
electricDensity_bottom[0][i] *= 0.5;
electricDensity_bot[0][i] *= 0.5;
}
for (int i = 0; i < binsize_x; ++i) {
for (int j = 0; j < binsize_y; ++j) {
electricDensity_bottom[i][j] *= 4.0 / binsize_x / binsize_y;
electricDensity_bot[i][j] *= 4.0 / binsize_x / binsize_y;
}
}
for (int i = 0; i < binsize_x; ++i) {
float wwx = wx_bottom[i];
float wwx2 = wx_sq_bottom[i];
float wwx = wx_bot[i];
float wwx2 = wx_sq_bot[i];
for (int j = 0; j < binsize_y; ++j) {
float wwy = wy_bottom[j];
float wwy2 = wy_sq_bottom[j];
float wwy = wy_bot[j];
float wwy2 = wy_sq_bot[j];
float density = electricDensity_bottom[i][j];
float density = electricDensity_bot[i][j];
float phi = 0;
float electroX = 0, electroY = 0;
if (i == 0 && j == 0) {
......@@ -148,16 +148,16 @@ void fftBin::doFFT() {
electroY = phi * wwy;
}
electricPotential_bottom[i][j] = phi;
electricField_x_bottom[i][j] = electroX;
electricField_y_bottom[i][j] = electroY;
electricPotential_bot[i][j] = phi;
electricField_x_bot[i][j] = electroX;
electricField_y_bot[i][j] = electroY;
}
}
ddct2d(binsize_x,
binsize_y,
1,
electricPotential_bottom.data(),
electricPotential_bot.data(),
NULL,
workArea.data(),
cosTable.data()
......@@ -165,7 +165,7 @@ void fftBin::doFFT() {
ddsct2d(binsize_x,
binsize_y,
1,
electricField_x_bottom.data(),
electricField_x_bot.data(),
NULL,
workArea.data(),
cosTable.data()
......@@ -173,12 +173,12 @@ void fftBin::doFFT() {
ddcst2d(binsize_x,
binsize_y,
1,
electricField_y_bottom.data(),
electricField_y_bot.data(),
NULL,
workArea.data(),
cosTable.data()
);
*/
......@@ -192,9 +192,9 @@ fftBin::~fftBin() {
delete electricField_x_top[i];
delete electricField_y_top[i];
delete electricDensity_bottom[i];
delete electricPotential_bottom[i];
delete electricField_x_bottom[i];
delete electricField_y_bottom[i];
delete electricDensity_bot[i];
delete electricPotential_bot[i];
delete electricField_x_bot[i];
delete electricField_y_bot[i];
}
}
......@@ -4174,7 +4174,7 @@ void xdft2d0_subth(int n1, int n2, int icr, int isgn, float **a, int *ip,
ag[i].a = a;
ag[i].ip = ip;
ag[i].w = w;
fft2d_thread_create(&th[i], xdft2d0_th, &ag[i]);
fft2d_thread_create(&th[i], FFT_calculator::xdft2d0_th, &ag[i]);
}
for(i = 0; i < nthread; i++) {
fft2d_thread_wait(th[i]);
......@@ -4207,7 +4207,7 @@ void cdft2d_subth(int n1, int n2, int isgn, float **a, float *t, int *ip,
ag[i].t = &t[nt * i];
ag[i].ip = ip;
ag[i].w = w;
fft2d_thread_create(&th[i], cdft2d_th, &ag[i]);
fft2d_thread_create(&th[i], FFT_calculator::cdft2d_th, &ag[i]);
}
for(i = 0; i < nthread; i++) {
fft2d_thread_wait(th[i]);
......@@ -4235,7 +4235,7 @@ void ddxt2d0_subth(int n1, int n2, int ics, int isgn, float **a, int *ip,
ag[i].a = a;
ag[i].ip = ip;
ag[i].w = w;
fft2d_thread_create(&th[i], ddxt2d0_th, &ag[i]);
fft2d_thread_create(&th[i], FFT_calculator::ddxt2d0_th, &ag[i]);
}
for(i = 0; i < nthread; i++) {
fft2d_thread_wait(th[i]);
......@@ -4269,16 +4269,16 @@ void ddxt2d_subth(int n1, int n2, int ics, int isgn, float **a, float *t, int *i
ag[i].t = &t[nt * i];
ag[i].ip = ip;
ag[i].w = w;
fft2d_thread_create(&th[i], ddxt2d_th, &ag[i]);
fft2d_thread_create(&th[i], FFT_calculator::ddxt2d_th, &ag[i]);
}
for(i = 0; i < nthread; i++) {
fft2d_thread_wait(th[i]);
}
}
void *xdft2d0_th(void *p) {
void cdft(int n, int isgn, float *a, int *ip, float *w);
void rdft(int n, int isgn, float *a, int *ip, float *w);
void *FFT_calculator::xdft2d0_th(void *p) {
// void cdft(int n, int isgn, float *a, int *ip, float *w);
// void rdft(int n, int isgn, float *a, int *ip, float *w);
int nthread, n0, n1, n2, icr, isgn, *ip, i;
float **a, *w;
......@@ -4304,8 +4304,8 @@ void *xdft2d0_th(void *p) {
return (void *)0;
}
void *cdft2d_th(void *p) {
void cdft(int n, int isgn, float *a, int *ip, float *w);
void *FFT_calculator::cdft2d_th(void *p) {
// void cdft(int n, int isgn, float *a, int *ip, float *w);
int nthread, n0, n1, n2, isgn, *ip, i, j;
float **a, *t, *w;
......@@ -4376,9 +4376,9 @@ void *cdft2d_th(void *p) {
return (void *)0;
}
void *ddxt2d0_th(void *p) {
void ddct(int n, int isgn, float *a, int *ip, float *w);
void ddst(int n, int isgn, float *a, int *ip, float *w);
void *FFT_calculator::ddxt2d0_th(void *p) {
// void ddct(int n, int isgn, float *a, int *ip, float *w);
// void ddst(int n, int isgn, float *a, int *ip, float *w);
int nthread, n0, n1, n2, ics, isgn, *ip, i;
float **a, *w;
......@@ -4404,9 +4404,9 @@ void *ddxt2d0_th(void *p) {
return (void *)0;
}
void *ddxt2d_th(void *p) {
void ddct(int n, int isgn, float *a, int *ip, float *w);
void ddst(int n, int isgn, float *a, int *ip, float *w);
void *FFT_calculator::ddxt2d_th(void *p) {
// void ddct(int n, int isgn, float *a, int *ip, float *w);
// void ddst(int n, int isgn, float *a, int *ip, float *w);
int nthread, n0, n1, n2, ics, isgn, *ip, i, j;
float **a, *t, *w;
......
#include "Param.h"
#include <fstream>
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
namespace Param {
int mid_width = 10;
float densityScale = 1e-1;
float time_step = 0.02;
float wireLengthCoefficient = 10;
float frictionCoefficient = 50;
float initWireLengthCoef = 0.25;
float minWireLengthForceBar = -300;
float minPreconditioner = 1.0;
float initDensityPenalty = 10;
float initialPrevCoordiUpdateCoef = 100;
float targetOverflow = 0.1;
float minDensityPenalty = 0.5;
float minStepLength = 1;
float referenceHpwl = 446000000;
float maxPhiCoef = 1.05;
float minPhiCoef = 0.95;
int maxNesterovIter = 100;
int maxBackTrack = 10;
double maxSAtime = 1;
void init(const std::string& config_file_path) {
// Open the configuration file
std::ifstream config_file(config_file_path);
if (!config_file.is_open()) {
std::cerr << "Failed to open config file: " << config_file_path << std::endl;
exit(1);
}
// Parse the configuration file
json config;
try {
config_file >> config;
} catch (json::parse_error& e) {
std::cerr << "Failed to parse config file: " << e.what() << std::endl;
exit(1);
}
// Read the configuration values
mid_width = config.value("mid_width", mid_width);
densityScale = config.value("densityScale", densityScale);
time_step = config.value("time_step", time_step);
wireLengthCoefficient = config.value("wireLengthCoefficient", wireLengthCoefficient);
frictionCoefficient = config.value("frictionCoefficient", frictionCoefficient);
initWireLengthCoef = config.value("initWireLengthCoef", initWireLengthCoef);
minWireLengthForceBar = config.value("minWireLengthForceBar", minWireLengthForceBar);
minPreconditioner = config.value("minPreconditioner", minPreconditioner);
initDensityPenalty = config.value("initDensityPenalty", initDensityPenalty);
initialPrevCoordiUpdateCoef = config.value("initialPrevCoordiUpdateCoef", initialPrevCoordiUpdateCoef);
targetOverflow = config.value("targetOverflow", targetOverflow);
referenceHpwl = config.value("referenceHpwl", referenceHpwl);
maxPhiCoef = config.value("maxPhiCoef", maxPhiCoef);
minPhiCoef = config.value("minPhiCoef", minPhiCoef);
maxNesterovIter = config.value("maxNesterovIter", maxNesterovIter);
maxBackTrack = config.value("maxBackTrack", maxBackTrack);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment