mirror of https://github.com/YosysHQ/yosys.git
Slang frontend integration
This commit is contained in:
parent
b285b72e36
commit
05c0adae77
|
|
@ -5,3 +5,18 @@
|
||||||
[submodule "cxxopts"]
|
[submodule "cxxopts"]
|
||||||
path = libs/cxxopts
|
path = libs/cxxopts
|
||||||
url = https://github.com/jarro2783/cxxopts
|
url = https://github.com/jarro2783/cxxopts
|
||||||
|
[submodule "fmt"]
|
||||||
|
path = libs/fmt
|
||||||
|
url = https://github.com/fmtlib/fmt
|
||||||
|
[submodule "tomlplusplus"]
|
||||||
|
path = libs/tomlplusplus
|
||||||
|
url = https://github.com/marzer/tomlplusplus
|
||||||
|
[submodule "boost_regex"]
|
||||||
|
path = libs/boost_regex
|
||||||
|
url = https://github.com/MikePopoloski/regex
|
||||||
|
[submodule "slang"]
|
||||||
|
path = libs/slang
|
||||||
|
url = https://github.com/MikePopoloski/slang
|
||||||
|
[submodule "sv-elab"]
|
||||||
|
path = frontends/slang/lib
|
||||||
|
url = https://github.com/povik/sv-elab
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ option(YOSYS_WITHOUT_ZLIB "Disable zlib integration" OFF)
|
||||||
option(YOSYS_WITHOUT_LIBFFI "Disable libffi integration" OFF)
|
option(YOSYS_WITHOUT_LIBFFI "Disable libffi integration" OFF)
|
||||||
option(YOSYS_WITHOUT_READLINE "Disable readline integration" OFF)
|
option(YOSYS_WITHOUT_READLINE "Disable readline integration" OFF)
|
||||||
option(YOSYS_WITHOUT_EDITLINE "Disable editline integration" OFF)
|
option(YOSYS_WITHOUT_EDITLINE "Disable editline integration" OFF)
|
||||||
|
option(YOSYS_WITHOUT_SLANG "Disable Slang integration" OFF)
|
||||||
option(YOSYS_WITHOUT_TCL "Disable Tcl integration" OFF)
|
option(YOSYS_WITHOUT_TCL "Disable Tcl integration" OFF)
|
||||||
option(YOSYS_WITH_PYTHON "Enable Python integration" OFF)
|
option(YOSYS_WITH_PYTHON "Enable Python integration" OFF)
|
||||||
|
|
||||||
|
|
@ -308,6 +309,7 @@ condition(YOSYS_ENABLE_EDITLINE editline_FOUND AND NOT YOSYS_WITHOUT_EDITLINE AN
|
||||||
condition(YOSYS_ENABLE_TCL tcl_FOUND AND libtommath_FOUND AND NOT YOSYS_WITHOUT_TCL)
|
condition(YOSYS_ENABLE_TCL tcl_FOUND AND libtommath_FOUND AND NOT YOSYS_WITHOUT_TCL)
|
||||||
condition(YOSYS_ENABLE_PYTHON Python3Devel_FOUND AND PyosysEnv_FOUND AND YOSYS_WITH_PYTHON)
|
condition(YOSYS_ENABLE_PYTHON Python3Devel_FOUND AND PyosysEnv_FOUND AND YOSYS_WITH_PYTHON)
|
||||||
condition(YOSYS_ENABLE_VERIFIC YOSYS_VERIFIC_DIR AND zlib_FOUND)
|
condition(YOSYS_ENABLE_VERIFIC YOSYS_VERIFIC_DIR AND zlib_FOUND)
|
||||||
|
condition(YOSYS_ENABLE_SLANG NOT YOSYS_WITHOUT_SLANG)
|
||||||
|
|
||||||
# Describe dependencies and features
|
# Describe dependencies and features
|
||||||
# CMake 4.0 would let us use proper conditions, but that's too new for now.
|
# CMake 4.0 would let us use proper conditions, but that's too new for now.
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,6 @@ add_subdirectory(json)
|
||||||
add_subdirectory(liberty)
|
add_subdirectory(liberty)
|
||||||
add_subdirectory(rpc)
|
add_subdirectory(rpc)
|
||||||
add_subdirectory(rtlil)
|
add_subdirectory(rtlil)
|
||||||
|
add_subdirectory(slang)
|
||||||
add_subdirectory(verific)
|
add_subdirectory(verific)
|
||||||
add_subdirectory(verilog)
|
add_subdirectory(verilog)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
include(lib/cmake/GitRevision.cmake)
|
||||||
|
git_rev_parse(YOSYS_SLANG_REVISION ${CMAKE_CURRENT_SOURCE_DIR}/lib)
|
||||||
|
git_rev_parse(SLANG_REVISION ${PROJECT_SOURCE_DIR}/libs/slang)
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/lib/src/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
|
||||||
|
|
||||||
|
yosys_frontend(slang
|
||||||
|
lib/src/abort_helpers.cc
|
||||||
|
lib/src/addressing.cc
|
||||||
|
lib/src/async_pattern.cc
|
||||||
|
lib/src/async_pattern.h
|
||||||
|
lib/src/blackboxes.cc
|
||||||
|
lib/src/builder.cc
|
||||||
|
lib/src/cases.cc
|
||||||
|
lib/src/cases.h
|
||||||
|
lib/src/diag.cc
|
||||||
|
lib/src/diag.h
|
||||||
|
lib/src/initialization.cc
|
||||||
|
lib/src/lvalue.cc
|
||||||
|
lib/src/memory.h
|
||||||
|
lib/src/naming.cc
|
||||||
|
lib/src/procedural.cc
|
||||||
|
lib/src/slang_frontend.cc
|
||||||
|
lib/src/slang_frontend.h
|
||||||
|
lib/src/statements.h
|
||||||
|
lib/src/sva.cc
|
||||||
|
lib/src/variables.cc
|
||||||
|
lib/src/variables.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/version.h
|
||||||
|
DEFINITIONS
|
||||||
|
YOSYS_MAJOR=${YOSYS_VERSION_MAJOR}
|
||||||
|
YOSYS_MINOR=${YOSYS_VERSION_MINOR}
|
||||||
|
ENABLE_IF
|
||||||
|
YOSYS_ENABLE_SLANG
|
||||||
|
INCLUDE_DIRS
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
LIBRARIES
|
||||||
|
$<${YOSYS_ENABLE_SLANG}:slang::slang>
|
||||||
|
fmt::fmt
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit cac7d9ae8b8b3bc25b846d8f4d2cbadace651f1e
|
||||||
|
|
@ -7,3 +7,41 @@ add_subdirectory(json11)
|
||||||
add_subdirectory(minisat)
|
add_subdirectory(minisat)
|
||||||
add_subdirectory(sha1)
|
add_subdirectory(sha1)
|
||||||
add_subdirectory(subcircuit)
|
add_subdirectory(subcircuit)
|
||||||
|
block()
|
||||||
|
set(BUILD_SHARED_LIBS OFF)
|
||||||
|
include(FetchContent)
|
||||||
|
set(FETCHCONTENT_FULLY_DISCONNECTED ON)
|
||||||
|
|
||||||
|
option(FMT_INSTALL OFF)
|
||||||
|
FetchContent_Declare(
|
||||||
|
fmt
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/fmt
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(fmt)
|
||||||
|
|
||||||
|
FetchContent_Declare(
|
||||||
|
tomlplusplus
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tomlplusplus
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(tomlplusplus)
|
||||||
|
|
||||||
|
FetchContent_Declare(
|
||||||
|
boost_regex
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/boost_regex
|
||||||
|
SOURCE_SUBDIR _no_build_
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(boost_regex)
|
||||||
|
|
||||||
|
if (NOT YOSYS_WITHOUT_SLANG)
|
||||||
|
set(SLANG_USE_MIMALLOC OFF)
|
||||||
|
add_subdirectory(slang)
|
||||||
|
# Headers autodetect based on <boost/config.hpp> but when version
|
||||||
|
# does exist but does not match requirements it becomes problematic
|
||||||
|
if(NOT Boost_FOUND)
|
||||||
|
target_compile_definitions(slang_slang PRIVATE BOOST_REGEX_STANDALONE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endblock()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 2b3ac0834f31086c6e3c0e0ceb8516e427d5c39d
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 1be298e1bd68957e4cd352e1f676f00e07dcfb57
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 6175750969f17289695f94be5105f6006c82eb61
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit a43ad3787293f4a46b1d70c0924b5a25d10e79fc
|
||||||
Loading…
Reference in New Issue