1
0
mirror of https://github.com/antonblanchard/microwatt.git synced 2026-03-02 01:40:18 +00:00
Commit Graph

1074 Commits

Author SHA1 Message Date
Anton Blanchard
e70d7f0a60 Make caches 1 way 2022-02-01 20:44:26 +11:00
Anton Blanchard
7da4977028 Disable FPU 2022-02-01 20:44:26 +11:00
Anton Blanchard
1383bbb8be Add GPIOs 2022-02-01 20:44:26 +11:00
Anton Blanchard
46a85cb274 Add asic alternate reset address 2022-02-01 20:44:26 +11:00
Anton Blanchard
4e9001ba19 Hook up JTAG to asic top level 2022-02-01 20:44:26 +11:00
Anton Blanchard
09c8b0332e Cut down hello_world to fit in 4kB 2022-02-01 20:44:26 +11:00
Anton Blanchard
f4a52fdc1f Add a script to post process the microwatt verilog for caravel 2022-02-01 20:44:26 +11:00
Anton Blanchard
125cd4bc97 Update PVR
Set a unique PVR for the caravel version of microwatt
2022-02-01 20:37:14 +11:00
Anton Blanchard
0f864ae8b9 Update JTAG TAP controller for Microwatt
Make a few changes to match what mw_debug expects:

- 6 byte instructions
- IDCODE at 001001
- microwatt debug at 000011

Also change IDCODE to be an IBM ID.

Signed-off-by: Anton Blanchard <anton@linux.ibm.com>
2022-02-01 20:37:14 +11:00
Anton Blanchard
fd9350c3b5 First pass at an external JTAG port
The verilator simulation interface uses the remote_bitbang
protocol from openocd. I have a simple implementation for
urjtag too.

Signed-off-by: Anton Blanchard <anton@linux.ibm.com>
2022-02-01 20:37:14 +11:00
Anton Blanchard
18503732d7 Add ASIC target 2022-02-01 20:37:14 +11:00
Anton Blanchard
5ac715d932 Fix multiplier behavioural 2022-02-01 20:34:09 +11:00
Anton Blanchard
537a0aac1d Add arrays for ASIC flow
Add VHDL wrappers and verilog behaviourals for the cache_ram,
register_file and main_bram arrays.

Signed-off-by: Anton Blanchard <anton@linux.ibm.com>
2022-02-01 20:12:06 +11:00
Anton Blanchard
ef641dcc28 Allow ALT_RESET_ADDRESS to be overridden
Signed-off-by: Anton Blanchard <anton@linux.ibm.com>
2022-02-01 20:12:06 +11:00
Michael Neuling
6ff3b2499c Merge pull request #342 from mkj/orangecrab-merge
Orangecrab working with litedram

Fixed up a few simple merge conflicts in the Makefile.
2022-01-18 13:27:27 +11:00
Michael Neuling
cdd661d844 Merge branch 'master' into orangecrab-merge 2022-01-18 12:03:46 +11:00
Michael Neuling
fda8879e2f Merge pull request #341 from mkj/progtools
orangecrab programming targets
2022-01-18 11:51:54 +11:00
Michael Neuling
ffbf2f9964 Merge pull request #340 from mkj/orangecrab-ghdl-plugin
Makefile: detect when ghdl is a yosys plugin
2022-01-18 11:50:22 +11:00
Matt Johnston
049f0549d8 orangecrab: Fix sdcard wishbone addressing
Orangecrab missed out on:

Make wishbone addresses be in units of doublewords or words
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Wed Sep 15 18:18:09 2021 +1000

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-17 12:55:14 +08:00
Matt Johnston
abc6a4f372 orangecrab: use litesdcard
Currently not working (tested in Linux)

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-17 12:55:14 +08:00
Matt Johnston
42959184dd litesdcard: add lattice, regenerate
Modifies litescard generate script to take a clock speed.

