soc.git
3 years agoMake output write enables independent of valid_o
Cesar Strauss [Fri, 1 Jan 2021 15:06:48 +0000 (12:06 -0300)]
Make output write enables independent of valid_o

Just combinatiorally decode the operation.
This is because MultiCompUnit depends on *_ok being kept valid.

3 years agoMove NOP test case earlier
Cesar Strauss [Fri, 1 Jan 2021 14:11:24 +0000 (11:11 -0300)]
Move NOP test case earlier

Better way to see alu_o_ok being disabled during the instruction.

3 years agoDisable data value output on NOP
Cesar Strauss [Fri, 1 Jan 2021 12:59:49 +0000 (09:59 -0300)]
Disable data value output on NOP

3 years agoAdd condition register (CR) output
Cesar Strauss [Fri, 1 Jan 2021 12:54:45 +0000 (09:54 -0300)]
Add condition register (CR) output

3 years agoImplement and test NOP in the test ALU
Cesar Strauss [Thu, 31 Dec 2020 21:41:18 +0000 (18:41 -0300)]
Implement and test NOP in the test ALU

Change the output port from Signal to Data, to allow for the output to be
masked-out.

Specify a masked-out output in the NOP test case.

3 years agoDon't use OP_NOP for zero-delay subtraction
Cesar Strauss [Thu, 31 Dec 2020 20:43:34 +0000 (17:43 -0300)]
Don't use OP_NOP for zero-delay subtraction

We are going to implement an actual NOP

3 years agoTest first input port being masked out
Cesar Strauss [Thu, 31 Dec 2020 20:31:41 +0000 (17:31 -0300)]
Test first input port being masked out

3 years agoSign extend the second input port
Cesar Strauss [Thu, 31 Dec 2020 20:28:05 +0000 (17:28 -0300)]
Sign extend the second input port

3 years agoTest masked-out second input port
Cesar Strauss [Thu, 31 Dec 2020 20:06:56 +0000 (17:06 -0300)]
Test masked-out second input port

Sign extend uses only the first port.

3 years agoAdd sign extend to the Test ALU
Cesar Strauss [Thu, 31 Dec 2020 19:51:03 +0000 (16:51 -0300)]
Add sign extend to the Test ALU

3 years agoShow rdmaskn and wrmask in GTKWave
Cesar Strauss [Thu, 31 Dec 2020 13:36:58 +0000 (10:36 -0300)]
Show rdmaskn and wrmask in GTKWave

3 years agoUse the increment operator
Cesar Strauss [Thu, 31 Dec 2020 13:08:41 +0000 (10:08 -0300)]
Use the increment operator

3 years agoAdd support for masked write operations
Cesar Strauss [Thu, 31 Dec 2020 13:04:05 +0000 (10:04 -0300)]
Add support for masked write operations

Note that the test ALU currently does not have any masked writes.

3 years agoClarify reason for holding rdmaskn valid during the entire cycle
Cesar Strauss [Thu, 31 Dec 2020 12:20:13 +0000 (12:20 +0000)]
Clarify reason for holding rdmaskn valid during the entire cycle

3 years agoRemove previous version of the CompUnit parallel unit test
Cesar Strauss [Thu, 31 Dec 2020 10:42:27 +0000 (10:42 +0000)]
Remove previous version of the CompUnit parallel unit test

It was too detailed, modeling properties which are better checked by
formal verification.

Other than that, the new version has reached feature parity, so the old
code can finally be removed.

3 years agoOnly hold the decoder signals for one cycle, along with issue_i
Cesar Strauss [Thu, 31 Dec 2020 10:22:04 +0000 (10:22 +0000)]
Only hold the decoder signals for one cycle, along with issue_i

The exception is rdmaskn, which is not latched, and must be held valid
for the entire instrucion cycle.

3 years agoTest the rdmaskn control signal
Cesar Strauss [Wed, 30 Dec 2020 21:00:38 +0000 (21:00 +0000)]
Test the rdmaskn control signal

The operation issuer now can drive the rdmaskn signals, and check
that the operand fetch on any masked ports is supressed.

