{"id":27308496,"url":"https://github.com/openvadl/openvadl","last_synced_at":"2025-09-23T03:42:36.580Z","repository":{"id":287407666,"uuid":"943911245","full_name":"OpenVADL/openvadl","owner":"OpenVADL","description":"An open-source implementation of the VADL processor description language.","archived":false,"fork":false,"pushed_at":"2025-04-11T21:57:16.000Z","size":20126,"stargazers_count":9,"open_issues_count":29,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-12T04:59:31.965Z","etag":null,"topics":["compiler","hardware","llvm","processors","qemu","simulator"],"latest_commit_sha":null,"homepage":"https://openvadl.org","language":"Java","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/OpenVADL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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}},"created_at":"2025-03-06T13:22:37.000Z","updated_at":"2025-04-11T21:57:20.000Z","dependencies_parsed_at":"2025-04-11T15:53:36.680Z","dependency_job_id":null,"html_url":"https://github.com/OpenVADL/openvadl","commit_stats":null,"previous_names":["openvadl/openvadl"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenVADL%2Fopenvadl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenVADL%2Fopenvadl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenVADL%2Fopenvadl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenVADL%2Fopenvadl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenVADL","download_url":"https://codeload.github.com/OpenVADL/openvadl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248519469,"owners_count":21117757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["compiler","hardware","llvm","processors","qemu","simulator"],"created_at":"2025-04-12T04:59:56.241Z","updated_at":"2025-09-23T03:42:36.461Z","avatar_url":"https://github.com/OpenVADL.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cp align=\"center\"\u003e\n  \u003ca href=\"https://openvadl.org\" target=\"_blank\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/logo/SVG/logo-light.svg\"\u003e\n      \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/logo/SVG/logo-dark.svg\"\u003e\n      \u003cimg alt=\"OpenVADL\" src=\"assets/logo/SVG/logo-dark.svg\" width=\"320\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://openvadl.github.io/openvadl/\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n**OpenVADL** is an open-source implementation of **VADL**, a processor description language.\nVADL enables users to specify both instruction set architectures (ISA) and microarchitectures in a modern, intuitive\nway.\nFor details, see the [official documentation](https://openvadl.github.io/openvadl/).\n\nOpenVADL can generate multiple artifacts from a single VADL specification:\n\n- **Instruction Set Simulator** via a custom QEMU frontend\n- **Compiler** via a custom LLVM backend\n- **Linker and Assembler** by integrating a generated parser into LLVM\n\nAdditional tools, such as a **Chisel** generator for hardware synthesis, are in development.\n\nCheck out our [VADL-related publications](https://www.complang.tuwien.ac.at/vadl/pubs) for more background.\n\n## Getting Started\n\nIf you want to use OpenVADL, please refer to [the documentation](https://openvadl.github.io/openvadl/).\nIt covers everything you need to install OpenVADL, write a specification, and use the CLI to generate artifacts like a\nsimulator or compiler.\n\nFor working VADL specifications examples, check out\nour [reference specifications](https://github.com/OpenVADL/openvadl/tree/master/vadl/test/resources/testSource/sys).  \nThese are tested and kept up to date with the current OpenVADL version.\n\n## Contribution\n\nIf OpenVADL sounds like an interesting project and you'd like to collaborate or contribute, please reach out!\n\nThere are plenty of open tasks, including:\n\n- A cycle-approximate simulator generator\n- User-mode emulation in the generated ISS\n- A documentation engine for embedding architecture specs directly in VADL\n- Improvements to the QEMU-based ISS\n- Enhancements to the LLVM-based compiler\n\nThere are also many potential Bachelor and Master thesis topics available.\n\n## Q\u0026A and Bugs\n\nIf you have any questions, please use\nour [discussion panel](https://github.com/OpenVADL/openvadl/discussions/categories/q-a).  \nThis helps others with similar issues find answers more easily.\n\nIf you encounter a crash or incorrect behavior, please report it as\nan [issue](https://github.com/OpenVADL/openvadl/issues).  \nBefore creating a new issue, check if one already exists for the same problem.\n\n# Development\n\nBefore contributing, please read [OpenVADL's contribution guidelines](CONTRIBUTING.md).\n\n## Project Structure\n\nThe `open-vadl` project includes multiple Gradle modules.\n\n- `vadl` is the main module that contains all the logic of OpenVADL\n- `vadl-cli` implements the CLI for OpenVADL users. It uses the `vadl` module as a library\n- `java-annotations` provides Java (!) annotations (e.g. `@Input`) that are used in the VIAM.\n  Additionally it provides `errorprone` bug detectors, that statically check if certain properties\n  in the VIAM are correctly implemented.\n\n## Getting Started\n\nYou need a working JDK 21 (or higher) installation on your `PATH` to build OpenVADL.\nTo directly build and run OpenVADL without installing it, use the `./gradlew run --args=\"\u003cargs\u003e\"` command.\n\nFor example, you can create the ISS (Instruction Set Simulator) for a minimal risc-v example with:\n\n```bash\n./gradlew run --args=\"iss sys/risc-v/rv64im.vadl\"\n```\n\nTo get a description of the complete usage, you can run: `./gradlew run --args=\"--help\"`\n\n### Building\n\nYou can build and run in two steps with\n\n```bash\n./gradlew installDist\n```\n\nWhich will create an executable script at: `vadl-cli/build/install/openvadl/bin/openvadl`.\n\nTo build a [GraalVM Native Image](https://www.graalvm.org/latest/reference-manual/native-image/) you first need to set\n`$JAVA_HOME` or `$GRAALVM_HOME` to point to your GraalVM installation.\nWith that you can run:\n\n```bash\n./gradlew nativeCompile\n```\n\nWhich will create an executable at: `vadl-cli/build/native/nativeCompile/openvadl`\n\n### Run all tests\n\nTo run all tests you need to have docker running on your system.\n\n```bash\n./gradlew test\n```\n\n**Note:** The tests are quite resource intensive (especially on memory and disk space) so make sure docker has enough\navailable, otherwise the tests might fail.\n\nExpect the tests to run a long time (up to an hour isn't unrealistic).\n\n## Checkstyle\n\nWe are using Checkstyle to ensure a consistent format and documentation of the source code.\n\nInstall the Checkstyle plugin for your IDE and import our Checkstyle configuration.\nThe configuration is located under `config/checkstyle/checkstyle.xml`.\n\nTo locally test if the checkstyle CI pipeline would fail, run the `checkstyleAll` gradle task.\n\n### Using Intellij\n\nTo use the Checkstyle confirm IntelliJ code style follow these steps:\n\n1. Go to `Settings \u003e Editor \u003e Code Style \u003e Java`\n2. For the `Scheme` select `Project`\n\nIf you still get formatting conflicts between Intellij and Checkstyle follow these steps:\n\n1. Go to\n   `Settings \u003e Editor \u003e Code Style \u003e Java`\n2. Click on the settings icon and select `Import Scheme \u003e Checkstyle configuration`\n3. Choose the Checkstyle config file under `config/checkstyle/checkstyle.xml`\n4. Enable the Java code style setting `JavaDocs \u003e Other \u003e Indent continuation lines`\n   This prevents a JavaDocs formatting conflict between IntelliJ and Checkstyle.\n\nWith this, IntelliJ uses the code style rules as specified in the Checkstyle config.\nNote that Checkstyle and code style are not 100% compatible,\nso IntelliJ will eventually generate some invalid formatted code (such as Java docs\nparagraph separation).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenvadl%2Fopenvadl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenvadl%2Fopenvadl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenvadl%2Fopenvadl/lists"}