TopGit theo dõi llvm/circt trên GitHub, đã đạt 2.2k sao. Circuit IR Compilers and Tools
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
"CIRCT" stands for "Circuit Intermediate Representations (IR) Compilers and Tools". One might also interpret
it as the recursively as "CIRCT IR Compiler and Tools". The T can be
selectively expanded as Tool, Translator, Team, Technology, Target, Tree, Type,
... we're ok with the ambiguity.
The CIRCT community is an open and welcoming community. If you'd like to
participate, you can do so in a number of different ways:
Join our Discourse Forum
on the LLVM Discourse server. To get a "mailing list" like experience click the
bell icon in the upper right and switch to "Watching". It is also helpful to go
to your Discourse profile, then the "emails" tab, and check "Enable mailing list
mode". You can also do chat with us on CIRCT channel
of LLVM discord server.
Join our weekly video chat. Please see the
meeting notes document
for more information.
Contribute code. CIRCT follows all of the LLVM Policies: you can create pull
requests for the CIRCT repository, and gain commit access using the standard LLVM policies. See our Developer Policy and AI Tool Use Policy for more details.
Motivation
The EDA industry has well-known and widely used proprietary and open source
tools. However, these tools are inconsistent, have usability concerns, and were
not designed together into a common platform. Furthermore
these tools are generally built with
Verilog (also
VHDL) as the IRs that they
interchange. Verilog has well known design issues, and limitations, e.g.
suffering from poor location tracking support.
The CIRCT project is an (experimental!) effort looking to apply MLIR and
the LLVM development methodology to the domain of hardware design tools. Many
of us dream of having reusable infrastructure that is modular, uses
library-based design techniques, is more consistent, and builds on the best
practices in compiler infrastructure and compiler design techniques.
By working together, we hope that we can build a new center of gravity to draw
contributions from the small (but enthusiastic!) community of people who work
on open hardware tooling. In turn we hope this will propel open tools forward,
enables new higher-level abstractions for hardware design, and
perhaps some pieces may even be adopted by proprietary tools in time.
For more information, please see our longer charter document.
Getting Started
To get started hacking on CIRCT quickly, run the following commands. If you want to include circt-verilog in the build, add -DCIRCT_SLANG_FRONTEND_ENABLED=ON to the cmake call:
# Clone the repository and its submodules
git clone [email protected]:llvm/circt.git --recursive
cd circt
# Configure the build
cmake -G Ninja llvm/llvm -B build \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLVM_TARGETS_TO_BUILD=host \
-DLLVM_ENABLE_PROJECTS=mlir \
-DLLVM_EXTERNAL_PROJECTS=circt \
-DLLVM_EXTERNAL_CIRCT_SOURCE_DIR=$PWD \
-DLLVM_ENABLE_LLD=ON
If you want to build everything about the CIRCT tools and libraries, run below command(also runs all tests):
ninja -C build check-circt
If you want to only build a specific part, for example the circt-opt tool:
ninja -C build bin/circt-opt
or the firtool tool:
ninja -C build bin/firtool
This will only build the necessary parts of LLVM, MLIR, and CIRCT, which can be a lot quicker than building everything.
Dependencies
If you have git, ninja, python3, cmake, and a C++ toolchain installed, you should be able to build CIRCT.
For a more detailed description of dependencies, take a look at:
Getting Started with MLIR
LLVM Requirements
Useful Options
The -DCMAKE_BUILD_TYPE=Debug flag enables debug information, which makes the whole tree compile slower, but allows you to step through code into the LLVM
and MLIR frameworks.
The -DCMAKE_EXPORT_COMPILE_COMMANDS=ON flag generates a compile_commands.json file, which can be used by editors and language servers for autocomplete and other IDE-like features.
To get something that runs faster but is still easy to debug, use the -DCMAKE_BUILD_TYPE=RelWithDebInfo flag to do a release build with debug info.
To do a release build that runs very fast, use the -DCMAKE_BUILD_TYPE=Release flag.
Release mode makes a very large difference in performance.
Consult the Getting Started page for detailed information on configuring and compiling CIRCT.
Consult the Python Bindings page if you are mainly interested in using CIRCT from a Python prompt or script.
Submodules
CIRCT contains LLVM as a git submodule.
The LLVM repository here includes staged changes to MLIR which may be necessary to support CIRCT.
It also represents the version of LLVM that has been tested.
MLIR is still changing relatively rapidly, so feel free to use the current version of LLVM, but APIs may have changed.
Whenever you checkout a new CIRCT branch that points to a different version of LLVM, run the following command to update the submodule:
git submodule update
The repository is set up to perform a shallow clone of the submodules, meaning it downloads just enough of the LLVM repository to check out the currently specified commit.
If you wish to work with the full history of the LLVM repository, you can manually "unshallow" the submodule:
cd llvm
git fetch --unshallow
Building LLVM/MLIR Separately
You can also build LLVM/MLIR in isolation first, and then build CIRCT using that first build.
This allows you to pick different compiler options for the two builds, such as building CIRCT in debug mode but LLVM/MLIR in release mode.
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/llvm/circt là nguồn chính thức.
llvm/circt có bao nhiêu sao?
llvm/circt có 2.2k sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/llvm/circt. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
llvm/circt có những chủ đề gì?
GitHub topics của llvm/circt: "circt", "llvm", "mlir". TopGit xếp repo vào nhóm mã nguồn mở.
llvm/circt có trang demo không?
Dự án có trang chủ ở https://circt.org. Tab "Readme" ở trang này thường có ảnh chụp và hướng dẫn bắt đầu nhanh.
llvm/circt còn đang phát triển không?
Commit gần nhất trên llvm/circt là 10 ngày trước (theo timestamp GitHub). Repo có 495 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
llvm/circt viết bằng ngôn ngữ gì?
llvm/circt chủ yếu viết bằng C++. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Đọc đầy đủ README ở tab phía trên.
Chưa chắc circt có hợp với bạn?
Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về circt.