3 years agoRemove left-over comments.
Cesar Strauss [Tue, 29 Dec 2020 11:26:29 +0000 (11:26 +0000)]
Remove left-over comments.

The debug signals were removed in a previous commit, but the comment
lines remained.

3 years agoadd CR1 to power_enums
Luke Kenneth Casson Leighton [Mon, 28 Dec 2020 20:30:34 +0000 (20:30 +0000)]
add CR1 to power_enums

3 years agoAdd support for CXXSim simulation
Cesar Strauss [Sun, 20 Dec 2020 14:18:34 +0000 (11:18 -0300)]
Add support for CXXSim simulation

3 years agoIgnore formal verification output in the source directory
Cesar Strauss [Sun, 13 Dec 2020 18:16:29 +0000 (15:16 -0300)]
Ignore formal verification output in the source directory

This is similarly done in other sister directories.

3 years agoAllow more test cases to be run with CXXSim
Cesar Strauss [Sun, 13 Dec 2020 18:03:59 +0000 (15:03 -0300)]
Allow more test cases to be run with CXXSim

3 years agoskip madd, not implemented
Luke Kenneth Casson Leighton [Sat, 12 Dec 2020 16:37:49 +0000 (16:37 +0000)]
skip madd, not implemented

3 years agoupdate submodules
Luke Kenneth Casson Leighton [Wed, 9 Dec 2020 18:13:28 +0000 (18:13 +0000)]
update submodules

3 years agoupdate submodules
Luke Kenneth Casson Leighton [Wed, 9 Dec 2020 18:10:48 +0000 (18:10 +0000)]
update submodules

3 years agoDisplay the instruction type as a vector on cxxsim
Cesar Strauss [Mon, 7 Dec 2020 21:44:40 +0000 (18:44 -0300)]
Display the instruction type as a vector on cxxsim

It doesn't support enums traces yet.

3 years agoattempt to split into two separate GPIO banks due to a coriolis2 compile error
Luke Kenneth Casson Leighton [Sun, 6 Dec 2020 19:35:57 +0000 (19:35 +0000)]
attempt to split into two separate GPIO banks due to a coriolis2 compile error

3 years agoWhitespace
Cesar Strauss [Sun, 6 Dec 2020 12:31:31 +0000 (09:31 -0300)]
Whitespace

3 years agoUpdate GTKWave documents to work with latest cxxsim
Cesar Strauss [Sun, 6 Dec 2020 11:34:35 +0000 (08:34 -0300)]
Update GTKWave documents to work with latest cxxsim

* Hierarchy begins at "top", just like pysim
* Avoid intermediate signals, that work differently on both
* Use the new "submodule" style in write_gtkw

3 years agoWrite a GTKWave document to investigate why the proof fails
Cesar Strauss [Sat, 5 Dec 2020 12:40:20 +0000 (09:40 -0300)]
Write a GTKWave document to investigate why the proof fails

3 years agoUse the DummyALU regspec and its corresponding OpSubset
Cesar Strauss [Sat, 5 Dec 2020 12:37:18 +0000 (09:37 -0300)]
Use the DummyALU regspec and its corresponding OpSubset

3 years agoput ls180 litex bus width back to 32 bit temporarily
Luke Kenneth Casson Leighton [Thu, 3 Dec 2020 16:52:09 +0000 (16:52 +0000)]
put ls180 litex bus width back to 32 bit temporarily

3 years agoargh issue with yosys ABC
Luke Kenneth Casson Leighton [Thu, 3 Dec 2020 15:51:56 +0000 (15:51 +0000)]
argh issue with yosys ABC

3 years agoadd 3 more 4k SRAMs, change WB bus width to 64 in ls180 litex
Luke Kenneth Casson Leighton [Thu, 3 Dec 2020 15:34:33 +0000 (15:34 +0000)]
add 3 more 4k SRAMs, change WB bus width to 64 in ls180 litex

