Commit 1102231b by Yijun Tan

bugs

parent 3e30c3de
...@@ -13,11 +13,14 @@ file(GLOB_RECURSE SRC ...@@ -13,11 +13,14 @@ file(GLOB_RECURSE SRC
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}) add_executable(ppPlace main.cpp ${SRC})
target_include_directories(ppPlace PUBLIC ${CMAKE_SOURCE_DIR}/include/) target_include_directories(ppPlace PUBLIC ${CMAKE_SOURCE_DIR}/include/)
target_include_directories(ppPlace PUBLIC ${CMAKE_SOURCE_DIR}/module/CImg) target_include_directories(ppPlace PUBLIC ${CMAKE_SOURCE_DIR}/module/CImg)
#target_link_libraries(ppPlace X11 pthread) #target_link_libraries(ppPlace X11 pthread)
target_link_libraries(ppPlace pthread) #target_link_libraries(ppPlace pthread)
target_link_libraries(ppPlace)
#cmake .. -G "MinGW Makefiles" #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 ...@@ -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. //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 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. //Choose the type of build, options are: None Debug Release RelWithDebInfo
CMAKE_BUILD_TYPE:STRING=Debug // MinSizeRel ...
CMAKE_BUILD_TYPE:STRING=
//Enable/Disable color output during build. //Enable/Disable color output during build.
CMAKE_COLOR_MAKEFILE:BOOL=ON CMAKE_COLOR_MAKEFILE:BOOL=ON
//No help, variable specified on the command line. //CXX compiler
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 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 //A wrapper around 'ar' adding the appropriate '--plugin' option
// for the GCC compiler // 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 //A wrapper around 'ranlib' adding the appropriate '--plugin' option
// for the GCC compiler // 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. //Flags used by the CXX compiler during all build types.
CMAKE_CXX_FLAGS:STRING= CMAKE_CXX_FLAGS:STRING=
...@@ -55,16 +56,16 @@ CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG ...@@ -55,16 +56,16 @@ CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
//Libraries linked by default with all C++ applications. //Libraries linked by default with all C++ applications.
CMAKE_CXX_STANDARD_LIBRARIES:STRING=-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 CMAKE_CXX_STANDARD_LIBRARIES:STRING=-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
//No help, variable specified on the command line. //C compiler
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 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 //A wrapper around 'ar' adding the appropriate '--plugin' option
// for the GCC compiler // 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 //A wrapper around 'ranlib' adding the appropriate '--plugin' option
// for the GCC compiler // 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. //Flags used by the C compiler during all build types.
CMAKE_C_FLAGS:STRING= CMAKE_C_FLAGS:STRING=
...@@ -102,9 +103,6 @@ CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= ...@@ -102,9 +103,6 @@ CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during RELWITHDEBINFO builds. //Flags used by the linker during RELWITHDEBINFO builds.
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= 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) //Convert GNU import libraries to MS format (requires Visual Studio)
CMAKE_GNUtoMS:BOOL=OFF CMAKE_GNUtoMS:BOOL=OFF
...@@ -114,8 +112,8 @@ CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/ppPlace ...@@ -114,8 +112,8 @@ CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/ppPlace
//Path to a program. //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 CMAKE_LINKER:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ld.exe
//make program //Path to a program.
CMAKE_MAKE_PROGRAM:FILEPATH=C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/mingw64/bin/make.exe CMAKE_MAKE_PROGRAM:FILEPATH=C:/MinGW/bin/mingw32-make.exe
//Flags used by the linker during the creation of modules during //Flags used by the linker during the creation of modules during
// all build types. // all build types.
...@@ -159,7 +157,7 @@ CMAKE_PROJECT_NAME:STATIC=ppPlace ...@@ -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 CMAKE_RANLIB:FILEPATH=C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/ranlib.exe
//RC compiler //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. //Flags for Windows Resource Compiler during all build types.
CMAKE_RC_FLAGS:STRING= CMAKE_RC_FLAGS:STRING=
...@@ -324,7 +322,7 @@ CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 ...@@ -324,7 +322,7 @@ CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//Name of external makefile project generator. //Name of external makefile project generator.
CMAKE_EXTRA_GENERATOR:INTERNAL= CMAKE_EXTRA_GENERATOR:INTERNAL=
//Name of generator. //Name of generator.
CMAKE_GENERATOR:INTERNAL=Unix Makefiles CMAKE_GENERATOR:INTERNAL=MinGW Makefiles
//Generator instance identifier. //Generator instance identifier.
CMAKE_GENERATOR_INSTANCE:INTERNAL= CMAKE_GENERATOR_INSTANCE:INTERNAL=
//Name of generator platform. //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_ARG1 "")
set(CMAKE_C_COMPILER_ID "GNU") set(CMAKE_C_COMPILER_ID "GNU")
set(CMAKE_C_COMPILER_VERSION "8.1.0") set(CMAKE_C_COMPILER_VERSION "8.1.0")
...@@ -22,9 +22,9 @@ set(CMAKE_C_SIMULATE_VERSION "") ...@@ -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_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_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_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_MT "")
set(CMAKE_COMPILER_IS_GNUCC 1) set(CMAKE_COMPILER_IS_GNUCC 1)
...@@ -67,6 +67,6 @@ endif() ...@@ -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_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_LIBRARIES "mingw32;gcc;moldname;mingwex;pthread;advapi32;shell32;user32;kernel32;iconv;mingw32;gcc;moldname;mingwex")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "") 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_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_ARG1 "")
set(CMAKE_CXX_COMPILER_ID "GNU") set(CMAKE_CXX_COMPILER_ID "GNU")
set(CMAKE_CXX_COMPILER_VERSION "8.1.0") set(CMAKE_CXX_COMPILER_VERSION "8.1.0")
...@@ -23,9 +23,9 @@ set(CMAKE_CXX_SIMULATE_VERSION "") ...@@ -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_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_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_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_MT "")
set(CMAKE_COMPILER_IS_GNUCXX 1) set(CMAKE_COMPILER_IS_GNUCXX 1)
...@@ -78,6 +78,6 @@ endif() ...@@ -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_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_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 "") 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_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_ARG1 "")
set(CMAKE_RC_COMPILER_LOADED 1) set(CMAKE_RC_COMPILER_LOADED 1)
set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC) 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") set(CMAKE_RC_COMPILER_ENV_VAR "RC")
# CMAKE generated file: DO NOT EDIT! # 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. # Relative path conversion top directories.
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "E:/iccad2023/ppp") 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! # 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: # 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: # The top level Makefile was generated from the following files:
set(CMAKE_MAKEFILE_DEPENDS set(CMAKE_MAKEFILE_DEPENDS
"CMakeCache.txt" "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/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/CMakeCXXInformation.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.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/CMakeGenericSystem.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeInitializeConfigs.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/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/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/CMakeSystemSpecificInformation.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.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/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-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-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/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-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-C.cmake"
"C:/Program Files/CMake/share/cmake-3.22/Modules/Platform/Windows-GNU-CXX-ABI.cmake" "C:/Program Files/CMake/share/cmake-3.22/Modules/Platform/Windows-GNU-CXX-ABI.cmake"
...@@ -43,6 +116,12 @@ set(CMAKE_MAKEFILE_OUTPUTS ...@@ -43,6 +116,12 @@ set(CMAKE_MAKEFILE_OUTPUTS
# Byproducts of CMake generate step: # Byproducts of CMake generate step:
set(CMAKE_MAKEFILE_PRODUCTS 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" "CMakeFiles/CMakeDirectoryInformation.cmake"
) )
......
# CMAKE generated file: DO NOT EDIT! # 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 executed when no arguments are given to make.
default_target: all default_target: all
...@@ -41,23 +41,22 @@ cmake_force: ...@@ -41,23 +41,22 @@ cmake_force:
#============================================================================= #=============================================================================
# Set environment variables for the build. # Set environment variables for the build.
# The shell in which to execute make rules. SHELL = cmd.exe
SHELL = /bin/sh
# The CMake executable. # 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. # 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. # Escaping for special characters.
EQUALS = = EQUALS = =
# The top-level source directory on which CMake was run. # 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. # 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 # Directory level rules for the build root directory
...@@ -79,16 +78,16 @@ clean: CMakeFiles/ppPlace.dir/clean ...@@ -79,16 +78,16 @@ clean: CMakeFiles/ppPlace.dir/clean
# All Build rule for target. # All Build rule for target.
CMakeFiles/ppPlace.dir/all: 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/depend
$(MAKE) $(MAKESILENT) -f CMakeFiles/ppPlace.dir/build.make CMakeFiles/ppPlace.dir/build $(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" @$(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 .PHONY : CMakeFiles/ppPlace.dir/all
# Build rule for subdir invocation for target. # Build rule for subdir invocation for target.
CMakeFiles/ppPlace.dir/rule: cmake_check_build_system CMakeFiles/ppPlace.dir/rule: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start E:/iccad2023/ppp/build/CMakeFiles 7 $(CMAKE_COMMAND) -E cmake_progress_start E:\iccad2023\ppp\build\CMakeFiles 8
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ppPlace.dir/all $(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 0
.PHONY : CMakeFiles/ppPlace.dir/rule .PHONY : CMakeFiles/ppPlace.dir/rule
# Convenience name for target. # Convenience name for target.
...@@ -97,7 +96,7 @@ ppPlace: CMakeFiles/ppPlace.dir/rule ...@@ -97,7 +96,7 @@ ppPlace: CMakeFiles/ppPlace.dir/rule
# clean rule for target. # clean rule for target.
CMakeFiles/ppPlace.dir/clean: 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 .PHONY : CMakeFiles/ppPlace.dir/clean
#============================================================================= #=============================================================================
...@@ -107,6 +106,6 @@ 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 # No rule that depends on this can have commands that come from listfiles
# because they might be regenerated. # because they might be regenerated.
cmake_check_build_system: 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 .PHONY : cmake_check_build_system
...@@ -14,6 +14,7 @@ set(CMAKE_DEPENDS_DEPENDENCY_FILES ...@@ -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/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/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/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. # Targets to which this target links.
......
...@@ -11,6 +11,8 @@ file(REMOVE_RECURSE ...@@ -11,6 +11,8 @@ file(REMOVE_RECURSE
"CMakeFiles/ppPlace.dir/src/FFT_calculator.cpp.obj.d" "CMakeFiles/ppPlace.dir/src/FFT_calculator.cpp.obj.d"
"CMakeFiles/ppPlace.dir/src/Legalizer.cpp.obj" "CMakeFiles/ppPlace.dir/src/Legalizer.cpp.obj"
"CMakeFiles/ppPlace.dir/src/Legalizer.cpp.obj.d" "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" "libppPlace.dll.a"
"ppPlace.exe" "ppPlace.exe"
"ppPlace.exe.manifest" "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! # 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 # compile CXX with C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe
CXX_DEFINES = CXX_DEFINES = -Dcimg_display=0
CXX_INCLUDES = @CMakeFiles/ppPlace.dir/includes_CXX.rsp 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 ...@@ -5,4 +5,5 @@ CMAKE_PROGRESS_4 = 4
CMAKE_PROGRESS_5 = 5 CMAKE_PROGRESS_5 = 5
CMAKE_PROGRESS_6 = 6 CMAKE_PROGRESS_6 = 6
CMAKE_PROGRESS_7 = 7 CMAKE_PROGRESS_7 = 7
CMAKE_PROGRESS_8 = 8
CMakeFiles/ppPlace.dir/src/FFT_calculator.cpp.obj: \ CMakeFiles/ppPlace.dir/src/FFT_calculator.cpp.obj: \
E:/iccad2023/ppp/src/FFT_calculator.cpp \ 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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/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:/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:/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:/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:/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:/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:/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:/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:/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:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/math.h \ C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/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:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include/stdlib.h \ C:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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:/PROGRA~1/MINGW-~1/X86_64~1.0-P/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 \ 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 E:/iccad2023/ppp/include/FFT_calculator.h
...@@ -12,7 +12,7 @@ if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) ...@@ -12,7 +12,7 @@ if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
else() else()
set(CMAKE_INSTALL_CONFIG_NAME "Debug") set(CMAKE_INSTALL_CONFIG_NAME "")
endif() endif()
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
endif() 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 ...@@ -20,7 +20,7 @@ Pin P1 2 12
Pin P2 3 3 Pin P2 3 3
Pin P3 15 7 Pin P3 15 7
DieSize 0 0 40 30 DieSize 0 0 40 60
TopDieMaxUtil 80 TopDieMaxUtil 80
BottomDieMaxUtil 90 BottomDieMaxUtil 90
......
2 2 3
1 1
1 2
2 1
...@@ -8,12 +8,13 @@ ...@@ -8,12 +8,13 @@
#include "Legalizer.h" #include "Legalizer.h"
#include "Terminal.h" #include "Terminal.h"
#include "Param.h" #include "Param.h"
#include "SA.h"
class Bin{ class Bin{
public: public:
int x, y, lx, ly, ux, uy; int x, y, lx, ly, ux, uy;
int64_t macroArea, instArea, fillerArea; float macroArea, instArea, fillerArea;
float density, targetDensity; float density, targetDensity;
float electroPhi, electroForceX, electroForceY; float electroPhi, electroForceX, electroForceY;
...@@ -42,18 +43,21 @@ public: ...@@ -42,18 +43,21 @@ public:
int binSizeX, binSizeY; int binSizeX, binSizeY;
int binCntx, binCnty; int binCntx, binCnty;
int binCnt;
float scale; //visualizer scale float scale; //visualizer scale
float targetDensity; float targetDensity_top, targetDensity_bot;
int64_t overflowArea; int64_t overflowArea_top, overflowArea_bot;
float sumPhi; float sumPhi;
float baseWireLengthCoef; float baseWireLengthCoef;
float sumOverflow; float sumOverflow_top, sumOverflow_bot;
float maxPhiCoef; float maxPhiCoef;
std::vector<Bin*> bins; std::vector<Bin*> bins_top, bins_bot;
Clock cl;
public: public:
void init(int); void init(int);
...@@ -78,10 +82,10 @@ public: ...@@ -78,10 +82,10 @@ public:
*/ */
//void finish(); void finish();
//void legalize(); void legalize();
//void terminalAssignment(); void terminalAssignment();
...@@ -106,13 +110,13 @@ public: ...@@ -106,13 +110,13 @@ public:
Int2d getInterIdy(Instance *); Int2d getInterIdy(Instance *);
static float Overlap(Bin*, Instance*); static float Overlap(Bin*, Instance*);
void updateWireLengthCoef(float); void updateWireLengthCoef(float, float);
void updateWireLengthForceWA(float, float); void updateWireLengthForceWA(float, float, float, float);
void updateGradients(std::vector<Float2d>&, std::vector<Float2d>&, std::vector<Float2d>&); void updateGradients(std::vector<Float2d>&, std::vector<Float2d>&, std::vector<Float2d>&);
void updateInitialPrevSLPCoordi(); void updateInitialPrevSLPCoordi();
void updateNextIter(); void updateNextIter();
Float2d getWireLengthGradientWA(Instance*, float, float); Float2d getWireLengthGradientWA(Instance*);
Float2d getWireLengthGradientPinWA(Pin*, float, float); Float2d getWireLengthGradientPinWA(Pin*, float, float);
Float2d getDensityGradient(Instance*); Float2d getDensityGradient(Instance*);
Float2d getDensityCoordiLayoutInside(Instance*, float, float); Float2d getDensityCoordiLayoutInside(Instance*, float, float);
......
...@@ -39,23 +39,35 @@ class Net ...@@ -39,23 +39,35 @@ class Net
{ {
public: public:
int pin_num; int pin_num;
std::vector<Pin*> pins; std::vector<Pin*> pins[2];
int lx, ly, ux, uy; int tlx, tly, tux, tuy;
int blx, bly, bux, buy;
float waExpMinSumX_; bool has_terminal;
float waXExpMinSumX_; int ter_x, ter_y;
float waExpMaxSumX_;
float waXExpMaxSumX_; float waExpMinSumX_top;
float waExpMinSumY_; float waXExpMinSumX_top;
float waYExpMinSumY_; float waExpMaxSumX_top;
float waExpMaxSumY_; float waXExpMaxSumX_top;
float waYExpMaxSumY_; 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: public:
Net() = default; Net() = default;
Net(int pn):pin_num(pn) {pins.reserve(pn);} Net(int pn):pin_num(pn) {pins[0].reserve(pn);pins[1].reserve(pn);}
void addPin(Pin *); void addPin(Pin *, int);
void updateBox(); void updateBox(bool crosslayer=true);
int64_t hpwl(); int64_t hpwl();
}; };
...@@ -86,6 +98,7 @@ public: ...@@ -86,6 +98,7 @@ public:
long area; long area;
bool is_macro; bool is_macro;
bool is_filler; bool is_filler;
bool is_fixed;
std::vector<Pin*> pins; std::vector<Pin*> pins;
Float2d pos; Float2d pos;
Float2d cent; Float2d cent;
...@@ -96,7 +109,7 @@ public: ...@@ -96,7 +109,7 @@ public:
public: public:
Instance() = default; 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(); int ps = c->pins.size();
pins.resize(ps); pins.resize(ps);
...@@ -119,12 +132,14 @@ public: ...@@ -119,12 +132,14 @@ public:
void setPos(Float2d p) { void setPos(Float2d p) {
pos = p; pos = p;
cent = std::make_pair(p.first + h/2, p.second + w/2); 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(); updatePins();
} }
void setCent(Float2d p) { void setCent(Float2d p) {
cent = p; cent = p;
pos = std::make_pair(p.first - h/2, p.second - w/2); 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(); updatePins();
} }
...@@ -246,7 +261,7 @@ public: ...@@ -246,7 +261,7 @@ public:
std::vector<std::pair<int, int>> term_pos; 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. // SLP is Step Length Prediction.
...@@ -286,8 +301,10 @@ public: ...@@ -286,8 +301,10 @@ public:
//float baseWireLengthCoef_; //float baseWireLengthCoef_;
// wlen_cof // wlen_cof
float wireLengthCoefX_; float wireLengthCoefX_top;
float wireLengthCoefY_; float wireLengthCoefY_top;
float wireLengthCoefX_bot;
float wireLengthCoefY_bot;
// phi is described in ePlace paper. // phi is described in ePlace paper.
//float sumPhi_; //float sumPhi_;
......
#ifndef PPP_FFTBIN_H #ifndef PPP_FFTBIN_H
#define PPP_FFTBIN_h #define PPP_FFTBIN_h
#include "param.h" #include "Param.h"
#include "FFT_calculator.h" #include "FFT_calculator.h"
class fftBin : public FFT_calculator { class fftBin : public FFT_calculator {
...@@ -19,17 +19,17 @@ public: ...@@ -19,17 +19,17 @@ public:
std::vector<float*> electricField_x_top; std::vector<float*> electricField_x_top;
std::vector<float*> electricField_y_top; std::vector<float*> electricField_y_top;
std::vector<float*> electricDensity_bottom; std::vector<float*> electricDensity_bot;
std::vector<float*> electricPotential_bottom; std::vector<float*> electricPotential_bot;
std::vector<float*> electricField_x_bottom; std::vector<float*> electricField_x_bot;
std::vector<float*> electricField_y_bottom; std::vector<float*> electricField_y_bot;
std::vector<std::vector<float>> stdArea_top, fillerArea_top; std::vector<std::vector<float>> stdArea_top, fillerArea_top;
std::vector<std::vector<std::vector<int>>> correspondCells_top; std::vector<std::vector<std::vector<int>>> correspondCells_top;
std::vector<std::vector<float>> stdArea_bottom, fillerArea_bottom; std::vector<std::vector<float>> stdArea_bot, fillerArea_bot;
std::vector<std::vector<std::vector<int>>> correspondCells_bottom; std::vector<std::vector<std::vector<int>>> correspondCells_bot;
...@@ -37,8 +37,8 @@ public: ...@@ -37,8 +37,8 @@ public:
std::vector<float> wx_top, wy_top; std::vector<float> wx_top, wy_top;
std::vector<float> wx_sq_top, wy_sq_top; std::vector<float> wx_sq_top, wy_sq_top;
std::vector<float> wx_bottom, wy_bottom; std::vector<float> wx_bot, wy_bot;
std::vector<float> wx_sq_bottom, wy_sq_bottom; std::vector<float> wx_sq_bot, wy_sq_bot;
std::vector<float> cosTable; std::vector<float> cosTable;
......
...@@ -7,57 +7,67 @@ class FFT_calculator { ...@@ -7,57 +7,67 @@ class FFT_calculator {
// http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html // http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html
// 1D fftsg // 1D fftsg
void cdft(int n, int isgn, float *a, int *ip, float *w); static void cdft(int n, int isgn, float *a, int *ip, float *w);
void rdft(int n, int isgn, float *a, int *ip, float *w); static void rdft(int n, int isgn, float *a, int *ip, float *w);
void ddct(int n, int isgn, float *a, int *ip, float *w); static void ddct(int n, int isgn, float *a, int *ip, float *w);
void ddst(int n, int isgn, float *a, int *ip, float *w); static void ddst(int n, int isgn, float *a, int *ip, float *w);
void dfct(int n, float *a, float *t, int *ip, float *w); static 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 dfst(int n, float *a, float *t, int *ip, float *w);
void makewt(int nw, int *ip, float *w); static void makewt(int nw, int *ip, float *w);
void makeipt(int nw, int *ip); static void makeipt(int nw, int *ip);
void makect(int nc, int *ip, float *c); static void makect(int nc, int *ip, float *c);
void cftfsub(int n, float *a, int *ip, int nw, float *w); static void cftfsub(int n, float *a, int *ip, int nw, float *w);
void cftbsub(int n, float *a, int *ip, int nw, float *w); static void cftbsub(int n, float *a, int *ip, int nw, float *w);
void bitrv2(int n, int *ip, float *a); static void bitrv2(int n, int *ip, float *a);
void bitrv2conj(int n, int *ip, float *a); static void bitrv2conj(int n, int *ip, float *a);
void bitrv216(float *a); static void bitrv216(float *a);
void bitrv216neg(float *a); static void bitrv216neg(float *a);
void bitrv208(float *a); static void bitrv208(float *a);
void bitrv208neg(float *a); static void bitrv208neg(float *a);
void cftf1st(int n, float *a, float *w); static void cftf1st(int n, float *a, float *w);
void cftb1st(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); static void cftrec4(int n, float *a, int nw, float *w);
int cfttree(int n, int j, int k, float *a, int nw, float *w); static 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); static void cftleaf(int n, int isplt, float *a, int nw, float *w);
void cftmdl1(int n, float *a, float *w); static void cftmdl1(int n, float *a, float *w);
void cftmdl2(int n, float *a, float *w); static void cftmdl2(int n, float *a, float *w);
void cftfx41(int n, float *a, int nw, float *w); static void cftfx41(int n, float *a, int nw, float *w);
void cftf161(float *a, float *w); static void cftf161(float *a, float *w);
void cftf162(float *a, float *w); static void cftf162(float *a, float *w);
void cftf081(float *a, float *w); static void cftf081(float *a, float *w);
void cftf082(float *a, float *w); static void cftf082(float *a, float *w);
void cftf040(float *a); static void cftf040(float *a);
void cftb040(float *a); static void cftb040(float *a);
void cftx020(float *a); static void cftx020(float *a);
void rftfsub(int n, float *a, int nc, float *c); static void rftfsub(int n, float *a, int nc, float *c);
void rftbsub(int n, float *a, int nc, float *c); static void rftbsub(int n, float *a, int nc, float *c);
void dctsub(int n, float *a, int nc, float *c); static void dctsub(int n, float *a, int nc, float *c);
void dstsub(int n, float *a, int nc, float *c); static void dstsub(int n, float *a, int nc, float *c);
// 2D fftsg // 2D fftsg
void cdft2d(int n1, int n2, 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);
void rdft2d(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);
void rdft2dsort(int n1, int n2, int isgn, float **a); static 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); static 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); static 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); static 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); static 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); static 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); static 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 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 @@ ...@@ -11,7 +11,8 @@
#include <vector> #include <vector>
#include <random> #include <random>
#include <algorithm> #include <algorithm>
#include <ctime>
#include <cmath>
#include <math.h> #include <math.h>
#define _USE_MATH_DEFINES #define _USE_MATH_DEFINES
...@@ -47,28 +48,60 @@ namespace Color { ...@@ -47,28 +48,60 @@ namespace Color {
const static float sqrt2 = 1.414213562373095048801L; const static float sqrt2 = 1.414213562373095048801L;
const static int inf=0x7fffffff; 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 namespace Param {
const static float time_step = 0.02; extern int mid_width;
const static float wireLengthCoefficient = 10; //1e-1;
const static float frictionCoefficient = 50;
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; extern float initWireLengthCoef;
const static float maxPhiCoef = 1.05; extern float minWireLengthForceBar;
const static float minPhiCoef = 0.95; 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 static float
fastExp(float a) { fastExp(float a) {
...@@ -104,5 +137,18 @@ static float getSecondNorm(std::vector<Float2d>& a) { ...@@ -104,5 +137,18 @@ static float getSecondNorm(std::vector<Float2d>& a) {
return sqrt( norm / (2.0*a.size()) ); 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 #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 @@ ...@@ -3,144 +3,87 @@
#include "Param.h" #include "Param.h"
class Terminal{ class Terminal {
public: public:
std::vector<std::vector<int> > g;
//const int maxn=10005; std::vector<int> pa; // 匹配
const int inf=0x7fffffff; std::vector<int> pb;
std::vector<int> vis; // 访问
int n, m; int n, m; // 顶点和边的数量
std::vector<int> wx, wy, cx, cy, slack; int dfn; // 时间戳记
std::vector<bool> visx, visy; int res; // 匹配数
//int Map[maxn][maxn];
//int minz; Terminal(int _n, int _m) : n(_n), m(_m) {
assert(0 <= n && 0 <= m);
pa = std::vector<int>(n, -1);
std::vector<std::vector<int>> index; pb = std::vector<int>(m, -1);
std::vector<std::vector<int>> value; vis = std::vector<int>(n);
g.resize(n);
Terminal(int x, int y): n(x), m(y) { res = 0;
dfn = 0;
index.resize(n);
value.resize(m);
} }
void add(int i, int x, int y) { void add(int from, int to) {
index[i].push_back(x); //std::cout << from << " " << to << " " << n << " " << m << std::endl;
value[i].push_back(y); assert(0 <= from && from < n && 0 <= to && to < m);
g[from].push_back(to);
} }
int BinarySearch(std::vector<int> &array, int key) bool dfs(int v) {
{ vis[v] = dfn;
int aSize = array.size(); for (int u : g[v]) {
if ( array.empty() || aSize == 0 ) if (pb[u] == -1) {
return -1; pb[u] = v;
int low = 0; pa[v] = u;
int high = aSize - 1; return true;
int mid = 0; }
}
while ( low <= high ) for (int u : g[v]) {
{ if (vis[pb[u]] != dfn && dfs(pb[u])) {
mid = (low + high )/2; pa[v] = u;
pb[u] = v;
if ( array[mid] < key) return true;
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);
}
} }
return false; return false;
} }
int solve() {
int run() while (true) {
{ dfn++;
slack.resize(m, 0); int cnt = 0;
cx.resize(n, -1); for (int i = 0; i < n; i++) {
cy.resize(m, -1); if (pa[i] == -1 && dfs(i)) {
wx.resize(n, 0); cnt++;
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]);
} }
std::cout << wx[i] << std::endl;
} }
for(int i = 0; i < n; ++i) if (cnt == 0) {
{ break;
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;
} }
res += cnt;
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];
}
} }
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 "Circuit.h"
#include "Param.h"
int main(int argc, char* argv[]) {
int main() {
std::ios::sync_with_stdio(false); 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* 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; std::string picname;
...@@ -38,14 +60,14 @@ int main() { ...@@ -38,14 +60,14 @@ int main() {
} }
} }
*/
circuit->finish(); circuit->finish();
picname = "after.bmp"; picname = "after.bmp";
circuit->draw(picname); circuit->draw(picname);
*/
std::cout << "Progress End." << std::endl; 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() { ...@@ -5,24 +5,66 @@ void Pin::updatePos() {
cy = pcell->pos.second + py; cy = pcell->pos.second + py;
} }
void Net::addPin(Pin* p) { void Net::addPin(Pin* p, int l) {
pins.push_back(p); pins[l].push_back(p);
} }
void Net::updateBox() { void Net::updateBox(bool crosslayer) {
lx = ly = INT_MAX; has_terminal = false;
ux = uy = INT_MIN; tlx = tly = blx = bly = INT_MAX;
for (int i = 0; i < pin_num; ++i) { tux = tuy = bux = buy = INT_MIN;
lx = std::min(pins[i]->cx, lx); int top_num = pins[0].size();
ly = std::min(pins[i]->cy, ly); int bot_num = pins[1].size();
ux = std::max(pins[i]->cx, ux); for (int i = 0; i < top_num; ++i) {
uy = std::max(pins[i]->cy, uy); 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() { 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) void Database::readcase(std::string inputfilename)
......
...@@ -104,39 +104,39 @@ void fftBin::doFFT() { ...@@ -104,39 +104,39 @@ void fftBin::doFFT() {
); );
/*
ddct2d(binsize_x, ddct2d(binsize_x,
binsize_y, binsize_y,
-1, -1,
electricDensity_bottom.data(), electricDensity_bot.data(),
NULL, NULL,
workArea.data(), workArea.data(),
cosTable.data() cosTable.data()
); );
for (int i = 0; i < binsize_x; ++i) { 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) { 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 i = 0; i < binsize_x; ++i) {
for (int j = 0; j < binsize_y; ++j) { 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) { for (int i = 0; i < binsize_x; ++i) {
float wwx = wx_bottom[i]; float wwx = wx_bot[i];
float wwx2 = wx_sq_bottom[i]; float wwx2 = wx_sq_bot[i];
for (int j = 0; j < binsize_y; ++j) { for (int j = 0; j < binsize_y; ++j) {
float wwy = wy_bottom[j]; float wwy = wy_bot[j];
float wwy2 = wy_sq_bottom[j]; float wwy2 = wy_sq_bot[j];
float density = electricDensity_bottom[i][j]; float density = electricDensity_bot[i][j];
float phi = 0; float phi = 0;
float electroX = 0, electroY = 0; float electroX = 0, electroY = 0;
if (i == 0 && j == 0) { if (i == 0 && j == 0) {
...@@ -148,16 +148,16 @@ void fftBin::doFFT() { ...@@ -148,16 +148,16 @@ void fftBin::doFFT() {
electroY = phi * wwy; electroY = phi * wwy;
} }
electricPotential_bottom[i][j] = phi; electricPotential_bot[i][j] = phi;
electricField_x_bottom[i][j] = electroX; electricField_x_bot[i][j] = electroX;
electricField_y_bottom[i][j] = electroY; electricField_y_bot[i][j] = electroY;
} }
} }
ddct2d(binsize_x, ddct2d(binsize_x,
binsize_y, binsize_y,
1, 1,
electricPotential_bottom.data(), electricPotential_bot.data(),
NULL, NULL,
workArea.data(), workArea.data(),
cosTable.data() cosTable.data()
...@@ -165,7 +165,7 @@ void fftBin::doFFT() { ...@@ -165,7 +165,7 @@ void fftBin::doFFT() {
ddsct2d(binsize_x, ddsct2d(binsize_x,
binsize_y, binsize_y,
1, 1,
electricField_x_bottom.data(), electricField_x_bot.data(),
NULL, NULL,
workArea.data(), workArea.data(),
cosTable.data() cosTable.data()
...@@ -173,12 +173,12 @@ void fftBin::doFFT() { ...@@ -173,12 +173,12 @@ void fftBin::doFFT() {
ddcst2d(binsize_x, ddcst2d(binsize_x,
binsize_y, binsize_y,
1, 1,
electricField_y_bottom.data(), electricField_y_bot.data(),
NULL, NULL,
workArea.data(), workArea.data(),
cosTable.data() cosTable.data()
); );
*/
...@@ -192,9 +192,9 @@ fftBin::~fftBin() { ...@@ -192,9 +192,9 @@ fftBin::~fftBin() {
delete electricField_x_top[i]; delete electricField_x_top[i];
delete electricField_y_top[i]; delete electricField_y_top[i];
delete electricDensity_bottom[i]; delete electricDensity_bot[i];
delete electricPotential_bottom[i]; delete electricPotential_bot[i];
delete electricField_x_bottom[i]; delete electricField_x_bot[i];
delete electricField_y_bottom[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, ...@@ -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].a = a;
ag[i].ip = ip; ag[i].ip = ip;
ag[i].w = w; 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++) { for(i = 0; i < nthread; i++) {
fft2d_thread_wait(th[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, ...@@ -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].t = &t[nt * i];
ag[i].ip = ip; ag[i].ip = ip;
ag[i].w = w; 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++) { for(i = 0; i < nthread; i++) {
fft2d_thread_wait(th[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, ...@@ -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].a = a;
ag[i].ip = ip; ag[i].ip = ip;
ag[i].w = w; 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++) { for(i = 0; i < nthread; i++) {
fft2d_thread_wait(th[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 ...@@ -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].t = &t[nt * i];
ag[i].ip = ip; ag[i].ip = ip;
ag[i].w = w; 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++) { for(i = 0; i < nthread; i++) {
fft2d_thread_wait(th[i]); fft2d_thread_wait(th[i]);
} }
} }
void *xdft2d0_th(void *p) { void *FFT_calculator::xdft2d0_th(void *p) {
void cdft(int n, int isgn, float *a, int *ip, float *w); // 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 rdft(int n, int isgn, float *a, int *ip, float *w);
int nthread, n0, n1, n2, icr, isgn, *ip, i; int nthread, n0, n1, n2, icr, isgn, *ip, i;
float **a, *w; float **a, *w;
...@@ -4304,8 +4304,8 @@ void *xdft2d0_th(void *p) { ...@@ -4304,8 +4304,8 @@ void *xdft2d0_th(void *p) {
return (void *)0; return (void *)0;
} }
void *cdft2d_th(void *p) { void *FFT_calculator::cdft2d_th(void *p) {
void cdft(int n, int isgn, float *a, int *ip, float *w); // void cdft(int n, int isgn, float *a, int *ip, float *w);
int nthread, n0, n1, n2, isgn, *ip, i, j; int nthread, n0, n1, n2, isgn, *ip, i, j;
float **a, *t, *w; float **a, *t, *w;
...@@ -4376,9 +4376,9 @@ void *cdft2d_th(void *p) { ...@@ -4376,9 +4376,9 @@ void *cdft2d_th(void *p) {
return (void *)0; return (void *)0;
} }
void *ddxt2d0_th(void *p) { void *FFT_calculator::ddxt2d0_th(void *p) {
void ddct(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 ddst(int n, int isgn, float *a, int *ip, float *w);
int nthread, n0, n1, n2, ics, isgn, *ip, i; int nthread, n0, n1, n2, ics, isgn, *ip, i;
float **a, *w; float **a, *w;
...@@ -4404,9 +4404,9 @@ void *ddxt2d0_th(void *p) { ...@@ -4404,9 +4404,9 @@ void *ddxt2d0_th(void *p) {
return (void *)0; return (void *)0;
} }
void *ddxt2d_th(void *p) { void *FFT_calculator::ddxt2d_th(void *p) {
void ddct(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 ddst(int n, int isgn, float *a, int *ip, float *w);
int nthread, n0, n1, n2, ics, isgn, *ip, i, j; int nthread, n0, n1, n2, ics, isgn, *ip, i, j;
float **a, *t, *w; 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