Commit graph

303 commits

Author SHA1 Message Date
Florian Zaruba
5eed9ef91d Move AXI Id widths to SoC package 2019-03-18 11:51:58 +01:00
Florian Zaruba
ad223cfd9f Clean-up naming to distinguish OP from GP Ariane (#193)
* Clean-up naming to distinguish  OP from GP Ariane

* Rename wb to wt in hidden CI files

* Fix verilator install script
2019-03-18 11:51:58 +01:00
Florian Zaruba
a5f3184a65 Improve Tandem Simulation, switch-able caches and fix a cache-bug (#192)
* Add spike isa sim

* Fix AMO problem in verilator

* 🎨 Tidy up FPU wrapper

* Bump axi_exclusive submodule

* Refactor serpent AXI adapter, bump dbg and atomics submodules, add separate bootrom for linux on OpenPiton (#190)

* Refactor serpent AXI adapter

* Disable FPU in OpenPiton by default

* Bump dbg and atomics submodules

* Fix cache testbenches (interface change)

* FPGA bootrom changes for OpenPiton SDHC

* Introduce two bootroms, one for baremetal apps (pitonstream), and one for linux boot from SD

* Testing barrier-based synchronisation instead of CLINT-based

* This bootrom works for 2 core on g2 and if you change MAX_HARTS to 4, then 4 cores on vc707

* Add MAX_HARTS switch to makefile

* Fix gitlab CI

* Revert standard FPGA bootrom

* Update Flist

* Make UART_FREQ a parameter

* Fix typo in tb.list and an error in define switch in ariane_pkg

* Copy over SD-driver in bootloader from @leon575777642

* Fix compilation issues of bootrom

* Change signal name in serpent periph portlist

* Correct generate statement in serpent dcache memory

* Add Piton SD Controller, FPGA fixes

* Fix race condition in dcache misshandler

* Add tandem spike to Make flow

* Remove OpenPiton SD Card controller again
2019-03-18 11:51:58 +01:00
msfschaffner
0ffef2ae1a Refactor serpent AXI adapter, bump dbg and atomics submodules, add separate bootrom for linux on OpenPiton (#190)
* Refactor serpent AXI adapter

* Disable FPU in OpenPiton by default

* Bump dbg and atomics submodules

* Fix cache testbenches (interface change)

* FPGA bootrom changes for OpenPiton SDHC

* Introduce two bootroms, one for baremetal apps (pitonstream), and one for linux boot from SD

* Testing barrier-based synchronisation instead of CLINT-based

* This bootrom works for 2 core on g2 and if you change MAX_HARTS to 4, then 4 cores on vc707

* Add MAX_HARTS switch to makefile

* Fix gitlab CI

* Revert standard FPGA bootrom

* Update Flist

* Make UART_FREQ a parameter

* Fix typo in tb.list and an error in define switch in ariane_pkg

* Copy over SD-driver in bootloader from @leon575777642

* Fix compilation issues of bootrom

* Change signal name in serpent periph portlist

* Correct generate statement in serpent dcache memory
2019-03-18 11:51:58 +01:00
msfschaffner
07df142624 Maturity fixes and AXI extensions for write-through cache system (#188)
* : Fix PITON_ARIANE define issues
* Fix write-back / cache read collision issue in serpent dcache.
* Add separate bootrom / device tree for openpiton (hardcoded for 1x1 tile config at the moment).
* Bootrom generation update (better compatibility with older python versions), new bootrom for OpenPiton+Ariane.
* Fix assertion in icache.
* Correct JTAG timing constraints.
* Fix parameter type in fpga toplevel (fix #168).
* Remove conflicting bootrom from fpga file list.
* This flushs the branch predictors when entering exception handlers in order to avoid speculative fetches from virtual addresses (to be improved with PMAs).
* Fix byte offset of IPIs in CLINT
* Disable DCache flushes on fence for write-through cache (not needed in that case)
* Fix blocking assignments in ff process.
* Fix register access issue in debug mode, only affects A0 (fix #179).
* Fix multiple driver issue in PLIC
* Do not assume replicated data in serpent dcache when reading from an NC region.
* Another byte offset fix in IPIs (CLINT)
* Add AXI64 compliance switch to dcache_mem
* Fix genesys 2 constraints
* Map serpent atomic requests onto AXI atomic/exclusive transactions.
* Cleanup of AXI memory plumbing, add separate AXI adapter module.
* Remove unneeded interface signals, increase wbuffer #pending tx
* Fix verilator compilation issues in AXI adapter.
* Delete unnecessary constraint
* Delete duplicate module instance
* Update gitlab CI script
* Small fixes to make riscv atomics work with serpent_axi_adapter.
* Update travis and gitlab-ci scripts
* Register b responses for better timing.
* Remove fpu div submodule, update Makefile paths and src lists
* Constant bits in haltsum reduction must be 1 (AND reduction).
* Switch to DTM from riscv-dbg submodule
* Further cleanup fixes in AXI/serpent atomics
* Bump riscv-dbg version
2019-03-18 11:51:58 +01:00
Florian Zaruba
843300302f Add Exclusive Adapter (#187)
* Add atomic adapter as submodule

* Change UART frequency

* Add atomic memory adapter

* Bump AXI exclusive submodule version

* Re-name ariane_next to ariane-dev

* Switch to official `atop` branch on `axi_node`
2019-03-18 11:51:58 +01:00
Florian Zaruba
b1bdc0c02c Add System Verilog FPU (#163)
* Change reset strategy in ariane_verilog_wrap.sv, remove unneeded sigs in serpent_peripherals.

* saving...

* ⬆️ Updates for new FPU

* Add sv fpu to FPGA flow

* Use multi-threading capabilities of verilator

- Deactivate non-standard floating point arguments
- Make multi-threading conditional on the availability of verilator 4

* Remove DPI threadsafety

* Reduce FPGA clock frequency

- Remove couple of -v- tests to reduce test-time

* Fix documentation and fpga flow

- Fix cycle time to accommodate FPU
- Fix FPGA constraints

* Change UART frequency
2019-03-18 11:51:58 +01:00
Michael Schaffner
7951802a01
This patch makes the dm relocatable to an arbitrary base address (last 12bit need to be zero however). 2019-01-24 12:44:21 +01:00
Michael Schaffner
be3c614f71
Fix #158 2019-01-07 20:53:14 +01:00
Michael Schaffner
a9e3368f6a
: Fix PITON_ARIANE define issues. 2018-11-26 18:18:09 +01:00
Michael Schaffner
8312516bec
License headers updated, some indentation cleanup, consolidate common tb.svh file. 2018-11-26 13:20:19 +01:00
Michael Schaffner
41fb4d225e
Rename SERPENT_PULP define to PITON_ARIANE. 2018-11-26 12:07:54 +01:00
Michael Schaffner
179054a0ec
Merge remote-tracking branch 'upstream/ariane_next' into serpent 2018-11-21 20:15:32 +01:00
Michael Schaffner
4c329753b0
Add a second dscratch register to the csrs. 2018-11-19 14:40:17 +01:00
Michael Schaffner
fb92e8603a
Change defines.vh to defines.tmp.h 2018-11-18 11:33:45 +01:00
Florian Zaruba
3c40965e8a
Merge remote-tracking branch 'origin/ariane_next' into fpga_dev 2018-11-17 22:38:54 +01:00
Florian Zaruba
99a2fae447
Enable D$ by default and extend README 2018-11-16 17:20:58 +01:00
Florian Zaruba
1d173b3742
🐛 Fix non-conditional SC 2018-11-16 16:12:44 +01:00
Michael Schaffner
a99a176add
Adapt parameterization assertions l15 adapter to allow for different associativity in I and D cache. 2018-11-15 12:26:19 +01:00
Florian Zaruba
beda3f526e
Optionally flush TLB 2018-11-15 11:26:14 +01:00
Michael Schaffner
fcba756c39
This adds configuration propagation from OpenPiton Verilog defines to SV parameters in packages. 2018-11-13 14:56:58 +01:00
Florian Zaruba
300b7771ea
Remove pmps and fix dcache bypass 2018-11-13 13:38:41 +01:00
Florian Zaruba
ebce1bc07f
Add skeleton for NBDache TB (copy from serpent) 2018-11-06 12:21:23 +01:00
Florian Zaruba
c57d36079c
Make tval on illegal instruction optional 2018-11-05 15:37:55 +01:00
Florian Zaruba
d7b9bea4f0
Merge branch 'fpga_dev' of github.com:pulp-platform/ariane into fpga_dev 2018-11-05 01:34:43 +01:00
Florian Zaruba
64eb9d8625
Improve Spike alignment 2018-11-05 01:24:10 +01:00
Florian Zaruba
9db50883da
Improve Spike - Ariane alignment
- Don't increment instret on exception
- Align cycle counter with instret counter (-> IPC 1 as in Spike)
- Add mock uart functionality
- Make the preloading elf a plus-arg
2018-11-04 16:20:19 +01:00
Florian Zaruba
c907270502
First instructions passing on Spike 2018-11-03 22:44:45 +01:00
Florian Zaruba
ab2d5908d1
🐛 Fix wrong interrupt stack behaviour 2018-11-03 09:20:36 +01:00
Michael Schaffner
cb0b0bec03
Align serpent cache size with openpiton, add FPGA synthesizable clock gate to ariane_verilog_wrap.sv. 2018-10-31 14:45:52 +01:00
Florian Zaruba
487b960b63
🐛 Fix interrupt registers 2018-10-31 11:16:42 +01:00
Florian Zaruba
c9366c4478
🐛 Fix interrupt registers 2018-10-30 23:13:11 +01:00
Michael Schaffner
5060b99508
Misc fixes related to openpiton compilation 2018-10-29 13:00:42 +01:00
Michael Schaffner
feb187fa96
Add AXI adapter2, and connect l15 adapter. 2018-10-25 19:49:11 +02:00
Florian Zaruba
ec354b25ab
Switch on invalidate on flush again 2018-10-19 11:40:21 +02:00
Michael Schaffner
6539da7193
Merge branch 'ariane_next' into serpent 2018-10-19 11:29:00 +02:00
Florian Zaruba
569ca80d1c
Prepare for 64 bit fetch, reduce fetch fifo size
- Remove is_lower_64 in branch prediction with
  more generic information which extends to 64 bit
  fetches
- Reduce the size of the fetch fifo by eliminating
  redundant exceptions fields (only instruction)
  page faults can occur.
- Introduce new struct which governs communication
  between frontend and decode
- Add various configurations to ariane_pkg
2018-10-18 20:56:27 +02:00
Florian Zaruba
7da347e17b
Add more performance counters 2018-10-18 14:34:23 +02:00
Florian Zaruba
45ba93f9d1
Set invalidate on flush
If not set AMO semantic is not guaranteed
2018-10-17 22:14:47 +02:00
Florian Zaruba
be866578b3
Fix issue #119 2018-10-17 20:58:56 +02:00
Florian Zaruba
86c793cc49
Move multiply and divide to fixed latency units 2018-10-17 19:33:16 +02:00
Michael Schaffner
e5719ce34e
WIP Update serpent cache subsystem AXI plugs 2018-10-17 18:53:04 +02:00
Michael Schaffner
0bd9c4fb2b
Merge branch 'ariane_next' into serpent 2018-10-17 18:52:21 +02:00
Florian Zaruba
b30b2190e9
Re-structure ex-stage, clean-up 2018-10-17 18:31:37 +02:00
Florian Zaruba
25a0470df6
Fix Issue #127 (#128)
* Switch to AXI structs

* Fix problems with ID width mismatches

* 📝 Update CHANGELOG
2018-10-17 16:30:58 +02:00
Florian Zaruba
31a761e905
Fix problems with ID width mismatches 2018-10-17 15:20:08 +02:00
Florian Zaruba
644bcd7eeb
Merge branch 'ariane_next' of github.com:pulp-platform/ariane into issue-127 2018-10-17 14:22:59 +02:00
Michael Schaffner
b394d366bf
Merge remote-tracking branch 'upstream/ariane_next' into serpent 2018-10-15 19:24:33 +02:00
Michael Schaffner
ffec3c85ee
Integrate serpent cache into Ariane 2018-10-15 18:36:45 +02:00
Michael Schaffner
ff7bba23aa
Implemented serpent DCache and the corresponding TB 2018-10-15 18:36:36 +02:00