Regenerated verilog with latest litesdcard
e52c731 ("Bump year.")

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-17 12:55:14 +08:00
Matt Johnston
d794cc70b1 orangecrab: No BTC, LOG_LENGTH, dram NUM_LINES
Reduce litedram NUM_LINES 64->8
This allows us to meet timing. Can probably
be improved in future with better BRAM usage.

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-17 12:55:14 +08:00
Matt Johnston
a8d9203c5d orangecrab: Use litedram
Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-17 12:55:14 +08:00
Matt Johnston
57d4c4c117 orangecrab: set HAS_SHORT_MULT
It seems free, generated as a single MULT18X18D

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-17 12:55:14 +08:00
Matt Johnston
a9b467f43b orangecrab: add Orange Crab r0.2 target
top-orangecrab0.2 is a copy of top-arty with various changes.
USRMCLK is added for the SPI clock
ethernet is removed

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-17 12:55:14 +08:00
Matt Johnston
8901e84d8d litedram: Add orangecrab-85-0.2 target
Parameters are based on
https://github.com/gregdavill/OrangeCrab-test-sw/blob/main/hw/OrangeCrab-bitstream.py
and litex-boards orangecrab.py

rtt_nom and cmd_delay are overridden for OrangeCrab, we do the same here.

Generated with litedram and litex
62abf9c ("litedram_gen: Add block_until_ready port parameter to control blocking behaviour.")
add2746a ("tools/litex_cli: Rename wb to bus.")

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-14 09:36:03 +08:00
Matt Johnston
08021ae28e litedram: set Makefile -Werror
Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-14 08:47:44 +08:00
Matt Johnston
5a3cdc8b22 litedram: disable block_until_ready, regenerate
Recent litedram gets stuck at memtest unless block_until_ready=False.
(discussion in https://github.com/enjoy-digital/litedram/pull/292)

This change regenerates with latest litedram and litex
62abf9c ("litedram_gen: Add block_until_ready port parameter to control blocking behaviour.")
add2746a ("tools/litex_cli: Rename wb to bus.")

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-14 08:41:36 +08:00
Matt Johnston
5e90133b61 Makefile: add ecpprog targets
The 0x80000 offset is specific to the OrangeCrab bootloader.

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-13 13:28:28 +08:00
Matt Johnston
7761bf8b71 Makefile: Add DFU programming
Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-13 13:28:28 +08:00
Matt Johnston
2ec0d5fccd Makefile: detect when ghdl is a yosys plugin
oss-cad-suite builds it as a plugin, some other toolchains
have it built in.

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
2022-01-13 11:37:01 +08:00
Anton Blanchard
67164a6ffa Merge pull request #338 from shenki/yosys-read-verilog
Makefile: Use read_verilog with yosys
2022-01-09 08:08:48 +11:00
Joel Stanley
9ceb463957 Makefile: Use read_verilog with yosys
Yosys changed command line behaviour following the v0.12 release.  Work
around this by using read_verilog, which maintains the old behaviour.

This should work fine for current yosys and be compatible with
future releases.

See https://github.com/YosysHQ/yosys/issues/3109

Signed-off-by: Joel Stanley <joel@jms.id.au>
2021-12-21 12:44:12 +10:30
Michael Neuling
7fa7b45faa Merge pull request #337 from paulusmack/fixes
ECP5: Adjust PLL constants so the PLL lock indication works
2021-10-25 16:49:19 +11:00
Paul Mackerras
d458b5845c ECP5: Adjust PLL constants so the PLL lock indication works
At present, code (such as simple_random) which produces serial port
output during the first few milliseconds of operation produces garbled
output.  The reason is that the clock has not yet stabilized and is
running slow, resulting in the bit time of the serial characters being
too long.

The ECP5 data sheet says that the phase detector should be operated
between 10 and 400 MHz.  The current code operates it at 2MHz.
Consequently, the PLL lock indication doesn't work, i.e. it is always
zero.  The current code works around that by inverting it, i.e. taking
the "not locked" indication to mean "locked".

Instead, we now run it at 12MHz, chosen because the common external
clock inputs on ECP5 boards are 12MHz and 48MHz.  Normally this would
mean that the available system clock frequencies would be multiples of
12MHz, but this is a little inconvenient as we use 40MHz on the Orange
Crab v0.21 boards.  Instead, by using the secondary clock output for
feedback, we can have any divisor of the PLL frequency as the system
clock frequency.

The ECP5 data sheet says the PLL oscillator can run at 400 to 800
MHz.  Here we choose 480MHz since that allows us to generate 40MHz and
48MHz easily and is a multiple of 12MHz.

With this, the lock signal works correctly, and the inversion can be
removed.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2021-10-16 20:14:12 +11:00
Michael Neuling
8a030502a2 Merge pull request #336 from paulusmack/fixes
Makefile: Correct parameters for the Orange Crab 85F
2021-10-13 17:44:47 +11:00
Paul Mackerras
a5c9b3c412 Makefile: Add a target for the Orange Crab v0.21 with LFE5U-85F
The existing orange crab target is for an older board with a
LFE5UM5G-85F device.  Newer orange crab boards (v0.21) have a
LFE5U-85F device in the -8 speed grade, so make a new target for them
called ORANGE-CRAB-0.21.

Also add flags to ecppack to indicate that the bitstream should be
compressed and can be loaded at 38.8MHz.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2021-10-12 18:30:36 +11:00
Michael Neuling
9cbe1f4a17 Merge pull request #334 from antonblanchard/icbi-issue
Add a test for icbi and dcbz issues
2021-09-28 09:06:18 +10:00
Anton Blanchard
099862bee9 Merge pull request #335 from ozbenh/misc
Misc cleanups and icache fix
2021-09-28 06:18:59 +10:00
Benjamin Herrenschmidt
e675eba0df icache: req_laddr becomes req_raddr
Uses real_addr_t and only stores the real address bits

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2021-09-27 22:07:33 +10:00
Benjamin Herrenschmidt
5cfa65e836 Introduce addr_to_wb() and wb_to_addr() helpers
These convert addresses to/from wishbone addresses, and use them
in parts of the caches, in order to make the code a bit more readable.

Along the way, rename some functions in the caches to make it a bit
clearer what they operate on and fix a bug in the icache STOP_RELOAD state where
the wb address wasn't properly converted.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2021-09-27 22:04:35 +10:00
Benjamin Herrenschmidt
d745995207 Introduce real_addr_t and addr_to_real()
This moves REAL_ADDR_BITS out of the caches and defines a real_addr_t
type for a real address, along with a addr_to_real() conversion helper.

It makes the vhdl a bit more readable

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2021-09-27 22:04:35 +10:00
Anton Blanchard
2d142a6c01 tests/misc: Add a store/dcbz test
We have a bug where an store near a dcbz can cause the dcbz to only zero
8 bytes. Add a test case for this.

Signed-off-by: Anton Blanchard <anton@linux.ibm.com>
2021-09-27 15:30:41 +10:00
Anton Blanchard
00259458c7 tests/misc: Add an icbi test
We have a bug where an icbi can cause an instruction to execute twice.
Add a test case for this.

Signed-off-by: Anton Blanchard <anton@linux.ibm.com>
2021-09-27 15:30:41 +10:00
Anton Blanchard
13439c76ba Merge pull request #333 from ozbenh/wukong
Add support for  QMTech Wukong v2 board
2021-09-27 13:41:37 +10:00
Benjamin Herrenschmidt
d564672a82 Regenerate litedram and liteeth
Note: There are a few patches to upstream to fix an upstream breakage
of litedram standalone generator, and fix some issues with liteeth
in the way it's used on Wukong. All these have pending pull requests.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2021-09-25 18:18:32 +10:00
Benjamin Herrenschmidt
da0189af1e Add support for QMTech Wukong v2 board
For now only the V2 of the board (slightly different pinout)
and only the A100T variant. I also haven't added GPIOs or anything
else on the PMODs really.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2021-09-25 18:18:32 +10:00
Benjamin Herrenschmidt
621a0f6b28 fpga/clk_gen_plle2: Add support for 50Mhz->100Mhz
50Mhz clkin, 100Mhz sys_clk, as needed for Wukon v2

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2021-09-25 18:18:32 +10:00
Benjamin Herrenschmidt
4b1a413a2f Add support for more spansion flash
That's the one on the Wukong v2

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2021-09-25 18:18:32 +10:00
Anton Blanchard
c7579d74b0 Merge pull request #332 from paulusmack/fixes
Bug fixes
2021-09-25 15:15:24 +10:00