3 years agoFix signal names: go/rel -> go_i/rel_o
Cesar Strauss [Sat, 28 Nov 2020 17:59:30 +0000 (14:59 -0300)]
Fix signal names: go/rel -> go_i/rel_o

4 years agoFix some typos and whitespace
Cesar Strauss [Tue, 24 Nov 2020 11:06:30 +0000 (08:06 -0300)]
Fix some typos and whitespace

4 years agoPort the DummyALU test case to the new parallel issuer
Cesar Strauss [Tue, 24 Nov 2020 10:53:14 +0000 (07:53 -0300)]
Port the DummyALU test case to the new parallel issuer

In the process, fix its OpSubset to be consistent with the one which is
really used by this ALU.

This required adapting the issuer, to cope with the absence of some fields
in the OpSubset.

4 years agoResults are now a list, so "expected" should follow suit
Cesar Strauss [Mon, 23 Nov 2020 10:59:42 +0000 (07:59 -0300)]
Results are now a list, so "expected" should follow suit

4 years agoParameterize the issuer on the number of operands and results
Cesar Strauss [Mon, 23 Nov 2020 10:40:04 +0000 (07:40 -0300)]
Parameterize the issuer on the number of operands and results

This allows reuse for the DummyALU, which has three operands, but is
otherwise similar to the ALU in terms of operations.

Also, the issuer now creates the producers and consumers.

4 years agoRefactor the ALU operation issuer into a class
Cesar Strauss [Sun, 22 Nov 2020 22:07:32 +0000 (19:07 -0300)]
Refactor the ALU operation issuer into a class

This allows sharing its code with other similar test cases.

4 years agoPort the ALU test case to the new parallel test style
Cesar Strauss [Sun, 22 Nov 2020 19:05:15 +0000 (16:05 -0300)]
Port the ALU test case to the new parallel test style

Mostly copy & paste from the Shifter, but using the operation spec
for the ALU.

The producers transaction count will fall behind on zero_a and imm_ok
executions, so these counters were added to the invariant check.

4 years agoAdd a GTKWave document to the ALU test case
Cesar Strauss [Sun, 22 Nov 2020 17:12:19 +0000 (14:12 -0300)]
Add a GTKWave document to the ALU test case

4 years agosimplify litex-core wishbone interfaces
Luke Kenneth Casson Leighton [Sat, 14 Nov 2020 18:41:29 +0000 (18:41 +0000)]
simplify litex-core wishbone interfaces

4 years agoSeparate input and output ports by color
Cesar Strauss [Thu, 19 Nov 2020 10:52:05 +0000 (07:52 -0300)]
Separate input and output ports by color

4 years agoExplain the test cases
Cesar Strauss [Thu, 19 Nov 2020 10:38:11 +0000 (07:38 -0300)]
Explain the test cases

4 years agoSeparate individual traces for each rel_o/go_i port
Cesar Strauss [Wed, 18 Nov 2020 10:59:15 +0000 (07:59 -0300)]
Separate individual traces for each rel_o/go_i port

Use the new "bit" attribute to select individual bits from the
wide rel_o/go_i signals.

4 years agotestcase for dcbz
Tobias Platen [Tue, 17 Nov 2020 19:20:16 +0000 (20:20 +0100)]
testcase for dcbz

4 years agoAdd a transaction counter to producers and consumers
Cesar Strauss [Mon, 16 Nov 2020 22:17:19 +0000 (19:17 -0300)]
Add a transaction counter to producers and consumers

By comparing counts, we assure no data is duplicated or dropped.

4 years agoadd class LoadStore1(PortInterfaceBase)
Tobias Platen [Mon, 16 Nov 2020 19:02:05 +0000 (20:02 +0100)]
add class LoadStore1(PortInterfaceBase)

4 years agoImplement ResultConsumer and port the Shifter unit tests to it.
Cesar Strauss [Sun, 15 Nov 2020 20:20:19 +0000 (17:20 -0300)]
Implement ResultConsumer and port the Shifter unit tests to it.

4 years agoMove the DUT driver to within the test case process
Cesar Strauss [Sat, 14 Nov 2020 22:29:05 +0000 (19:29 -0300)]
Move the DUT driver to within the test case process

