Skip to content

Commit

Permalink
Merge pull request #21 from maass-hamburg/litex_add_litespi_flash
Browse files Browse the repository at this point in the history
Litex add litespi flash and watchdog
  • Loading branch information
tgorochowik authored Sep 17, 2024
2 parents d70f589 + a28e226 commit e539467
Show file tree
Hide file tree
Showing 17 changed files with 84 additions and 105 deletions.
60 changes: 19 additions & 41 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,59 +6,39 @@ jobs:
Bitstream-build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y python3-pip bzip2 cmake build-essential clang bison flex tcl-dev libffi-dev mercurial graphviz xdot pkg-config python3 libftdi-dev python3-dev libeigen3-dev zlib1g-dev
sudo apt update
sudo apt-get install -y libboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-iostreams-dev libboost-dev libboost-system-dev libboost-python-dev libboost-filesystem-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
./install.sh
sudo apt-get install -y gcc-riscv64-unknown-elf
- name: Install yosys
- name: Install OSS CAD tools
run: |
git clone https://github.com/YosysHQ/yosys.git
cd yosys
make config-gcc
make -j`nproc`
sudo make install
cd ..
rm -rf yosys
- name: Install prjoxide
run: |
git clone --recursive https://github.com/gatecat/prjoxide
cd prjoxide/libprjoxide
export PATH=$HOME/.cargo/bin:$PATH
cargo install --path prjoxide
cd ../../
rm -rf prjoxide
- name: Install nextpnr
run: |
git clone --recursive https://github.com/YosysHQ/nextpnr
cd nextpnr
cmake -DARCH=nexus -DOXIDE_INSTALL_PREFIX=$HOME/.cargo .
make -j`nproc`
sudo make install
cd ..
rm -rf nextpnr
curl -s https://api.github.com/repos/YosysHQ/oss-cad-suite-build/releases/latest \
| grep "browser_download_url.*oss-cad-suite-linux-x64-" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget -qi -
tar -xf oss-cad-suite-linux-x64-*.tgz
rm -v oss-cad-suite-linux-x64-*.tgz
- name: Build bitstream
run: |
source oss-cad-suite/environment
source ./init
pip3 install packaging
pip3 install packaging meson ninja
echo $PATH
./make.py --board=sdi_mipi_bridge --toolchain=oxide --build --csr-json csr.json
./make.py --board=sdi_mipi_bridge --toolchain=oxide --build --csr-json csr.json --with_all
- name: Generate dts and config
run: ./third_party/litex/litex/tools/litex_json2dts_zephyr.py --dts overlay.dts --config overlay.config csr.json

- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: ${{github.job}}
path: |
Expand All @@ -70,9 +50,9 @@ jobs:
runs-on: ubuntu-22.04
needs: Bitstream-build
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: Bitstream-build

