Commit Graph

8661 Commits

Author SHA1 Message Date
Thomas Watson 093c4fd166 tools/litex-term: completely eliminate multiprocessing
Like commit 460fada3ac,
multiprocessing breaks on Windows and macOS due to pickle failures.
2023-02-14 19:25:23 -06:00
Florent Kermarrec 106b2caaec soc/cores/xadc: Fix refactoring issue (Zync -> Zynq :)) 2023-02-13 15:43:43 +01:00
Florent Kermarrec 931b44ecd6 build/sim: Fix VIDEO flag generation. 2023-02-13 10:06:43 +01:00
Florent Kermarrec 44db314ddd integration/soc/add_video_framebuffer: Add video_framebuffer region definition in linker. 2023-02-10 19:48:36 +01:00
Florent Kermarrec 3de5f20496 build/sim/litex_sim: Only compiles video module when used.
Avoid additional SDL2 dependency for regular simulations.
2023-02-10 19:48:31 +01:00
Victor Suarez Rovere 1f08fe3286 build/sim/litex_sim: Add initial video module/support in simulation.
Simulation with framebuffer:
litex_sim --with-sdram --with-video-framebuffer

Simulation with video terminal:
litex_sim --with-sdram --with-video-terminal
2023-02-10 19:48:24 +01:00
Dolu1990 42f46c9c95 cpu/NaxRiscv fix nan-boxing on peripheral load 2023-02-10 17:21:53 +01:00
Florent Kermarrec 53e7492bd4 soc/cores/icap: Add clk_divider parameter and initial ICAPE3 support (Throught primitive parameters).
Compiles on Ultrascale but still needs to be tested.
2023-02-10 16:19:42 +01:00
Dolu1990 34422d2d91 cpu/NaxRiscv crt0.S now enable the FPU 2023-02-10 15:57:22 +01:00
Florent Kermarrec ed48fb4d5d tools/litex_client: Add --binary argument to display values in binary.
Useful in some case to avoid decoding hexa manually.
2023-02-10 15:08:01 +01:00
Florent Kermarrec 5df1dacd18 cores/usb_ohci: Do minor review cleanups/changes. 2023-02-10 14:41:36 +01:00
enjoy-digital d68bffb26e
Merge pull request #1597 from machdyne/master
support multiple usb_ohci ports
2023-02-10 14:38:16 +01:00
inc 211dfb2168 support multiple usb_ohci ports 2023-02-10 14:00:05 +01:00
Florent Kermarrec 2205a0c2c3 cores/xadc: Fix refactor issue. 2023-02-10 13:09:36 +01:00
Florent Kermarrec 408a68ba79 cores/dna: Add initial Ultrascale support. 2023-02-10 13:09:32 +01:00
Florent Kermarrec b2053b7c52 cores/dna: Reduce default clk_divider to 2.
To fix https://github.com/enjoy-digital/litex/issues/1516.
2023-02-10 13:09:27 +01:00
Florent Kermarrec 838719c276 cores/xadc: Re-arrange and simplify code a bit. 2023-02-10 13:09:22 +01:00
Florent Kermarrec 8b36649c89 cores/xadc: Re-arrange and simplify code a bit. 2023-02-10 13:09:19 +01:00
Dolu1990 92032b446c
cpu/NaxRiscv fix with_fpu typo 2023-02-10 10:07:50 +01:00
enjoy-digital ac9bb70245
Merge pull request #1595 from suarezvictor/fpu
add --with-fpu flag to Naxriscv CPU
2023-02-09 17:51:46 +01:00
Victor Suarez Rovere 2e5217352f add --with-fpu flag to Naxriscv CPU 2023-02-09 13:26:45 -03:00
enjoy-digital d256a5e3a8
Merge pull request #1594 from trabucayre/litex_setup_bashrc
litex_setup: explain how to update permanently PATH env variable (#1589)
2023-02-08 19:27:47 +01:00
Gwenhael Goavec-Merou 64a1ecda6e litex_setup: explain how to update permanently PATH env variable (#1589) 2023-02-08 18:59:46 +01:00
Florent Kermarrec c054dc13d9 bios/cmds/cmd_litedram: Fix sdram_spd_handler compilation condition. 2023-02-08 10:05:55 +01:00
Florent Kermarrec a56a178768 software/liblitesdcard: Add missing SPI_DONE mask on read status. 2023-02-06 13:09:45 +01:00
Florent Kermarrec 61bbfa3eaa cores/spi/spi_master: Return raw/aligned mode on status register. 2023-02-06 13:08:53 +01:00
Florent Kermarrec a6d9955c9d software/liblitedram/accessors: Fix conditions for write_dq_bitslip functions compilations.
Fixes #1583.
2023-01-30 09:04:45 +01:00
Florent Kermarrec 8ad728cd22 software/liblitedram/accessors: Add seperators to improve readability. 2023-01-30 09:00:23 +01:00
enjoy-digital fb94cb0551
Merge pull request #1512 from antmicro/liblitedram_cleanup
Liblitedram cleanup
2023-01-26 18:50:51 +01:00
Maciej Dudek 68877742b1 liblitedram: Add ability to access and adjust delays per DQ line
Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
2023-01-26 13:12:37 +01:00
Maciej Dudek 4c605020f0 liblitedram: Codebase cleanup
Fix curly braces to be in the same line as the function header.
Fix function formating to be consistent in files.
Fix guards and add comments at the end of them.

Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
2023-01-26 13:12:37 +01:00
Maciej Dudek 58fda1a385 liblitedram: Move PHY accessors to a separate file
They are independent from the training flow.

Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
2023-01-26 13:12:37 +01:00
Maciej Dudek 25b502dec8 liblitedram: define SDRAM_WLC_DEBUG
SDRAM_WLC_DEBUG is 0 or 1 based on SDRAM_WRITE_LATENCY_CALIBRATION_DEBUG.
This reduces number of #ifdefs

Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
2023-01-26 13:12:25 +01:00
Maciej Dudek 8e848f6a13 liblitedram: #define MODULO
It allows to replace repeating #ifdef SDRAM_PHY_DELAYS > 32

Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
2023-01-26 13:12:25 +01:00
Maciej Dudek 3c02323cfe liblitedram: discard singular 1s that are surrounded by 0s
They are most likely glitches and won't be stable.

Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
2023-01-26 13:12:25 +01:00
Maciej Dudek cd89b62ff6 liblitedram: Fix LFSR
LFSR only returns 1 random bit per lfsr() call,
so we should concatenate 8 consecutive calls to obtain 1 random byte

Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
2023-01-26 13:12:25 +01:00
Maciej Dudek 48f547885a liblitedram: Correctly support single x4 IC
Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
2023-01-26 13:12:25 +01:00
Maciej Dudek 7b7fdadd26 liblitedram: Move pattern testing to its own function
Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
2023-01-26 13:12:25 +01:00
enjoy-digital 155bf31e04
Merge pull request #1581 from trabucayre/gowinpll_fix_warnings
soc/cores/clock/gowin_gw1n: fix size for ODSEL, FBDSEL, IDSEL, PSDA, DUTYDA, FDLY
2023-01-25 21:42:16 +01:00
Gwenhael Goavec-Merou 975cc9ecdc soc/cores/clock/gowin_gw1n: fix size for ODSEL, FBDSEL, IDSEL, PSDA, DUTYDA, FDLY 2023-01-25 20:47:30 +01:00
Florent Kermarrec 4b4fc7c6c0 cores/spi_flash: On Ultrascale: CS/DI/DO also need to be access through STARTUPE3, untested yet. 2023-01-25 12:19:10 +01:00
Florent Kermarrec cc91f2ee3a cores/spi_flash: Add USSPIFlash based on S7SPIFlash. 2023-01-25 10:31:40 +01:00
Dolu1990 03342065c3
Merge pull request #1571 from enjoy-digital/naxriscv-merge
cpu/Vexriscv-smp fix silent generation failure
2023-01-25 10:11:37 +01:00
enjoy-digital 04c240b847
Merge pull request #1579 from antmicro/msieron/fix-i2c
I2C fixes
2023-01-24 10:11:06 +01:00
enjoy-digital 92977eb359
Merge pull request #1580 from trabucayre/libbase_fix_with_cpp
soc/software/libXX/YY.h: adding extern C (required to link with cpp code)
2023-01-24 10:03:33 +01:00
Gwenhael Goavec-Merou 1eabc36c84 soc/software/libXX/YY.h: adding extern C (required to link with cpp code) 2023-01-24 07:05:05 +01:00
Michal Sieron 7f829f9e44 libbase/i2c: use busy_wait_us instead of cdelay
`cdelay` function is not a proper thing to count time.
It wouldn't count SoC clocks, but CPU clocks.
But even then, there are multiple instructions in `cdelay`:
  - NOP
  - decrement
  - branch with compare
Assuming each instruction takes exactly 1 CPU cycle it is still wrong,
as we wait 3 time longer than requested.
But they don't take exactly 1 CPU cycle.
CPUs have caches, branch predictors, are out-of-order and so on.

So a much better way to count this time would be `busy_wait_us`.

I performed some test using vexriscv and Saleae Logic Analyzer:

vexriscv variant | requested I2C speed | actual (cdelay) | actual (busy_wait_us)
-----------------+---------------------+-----------------+----------------------
minimal          |  50 kHz             |  4 kHz          |  38 kHz
minimal          | 200 kHz             | 15 kHz          |  96 kHz
minimal          | 400 kHz             | 28 kHz          | 137 kHz
-----------------+---------------------+-----------------+----------------------
lite             |  50 kHz             | 12 kHz          |  40 kHz
lite             | 200 kHz             | 43 kHz          | 115 kHz
lite             | 400 kHz             | 74 kHz          | 180 kHz
-----------------+---------------------+-----------------+----------------------
standard         |  50 kHz             | 12 kHz          |  45 kHz
standard         | 200 kHz             | 48 kHz          | 159 kHz
standard         | 400 kHz             | 84 kHz          | 311 kHz

Signed-off-by: Michal Sieron <msieron@antmicro.com>
2023-01-23 18:34:37 +01:00
Michal Sieron b122178876 libbase/i2c: don't enable pull-up after every bit
Instead of enabling pull-up after every sent bit, enable it only after
sending all 8 bits.

This prevents some glitches from happening, where transition between
bits 0 to 0, produces a short spike.

Signed-off-by: Michal Sieron <msieron@antmicro.com>
2023-01-23 18:34:37 +01:00
Michal Sieron ac99709031 libbase/i2c: fix i2c_poll
Change made in 1989d85 was supposed to poll I2C devices using both
writes and reads.

Here is a sequence that was supposed to happen:
  - I2C start
  - start I2C write
  - start I2C read
  - I2C stop

Unfortunately, the change worked differently:
  - I2C start
  - start I2C write
  - write byte of (slave_addr << 1 | 1)
  - I2C stop

This way, not only did the read not happen, but a potentially harmful
write was happening.

This commit makes it so following sequence takes place:
  - I2C start
  - start I2C write
  - if (I2C write returned NACK)
    - start I2C read
    - if (I2C read returned ACK)
      - read 1 byte and NACK it
  - I2C stop

An additional 1 byte read is happening, as some devices may be unable
to process I2C stop after initiating I2C read.

Signed-off-by: Michal Sieron <msieron@antmicro.com>
2023-01-23 18:33:51 +01:00
Michal Sieron b85705351c libbase/i2c: fix invalid return type
This commit fixes invalid type warning in the `get_i2c_devs` function:
```
/some/path/litex/litex/soc/software/libbase/i2c.c: In function 'get_i2c_devs':
/some/path/litex/litex/soc/software/libbase/i2c.c:21:45: warning: returning 'struct i2c_dev (*)[1]' from a function with incompatible return type 'struct i2c_dev *' [-Wincompatible-pointer-types]
   21 | struct i2c_dev *get_i2c_devs(void) { return &i2c_devs; }
      |                                             ^~~~~~~~~
```

Signed-off-by: Michal Sieron <msieron@antmicro.com>
2023-01-23 18:33:51 +01:00