-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The readme contains information about the purpose of CI and building and pushing the docker image
- Loading branch information
Showing
1 changed file
with
42 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,7 +19,7 @@ well as a black-box for Verilog synthesis. | |
The core interfaces with other components via [Wishbone](https://cdn.opencores.org/downloads/wbspec_b4.pdf) | ||
interfaces, using [`clash-protocols`](https://github.com/clash-lang/clash-protocols) types. | ||
|
||
## Building | ||
## Building the project | ||
|
||
For building the CPU, the following software needs to be installed and available in the `PATH`: | ||
|
||
|
@@ -29,11 +29,51 @@ For building the CPU, the following software needs to be installed and available | |
- `verilator`, at least version 5.001 (development version at time of writing) | ||
- `make` for building the verilated library and FFI code | ||
|
||
## Notes for using the core | ||
### Notes for using the core | ||
|
||
- VexRiscv has a "reset vector" for the instruction bus. This is the initial PC that gets fetched. | ||
This address only gets presented to the IBUS after at least one cycle of RST being asserted. | ||
|
||
- The contents of memories need to be stored in little endian. This means that for example the | ||
contents of an ELF file need to be endian-swapped before being used as the contents of the | ||
instruction storage. This applies to all storages. | ||
___ | ||
|
||
# Continuous Integration Setup | ||
|
||
The Continuous Integration (CI) flow for this project is defined in the `ci.yml` file. The CI has the following goals: | ||
* Verify that the project builds successfully. | ||
* Prevent warnings and errors in the codebase. | ||
* Ensure functional correctness by running tests. | ||
* Ensure code quality by running linters and formatters. | ||
|
||
CI uses a separate cabal project file that turns warnings into errors. | ||
|
||
### Building and Pushing the Docker Image | ||
|
||
To build the Docker image for this project, follow these steps: | ||
|
||
1. Navigate to the docker directory: | ||
```sh | ||
cd .github/docker | ||
``` | ||
|
||
2. Run the `build-and-publish-docker-image.sh` script: | ||
```sh | ||
./build-and-publish-docker-image.sh | ||
``` | ||
|
||
This script builds the Docker image using the specified Ubuntu and GHC versions. It also installs the necessary dependencies and tools required for the project. | ||
|
||
### Authentication for Pushing to GitHub | ||
|
||
If you have an authentication token, you can use `docker login <repo_url>` to log in using your docker username and token as password. | ||
|
||
If you don't have an authentication token, you can request the maintainers to build and push the image. Please email [[email protected]](mailto:[email protected]) with the following information: | ||
- Repository | ||
- Commit hash | ||
- Branch name | ||
|
||
## Additional Support | ||
|
||
For other problems or questions, please refer to one of the communication channels listed on [clash-lang.org](https://clash-lang.org). |