Expand All @@ -85,9 +65,7 @@ jobs:
- name: Download Zephyr SDK
run: |
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.15.0/zephyr-sdk-0.15.0_linux-x86_64.tar.gz
tar xvf zephyr-sdk-0.15.0_linux-x86_64.tar.gz
rm -v zephyr-sdk-0.15.0_linux-x86_64.tar.gz
wget -q -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.8/zephyr-sdk-0.16.8_linux-x86_64.tar.xz | tar -J -xf -
- name: Prepare Zephyr
run: |
Expand All @@ -101,13 +79,13 @@ jobs:
- name: Install Zephyr SDK
run: |
cd zephyr-sdk-0.15.0/
cd zephyr-sdk-*
./setup.sh -h -t riscv64-zephyr-elf
cd ../
- name: Build Zephyr App
run: |
export CMAKE_PREFIX_PATH=$PWD/zephyr-sdk-0.15.0
export ZEPHYR_SDK_INSTALL_DIR=$PWD
cd zephyrproject/zephyr
cat ../../Bitstream-build/overlay.config | xargs west build -b litex_vexriscv samples/philosophers/ -- -DDTC_OVERLAY_FILE= ../../Bitstream-build/overlay.dts
cd ../../
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
[submodule "third_party/litex-boards"]
path = third_party/litex-boards
url = https://github.com/litex-hub/litex-boards.git
[submodule "third_party/litespi"]
path = third_party/litespi
url = https://github.com/litex-hub/litespi.git
[submodule "third_party/liteiclink"]
path = third_party/liteiclink
url = https://github.com/enjoy-digital/liteiclink.git
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,12 @@ Build options
| --with_i2s | Enable i2s |
| --sys-clk-freq | System clock frequency |
| --with_spi | Enable SPI |
| --with_spi_flash | Enable SPI flash |
| --with_i2c | Enable i2c |
| --with_pwm | Enable PWM |
| --spi-data-width | SPI data width |
| --spi-clk-freq | SPI clock frequency |
| --spi_flash_rate | SPI flash rate |
| --with_mmcm | Enable MMCM |
| --local-ip | local IP address |
| --remote-ip | remote IP address |
Expand Down
2 changes: 1 addition & 1 deletion init
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export PATH="${PWD}/third_party/litex/litex/tools:$PATH"
export PATH="${PWD}/tools/conda/bin:$PATH"

directories=(litedram liteeth liteiclink litepcie litesata litescope litevideo litex litex-boards litex-renode migen nmigen pythondata-cpu-vexriscv pythondata-software-compiler_rt pythondata-software-picolibc)
directories=(litedram liteeth liteiclink litepcie litespi litesata litescope litevideo litex litex-boards litex-renode migen nmigen pythondata-cpu-vexriscv pythondata-software-compiler_rt pythondata-software-picolibc)

for directory in "${directories[@]}";
do
Expand Down
47 changes: 43 additions & 4 deletions make.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,24 +67,44 @@ def main():
parser.add_argument("--toolchain", default="symbiflow", help="FPGA toolchain - vivado, symbiflow or oxide (yosys+nextpnr).")
parser.add_argument("--board", required=True, help="FPGA board")
parser.add_argument("--build", action="store_true", help="build bitstream")
parser.add_argument("--flash", action="store_true", help="Flash bitstream.")
parser.add_argument("--variant", default=None, help="FPGA board variant")
parser.add_argument("--load", action="store_true", help="load bitstream (to SRAM). set path to bitstream")
parser.add_argument("--with_all", action="store_true", help="Enable all peripherals")
parser.add_argument("--with_ethernet", action="store_true", help="Enable ethernet (Arty target only)")
parser.add_argument("--with_etherbone", action="store_true", help="Enable etherbone (Arty target only)")
parser.add_argument("--with_i2s", action="store_true", help="Enable i2s (Arty target only)")
parser.add_argument("--sys-clk-freq", default=100e6, help="System clock frequency.")
parser.add_argument("--with_spi", action="store_true", help="Enable spi (Arty target only)")
parser.add_argument("--with_spi_flash", action="store_true", help="Enable spi flash (Arty target only)")
parser.add_argument("--with_i2c", action="store_true", help="Enable i2c (Arty target only)")
parser.add_argument("--with_pwm", action="store_true", help="Enable pwm (Arty target only)")
parser.add_argument("--spi-data-width", type=int, default=8, help="SPI data width (maximum transfered bits per xfer, Arty target only)")
parser.add_argument("--spi-clk-freq", type=int, default=1e6, help="SPI clock frequency (Arty target only)")
parser.add_argument("--spi_flash_rate", default="1:1", help="SPI flash rate, can be 1:1 or 1:2 (Arty target only)")
parser.add_argument("--with_mmcm", action="store_true", help="Enable mmcm (Arty target only)")
parser.add_argument("--local-ip", default="192.168.1.50", help="local IP address (Arty target only)")
parser.add_argument("--with_watchdog", action="store_true", help="Enable watchdog")
parser.add_argument("--watchdog_width", type=int, default=32, help="Watchdog width")
parser.add_argument("--watchdog_reset_delay", type=int, default=None, help="Watchdog reset delay")
parser.add_argument("--etherbone-ip", default="192.168.1.50", help="etherbone IP address (Arty target only)")
parser.add_argument("--local-ip", default="192.168.1.51", help="local IP address (Arty target only)")
parser.add_argument("--remote-ip", default="192.168.1.100", help="remote IP address of TFTP server (Arty target only)")
builder_args(parser)
vivado_build_args(parser)
oxide_args(parser)
args = parser.parse_args()

