Olof Kindgren
bebc875353
Make serv_state more simulator-friendly
...
Refactor the counter generation code to avoid using combinatorial
always statements that rely on an event happening at time 0. This
make serv work with Icarus again.
2024-03-19 12:40:50 +01:00
Olof Kindgren
bc74a9a1d7
Used named generate statements
...
Unnamed generate statements are not recommended and some tools throw
warnings or errors for these.
2023-11-16 21:38:10 +01:00
Olof Kindgren
c7fc57213c
Avoid releasing trap signal too early
...
The trap signal is used my the mux in serv_rf_if to decide which
registers to write to. If the trap signal is dropped too early,
the destination address changes while the register is still being
written to.
2023-10-31 22:21:12 +01:00
uhit332
46a820ee42
support for W=4
2023-10-31 15:53:36 +01:00
Olof Kindgren
4567214721
Refactor counter in serv_state
2023-07-13 10:29:19 +02:00
Abd
1beb9d33ec
privilege tests fixed for rv32i
2022-07-26 00:28:53 +02:00
Abd
2655861447
Compressed Extension for SERV
2022-06-01 13:38:24 +02:00
Olof Kindgren
9c4bdd4bfe
Simplify branch_op/slt_op signals
2021-10-08 22:25:24 +02:00
Olof Kindgren
9d3ebf3e96
Replace mem_op with dedicated control signals
2021-10-05 12:52:29 +02:00
Olof Kindgren
99f82af6eb
Simplify optional MDU logic
2021-10-03 23:28:45 +02:00
Olof Kindgren
48e250ea5e
Clean up serv_state interface
2021-10-03 22:48:51 +02:00
Olof Kindgren
2989051f44
Avoid enabling bufreg before instruction is decoded
2021-08-27 13:10:06 +02:00
Olof Kindgren
64f5ca0b7f
Add missing reset on cnt_done
2021-08-27 13:10:06 +02:00
Olof Kindgren
781c07b7dc
Properly reset stage_two_req signal
2021-08-27 13:10:06 +02:00
Zeeshan Rafique
6e802cb9bc
M-extension support for SERV
...
* modified serv(ant) for MDU
* added dependency for mdu
* M-extension for SERV
* Updated README for running RV32IM compliance tests
* waive some lint warnings related to mdu
* added mdu param for arty_a7_35t
2021-08-20 23:45:19 +02:00
Olof Kindgren
1c11365ae8
Simulator-friendly cleanup of misalign_trap_sync
2021-04-22 15:44:18 +02:00
Olof Kindgren
62d5d5f8fb
Remove unused wire cnt4
2021-04-18 22:01:32 +02:00
Olof Kindgren
7624466ddd
Optimize serv_rf_ram_if
2021-02-15 08:50:24 +01:00
Olof Kindgren
9a0b0e877c
Move shifter to mem_if
...
This allows reusing the data bus registers for shift amount
2021-02-06 23:24:23 +01:00
Olof Kindgren
6fbdea58d6
Optimize trap handling
2021-01-23 22:42:26 +01:00
Olof Kindgren
e4b773c17b
Syntax fixes
2021-01-18 22:47:28 +01:00
Olof Kindgren
5e4181d204
Optimize shift operations
2021-01-18 22:46:51 +01:00
Olof Kindgren
d5febe8f63
Simplify and document trap handling
2021-01-18 22:38:07 +01:00
Olof Kindgren
17103dd1f5
Merge LSB registers into bufreg
2021-01-11 21:40:45 +01:00
Olof Kindgren
ace7b8ef44
Explain and optimize state counter
2021-01-03 00:01:09 +01:00
Olof Kindgren
c9f41b54e8
Optimize init signal
2020-12-22 22:13:57 +01:00
Olof Kindgren
116e370589
Reverse polarity of bufreg_hold signal
2020-12-06 22:39:04 +01:00
Olof Kindgren
aa16bc40b6
Move ibus_cyc handling to serv_state
2020-12-02 16:19:34 +01:00
Olof Kindgren
90ce4ff1af
Syntax and reset fixes for ModelSim
2020-11-10 15:16:19 +01:00
Olof Kindgren
c1b8471678
Add reset_strategy parameter
...
The reset_strategy parameter controls how much reset to apply to
SERV. It can be set to MINI for the default behaviour, or NONE to
only apply reset where absolutely needed and rely on POR to clear
FFs
2020-11-10 15:16:19 +01:00
Olof Kindgren
554bdccba0
Silence some warnings
2020-11-10 15:16:19 +01:00
Olof Kindgren
ee6a86705d
Set size of WITH_CSR to avoid Quartus warning
2020-09-29 17:52:02 +02:00
Olof Kindgren
8775b321d9
Move jump decision logic to serv_state
2020-08-13 23:37:11 +02:00
Olof Kindgren
1d311edb7d
Make counter internal in serv_state
2020-04-15 10:29:50 +02:00
Olof Kindgren
09c7d6dbbf
Remove FSM from serv_state
2020-04-05 00:22:44 +02:00
Olof Kindgren
8dd75fa752
Stop using states in logic expressions
2020-04-04 23:44:29 +02:00
Olof Kindgren
6b0e4fb3ea
Disable misalignment traps when CSR is disabled
2020-03-27 08:55:34 +01:00
Olof Kindgren
726e520cce
Fix lint warnings when CSR is disabled
2020-03-25 23:32:12 +01:00
Olof Kindgren
b48b02b8df
Add parameter to disable CSR/interrupts
...
Also disables timer in servant if CSR/interrupts are disabled
2020-03-02 16:17:26 +01:00
Olof Kindgren
7f16f17ca5
Optimize CSR immediate handling
2020-02-19 10:02:48 +01:00
Olof Kindgren
badcd7ea55
Remove duplicate signals in serv_state
2020-02-17 23:48:39 +01:00
Olof Kindgren
5aa1fbe709
Stop depending on run state
2019-12-08 22:51:28 +01:00
Olof Kindgren
b516c10d72
Prepare for RF write on RF read request and optimize state FSM
2019-12-07 23:01:24 +01:00
Olof Kindgren
fc348f3a22
Fix wen delays in rf
2019-11-20 18:26:04 +01:00
Olof Kindgren
40000cbeb9
Fix IRQ
...
This contains a lot of fixes as IRQ support was broken on both
RTL and zephyr side
* Interrupts are now synced to instruction lifetimes
* Interrupts are disabled on traps and mie is pushed to mpie
* Zephyr applications regenerated from rewritten Zephyr port
* Timer is 32-bit to avoid wrapping around too often
* MEPC was not read properly from CSR storage
2019-11-19 11:06:50 +01:00
Olof Kindgren
8bc54a99ad
Move mcause generation to serv_csr
2019-09-26 23:36:02 +02:00
Olof Kindgren
0f767ad2d3
Gate mem_misalign in mem_if
2019-09-26 23:23:42 +02:00
Olof Kindgren
5b96b3a938
Simplify jump flag
2019-09-26 23:12:07 +02:00
Olof Kindgren
126937f16a
Rewrite RF and state machine
...
Big patch, but would take more work to split it up
2019-09-26 23:09:22 +02:00
Olof Kindgren
ca2beaf786
Pass rf_rreq through serv_state
2019-09-26 22:59:46 +02:00