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

Litex add litespi flash and watchdog #21

Merged
merged 9 commits into from
Sep 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
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
Loading