if args.with_all:
args.with_ethernet = True
args.with_etherbone = True
args.with_i2s = True
args.with_spi = True
args.with_spi_flash = True
args.with_i2c = True
args.with_pwm = True
args.with_mmcm = True
args.with_watchdog = True

if args.board == "all":
board_names = list(supported_boards.keys())
else:
Expand All @@ -108,15 +128,30 @@ def main():

soc = SoCZephyr(board.soc_cls, **soc_kwargs)

if args.with_watchdog:
soc.add_watchdog(name="watchdog0" ,width=args.watchdog_width, reset_delay=args.watchdog_reset_delay)

if board_name == "arty":
if args.with_ethernet:
soc.add_eth(local_ip=args.local_ip, remote_ip=args.remote_ip)
if args.with_ethernet or args.with_etherbone:
from liteeth.phy.mii import LiteEthPHYMII
soc.ethphy = LiteEthPHYMII(
clock_pads = soc.platform.request("eth_clocks"),
pads = soc.platform.request("eth"))
if args.with_etherbone:
soc.add_etherbone(phy=soc.ethphy, ip_address=args.etherbone_ip, with_ethmac=args.with_ethernet, ethmac_local_ip=args.local_ip, ethmac_remote_ip=args.remote_ip)
elif args.with_ethernet:
soc.add_ethernet(phy=soc.ethphy, local_ip=args.local_ip, remote_ip=args.remote_ip)
if args.with_mmcm:
soc.add_mmcm(board.mmcm_freq)
if args.with_pwm:
soc.add_rgb_led()
if args.with_spi:
soc.add_spi(args.spi_data_width, args.spi_clk_freq)
soc.add_spi_master(name="spi", data_width=args.spi_data_width, spi_clk_freq=args.spi_clk_freq)
if args.with_spi_flash:
from litespi.modules import S25FL128L
from litespi.opcodes import SpiNorFlashOpCodes as Codes
assert args.spi_flash_rate in ["1:1", "1:2"]
soc.add_spi_flash(mode="4x", module=S25FL128L(Codes.READ_1_1_4), rate=args.spi_flash_rate, with_master=True)
if args.with_i2c:
soc.add_i2c()
if args.with_i2s:
Expand All @@ -139,6 +174,10 @@ def main():

if args.load:
board.load(soc, filename=os.path.join(build_dir, "gateware", board.bitstream_name + board.bitstream_ext))

if args.flash:
prog = soc.platform.create_programmer()
prog.flash(0, os.path.join(build_dir, "gateware", board.bitstream_name + board.bitstream_ext))

if __name__ == "__main__":
main()
54 changes: 5 additions & 49 deletions soc_zephyr.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ class _SoCZephyr(soc_cls):
"i2s_rx": 21, # addr: 0xe000a800
"i2s_tx": 22, # addr: 0xe000b000
"ddrphy": 23, # addr: 0xe000b800
"spiflash_core": 24, # addr: 0xe000c000
"spiflash_phy": 25, # addr: 0xe000c800
"watchdog0": 26, # addr: 0xe000d000
}}

interrupt_map = {**soc_cls.interrupt_map, **{
Expand All @@ -57,12 +60,14 @@ class _SoCZephyr(soc_cls):
"ethmac": 3,
"i2s_rx": 6,
"i2s_tx": 7,
"watchdog0": 8,
}}

