{"id":50755383,"url":"https://github.com/pulp-platform/gwaihir","last_synced_at":"2026-06-11T04:30:32.891Z","repository":{"id":351742113,"uuid":"1210210430","full_name":"pulp-platform/gwaihir","owner":"pulp-platform","description":"aka Lago-Mio","archived":false,"fork":false,"pushed_at":"2026-06-05T15:29:40.000Z","size":853,"stargazers_count":4,"open_issues_count":3,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-05T18:15:39.535Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pulp-platform.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-14T07:33:15.000Z","updated_at":"2026-06-04T06:42:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pulp-platform/gwaihir","commit_stats":null,"previous_names":["pulp-platform/gwaihir"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pulp-platform/gwaihir","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulp-platform%2Fgwaihir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulp-platform%2Fgwaihir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulp-platform%2Fgwaihir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulp-platform%2Fgwaihir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulp-platform","download_url":"https://codeload.github.com/pulp-platform/gwaihir/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulp-platform%2Fgwaihir/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34183109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-11T04:30:30.403Z","updated_at":"2026-06-11T04:30:32.873Z","avatar_url":"https://github.com/pulp-platform.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gwaihir 🦅\n\n*gwaihir* is an open-source research platform focusing on AI and Machine Learning acceleration.\n\n*gwaihir* is developed as part of the [PULP (Parallel Ultra-Low Power) project](https://pulp-platform.org/), a joint effort between ETH Zurich and the University of Bologna. *gwaihir* is also supported by the [EUPilot project](https://eupilot.eu), under the name MLS.\n\n## ⚡ Getting started\n\n### Environment setup for IIS-members\n\nFor IIS-members, the environment can be set up by sourcing the `iis-env.sh` script:\n\n```bash\nsource iis-env.sh\n```\n\nThis will set up all environment variables, and install the virtual python environment, which is needed to generate the RTL and SW sources.\n\n### Environment setup for non-IIS members\n\nFor non-IIS members, there is some additional setup required to get the environment up and running.\n\n#### Bender\n\nThe first requirement you need to install is `bender`. Check the [installation page](https://github.com/pulp-platform/bender/tree/master?tab=readme-ov-file#installation) on how to set it up.\n\n#### Python environment\n\nTo generate certain source files with python you need to have [uv](https://docs.astral.sh/uv/) installed, which will create the virtual environment and install the required dependencies. To set up the environment, run:\n\n```bash\nuv sync --locked\nsource .venv/bin/activate\n```\n\n#### Toolchains\n\nGwaihir requires two different toolchains at the moment:\n\n* Snitch software tests require the Clang compiler extended with Snitch-specific instructions. There are some precompiled releases available on the [PULP Platform LLVM Project](https://github.com/pulp-platform/llvm-project/releases/download/0.12.0/riscv32-pulp-llvm-ubuntu2004-0.12.0.tar.gz) fork that are ready to be downloaded and unzipped.\n* Cheshire requires a 64-bit GCC toolchain that can be installed from the [riscv-gnu-toolchain](https://github.com/riscv-collab/riscv-gnu-toolchain) git following the *Installation (Newlib)* instructions.\n\nOnce LLVM and GCC are obtained, export a `LLVM_BINROOT` environment variable to the binary folder of the LLVM toolchain installation. Then, add the GCC binary folder to your `$PATH`:\n\n```bash\nexport LLVM_BINROOT=/path/to/llvm/bin\nexport PATH=$PATH:/path/to/gcc/bin\n```\n\n#### Verible (Optional)\n\nFor automatic formatting of generated sources, install [`verible`](https://github.com/chipsalliance/verible). By default, the Makefile will look for a `verible-verilog-format` in your path, but you can also set it explicitly with the `VERIBLE_FMT` environment variable. This dependency is optional for normal users, but it is required to contribute to the project, since the CI will use verible to check the formatting of the code. Once installed, you can format the SV code in this repository with:\n\n```bash\nmake verible-fmt\n```\n\n### RTL code generation\n\nAfter setting up the environment, you can generate all the RTL code for Cheshire, FlooNoC, and Snitch by running:\n\n```bash\nmake all\n```\n\nor more selectively:\n\n```bash\nmake floo-hw-all\nmake chs-hw-all\nmake sn-hw-all\n```\n\n### Compile software tests\n\nTo compile the software for Cheshire and the snitch cluster, you can run the following commands:\n\n```bash\nmake sw\n```\n\nor more selectively:\n\n```bash\nmake chs-sw-tests\nmake sn-tests\n```\n\n### Simulation\n\nGwaihir supports two simulation flows: **QuestaSim** and **Synopsys VCS**.\nTests can be executed by setting the required command-line variables for Cheshire — see the [Cheshire Docs](https://pulp-platform.github.io/cheshire/gs/) for more details.\n\nUse the `PRELMODE=3` flag to enable fast preload of the Snitch binary and speed up simulation.\n\n#### QuestaSim\n\nTo compile the RTL:\n\n```bash\nmake vsim-compile\n```\n\nTo run a simple Cheshire helloworld in Gwaihir:\n\n```bash\nmake vsim-run CHS_BINARY=sw/cheshire/tests/helloworld.spm.elf\n```\n\nTo run an offloading example test for Snitch:\n\n```bash\nmake vsim-run CHS_BINARY=sw/cheshire/tests/simple_offload.spm.elf SN_BINARY=sw/snitch/tests/build/simple.elf\n```\n\nUse `vsim-run-batch` to run in batch mode with RTL optimizations to reduce runtime.\n\nSome applications produce a lot of output data that is time-consuming to check in simulation. These applications usually come with a Python verification script that checks results from a memory dump at the end of simulation. For example, to run and verify the GEMM kernel:\n\n```bash\nmake vsim-run-batch-verify VERIFY_PY=$(bender path snitch_cluster)/sw/blas/gemm/scripts/verify.py PRELMODE=3 CHS_BINARY=sw/cheshire/tests/simple_offload.spm.elf SN_BINARY=sw/snitch/apps/blas/gemm/build/gemm.elf\n```\n\n#### VCS\n\nGwaihir provides two VCS run modes: **batch** (no debug overhead, faster) and **GUI** (full signal visibility for Verdi). Compilation is handled automatically by the run targets.\n\nTo run in batch mode:\n\n```bash\nmake vcs-run-batch CHS_BINARY=sw/cheshire/tests/helloworld.spm.elf\n```\n\nTo run an offloading example test for Snitch:\n\n```bash\nmake vcs-run-batch CHS_BINARY=sw/cheshire/tests/simple_offload.spm.elf SN_BINARY=sw/snitch/tests/build/simple.elf\n```\n\nTo open the simulation in the Verdi GUI (compiled with full debug access):\n\n```bash\nmake vcs-run CHS_BINARY=sw/cheshire/tests/helloworld.spm.elf\n```\n\nUse `vcs-clean` to remove all VCS build artifacts and force a full recompilation.\n\n### Additional help\n\nAdditionally, you can run the following command to get a list of all available commands:\n\n```bash\nmake help\n```\n\n## 🔐 License\nUnless specified otherwise in the respective file headers, all code checked into this repository is made available under a permissive license. All hardware sources are licensed under the Solderpad Hardware License 0.51 (see [`LICENSE`](LICENSE)), and all software sources are licensed under the Apache License 2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulp-platform%2Fgwaihir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpulp-platform%2Fgwaihir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulp-platform%2Fgwaihir/lists"}