Commit Graph

8700 Commits

Author SHA1 Message Date
Robert Szczepanski cbd873a33e test: FifoSyncMacro: Use F4PGA instead of deprecated Symbiflow 2022-06-17 16:27:25 +02:00
Robert Szczepanski 839ca545a4 build: quicklogic: Use F4PGA instead of deprecated Symbiflow 2022-06-17 16:27:25 +02:00
Robert Szczepanski 2c0f59536c build: xilinx: Use F4PGA instead of deprecated Symbiflow 2022-06-17 16:27:25 +02:00
Florent Kermarrec 0941459061 integration/soc: Add initial AXI-full support.
Main bus can now be switched to AXI-full with --bus-standard=axi.
The interconnect will be AXI-Full (Using Alex Forenchich's verilog_axi
Interconnect and Crossbar) but ROM/SRAM will still be in AXI-Lite (Will
be switched to AXI-full in the future).

This gives a first working version that can be used for further improvements.

Note that the interconnect can also be selected by --bus-interconnect=shared or
crossbar.
2022-06-17 16:21:31 +02:00
Florent Kermarrec 8394e93742 interconnect/axi/axi_full: Add AXI Interconnect (Shared and Crossbar).
For now reusing Alex Forenchich's modules wrapped with LiteX.
2022-06-17 16:07:05 +02:00
Florent Kermarrec bc667c6456 interconnect/axi/axi_full/AXIInterface: Add name/bursting parameters.
To add compatibility with AXILiteInterface and allow dynamic selection.
2022-06-17 16:04:25 +02:00
Florent Kermarrec 333aadbf6e integration/soc/SoC: Switch to finalize and finalize submodule only at the end.
This avoid elaborating submodules before adding the final modules and gives more
flexibility.
2022-06-17 16:01:28 +02:00
Florent Kermarrec 4c0a943996 interconnect/axi: Create axi directory and split code by type/functionnality.
AXI code is now too large to be contained in a single file, splitting code by type/functionnality
will simplify future additions.
2022-06-16 18:53:12 +02:00
Florent Kermarrec c4e07e2a5b integration/soc: Allow Bus Interconnect to use either InterconnectShared or Crossbar and add --bus-interconnect command line parameter. 2022-06-16 17:47:13 +02:00
Florent Kermarrec 6942e3240c interconnect/axi/AXIDownConverter: Switch to AXI-Full (Inspired from AXIUpConverter). 2022-06-16 16:16:49 +02:00
Gabriel Somlo f9f3557bca bios/main: Wrap CONFIG_NO_BOOT around boot_sequence()
This eliminates a "defined but unused" warning on the
`boot_sequence()` function when `main.c` is compiled
with `#define CONFIG_NO_BOOT`.
2022-06-16 08:22:14 -04:00
Florent Kermarrec 50553a45ec integration/soc/add_adapter: Create data_width_convert/bus_standard_convert functions and improve code genericity.
This already cleanup/simplify code and will also allow eventual order changes in the conversions.
2022-06-16 11:53:47 +02:00
William D. Jones 3e10576fcd build/gowin: Fix bitstream copy to gateware directory. 2022-06-15 21:45:19 -04:00
Florent Kermarrec b6f4302e8e integration/soc/add_adapter: Add AXI2AXILite and AXI2Wishbone support. 2022-06-15 19:37:04 +02:00
Florent Kermarrec da5d9ecf9b interconnect/axi: Add AXIDownConverter (through AXI-Lite) and AXIConverter. 2022-06-15 19:34:47 +02:00
Florent Kermarrec ac800da43c cpus: Make use of new automatic AXI <-> AXI-Lite/Wishbone conversion. 2022-06-15 18:15:59 +02:00
Florent Kermarrec d7e599c04f integration/soc/add_adapter: Add AXI<->Wishbone and AXI<->AXI-Lite support.
Allow directly passing AXI interfaces to add_slave/add_master and thus simplify user code.
2022-06-15 17:58:39 +02:00
Florent Kermarrec f62ba0f66d integration/soc: Simplify add_config and use it for all config parameters. 2022-06-15 17:34:07 +02:00
Florent Kermarrec 1d7aa9c438 cpu/openc906: Switch to AXI-Lite instead of Wishbone and minor cleanup. 2022-06-15 16:51:50 +02:00
enjoy-digital eebb639c12
Merge pull request #1328 from Icenowy/c906
[WIP] soc/cores/cpu: add initial OpenC906 support
2022-06-15 11:23:14 +02:00
enjoy-digital 8fa9178716
Merge pull request #1326 from Technosystem-Labs/openocd_0_11
Updated OpenOCD stream for expr use
2022-06-15 11:10:02 +02:00
enjoy-digital a4de315772
Merge pull request #1329 from Icenowy/altpll-fix
Misc fixes to Altera PLL support
2022-06-15 10:52:24 +02:00
Florent Kermarrec d1a456a545 integration/export/_get_csr_addr: Add back parenthesis around CSR_BASE + X. 2022-06-14 15:03:18 +02:00
Icenowy Zheng 8ffabe3bcb soc/cores/cpu: add initial OpenC906 support
It's only boot tested in sim and build tested in Vivado now, and it
requires a FPGA > 100k LUT4 (XC7A100T currently does not fit).

The ISR code is based on Rocket one.

These Python code depends on a forked version of OpenC906 at [1].

[1] https://github.com/Icenowy/openc906/tree/fpga-optimization

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
2022-06-14 02:04:58 +08:00
Icenowy Zheng 6d11d1991b build/altera: Add derive_pll_clocks to SDC file
Quartus software wants a derive_pll_clock sentence in SDC file to enable
automatic PLL clock derivation, and by test this sentence is harmless
even when no PLL exists.