mem_map_zephyr = {
"rom": 0x00000000,
"sram": 0x01000000,
"main_ram": 0x40000000,
"spiflash": 0x60000000,
"ethmac": 0xb0000000,
"i2s_rx": 0xb1000000,
"i2s_tx": 0xb2000000,
Expand All @@ -79,10 +84,6 @@ def __init__(self, cpu_variant="standard", **kwargs):
**kwargs)
soc_cls.mem_map.update(self.mem_map_zephyr)

def add_spi(self, data_width, spi_clk_freq):
spi_pads = self.platform.request("spi", 0)
self.submodules.spi = SPIMaster(spi_pads, data_width, self.clk_freq, spi_clk_freq)

def add_rgb_led(self):
rgb_led_pads = self.platform.request("rgb_led", 0)
setattr(self.submodules, "rgb_led_r0", PWM(getattr(rgb_led_pads, 'r')))
Expand Down Expand Up @@ -142,49 +143,4 @@ def add_mmcm(self, freqs={}):
self.mmcm.expose_drp()
self.comb += self.mmcm.reset.eq(self.mmcm.drp_reset.re)

def add_eth(self, local_ip, remote_ip):
local_ip = local_ip.split(".")
remote_ip = remote_ip.split(".")

self.add_constant("LOCALIP1", int(local_ip[0]))
self.add_constant("LOCALIP2", int(local_ip[1]))
self.add_constant("LOCALIP3", int(local_ip[2]))
self.add_constant("LOCALIP4", int(local_ip[3]))

self.add_constant("REMOTEIP1", int(remote_ip[0]))
self.add_constant("REMOTEIP2", int(remote_ip[1]))
self.add_constant("REMOTEIP3", int(remote_ip[2]))
self.add_constant("REMOTEIP4", int(remote_ip[3]))
self.submodules.ethphy = LiteEthPHYMII(
clock_pads = self.platform.request("eth_clocks"),
pads = self.platform.request("eth"))
phy = self.ethphy
# Imports
from liteeth.mac import LiteEthMAC
# MAC
ethmac = LiteEthMAC(
phy=phy,
dw=32,
interface="wishbone",
endianness=self.cpu.endianness)

self.submodules.ethmac = ethmac
name="ethmac"
ethmac_region=SoCRegion(origin=self.mem_map_zephyr.get(name, None), size=0x2000, cached=False)
self.bus.add_slave(name=name, slave=ethmac.bus, region=ethmac_region)

# Timing constraints
if hasattr(phy, "crg"):
eth_rx_clk = phy.crg.cd_eth_rx.clk
eth_tx_clk = phy.crg.cd_eth_tx.clk
else:
eth_rx_clk = phy.cd_eth_rx.clk
eth_tx_clk = phy.cd_eth_tx.clk
self.platform.add_period_constraint(eth_rx_clk, 1e9/phy.rx_clk_freq)
self.platform.add_period_constraint(eth_tx_clk, 1e9/phy.tx_clk_freq)
self.platform.add_false_path_constraints(
self.crg.cd_sys.clk,
eth_rx_clk,
eth_tx_clk)

