Files
chipyard/.circleci
Jerry Zhao 3f5a204fd0 BOOM Bump w. Fromajo (#523)
* [uart] add uart adapter | add uart + adapter to all configs

* [uart] change pty define name | add uart to all configs that need it

* [uart] default to 115200 baudrate

* [dromajo] first working commit

* [dromajo] bump boom for commit-width > 1 fix

* [dromajo] adjust dromajo commits

* [dromajo] bump boom

* commit dromajo changes

* extra

* [dromajo] add block device to configs

* rebump older modules

* bump firesim

* [chipyard] enable dromajo in midas level simulation

* [testchipip] forgot to bump

* get rid of breaking things

* bump firesim

* bump boom

* Bump BOOM to ifu3 WIP

* bump firesim

* fix how memory is passed to dromajo

* bump boom and firesim

* fix merge issues

* add dromajo cosim bridge in chipyard

* move traceio back into testchipip (#488)

* refer to testchipip traceio in firechip (#490)

* Move TraceIO fragment to chipyard (#492)

* fix chipyard dromajo bridge (#493)

* Sboom dromajo bump (#501)

* [FireChip] Use clock in BridgeBinders

* [firesim] Update TraceGen BridgeBinder

* [Firechip] Add support for Tile <-> Uncore rational division

* [firesim] Update the multiclock test

* [firechip] Commit some Eagle X-related mock configs

* [firechip] Instantiate multiple TracerV bridges

* [Firechip] Include reset in tracerv tokens

* [TracerV] Drop the first token in comparison tests

* [Firechip] Make reverse instruction order in trace printf

* WARNING: Point at a fork of boom @ davidbiancolin

* [firesim] Update ClockBridge API

* Add Gemmini to README [ci skip] (#487)

* [firechip] Isolate all firesim-multiclock stuff in a single file

* add documentation on ring network and system bus

* Bump firesim for CI

* Bump FireSim

* Bump testchipip to dev

[ci skip]

* Bump FireSim

* [make] split up specific make vars/targets into frags (#499)

* [make] split up specific make vars/targets into frags

* [make] move dramsim and max-cycles into SIM_FLAGS

* [misc] move ariane configs to configs/ folder

* [dromajo] add dromajo

* [dromajo] bump for new traceio changes

* bump firesim

* bump firesim

* point to chipyard traceio

* bump boom

Co-authored-by: David Biancolin <david.biancolin@gmail.com>
Co-authored-by: Howard Mao <zhehao.mao@gmail.com>

* Support Dromajo + TracerV configurations

* [docs] add documentation for Dromajo in FireSim + Chipyard

* add a bit more docs

* [docs] bump docs

* [firesim] dump artefacts in firesim

* [firesim] update firesim

* [testchipip] remove extraneous items in testchipip

* [dromajo] prevent dromajo from breaking when params unset

* update firesim, dromajo, and testchipip

* [firesim] bump firesim

* [firesim] bump firesim

* [misc] bump firesim and testchipip for reviewer comments

* remove WithNoGPIO fragment

* bump firesim

* bump dromajo boom config

* bump firesim

* generate artefacts in firesim testsuite

Co-authored-by: abejgonzalez <abe.j.gonza@gmail.com>
Co-authored-by: Abraham Gonzalez <abe.gonzalez@berkeley.edu>
Co-authored-by: David Biancolin <david.biancolin@gmail.com>
Co-authored-by: Howard Mao <zhehao.mao@gmail.com>
2020-05-16 00:21:24 -07:00
..
2020-05-14 19:19:50 -07:00
2019-09-06 18:51:55 -07:00
2019-07-10 00:02:06 -07:00
2020-05-14 19:19:50 -07:00
2020-05-14 19:19:50 -07:00
2020-03-09 18:06:41 -07:00
2020-03-09 18:06:41 -07:00
2020-03-09 18:06:41 -07:00
2020-05-14 19:19:50 -07:00

Chipyard CI

Website: https://circleci.com/gh/ucb-bar/chipyard

CircleCI Brief Explanation

CircleCI is controlled by the config.yml script. It consists of a workflow which has a series of jobs within it that do particular tasks. All jobs in the workflow must pass for the CI run to be successful.

At the bottom of the config.yml there is a workflows: section that specifies the order in which the jobs of the workflow should run. For example:

- prepare-rocketchip:
    requires:
        - install-riscv-toolchain

This specifies that the prepare-rocketchip job needs the install-riscv-toolchain steps to run before it can run.

All jobs in the CI workflow are specified at the top of config.yml They specify a docker image to use (in this case a riscv-boom image since that is already available and works nicely) and an environment. Finally, in the steps: section, the steps are run sequentially and state persists throughout a job. So when you run something like checkout the next step has the checked out code. Caching in the job is done by giving a file to cache on. restore_cache: loads the cache into the environment if the key matches while save_cache: writes to the cache with the key IF IT IS NOT PRESENT. Note, if the cache is already present for that key, the write to it is ignored. Here the key is built from a string where the checksum portion converts the file given into a hash.

.circleci directory

This directory contains all the collateral for the Chipyard CI to work. The following is included:

`build-toolchains.sh` # build either riscv-tools or esp-tools
`create-hash.sh`      # create hashes of riscv-tools/esp-tools so circleci caching can work
`do-rtl-build.sh`     # use verilator to build a sim executable (remotely)
`config.yml`          # main circleci config script to enumerate jobs/workflows
`defaults.sh`         # default variables used

How things are setup for Chipyard

The steps for CI to run are as follows. 1st, build the toolchains in parallel (note: esp-tools is currently not used in the run). The docker image sets up the PATH and RISCV variable so that riscv-tools is the default (currently the env.sh script that is created at tool build is unused). 2nd, create the simulator binary. This requires the riscv-tools for fesvr and verilator to be able to build the binary. This stores all collateral for the tests (srcs, generated-srcs, sim binary, etc) to run "out of the gate" in the next job (make needs everything or else it will run again). 3rd, finally run the desired tests.

Other CI Setup

To get the CI to work correctly you need to setup CircleCI environment variables to point to the remote directory to build files and the server user/ip. In the project settings, you can find this under "Build Settings" "Environment Variables". You need to add two variables like the following:

CI_DIR = /path/to/where/you/want/to/store/remote/files SERVER = username@myserver.coolmachine.berkeley.edu

Additionally, you need to add under the "PERMISSIONS" "SSH Permissions" section a private key that is on the build server that you are using. After adding a private key, it will show a fingerprint that should be added under the jobs that need to be run.

Note: On the remote server you need to have the *.pub key file added to the authorized_keys file.