Add this sentence to to the generated SDC file.

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
2022-06-13 22:51:54 +08:00
Icenowy Zheng 58f9a79cf3 cores/clock/intel_common: fix N factor not get passed to ALTPLL primitive
The N factor is currently ignored when creating ALTPLL instance.

As Quartus will internally decide N based on all dividers, just multiply
N to all clock outputs' individual divider.

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
2022-06-13 22:51:20 +08:00
Florent Kermarrec 49d0463394 integration/export/csr: Allow disabling CSR_BASE #define/reuse when not wanted.
Reuse of external defined CSR_BASE has been added for some use-cases, allowing more
flexilibity but also complicating direct read of base addresses for users in csr.h.


with_csr_base_define parameter has been added, allowing disabling CSR_BASE #define/reuse
when set to False.
2022-06-09 16:39:29 +02:00
Florent Kermarrec 8ccfc96b1a build/osfpga: Fix device support. 2022-06-08 18:25:50 +02:00
Mikołaj Sowiński 59ca268de9 Updated OpenOCD stream for expr use deprecation in v0.11 2022-06-08 15:07:58 +02:00
Florent Kermarrec eeed11edea build/osfpga: Remove .init workaround since fixed in toolchain. 2022-06-07 12:34:42 +02:00
enjoy-digital 24e483026d
Merge pull request #1325 from AEW2015/litex_dev
adding JTAG support for the xcau, Xilinx Artix UltraScale+
2022-06-07 12:11:57 +02:00
Andrew E Wilson 9691d205b7 adding JTAG support for the xcau, Xilinx Artix UltraScale+ 2022-06-07 00:45:27 -06:00
enjoy-digital 50613f74c0
Merge pull request #1323 from jevinskie/jev/feat/intel-clocking-find-best-config
IntelClocking: Brute-force find the best PLL config.
2022-06-06 21:58:49 +02:00
enjoy-digital d1d0f70b2e
Merge pull request #1324 from jevinskie/jev/bug/quartus-build-script-win32-fix
Quartus: Remove bashism from win32 bat script and add shebang on Linux
2022-06-06 21:56:57 +02:00
Jevin Sweval ace1314e02 Quartus: Remove bashism from win32 bat script and add shebang on Linux 2022-06-06 11:32:36 -07:00
Jevin Sweval fa8d31b101 IntelClocking: Brute-force find the best PLL config. 2022-06-06 11:13:52 -07:00
Florent Kermarrec d537e30c5a bios/main: Add CONFIG_NO_BOOT support to allow disabling Boot sequence and minor cleanups. 2022-06-06 18:28:39 +02:00
Dolu1990 c299a82968
Merge pull request #1321 from zeldin/vexriscv_crt_fix_2
cpu/vexriscv: Redo csr instruction fix
2022-06-06 11:41:11 +02:00
Marcus Comstedt 91d79ae1da cpu/vexriscv: Redo csr instruction fix
Instead of enabling the zicsr extension in crt0.S, change -march to
specify that VexRISCV implements version 2.0 of I, rather than the
latest (2.1).  In 2.0 the csr instructions were still part of I.
This approach has two advantages:

* It is compatible with older versions of binutils, since they do not
  need to know about the new zicsr extension

* By modifying the -march in CFLAGS, csr instructions can be used in any
  code (for example by the inline functions in irq.h), not just in crt0.S.
2022-06-04 13:59:51 +02:00
Florent Kermarrec 3f8cafeb58 test/test_cpu: Disable cva5 and enable marocchino/mor1kx. 2022-06-03 17:14:52 +02:00
Florent Kermarrec c0fc342823 test/test_cpu: Simplify using subTest/lists, test more RISC-V CPUs and comments for untested CPUs.
Also use --opt-level=O0 to reduce compilation time (execution is a bit slower but since we are only
executing the BIOS here, total test time is still reduced).
2022-06-03 16:16:21 +02:00
Florent Kermarrec eab58ff0e9 software/common.mak: Remove GCC_PATH introduced by #1279 since create lots of warning with regular toolchains. 2022-06-03 15:11:01 +02:00
Florent Kermarrec 481857ad0a bios/boot: Disaboe netboot_from_bin when no MAIN_RAM. 2022-06-03 14:53:15 +02:00
Florent Kermarrec 5c493af573 tools/litex_sim: Update/Fix --with-ethernet. 2022-06-03 14:52:48 +02:00
Florent Kermarrec 3ab7eaa5f7 software/common: Disable LTO since does not seems to work in all cases and cause random issues.
LTO will have to be properly tested before being enabled.
2022-06-03 14:42:04 +02:00
Florent Kermarrec b88bcd8e87 litex_setup: Bump RISC-V GCC toolchain to 10.1. 2022-06-03 14:34:01 +02:00
Florent Kermarrec e0a549f8ea integration/export: Disable riscv_zicsr workaround for now since does not seems working. 2022-06-03 13:31:59 +02:00
Florent Kermarrec 3acf22ff6f cores/clock/gowin_gw2a: Fix copyrights. 2022-06-03 12:04:11 +02:00
Florent Kermarrec 67b415f61c cores/clock: Add gowin_gw2a (Reusing GW1NPLL with specific vco/pfd_freq_ranges). 2022-06-03 12:01:08 +02:00
Florent Kermarrec f0ea2cb0fa clock/gowin_gw1n: Add get_vco/pfd_freq_range methods and switch to it. 2022-06-03 11:53:55 +02:00