return _SoCZephyr(**kwargs)
2 changes: 1 addition & 1 deletion third_party/liteeth
Submodule liteeth updated 64 files
+12 −2 .github/workflows/ci.yml
+10 −3 CONTRIBUTORS
+10 −0 MANIFEST.in
+14 −3 README.md
+11 −9 bench/arty.py
+7 −5 bench/butterstick.py
+6 −4 bench/colorlight_5a_75b.py
+6 −4 bench/genesys2.py
+94 −0 bench/kc705.py
+10 −8 bench/kcu105.py
+7 −3 bench/sim.py
+1 −1 bench/test_etherbone.py
+1 −1 bench/test_udp_streamer.py
+24 −25 bench/xcu1525.py
+100 −0 bench/xu8_st1.py
+8 −6 examples/axi-lite-mii.yml
+28 −0 examples/udp_a7_gtp_sgmii.yml
+49 −0 examples/udp_raw_ecp5rgmii.yml
+11 −11 examples/udp_s7phyrgmii.yml
+26 −0 examples/udp_usp_gth_sgmii.yml
+10 −8 examples/wishbone_mii.yml
+4 −4 liteeth/common.py
+47 −18 liteeth/core/__init__.py
+193 −115 liteeth/core/arp.py
+565 −0 liteeth/core/dhcp.py
+32 −21 liteeth/core/icmp.py
+28 −18 liteeth/core/ip.py
+23 −20 liteeth/core/udp.py
+6 −4 liteeth/crossbar.py
+44 −41 liteeth/frontend/etherbone.py
+36 −18 liteeth/frontend/stream.py
+347 −98 liteeth/gen.py
+24 −13 liteeth/mac/__init__.py
+20 −10 liteeth/mac/core.py
+127 −149 liteeth/mac/crc.py
+1 −1 liteeth/mac/preamble.py
+3 −3 liteeth/mac/sram.py
+6 −3 liteeth/mac/wishbone.py
+8 −6 liteeth/packet.py
+15 −8 liteeth/phy/__init__.py
+534 −578 liteeth/phy/a7_1000basex.py
+15 −12 liteeth/phy/a7_gtp.py
+15 −12 liteeth/phy/common.py
+44 −27 liteeth/phy/ecp5rgmii.py
+20 −14 liteeth/phy/gmii.py
+41 −44 liteeth/phy/gmii_mii.py
+215 −0 liteeth/phy/gw5rgmii.py
+488 −553 liteeth/phy/k7_1000basex.py
+54 −65 liteeth/phy/ku_1000basex.py
+25 −27 liteeth/phy/mii.py
+15 −13 liteeth/phy/model.py
+151 −123 liteeth/phy/pcs_1000basex.py
+45 −36 liteeth/phy/rmii.py
+29 −24 liteeth/phy/s6rgmii.py
+29 −22 liteeth/phy/s7rgmii.py
+89 −125 liteeth/phy/titaniumrgmii.py
+93 −105 liteeth/phy/trionrgmii.py
+934 −0 liteeth/phy/usp_gth_1000basex.py
+72 −79 liteeth/phy/usp_gty_1000basex.py
+36 −27 liteeth/phy/usrgmii.py
+19 −13 liteeth/phy/xgmii.py
+31 −12 setup.py
+4 −0 test/test_gen.py
+1 −1 test/test_model.py
2 changes: 1 addition & 1 deletion third_party/liteiclink
Submodule liteiclink updated 46 files
+12 −2 .github/workflows/ci.yml
+3 −1 CONTRIBUTORS
+10 −0 MANIFEST.in
+53 −31 bench/serdes/ecpix5.py
+21 −16 bench/serdes/kc705.py
+32 −25 bench/serdes/kcu105.py
+25 −19 bench/serdes/sqrl_acorn.py
+9 −3 bench/serdes/test_prbs.py
+36 −22 bench/serdes/versa_ecp5.py
+35 −33 bench/serdes/xcu1525.py
+70 −0 bench/serwb/demo/README.md
+150 −0 bench/serwb/demo/ecpix5.py
+138 −0 bench/serwb/demo/icebreaker.py
+49 −32 bench/serwb/icebreaker.py
+59 −40 bench/serwb/nexys_video.py
+83 −52 bench/serwb/sim.py
+240 −0 bench/serwb/t120_bga576_dev_kit.py
+64 −57 bench/serwb/test_serwb.py
+242 −0 bench/serwb/ti60_f225_dev_kit.py
+47 −36 bench/serwb/trellisboard.py
+43 −34 bench/serwb/ulx3s.py
+6 −2 liteiclink/serdes/common.py
+1,145 −0 liteiclink/serdes/gth3_ultrascale.py
+1,313 −0 liteiclink/serdes/gth4_ultrascale.py
+5 −1,600 liteiclink/serdes/gth_ultrascale.py
+26 −8 liteiclink/serdes/gth_ultrascale_init.py
+78 −58 liteiclink/serdes/gtp_7series.py
+32 −31 liteiclink/serdes/gtp_7series_init.py
+79 −59 liteiclink/serdes/gtx_7series.py
+7 −6 liteiclink/serdes/gtx_7series_init.py
+230 −198 liteiclink/serdes/gty_ultrascale.py
+26 −8 liteiclink/serdes/gty_ultrascale_init.py
+20 −20 liteiclink/serdes/serdes_ecp5.py
+130 −15 liteiclink/serwb/core.py
+65 −37 liteiclink/serwb/datapath.py
+418 −0 liteiclink/serwb/efinixserdes.py
+16 −507 liteiclink/serwb/etherbone.py
+78 −46 liteiclink/serwb/genphy.py
+41 −30 liteiclink/serwb/kuserdes.py
+44 −86 liteiclink/serwb/packet.py
+121 −50 liteiclink/serwb/phy.py
+42 −31 liteiclink/serwb/s7serdes.py
+17 −13 liteiclink/serwb/scrambler.py
+37 −11 setup.py
+5 −3 test/test_serwb_core.py
+4 −2 test/test_serwb_init.py
2 changes: 1 addition & 1 deletion third_party/litepcie
Submodule litepcie updated 98 files
+12 −2 .github/workflows/ci.yml
+5 −2 CONTRIBUTORS
+10 −1 MANIFEST.in
+2 −1 README.md
+6 −6 bench/acorn.py
+22 −21 bench/fk33.py
+16 −15 bench/kc705.py
+17 −18 bench/kcu105.py
+19 −20 bench/xcu1525.py
+21 −21 examples/ac701.yml
+21 −21 examples/acorn.yml
+33 −22 examples/kcu105.yml
+39 −1 litepcie/common.py
+3 −1 litepcie/core/common.py
+6 −4 litepcie/core/crossbar.py
+61 −20 litepcie/core/endpoint.py
+32 −23 litepcie/core/msi.py
+12 −11 litepcie/frontend/axi.py
+129 −111 litepcie/frontend/dma.py
+9 −0 litepcie/frontend/ptm/__init__.py
+299 −0 litepcie/frontend/ptm/core.py
+566 −0 litepcie/frontend/ptm/sniffer.py
+22 −0 litepcie/frontend/ptm/sniffer_tap.v
+23 −8 litepcie/frontend/wishbone.py
+204 −49 litepcie/gen.py
+43 −38 litepcie/phy/c5pciephy.py
+288 −192 litepcie/phy/s7pciephy.py
+186 −148 litepcie/phy/uspciephy.py
+196 −155 litepcie/phy/usppciephy.py
+0 −613 litepcie/phy/xilinx_s7_gen2/pcie_pipe_clock.v
+0 −586 litepcie/phy/xilinx_s7_gen2/pcie_s7_support.v
+111 −0 litepcie/phy/xilinx_us/axis_iff.v
+153 −0 litepcie/phy/xilinx_us/m_axis_cq_adapt_128b.v
+139 −0 litepcie/phy/xilinx_us/m_axis_cq_adapt_256b.v
+99 −0 litepcie/phy/xilinx_us/m_axis_rc_adapt_128b.v
+100 −0 litepcie/phy/xilinx_us/m_axis_rc_adapt_256b.v
+124 −521 litepcie/phy/xilinx_us/pcie_us_support.v
+116 −0 litepcie/phy/xilinx_us/s_axis_cc_adapt_128b.v
+107 −0 litepcie/phy/xilinx_us/s_axis_cc_adapt_256b.v
+176 −0 litepcie/phy/xilinx_us/s_axis_rq_adapt_128b.v
+125 −0 litepcie/phy/xilinx_us/s_axis_rq_adapt_256b.v
+0 −858 litepcie/phy/xilinx_us_gen2_x4/pcie_us.xci
+0 −1,111 litepcie/phy/xilinx_us_gen2_x4/pcie_us_support.v
+0 −858 litepcie/phy/xilinx_us_gen3_x4/pcie_us.xci
+0 −1,306 litepcie/phy/xilinx_us_gen3_x4/pcie_us_support.v
+0 −859 litepcie/phy/xilinx_us_gen3_x8/pcie_us.xci
+111 −0 litepcie/phy/xilinx_usp/axis_iff.v
+153 −0 litepcie/phy/xilinx_usp/m_axis_cq_adapt_128b.v
+139 −0 litepcie/phy/xilinx_usp/m_axis_cq_adapt_256b.v
+139 −0 litepcie/phy/xilinx_usp/m_axis_cq_adapt_512b.v
+99 −0 litepcie/phy/xilinx_usp/m_axis_rc_adapt_128b.v
+100 −0 litepcie/phy/xilinx_usp/m_axis_rc_adapt_256b.v
+99 −0 litepcie/phy/xilinx_usp/m_axis_rc_adapt_512b.v
+123 −522 litepcie/phy/xilinx_usp/pcie_usp_support.v
+116 −0 litepcie/phy/xilinx_usp/s_axis_cc_adapt_128b.v
+107 −0 litepcie/phy/xilinx_usp/s_axis_cc_adapt_256b.v
+111 −0 litepcie/phy/xilinx_usp/s_axis_cc_adapt_512b.v
+176 −0 litepcie/phy/xilinx_usp/s_axis_rq_adapt_128b.v
+125 −0 litepcie/phy/xilinx_usp/s_axis_rq_adapt_256b.v
+151 −0 litepcie/phy/xilinx_usp/s_axis_rq_adapt_512b.v
+0 −1,092 litepcie/phy/xilinx_usp_gen2_x4/pcie_usp.xci
+0 −1,086 litepcie/phy/xilinx_usp_gen2_x4/pcie_usp_support.v
+0 −1,104 litepcie/phy/xilinx_usp_gen3_x16/pcie_usp.xci
+0 −1,078 litepcie/phy/xilinx_usp_gen3_x16/pcie_usp_support.v
+0 −1,101 litepcie/phy/xilinx_usp_gen3_x4/pcie_usp.xci
+0 −1,116 litepcie/phy/xilinx_usp_gen3_x4/pcie_usp_support.v
+0 −1,106 litepcie/phy/xilinx_usp_gen3_x8/pcie_usp.xci
+0 −1,212 litepcie/phy/xilinx_usp_hbm_gen2_x4/pcie_usp.xci
+0 −1,086 litepcie/phy/xilinx_usp_hbm_gen2_x4/pcie_usp_support.v
+0 −1,212 litepcie/phy/xilinx_usp_hbm_gen3_x4/pcie_usp.xci
+0 −1,116 litepcie/phy/xilinx_usp_hbm_gen3_x4/pcie_usp_support.v
+7 −0 litepcie/software/kernel/config.h
+7 −0 litepcie/software/kernel/flags.h
+11 −1 litepcie/software/kernel/init.sh
+1 −1 litepcie/software/kernel/litepcie.h
+8 −2 litepcie/software/kernel/liteuart.c
+2 −2 litepcie/software/kernel/litex.h
+28 −7 litepcie/software/kernel/main.c
+4 −3 litepcie/software/user/liblitepcie/liblitepcie.h
+4 −3 litepcie/software/user/liblitepcie/litepcie_dma.c
+4 −3 litepcie/software/user/liblitepcie/litepcie_dma.h
+4 −3 litepcie/software/user/liblitepcie/litepcie_flash.c
+4 −3 litepcie/software/user/liblitepcie/litepcie_flash.h
+4 −3 litepcie/software/user/liblitepcie/litepcie_helpers.c
+4 −3 litepcie/software/user/liblitepcie/litepcie_helpers.h
+4 −3 litepcie/software/user/litepcie_test.c
+16 −11 litepcie/software/user/litepcie_util.c
+237 −70 litepcie/tlp/common.py
+23 −13 litepcie/tlp/controller.py
+179 −78 litepcie/tlp/depacketizer.py
+519 −194 litepcie/tlp/packetizer.py
+39 −13 setup.py
+4 −2 test/model/chipset.py
+6 −4 test/model/host.py
+7 −5 test/model/phy.py
+1 −1 test/model/tlp.py
+11 −9 test/test_dma.py
+118 −33 test/test_wishbone.py
2 changes: 1 addition & 1 deletion third_party/litescope
1 change: 1 addition & 0 deletions third_party/litespi
Submodule litespi added at 3a0651
2 changes: 1 addition & 1 deletion third_party/litex
Submodule litex updated 281 files
2 changes: 1 addition & 1 deletion third_party/litex-boards
Submodule litex-boards updated 264 files
2 changes: 1 addition & 1 deletion third_party/pythondata-cpu-vexriscv
Submodule pythondata-cpu-vexriscv updated 23 files
+1,056 −1,016 pythondata_cpu_vexriscv/verilog/VexRiscv.v
+1,167 −1,147 pythondata_cpu_vexriscv/verilog/VexRiscv_Debug.v
+1,154 −1,135 pythondata_cpu_vexriscv/verilog/VexRiscv_Full.v
+1,477 −1,448 pythondata_cpu_vexriscv/verilog/VexRiscv_FullCfu.v
+1,595 −1,560 pythondata_cpu_vexriscv/verilog/VexRiscv_FullCfuDebug.v
+1,254 −1,225 pythondata_cpu_vexriscv/verilog/VexRiscv_FullDebug.v
+1,245 −1,237 pythondata_cpu_vexriscv/verilog/VexRiscv_IMAC.v
+1,383 −1,353 pythondata_cpu_vexriscv/verilog/VexRiscv_IMACDebug.v
+1,644 −1,562 pythondata_cpu_vexriscv/verilog/VexRiscv_Linux.v
+1,736 −1,648 pythondata_cpu_vexriscv/verilog/VexRiscv_LinuxDebug.v
+1,643 −1,565 pythondata_cpu_vexriscv/verilog/VexRiscv_LinuxNoDspFmax.v
+682 −675 pythondata_cpu_vexriscv/verilog/VexRiscv_Lite.v
+780 −771 pythondata_cpu_vexriscv/verilog/VexRiscv_LiteDebug.v
+783 −774 pythondata_cpu_vexriscv/verilog/VexRiscv_LiteDebugHwBP.v
+740 −701 pythondata_cpu_vexriscv/verilog/VexRiscv_Min.v
+837 −796 pythondata_cpu_vexriscv/verilog/VexRiscv_MinDebug.v
+840 −799 pythondata_cpu_vexriscv/verilog/VexRiscv_MinDebugHwBP.v
+4,898 −3,870 pythondata_cpu_vexriscv/verilog/VexRiscv_Secure.v
+4,998 −3,960 pythondata_cpu_vexriscv/verilog/VexRiscv_SecureDebug.v
+2 −2 pythondata_cpu_vexriscv/verilog/build.sbt
+1 −1 pythondata_cpu_vexriscv/verilog/ext/VexRiscv
+1 −1 pythondata_cpu_vexriscv/verilog/project/build.properties
+33 −5 pythondata_cpu_vexriscv/verilog/src/main/scala/vexriscv/GenCoreDefault.scala

0 comments on commit e539467

Please sign in to comment.