Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Help generating DDR3 Verilog module for Digilent NexysVideo Artix-7 FPGA #281

Open
tambewilliam opened this issue Oct 10, 2021 · 3 comments

Comments

@tambewilliam
Copy link

I have had no luck generating a working DDR3 Verilog module for Digilent NexysVideo Artix-7 FPGA using:

{
    # General ------------------------------------------------------------------
    "speedgrade": -1,      # FPGA speedgrade
    "cpu":        "None",  # CPU type (ex vexriscv, serv, None)
    "memtype":    "DDR3",  # DRAM type

    # PHY ----------------------------------------------------------------------
    "cmd_latency":     0,             # Command additional latency
    "sdram_module":    "MT41K256M16", # SDRAM modules of the board or SO-DIMM
    "sdram_module_nb": 2,             # Number of byte groups
    "sdram_rank_nb":   1,             # Number of ranks
    "sdram_phy":       "A7DDRPHY",    # Type of FPGA PHY

    # Electrical ---------------------------------------------------------------
    "rtt_nom": "60ohm", # Nominal termination
    "rtt_wr":  "60ohm", # Write termination
    "ron":     "34ohm", # Output driver impedance

    # Frequency ----------------------------------------------------------------
    "input_clk_freq":   100e6, # Input clock frequency
    "sys_clk_freq":     100e6, # System clock frequency (DDR_clk = 4 x sys_clk)
    "iodelay_clk_freq": 200e6, # IODELAYs reference clock frequency

    # Core ---------------------------------------------------------------------
    "cmd_buffer_depth": 16, # Depth of the command buffer

    # User Ports ---------------------------------------------------------------
    "user_ports": {
        "wishbone_0" : {
            "type": "wishbone",
        },
    },
}

The generated module gets successfully initialized through its wb_ctrl_* interface, but transactions through its user_port_wishbone_* interface never get acknowledged.

Find attached in litedram_nexysvideo.tar.gz following generated files using litedram/gen.py:

build
 |-gateware
 | |-litedram_core.xdc
 | |-litedram_core.v
 | |-litedram_core.tcl
 |-software
 | |-include
 | | |-generated
 | | | |-sdram_phy.h
 | | | |-soc.h
 | | | |-git.h
 | | | |-csr.h
 | | | |-mem.h

Could anyone verify that a module that uses wishbone and generated for Digilent NexysVideo Artix-7 FPGA using litedram/gen.py works ?

@tambewilliam
Copy link
Author

@enjoy-digital , I was able to generate a working verilog module that uses wishbone after following revert:
git checkout bd80053~ litedram/frontend/wishbone.py

@enjoy-digital
Copy link
Owner

@tambewilliam: Thanks for the feedback. I reopen this since will look at it.

@shingarov
Copy link

Has this ever been fixed? According to antonblanchard/microwatt#363 the current master works on NexysVideo. Perhaps only the issue needs closing? I verified today and memtest fails on Genesys2 for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants