Jędrzej Boczar
4473335954
lpddr4/commands: replace MPC dict with an enum with docstring
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
7f19e92c75
ci: add dependencies required for Verilator-based tests
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
4415a3eaf5
lpddr4: improve simulation and Verilator tests runner
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
4a5feb9e11
lpddr4/s7phy: improve to use the new DoubleRateLPDDR4PHY
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
2ab763ac5e
lpddr4: add double-rate PHY, clean up and improve PHY implementation
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
183f1643aa
lpddr4: add support for MASKED-WRITE
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
4b78fc99e8
lpddr4/sim: create LPDDR4 simulator and Verilator target
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
05ed238829
lpddr4: split implementation into multiple files in separate directory
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
ee9c2b4cf7
lpddr4: implement ZQC through MPC and include it in init sequence
...
We do not yet support ZQC during operation (after init sequence)
as LPDDR4 requires 2-stage ZQC (start+latch) and 1us in between,
which requires modifying Refresher (ZQCExecutor) in LiteDRAM.
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
055e2dc597
lpddr4: add initial PHY for Series7
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
4d9106847f
init: add LPDDR4 initialization
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
788b3f6d02
modules: modules: add LPDDR4 module
2021-03-25 15:19:16 +01:00
Jędrzej Boczar
6943a1a4a5
lpddr4: initial PHY logic and simulation tests
2021-03-25 15:19:08 +01:00
Jędrzej Boczar
f0de06091e
core/refresher: use A10=1 for all banks REF
...
This is needed because newer DRAMs like LPDDR4 or DDR5 have
separate commands for per-bank refresh and all banks refresh.
Other DRAM types ignore address for REF commands.
2021-03-24 10:31:06 +01:00
Jędrzej Boczar
de12e62ac5
core: use wider DFI address/bank if PHY requires it
2021-03-23 12:41:31 +01:00
Vamsi Vytla
7d522cefc3
modules.py: Add MT41J256M8 (Passes mem_test on HW @ sys4x=500MHz, vexriscv, marble board)
2021-03-22 13:55:39 -07:00
Florent Kermarrec
f17037fdb2
bench/common: Cleanup, Increase sys_clk measure time to 5s.
2021-03-12 14:29:43 +01:00
Florent Kermarrec
3f9759b83b
bench/xcu1525: Update build directories.
2021-03-12 10:59:06 +01:00
Florent Kermarrec
df5f555842
bench: Update with recent changes.
2021-03-12 10:25:11 +01:00
Florent Kermarrec
e3c2ab0757
phy/usddrphy: Add missing i_RST on DQS's ODELAYE3.
2021-03-04 14:44:07 +01:00
Florent Kermarrec
06411b2a72
frontend/dma: Modify CSR interface to be similar to LiteX's DMA (start becomes a enable), also add offset CSR to keep track of current status.
2021-03-04 11:58:33 +01:00
Florent Kermarrec
e9d5128811
frontend/dma: Add default CSR values to add_csr. (Allow initializing DMA after reset without software intervention).
2021-03-03 19:42:40 +01:00
Florent Kermarrec
25b64c3374
phy/usddrphy: Avoid separate ODELAYE3 by avoiding software reset on DQS's ODELAYE3.
...
The fabric is now maintaining an increment counter for each DQS's ODELAY and software
use it to revert total increments to 0 (equivalent to a reset).
Avoiding the separate ODELAYE3 simplifies design constraints since it was often placed
far from the DRAM pads and thus requiring a LOC constraint to avoid timing violations.
The software has to use the following sdram_write_leveling_rst_delay function:
static void sdram_write_leveling_rst_delay(int module) {
/* Select module */
ddrphy_dly_sel_write(1 << module);
/* Reset DQ delay */
ddrphy_wdly_dq_rst_write(1);
/* Reset DQS delay */
while (ddrphy_wdly_dqs_inc_count_read() != 0) {
ddrphy_wdly_dqs_inc_write(1);
cdelay(100);
}
/* Un-select module */
ddrphy_dly_sel_write(0);
}
2021-03-03 11:29:58 +01:00
Florent Kermarrec
541e2f1c57
litedram_gen: Avoid multi-lines on user_port.
2021-03-02 10:54:20 +01:00
Florent Kermarrec
d016edf68b
frontend/dma: Drive aw/ar.size when using AXI port.
2021-03-02 10:13:59 +01:00
Florent Kermarrec
424b5f956a
litedram_gen: review #234 : rename --module-name to --name add also adapt init file renaming.
2021-03-01 09:25:16 +01:00
enjoy-digital
aa3ed0bbff
Merge pull request #234 from craigjb/build_name
...
Add module name CLI option
2021-03-01 09:21:04 +01:00
Craig Bishop
a1c5a10fe2
Add module name CLI option
2021-02-21 13:00:53 -07:00
Florent Kermarrec
2d021c842e
test/reference: update.
2021-02-16 18:35:53 +01:00
Florent Kermarrec
148d6e1da4
litedram/init: remove SDRAM_PHY_WRITE_LEVELING_REINIT flag on Ultrascale(+) (no longer required).
2021-02-16 16:08:52 +01:00
Florent Kermarrec
ba0b22632b
phy/usddrphy: use ic reset (to be sure to follow UG571's reset sequence) and use VAR_LOAD mode on DQS's ODELAYE3.
...
This fixes some reset issues seen on some boards (seen when deployed on large systems with > 100 different boards/controllers),
and avoid having to reload DQS delay from software on DQS reset.
2021-02-16 16:07:13 +01:00
Florent Kermarrec
080948d49c
phy/s7ddrphy: add 1866MT/s support.
2021-02-05 11:26:03 +01:00
enjoy-digital
2c60861929
Merge pull request #232 from antmicro/jboc/init-mr
...
init: make the write leveling MR bit configurable
2021-02-02 09:36:46 +01:00
enjoy-digital
83b31f4f71
Merge pull request #231 from antmicro/jboc/module-timings
...
Allow to pass all module timings in the format (ck, ns)
2021-02-02 09:28:30 +01:00
enjoy-digital
9d80829e47
Merge pull request #230 from antmicro/jboc/test-init-diff
...
test: improve error messages when comparing files in test_init.py
2021-01-30 21:47:19 +01:00
enjoy-digital
17db7573fb
Merge pull request #229 from craigjb/port_width
...
Add customizable standalone user port data widths
2021-01-30 21:45:58 +01:00
Jędrzej Boczar
b3ce582891
test: update ddr3 and ddr4 reference headers to new MR_WLVL defines
2021-01-29 12:49:19 +01:00
Jędrzej Boczar
f9d39da2e1
init: avoid unnecessary newlines when adding MR_WLVL defines
2021-01-29 12:48:24 +01:00
Jędrzej Boczar
e7ca72b22f
fix Python init header generation
2021-01-29 12:45:06 +01:00
Jędrzej Boczar
12d66c119d
phy/model: update DFITimingsChecker to new SDRAMModule timings format
2021-01-29 11:22:33 +01:00
Jędrzej Boczar
436bfc4fbd
modules: extend parsing of timings to always allow (ck, ns) format
2021-01-29 11:16:16 +01:00
Florent Kermarrec
2f5784432d
phys: improve handling of required/optional command pads and make cke/odt optional on all phys.
2021-01-29 09:28:33 +01:00
Jędrzej Boczar
a1e7d805ec
test: improve error messages when comparing files in test_init.py
2021-01-28 17:44:13 +01:00
Jędrzej Boczar
bb85ce8f0f
init: make the write leveling MR bit configurable
2021-01-28 16:02:46 +01:00
Florent Kermarrec
5a114be7e5
phy/ecp5ddrphy: add clk_polarity parameter to allow inverting clk polarity (for boards with clk_p/n swapped).
2021-01-27 18:36:53 +01:00
enjoy-digital
562cd3207c
Merge pull request #228 from garytwong/IS43TR16256A
...
modules: add IS43TR16256A support.
2021-01-27 08:00:06 +01:00
Florent Kermarrec
af9abd6ec9
phy/ecp5ddrphy: remove dm_remapping introduce for VexRiscv-SMP on OrangeCrab: we can now use Wishbone/L2.
2021-01-25 11:54:15 +01:00
Craig Bishop
5c32dc71c4
Add customizable standalone user port data widths
2021-01-24 21:58:46 -07:00
Gary Wong
537e118c6b
modules: add IS43TR16256A support.
2021-01-22 12:30:29 -07:00
Florent Kermarrec
ab2423e3dd
litedram_gen: add initial Ultrascale+ support with XCU1525 .yml example.
2021-01-22 12:04:24 +01:00