Skip to content

Commit 279e6d9

Browse files
authored
project: Enhance README.md
1 parent aadf420 commit 279e6d9

File tree

1 file changed

+61
-18
lines changed

1 file changed

+61
-18
lines changed

README.md

Lines changed: 61 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,63 @@
1414
</p>
1515
</p>
1616

17+
**OpenVADL** is an open-source implementation of **VADL**, a processor description language.
18+
VADL enables users to specify both instruction set architectures (ISA) and microarchitectures in a modern, intuitive way.
19+
For details, see the [official documentation](https://openvadl.github.io/openvadl/).
20+
21+
OpenVADL can generate multiple artifacts from a single VADL specification:
22+
23+
- **Instruction Set Simulator** via a custom QEMU frontend
24+
- **Compiler** via a custom LLVM backend
25+
- **Linker and Assembler** by integrating a generated parser into LLVM
26+
27+
Additional tools, such as a **Chisel** generator for hardware synthesis, are in development.
28+
29+
Check out our [VADL-related publications](https://www.complang.tuwien.ac.at/vadl/pubs) for more background.
30+
31+
## Getting Started
32+
33+
If you want to use OpenVADL, please refer to [the documentation](https://openvadl.github.io/openvadl/).
34+
It covers everything you need to install OpenVADL, write a specification, and use the CLI to generate artifacts like a simulator or compiler.
35+
36+
For working VADL specifications examples, check out our [reference specifications](https://github.com/OpenVADL/openvadl/tree/master/vadl/test/resources/testSource/sys).
37+
These are tested and kept up to date with the current OpenVADL version.
38+
39+
## Contribution
40+
41+
If OpenVADL sounds like an interesting project and you'd like to collaborate or contribute, please reach out!
42+
43+
There are plenty of open tasks, including:
44+
- A cycle-approximate simulator generator
45+
- User-mode emulation in the generated ISS
46+
- A documentation engine for embedding architecture specs directly in VADL
47+
- Improvements to the QEMU-based ISS
48+
- Enhancements to the LLVM-based compiler
49+
50+
There are plenty of potential Bachelor and Master thesis topics available.
51+
52+
## Q&A and Bugs
53+
54+
If you have any questions, please use our [discussion panel](https://github.com/OpenVADL/openvadl/discussions/categories/q-a).
55+
This helps others with similar issues find answers more easily.
56+
57+
If you encounter a crash or incorrect behavior, please report it as an [issue](https://github.com/OpenVADL/openvadl/issues).
58+
Before creating a new issue, check if one already exists for the same problem.
59+
60+
# Development
61+
62+
Before contributing, please read [OpenVADL's contribution guidelines](CONTRIBUTING.md).
63+
64+
## Project Structure
65+
66+
The `open-vadl` project includes multiple Gradle modules.
67+
68+
- `vadl` is the main module that contains all the logic of OpenVADL
69+
- `vadl-cli` implements the CLI for OpenVADL users. It uses the `vadl` module as a library
70+
- `java-annotations` provides Java (!) annotations (e.g. `@Input`) that are used in the VIAM.
71+
Additionally it provides `errorprone` bug detectors, that statically check if certain properties
72+
in the VIAM are correctly implemented.
73+
1774
## Getting Started
1875

1976
For example, you can create the iss (Instruction Set Simulator) for a minimal risc-v example with:
@@ -24,7 +81,7 @@ For example, you can create the iss (Instruction Set Simulator) for a minimal ri
2481

2582
To get a description of the complete usage, you can run: `./gradlew run --args="--help"`
2683

27-
## Building
84+
### Building
2885

2986
You can build and run in two steps with
3087

@@ -44,7 +101,7 @@ With that you can run:
44101

45102
Which will create an executable at: `vadl-cli/build/native/nativeCompile/openvadl`
46103

47-
## Run all tests
104+
### Run all tests
48105

49106
To run all tests you need to have docker running on your system.
50107

@@ -57,21 +114,7 @@ available, otherwise the tests might fail.
57114

58115
Expect the tests to run a long time (up to an hour isn't unrealistic).
59116

60-
## Development
61-
62-
Before contributing, please read [OpenVADL's contribution guidelines](CONTRIBUTING.md).
63-
64-
### Project Structure
65-
66-
The `open-vadl` project includes multiple Gradle modules.
67-
68-
- `vadl` is the main module that contains all the logic of OpenVADL
69-
- `vadl-cli` implements the CLI for OpenVADL users. It uses the `vadl` module as a library
70-
- `java-annotations` provides Java (!) annotations (e.g. `@Input`) that are used in the VIAM.
71-
Additionally it provides `errorprone` bug detectors, that statically check if certain properties
72-
in the VIAM are correctly implemented.
73-
74-
### Checkstyle
117+
## Checkstyle
75118

76119
We are using Checkstyle to ensure a consistent format and documentation of the source code.
77120

@@ -80,7 +123,7 @@ The configuration is located under `config/checkstyle/checkstyle.xml`.
80123

81124
To locally test if the checkstyle CI pipeline would fail, run the `checkstyleAll` gradle task.
82125

83-
#### Using Intellij
126+
### Using Intellij
84127

85128
To use the Checkstyle confirm IntelliJ code style follow these steps:
86129

0 commit comments

Comments
 (0)