This reduces verbosity, as parameters are replaced by local variables in
the external scope.
Another way would be to save the parameters in a class, and transform the
function into a method.

4 years agoFix and enable the regspec test for the Shifter
Cesar Strauss [Sat, 14 Nov 2020 18:15:44 +0000 (15:15 -0300)]
Fix and enable the regspec test for the Shifter

1) use correct names for the Shifter ports in the regspec
2) migrate to the new OperandProducer
3) add the test on __main__

4 years agosigh, direction wrong in IOtypes litex core
Luke Kenneth Casson Leighton [Sat, 14 Nov 2020 14:29:26 +0000 (14:29 +0000)]
sigh, direction wrong in IOtypes litex core

4 years agoreduce number of nc in ls180 to 24
Luke Kenneth Casson Leighton [Fri, 13 Nov 2020 17:51:13 +0000 (17:51 +0000)]
reduce number of nc in ls180 to 24

4 years agoreduce clkcsel ls180 width (2 pins), rename pll_18 signal
Luke Kenneth Casson Leighton [Fri, 13 Nov 2020 17:47:46 +0000 (17:47 +0000)]
reduce clkcsel ls180 width (2 pins), rename pll_18 signal

4 years agorename and add pll lock signal to ls180
Luke Kenneth Casson Leighton [Fri, 13 Nov 2020 16:10:42 +0000 (16:10 +0000)]
rename and add pll lock signal to ls180

4 years agorename ls180 litex pll_48 output to pll_18
Luke Kenneth Casson Leighton [Fri, 13 Nov 2020 16:04:15 +0000 (16:04 +0000)]
rename ls180 litex pll_48 output to pll_18

4 years agoadd enable/disable arguments (not ideal but it works) to issuer_verilog.py
Luke Kenneth Casson Leighton [Fri, 13 Nov 2020 15:48:21 +0000 (15:48 +0000)]
add enable/disable arguments (not ideal but it works) to issuer_verilog.py

4 years agoremove io_in/out now it is not needed for niolib
Luke Kenneth Casson Leighton [Fri, 13 Nov 2020 15:45:51 +0000 (15:45 +0000)]
remove io_in/out now it is not needed for niolib

4 years agodcbz and tlbie first test, still incomplete
Tobias Platen [Wed, 11 Nov 2020 18:51:41 +0000 (19:51 +0100)]
dcbz and tlbie first test, still incomplete

4 years agofu/mmu/test/test_pipe_caller.py test case for mfspr
Tobias Platen [Wed, 11 Nov 2020 18:09:52 +0000 (19:09 +0100)]
fu/mmu/test/test_pipe_caller.py test case for mfspr

4 years agoadd build commands to Makefile for versa ecp5
Luke Kenneth Casson Leighton [Tue, 10 Nov 2020 19:44:09 +0000 (19:44 +0000)]
add build commands to Makefile for versa ecp5

4 years agosubmodule update
Luke Kenneth Casson Leighton [Tue, 10 Nov 2020 19:37:49 +0000 (19:37 +0000)]
submodule update

4 years agoremove ClockSelect module, use DummyPLL
Luke Kenneth Casson Leighton [Tue, 10 Nov 2020 16:40:33 +0000 (16:40 +0000)]
remove ClockSelect module, use DummyPLL

4 years agoadd separate DummyPLL module, according to API discussed at
Luke Kenneth Casson Leighton [Tue, 10 Nov 2020 15:49:56 +0000 (15:49 +0000)]
add separate DummyPLL module, according to API discussed at
https://bugs.libre-soc.org/show_bug.cgi?id=155#c21
;

4 years agommu fsm testcase: add check_fsm_outputs based on function from soc/fu/div/test/helper.py
Tobias Platen [Sun, 8 Nov 2020 12:05:36 +0000 (13:05 +0100)]
mmu fsm testcase: add check_fsm_outputs based on function from soc/fu/div/test/helper.py

