anthropics/xls
forked from google/xls
Captured source
source ↗anthropics/xls
Description: Fork of google/xls — main tracks upstream; Anthropic changes live on anthropic-* branches
License: Apache-2.0
Stars: 0
Forks: 0
Open issues: 0
Created: 2026-08-19T13:05:42Z
Pushed: 2026-08-19T08:09:05Z
Default branch: main
Fork: yes
Parent repository: google/xls
Archived: no
README:
XLS: Accelerated HW Synthesis
**Docs** | **Quick Start**  | **Tutorials**
**Conda packages**  
 
What is XLS?
XLS implements a High Level Synthesis toolchain that produces synthesizable designs (Verilog and SystemVerilog) from flexible, high-level descriptions of functionality. It is Apache 2 licensed.
XLS (Accelerated HW Synthesis) aims to be the Software Development Kit (SDK) for the End of Moore's Law (EoML) era. In this "age of specialization", software and hardware engineers must do more co-design across their domain boundaries -- collaborate on shared artifacts, understand each other's cost models, and share tooling/methodology. XLS attempts to leverage automation, software engineers, and machine cycles to accelerate this overall process.
XLS enables the rapid development of *hardware IP* that also runs as efficient *host software* via "software style" methodology. An XLS design runs at native speeds for use in host software or a simulator, but that design can also generate hardware block output -- the XLS tools' correctness ensures (and provides tools to help formally verify) that they are functionally identical.
XLS supports both (optionally pipelined) functions with pure-wire I/O interfaces and *concurrent processes* (or procs). Procs are stateful, allowing induction over time, and include more general communication interfaces.
State of the Project
XLS is experimental, undergoing rapid development, and not an officially supported Google product. Expect bugs and sharp edges. Please help by trying it out, running through some tutorials, reporting bugs.
We are early stage and this has some practical effects:
- We welcome your issues and PRs.
- Please try to lead with an issue. Engage us in conversation if you wish
to upstream changes. Sending a PR without back and forth with us in an issue may be a longer road to success. If you believe your PR is ready and has not received a response within two business days, please ping the issue with what you think are next steps.
- At the current point in its evolution, we regularly improve DSLX without
considering backward compatibility.
- If you are building a corpus of hardware with XLS, please be thoughtful
about your process for bringing in new versions of the compiler.
Colab Notebooks
For a more setup-free and environment-independent way of trying out XLS, see our colab notebooks:
- bit.ly/learn-xls: a "learn XLS in Y minutes"
style walkthrough in DSLX, our Rust-inspired domain specific language (DSL).
- bit.ly/xls-playground: an XLS evaluation
environment that can run the following interactively:
- XLS tests
- XLS→IR conversion
- IR→Verilog codegen
- Verilog synthesis via Yosys (using open PDKs ASAP7 and SKY130)
- Place-and-Route (P&R) via OpenROAD
- Power/Performance/Area (PPA) metric collection
Install Latest Release
The following downloads the latest github repo release binaries for an x64 Linux machine:
# Determine the url of the latest release tarball.
LATEST_XLS_RELEASE_TARBALL_URL=$(curl -s -L \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/google/xls/releases | \
grep -m 1 -o 'https://.*/releases/download/.*\.tar\.gz')
# Download the tarball and unpack it, observe the version numbers for each of the included tools.
curl -O -L ${LATEST_XLS_RELEASE_TARBALL_URL}
tar -xzvvf xls-*.tar.gz
cd xls-*/
./interpreter_main --version
./ir_converter_main --version
./opt_main --version
./codegen_main --version
./proto_to_dslx_main --versionBuilding From Source
Aside from the binary releases (available for x64 Linux as described above), and the available colab notebooks, XLS must be built from source using the Bazel build system.
The following instructions are for the Ubuntu 22.04 (Jammy Jellyfish) Linux distribution.
On an average 8-core VM:
- A full initial build **without the C++ front-end (e.g., "DSLX only") may take
about 2 hours**,
- Including the C++ front-end may take up to 6 hours.
Please see the two corresponding command lines below -- we start by assuming Bazel has been installed:
~$ git clone https://github.com/google/xls.git ~$ cd xls ~/xls$ # Follow the bazel install instructions to install bazel 7 ~/xls$ # https://bazel.build/install/ubuntu ~/xls$ # Note we're going to tell Ubuntu that `/usr/bin/env python` is actually python3 ~/xls$ # here, since that has not been the case by default on past Ubuntus. ~/xls$ # This is important. Without this step, you may experience cryptic error messages: ~/xls$ sudo apt install python3-dev libtinfo6 python-is-python3 ~/xls$ # Now build/test in optimized build mode. ~/xls$ # If you don't plan on using the C++ front-end, which is not strictly ~/xls$ # needed (i.e. DSLX front-end only), use this command line: ~/xls$ bazel test -c opt -- //xls/... -//xls/contrib/xlscc/... ~/xls$ # To build everything, including the C++ front-end: ~/xls$ bazel test -c opt -- //xls/...
Docker Build
Reference build/test environment setups are also...
Excerpt shown — open the source for the full document.