Luke Kenneth Casson Leighton [Mon, 28 Feb 2022 17:43:39 +0000 (17:43 +0000)]
attempting to introduce an extra few clock cycles delay on power-up
this may help with initialisation of I-Cache SRAM which is combinatorial.
maybe
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 21:23:12 +0000 (21:23 +0000)]
for lulz make I-Cache possible to set to 32-bit (XLEN=32)
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 19:50:33 +0000 (19:50 +0000)]
bit_length is 1 more than needed: subtract 1 from XLEN first
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 19:34:05 +0000 (19:34 +0000)]
fix up shift_rot test_pipe_caller to new regspeckls style
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 19:25:54 +0000 (19:25 +0000)]
convert shift_rot pipeline to XLEN=32/64
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 19:16:35 +0000 (19:16 +0000)]
fix up Logical pipeline to produce HDL with XLEN=32
fix Logical test_pipe_caller.py to use new regspeckls style
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 18:48:28 +0000 (18:48 +0000)]
whoops ALU common output target must be XLEN-bit,
cannot set to length of output (o) using Signal.like
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 18:41:43 +0000 (18:41 +0000)]
set up dummy parent_pspec to pass XLEN=64 in
ALU test_pipe_spec.py
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 18:37:37 +0000 (18:37 +0000)]
start on converting MUL and DIV pipelines to XLEN
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 18:17:08 +0000 (18:17 +0000)]
convert from public static functions/properties for regspecs
to member functions to obtain regspecs
this allows pspec (containing XLEN) to be passed to the regspecs,
which in turn allows them to be dynamically set by issuer_verilog.py
and unit tests
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 18:09:13 +0000 (18:09 +0000)]
fix ALU with XLEN=32, carry and overflow
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 18:01:54 +0000 (18:01 +0000)]
use XLEN in Function Units (starting with ALU)
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 17:31:51 +0000 (17:31 +0000)]
add XLEN to issuer_verilog.py defaults to 64
Luke Kenneth Casson Leighton [Sun, 27 Feb 2022 17:17:07 +0000 (17:17 +0000)]
add XLEN option to regfiles via pspec
Jacob Lifshay [Thu, 24 Feb 2022 03:33:13 +0000 (19:33 -0800)]
add running instructions
Jacob Lifshay [Thu, 24 Feb 2022 03:28:02 +0000 (19:28 -0800)]
add formal proof for shift/rot o.ok
Jacob Lifshay [Thu, 24 Feb 2022 03:16:17 +0000 (19:16 -0800)]
clean up code
Jacob Lifshay [Thu, 24 Feb 2022 03:12:49 +0000 (19:12 -0800)]
add formal proof for OP_RLCR
Jacob Lifshay [Thu, 24 Feb 2022 03:01:49 +0000 (19:01 -0800)]
add formal proof for OP_RLCL
Jacob Lifshay [Thu, 24 Feb 2022 02:40:48 +0000 (18:40 -0800)]
add formal proof for OP_RLC
Luke Kenneth Casson Leighton [Wed, 23 Feb 2022 17:17:50 +0000 (17:17 +0000)]
forgot to pass cix (cache-inhibited) through to LD/ST which was
causing D-Cache to make too many read/writes and overrun wishbone
bus addressing on peripherals.
D-Cache always (for non-cache-inhibited) makes 8 64-bit requests:
if a memory-mapped peripheral has only say 3 32-bit CSRs then the
additional requests beyond the range of the peripheral will cause
a permanent lock-up
Jacob Lifshay [Tue, 22 Feb 2022 09:33:16 +0000 (01:33 -0800)]
speed up shift/rot formal proof by running stuff in parallel
it now runs in about 1m30s in `pytest -n auto <file>.py`
also start work on rewriting proofs to hopefully work better, all
of grev, ternlog, extswsli, shl, and shr are completed.
Luke Kenneth Casson Leighton [Mon, 21 Feb 2022 00:26:14 +0000 (00:26 +0000)]
again reduce combinatorial chains, similar to Trap pipeline,
introduce dummy passthrough stage in Branch pipeline
Luke Kenneth Casson Leighton [Sun, 20 Feb 2022 23:58:58 +0000 (23:58 +0000)]
add syn_ramstyle "block_ram" attributes and reduce i/d-cache sizes again
Luke Kenneth Casson Leighton [Sun, 20 Feb 2022 23:51:32 +0000 (23:51 +0000)]
same as shiftrot, split out separate pipelines for logical
stages in order to meet FPGA timing
Luke Kenneth Casson Leighton [Sun, 20 Feb 2022 23:38:13 +0000 (23:38 +0000)]
put LDST go-store on a 1-clock delay to help with combinatorial chains
Luke Kenneth Casson Leighton [Sun, 20 Feb 2022 23:28:50 +0000 (23:28 +0000)]
name core_stop and terminated_o synchronous to potentially help
cut down on combinatorial chains
Luke Kenneth Casson Leighton [Sun, 20 Feb 2022 22:20:21 +0000 (22:20 +0000)]
nope, it's perfectly fine
Revert "weird exception, oe not found in the shiftrot input record"
This reverts commit
264cc7fd7d7547e1e19424b8f8fd0fbfea29cec5.
Luke Kenneth Casson Leighton [Sun, 20 Feb 2022 22:17:18 +0000 (22:17 +0000)]
weird exception, oe not found in the shiftrot input record
Revert "separate out shiftrot stages due to size of main stage being so large"
This reverts commit
87d6b84e96fb62cda16cc9f335e34fe15ad6cd97.
Luke Kenneth Casson Leighton [Sun, 20 Feb 2022 22:09:42 +0000 (22:09 +0000)]
separate out shiftrot stages due to size of main stage being so large
Luke Kenneth Casson Leighton [Fri, 18 Feb 2022 20:50:22 +0000 (20:50 +0000)]
add blockram style to regfile Memory
Luke Kenneth Casson Leighton [Fri, 18 Feb 2022 20:49:36 +0000 (20:49 +0000)]
use block_ram attribute for FPGA synthesis
Luke Kenneth Casson Leighton [Fri, 18 Feb 2022 19:42:44 +0000 (19:42 +0000)]
reduce number of d-cache lines in microwatt fpga mode
Luke Kenneth Casson Leighton [Fri, 18 Feb 2022 19:41:42 +0000 (19:41 +0000)]
couple of adjustments to reduce gate count in i/d-cache
Luke Kenneth Casson Leighton [Fri, 18 Feb 2022 19:41:23 +0000 (19:41 +0000)]
add SDRAM Configuration Record
Luke Kenneth Casson Leighton [Fri, 18 Feb 2022 11:53:06 +0000 (11:53 +0000)]
reduce TLB set size from 64 to 16 to get FPGA resource utilisation down
Luke Kenneth Casson Leighton [Fri, 18 Feb 2022 11:41:29 +0000 (11:41 +0000)]
drastically reduce I-Cache size in microwatt-compat mode
should really be called "small FPGA mode" or something
Luke Kenneth Casson Leighton [Fri, 18 Feb 2022 11:36:19 +0000 (11:36 +0000)]
parameterise I-Cache similar to D-Cache. lots of "self."
all over the place. yuk.
Jacob Lifshay [Fri, 18 Feb 2022 06:01:41 +0000 (22:01 -0800)]
add grev
Luke Kenneth Casson Leighton [Thu, 17 Feb 2022 17:09:21 +0000 (17:09 +0000)]
add opencores SDRAM verilog wrapper
Luke Kenneth Casson Leighton [Wed, 16 Feb 2022 16:18:05 +0000 (16:18 +0000)]
oof. big update to DCache to accept config parameters
Luke Kenneth Casson Leighton [Wed, 16 Feb 2022 16:17:22 +0000 (16:17 +0000)]
connect UART16550 pins if given
Luke Kenneth Casson Leighton [Tue, 15 Feb 2022 20:07:35 +0000 (20:07 +0000)]
for *write* the counter-address on downconvert was correct
but for *read* it has to be pre-advanced (if that makes any sense)
Luke Kenneth Casson Leighton [Tue, 15 Feb 2022 19:35:14 +0000 (19:35 +0000)]
add wishbone downconvert "skip" of slave sel so that action
is not taken
Luke Kenneth Casson Leighton [Tue, 15 Feb 2022 19:24:37 +0000 (19:24 +0000)]
add SysCon reg_info, has uart and has large SYSCON
Luke Kenneth Casson Leighton [Tue, 15 Feb 2022 19:20:36 +0000 (19:20 +0000)]
sigh, stall was not working but actually turns out that
the downconvert counter was not being set properly (one cycle late)
Luke Kenneth Casson Leighton [Tue, 15 Feb 2022 15:28:48 +0000 (15:28 +0000)]
add option to specify UART16550 width (32/8)
Luke Kenneth Casson Leighton [Tue, 15 Feb 2022 13:51:53 +0000 (13:51 +0000)]
add beginnings of syscon bus peripheral
Luke Kenneth Casson Leighton [Tue, 15 Feb 2022 11:42:26 +0000 (11:42 +0000)]
update comments
Luke Kenneth Casson Leighton [Tue, 15 Feb 2022 01:35:06 +0000 (01:35 +0000)]
resolve WBDownConvert ack issues when stall is active
Luke Kenneth Casson Leighton [Mon, 14 Feb 2022 14:22:48 +0000 (14:22 +0000)]
strip first 3 bits of WB address from microwatt d/i-bus, bug in microwatt
Luke Kenneth Casson Leighton [Mon, 14 Feb 2022 14:22:14 +0000 (14:22 +0000)]
slave sends stall signal, master receives, in
WBDownConvert
Luke Kenneth Casson Leighton [Mon, 14 Feb 2022 14:02:59 +0000 (14:02 +0000)]
sort out ExternalCore signal names
Luke Kenneth Casson Leighton [Mon, 14 Feb 2022 14:02:40 +0000 (14:02 +0000)]
add wishbone slave signal to downconvert if present
Luke Kenneth Casson Leighton [Mon, 14 Feb 2022 13:08:56 +0000 (13:08 +0000)]
add external core verilog wrapper, ironically around Libre-SOC
(as well as Microwatt)
Luke Kenneth Casson Leighton [Sun, 13 Feb 2022 14:24:58 +0000 (14:24 +0000)]
bugfixing for ls2 imports of uart16550
Luke Kenneth Casson Leighton [Thu, 10 Feb 2022 18:06:20 +0000 (18:06 +0000)]
Revert "remove dummy trap pipeline"
This reverts commit
de3765400532be229ed4dd8a1d9fdcf1b4bca0ef.
Luke Kenneth Casson Leighton [Thu, 10 Feb 2022 18:06:10 +0000 (18:06 +0000)]
Andrey Miroshnikov [Thu, 10 Feb 2022 15:50:20 +0000 (15:50 +0000)]
Added optional reverse arg to send TDI data MSB-first
Luke Kenneth Casson Leighton [Wed, 9 Feb 2022 12:22:37 +0000 (12:22 +0000)]
add opencores uart16550 instance wrapper
Tobias Platen [Tue, 1 Feb 2022 18:13:33 +0000 (18:13 +0000)]
correct path for make target microwatt_external_core
Luke Kenneth Casson Leighton [Mon, 31 Jan 2022 20:38:45 +0000 (20:38 +0000)]
fix bug in itlb_valid SRLatch set/reset, a bit weird but it works
Luke Kenneth Casson Leighton [Mon, 31 Jan 2022 16:09:12 +0000 (16:09 +0000)]
whoops tlb_valids in ICache is a combinatorial-get/set
set SRLatch sync=False
Luke Kenneth Casson Leighton [Mon, 31 Jan 2022 15:57:56 +0000 (15:57 +0000)]
convert TLBValidArray in ICache to SRLatch
Luke Kenneth Casson Leighton [Mon, 31 Jan 2022 15:47:06 +0000 (15:47 +0000)]
add microwatt external core build target to Makefile
Luke Kenneth Casson Leighton [Mon, 31 Jan 2022 15:29:44 +0000 (15:29 +0000)]
use an SRLatch for cache_valids, at least it reduces graphviz size
Luke Kenneth Casson Leighton [Mon, 31 Jan 2022 15:06:56 +0000 (15:06 +0000)]
use Memory for cache tags in dcache
Luke Kenneth Casson Leighton [Mon, 31 Jan 2022 15:06:36 +0000 (15:06 +0000)]
use Memory for cache_tags in icache
Luke Kenneth Casson Leighton [Mon, 31 Jan 2022 15:05:37 +0000 (15:05 +0000)]
doh
Luke Kenneth Casson Leighton [Mon, 31 Jan 2022 15:02:37 +0000 (15:02 +0000)]
remove dummy trap pipeline
Luke Kenneth Casson Leighton [Mon, 31 Jan 2022 14:59:45 +0000 (14:59 +0000)]
remove combinatorial loop from MultiCompUnit
actually not a loop due to an SRLatch but synth tools still think it is
Luke Kenneth Casson Leighton [Sun, 30 Jan 2022 22:18:26 +0000 (22:18 +0000)]
break out cache_tags and cache_valids (again) this time in dcache
Luke Kenneth Casson Leighton [Sun, 30 Jan 2022 22:08:38 +0000 (22:08 +0000)]
remove CacheTagArray in icache.py
Luke Kenneth Casson Leighton [Sun, 30 Jan 2022 22:03:24 +0000 (22:03 +0000)]
create Memory for Cache Tags in I-Cache
another huge reduction in number of LUT4s, uses (again) a
combinatorial-read sync-write
Luke Kenneth Casson Leighton [Sun, 30 Jan 2022 21:30:34 +0000 (21:30 +0000)]
remove unneeded parameter
Luke Kenneth Casson Leighton [Sun, 30 Jan 2022 21:28:52 +0000 (21:28 +0000)]
add Array of CacheValids back in, so as to reduce LUT4 usage
Luke Kenneth Casson Leighton [Sun, 30 Jan 2022 21:11:09 +0000 (21:11 +0000)]
tagset is a local Signal in ICache
Luke Kenneth Casson Leighton [Sun, 30 Jan 2022 21:10:55 +0000 (21:10 +0000)]
identify combinatorial loop signals in MultiCompUnit, TODO resolve
Luke Kenneth Casson Leighton [Sun, 30 Jan 2022 18:16:37 +0000 (18:16 +0000)]
use nmigen Memory in I-Cache for TLB Lookups
surprisingly this makes the Libre-SOC core *50% faster* than microwatt
when running under verilator, despite only being a FSM
Luke Kenneth Casson Leighton [Sun, 30 Jan 2022 17:49:17 +0000 (17:49 +0000)]
put itlb_valid back, ready for conversion to Memory, in ICache
Luke Kenneth Casson Leighton [Sun, 30 Jan 2022 16:51:41 +0000 (16:51 +0000)]
convert CacheRAM to Memory, acts much faster now
Luke Kenneth Casson Leighton [Sat, 29 Jan 2022 16:43:56 +0000 (16:43 +0000)]
explanatory comment when page hit is the same for stores
Luke Kenneth Casson Leighton [Sat, 29 Jan 2022 14:32:23 +0000 (14:32 +0000)]
use right offset in dcache wb address
happened to be the same value but best to be safe, eh?
Luke Kenneth Casson Leighton [Sat, 29 Jan 2022 13:48:19 +0000 (13:48 +0000)]
re-examining dcache.vhdl, still did not get the store-page
address quite right
Luke Kenneth Casson Leighton [Sat, 29 Jan 2022 10:17:42 +0000 (10:17 +0000)]
bug in dcache.py where when two stores occur in the same real page
the address is corrupted.
Luke Kenneth Casson Leighton [Fri, 28 Jan 2022 19:33:13 +0000 (19:33 +0000)]
in LoadStore1 capture the address for misaligned dual ld/sts in
a different way.
something very strange going on with misaligned stores: the address
is advancing far too far under certain circumstances (by 128) which
could just be an MMU / PTE lookup to a different table.
Luke Kenneth Casson Leighton [Fri, 28 Jan 2022 03:19:40 +0000 (03:19 +0000)]
sort out misaligned store in LoadStore1
Luke Kenneth Casson Leighton [Thu, 27 Jan 2022 10:49:14 +0000 (10:49 +0000)]
for second aligned request truncate address to nearest dword
this ensures that DAR gets set correctly if a pagefault 0x300 occurs
Luke Kenneth Casson Leighton [Tue, 25 Jan 2022 00:43:56 +0000 (00:43 +0000)]
add license and copyright header to dcache.py,
extracted authors from git history for the file, but made sure to
credit the original dcache.vhdl as being from microwatt and its
license being CC4
Luke Kenneth Casson Leighton [Tue, 25 Jan 2022 00:42:44 +0000 (00:42 +0000)]
LDSTException now passing bits of SRR1 around to the Trap Pipeline
the actual (former) value of SRR1 is not what is supposed to be used:
the use of the variable "srr1" is a moniker from microwatt
Luke Kenneth Casson Leighton [Mon, 24 Jan 2022 21:23:49 +0000 (21:23 +0000)]
comments
Luke Kenneth Casson Leighton [Mon, 24 Jan 2022 14:11:07 +0000 (14:11 +0000)]
hmm there seems to have been an error in DTLB Read,
where if a write *and* a read occurred at the same time, the old
DTLB-valid entry was given. add similar "forwarding" that is used in
Memory. DTLB-valid is actually a register not a Memory, where the
DTLB way/tags are a Memory, hence the bug
Luke Kenneth Casson Leighton [Mon, 24 Jan 2022 11:58:03 +0000 (11:58 +0000)]
bool test on traptype to
ensure two conditions are properly ANDed
also copy correct bits of SRR over, but there is an additional
bug here that needs to be fixed: Exception class needs to pass over
the bottom 16 LSBs of SRR1
Luke Kenneth Casson Leighton [Sun, 23 Jan 2022 11:05:23 +0000 (11:05 +0000)]
looked in soc.vhdl in microwatt and the parameters are 64 cache
lines. this would not be important if it was not explicitly in
the linux-5.7 device-tree file
Luke Kenneth Casson Leighton [Sun, 23 Jan 2022 11:04:25 +0000 (11:04 +0000)]
add debug output of whether stall occurs on dcache
Luke Kenneth Casson Leighton [Sat, 22 Jan 2022 15:19:00 +0000 (15:19 +0000)]
missed setting of r0_full to zero in dcache. not encountered as
a bug but would have done in future
Luke Kenneth Casson Leighton [Fri, 21 Jan 2022 19:26:07 +0000 (19:26 +0000)]
skip ilang data in branch test_pipe_caller.py
Luke Kenneth Casson Leighton [Fri, 21 Jan 2022 19:21:57 +0000 (19:21 +0000)]
attempting to get compunit and test_pipe_caller unit tests
up and running again.
grrr
Luke Kenneth Casson Leighton [Fri, 21 Jan 2022 00:12:39 +0000 (00:12 +0000)]
sigh, monitor DEC/TB StateRegs "properly" so that the Issuer DEC/TB FSM
does not end up in a race condition with the SPR pipeline for writing
to DEC or TB
Luke Kenneth Casson Leighton [Fri, 21 Jan 2022 00:11:53 +0000 (00:11 +0000)]
whoops fix bug in setting of DEC/TB (State) in test_core.py