4 years agoMerge branch 'master' of ssh://git.libre-riscv.org:922/soc
Tobias Platen [Sun, 8 Nov 2020 09:31:11 +0000 (10:31 +0100)]
Merge branch 'master' of ssh://git.libre-riscv.org:922/soc

4 years agommu/fsm: test case for mtspr
Tobias Platen [Sun, 8 Nov 2020 09:30:08 +0000 (10:30 +0100)]
mmu/fsm: test case for mtspr

4 years agoupdate submodule
Luke Kenneth Casson Leighton [Sat, 7 Nov 2020 22:27:38 +0000 (22:27 +0000)]
update submodule

4 years agofixed a bug in src/soc/fu/mmu/fsm.py
Tobias Platen [Sat, 7 Nov 2020 14:43:07 +0000 (15:43 +0100)]
fixed a bug in src/soc/fu/mmu/fsm.py

4 years agosigh sorting out litex pin-connections to sdram
Luke Kenneth Casson Leighton [Fri, 6 Nov 2020 11:48:01 +0000 (11:48 +0000)]
sigh sorting out litex pin-connections to sdram

4 years agomove back to 3.3v on X3 VERSA ECP5 connector
Luke Kenneth Casson Leighton [Wed, 4 Nov 2020 19:10:28 +0000 (19:10 +0000)]
move back to 3.3v on X3 VERSA ECP5 connector

4 years agoMMU: begin test case for 'dcbz'
Tobias Platen [Wed, 4 Nov 2020 17:49:31 +0000 (18:49 +0100)]
MMU: begin test case for 'dcbz'

4 years agofix broken unittest after installing power-instruction-analyzer
Tobias Platen [Tue, 3 Nov 2020 18:48:08 +0000 (19:48 +0100)]
fix broken unittest after installing power-instruction-analyzer

4 years agoswap jtag pinorder to match ulx3s
Luke Kenneth Casson Leighton [Tue, 3 Nov 2020 13:53:41 +0000 (13:53 +0000)]
swap jtag pinorder to match ulx3s

4 years agochange LVCMOS level on versa ecp5 jtag to 2.5v
Luke Kenneth Casson Leighton [Tue, 3 Nov 2020 13:40:28 +0000 (13:40 +0000)]
change LVCMOS level on versa ecp5 jtag to 2.5v

4 years agoAdd a check for liveness.
Cesar Strauss [Sun, 1 Nov 2020 17:02:52 +0000 (14:02 -0300)]
Add a check for liveness.

There was already a check for the correctness of the results, but there
was no guarantee that any result would be produced at all.

4 years agoversa_ecp5.py add 4 arbitrarily assigned gpio pins to be used by
Cole Poirier [Fri, 30 Oct 2020 21:33:00 +0000 (14:33 -0700)]
versa_ecp5.py add 4 arbitrarily assigned gpio pins to be used by
Libre-SOC JTAG interface on ulx3s

4 years agoCheck that the read and write counters differ at most by one
Cesar Strauss [Sat, 31 Oct 2020 18:29:37 +0000 (15:29 -0300)]
Check that the read and write counters differ at most by one

This will assure there are no dropped work items.

4 years agoRemove stray comment
Cesar Strauss [Sat, 31 Oct 2020 13:46:00 +0000 (10:46 -0300)]
Remove stray comment

It was part of a code block that was removed.

4 years agoadd JTAG extension to versa_ecp5 then we can use it
Luke Kenneth Casson Leighton [Fri, 30 Oct 2020 18:47:59 +0000 (18:47 +0000)]
add JTAG extension to versa_ecp5 then we can use it

4 years agoImplement an operand producer that talks the rel_o/go_i handshake
Cesar Strauss [Wed, 28 Oct 2020 22:57:55 +0000 (19:57 -0300)]
Implement an operand producer that talks the rel_o/go_i handshake

It can be instantiated once for each operand port, working in parallel
with the main test-bench process.

4 years agosubmodule update
Luke Kenneth Casson Leighton [Sat, 24 Oct 2020 22:15:01 +0000 (23:15 +0100)]
submodule update

