Commit graph

45 commits

Author SHA1 Message Date
Greg Chadwick
b57c9a4349 [ci] Switch to using Ubuntu 20 LTS azure agent
The Ubuntu 18 LTS image has been deprecated by Azure so we need to
switch to a new version.
2022-10-07 13:34:07 +01:00
Greg Chadwick
50d183fc1b [ci] Add pmp_smoke_test cosim run to CI 2022-07-21 15:55:59 +01:00
Greg Chadwick
e70add7228 [ci] Add co-simulation testing of CoreMark 2021-11-12 09:39:38 +00:00
Philipp Wagner
270cd91b38 Fix the verible-format CI job
The toplevel core file got renamed, but the experimental verible-format
CI job wasn't updated in sync. Fix that.
2021-07-15 15:47:57 +01:00
Tom Roberts
93a76b3900 [config] Add an Opentitan configuration
This adds the configuration instantiated in Opentitan and adds
missing prim support to allow the TB to run that configuration.

Resolves #1362

Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2021-05-26 16:23:33 +01:00
Philipp Wagner
c46685747d CI: Update to Ubuntu 18.04
Follow OpenTitan's lead and move to Ubuntu 18.04 for the CI runner.
Ubuntu 16.04 comes with Python 3.5, which is EOL and causes more and
more issues.

Specificially, this update is triggered by rst2pdf not being installable
with pip's new dependency resolver (see also
https://github.com/rst2pdf/rst2pdf/issues/489#issuecomment-736652808).
2020-12-01 19:01:29 +00:00
Philipp Wagner
10ac310b31 [ci] Add a comment on private CI
Private CI has a separate list of ibex configurations it runs (there's
no sane way around that). Add a note to the pipeline configuration to
hopefully remember to keep them in sync, if that's desired (they don't
*have to* be in sync).
2020-10-27 14:34:58 +00:00
Philipp Wagner
2c75d4df39 Enable configuration with Icache in public CI
We now have an Ibex configuration
experimental-maxperf-pmp-bmfull-icache, which also enables the
instruction cache. Enable this configuration in public CI, which makes
it run the lint and RISC-V compliance jobs.
2020-10-27 11:30:09 +00:00
Greg Chadwick
6123ac7719 [rtl] Introduce static branch prediction 2020-08-27 11:25:17 +01:00
Philipp Wagner
d534af7c84 CI: Factor out installation of build dependencies
Put all build dependencies into a CI-specific script
(ci/install-build-deps.sh). No effort has been made to make this script
suitable for non-CI users.
2020-08-21 09:59:32 +01:00
Philipp Wagner
6fca2c4aac Factor out CI variables into separate file
This helps to re-use these variables in different pipelines.
2020-08-21 09:59:32 +01:00
Philipp Wagner
8364e356c2 Use a RV32IMCB toolchain in CI
This update also switches from GCC 9.2 to GCC 10 experimental, see
20200626-1
for more information about the toolchain builds.
2020-08-20 09:23:46 +01:00
Philipp Wagner
6912b21fc7 Remove Verible lint workaround
Verible lint now supports waivers without regex and line arguments. Use
this new feature and remove the workaround we had in place.

Signed-off-by: Philipp Wagner <phw@lowrisc.org>
2020-07-30 12:19:27 +01:00
Philipp Wagner
3d29e5174c Enforce lint of simple system in CI
The existing setup had a couple mixups in them which failed them to be
effective.
2020-07-07 16:21:48 +01:00
Philipp Wagner
465ea2806c Add lint for ibex_simple_system to CI 2020-07-03 16:18:31 +01:00
Philipp Wagner
18db64f6fa CI: Enable Verible lint for all configs 2020-07-03 13:24:17 +01:00
Philipp Wagner
df634b9459 CI: use the new binary name of Verible
They switched to new binary names, use these names (the old ones are
still around for backwards-compat, but deprecated).
2020-07-03 13:24:17 +01:00
Philipp Wagner
15d378555f [CI] Update Verible version
Verible is still experimental, but having a newer version in CI helps us
to make use of some of its newer features as we move forward (such as
waivers).
2020-07-02 11:57:09 +01:00
ganoam
1aa4d5a32b [bitmanip] Optimizations and Parametrization
This commit contains some final optimizations regarding the bit
manipulation extension as well as the parametrization into a balanced
version and a full performance version.