4 years agoCreate a GTKWave document for the test ALU unit tests
Cesar Strauss [Sat, 24 Oct 2020 17:47:16 +0000 (14:47 -0300)]
Create a GTKWave document for the test ALU unit tests

4 years agoadd query about cross-domain on the JTAG enable of WB
Luke Kenneth Casson Leighton [Thu, 22 Oct 2020 15:59:02 +0000 (16:59 +0100)]
add query about cross-domain on the JTAG enable of WB
https://bugs.libre-soc.org/show_bug.cgi?id=520

4 years agoadd detection and disable of Instruction Wishbone based on JTAG command
Luke Kenneth Casson Leighton [Thu, 22 Oct 2020 15:50:37 +0000 (16:50 +0100)]
add detection and disable of Instruction Wishbone based on JTAG command

4 years agoadd detection and disable of LoadStore Wishbone based on JTAG command
Luke Kenneth Casson Leighton [Thu, 22 Oct 2020 15:49:11 +0000 (16:49 +0100)]
add detection and disable of LoadStore Wishbone based on JTAG command

4 years agoadd JTAG enable/disable of wishbone to TestIssuer
Luke Kenneth Casson Leighton [Thu, 22 Oct 2020 15:47:23 +0000 (16:47 +0100)]
add JTAG enable/disable of wishbone to TestIssuer

4 years agoadd means to JTAG interface to enable/disable "stuff" currently just WB
Luke Kenneth Casson Leighton [Thu, 22 Oct 2020 13:13:11 +0000 (14:13 +0100)]
add means to JTAG interface to enable/disable "stuff"  currently just WB

4 years agoversa_ecp5 adds ability to build and load for ulx3s85f, fixes testgpio
Cole Poirier [Wed, 21 Oct 2020 21:26:10 +0000 (14:26 -0700)]
versa_ecp5 adds ability to build and load for ulx3s85f, fixes testgpio
feature

4 years agofix up asserts (check correct pads/cores)
Luke Kenneth Casson Leighton [Wed, 21 Oct 2020 16:47:15 +0000 (17:47 +0100)]
fix up asserts (check correct pads/cores)
https://bugs.libre-soc.org/show_bug.cgi?id=511#c12

4 years agos/alu/fsm/g
Tobias Platen [Tue, 20 Oct 2020 17:42:50 +0000 (19:42 +0200)]
s/alu/fsm/g

4 years agotest case for FSMMMUStage
Tobias Platen [Tue, 20 Oct 2020 16:41:39 +0000 (18:41 +0200)]
test case for FSMMMUStage

4 years agouse random.seed to generate repro cases of the two different failure
Cole Poirier [Sun, 18 Oct 2020 00:39:22 +0000 (17:39 -0700)]
use random.seed to generate repro cases of the two different failure
modes of test_icache()

4 years agoexperiment swapping dummy trap stage over to input
Luke Kenneth Casson Leighton [Fri, 16 Oct 2020 19:51:09 +0000 (20:51 +0100)]
experiment swapping dummy trap stage over to input

4 years agore-enable tests
Luke Kenneth Casson Leighton [Fri, 16 Oct 2020 18:29:16 +0000 (19:29 +0100)]
re-enable tests

4 years agomanually run coresync clock for test issuer
Luke Kenneth Casson Leighton [Fri, 16 Oct 2020 18:28:36 +0000 (19:28 +0100)]
manually run coresync clock for test issuer

4 years agoset defaults in pspec
Luke Kenneth Casson Leighton [Fri, 16 Oct 2020 18:26:05 +0000 (19:26 +0100)]
set defaults in pspec

4 years agoupdate submodule
Luke Kenneth Casson Leighton [Fri, 16 Oct 2020 18:14:50 +0000 (19:14 +0100)]
update submodule

4 years agoadd extra (test dummy stage in trap to see if combinatorial latency is reduced
Luke Kenneth Casson Leighton [Fri, 16 Oct 2020 18:09:40 +0000 (19:09 +0100)]
add extra (test dummy stage in trap to see if combinatorial latency is reduced