Balanced Version:
        * Supports ZBB, ZBS, ZBF and ZBT extensions
        * Dual cycle instructions:
          ror[i], rol, cmov, cmix fsl, fsr[i]
        * Everything else completes in a single cycle.

Full Version:
        * Supports all 32b sub extensions.
        * Dual cycle instructions:
          ror[i], rol, cmov, cmix fsl, fsr[i], crc32[c], bext, bdep
        * Everything else completes in a single cycle.

Notable Changes:
        * bext/bdep are now multi-cycle: Sharing additional register
          with multiplier module
        * grev/gorc instructions are implemented in separate structures
          rather than sharing the shifter or butterfly network.
        * Speed up decision on using rs1 or rs3 for alu_operand_a by
          introducing single-bit register, to identify ternary
          instructions in their first cycle.
        * Introduce enumerated parameter to chose bit manipulation
          implementation

Signed-off-by: ganoam <gnoam@live.com>
2020-06-26 14:43:24 +02:00
Philipp Wagner
45567667f1 [CI] Install wheel for easier package installation
... and to get around warnings when using pip without wheel being
present. No functional change expected.
2020-05-27 10:23:15 +01:00
Philipp Wagner
72f0ead9f7 [CI] Add dependency on pyyaml
Pyyaml is needed for primgen (coming next), and for ibex_config.py.
Install it through python-requirements.txt. This requires,
unfortunately, an uninstallation of the distribution-provided version
first (otherwise pip cannot install it).
2020-05-27 10:23:15 +01:00
Greg Chadwick
00b46d9abe [cfg] Add PMP parameters to ibex_config.yaml
Also renames configs as part of this as they start to get unweildy if
all features get described in the config name.
2020-05-15 09:03:04 +01:00
Philipp Wagner
6db7e12073 CI: Use packaged version of Verilator
Reduce CI times by using a packaged version of Verilator. The packaging
is done by me on Open Build Service, which provides Verilator packages
for various distributions. The packages are versioned to help choose the
exact version in CI.

This is experimental for now, let's see if that's a suitable path
forward in the longer term.
2020-04-21 11:09:23 +01:00
Greg Chadwick
7dae33abc2 [ci] Mark configs using experimental features 2020-03-31 16:49:08 +01:00
Greg Chadwick
230e879651 [ci] Add Ibex with RV32B to configurations
Note this doesn't introduce any testing of the RV32B instructions,
simply runs existing tests on a configuration with the RV32B extension
enabled.

Fixes #745
2020-03-31 16:49:08 +01:00
Greg Chadwick
dba0529156 [ci] Introduce multiple-configuration CI 2020-03-27 10:30:46 +00:00
Philipp Wagner
bdfe8de0f7 Update GCC to include bitmanip patches
Use a toolchain in CI which has support for experimental bitmanip
patches. This toolchain is based on GCC 9.2.0 with additional bitmanip
patches, and reports itself as 10.0 experimental.

The toolchain was prepared by Luís Marques in
lowRISC/lowrisc-toolchains#11. Thanks!

Addresses part of #703
2020-03-24 21:25:20 +00:00
Philipp Wagner
1ac5a74a83 Enable the use of Verible through fusesoc
Run

```
fusesoc --cores-root . run --no-export --target=format --tool=veribleformat lowrisc:ibex:ibex_core
```

to format all source code with Verible's verilog_format tool.
2020-03-16 16:54:41 +00:00
Philipp Wagner
4fcf72db60 Add Verible lint as one lint option
This extends the core file to be able to call Verible for lint.

This requires an updated version of edalize with
https://github.com/olofk/edalize/issues/95 fixed. For the time being, we
use the same 'ot' branches of those tools as we do in OpenTitan. Once
Verible becomes officially supported we need to ensure that released
versions of fusesoc and edalize exist, and that this requirement is
properly documented.
2020-03-16 16:54:41 +00:00
Greg Chadwick
e03aeb1f4f [CI] Add explicit trigger for branches/PRs
Azure pipelines has stopped triggering, the issue is being fixed but
this works around it for now.
2020-03-16 10:19:16 +00:00
Greg Chadwick
2d1b07a5c6 [ci] Fix removal of vendored files from C/C++ lint 2020-03-09 14:41:40 +00:00
Stefan Wallentowitz
5aa1585f63 Switch Verilator linter to matches
Verilator will soon support the configuration file syntax of wildcard
matches for linter warnings to waive. Switch to the new syntax that
avoids line-based rule settings.
2020-03-02 12:01:10 +00:00
Philipp Wagner
aab15bc922 CI: Pin riscv-compliance repo to specific commit
Recently changes in the RISC-V compliance repo have caused our tests to
fail. That indicent highlighted the issue that we use the latest master
version of the compliance suite without pinning the version.

This PR fixes that by pinning to a specific version where our tests
still succeeded.

Upstream PR to fix actual failure: https://github.com/riscv/riscv-compliance/pull/92
Works around #608
2020-02-20 15:45:51 +00:00
Philipp Wagner
f24ffa5657 Update setuptools and pip to parse more metadata
The Ubuntu xenial-provided versions of setuptools and pip don't parse
all metadata present in Python packages, especially not the "minimum
required Python version" bit. More and more packages are using this
information to limit Python 3.5-support to older versions of their
packages. In this case, the problem was caused by the "zipp" package,
which is a very remote dependency of fusesoc.

Fixes #597
2020-02-10 15:10:57 +00:00
Tom Roberts
f1683e3f3c [ci] Add clang-format checking to CI
- Only checks changed C source files
- Also add a note on C/C++ style to README
- Fixes #304

Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2020-01-02 13:20:35 +01:00
Tom Roberts
4a3abee9b2 [ci] Add CS registers TB to CI
Add a return code to TB which Verilator sims can check
Build and run TB, checking for failures

Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2019-12-03 15:38:56 +00:00
Tobias Wölfel
ce7e38351e [DV] Add Verilator memory initialization from ELF
Support initialization of memory by loading content from ELF files.
All segments of the ELF file with the type `PT_LOAD` are merged into a
temporary buffer and then forwarded to a predefined memory.
This is an addition for setting the memories with VMEM files.

Memories must implement `simutil_verilator_set_mem` to support the
setting of values with a width of 32 bits. A return value of 0 must
indicate a successful operation and 1 an error.

Memories are defined by a call to `RegisterMemoryArea()` before the
execution of the simulation, at which point the arguments are parsed and
the initialization is started. The memories are identified by unique
name. The design specific location is used to set the SystemVerilog
scope.

Registered memories can be printed by using `-l list`. The unique name
is used for `-l name,file.elf` together with the file path.
An optional part of the argument is the type of the file, `elf` or
`vmem`, and if not provided it is attempted to detect the type by
looking at the file extension.
The memory specific arguments which already existed accept now also ELF
files. They use predefined names and are included to keep the interface
stable.

Contents of an ELF segment which has a bigger memory size than file size
are not set. This is typically required for BSS sections for zero-ing
the memory.
2019-11-27 11:35:07 +00:00
Greg Chadwick
11749c7e4d [rtl] Implement FENCE.I
Fixes #391
2019-11-27 08:47:26 +00:00
Tobias Wölfel
1cc4831480 Add rv32Zicsr target in azure
Fixes lowrisc/ibex#459
2019-11-12 21:59:40 +00:00
Tobias Wölfel
87b05b6f0e Update expected failure for riscv-compliance
[riscv-compliance] changes the tests for rv32i.
Update the expected output.

[riscv-compliance]: df18fa8d95
2019-11-12 21:59:40 +00:00
Alex Bradbury
0abe5ccaf7 [CI] Stop pinning an old attrs version
simplesat (required by fusesoc) was broken by an update to the attrs
library. Now simplesat 0.8.2 has been released which fixes the issue, we
can remove the explicit pinning of the old attrs version.
2019-10-10 16:22:56 +01:00
Philipp Wagner
a121caab35 CI: Also check tracer in lint
By linting ibex_core_tracing, we lint all submodules as well: ibex_core
and ibex_tracer.
2019-10-02 18:28:26 +01:00
Philipp Wagner
85e1d43a08 CI: Unbreak build after simplesat breakage
Tracked in https://github.com/enthought/sat-solver/issues/270
2019-10-02 14:16:26 +01:00
Philipp Wagner
cfb6fc4963 CI: Run the compliance tests for all ISA variants
rv32imc doesn't include all i and m tests, we need to call the test
suite on these extensions separately.
2019-08-22 23:27:13 +01:00
Philipp Wagner
78c16f90e9 CI: Use Azure Pipelines to run lint and some DV
This sets up Azure Pipelines to run the following two tasks:

- Run Verilator lint on the SystemVerilog code.
- Run the RISC-V compliance test suite for RV32IMC
2019-08-19 17:26:09 +02:00